Neue Versionen und Support zum Modbus-Modul

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

Vorheriges Thema - Nächstes Thema

Wzut

warum 2x h und 1x i ?
ich würde aus dem attr etamod obj-i1000-len 2 als erstes ein attr etamod obj-h1000-len 2 machen
was mir auch noch auffällt ist das du keine Angabe machst wir das Register 1000 zu decodieren ist , fang mal mit
attr etamod obj-h1000-Unpack N an
und gibt es von ETA keine Doku wie die Modbus Register belegt sind ?
Tipp : wenn es doch noch mehr Register werden sollten : das poll , len & Unpack nach oben in die dev-h-def Attribute packen, spart Tipparbeit. (siehe #313)
Maintainer der Module: MAX, MPD, UbiquitiMP, UbiquitiOut, SIP, BEOK, readingsWatcher

noname41

Danke das war es!

Nun kann ich mit dem Kessel kommunizieren. Sehr fein :-)

Karflyer

Ich erhalte beim Neustart von FHEM die folgende Fehlermeldung im Log:
PERL WARNING: Useless use of concatenation (.) or string in void context at ./FHEM/98_Modbus.pm line 2960, <$fh> line 2221

Benutzt wird von mir das modbusattr-Modul. Ich kann an meinen Einstellungen nicht erkennen was diese Fehlermeldung verursacht.
Hat jemand eine Idee?

Grüße
Stefan

Nestor

Zitat von: Karflyer am 17 September 2019, 13:34:21
Ich erhalte beim Neustart von FHEM die folgende Fehlermeldung im Log:
PERL WARNING: Useless use of concatenation (.) or string in void context at ./FHEM/98_Modbus.pm line 2960, <$fh> line 2221

It's an error in the code. I already posted the fix in July but the developer never bothered to respond.
https://forum.fhem.de/index.php/topic,75638.msg963206.html#msg963206

StefanStrobel

Sorry, das ist urlaubsbedingt hinten runter gefallen.
Eine neue Version ist jetzt eingecheckt.

Gruss
    Stefan

Mike73

Hallo zusammen,

verwendet jemand den Relay-Mode des ModbusAttr-Moduls?
Ich habe das von Stefan beschriebene Szenario bei mir installiert und bekomme leider in der zweiten Instanz entweder unsinnige Werte oder Timeouts
zum Beispiel:
HKVEG1: Timeout waiting for a modbus response request: id 57, fCode 1, tid 203, type c, adr 2, len 1 for device HKVEG1 reading HK4 (getUpdate), queued 18.69 secs ago, sent 3.00 secs ago, read buffer empty
2019.09.19 11:49:01 3 : HKVEG1: Timeout waiting for a modbus response request: id 57, fCode 1, tid 216, type c, adr 6, len 1 for device HKVEG1 reading HK8 (getUpdate), queued 21.69 secs ago, sent 3.00 secs ago, read buffer empty



Ich habe aktuell drei solcher Modbus-Geräte, zwei Eigenbau und ein "kommerzielles" ( Fronius Solarwechselrichter). Das Problem tritt bei allen drei Geräten gleichermaßen auf.




