HM-ES-TX-WM für "Stromzähler mit PV-Einspeisung"

Kabellose und kabelgebundene Sender und Empfänger der klassischen Homematic-Serie

Moderator: Co-Administratoren

n300
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"

Beitrag von n300 » 10.05.2021, 15:21

Ja, ist auch ein guter Hinweis. Aber in dem Fall war das heute vormittags, wo zumindest schon die Ost-Seite voll beschienen wurde.

Benutzeravatar
stan23
Beiträge: 2030
Registriert: 13.12.2016, 21:14
System: Alternative CCU (auf Basis OCCU)
Wohnort: Altmühltal
Hat sich bedankt: 576 Mal
Danksagung erhalten: 335 Mal
Kontaktdaten:

Re: HM-ES-TX-WM für "Stromzähler mit PV-Einspeisung"

Beitrag von stan23 » 10.05.2021, 15:57

n300 hat geschrieben:
10.05.2021, 13:33
Hab 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.
Ich habe einen Fronius Symo 10.0-3-M und letztes Jahr auch Modbus/TCP getestet.
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 :roll: ) 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)

n300
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"

Beitrag von n300 » 10.05.2021, 20:20

Danke Stan, super Doku der API Calls. :D


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"
   }
}
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"?

Benutzeravatar
stan23
Beiträge: 2030
Registriert: 13.12.2016, 21:14
System: Alternative CCU (auf Basis OCCU)
Wohnort: Altmühltal
Hat sich bedankt: 576 Mal
Danksagung erhalten: 335 Mal
Kontaktdaten:

Re: HM-ES-TX-WM für "Stromzähler mit PV-Einspeisung"

Beitrag von stan23 » 11.05.2021, 17:25

n300 hat geschrieben:
10.05.2021, 20:20
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".
Das ist ungünstig.
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?
n300 hat geschrieben:
10.05.2021, 20:20
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"?
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]

n300 hat geschrieben:
10.05.2021, 13:33
Start End Size R/W "Function codes" Name Description Type Units
40130 40131 2 R 0x03 TotWhExp Total Real Energy Exported float32 Wh
40138 40139 2 R 0x03 TotWhImp Total Real Energy Imported float32 Wh
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.
n300 hat geschrieben:
10.05.2021, 13:33
topic: "40130"
payload: array[2]
0: 65535
1: 120
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).
n300 hat geschrieben:
10.05.2021, 13:33
topic: "40138"
payload: array[2]
0: 571
1: 571
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)

Fonzo
Beiträge: 6687
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"

Beitrag von Fonzo » 12.05.2021, 12:45

n300 hat geschrieben:
10.05.2021, 20:20
Aber noch ne Frage zum MOD Bus. Die ganzen float32 Bit setzen sich ja immer aus 2 16-Bit Registern zusammen.
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.

n300
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"

Beitrag von n300 » 12.05.2021, 17:16

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.

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}]

Antworten

Zurück zu „HomeMatic Aktoren und Sensoren (klassisch)“