Neue Versionen und Support zum Modbus-Modul

Begonnen von StefanStrobel, 20 August 2017, 12:11:08

Vorheriges Thema - Nächstes Thema

laserrichi

Mal ne Frage.

Ein Gerät das nach MODBUS V1.1 RTU arbeitet soll mir das Model beim holding Register 40000 liefern

lt. Doku ist das String (32 bytes),  also muss ich doch len 16 angeben damit ich die 32 bytes bekomme.
Jetzt ist die gretchenfrage nach dem unpack... was müsste ich da nehmen ? 

Achja da fällt mir wieder auf, wenn ich so schweinereien mache mit unpack a>  dann schmiert Fhem ab :)  wird nicht abgefangen..
RaspberryPi 4 Bullseye,Homematic,Z-Wave,Rademacher Duofern,Signalduino,Fritz7590,ESPEasy,Tasmota,Robonect,Kameras,1-Wire,Modbus,Solar,Maranz,VU+,ulanzi tc001 mit awtrix light

StefanStrobel

Hallo,

für einen String wäre a* als unpack vermutlich das einfachste

Gruß
   Stefan

laserrichi

Hallo Stefan,

Danke jetzt kommen wir der sache schon näher, das mit dem * wenn ich das richtig verstehe ist eine wiederholung.

Ich bekomme jetzt folgendes:

.0 6DCe agorStr wePo

richtig wäre aber:
Power Storage DC 6.0

Ich müsste das jetzt noch irgendwie in der Reihenfolge sortieren  < und > geht ja nicht, ist ja ein endian
RaspberryPi 4 Bullseye,Homematic,Z-Wave,Rademacher Duofern,Signalduino,Fritz7590,ESPEasy,Tasmota,Robonect,Kameras,1-Wire,Modbus,Solar,Maranz,VU+,ulanzi tc001 mit awtrix light

Aurel_B


laserrichi

Zitat von: ansgru am 08 August 2022, 10:21:54
Versuch mal "obj-h40000-revRegs 1"

Danke du bist mein Held... ich hab in meinen Modul revRegs 1 global gesetzt und das hatte alles verdreht...

Jetzt wird es richtig angezeigt.

Noch was anderes, ich nutze an einem RS-485  zwei verschiedene Geräte die ich über TCP RTU anspreche.
Die beiden Devices kollidieren in Fhem und wechseln fleissig von opened auf disconnected

es wird eben auf der selben IP mit dem selben Port quasi die Verbindung aufgebaut. Ich müsste doch dann in Fhem ein device einrichten das die kommunikation macht und dann die modbusattr die darauf dann zugreifen.
Wie muss man das definieren gerade bei IP und RTU.

RaspberryPi 4 Bullseye,Homematic,Z-Wave,Rademacher Duofern,Signalduino,Fritz7590,ESPEasy,Tasmota,Robonect,Kameras,1-Wire,Modbus,Solar,Maranz,VU+,ulanzi tc001 mit awtrix light

StefanStrobel

Hallo laserrichi,

könntest Du etwas genauer beschreiben, wie das bei Dir aussieht? TCP oder RS485? oder per TCP auf ein Gateway und daran dann per RS485 zwei Slaves?
Wenn Gateway: was für eines und wie ist das konfiguriert? Was für IDs haben die Clients? Kann das Gateway mehrere TCP Master bedienen? Wie ist Fhem konfiguriert?
Da gibt es leider sehr viele Varianten und Fehlerquellen ...

Gruss
   Stefan

laserrichi

Hallo Stefan,

Espeasy mit Serial Server, und daran Pegel Converter auf RS-485,  also nur durchreiche quasi.  Ist also kein Gateway was 2 Master bedienen kann.
An der RS-485 hängen dann beide Devices dran mit unterschiedlichen Modbus ID's
Sprechen beide RTU.
Ein SDM630M Stromzähler und Wechselrichter wo ich gerade dabei bin das Modul zu basteln.
RaspberryPi 4 Bullseye,Homematic,Z-Wave,Rademacher Duofern,Signalduino,Fritz7590,ESPEasy,Tasmota,Robonect,Kameras,1-Wire,Modbus,Solar,Maranz,VU+,ulanzi tc001 mit awtrix light

StefanStrobel

Hallo laserrichi,