Die Relay-Instanz läuft gut, da stimmt alles.
list HKVEG1 :
Internals:
   CHANGED   
   DEF        7 20
   FUUID      5c7597dc-f33f-53e7-ac4f-6112c82865bad6fd
   INTERVAL   20
   IODev      MBGate
   MODBUSID   7
   MODE       master
   MODULEVERSION Modbus 4.1.5 - 17.9.2019
   NAME       HKVEG1
   NOTIFYDEV  global
   NR         135
   NTFY_ORDER 50-HKVEG1
   PROTOCOL   RTU
   STATE      opened
   TRIGGERTIME 1568885848.93544
   TRIGGERTIME_FMT 2019-09-19 11:37:28
   TYPE       ModbusAttr
   lastUpdate 1568885828.93544
   FRAME:
   READ:
   READINGS:
     2019-09-19 11:37:05   1W-val-1        35.0
     2019-09-19 11:36:06   1WConvertT      0
     2019-09-19 11:37:08   1WScanBus       0
     2019-09-19 11:36:26   1Wcount         1
     2019-09-19 11:36:06   HK-ALL-OFF      0
     2019-09-19 11:37:05   HK-ALL-ON       0
     2019-09-19 11:33:46   HK1             off
     2019-09-19 11:32:46   HK2             off
     2019-09-19 11:36:06   HK3             off
     2019-09-19 11:37:15   HK4             on
     2019-09-19 11:37:07   HK5             on
     2019-09-19 11:37:01   HK6             on
     2019-09-19 11:37:08   HK7             on
     2019-09-19 11:37:15   HK8             on
     2019-09-19 11:37:08   HK9             on
     2019-09-19 10:55:46   state           opened
   REMEMBER:
     lrecv      1568885828.3477
     lsend      1568885828.45192
   gotReadings:
     HK8        on
   lastRead:
     c0         1568885566.98978
     c1         1568885766.60762
     c16        1568885766.37595
     c17        1568885828.23412
     c18        1568885825.65348
     c19        1568885766.26195
     c2         1568885835.65742
     c3         1568885827.88991
     c4         1568885821.08267
     c5         1568885828.00435
     c6         1568885835.77551
     c7         1568885828.11922
     c8         1568885626.42869
     i0         1568885786.54816
     i13        1568885825.77087
Attributes:
   dev-c-combine 1
   dev-c-defPoll 1
   dev-i-defPoll 1
   disable    0
   event-min-interval .*:360
   event-on-change-reading .*
   obj-c0-map 0:off,1:on
   obj-c0-reading HK2
   obj-c0-set 1
   obj-c1-map 0:off,1:on
   obj-c1-reading HK3
   obj-c1-set 1
   obj-c16-reading 1WConvertT
   obj-c16-set 1
   obj-c17-reading 1WScanBus
   obj-c17-set 1
   obj-c18-reading HK-ALL-ON
   obj-c18-set 1
   obj-c19-reading HK-ALL-OFF
   obj-c19-set 1
   obj-c2-map 0:off,1:on
   obj-c2-reading HK4
   obj-c2-set 1
   obj-c3-map 0:off,1:on
   obj-c3-reading HK5
   obj-c3-set 1
   obj-c4-map 0:off,1:on
   obj-c4-reading HK6
   obj-c4-set 1
   obj-c5-map 0:off,1:on
   obj-c5-reading HK7
   obj-c5-set 1
   obj-c6-map 0:off,1:on
   obj-c6-reading HK8
   obj-c6-set 1
   obj-c7-map 0:off,1:on
   obj-c7-reading HK9
   obj-c7-set 1
   obj-c8-map 0:off,1:on
   obj-c8-reading HK1
   obj-c8-set 1
   obj-c9-map 0:off,1:on
   obj-i0-expr ($val >> 8 )
   obj-i0-reading 1Wcount
   obj-i13-expr ( $val / 2 )
   obj-i13-format %.1f
   obj-i13-poll 1
   obj-i13-reading 1W-val-1
   room       ,Modbus
   userattr   dev-c-combine dev-c-defPoll dev-i-defPoll obj-c0-map obj-c0-reading obj-c0-set obj-c1-map obj-c1-reading obj-c1-set obj-c16-reading obj-c16-set obj-c17-reading obj-c17-set obj-c18-reading obj-c18-set obj-c19-reading obj-c19-set obj-c2-map obj-c2-reading obj-c2-set obj-c3-map obj-c3-reading obj-c3-set obj-c4-map obj-c4-reading obj-c4-set obj-c5-map obj-c5-reading obj-c5-set obj-c6-map obj-c6-reading obj-c6-set obj-c7-map obj-c7-reading obj-c7-set obj-c8-map obj-c8-reading obj-c8-set obj-c9-map obj-i0-expr obj-i0-reading obj-i13-expr obj-i13-format obj-i13-poll obj-i13-reading
   verbose    0


