Modbus Daten auslesen und verstehen (BWWP Ecodesign ED 300 WT)

Begonnen von Mellowback, 27 Februar 2025, 22:51:59

Vorheriges Thema - Nächstes Thema

Mellowback

Hallo zusammen,

ich habe eine Brauchwasserwärmepumpe und würde gerne über MODBUS die Daten auslesen bzw. steuern.
das mit dem Modbusattr hae ich schon mal hinbekommen. Am RS485 to Wifi steht dann auch connected.
Wenn ich dann auf ScanModbusObjects gehe sehe ich auch das er mit der mit der Schnittstelle redet (siehe Bild).
Allerdings finde ich keine Werte oder anderes.
Was mache ich falsch oder habe ich einen Denkfehler ?

LIST:
Internals:
   CFGFN     
   DEF        1 30 192.168.2.191:5000 TCP
   DeviceName 192.168.2.191:5000
   EXPECT     response
   FD         92
   FUUID      67c0db5b-f33f-2b59-5c8a-9a18548a220bb72e
   IODev      RS485_BWWP
   Interval   30
   LASTOPEN   1740692419.62391
   MODBUSID   1
   MODE       master
   MODULEVERSION Modbus 4.5.6 - 7.11.2023
   NAME       RS485_BWWP
   NOTIFYDEV  global
   NR         949
   NTFY_ORDER 50-RS485_BWWP
   PARTIAL   
   PROTOCOL   TCP
   STATE      opened
   TCPConn    1
   TIMEOUTS   159
   TYPE       ModbusAttr
   devioLoglevel 3
   devioNoSTATE 1
   eventCount 5
   nextOpenDelay 60
   nextQueueRun 1740692925.19996
   nextTimeout 1740692925.19694
   scanOAdr   279
   scanOEnd   16384
   scanOLen   1
   scanOStart 1
   scanOType  h
   FRAME:
   QUEUE:
     HASH(0x45fc0d0)
     HASH(0x43b1b98)
     HASH(0x3eb5e10)
     HASH(0x402d048)
     HASH(0x3ea0870)
     HASH(0x43bd0b0)
     HASH(0x3fefe78)
     HASH(0x401b690)
     HASH(0x44080a8)
     HASH(0x3ff1a60)
     HASH(0x3ea99c0)
     HASH(0x29f0038)
     HASH(0x43a5ef0)
   READ:
   READINGS:
     2025-02-27 22:40:20   state           opened
   REMEMBER:
     lid        1
     lname      RS485_BWWP
     lsend      1740692923.19943
   REQUEST:
     ADR        265
     DBGINFO    scan objs
     FCODE      3
     FRAME      >␆␁␃␁    ␁
     LEN        1
     MODBUSID   1
     OPERATION  scanobj
     QUEUED     1740692902.25518
     READING   
     SENT       1740692923.19694
     TID        62
     TYPE       h
     MASTERHASH:
   UPDATECACHE:
   defptr:
     RS485_BWWP 1
Attributes:
   room       Technikraum

Du darfst diesen Dateianhang nicht ansehen.

Vorab Danke

ch.eick

Eventuell macht es Sinn hier mal die Bezeichnung der BWWP zu nennen und dafür beim Hersteller die ModBus Definition zu suchen, bzw. beim Service anzufragen.
RPI4; Docker; CUNX; Eltako FSB61NP; SamsungTV H-Serie; Sonos; Vallox; Luxtronik; 3x FB7490; Stromzähler mit DvLIR; wunderground; Plenticore 10 mit BYD; EM410; SMAEM; Modbus TCP
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/ch.eick

Mellowback

BWWP ist eine Ecodesign 300WT, du hast natürlich vollkommen recht.

Danke für den Hinweis

Mellowback

Hallo zusammen,

vom Hersteller habe ich folgende Parameter erhalten siehe Anhang).
Wie kann ich jetzt diese im FHEM einbinden (Bsp. T2 Speicher-Temperatur oder 013.H_pump Betr.art) ?
                           
Du darfst diesen Dateianhang nicht ansehen.

ch.eick

Moin,
schau mal nach dem ModBus Thread für generelle Fragen zum Wiki und der commandref

Hier mal Beispiele von meinem Wechselrichter
# Ich habe mit für die Dekodierung einen default definiert
attr WR_1 dev-h-defFormat %.2f
attr WR_1 dev-h-defLen 2
attr WR_1 dev-h-defPoll 1
attr WR_1 dev-h-defRevRegs 1
attr WR_1 dev-h-defUnpack f>

# oder auch einen Type, damit ich das nicht bei jedem Register angeben muss
attr WR_1 dev-type-STR-format %s
attr WR_1 dev-type-STR-len 8
attr WR_1 dev-type-STR-revRegs 0
attr WR_1 dev-type-STR-unpack a*


