Finder Zähler 7M.24.8.230.0210 über Modbus auslesen.

Begonnen von Olaf A, 31 Mai 2024, 21:33:48

Vorheriges Thema - Nächstes Thema

Olaf A

Moin zusammen,
ich habe schon einige Zeit den Zähler von der Firme Orno über Modbus ausgelesen.
jetzt habe ich aber ein Balkonkraftwerk mir angeschafft und musste feststellen, dass diese Zähler Leistung zählt egal aus welcher Richtung diese kommt. Das ist halt schon doof, wenn man Leitung ins Netzt schiebt und dafür noch zahlen muss ist halt besonders doof. :(

Jetzt habe ich von der Firma Finder den oben genannten Zähler eingebaut, der hat zwei Register die den Bezug und die Lieferung von einander getrennt zählt.

Ich habe im Netzt dieses Datenblatt gefunden mit den Adressen des Zählers:

Finder Zähler 7M.24

jetzt habe ich die alten Werte des alten Zähler mit den neuen Register überschrieben.
diese sieht jetzt so aus:
define CaFinder ModbusAttr 13 300
attr CaFinder userattr dev-timing-commDelay obj-40960-format obj-40960-len obj-40960-reading obj-40960-unpack obj-h272-format obj-h272-len obj-h272-reading obj-h272-unpack obj-h273-len obj-h273-reading obj-h273-unpack obj-h30126-len
attr CaFinder alias Zähler Finder
attr CaFinder comment Finder Zähler 7M.24.8.230.0210
attr CaFinder dev-h-defLen 2
attr CaFinder dev-h-defPoll 1
attr CaFinder dev-h-defUnpack l
attr CaFinder dev-timing-commDelay 0.5
attr CaFinder dev-timing-timeout 2
attr CaFinder enableControlSet 1
attr CaFinder event-min-interval .*:3600
attr CaFinder event-on-change-reading .*
attr CaFinder group System
attr CaFinder icon stromzaehler_icon@green
attr CaFinder obj-h30105-expr $val/100
attr CaFinder obj-h30105-format %.2f
attr CaFinder obj-h30105-reading Netzfrequenz
attr CaFinder obj-h30105-unpack n
attr CaFinder obj-h30107-expr $val/100
attr CaFinder obj-h30107-format %.1f
attr CaFinder obj-h30107-len 1
attr CaFinder obj-h30107-reading Spannung
attr CaFinder obj-h30107-unpack n
attr CaFinder obj-h30126-expr $val/1000
attr CaFinder obj-h30126-format %.3f
attr CaFinder obj-h30126-reading Strom
attr CaFinder obj-h30126-unpack N
attr CaFinder obj-h30140-expr $val/1000
attr CaFinder obj-h30140-format %.3f
attr CaFinder obj-h30140-reading Wirkleistung
attr CaFinder obj-h30140-unpack N
attr CaFinder obj-h30148-expr $val/1000
attr CaFinder obj-h30148-reading Blindleistung
attr CaFinder obj-h30148-unpack N
attr CaFinder obj-h30156-expr $val/1000
attr CaFinder obj-h30156-reading Scheinleistung
attr CaFinder obj-h30156-unpack N
attr CaFinder obj-h32752-expr $val/100
attr CaFinder obj-h32752-len 10
attr CaFinder obj-h32752-reading Zaehlerstand_Bezug
attr CaFinder obj-h32756-expr $val/100
attr CaFinder obj-h32756-len 10
attr CaFinder obj-h32756-reading Zaehlerstand_Lieferung
attr CaFinder obj-h32756-unpack N
attr CaFinder room Zähler
attr CaFinder stateFormat Leistung= Wirkleistung kW /Zählerstand= Zaehlerstand kWh /<BR>Frequenz= Netzfrequenz Hz /Netzspannung= Spannung V /<BR>Stromaufname= Strom A /<BR>Verbrauch Jahr= Verbrauch_Jahr kWh / Kosten= Preis €<BR>---------------------------
attr CaFinder userReadings yForecastAktMonth:statTotal-get.* {calcmonthusageSplit($name,"statTotal-get",5)},\
Verbrauch_Jahr {(int(1000*(ReadingsVal("CaFinder","Zaehlerstand",0)- ReadingsVal("CaFinder","15September",0)))/1000)}
attr CaFinder webCmd reread

Den Port 13 habe ich eingestellt.

Jetzt tut sich leider Garnichts wo mache ich da den Fehler?
Kann ich eigentlich auf den Modbus mit lauschen und wenn ja wie?
FHEM auf CubieTruck:
Max mit Cube, HMLAN; MAX-Thermostaten; Homematic-Komponenten, SIS PM Schalter, JeeLink.

Aurel_B

Hallo Olaf, ein paar Gedanken:

  • userattr brauchst du nicht
  • Dein Zähler verwendet Input Register statt Holding Register für viele Werte. Das sieht man am Function Code, der ist 4 für Netzfrequenz (30105). Das heisst, statt h30105 solltest du i30105 verwenden.
  • Es kann sein, dass dein Zähler die Adressierung bei 1 beginnt statt bei 0, dann verschieben sich die Adressen entsprechend.
  • Beim dev-h-defUnpack hast du "l" angegeben, verwendest dann aber für jedes Register wieder eine (abweichende) Definition. Ich würde mal dev-h-defUnpack auf "N" setzen und die custom unpack Anweisungen bei den Registern rauslöschen.
  • Mitlauschen ist möglich, allerdings benötigst du dafür einen 2 RS485-to-USB Adapter o.Ä. Meine Empfehlung? Schliesse den vorhanden Adapter an deinen PC an und verwende QModMaster. Dort kannst du sehr rasch mit diversen Parametern rumspielen. Sobald du dort deine Werte kennst, kannst du sie in FHEM übertragen. Das geht meistens rascher und intuitiver als zuerst alles in FHEM anzupassen.

Olaf A

#2
Hallo Aurel_B,

danke für die schnelle Antwort.
Ich habe deine Vorschläge mal ausgetestet.
Leider hat es noch nicht den Erfolg gehabt, den ich erhofft habe.
Ich habe es erst Mal so angepasst Ink. der Anpassung der Adressen:
define CaFinder ModbusAttr 13 300
attr CaFinder alias Zähler Finder
attr CaFinder comment Finder Zähler 7M.24.8.230.0210\
https://cdn.findernet.com/app/uploads/2021/09/20090052/Modbus-7M24-7M38_v2_30062021.pdf
attr CaFinder dev-h-defLen 2
attr CaFinder dev-h-defPoll 1
attr CaFinder dev-h-defUnpack N
attr CaFinder dev-timing-commDelay 0.5
attr CaFinder dev-timing-timeout 2
attr CaFinder enableControlSet 1
attr CaFinder event-min-interval .*:3600
attr CaFinder event-on-change-reading .*
attr CaFinder group System
attr CaFinder icon stromzaehler_icon@green
attr CaFinder obj-i30105-expr $val/100
attr CaFinder obj-i30105-format %.2f
attr CaFinder obj-i30105-reading Netzfrequenz
attr CaFinder obj-i30107-expr $val/100
attr CaFinder obj-i30107-format %.1f
attr CaFinder obj-i30107-len 1
attr CaFinder obj-i30107-reading Spannung
attr CaFinder obj-i30126-expr $val/1000
attr CaFinder obj-i30126-format %.3f
attr CaFinder obj-i30126-reading Strom
attr CaFinder obj-i30140-expr $val/1000
attr CaFinder obj-i30140-format %.3f
attr CaFinder obj-i30140-reading Wirkleistung
attr CaFinder obj-i30148-expr $val/1000
attr CaFinder obj-i30148-reading Blindleistung
attr CaFinder obj-i30156-expr $val/1000
attr CaFinder obj-i30156-reading Scheinleistung
attr CaFinder obj-i32752-expr $val/100
attr CaFinder obj-i32752-len 10
attr CaFinder obj-i32752-reading Zaehlerstand_Bezug
attr CaFinder obj-i32756-expr $val/100
attr CaFinder obj-i32756-len 10
attr CaFinder obj-i32756-reading Zaehlerstand_Lieferung
attr CaFinder room Zähler
attr CaFinder stateFormat Leistung= Wirkleistung kW /Zählerstand= Zaehlerstand kWh /<BR>Frequenz= Netzfrequenz Hz /Netzspannung= Spannung V /<BR>Stromaufname= Strom A /<BR>Verbrauch Jahr= Verbrauch_Jahr kWh / Kosten= Preis €<BR>---------------------------
attr CaFinder userReadings yForecastAktMonth:statTotal-get.* {calcmonthusageSplit($name,"statTotal-get",5)},\
Verbrauch_Jahr {(int(1000*(ReadingsVal("CaFinder","Zaehlerstand",0)- ReadingsVal("CaFinder","15September",0)))/1000)}
attr CaFinder webCmd reread

ich werde es diese Wochenende nicht mehr schaffen mit dem PC an den Zähler zu kommen um da mal reinzuschnuppern.
das nehme ich mir für Freitag vor.
Wenn noch jemanden was einfällt, kann ich das aus der Ferne probieren.
Gruß Olaf.
FHEM auf CubieTruck:
Max mit Cube, HMLAN; MAX-Thermostaten; Homematic-Komponenten, SIS PM Schalter, JeeLink.

Aurel_B

Da ist immer noch einiges durcheinander....

attr CaFinder dev-h-defLen 2
attr CaFinder dev-h-defPoll 1
attr CaFinder dev-h-defUnpack N

-> Müsstest du anpassen für Input statt Holding Register, also "dev-i-defLen" etc.

attr CaFinder obj-i32756-len 10
Gemäss Doku ist das Register nur 2 Register breit, nicht 10. Mein Vorschlag: fange mit einer ganz einfach Definition an. Einfach mal einen Wert abfragen, ausbauen kannst du später immer noch. Und stell dann verbose auf 5 und schaue, was im Log passiert.

Olaf A

Geändert habe ich die Daten schon mal.
Im Log stehen jetzt diese Meldungen:
2024.06.02 11:28:24 4: CaFinder: GetUpdate (V4.5.6 - 7.11.2023) called from Fhem internal timer
2024.06.02 11:28:24 4: CaFinder: UpdateTimer called from GetUpdate with cmd next sets timer to call update function in 300.0 sec at 11:33:24.942, interval 300
2024.06.02 11:28:24 5: CaFinder: CreateUpdateHash full object list: i30105 i30107 i30126 i30140 i30148 i30156 i32752 i32756
2024.06.02 11:28:24 4: CaFinder: CombineUpdateHash objHash keys before combine:
2024.06.02 11:28:24 5: CaFinder: CombineUpdateHash tries to combine read commands
2024.06.02 11:28:24 5: CaFinder: CombineUpdateHash keys are now
2024.06.02 11:28:24 4: CaFinder: GetUpdate will now create requests for
FHEM auf CubieTruck:
Max mit Cube, HMLAN; MAX-Thermostaten; Homematic-Komponenten, SIS PM Schalter, JeeLink.