Inzwischen lese ich auch das Smart Meter TS65-A3 am Einspeisepunkt über Modbus, indirekt über TCP über den Gen24. Leider funktionieren die Summenzähler pro Phase nicht, da bekomme ich immer nur undefinierte Werte zurück, sonst aber alle Details, die man so möchte:
define gen24_meter ModbusAttr 200 120 192.168.0.123:502 TCP
attr gen24_meter dev-h-combine 125
attr gen24_meter dev-h-defFormat %.1f
attr gen24_meter dev-h-defLen 2
attr gen24_meter dev-h-defPoll 1
attr gen24_meter dev-h-defUnpack f>
attr gen24_meter event-min-interval Power[ABC].*:7200,Energy.*:7200
attr gen24_meter event-on-change-reading Power[ABC].*:1,Energy.*:0.1
attr gen24_meter obj-h40081-reading VoltageA
attr gen24_meter obj-h40083-reading VoltageB
attr gen24_meter obj-h40085-reading VoltageC
attr gen24_meter obj-h40095-reading Frequency
attr gen24_meter obj-h40097-reading Power
attr gen24_meter obj-h40099-reading PowerA
attr gen24_meter obj-h40101-reading PowerB
attr gen24_meter obj-h40103-reading PowerC
attr gen24_meter obj-h40123-reading PfA
attr gen24_meter obj-h40125-reading PfB
attr gen24_meter obj-h40127-reading PfC
attr gen24_meter obj-h40129-expr $val / 1000
attr gen24_meter obj-h40129-reading EnergyExported
attr gen24_meter obj-h40137-expr $val / 1000
attr gen24_meter obj-h40137-reading EnergyImported
attr gen24_meter room Zähler
attr gen24_meter stateFormat PA: PowerA PB: PowerB PC: PowerC
attr gen24_meter userReadings PowerA_oPV {\
ReadingsVal($name,"PowerA",0) + ReadingsVal("gen24","ACPower",0)/3 },\
PowerB_oPV {\
ReadingsVal($name,"PowerB",0) + ReadingsVal("gen24","ACPower",0)/3 },\
PowerC_oPV {\
ReadingsVal($name,"PowerC",0) + ReadingsVal("gen24","ACPower",0)/3 }
Damit die userReadings besser funktionieren, nutze ich zusätzlich ein at-Device, dass möglichst zeitgleich das Lesen der Werte von "gen24_meter" und "gen24" (Definition siehe oben) anstößt:
defmod atMeterRead at +*00:02:00 set gen24 reread ;; sleep 5;; set gen24_meter reread
Wenn man das Lesen mit dem at-Device anstößt, ist das Lese-Intervall in den ModbusAttr-Definitionen jeweils auf 0 zu setzen (also die 120 im define für gen24 und gen24_meter jeweils durch eine 0 ersetzen),