Skip to content

Commit

Permalink
add dc_power and mode for ac-inverter +refactoring
Browse files Browse the repository at this point in the history
  • Loading branch information
0x7878 committed Apr 28, 2023
1 parent 53fe211 commit 0431e01
Show file tree
Hide file tree
Showing 2 changed files with 65 additions and 21 deletions.
48 changes: 27 additions & 21 deletions dbus_service.py
Original file line number Diff line number Diff line change
Expand Up @@ -117,6 +117,10 @@ def __init__(
"/StatusCode", 0
) # Dummy path so VRM detects us as a PV-inverter.

# add path values to dbus if servicename is inverter
if self._servicename == "com.victronenergy.inverter":
self._dbusservice.add_path("/Mode", 2)

# add path values to dbus
for path, settings in self._paths.items():
self._dbusservice.add_path(
Expand Down Expand Up @@ -169,6 +173,7 @@ def _read_config_template(self, template_number):
self.custtotal = config[f"TEMPLATE{template_number}"]["CUST_Total"].split("/")
self.custtotal_factor = config[f"TEMPLATE{template_number}"]["CUST_Total_Mult"]
self.custvoltage = config[f"TEMPLATE{template_number}"]["CUST_Voltage"].split("/")
self.dccustvoltage = config[f"TEMPLATE{template_number}"]["CUST_DCVoltage"].split("/")
self.custcurrent = config[f"TEMPLATE{template_number}"]["CUST_Current"].split("/")
self.custapipath = config[f"TEMPLATE{template_number}"]["CUST_API_PATH"]
self.serial = str(config[f"TEMPLATE{template_number}"]["CUST_SN"])
Expand Down Expand Up @@ -462,33 +467,18 @@ def _update(self):

pre = "/Ac/" + self.pvinverterphase

''' TODO - Add DC voltage for Inverter '''
if self.is_data_up2date():
(power, pvyield, current, voltage) = self.get_values_for_inverter()
(power, pvyield, current, voltage, dc_voltage) = self.get_values_for_inverter()

if self.dry_run:
logging.info("DRY RUN. No data is sent!!")
else:
if self._servicename != "com.victronenergy.inverter":
''' Do stuff if not inverter service '''
self._dbusservice[pre + "/Voltage"] = voltage
self._dbusservice[pre + "/Current"] = current
self._dbusservice[pre + "/Power"] = power
self._dbusservice["/Ac/Power"] = power
if power > 0:
self._dbusservice[pre + "/Energy/Forward"] = pvyield
self._dbusservice["/Ac/Energy/Forward"] = pvyield

logging.debug("Inverter #%d Power (/Ac/Power): %s", self.pvinverternumber, power)
logging.debug("Inverter #%d Energy (/Ac/Energy/Forward): %s", self.pvinverternumber, pvyield)
logging.debug("---")
else:
if self._servicename == "com.victronenergy.inverter":
self._dbusservice["/Ac/Out/L1/V"] = voltage
self._dbusservice["/Ac/Out/L1/I"] = current
''' TODO - replace 49 with real value '''
self._dbusservice["/Dc/0/Voltage"] = 49
self._dbusservice["/Dc/0/Voltage"] = dc_voltage
state = None
if power > 0:
if current > 0:
state = 9
else:
state = 0
Expand All @@ -497,7 +487,20 @@ def _update(self):
logging.debug("Inverter #%d Voltage (/Ac/Out/L1/V): %s", self.pvinverternumber, voltage)
logging.debug("Inverter #%d Current (/Ac/Out/L1/I): %s", self.pvinverternumber, current)
logging.debug("---")
else:
''' Do stuff if not inverter service '''
self._dbusservice[pre + "/Voltage"] = voltage
self._dbusservice[pre + "/Current"] = current
self._dbusservice[pre + "/Power"] = power
self._dbusservice["/Ac/Power"] = power
if power > 0:
self._dbusservice[pre + "/Energy/Forward"] = pvyield
self._dbusservice["/Ac/Energy/Forward"] = pvyield

logging.debug("Inverter #%d Power (/Ac/Power): %s", self.pvinverternumber, power)
logging.debug("Inverter #%d Energy (/Ac/Energy/Forward): %s", self.pvinverternumber, pvyield)
logging.debug("---")
j
self._update_index()
successful = True
except requests.exceptions.RequestException as exception:
Expand Down Expand Up @@ -535,7 +538,7 @@ def _update_index(self):
def get_values_for_inverter(self):
'''read data and return (power, pvyield, current, voltage)'''
meter_data = self._get_data()
(power, pvyield, current, voltage) = (None, None, None, None)
(power, pvyield, current, voltage, dc_voltage) = (None, None, None, None, None)

if self.dtuvariant == constants.DTUVARIANT_AHOY:
power = get_ahoy_field_by_name(meter_data, self.pvinverternumber, "P_AC")
Expand All @@ -548,6 +551,7 @@ def get_values_for_inverter(self):
meter_data, self.pvinverternumber, "YieldTotal"
)
voltage = get_ahoy_field_by_name(meter_data, self.pvinverternumber, "U_AC")
dc_voltage = get_ahoy_field_by_name(meter_data, self.pvinverternumber, "U_DC")
current = get_ahoy_field_by_name(meter_data, self.pvinverternumber, "I_AC")