# den default kann man dann bei einigen Registern auch wieder überschreiben, wenn es Abweichungen gibt
attr WR_1 obj-h104-format %s
attr WR_1 obj-h104-reading State_of_EM
attr WR_1 obj-h104-revRegs 0
attr WR_1 obj-h104-unpack N

# Es ist auch ein Mapping möglich, wenn man sprechende Werte verwenden möchte
attr WR_1 obj-h104-map 0:Normal,8:Ruhe1,16:Ruhe2,32:Ausgleichsladung,64:Tiefentladeschutz,256:externe Batteriesteuerung

# Hier ein Beispiel unter Verwendung des Type
attr WR_1 obj-h14-reading Inverter_serial_number
attr WR_1 obj-h14-type STR

# Diese verwenden dann den default
attr WR_1 obj-h258-reading I_DC1
attr WR_1 obj-h260-reading P_DC1
attr WR_1 obj-h266-reading U_DC1

- Aus der Tabelle solltest Du den Namen zu einem Standard übertragen, damit Du später auch Filter verwenden kannst.
- Die Adresse ist z.B. h258
- Die Länge (len) würde ich erstmal mit 1 ansetzen

VG  Christian
RPI4; Docker; CUNX; Eltako FSB61NP; SamsungTV H-Serie; Sonos; Vallox; Luxtronik; 3x FB7490; Stromzähler mit DvLIR; wunderground; Plenticore 10 mit BYD; EM410; SMAEM; Modbus TCP
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/ch.eick

Mellowback

ok, probiere ich dann mal.
Grundsätzliche frage nochmal: wenn der ModBus lebt, sollte er doch "Readings" im fhem ausgeben, oder ?
Da kommt nämlich nix... Oder muss ich erst die Paramter definieren ?

ch.eick

#6
Zitat von: Mellowback am 06 März 2025, 13:21:39ok, probiere ich dann mal.
Grundsätzliche frage nochmal: wenn der ModBus lebt, sollte er doch "Readings" im fhem ausgeben, oder ?
Da kommt nämlich nix... Oder muss ich erst die Paramter definieren ?
Hast Du im Wiki mal gelesen?
Bei mir werden unter dem SET Pulldown solche Möglichkeiten angezeigt.
Additionally the attribute enableControlSet enables the set options
interval, stop, start, reread as well as scanModbusObjects, scanStop
and scanModbusIds (for devices connected with RTU / ASCII over a serial line).
Das generiert aber nur readings, die man dann besser anschließend selber gezielt definiert.
RPI4; Docker; CUNX; Eltako FSB61NP; SamsungTV H-Serie; Sonos; Vallox; Luxtronik; 3x FB7490; Stromzähler mit DvLIR; wunderground; Plenticore 10 mit BYD; EM410; SMAEM; Modbus TCP
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/ch.eick

Mellowback

Sorry, aber ich checks nicht, kannst du mir mal ein Code Bsp. Anhand der Daten meiner BWWP bereitstellen ?

DEF        1 30 192.168.2.191:5000 TCP
   DeviceName 192.168.2.191:5000
   EXPECT     response
   FD         108
   FUUID      67c0db5b-f33f-2b59-5c8a-9a18548a220bb72e
   IODev      RS485_BWWP
   Interval   30
   LASTOPEN   1741288683.99007
   MODBUSID   1
   MODE       master
   MODULEVERSION Modbus 4.5.6 - 7.11.2023
   NAME       RS485_BWWP
   NOTIFYDEV  global
   NR         945
   NTFY_ORDER 50-RS485_BWWP
   PARTIAL   
   PROTOCOL   TCP
   STATE      opened
   TCPConn    1
   TIMEOUTS   335
   TYPE       ModbusAttr
   devioLoglevel 3
   devioNoSTATE 1
   eventCount 21
   nextOpenDelay 60
   nextQueueRun 1741289773.81069
   nextTimeout 1741289774.80792
   scanOAdr   350
   scanOEnd   16384
   scanOLen   1
   scanOStart 1
   scanOType  h
   FRAME:
   QUEUE:
     HASH(0x560ffc0)
     HASH(0x55aa2a0)
     HASH(0x55a8068)
     HASH(0x557fdf8)
     HASH(0x525dad0)
     HASH(0x2d2b018)
     HASH(0x55a7e28)
     HASH(0x5343188)
     HASH(0x55a47f8)
     HASH(0x4f41e98)
     HASH(0x55a6bc0)
     HASH(0x533ff48)
   READ:
   READINGS:
     2025-03-06 20:18:04   state           opened
   REMEMBER:
     lid        1
     lname      RS485_BWWP
     lsend      1741289772.8104
   REQUEST:
     ADR        338
     DBGINFO    scan objs
     FCODE      3
     FRAME      ␅␆␁␃␁R␁
     LEN        1
     MODBUSID   1
     OPERATION  scanobj
     QUEUED     1741289755.62469
     READING   
     SENT       1741289772.80792
     TID        5
     TYPE       h
     MASTERHASH:
   UPDATECACHE:
   defptr:
     RS485_BWWP 1
