Skip to content

Commit fc1b56d

Browse files
committed
updated Readme and fixed path in install.sh
1 parent 25cd5d0 commit fc1b56d

2 files changed

Lines changed: 67 additions & 3 deletions

File tree

constants.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
DTUVARIANT_TEMPLATE = "template"
88
PRODUCTNAME = "henne49_dbus-opendtu"
99
CONNECTION = "TCP/IP (HTTP)"
10+
CONNECTION_TIMEOUT = 60
1011

1112

1213
VICTRON_PATHS = {

dbus_service.py

Lines changed: 66 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -460,7 +460,7 @@ def fetch_url(self, url, try_number=1):
460460
# check for response
461461
if not json_str:
462462
logging.info("No Response from DTU")
463-
raise ConnectionError("No response from DTU - ", self.host)
463+
raise ConnectionError("No valid response from DTU - ", self.host)
464464

465465
json = None
466466
try:
@@ -537,6 +537,7 @@ def sign_of_life(self):
537537
logging.debug("Last inverter #%d _update() call: %s", self.pvinverternumber, self._last_update)
538538
logging.info("[%s] Last inverter #%d '/Ac/Power': %s", self._servicename,
539539
self.pvinverternumber, self._dbusservice["/Ac/Power"])
540+
#self.check_dbus_connectionproblem()
540541
return True
541542

542543
def update(self):
@@ -558,7 +559,8 @@ def update(self):
558559
Attributes:
559560
successful (bool): Indicates whether the update was successful.
560561
"""
561-
logging.debug("_update")
562+
logging.debug("_update: last update: %s", time.strftime("%Y-%m-%d %H:%M:%S", time.localtime(self._last_update)))
563+
562564
successful = False
563565
try:
564566
# update data from DTU once per _update call:
@@ -569,20 +571,23 @@ def update(self):
569571
logging.info("DRY RUN. No data is sent!!")
570572
else:
571573
self.set_dbus_values()
572-
self._update_index()
574+
self._update_index()
573575
successful = True
574576
except requests.exceptions.RequestException as exception:
575577
if self.last_update_successful:
576578
logging.warning(f"HTTP Error at _update for inverter "
577579
f"{self.pvinverternumber} ({self._get_name()}): {str(exception)}")
580+
self.check_dbus_connectionproblem()
578581
except ValueError as error:
579582
if self.last_update_successful:
580583
logging.warning(f"Error at _update for inverter "
581584
f"{self.pvinverternumber} ({self._get_name()}): {str(error)}")
585+
self.check_dbus_connectionproblem()
582586
except Exception as error: # pylint: disable=broad-except
583587
if self.last_update_successful:
584588
logging.warning(f"Error at _update for inverter "
585589
f"{self.pvinverternumber} ({self._get_name()})", exc_info=error)
590+
self.check_dbus_connectionproblem()
586591
finally:
587592
if successful:
588593
if not self.last_update_successful:
@@ -689,6 +694,8 @@ def set_dbus_values(self):
689694
logging.debug(f"Inverter #{self.pvinverternumber} Current (/State): {state}")
690695
logging.debug("---")
691696
else:
697+
self._dbusservice["/StatusCode"] = 7 # 0=Startup 0; 1=Startup 1; 2=Startup 2; 3=Startup 3; 4=Startup 4; 5=Startup 5; 6=Startup 6; 7=Running; 8=Standby; 9=Boot loading; 10=Error
698+
692699
# three-phase inverter: split total power equally over all three phases
693700
if "3P" == self.pvinverterphase:
694701
powerthird = power/3
@@ -734,3 +741,59 @@ def set_dbus_values(self):
734741
logging.debug(f"Inverter #{self.pvinverternumber} Power (/Ac/Power): {power}")
735742
logging.debug(f"Inverter #{self.pvinverternumber} Energy (/Ac/Energy/Forward): {pvyield}")
736743
logging.debug("---")
744+
745+
def check_dbus_connectionproblem(self):
746+
'''zero power data and cleat connection status and set dbus values'''
747+
update_age = (time.time() - self._last_update)
748+
logging.debug("Last update %d s ago", update_age)
749+
750+
if (update_age > constants.CONNECTION_TIMEOUT ):
751+
# This will be refactored later in classes
752+
if self._servicename == "com.victronenergy.inverter":
753+
# see https://github.com/victronenergy/venus/wiki/dbus#inverter
754+
self._dbusservice["/Ac/Out/L1/V"] = 0
755+
self._dbusservice["/Ac/Out/L1/I"] = 0
756+
self._dbusservice["/Ac/Out/L1/P"] = 0
757+
self._dbusservice["/Dc/0/Voltage"] = 0
758+
self._dbusservice["/Ac/Power"] = 0
759+
760+
#self._dbusservice["/State"] = 2 # 2=Fault
761+
#self._dbusservice["/Mode"] = 2 # Switch position: 2=Inverter on; 4=Off; 5=Low Power/ECO
762+
763+
self._dbusservice["/Ac/L1/Current"] = 0
764+
self._dbusservice["/Ac/L1/Power"] = 0
765+
self._dbusservice["/Ac/L1/Voltage"] = 0
766+
767+
logging.debug(f"Inverter #{self.pvinverternumber} Voltage (/Ac/Out/L1/V): {voltage}")
768+
logging.debug(f"Inverter #{self.pvinverternumber} Current (/Ac/Out/L1/I): {current}")
769+
770+
logging.debug(f"Inverter #{self.pvinverternumber} Current (/Dc/0/Voltage): {dc_voltage}")
771+
logging.debug(f"Inverter #{self.pvinverternumber} Voltage (/Ac/Power): {power}")
772+
logging.debug(f"Inverter #{self.pvinverternumber} Current (/State): {state}")
773+
logging.debug("---")
774+
else:
775+
self._dbusservice["/StatusCode"] = 10 # 0=Startup 0; 1=Startup 1; 2=Startup 2; 3=Startup 3; 4=Startup 4; 5=Startup 5; 6=Startup 6; 7=Running; 8=Standby; 9=Boot loading; 10=Error
776+
777+
# three-phase inverter: split total power equally over all three phases
778+
if "3P" == self.pvinverterphase:
779+
780+
self._dbusservice["/Ac/L1/Voltage"] = 0
781+
self._dbusservice["/Ac/L1/Current"] = 0
782+
self._dbusservice["/Ac/L1/Power"] = 0
783+
self._dbusservice["/Ac/L2/Voltage"] = 0
784+
self._dbusservice["/Ac/L2/Current"] = 0
785+
self._dbusservice["/Ac/L2/Power"] = 0
786+
self._dbusservice["/Ac/L3/Voltage"] = 0
787+
self._dbusservice["/Ac/L3/Current"] = 0
788+
self._dbusservice["/Ac/L3/Power"] = 0
789+
self._dbusservice["/Ac/Power"] = 0
790+
791+
else:
792+
pre = "/Ac/" + self.pvinverterphase
793+
self._dbusservice[pre + "/Voltage"] = 0
794+
self._dbusservice[pre + "/Current"] = 0
795+
self._dbusservice[pre + "/Power"] = 0
796+
self._dbusservice["/Ac/Power"] = 0
797+
798+
logging.debug(f"Inverter #{self.pvinverternumber} Power (/Ac/Power): 0")
799+
logging.debug("---")

0 commit comments

Comments
 (0)