99import sys
1010
1111import jsons
12- import requests
1312
1413
1514class SMA :
@@ -51,6 +50,7 @@ def open(self):
5150 registers = [
5251 30001 , # 30001 SMA.Modbus.Profile (Versionsnummer SMA Modbus-Profil) 1304
5352 30053 , # 30053 Nameplate.Model (Gerätetyp) Unknown Value 19051
53+ 30517 , # 30517 Metering.DyWhOut
5454 30769 , # 30769 DcMs.Amp.MPPT1 (DC Strom Eingang MPPT1) 6.521 A
5555 30771 , # 30771 DcMs.Vol.MPPT1 (DC Spannung Eingang MPPT1) 462.00 V
5656 30773 , # 30773 DcMs.Watt.MPPT1 (DC Leistung Eingang MPPT1) 3 kW
@@ -66,7 +66,7 @@ def open(self):
6666 for register in registers :
6767 self .wrmodbus .poll_register (register )
6868 print (f"Poll Register: { register } " )
69-
69+
7070 # TODO Read self.PwrLastDayCounter from somewhere
7171
7272 def close (self ):
@@ -99,41 +99,14 @@ def GetAllData(self):
9999 self .pvdata .DevTime = "{:02}.{:02}.{:02}T{:02}:{:02}:{:02}" .format (timenow .day , timenow .month , timenow .year , timenow .hour , timenow .minute , timenow .second )
100100 print (f"Time: { self .pvdata .DevTime } " )
101101
102- # Read Total Power Counter from Webpage
103- PwrDayTot = 0 # Preset with 0
104-
105- response = requests .get ("https://192.168.15.165/dyn/getDashValues.json" , verify = False ) # , auth=('user', 'password'))
106- data = response .json ()
107- counter = data ["result" ]["01B8-xxxxx731" ]["6400_0046C300" ]["9" ][0 ]["val" ]
108-
109- if self .PwrLastDayCounter == 0 :
110- # self.PwrLastDayTot was not set after program restart
111- # Try to estimate it
112- if timenow .hour < 3 :
113- # It is still night time, so set actual counter to last counter
114- self .PwrLastDayCounter = counter
115- else :
116- # TODO: Read from Databse? Read from config?
117- # To Test it uncomment next lines
118- # self.PwrLastDayCounter = 170000
119- # self.lastday = timenow.day
120- pass
121- else :
122- PwrDayTot = counter - self .PwrLastDayCounter
123- # Reset PwrDayTot if date changes (Time 00:00)
124- if timenow .day != self .lastday :
125- self .lastday = timenow .day
126- self .PwrLastDayCounter = counter
127- print (f"Counter: { counter } , PwrLastDayCounter: { self .PwrLastDayCounter } , PwrDayTot: { PwrDayTot } " )
128-
129102 self .pvdata .ActiveInvCnt = 2 # Len = 0-Inverter count
130103
131104 self .pvdata .ActiveSensorCardCnt = 1 # Len = 0 - Sensorcard Count
132105
133106 self .pvdata .LocalNetStatus = 0 # 1 byte
134107
135- self .pvdata .PTotal = 0
136- self .pvdata .PDayTotal = PwrDayTot
108+ self .pvdata .PTotal = self . wrmodbus . available_registers [ 30775 ]. value
109+ self .pvdata .PDayTotal = self . wrmodbus . available_registers [ 30517 ]. value
137110
138111 # Nur wenn mindestens 1 Inverter aktiv ist
139112 if (self .pvdata .ActiveInvCnt > 0 ):
@@ -187,7 +160,6 @@ def GetAllData(self):
187160 self .pvdata .wr [1 ].IDC = self .wrmodbus .available_registers [30957 ].value
188161 self .pvdata .wr [1 ].FAC = self .wrmodbus .available_registers [30803 ].value
189162
190- self .pvdata .PTotal = self .wrmodbus .available_registers [30775 ].value
191163 self .pvdata .Error = "OK" # everything ok, if we reach this line
192164
193165 except BaseException as e :
0 commit comments