@@ -143,8 +143,8 @@ def __init__(
143
143
onchangecallback = self ._handlechangedvalue ,
144
144
)
145
145
146
- # add _sign_of_life 'timer' to get feedback in log every 5minutes
147
146
gobject .timeout_add (self ._get_sign_of_life_interval () * 60 * 1000 , self ._sign_of_life )
147
+ gobject .timeout_add (self ._get_polling_interval (), self ._update )
148
148
149
149
@staticmethod
150
150
def get_ac_inverter_state (current ):
@@ -287,8 +287,6 @@ def _get_serial(self, pvinverternumber):
287
287
elif self .dtuvariant == constants .DTUVARIANT_TEMPLATE :
288
288
serial = self .serial
289
289
290
- gobject .timeout_add (self ._get_polling_interval (), self ._update )
291
-
292
290
return serial
293
291
294
292
def _get_name (self ):
@@ -534,6 +532,7 @@ def _sign_of_life(self):
534
532
return True
535
533
536
534
def _update (self ):
535
+ logging .debug ("_update" )
537
536
successful = False
538
537
try :
539
538
# update data from DTU once per _update call:
@@ -603,13 +602,13 @@ def get_values_for_inverter(self):
603
602
# OpenDTU v24.2.12 breaking API changes 2024-02-19
604
603
if "AC" in meter_data ["inverters" ][self .pvinverternumber ]:
605
604
root_meter_data = meter_data ["inverters" ][self .pvinverternumber ]
606
- firmware_v24_2_12_or_newer = True
605
+ firmware_v24_2_12_or_newer = True
607
606
else :
608
607
inverter_serial = meter_data ["inverters" ][self .pvinverternumber ]["serial" ]
609
608
logging .info (f"Inverter #{ self .pvinverternumber } Serial: { inverter_serial } " )
610
609
root_meter_data = self .fetch_opendtu_inverter_data (inverter_serial )["inverters" ][0 ]
611
610
logging .debug (f"{ root_meter_data } " )
612
- firmware_v24_2_12_or_newer = False
611
+ firmware_v24_2_12_or_newer = False
613
612
614
613
producing = is_true (root_meter_data ["producing" ])
615
614
power = (root_meter_data ["AC" ]["0" ]["Power" ]["v" ]
@@ -639,23 +638,40 @@ def get_values_for_inverter(self):
639
638
def set_dbus_values (self ):
640
639
'''read data and set dbus values'''
641
640
(power , pvyield , current , voltage , dc_voltage ) = self .get_values_for_inverter ()
641
+ state = self .get_ac_inverter_state (current )
642
642
643
643
# This will be refactored later in classes
644
644
if self ._servicename == "com.victronenergy.inverter" :
645
+ # see https://github.com/victronenergy/venus/wiki/dbus#inverter
645
646
self ._dbusservice ["/Ac/Out/L1/V" ] = voltage
646
647
self ._dbusservice ["/Ac/Out/L1/I" ] = current
648
+ self ._dbusservice ["/Ac/Out/L1/P" ] = power
647
649
self ._dbusservice ["/Dc/0/Voltage" ] = dc_voltage
648
- self ._dbusservice ["/State" ] = self .get_ac_inverter_state (current )
650
+ self ._dbusservice ["/Ac/Power" ] = power
651
+
652
+ self ._dbusservice ["/Ac/Energy/Forward" ] = pvyield
653
+ self ._dbusservice ["/State" ] = state
654
+ self ._dbusservice ["/Mode" ] = 2 # Switch position: 2=Inverter on; 4=Off; 5=Low Power/ECO
655
+
656
+ self ._dbusservice ["/Ac/L1/Current" ] = current
657
+ self ._dbusservice ["/Ac/L1/Energy/Forward" ] = pvyield
658
+ self ._dbusservice ["/Ac/L1/Power" ] = power
659
+ self ._dbusservice ["/Ac/L1/Voltage" ] = voltage
649
660
650
661
logging .debug (f"Inverter #{ self .pvinverternumber } Voltage (/Ac/Out/L1/V): { voltage } " )
651
662
logging .debug (f"Inverter #{ self .pvinverternumber } Current (/Ac/Out/L1/I): { current } " )
663
+
664
+ logging .debug (f"Inverter #{ self .pvinverternumber } Current (/Dc/0/Voltage): { dc_voltage } " )
665
+ logging .debug (f"Inverter #{ self .pvinverternumber } Voltage (/Ac/Power): { power } " )
666
+ logging .debug (f"Inverter #{ self .pvinverternumber } Current (/Ac/Energy/Forward): { pvyield } " )
667
+ logging .debug (f"Inverter #{ self .pvinverternumber } Current (/State): { state } " )
652
668
logging .debug ("---" )
653
669
else :
654
670
# three-phase inverter: split total power equally over all three phases
655
671
if ("3P" == self .pvinverterphase ):
656
672
powerthird = power / 3
657
673
658
- #Single Phase Voltage = (3-Phase Voltage) / (sqrt(3))
674
+ # Single Phase Voltage = (3-Phase Voltage) / (sqrt(3))
659
675
# This formula assumes that the three-phase voltage is balanced and that
660
676
# the phase angles are 120 degrees apart
661
677
# sqrt(3) = 1.73205080757 <-- So we do not need to include Math Library
0 commit comments