elif self.dtuvariant == constants.DTUVARIANT_OPENDTU:
Expand All @@ -566,6 +570,7 @@ def get_values_for_inverter(self):
else:
pvyield = meter_data["inverters"][self.pvinverternumber]["AC"]["0"]["YieldTotal"]["v"]
voltage = meter_data["inverters"][self.pvinverternumber]["AC"]["0"]["Voltage"]["v"]
dc_voltage = meter_data["inverters"][self.pvinverternumber]["DC"]["0"]["Voltage"]["v"]
current = (
meter_data["inverters"][self.pvinverternumber]["AC"]["0"]["Current"]["v"]
if producing
Expand All @@ -577,9 +582,10 @@ def get_values_for_inverter(self):
power = float(get_nested(meter_data, self.custpower) * float(self.custpower_factor))
pvyield = float(get_nested(meter_data, self.custtotal) * float(self.custtotal_factor))
voltage = float(get_nested(meter_data, self.custvoltage))
dc_voltage = float(get_nested(meter_data, self.custdcvoltage))
current = float(get_nested(meter_data, self.custcurrent))

return (power, pvyield, current, voltage)
return (power, pvyield, current, voltage, dc_voltage)

def _handlechangedvalue(self, path, value):
logging.debug("someone else updated %s to %s", path, value)
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
file:"C:\\ProgramData/Git/config" core.symlinks=true
file:"C:\\ProgramData/Git/config" core.autocrlf=true
file:"C:\\ProgramData/Git/config" core.fscache=true
file:"C:\\ProgramData/Git/config" color.diff=auto
file:"C:\\ProgramData/Git/config" color.status=auto
file:"C:\\ProgramData/Git/config" color.branch=auto
file:"C:\\ProgramData/Git/config" color.interactive=true
file:"C:\\ProgramData/Git/config" help.format=html
file:"C:\\ProgramData/Git/config" rebase.autosquash=true
file:C:/Program Files/Git/mingw64/etc/gitconfig http.sslbackend=schannel
file:C:/Program Files/Git/mingw64/etc/gitconfig diff.astextplain.textconv=astextplain
file:C:/Program Files/Git/mingw64/etc/gitconfig filter.lfs.clean=git-lfs clean -- %f
file:C:/Program Files/Git/mingw64/etc/gitconfig filter.lfs.smudge=git-lfs smudge --skip -- %f
file:C:/Program Files/Git/mingw64/etc/gitconfig filter.lfs.process=git-lfs filter-process --skip
file:C:/Program Files/Git/mingw64/etc/gitconfig filter.lfs.required=true
file:C:/Program Files/Git/mingw64/etc/gitconfig credential.helper=manager
file:N://.gitconfig user.name=Maurice Schmicking
file:N://.gitconfig user.email=Maurice.Schmicking@minebea-intec.com
file:N://.gitconfig http.schannelcheckrevoke=false
file:N://.gitconfig filter.lfs.clean=git-lfs clean -- %f
file:N://.gitconfig filter.lfs.smudge=git-lfs smudge -- %f
file:N://.gitconfig filter.lfs.process=git-lfs filter-process
file:N://.gitconfig filter.lfs.required=true
file:.git/config core.repositoryformatversion=0
file:.git/config core.filemode=false
file:.git/config core.bare=false
file:.git/config core.logallrefupdates=true
file:.git/config core.symlinks=false
file:.git/config core.ignorecase=true
file:.git/config submodule.active=.
file:.git/config remote.origin.url=https://github.com/henne49/dbus-opendtu.git
file:.git/config remote.origin.fetch=+refs/heads/*:refs/remotes/origin/*
file:.git/config branch.main.remote=origin
file:.git/config branch.main.merge=refs/heads/main
file:.git/config lfs.repositoryformatversion=0
file:.git/config branch.feature-non-pv-inverter.remote=origin
file:.git/config branch.feature-non-pv-inverter.merge=refs/heads/feature-non-pv-inverter
file:.git/config user.email=17197791+0x7878@users.noreply.github.com

0 comments on commit 0431e01

Please sign in to comment.