Das entsprechende Relay auf derselben Instanz:
Internals:
   CHANGED   
   CONNECTS   2
   DEF        57 relay 192.168.3.15:1502 TCP to HKVEG1
   DeviceName 192.168.3.15:1502
   EXPECT     request
   FD         10
   FUUID      5c759876-f33f-53e7-e63d-dbf32ea83003afce
   IODev      RelayHKVEG1
   LASTCONN   RelayHKVEG1_192.168.3.10_52364
   MODBUSID   57
   MODE       relay
   MODULEVERSION Modbus 4.1.5 - 17.9.2019
   NAME       RelayHKVEG1
   NOTIFYDEV  global
   NR         136
   NTFY_ORDER 50-RelayHKVEG1
   PORT       1502
   PROTOCOL   TCP
   RELAY      HKVEG1
   RELID      7
   STATE      opened
   TCPConn    1
   TCPServer  1
   TYPE       ModbusAttr
   CONNECTHASH:
     RelayHKVEG1_192.168.3.10_52282:
       BUF       
       EXPECT     request
       FD         26
       IODev      RelayHKVEG1_192.168.3.10_52282
       MODBUSID   57
       NAME       RelayHKVEG1_192.168.3.10_52282
       NR         158
       PEER       192.168.3.10
       PORT       52282
       RELAY      HKVEG1
       RELID      7
       SNAME      RelayHKVEG1
       SSL       
       STATE      Connected
       TCPChild   1
       TCPConn    1
       TEMPORARY  1
       TYPE       ModbusAttr
       CHILDOF:
       READ:
         BUFFER     
       READINGS:
         2019-09-19 10:56:35   state           Connected
       REMEMBER:
         lid        57
         lname      RelayHKVEG1_192.168.3.10_52282
         lrecv      1568883872.15009
         lsend      1568883872.13761
       REQUEST:
         ADR        6
         FCODE      1
         LEN        1
         MODBUSID   57
         PDU        
         TID        38
         TYPE       c
         DEVHASH:
     RelayHKVEG1_192.168.3.10_52364:
       BUF       
       EXPECT     request
       FD         19
       IODev      RelayHKVEG1_192.168.3.10_52364
       MODBUSID   57
       MODE       relay
       NAME       RelayHKVEG1_192.168.3.10_52364
       NR         182
       PEER       192.168.3.10
       PORT       52364
       PROTOCOL   TCP
       RELAY      HKVEG1
       RELID      7
       SNAME      RelayHKVEG1
       SSL       
       STATE      Connected
       TCPChild   1
       TCPConn    1
       TEMPORARY  1
       TYPE       ModbusAttr
       CHILDOF:
       READ:
         BUFFER     
       READINGS:
         2019-09-19 11:04:13   state           Connected
       REMEMBER:
         lid        57
         lname      RelayHKVEG1_192.168.3.10_52364
         lrecv      1568885913.98055
         lsend      1568885913.78336
       REQUEST:
         ADR        6
         FCODE      1
         LEN        1
         MODBUSID   57
         PDU        
         TID        244
         TYPE       c
         DEVHASH:
   READ:
     BUFFER     
   READINGS:
     2019-09-19 10:55:46   state           opened
   REMEMBER:
     lsend      1568885912.19954
   defptr:
     RelayHKVEG1 57
   gotReadings:
Attributes:
   room       Modbus


