FHEM Forum

FHEM => Codeschnipsel => Thema gestartet von: Moli am 15 März 2026, 22:33:39

Titel: Modbus abfragen von SMA z.B. SunnyBoy 3.0
Beitrag von: Moli am 15 März 2026, 22:33:39
Moin.

Da das alte Modul 76_SMAInverter.pm mir andauernd Timeouts brachte, was nicht nur im Log nervig war, habe ich auf Modbus umgestellt.

Obwohl ich schon Wallbe Ladestation, Marstek Venus E und anderes via Modbus Geräte eingebunden habe, wollte das nicht so wie ich wollte.

Lag wahrscheinlich an mir, jetzt wo es fertig ist, sieht es gar nicht schwer aus *g

Da die Werte ausgiebig weiterverarbeitet werden, möchte ich alle Werte wieder genau so haben, wie bei dem Modul vorher.

Ich dachte, ich poste es mal, falls noch jemand die Probleme hat und das hilfreich findet, der auch so nen altes Ding herumstehen hat.

Grüsse!




defmod SunnyBoy30 ModbusAttr 3 60 SMA-IP:502 TCP
attr SunnyBoy30 group Inverter
attr SunnyBoy30 obj-h30513-len 4
attr SunnyBoy30 obj-h30513-poll 1
attr SunnyBoy30 obj-h30513-reading SPOT_ETOTAL
attr SunnyBoy30 obj-h30513-type U64
attr SunnyBoy30 obj-h30513-unpack Q>
attr SunnyBoy30 obj-h30517-len 4
attr SunnyBoy30 obj-h30517-poll 1
attr SunnyBoy30 obj-h30517-reading SPOT_ETODAY
attr SunnyBoy30 obj-h30517-type U64
attr SunnyBoy30 obj-h30517-unpack Q>
attr SunnyBoy30 obj-h30771-expr ($val > 65534 ? 0 : $val / 100)
attr SunnyBoy30 obj-h30773-expr ($val > 2147483647 ? 0 : $val)
attr SunnyBoy30 obj-h30773-len 2
attr SunnyBoy30 obj-h30773-poll 1
attr SunnyBoy30 obj-h30773-reading SPOT_PDC1
attr SunnyBoy30 obj-h30773-type S32
attr SunnyBoy30 obj-h30773-unpack N
attr SunnyBoy30 obj-h30775-expr ($val > 2147483647 ? 0 : $val)
attr SunnyBoy30 obj-h30775-len 2
attr SunnyBoy30 obj-h30775-poll 1
attr SunnyBoy30 obj-h30775-reading SPOT_PACTOT
attr SunnyBoy30 obj-h30775-type S32
attr SunnyBoy30 obj-h30775-unpack N
attr SunnyBoy30 obj-h30961-expr ($val > 2147483647 ? 0 : $val)
attr SunnyBoy30 obj-h30961-len 2
attr SunnyBoy30 obj-h30961-poll 1
attr SunnyBoy30 obj-h30961-reading SPOT_PDC2
attr SunnyBoy30 obj-h30961-type S32
attr SunnyBoy30 obj-h30961-unpack N
attr SunnyBoy30 room Inverter
attr SunnyBoy30 stateFormat { my $m = ReadingsVal($name,"ModeNum",0);; my $p = ReadingsVal($name,"SPOT_PACTOT",0);; return "Schläft" if($m == 303);; return "W: $p - OK" if($m == 307);; return "Status: $m";; }
attr SunnyBoy30 userReadings Power1 {ReadingsVal($name,"SPOT_PACTOT",0)>10000 ? 0 : ReadingsVal($name,"SPOT_PDC1",0)},
Power2 {ReadingsVal($name,"SPOT_PACTOT",0)>10000 ? 0 : ReadingsVal($name,"SPOT_PDC2",0)},
SPOT_ETODAY1 {int((ReadingsNum("$name","SPOT_ETODAY","")*2/6))},
SPOT_ETODAY2 {int((ReadingsNum("$name","SPOT_ETODAY","")*4/6))}