Siehe Post #1, Link klappt gerade nicht
Ankündigung
Einklappen
Keine Ankündigung bisher.
Neues Plugin für Solaredge Wechselrichter / Sunspec in Arbeit
Einklappen
X
-
Sorry, in der Anleitung vergessen, man mus Pymodbusinstallieren siehe hier:
meine links gehen alle kaputt, dann als Text:
https://knx-user-forum.de/forum/supp...09#post1104709
Kommentar
-
Hi, das ist ein Fehler der ab und an mal bei mir kommt ( idR am Anfang) laut diversen Beiträgen ggf ein pymodbus Problem, aber wenn man länger laufen lässt sollte es dann funktionieren...???
Wenn es gar nicht geht dann eventuell wirklich ein Kommunikationsproblem... hast du mal geprüft ob die Adressierung passt? +-1?
ichhabe z.B. ein Offset beim Inverter, aber keines beim Modbuszähler:
Code:# dictionary for modbus registers _modbusRegisterDic = { 'C_Version' : 40044, # 40045: CPU Software Version 'C_SerialNumber' : 40052, # 40053: SolarEdge Serial Number 'I_AC_Power' : 40083, # 40084: AC Power Value 'I_AC_Power_SF' : 40084, # 40085: AC Power Scale Factor 'I_AC_Energy_WH' : 40093, # 40094: AC Lifetime Energy production 'I_AC_Energy_SF' : 40095, # 40096: AC Lifetime Energy Scale Factor 'I_DC_Power' : 40100, # 40101: DC Power value 'I_DC_Power_SF' : 40101, # 40102: DC Power Scale Factor 'I_Temp_Sink' : 40103, # 40104: Heat Sink Temperature 'I_Temp_Sink_SF' : 40106, # 40107: Heat Sink Scale Factor 'I_Status' : 40107, # 40108: Operating Status 'I_Status_Vendor': 40108, # 40109: Vendor Status-> see manual # Modbus Zähler ohne offset! 'M_AC_Power' : 40206, # 40206: Total Real Power 'M_AC_Power_A' : 40207, # 40207: Phase A AC Real Power 'M_AC_Power_B' : 40208, # 40208: Phase B AC Real Power 'M_AC_Power_C' : 40209, # 40209: Phase C AC Real Power 'M_AC_Power_SF' : 40210, # 40210: AC Real Power Scale Factor 'M_Exported' : 40226, # 40226: Total Exportet real Energy 'M_Imported' : 40234, # 40234: Total Importet Energy 'M_Energy_W_SF' : 40242 # 40242: Re Energy Scale Factor }
Kommentar
-
Zitat von boardman Beitrag anzeigenhast du mal geprüft ob die Adressierung passt? +-1?
Kommentar
-
Habe es endlich geschafft einen korrekten Wert aus meinem SMA-WR zu lesen!
Habe dafür folgende Anpassungen gemacht:
Code:_modbusRegisterDic = { 'I_AC_Energy' : 40209 # 40210: Total Energy } .... if values == self._modbusRegisterDic['I_AC_Energy']: #logger.debug("Solaredge: SerialNumber {0}".format(registerValue)) result = self._Solaredge.read_holding_registers(values, 3, unit=126) # Value + ScaleFaktor decoder = BinaryPayloadDecoder.fromRegisters(result.registers, endian=Endian.Big) decoded = { 'value': decoder.decode_32bit_uint(), 'sf': decoder.decode_16bit_uint(), } registerValue = decoded.get("value") * 10 ** decoded.get("sf") # logger.debug("Solaredge: Tempertur: {0}".format(registerValue)) item(registerValue, 'Solaredge')
Dann gilt die folgende Tabelle:Großes Dankeschön an Boardman für die Unterstüzung.40188 A AC Current uint16 RO 40189 AphA Phase A Current int16 RO 40190 AphB Phase B Current int16 RO 40191 AphC Phase C Current int16 RO 40192 A_SF int16 RO 40196 PhVphA Phase Voltage AN uint16 RO 40197 PhVphB Phase Voltage BN uint16 RO 40198 PhVphC Phase Voltage CN uint16 RO 40199 V_SF int16 RO 40200 W AC Power int16 RO 40201 W_SF int16 RO 40202 Hz Line Frequency uint16 RO 40203 Hz_SF int16 RO 40204 VA AC Apparent Power int16 RO 40205 VA_SF int16 RO 40206 VAr AC Reactive Power int16 RO 40207 VAr_SF int16 RO 40208 PF AC Power Factor int16 RO 40209 PF_SF int16 RO 40210 WH AC Energy acc32 RO
Das Dokument hat mit auch noch ganz gut geholfen:
http://www.sma-sunny.com/so-testet-i...echselrichter/
Ich werde jetzt erweitern, damit ich mehr Werte rein bekomme...
Falls später einer Interesse hat an einer Sonderlösung für SMA bitte melden...Zuletzt geändert von android; 06.07.2017, 21:25.
Kommentar
-
Super das es geklappt hat.. ich weiß nun nicht ob das eher ein weiteres Plugin gibt oder ob wir das alles zusammen packen können... die Abweichungen sind wahrscheinlich zu groß um es in der selben Config abzubilden... Aber wenn ich irgendwas im ersten Post ergänzen soll, dann mach ich das gerne...
Kommentar
-
Hi wofür ist die Zeile 173
Code:registerValue = self._Solaredge.read_holding_registers(values, read_qty = 1, unit = 1).getRegister(0)
Wenn ich da eine unit id von 126 einstelle, funktionieren manche Ids und manche wiederum nicht?
Warum wird immer vor der Abfrage des aktuellen Keys gelesen?
Kommentar
-
Du hast recht, da ssit nicht mehr optimal...
das war früher der Hauptleseteil - wird nun nur noch hierfür benötigt, da da der read fehlt:
Code:if values == self._modbusRegisterDic['I_Status']: # logger.debug("Solaredge: Status: {0}".format(registerValue)) item(registerValue, 'Solaredge')
ich bau das morgen mal um...
(hatte ich so vom Pluggit übernommen)
Kommentar
Kommentar