Und auf der zweiten Instanz dann wie folgt:
Internals:
   CHANGED   
   DEF        57 10 192.168.3.15:1502 TCP
   DeviceName 192.168.3.15:1502
   EXPECT     response
   FD         33
   FUUID      5c5da6c9-f33f-53e7-4c38-f79a22e8f0185b2c
   INTERVAL   10
   IODev      HKVEG1
   LASTOPEN   1568884643.34217
   MODBUSID   57
   MODE       master
   MODULEVERSION Modbus 4.1.5 - 17.9.2019
   NAME       HKVEG1
   NOTIFYDEV  global
   NR         37
   NTFY_ORDER 50-HKVEG1
   PARTIAL   
   PROTOCOL   TCP
   STATE      opened
   TCPConn    1
   TIMEOUTS   1
   TRIGGERTIME 1568886620.04219
   TRIGGERTIME_FMT 2019-09-19 11:50:20
   TRIGGERTIME_SAVED
   TYPE       ModbusAttr
   devioLoglevel 3
   lastUpdate 1568886610.04219
   nextOpenDelay 60
   nextQueueRun 1568886617.98657
   nextTimeout 1568886618.98244
   FRAME:
   Helper:
     DBLOG:
       1W-val-1:
         logdb:
           TIME       1568884898.04194
           VALUE      35.0
   QUEUE:
     HASH(0x5c7d578)
     HASH(0x5c758c0)
     HASH(0x2867fd8)
     HASH(0x5c78fd8)
     HASH(0x5c8bed8)
     HASH(0x5c75d50)
     HASH(0x28580b8)
     HASH(0x5c8ce78)
     HASH(0x5c4c4d8)
     HASH(0x2863bb0)
     HASH(0x5c8aca0)
     HASH(0x286c080)
     HASH(0x5c7e5b0)
     HASH(0x5c6c938)
     HASH(0x5c77e40)
     HASH(0x5c8a0e8)
     HASH(0x5c89b08)
     HASH(0x45ff2f8)
     HASH(0x27f7c70)
     HASH(0x5c6f950)
     HASH(0x2846f08)
     HASH(0x38ec5f0)
     HASH(0x5c8c688)
     HASH(0x5c87940)
     HASH(0x2864018)
     HASH(0x28667c8)
     HASH(0x5c8aed8)
   READ:
     BUFFER     
   READINGS:
     2019-09-19 11:49:35   1W-val-1        35.0
     2019-09-19 11:00:41   1WConvertT      0
     2019-09-19 11:15:34   1WScanBus       0
     2019-09-19 11:15:33   1Wcount         1
     2019-09-19 11:15:32   HK-ALL-OFF      1
     2019-09-19 11:50:10   HK-ALL-ON       1
     2019-09-19 10:53:34   HK1             on
     2019-09-19 11:15:33   HK2             off
     2019-09-19 10:56:50   HK3             on
     2019-09-19 11:49:47   HK4             on
     2019-09-19 11:50:02   HK5             on
     2019-09-19 11:49:33   HK6             on
     2019-09-19 11:32:50   HK7             on
     2019-09-19 11:50:07   HK8             on
     2019-09-19 11:36:30   HK9             on
     2019-09-19 11:17:23   state           opened
   REMEMBER:
     lid        57
     lname      HKVEG1
     lrecv      1568886612.87726
     lsend      1568886615.98474
   REQUEST:
     ADR        13
     DBGINFO    getUpdate
     FCODE      4
     FRAME      �9

     LEN        1
     MODBUSID   57
     OPERATION  read
     READING    1W-val-1
     SENT       1568886615.98244
     TID        172
     TIMESTAMP  1568886600.05081
     TYPE       i
     VALUES     0
     DEVHASH:
   defptr:
     HKVEG1     57
   gotReadings:
     HK-ALL-ON  1
   lastRead:
     c0         1568884533.20044
     c16        1568883641.2242
     c17        1568884534.20831
     c18        1568886610.55423
     c19        1568884532.69871
     c2         1568886587.04819
     c3         1568886602.35437
     c4         1568886573.39565
     c5         1568885570.02873
     c6         1568886607.7564
     c7         1568885790.0502
     i0         1568884533.7045
     i13        1568886575.63942
