HM-ES-TX-WM für "Stromzähler mit PV-Einspeisung"
Moderator: Co-Administratoren
-
- Beiträge: 117
- Registriert: 08.06.2019, 13:25
- System: Alternative CCU (auf Basis OCCU)
- Wohnort: Salzburg
- Hat sich bedankt: 9 Mal
- Danksagung erhalten: 3 Mal
Re: HM-ES-TX-WM für "Stromzähler mit PV-Einspeisung"
Ja, ist auch ein guter Hinweis. Aber in dem Fall war das heute vormittags, wo zumindest schon die Ost-Seite voll beschienen wurde.
- stan23
- Beiträge: 2030
- Registriert: 13.12.2016, 21:14
- System: Alternative CCU (auf Basis OCCU)
- Wohnort: Altmühltal
- Hat sich bedankt: 577 Mal
- Danksagung erhalten: 335 Mal
- Kontaktdaten:
Re: HM-ES-TX-WM für "Stromzähler mit PV-Einspeisung"
Ich habe einen Fronius Symo 10.0-3-M und letztes Jahr auch Modbus/TCP getestet.n300 hat geschrieben: ↑10.05.2021, 13:33Hab mich jetzt etwas durch die Register gewühlt, samt Fronius Manual. Leider liefern mir diese aber ziemlich unnütze werte zurück. So sind zB.: die Register, die eigentlich die kumulierten Wh speichern sollten alle am Overflow-Schwellwert (65535) und ändern sich auch nicht. kA was das soll.
Generell bin ich mit dem MOD Bus Protokoll noch nicht so ganz firm und die Rückgabewerte ergeben für mich noch nicht wirklich Sinn.
Der Wert 65535 (also 0xFFFF) bedeutet dass der Wert nicht geliefert werden kann. Entweder ist er gerade nicht verfügbar (wenn man nach Sonnenuntergang endlich zum Testen kommt ) oder der WR kann es nicht oder man hat int statt float gewählt..
Letztlich bin ich auf die JSON API gewechselt, und mache das über einen ioBroker Adapter.
Eine Liste der API Calls habe ich hier dokumentiert. Wenn du eh Node-RED einsetzt dann sollte das Parsen von JSON recht einfach sein, im Gegensatz zu den CCU-internen Möglichkeiten.
Viele Grüße
Marco
RaspberryMatic als VM auf einem NUC mit Proxmox und USB-Funkmodul
~80 Geräte (HM, HmIP, HMW, HBW, AskSin)
Marco
RaspberryMatic als VM auf einem NUC mit Proxmox und USB-Funkmodul
~80 Geräte (HM, HmIP, HMW, HBW, AskSin)
-
- Beiträge: 117
- Registriert: 08.06.2019, 13:25
- System: Alternative CCU (auf Basis OCCU)
- Wohnort: Salzburg
- Hat sich bedankt: 9 Mal
- Danksagung erhalten: 3 Mal
Re: HM-ES-TX-WM für "Stromzähler mit PV-Einspeisung"
Danke Stan, super Doku der API Calls.
Ja, die Solar API verwende ich für die momentan Werte auch. Nur scheint mir, als hätte der Hersteller die API stark beschnitten im Vergleich zu früher.
Denn genau die interessanten Datenpunkte sind leer oder einfach mit der melden "... Request is not supported any longer".
hier zB.: GetPowerFlowRealtimeData
Genau
"E_Day" : null,
"E_Total" : null,
"E_Year" : null,
wäre hier spannend für mich.
Was darüber auf jeden Fall funktioniert ist wie gesagt die aktuellen Leistungsdaten auszulesen. Nur sind das alles keine Energiezähler, die mir wirklich zB.: sagen die letzte Stunde habe ich 'n' Wattstunden von der PV runter bekommen, oder heute habe ich 'n' Wattstunden vom öffentlichen Netz beziehen müssen. Man kann das zwar schon mit den momentan Flows hochrechnen, aber da müsste ich die API ja mit so vielen Requests pro Sekunde zuschießen und die Werte dann mitteln um auf irgend einen ansatzweise genauen Wert zu kommen. Keine Ahnung wie viele Requests pro Sekunde die API oder auch mein Node-Red hier im Stande sind zu verarbeiten. Derzeit frage ich alle 10 Sekunden ab. Für momentan Aufnahmen ist das total ausreichend. Aber die Mittelung um daraus nen Counter zu bilden liefert echt nur schrott werte. Da fehlts teilweise um 30% zur Realität. Mit solchen Daten kann ich nicht arbeiten
Aber noch ne Frage zum MOD Bus. Die ganzen float32 Bit setzen sich ja immer aus 2 16-Bit Registern zusammen. Weißt du wie man die richtig zusammen "Joined"?
Ja, die Solar API verwende ich für die momentan Werte auch. Nur scheint mir, als hätte der Hersteller die API stark beschnitten im Vergleich zu früher.
Denn genau die interessanten Datenpunkte sind leer oder einfach mit der melden "... Request is not supported any longer".
hier zB.: GetPowerFlowRealtimeData
Code: Alles auswählen
{
"Body" : {
"Data" : {
"Inverters" : {
"1" : {
"Battery_Mode" : "normal",
"DT" : 1,
"P" : 707,
"SOC" : 66.800003051757812
}
},
"Site" : {
"BackupMode" : false,
"BatteryStandby" : false,
"E_Day" : null,
"E_Total" : null,
"E_Year" : null,
"Meter_Location" : "grid",
"Mode" : "bidirectional",
"P_Akku" : 699.6273193359375,
"P_Grid" : -2.1000000000000001,
"P_Load" : -705.19266357421873,
"P_PV" : 57.910198211669922,
"rel_Autonomy" : 100.0,
"rel_SelfConsumption" : 99.703093201986874
},
"Version" : "12"
}
},
"Head" : {
"RequestArguments" : {},
"Status" : {
"Code" : 0,
"Reason" : "",
"UserMessage" : ""
},
"Timestamp" : "2021-05-10T18:04:59+00:00"
}
}
"E_Day" : null,
"E_Total" : null,
"E_Year" : null,
wäre hier spannend für mich.
Was darüber auf jeden Fall funktioniert ist wie gesagt die aktuellen Leistungsdaten auszulesen. Nur sind das alles keine Energiezähler, die mir wirklich zB.: sagen die letzte Stunde habe ich 'n' Wattstunden von der PV runter bekommen, oder heute habe ich 'n' Wattstunden vom öffentlichen Netz beziehen müssen. Man kann das zwar schon mit den momentan Flows hochrechnen, aber da müsste ich die API ja mit so vielen Requests pro Sekunde zuschießen und die Werte dann mitteln um auf irgend einen ansatzweise genauen Wert zu kommen. Keine Ahnung wie viele Requests pro Sekunde die API oder auch mein Node-Red hier im Stande sind zu verarbeiten. Derzeit frage ich alle 10 Sekunden ab. Für momentan Aufnahmen ist das total ausreichend. Aber die Mittelung um daraus nen Counter zu bilden liefert echt nur schrott werte. Da fehlts teilweise um 30% zur Realität. Mit solchen Daten kann ich nicht arbeiten
Aber noch ne Frage zum MOD Bus. Die ganzen float32 Bit setzen sich ja immer aus 2 16-Bit Registern zusammen. Weißt du wie man die richtig zusammen "Joined"?
- stan23
- Beiträge: 2030
- Registriert: 13.12.2016, 21:14
- System: Alternative CCU (auf Basis OCCU)
- Wohnort: Altmühltal
- Hat sich bedankt: 577 Mal
- Danksagung erhalten: 335 Mal
- Kontaktdaten:
Re: HM-ES-TX-WM für "Stromzähler mit PV-Einspeisung"
Das ist ungünstig.n300 hat geschrieben: ↑10.05.2021, 20:20Ja, die Solar API verwende ich für die momentan Werte auch. Nur scheint mir, als hätte der Hersteller die API stark beschnitten im Vergleich zu früher.
Denn genau die interessanten Datenpunkte sind leer oder einfach mit der melden "... Request is not supported any longer".
Im ioBroker-Forum gab es zu dem Adapter eine Diskussion wo über die Gen24 (?) gejammert wurde, weil dort die API weniger Daten hergibt. So einen hast du wohl auch, weil bei dir ein Akku mit drin ist?
Ich hatte über Modbus/TCP mal Float32 als Big Endian probiert.
Bei Big Endian kommt das große Ende zuerst, also auf der niedrigeren Adresse.
joined = payload[0] * 0x1.0000 + payload[1]
Ich glaube das sind einfach die falschen Adressen.
Zum einen muss die Adresse zum Auslesen immer um 1 niedriger sein als in der Spec, also z.B. 40000 statt 40001 für die SID.
Dann ist der Wert 65535 nämlich von Adresse 40131 (zweite Hälfte von EvtVnd4) und die 120 von 40132 (ID, immer der Wert 120).
Das könnten das VArRtgQ1 und Q2 sein.
Am Anfang ist es sinnvoll, bekannte Werte zu lesen, also die die in der Spec mit "A well-known value" angegeben sind.
Die Adressverschiebungen erkennt man am besten wenn man Strings ausliest, und statt "Fronius" nur "ronius" zurückkommt
https://www.fronius.com/~/downloads/Sol ... 0,2049.pdf
Viele Grüße
Marco
RaspberryMatic als VM auf einem NUC mit Proxmox und USB-Funkmodul
~80 Geräte (HM, HmIP, HMW, HBW, AskSin)
Marco
RaspberryMatic als VM auf einem NUC mit Proxmox und USB-Funkmodul
~80 Geräte (HM, HmIP, HMW, HBW, AskSin)
-
- Beiträge: 6688
- Registriert: 22.05.2012, 08:40
- System: CCU
- Hat sich bedankt: 25 Mal
- Danksagung erhalten: 478 Mal
Re: HM-ES-TX-WM für "Stromzähler mit PV-Einspeisung"
Du musst logischerweise einen 32 DWord, Integer oder Real Wert auch als 32 bit auslesen. Dazu müssen nur die passenden Einstellungen in dem System vorgenommen werden, mit dem Du das ausliest, bzw. je nach System das dies ausliest, musst Du da selber auch gar nichts einstellen, das macht je nach verwendetem System, das auslesende System meist selber. Du bekommst dann einfach den Wert angezeigt, den Du sonst bei Nutzung der Hardware des Herstellers ja auch angezeigt bekommen würdest.
-
- Beiträge: 117
- Registriert: 08.06.2019, 13:25
- System: Alternative CCU (auf Basis OCCU)
- Wohnort: Salzburg
- Hat sich bedankt: 9 Mal
- Danksagung erhalten: 3 Mal
Re: HM-ES-TX-WM für "Stromzähler mit PV-Einspeisung"
So, vielen Dank für eure Unterstützung. Habs jetzt mit viel Trial & Error hinbekommen.
In Node Red gibts nen schönen "Buffer Parser". Nur musste ich mich in den auch erst mal einarbeiten. Auch der Tipp, dass das Start-Register wohl immer ein niedriger ist, als in der Anleitung war hilfreich. Was der Unsinn allerdings soll, versteh ich nicht. Ich meine, warum mach ich nen "Telefonbuch" Wenn die Telefon Nummern alle nicht stimmen und man zB.: immer eins abziehen muss. Tut mir leid, die Logic ist mir nicht schlüssig.
Hier der Flow, mit dem ich den bezogenen und eingespeisten Strom in Wh auf einmal beziehe und in die Influx-DB schiebe.
In Node Red gibts nen schönen "Buffer Parser". Nur musste ich mich in den auch erst mal einarbeiten. Auch der Tipp, dass das Start-Register wohl immer ein niedriger ist, als in der Anleitung war hilfreich. Was der Unsinn allerdings soll, versteh ich nicht. Ich meine, warum mach ich nen "Telefonbuch" Wenn die Telefon Nummern alle nicht stimmen und man zB.: immer eins abziehen muss. Tut mir leid, die Logic ist mir nicht schlüssig.
Hier der Flow, mit dem ich den bezogenen und eingespeisten Strom in Wh auf einmal beziehe und in die Influx-DB schiebe.
Code: Alles auswählen
[{"id":"c09104b2.ce9d68","type":"modbus-read","z":"10cba92d.10a507","name":"Smart Meter","topic":"","showStatusActivities":true,"logIOActivities":false,"showErrors":true,"unitid":"200","dataType":"HoldingRegister","adr":"40129","quantity":"16","rate":"5","rateUnit":"m","delayOnStart":false,"startDelayTime":"","server":"8d3079b5.78abe8","useIOFile":false,"ioFile":"","useIOForPayload":false,"emptyMsgOnFail":true,"x":150,"y":100,"wires":[["d3b5a2ca.6bcd8"],[]]},{"id":"d3b5a2ca.6bcd8","type":"buffer-parser","z":"10cba92d.10a507","name":"","data":"payload","dataType":"msg","specification":"spec","specificationType":"ui","items":[{"type":"floatbe","name":"wH_Exported","offset":0,"length":1,"offsetbit":0,"scale":"1","mask":""},{"type":"floatbe","name":"wH_Imported","offset":16,"length":1,"offsetbit":0,"scale":"1","mask":""}],"swap1":"","swap2":"swap16","swap3":"swap16","swap1Type":"swap","swap2Type":"swap","swap3Type":"swap","msgProperty":"payload","msgPropertyType":"str","resultType":"keyvalue","resultTypeType":"output","multipleResult":false,"fanOutMultipleResult":false,"setTopic":false,"outputs":1,"x":350,"y":100,"wires":[["c76b5f35.f1855"]]},{"id":"c76b5f35.f1855","type":"influxdb out","z":"10cba92d.10a507","influxdb":"4bdeeb09.3611f4","name":"","measurement":"Smartmeter","precision":"","retentionPolicy":"","database":"database","precisionV18FluxV20":"ms","retentionPolicyV18Flux":"","org":"organisation","bucket":"bucket","x":630,"y":100,"wires":[]},{"id":"8d3079b5.78abe8","type":"modbus-client","name":"fronius","clienttype":"tcp","bufferCommands":true,"stateLogEnabled":false,"queueLogEnabled":false,"tcpHost":"fronius","tcpPort":"502","tcpType":"DEFAULT","serialPort":"/dev/ttyUSB","serialType":"RTU-BUFFERD","serialBaudrate":"9600","serialDatabits":"8","serialStopbits":"1","serialParity":"none","serialConnectionDelay":"100","unit_id":1,"commandDelay":1,"clientTimeout":1000,"reconnectOnTimeout":true,"reconnectTimeout":2000,"parallelUnitIdsAllowed":true},{"id":"4bdeeb09.3611f4","type":"influxdb","hostname":"grafanadb.fritz.box","port":"8086","protocol":"http","database":"fronius","name":"fronius","usetls":false,"tls":"","influxdbVersion":"1.x","url":"http://localhost:8086","rejectUnauthorized":true}]