Attributes:
   room       Technikraum

passibe

Ich glaube er meint, dass du das Attribut enableControlSet setzen sollst und dann irgendeine von den Scan-Funktionen nutzen sollst.
Wobei du das ja schon gemacht hast und es kommt nix? Deshalb einfach mal anfangen ein paar Register definiert abzufragen.

Zitat von: Mellowback am 06 März 2025, 13:21:39Da kommt nämlich nix... Oder muss ich erst die Paramter definieren ?
Ja. Du musst erst definieren, welche Adressen, etc. abgefragt werden sollen (oder halt scannen), vorher kommt da nix. Modbus ist kein Protokoll, das ständig Daten sendet. Sondern FHEM ist ein Client, der den Modbus-Server deiner BWP anfragt und dann auf Anfrage die Daten übermittelt bekommt.

Ansonsten fand ich diese Zuordnung hier noch hilfreich: https://forum.fhem.de/index.php?topic=115422.msg1283236#msg1283236

Und einfacher ist es vielleicht sogar direkt den Weg über eine Perl-Datei zu gehen, als sich mit diesen Attributen rumzuschlagen. Ist aber vielleicht Geschmackssache, je nach dem ob man lieber im Texteditor oder auf FHEMWEB arbeitet.
Ein gutes Beispiel für so eine Datei ist hier angehängt (98_ModbusSUN2000WR.pm):
https://forum.fhem.de/index.php?topic=115422.msg1323848#msg1323848
Die Datei kommt dann einfach unter /opt/fhem/FHEM und ist dann quasi ein eigenes Modul, das man dann wie Folgt einbinden kann (bleibe jetzt mal im SUN2000-Beispiel):
defmod wechselrichter ModbusSUN2000WR <Client-ID> <Abfrageintervall> <IP-Adresse> TCP

Mellowback

#9
Danke für deinen Hinweis.
Ich habe folgendes durchgeführt:
Attr enableControlSet 1
set scanModbusObjects
leider keine Readings... :(

Kann ich mich auch hier an dieser Beschreibung orientieren in bezug auf Readings ?
https://github.com/frankol/ecodesign-homeassistant

ch.eick

Zumindest kannst Du da Beispiele für die wichtigen Register finden.
Ich bin mir echt nicht sicher, ob das Device bereits richtig eine Verbindung hat. Bei mir hat das Scannern funktioniert und im Anschluss babe ich die Register mit Attributen direkt selber eingetragen, damit ich auch die Namen nach einem Standard festlegen konnte.
Und nur Mut, ich habe mehreren Monate daran gearbeitet :-)
RPI4; Docker; CUNX; Eltako FSB61NP; SamsungTV H-Serie; Sonos; Vallox; Luxtronik; 3x FB7490; Stromzähler mit DvLIR; wunderground; Plenticore 10 mit BYD; EM410; SMAEM; Modbus TCP
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/ch.eick

Mellowback

Ich habe jetzt mal mir das Beispiel aus dem Link https://forum.fhem.de/index.php?topic=115422.msg1283236#msg1283236
attr Sun2000 obj-h32114-reading Daily_energy_yield
attr Sun2000 obj-h32114-len 2
attr Sun2000 obj-h32114-unpack N
attr Sun2000 obj-h32114-expr $val/100
attr Sun2000 obj-h32114-poll 1

für die erste Zeile sollte es dann bei mir wie folgt aussehen:
attr RS485_BWWP obj-8-reading ecodesign_temp_ist

anhand folgende Vorgabe: obj-[cdih][0-9]+-reading
leider nimmt er das nichtn
Was muss ich den bei meiner BWWP für [cdih] und [0-9] eintragen ?
Ich dachte [0-9] ist die Adresse oder ?



Mellowback

attr RS485_BWWP obj-h8-reading T2

hat er jetz genommen, allerdings nur die attributes

ch.eick

Für mich scheint die Fernbedienung noch nicht zu stehen.

Unter set kannst du stop,start, reread, scan usw. Verwenden. Dann müsste zumindest irgend etwas kommen.
Ist in dem Gerät auch Modbus aktiv?
RPI4; Docker; CUNX; Eltako FSB61NP; SamsungTV H-Serie; Sonos; Vallox; Luxtronik; 3x FB7490; Stromzähler mit DvLIR; wunderground; Plenticore 10 mit BYD; EM410; SMAEM; Modbus TCP
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/ch.eick

Mellowback

laut Schnittstelle schon, oder (siehe Bild) ?