Attributes:
   DbLogInclude 1W-val-.*
   dev-c-defPoll 1
   dev-i-defPoll 1
   dev-timing-sendDelay 0.5
   dev-timing-timeout 3
   event-on-change-reading .*
   obj-c0-map 0:off,1:on
   obj-c0-reading HK2
   obj-c0-set 1
   obj-c1-map 0:off,1:on
   obj-c1-reading HK3
   obj-c1-set 1
   obj-c16-reading 1WConvertT
   obj-c16-set 1
   obj-c17-reading 1WScanBus
   obj-c17-set 1
   obj-c18-reading HK-ALL-ON
   obj-c18-set 1
   obj-c19-reading HK-ALL-OFF
   obj-c19-set 1
   obj-c2-map 0:off,1:on
   obj-c2-reading HK4
   obj-c2-set 1
   obj-c3-map 0:off,1:on
   obj-c3-reading HK5
   obj-c3-set 1
   obj-c4-map 0:off,1:on
   obj-c4-reading HK6
   obj-c4-set 1
   obj-c5-map 0:off,1:on
   obj-c5-reading HK7
   obj-c5-set 1
   obj-c6-map 0:off,1:on
   obj-c6-reading HK8
   obj-c6-set 1
   obj-c7-map 0:off,1:on
   obj-c7-reading HK9
   obj-c7-set 1
   obj-c8-map 0:off,1:on
   obj-c8-reading HK1
   obj-c8-set 1
   obj-c9-map 0:off,1:on
   obj-i0-expr ($val >> 8 )
   obj-i0-reading 1Wcount
   obj-i13-expr ( $val / 2 )
   obj-i13-format %.1f
   obj-i13-poll 1
   obj-i13-reading 1W-val-1
   room       Modbus
   userattr   DbLogInclude dev-c-combine dev-c-defPoll dev-h-combine dev-i-defPoll disable enableControlSet event-on-change-reading obj-c0-map obj-c0-reading obj-c0-set obj-c1-map obj-c1-reading obj-c1-set obj-c16-reading obj-c16-set obj-c17-reading obj-c17-set obj-c18-reading obj-c18-set obj-c19-reading obj-c19-set obj-c2-map obj-c2-reading obj-c2-set obj-c3-map obj-c3-reading obj-c3-set obj-c4-map obj-c4-reading obj-c4-set obj-c5-map obj-c5-reading obj-c5-set obj-c6-map obj-c6-reading obj-c6-set obj-c7-map obj-c7-reading obj-c7-set obj-c8-map obj-c8-reading obj-c8-set obj-c9-map obj-h0-reading obj-h1-reading obj-i0-expr obj-i0-reading obj-i13-expr obj-i13-format obj-i13-poll obj-i13-reading openTimeout verbose
   verbose    3


Mach ich da was falsch oder ist das einfach ein Problem, das bisher nicht aufgetreten ist oder nicht behoben wurde? 


Dankbar für Tipps und Hinweise !

Gruß
Mike

StefanStrobel

Hallo Mike,

schick doch mal einen Auszug aus dem Log bei verbose 5 (sowohl für die physischen als auch für die logischen Devices),
dann finden wir das Problem sicher.

Gruss
    Stefan

gadget

#322
Hallo,

Nach einem Wasserschaden im Keller will ich vor dem Wiederverschliessen der Trocknungslöcher im Estrich einen Feuchtigkeits-Sensor einbringen. Ich hab mir beim Chinamann das hier bestellt: https://www.aliexpress.com/item/32828614172.html (wegen des für diesen Zweck gut geeigneten Sensors).

Das Gerät spricht auch Modbus. Mit einem Serial-to-USB Adapter direkt am fhem Server bekomme ich Temperatur und Feuchtigkeit auch via fhem im Testaufbau ausgelesen.
Ich will aber eigentlich via WLAN die Werte abfragen und dachte mir, ich verwende dazu einen günstigen Konverter (Elfin-EW11):

https://www.aliexpress.com/item/32918253841.html

Bei dem Preis lohnt sich ja kein Selbstbau ...

Wenn ich das ModbusAttr Device von serieller Kommunikation auf TCP umstelle bekomme ich zwar eine Verbindung, aber es kommen keine Daten zurück. Kennt jemand zufällig diesen Konverter oder gibt es günstige Alternativen ?