Das ist ein recht spezielles Setup, da Dein Converter eben nur eine TCP-Verbindung bedient, aber bei Modbus über TCP entweder ein Relay als Gegenstück oder ein einzelner Slave erreicht wird. Für so einen Fall hatte ich das Modul mal so erweitert, dass man ein "physisches" Modbus-Gerät als IO-Device auch per TCP mit so einem Converter verbinden kann und dann logische Modbus-Geräte darüber kommunizieren können. Siehe Antwort #840 und folgende

Gruss
   Stefan

laserrichi

Danke,
das hatte ich probiert und gesucht aber nicht mitbekommen das es auch für TCP und RTU so funktioniert....
Sollte Doku vielleicht erweitert werden.

Sieht jetzt bei mir so aus:

Interface:
define ModbusProxy Modbus 192.168.10.7:23
Wechselrichter:
define RCTModbus ModbusRCT 1 65 RTU
Stromzähler:
define Hausstrom ModbusSDM630M 99 90 RTU


Scheint soweit zu laufen :-)
RaspberryPi 4 Bullseye,Homematic,Z-Wave,Rademacher Duofern,Signalduino,Fritz7590,ESPEasy,Tasmota,Robonect,Kameras,1-Wire,Modbus,Solar,Maranz,VU+,ulanzi tc001 mit awtrix light

Kruemel