Grüße,

gadget.


laserrichi

Zitat von: gadget am 26 September 2019, 14:52:08
Wenn ich das ModbusAttr Device von serieller Kommunikation auf TCP umstelle bekomme ich zwar eine Verbindung, aber es kommen keine Daten zurück.

hast du bei der Definition  TCP oder RTU angegeben ?
Ich habe zwar diesen Adapter nicht, aber bei meinen ESPEasy Verbindungen musste ich RTU anstatt TCP als Parameter angeben
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

gadget

Hallo,

Ich hatte beides ohne Erfolg probiert. Ich werde mal einen Versuch mit einen Rasperry Zero W und ser2net starten.

Wie machst Du das mit ESPEasy ? Insbesondere was den elektrischen Part angeht ?

Grüße,

gadget

laserrichi

#325
ich habe an meinen Solarcontroller RS485. Einfach einen TTL RS485 Adapter dazwischen, der mir auch das auf die 3,3V vom ESP bringt. Der hängt einfach an der seriellen vom ESP. Und unter Device einfach den Serial Server eingerichtet.
ESP und der Adapter sind aber teurer als deine Lösung.

Kannst du die Baudrate fix auf einen Wert einstellen ? Eventuell liegt da das Problem.


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

blueberry63

Hallo,

ich benutze das Modul erst seit kurzem (Danke an alle Entwickler) und mir ist aufgefallen, dass die Einstellung für "Intervall" nach einem Neustart von FHEM verloren gehen. Könnte man den Wert für "Intervall" nicht als Attribute setzen?

Gruß
Blueberry63
FHEM auf BBB mit Wheezy: 1x CUL_HM_HM_SCI_3_FM, 1x INSTAR CAM3010, 1x HM-LC-SW1-PL2, 1x HM-LC-Bl1PBU-FM, 1x HM-Sen-MDIR-O, Viessmann Heizung, Gaszähler via GPIO, Klingel via HM-LC-Bl1PBU-FM an FBox, Mailcheck, AVR, XBMC, NanoCUL 433+668 an Raspi per Ethernet, Funksteckdosen (Pollin, IT), Automower

Wzut

IMHO "works as designed" :)
dauerhaftes Intervall beim define angeben :
define <name> ModbusAttr <Id> <Interval>
set <name> überschreibt lediglich diese Vorgabe bis zum nächsten set bzw. Neustart l
Maintainer der Module: MAX, MPD, UbiquitiMP, UbiquitiOut, SIP, BEOK, readingsWatcher

gadget

Zitat von: laserrichi am 26 September 2019, 17:00:20
Kannst du die Baudrate fix auf einen Wert einstellen ?

Ja, kann ich. Und wenn ich den Elfin EW11 passiv gleichzeitig mit dem UARTtoUSB Adapter am Bus betreibe, sehe ich im GUI auch ein- und ausgehende Pakete. Das Problem scheint eher auf der Netzwerkseite zu liegen.

Mein Test mit Pi Zero W und ser2net war erfolgreich, ich werde es wohl so umsetzen und den EW11 beiseite legen. Trotzdem schade, das Elfin Gerät wäre eine wirklich einfache, preisgünstige (<10 EUR) und kompakte Alternative gewesen.

Grüße, gadget


StefanStrobel

Hallo Gadget,

ich denke wenn man noch ein bisschen mehr Aufwand ins Testen steckt, wird es mit dem EW11 doch noch klappen.

1) mit einem Oszi oder auch mit einem weiteren Raspberry mit Fhem und usb-to-RS485-Adapter im passiven Modus könntest Du prüfen, was bei einem Request über WLAN tatsächlich auf der RS485-Seite des EW11 rauskommt. Vielleicht stimmt ja dort die Modbus-ID einfach nicht.

2) mit verbose 5 könntest Du genauer sehen, was zwischen Fhem und dem EW11 per TCP gesprochen wird.

Gruss
   Stefan