#939
Hallo zusammen, ich versuche gerade meine Nibe WP S320 mit fhem zu verbinden.
Ich versuche es mit ModbusAttr. Leider blicke ich da noch nicht durch. Ein define habe ich gemacht. Was für Attr ich brauche, welche nicht, was da rein gehört ist noch ein Buch mit mehr als 7 Siegeln ;-))
Ich frage mich z.B. wo die von der NIBE gelieferten Daten dann eigentlich angezeigt werden ;-((
Gibt es irgendein Dokument wo man sich einlesen könnte?

Habe meinen bisherigen Versuch mal beigefügt.


Internals:
   CFGFN     
   DEF        5 60 192.168.100.52:502 TCP
   DeviceName 192.168.100.52:502
   EXPECT     idle
   FUUID      6303c0b1-f33f-1fe0-2dc9-03dd2314a4d2d98c
   IODev      NIBE
   Interval   60
   LASTOPEN   1661195439.63033
   LeadingZeros 1
   MODBUSID   5
   MODE       master
   MODULEVERSION Modbus 4.4.04 - 17.7.2021
   NAME       NIBE
   NEXT_OPEN  1661195499.64065
   NOTIFYDEV  global
   NR         3043
   NTFY_ORDER 50-NIBE
   PARTIAL   
   PROTOCOL   TCP
   STATE      disconnected
   TCPConn    1
   TYPE       ModbusAttr
   devioLoglevel 3
   eventCount 30
   nextOpenDelay 60
   FRAME:
   QUEUE:
   READ:
   READINGS:
     2022-08-22 21:10:39   state           disconnected
   defptr:
     NIBE       5
   lastRead:
Attributes:
   dev-h-defPoll 1
   obj-h00001-expr $val/10
   obj-h00001-len 2
   obj-h00001-poll 1
   obj-h00001-reading AussentemperaturBT1
   obj-h00001-showGet 1
   obj-h00001-unpack n
   obj-h1-expr $val/10
   obj-h1-len 2
   obj-h1-poll 1
   obj-h1-reading AussentemperaturBT1
   room       UG-Heizung
   verbose    5



RPi, Homematik, LAN-CFG, Bewegungsmelder, Rauchmelder, Rolläden, Schalter, Türkontakte, Heizungsventile, FB7390, Owncloud, xBMC

ch.eick

#940
Zitat von: Kruemel am 22 August 2022, 21:14:12
Hallo zusammen, ich versuche gerade meine Nibe WP S320 mit fhem zu verbinden.
Ich versuche es mit ModbusAttr. Leider blicke ich da noch nicht durch. Ein define habe ich gemacht. Was für Attr ich brauche, welche nicht, was da rein gehört ist noch ein Buch mit mehr als 7 Siegeln ;-))
Ich frage mich z.B. wo die von der NIBE gelieferten Daten dann eigentlich angezeigt werden ;-((
Gibt es irgendein Dokument wo man sich einlesen könnte?

Habe meinen bisherigen Versuch mal beigefügt.
Hallo Krümel,

bisher zeigt Deine Verbindung noch disconnected.
Es könnte sein, dass der Port 502 eventuell nicht richtig ist. Bei mir wird für ein anderes Gerät 1502 verwendet, vieleicht passt das ja.
Sobald das Device connected anzeigt kannst Du mal ein "set <Device> scanModbusObjects" versuchen, was mit einem "set <Device> scanStop" wieder angehalten werden kann.
Dann sollten diverse readings entstehen, die Dir einen Anhaltspunkt für die Kommunikation geben können.
Besser wäre natürlich, wenn Du eine Dokumentation der ModBus Register von Deinem Gerät hast, da sollte alles drin stehen.

Daraus entwickelt man dann z.B. type definitionen, die dann bei den Registern angewendet werden können

dev-type-INT16_Voltage-expr $val * (10 ** ReadingsNum("$name" ,"M_AC_Voltage_SF",0))
dev-type-INT16_Voltage-format %.2f
dev-type-INT16_Voltage-len 1
dev-type-INT16_Voltage-unpack s>

obj-h40077-reading M_AC_Voltage_AN
obj-h40077-type INT16_Voltage


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

Kruemel

RPi, Homematik, LAN-CFG, Bewegungsmelder, Rauchmelder, Rolläden, Schalter, Türkontakte, Heizungsventile, FB7390, Owncloud, xBMC

ch.eick

#942
Zitat von: Kruemel am 22 August 2022, 22:05:10
Hallo Christian, danke für Deine Antwort.
Den Port habe ich aus diesem Dokument der Firma Nibe.
https://www.nibe.eu/download/18.3db69dc1795e0d992c5722/1622634529178/Modbus%20S-series%20EN%20M12676EN-1.pdf

Gruß
Wolfgang
Hallo Wolfgang,
dann prüf doch mal ob Du das Gerät über einen pin auf die IP-Adresse erreichen kannst. Wenn Du die IP-Adresse jedoch schon aus dem Router oder dem Gerät bekommen hast, dann sollte das okay sein. Eventuell meldet sich ja noch Jemand wegend des connects.

Das mit dem HTTPMOD und der API kannst Du ja auch mal probieren, damit sollte sich das Gerät auch im Browser melden.


In dem Dokument sind dann ja auch schon alle Register aufgelistet, dann kannst Du Dir den Scan sparen und aus der Tabelle die Definition erzeugen. Wichtig ist insbesondere die size spalte, denn da steckt die Länge und der Type jedes registers drin.

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

Kruemel

Hallo Christian,
ich habe gestern noch an den Timeouts etwas versucht zu erreichen. Scheinbar ohne Erfolg.
Heute morgen habe ich dann mal den Nibe myplink eingerichtet. Kurz danach ging dann die Verbindung im FHEM auf opened. Der Scan lieferte dann einige Register.
Hmm, kann es sein, das man die Kommunikation per Modbus erst durch den Uplink anschubsen musste?

z.B. das soll die Außentemperatur sein.
scan-h00001 hex=000a, string=.., s=2560, s>=10, S=2560, S>=102022-08-23 07:59:12

Ich versuche dann mal heute Abend die Daten entsprechend aufzubereiten.
Gruß
Wolfgang

RPi, Homematik, LAN-CFG, Bewegungsmelder, Rauchmelder, Rolläden, Schalter, Türkontakte, Heizungsventile, FB7390, Owncloud, xBMC

ch.eick

Hallo Wolfgang
Zitat von: Kruemel am 23 August 2022, 08:52:57
Hallo Christian,
ich habe gestern noch an den Timeouts etwas versucht zu erreichen. Scheinbar ohne Erfolg.
Heute morgen habe ich dann mal den Nibe myplink eingerichtet. Kurz danach ging dann die Verbindung im FHEM auf opened. Der Scan lieferte dann einige Register.
Hmm, kann es sein, das man die Kommunikation per Modbus erst durch den Uplink anschubsen musste?
Das Gerät selber kenne ich nicht, aber das sieht dann ja schon mal prima aus.
Den Timeout würde ich wieder zurück nehmen, das wäre notwendig, wenn das gerät sehr langsam Antwortet.
Zitat
z.B. das soll die Außentemperatur sein.
scan-h00001 hex=000a, string=.., s=2560, s>=10, S=2560, S>=102022-08-23 07:59:12
Die Definition kannst Du ja im Dokument in der Tabelle finden.

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