Neue Versionen und Support zum Modbus-Modul

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

Vorheriges Thema - Nächstes Thema

StefanStrobel

mach ich.
Ich hoffe noch auf ein paar mehr Tester, die bestätigen, dass durch die neue Version keine neuen Probleme entstehen, dann checke ich es ein.

Gruss
   Stefan

Init

Zitat von: Heiner am 30 Mai 2021, 09:51:35
Hi Init,

wenn ich das richtig sehe kannst Du an der Brilix (hab die gleiche bestellt, ist aber noch nicht geliefert) zwischen modbus und WIFI wählen. Da die Brilix das WIFI Modul verbaut hat wir d das Eingangssignal zum WIFI Modul auch entsprechend stehen müssen.
Da ist vermutlich ein serielles Signal das dann ins WIFI Modul geht.

Kannst du direkt per WIFI auf die IP Adresse per Browser gehen, ist da eine Webseite? Ich bin sicher das man die irgendwie auslesen koennte, das hat dann aber nix mehr mit modbus zu tun und sollte in einen separaten Thread.

Hallo Heiner,

konntest du die Wärmepumpe mittlerweile ansprechen?

Viele Grüße
Marc

Tedious

Hallo zusammen,

kann mir jemand auf die Sprünge helfen? Ich habe eine neue Pelletheizung, eine Herz Condensation Star. Registerbeschreibungen von Herz habe ich da, habe jetzt versucht per Modbusattr lesend zuzugreifen. Im Test die ersten 10 Register.

defmod Heizung ModbusAttr 1 60 192.168.192.86:502 TCP
attr Heizung enableControlSet 1
attr Heizung obj-h00000-reading Kesseltemperatur
attr Heizung obj-h00002-reading Bedarfstemperatur
attr Heizung obj-h00004-reading Kesselstatus
attr Heizung obj-h00006-reading Kesselleistung
attr Heizung obj-h00008-reading Kessel RL-Ist
attr Heizung obj-h00010-reading Kessel RL-Soll
attr Heizung room Heizung

setstate Heizung opened
setstate Heizung 2021-09-13 16:14:49 scan-h00000 hex=00000219, string=...., s=0, s>=0, S=0, S>=0, i=0, i>=0, I=0, I>=0, f=6.72084247699335e-24, f>=7.52497275342427e-43
setstate Heizung 2021-09-13 16:14:51 scan-h00002 hex=00000000, string=...., s=0, s>=0, S=0, S>=0, i=0, i>=0, I=0, I>=0, f=0, f>=0
setstate Heizung 2021-09-13 16:14:53 scan-h00004 hex=00000002, string=...., s=0, s>=0, S=0, S>=0, i=0, i>=0, I=0, I>=0, f=9.4039548065783e-38, f>=2.80259692864963e-45
setstate Heizung 2021-09-13 16:14:55 scan-h00006 hex=00000000, string=...., s=0, s>=0, S=0, S>=0, i=0, i>=0, I=0, I>=0, f=0, f>=0
setstate Heizung 2021-09-13 16:14:57 scan-h00008 hex=00000199, string=...., s=0, s>=0, S=0, S>=0, i=0, i>=0, I=0, I>=0, f=-6.66914368870879e-24, f>=5.7313107190885e-43
setstate Heizung 2021-09-13 16:14:59 scan-h00010 hex=000000fa, string=...., s=0, s>=0, S=0, S>=0, i=0, i>=0, I=0, I>=0, f=-1.66153499473114e+35, f>=3.50324616081204e-43
setstate Heizung 2021-09-20 11:50:54 state opened


so weit, so gut - leider aktualisiert er die Readings nicht. Muss gestehen das sind meine ersten Gehversuche mit Modbus, aber wenn ich die Beschreibung richtig interpretiere sollte er doch alle 60 Sekunden die Readings aktualisieren? Oder stehe ich irgendwo auf dem Schlauch und habe was überlesen/vergessen?

Bin für jeden Tip dankbar,

Grüße Tedious
FHEM auf Proxmox-VM (Intel NUC) mit 4xMapleCUN (433,3x868) und Jeelink, HUE, MiLight, Max!, SonOff, Zigbee, Alexa, uvm...

Adimarantis

Du musst noch def-h-poll auf 1 setzen:

dev-([cdih]-)*defPoll
if set to 1 then all objects of this type will be included in the cyclic update by default.
Raspberry 4 + HM-MOD-RPI-PCB (pivCCU) + RfxTrx433XL + 2xRaspberry 1
Module: 50_Signalbot, 52_I2C_ADS1x1x , 58_RPI_1Wire, (50_SPI_MAX31865)

Tedious

Vielen Dank für das Feedback!

Ist implementiert, leider tut sich aber nichts...

defmod Heizung ModbusAttr 1 60 192.168.192.86:502 TCP
attr Heizung dev-h-defPoll 1
attr Heizung enableControlSet 1
attr Heizung obj-h00000-reading Kesseltemperatur
attr Heizung obj-h00002-reading Bedarfstemperatur
attr Heizung obj-h00004-reading Kesselstatus
attr Heizung obj-h00006-reading Kesselleistung
attr Heizung obj-h00008-reading Kessel RL-Ist
attr Heizung obj-h00010-reading Kessel RL-Soll


Fehlt mir noch etwas?
FHEM auf Proxmox-VM (Intel NUC) mit 4xMapleCUN (433,3x868) und Jeelink, HUE, MiLight, Max!, SonOff, Zigbee, Alexa, uvm...

Adimarantis

Ich habe bei mir auch nichts anderes definiert - allerdings verwende ich Modbus per RS485 (RTU)
Brauchst du bei TCP auch ein Modbus IO Device? Wie ist das definiert?
Wenn du ein "set reread" machst - kriegst du dann neue Werte?
Hast to mal ein "set start" versucht? Vielleicht ist der Timer aus irgendwelchen Gründen angehalten?

Raspberry 4 + HM-MOD-RPI-PCB (pivCCU) + RfxTrx433XL + 2xRaspberry 1
Module: 50_Signalbot, 52_I2C_ADS1x1x , 58_RPI_1Wire, (50_SPI_MAX31865)

StefanStrobel

Hallo,

für Modbus-TCP braucht man kein zusätzliches IO-Device.
Wenn es trotz der bisherigen Tips nicht klappt, dann hilft verbose 5 und ein Blick ins Log.

Gruss
   Stefan

Tedious

#832
Danke für die Info - Verbose hatte ich gar nicht mehr auf dem Schirm :)

Hie die Fehler:

2021.09.27 10:04:13 5:  Heizung: UpdateSetList: setList=reconnect:noArg saveAsModule createAttrsFromParseInfo interval reread:noArg stop:noArg start:noArg close:noArg scanStop:noArg scanModbusObjects inactive active
2021.09.27 10:04:13 5:  Heizung: UpdateSetList: getList=
2021.09.27 10:04:50 4:  Heizung: GetUpdate (V4.4.02 - 31.3.2021) called from Fhem internal timer
2021.09.27 10:04:50 4:  Heizung: UpdateTimer called from GetUpdate with cmd next sets timer to call update function in 60.0 sec at 10:05:50.925, interval 60
2021.09.27 10:04:50 5:  Heizung: CreateUpdateList full object list: h00000 h00002 h00004 h00006 h00008 h00010
2021.09.27 10:04:50 5:  Heizung: CreateUpdateList will request h00000 len 1 Kesseltemperatur
2021.09.27 10:04:50 5:  Heizung: CreateUpdateList will request h00002 len 1 Bedarfstemperatur
2021.09.27 10:04:50 5:  Heizung: CreateUpdateList will request h00004 len 1 Kesselstatus
2021.09.27 10:04:50 5:  Heizung: CreateUpdateList will request h00006 len 1 Kesselleistung
2021.09.27 10:04:50 5:  Heizung: CreateUpdateList will request h00008 len 1 Kessel RL-Ist
2021.09.27 10:04:50 5:  Heizung: CreateUpdateList will request h00010 len 1 Kessel RL-Soll
2021.09.27 10:04:50 4:  Heizung: CombineUpdateHash objHash keys before combine: h00004,h00002,h00010,h00008,h00000,h00006
2021.09.27 10:04:50 5:  Heizung: CombineUpdateHash tries to combine read commands
2021.09.27 10:04:50 5:  Heizung: CombineUpdateHash cant combine h00000 len 1 Kesseltemperatur with h00002 len 1 Bedarfstemperatur, span 3 would be bigger than max 1
2021.09.27 10:04:50 5:  Heizung: CombineUpdateHash cant combine h00002 len 1 Bedarfstemperatur with h00004 len 1 Kesselstatus, span 3 would be bigger than max 1
2021.09.27 10:04:50 5:  Heizung: CombineUpdateHash cant combine h00004 len 1 Kesselstatus with h00006 len 1 Kesselleistung, span 3 would be bigger than max 1
2021.09.27 10:04:50 5:  Heizung: CombineUpdateHash cant combine h00006 len 1 Kesselleistung with h00008 len 1 Kessel RL-Ist, span 3 would be bigger than max 1
2021.09.27 10:04:50 5:  Heizung: CombineUpdateHash cant combine h00008 len 1 Kessel RL-Ist with h00010 len 1 Kessel RL-Soll, span 3 would be bigger than max 1
2021.09.27 10:04:50 5:  Heizung: CombineUpdateHash keys are now h00004,h00002,h00010,h00008,h00000,h00006
2021.09.27 10:04:50 4:  Heizung: GetUpdate will now create requests for h00000 len 1 (Kesseltemperatur), h00002 len 1 (Bedarfstemperatur), h00004 len 1 (Kesselstatus), h00006 len 1 (Kesselleistung), h00008 len 1 (Kessel RL-Ist), h00010 len 1 (Kessel RL-Soll)
2021.09.27 10:04:50 4:  Heizung: DoRequest called from GetUpdate created new request, read buffer empty,
request: id 1, read fc 3 h00000, len 1, tid 252, master device Heizung, reading Kesseltemperatur (getUpdate for Kesseltemperatur len 1)
2021.09.27 10:04:50 5:  Heizung: QueueRequest called from DoRequest with h00000, qlen 0 from master Heizung through io device Heizung
2021.09.27 10:04:50 5:  Heizung: StartQueueTimer called from QueueRequest sets internal timer to process queue in 0.000 seconds
2021.09.27 10:04:50 4:  Heizung: DoRequest called from GetUpdate created new request, read buffer empty,
request: id 1, read fc 3 h00002, len 1, tid 96, master device Heizung, reading Bedarfstemperatur (getUpdate for Bedarfstemperatur len 1)
2021.09.27 10:04:50 5:  Heizung: QueueRequest called from DoRequest with h00002, qlen 1 from master Heizung through io device Heizung
2021.09.27 10:04:50 4:  Heizung: DoRequest called from GetUpdate created new request, read buffer empty,
request: id 1, read fc 3 h00004, len 1, tid 192, master device Heizung, reading Kesselstatus (getUpdate for Kesselstatus len 1)
2021.09.27 10:04:50 5:  Heizung: QueueRequest called from DoRequest with h00004, qlen 2 from master Heizung through io device Heizung
2021.09.27 10:04:50 4:  Heizung: DoRequest called from GetUpdate created new request, read buffer empty,
request: id 1, read fc 3 h00006, len 1, tid 204, master device Heizung, reading Kesselleistung (getUpdate for Kesselleistung len 1)
2021.09.27 10:04:50 5:  Heizung: QueueRequest called from DoRequest with h00006, qlen 3 from master Heizung through io device Heizung
2021.09.27 10:04:50 4:  Heizung: DoRequest called from GetUpdate created new request, read buffer empty,
request: id 1, read fc 3 h00008, len 1, tid 67, master device Heizung, reading Kessel RL-Ist (getUpdate for Kessel RL-Ist len 1)
2021.09.27 10:04:50 5:  Heizung: QueueRequest called from DoRequest with h00008, qlen 4 from master Heizung through io device Heizung
2021.09.27 10:04:50 4:  Heizung: DoRequest called from GetUpdate created new request, read buffer empty,
request: id 1, read fc 3 h00010, len 1, tid 210, master device Heizung, reading Kessel RL-Soll (getUpdate for Kessel RL-Soll len 1)
2021.09.27 10:04:50 5:  Heizung: QueueRequest called from DoRequest with h00010, qlen 5 from master Heizung through io device Heizung
2021.09.27 10:04:50 3:  cm, Send Queue unable to change IODev !
2021.09.27 10:04:50 5:  Heizung: ProcessRequestQueue called from Fhem internal timer as queue:Heizung, qlen 6, request: request: id 1, read fc 3 h00000, len 1, tid 252, master device Heizung, reading Kesseltemperatur (getUpdate for Kesseltemperatur len 1), queued 0.04 secs ago
2021.09.27 10:04:50 5:  Heizung: checkDelays commDelay, last communication with same device was 59.408 secs ago, required delay is 0.1
2021.09.27 10:04:50 5:  Heizung: checkDelays clientSwitchDelay is not relevant
2021.09.27 10:04:50 5:  Heizung: checkDelays sendDelay, last send to same device was 59.425 secs ago, required delay is 0.1
2021.09.27 10:04:50 5:  Heizung: checkDelays busDelayRead, last activity on bus was 59.408 secs ago, required delay is 0
2021.09.27 10:04:50 4:  Heizung: ProcessRequestQueue (V4.4.02 - 31.3.2021) qlen 6, sending 00fc00000006010300000001 via 192.168.192.86:502, read buffer empty,
request: id 1, read fc 3 h00000, len 1, tid 252, master device Heizung, reading Kesseltemperatur (getUpdate for Kesseltemperatur len 1), queued 0.04 secs ago
2021.09.27 10:04:50 5:  Heizung: Send called from ProcessRequestQueue
2021.09.27 10:04:50 5:  DevIo_SimpleWrite Heizung: 00fc00000006010300000001
2021.09.27 10:04:50 5:  Heizung: StartQueueTimer called from ProcessRequestQueue sets internal timer to process queue in 1.000 seconds
2021.09.27 10:04:51 5:  Heizung: readFn buffer: 00fc00000006018303
2021.09.27 10:04:51 5:  Heizung: ParseFrameStart called from ReadFn protocol TCP expecting id 1
2021.09.27 10:04:51 4:  Heizung: ParseFrameStart (TCP, master) extracted id 1, fCode 131, tid 252, dlen 6 and potential data 03
2021.09.27 10:04:51 5:  Heizung: HandleResponse called from ReadFn
2021.09.27 10:04:51 5:  Heizung: ParseResponse called from HandleResponse
2021.09.27 10:04:51 4:  Heizung: HandleResponse got response with error code 83 / 03, illegal data value
2021.09.27 10:04:51 4:  Heizung: HandleResponse done, current frame / read buffer: 00fc00000006018303, id 1, fCode 131, tid 252,
request: id 1, read fc 3 h00000, len 1, tid 252, master device Heizung, reading Kesseltemperatur (getUpdate for Kesseltemperatur len 1), queued 0.08 secs ago, sent 0.03 secs ago,
response: id 1, fc 131, error code 03, len 1
2021.09.27 10:04:51 5:  Heizung: ResetExpect for HandleResponse from response to idle
2021.09.27 10:04:51 5:  Heizung: StartQueueTimer called from HandleResponse sets internal timer to process queue in 0.000 seconds
2021.09.27 10:04:51 5:  Heizung: DropFrame called from ReadFn - drop 00fc00000006018303
2021.09.27 10:04:51 5:  Heizung: ProcessRequestQueue called from Fhem internal timer as queue:Heizung, qlen 5, request: request: id 1, read fc 3 h00002, len 1, tid 96, master device Heizung, reading Bedarfstemperatur (getUpdate for Bedarfstemperatur len 1), queued 0.08 secs ago
2021.09.27 10:04:51 5:  Heizung: checkDelays sendDelay, last send to same device was 0.033 secs ago, required delay is 0.1
2021.09.27 10:04:51 5:  Heizung: checkDelays busDelayRead, last activity on bus was 0.001 secs ago, required delay is 0
2021.09.27 10:04:51 5:  Heizung: checkDelays clientSwitchDelay is not relevant
2021.09.27 10:04:51 5:  Heizung: checkDelays commDelay, last communication with same device was 0.001 secs ago, required delay is 0.1
2021.09.27 10:04:51 4:  Heizung: checkDelays found commDelay not over, set timer to try again in 0.099
2021.09.27 10:04:51 5:  Heizung: ProcessRequestQueue called from Fhem internal timer as queue:Heizung, qlen 5, request: request: id 1, read fc 3 h00002, len 1, tid 96, master device Heizung, reading Bedarfstemperatur (getUpdate for Bedarfstemperatur len 1), queued 0.18 secs ago
2021.09.27 10:04:51 5:  Heizung: checkDelays commDelay, last communication with same device was 0.101 secs ago, required delay is 0.1
2021.09.27 10:04:51 5:  Heizung: checkDelays clientSwitchDelay is not relevant
2021.09.27 10:04:51 5:  Heizung: checkDelays sendDelay, last send to same device was 0.133 secs ago, required delay is 0.1
2021.09.27 10:04:51 5:  Heizung: checkDelays busDelayRead, last activity on bus was 0.101 secs ago, required delay is 0
2021.09.27 10:04:51 4:  Heizung: ProcessRequestQueue (V4.4.02 - 31.3.2021) qlen 5, sending 006000000006010300020001 via 192.168.192.86:502, read buffer empty,
request: id 1, read fc 3 h00002, len 1, tid 96, master device Heizung, reading Bedarfstemperatur (getUpdate for Bedarfstemperatur len 1), queued 0.18 secs ago
2021.09.27 10:04:51 5:  Heizung: Send called from ProcessRequestQueue
2021.09.27 10:04:51 5:  DevIo_SimpleWrite Heizung: 006000000006010300020001
2021.09.27 10:04:51 5:  Heizung: StartQueueTimer called from ProcessRequestQueue sets internal timer to process queue in 1.000 seconds
2021.09.27 10:04:51 5:  Heizung: readFn buffer: 006000000006018303
2021.09.27 10:04:51 5:  Heizung: ParseFrameStart called from ReadFn protocol TCP expecting id 1
2021.09.27 10:04:51 4:  Heizung: ParseFrameStart (TCP, master) extracted id 1, fCode 131, tid 96, dlen 6 and potential data 03
2021.09.27 10:04:51 5:  Heizung: HandleResponse called from ReadFn
2021.09.27 10:04:51 5:  Heizung: ParseResponse called from HandleResponse
2021.09.27 10:04:51 4:  Heizung: HandleResponse got response with error code 83 / 03, illegal data value
2021.09.27 10:04:51 4:  Heizung: HandleResponse done, current frame / read buffer: 006000000006018303, id 1, fCode 131, tid 96,
request: id 1, read fc 3 h00002, len 1, tid 96, master device Heizung, reading Bedarfstemperatur (getUpdate for Bedarfstemperatur len 1), queued 0.20 secs ago, sent 0.02 secs ago,
response: id 1, fc 131, error code 03, len 1
2021.09.27 10:04:51 5:  Heizung: ResetExpect for HandleResponse from response to idle
2021.09.27 10:04:51 5:  Heizung: StartQueueTimer called from HandleResponse sets internal timer to process queue in 0.000 seconds
2021.09.27 10:04:51 5:  Heizung: DropFrame called from ReadFn - drop 006000000006018303
2021.09.27 10:04:51 5:  Heizung: ProcessRequestQueue called from Fhem internal timer as queue:Heizung, qlen 4, request: request: id 1, read fc 3 h00004, len 1, tid 192, master device Heizung, reading Kesselstatus (getUpdate for Kesselstatus len 1), queued 0.20 secs ago
2021.09.27 10:04:51 5:  Heizung: checkDelays busDelayRead, last activity on bus was 0.001 secs ago, required delay is 0
2021.09.27 10:04:51 5:  Heizung: checkDelays sendDelay, last send to same device was 0.019 secs ago, required delay is 0.1
2021.09.27 10:04:51 5:  Heizung: checkDelays commDelay, last communication with same device was 0.001 secs ago, required delay is 0.1
2021.09.27 10:04:51 5:  Heizung: checkDelays clientSwitchDelay is not relevant
2021.09.27 10:04:51 4:  Heizung: checkDelays found commDelay not over, set timer to try again in 0.099
2021.09.27 10:04:51 5:  Heizung: ProcessRequestQueue called from Fhem internal timer as queue:Heizung, qlen 4, request: request: id 1, read fc 3 h00004, len 1, tid 192, master device Heizung, reading Kesselstatus (getUpdate for Kesselstatus len 1), queued 0.30 secs ago
2021.09.27 10:04:51 5:  Heizung: checkDelays busDelayRead, last activity on bus was 0.101 secs ago, required delay is 0
2021.09.27 10:04:51 5:  Heizung: checkDelays sendDelay, last send to same device was 0.119 secs ago, required delay is 0.1
2021.09.27 10:04:51 5:  Heizung: checkDelays commDelay, last communication with same device was 0.101 secs ago, required delay is 0.1
2021.09.27 10:04:51 5:  Heizung: checkDelays clientSwitchDelay is not relevant
2021.09.27 10:04:51 4:  Heizung: ProcessRequestQueue (V4.4.02 - 31.3.2021) qlen 4, sending 00c000000006010300040001 via 192.168.192.86:502, read buffer empty,
request: id 1, read fc 3 h00004, len 1, tid 192, master device Heizung, reading Kesselstatus (getUpdate for Kesselstatus len 1), queued 0.30 secs ago
2021.09.27 10:04:51 5:  Heizung: Send called from ProcessRequestQueue
2021.09.27 10:04:51 5:  DevIo_SimpleWrite Heizung: 00c000000006010300040001
2021.09.27 10:04:51 5:  Heizung: StartQueueTimer called from ProcessRequestQueue sets internal timer to process queue in 1.000 seconds
2021.09.27 10:04:51 5:  Heizung: readFn buffer: 00c000000006018303
2021.09.27 10:04:51 5:  Heizung: ParseFrameStart called from ReadFn protocol TCP expecting id 1
2021.09.27 10:04:51 4:  Heizung: ParseFrameStart (TCP, master) extracted id 1, fCode 131, tid 192, dlen 6 and potential data 03
2021.09.27 10:04:51 5:  Heizung: HandleResponse called from ReadFn
2021.09.27 10:04:51 5:  Heizung: ParseResponse called from HandleResponse
2021.09.27 10:04:51 4:  Heizung: HandleResponse got response with error code 83 / 03, illegal data value
2021.09.27 10:04:51 4:  Heizung: HandleResponse done, current frame / read buffer: 00c000000006018303, id 1, fCode 131, tid 192,
request: id 1, read fc 3 h00004, len 1, tid 192, master device Heizung, reading Kesselstatus (getUpdate for Kesselstatus len 1), queued 0.32 secs ago, sent 0.02 secs ago,
response: id 1, fc 131, error code 03, len 1
2021.09.27 10:04:51 5:  Heizung: ResetExpect for HandleResponse from response to idle
2021.09.27 10:04:51 5:  Heizung: StartQueueTimer called from HandleResponse sets internal timer to process queue in 0.000 seconds
2021.09.27 10:04:51 5:  Heizung: DropFrame called from ReadFn - drop 00c000000006018303
2021.09.27 10:04:51 5:  Heizung: ProcessRequestQueue called from Fhem internal timer as queue:Heizung, qlen 3, request: request: id 1, read fc 3 h00006, len 1, tid 204, master device Heizung, reading Kesselleistung (getUpdate for Kesselleistung len 1), queued 0.32 secs ago
2021.09.27 10:04:51 5:  Heizung: checkDelays busDelayRead, last activity on bus was 0.001 secs ago, required delay is 0
2021.09.27 10:04:51 5:  Heizung: checkDelays sendDelay, last send to same device was 0.017 secs ago, required delay is 0.1
2021.09.27 10:04:51 5:  Heizung: checkDelays commDelay, last communication with same device was 0.001 secs ago, required delay is 0.1
2021.09.27 10:04:51 5:  Heizung: checkDelays clientSwitchDelay is not relevant
2021.09.27 10:04:51 4:  Heizung: checkDelays found commDelay not over, set timer to try again in 0.099
2021.09.27 10:04:51 5:  Heizung: ProcessRequestQueue called from Fhem internal timer as queue:Heizung, qlen 3, request: request: id 1, read fc 3 h00006, len 1, tid 204, master device Heizung, reading Kesselleistung (getUpdate for Kesselleistung len 1), queued 0.42 secs ago
2021.09.27 10:04:51 5:  Heizung: checkDelays commDelay, last communication with same device was 0.101 secs ago, required delay is 0.1
2021.09.27 10:04:51 5:  Heizung: checkDelays clientSwitchDelay is not relevant
2021.09.27 10:04:51 5:  Heizung: checkDelays busDelayRead, last activity on bus was 0.101 secs ago, required delay is 0
2021.09.27 10:04:51 5:  Heizung: checkDelays sendDelay, last send to same device was 0.117 secs ago, required delay is 0.1
2021.09.27 10:04:51 4:  Heizung: ProcessRequestQueue (V4.4.02 - 31.3.2021) qlen 3, sending 00cc00000006010300060001 via 192.168.192.86:502, read buffer empty,
request: id 1, read fc 3 h00006, len 1, tid 204, master device Heizung, reading Kesselleistung (getUpdate for Kesselleistung len 1), queued 0.42 secs ago
2021.09.27 10:04:51 5:  Heizung: Send called from ProcessRequestQueue
2021.09.27 10:04:51 5:  DevIo_SimpleWrite Heizung: 00cc00000006010300060001
2021.09.27 10:04:51 5:  Heizung: StartQueueTimer called from ProcessRequestQueue sets internal timer to process queue in 1.000 seconds
2021.09.27 10:04:51 5:  Heizung: readFn buffer: 00cc00000006018303
2021.09.27 10:04:51 5:  Heizung: ParseFrameStart called from ReadFn protocol TCP expecting id 1
2021.09.27 10:04:51 4:  Heizung: ParseFrameStart (TCP, master) extracted id 1, fCode 131, tid 204, dlen 6 and potential data 03
2021.09.27 10:04:51 5:  Heizung: HandleResponse called from ReadFn
2021.09.27 10:04:51 5:  Heizung: ParseResponse called from HandleResponse
2021.09.27 10:04:51 4:  Heizung: HandleResponse got response with error code 83 / 03, illegal data value
2021.09.27 10:04:51 4:  Heizung: HandleResponse done, current frame / read buffer: 00cc00000006018303, id 1, fCode 131, tid 204,
request: id 1, read fc 3 h00006, len 1, tid 204, master device Heizung, reading Kesselleistung (getUpdate for Kesselleistung len 1), queued 0.46 secs ago, sent 0.04 secs ago,
response: id 1, fc 131, error code 03, len 1
2021.09.27 10:04:51 5:  Heizung: ResetExpect for HandleResponse from response to idle
2021.09.27 10:04:51 5:  Heizung: StartQueueTimer called from HandleResponse sets internal timer to process queue in 0.000 seconds
2021.09.27 10:04:51 5:  Heizung: DropFrame called from ReadFn - drop 00cc00000006018303
2021.09.27 10:04:51 5:  Heizung: ProcessRequestQueue called from Fhem internal timer as queue:Heizung, qlen 2, request: request: id 1, read fc 3 h00008, len 1, tid 67, master device Heizung, reading Kessel RL-Ist (getUpdate for Kessel RL-Ist len 1), queued 0.46 secs ago
2021.09.27 10:04:51 5:  Heizung: checkDelays commDelay, last communication with same device was 0.001 secs ago, required delay is 0.1
2021.09.27 10:04:51 5:  Heizung: checkDelays clientSwitchDelay is not relevant
2021.09.27 10:04:51 5:  Heizung: checkDelays sendDelay, last send to same device was 0.040 secs ago, required delay is 0.1
2021.09.27 10:04:51 5:  Heizung: checkDelays busDelayRead, last activity on bus was 0.001 secs ago, required delay is 0
2021.09.27 10:04:51 4:  Heizung: checkDelays found commDelay not over, set timer to try again in 0.099
2021.09.27 10:04:51 5:  Heizung: ProcessRequestQueue called from Fhem internal timer as queue:Heizung, qlen 2, request: request: id 1, read fc 3 h00008, len 1, tid 67, master device Heizung, reading Kessel RL-Ist (getUpdate for Kessel RL-Ist len 1), queued 0.56 secs ago
2021.09.27 10:04:51 5:  Heizung: checkDelays commDelay, last communication with same device was 0.101 secs ago, required delay is 0.1
2021.09.27 10:04:51 5:  Heizung: checkDelays clientSwitchDelay is not relevant
2021.09.27 10:04:51 5:  Heizung: checkDelays sendDelay, last send to same device was 0.140 secs ago, required delay is 0.1
2021.09.27 10:04:51 5:  Heizung: checkDelays busDelayRead, last activity on bus was 0.101 secs ago, required delay is 0
2021.09.27 10:04:51 4:  Heizung: ProcessRequestQueue (V4.4.02 - 31.3.2021) qlen 2, sending 004300000006010300080001 via 192.168.192.86:502, read buffer empty,
request: id 1, read fc 3 h00008, len 1, tid 67, master device Heizung, reading Kessel RL-Ist (getUpdate for Kessel RL-Ist len 1), queued 0.56 secs ago
2021.09.27 10:04:51 5:  Heizung: Send called from ProcessRequestQueue
2021.09.27 10:04:51 5:  DevIo_SimpleWrite Heizung: 004300000006010300080001
2021.09.27 10:04:51 5:  Heizung: StartQueueTimer called from ProcessRequestQueue sets internal timer to process queue in 1.000 seconds
2021.09.27 10:04:51 5:  Heizung: readFn buffer: 004300000006018303
2021.09.27 10:04:51 5:  Heizung: ParseFrameStart called from ReadFn protocol TCP expecting id 1
2021.09.27 10:04:51 4:  Heizung: ParseFrameStart (TCP, master) extracted id 1, fCode 131, tid 67, dlen 6 and potential data 03
2021.09.27 10:04:51 5:  Heizung: HandleResponse called from ReadFn
2021.09.27 10:04:51 5:  Heizung: ParseResponse called from HandleResponse
2021.09.27 10:04:51 4:  Heizung: HandleResponse got response with error code 83 / 03, illegal data value
2021.09.27 10:04:51 4:  Heizung: HandleResponse done, current frame / read buffer: 004300000006018303, id 1, fCode 131, tid 67,
request: id 1, read fc 3 h00008, len 1, tid 67, master device Heizung, reading Kessel RL-Ist (getUpdate for Kessel RL-Ist len 1), queued 0.58 secs ago, sent 0.02 secs ago,
response: id 1, fc 131, error code 03, len 1
2021.09.27 10:04:51 5:  Heizung: ResetExpect for HandleResponse from response to idle
2021.09.27 10:04:51 5:  Heizung: StartQueueTimer called from HandleResponse sets internal timer to process queue in 0.000 seconds
2021.09.27 10:04:51 5:  Heizung: DropFrame called from ReadFn - drop 004300000006018303
2021.09.27 10:04:51 5:  Heizung: ProcessRequestQueue called from Fhem internal timer as queue:Heizung, qlen 1, request: request: id 1, read fc 3 h00010, len 1, tid 210, master device Heizung, reading Kessel RL-Soll (getUpdate for Kessel RL-Soll len 1), queued 0.58 secs ago
2021.09.27 10:04:51 5:  Heizung: checkDelays sendDelay, last send to same device was 0.019 secs ago, required delay is 0.1
2021.09.27 10:04:51 5:  Heizung: checkDelays busDelayRead, last activity on bus was 0.001 secs ago, required delay is 0
2021.09.27 10:04:51 5:  Heizung: checkDelays commDelay, last communication with same device was 0.001 secs ago, required delay is 0.1
2021.09.27 10:04:51 5:  Heizung: checkDelays clientSwitchDelay is not relevant
2021.09.27 10:04:51 4:  Heizung: checkDelays found commDelay not over, set timer to try again in 0.099
2021.09.27 10:04:51 5:  Heizung: ProcessRequestQueue called from Fhem internal timer as queue:Heizung, qlen 1, request: request: id 1, read fc 3 h00010, len 1, tid 210, master device Heizung, reading Kessel RL-Soll (getUpdate for Kessel RL-Soll len 1), queued 0.68 secs ago
2021.09.27 10:04:51 5:  Heizung: checkDelays busDelayRead, last activity on bus was 0.101 secs ago, required delay is 0
2021.09.27 10:04:51 5:  Heizung: checkDelays sendDelay, last send to same device was 0.119 secs ago, required delay is 0.1
2021.09.27 10:04:51 5:  Heizung: checkDelays commDelay, last communication with same device was 0.101 secs ago, required delay is 0.1
2021.09.27 10:04:51 5:  Heizung: checkDelays clientSwitchDelay is not relevant
2021.09.27 10:04:51 4:  Heizung: ProcessRequestQueue (V4.4.02 - 31.3.2021) qlen 1, sending 00d2000000060103000a0001 via 192.168.192.86:502, read buffer empty,
request: id 1, read fc 3 h00010, len 1, tid 210, master device Heizung, reading Kessel RL-Soll (getUpdate for Kessel RL-Soll len 1), queued 0.68 secs ago
2021.09.27 10:04:51 5:  Heizung: Send called from ProcessRequestQueue
2021.09.27 10:04:51 5:  DevIo_SimpleWrite Heizung: 00d2000000060103000a0001
2021.09.27 10:04:51 5:  Heizung: readFn buffer: 00d200000006018303
2021.09.27 10:04:51 5:  Heizung: ParseFrameStart called from ReadFn protocol TCP expecting id 1
2021.09.27 10:04:51 4:  Heizung: ParseFrameStart (TCP, master) extracted id 1, fCode 131, tid 210, dlen 6 and potential data 03
2021.09.27 10:04:51 5:  Heizung: HandleResponse called from ReadFn
2021.09.27 10:04:51 5:  Heizung: ParseResponse called from HandleResponse
2021.09.27 10:04:51 4:  Heizung: HandleResponse got response with error code 83 / 03, illegal data value
2021.09.27 10:04:51 4:  Heizung: HandleResponse done, current frame / read buffer: 00d200000006018303, id 1, fCode 131, tid 210,
request: id 1, read fc 3 h00010, len 1, tid 210, master device Heizung, reading Kessel RL-Soll (getUpdate for Kessel RL-Soll len 1), queued 0.70 secs ago, sent 0.02 secs ago,
response: id 1, fc 131, error code 03, len 1
2021.09.27 10:04:51 5:  Heizung: ResetExpect for HandleResponse from response to idle
2021.09.27 10:04:51 5:  Heizung: DropFrame called from ReadFn - drop 00d200000006018303


Aber ich komme der Sache näher - sind 32 Bit Register, habe jetzt noch ein  dev-h-defLen 2 hinzugefügt. Jetzt kommen zwar noch keine Werte an (alles 0), aber irgendwas passiert schon mal :)
FHEM auf Proxmox-VM (Intel NUC) mit 4xMapleCUN (433,3x868) und Jeelink, HUE, MiLight, Max!, SonOff, Zigbee, Alexa, uvm...

StefanStrobel

Hallo Tedious,

Das Log zeigt aber noch Requests mit Länge 1 und entsprechend Fehlermeldungen als Antwort von der Heizung.

Gruß
   Stefan

Tedious

Super, vielen Dank! Sorry, MobBus ist für mich völliges Neuland... :-/

Anschließend eine weitere Frage. Die Daten kommen jetzt rein, als Parameter habe ich in analog zu den Beispielen dev-h-defUnpack f> gesetzt. Dementsprechend zeigt das Eventlog jetzt

ModbusAttr Heizung Kesseltemperatur: 2.90934851828516e-37

das Reading ist dementsprechend

Kesseltemperatur 2.90934851828516e-37 2021-09-28 15:34:46

Beim initialen Scan lieferte er mir

scan-h00000
hex=00000219, string=...., s=0, s>=0, S=0, S>=0, i=0, i>=0, I=0, I>=0, f=6.72084247699335e-24, f>=7.52497275342427e-43
2021-09-13 16:14:49


Was ich eigentlich brauche ist der hex=.... Wert als dezimal umgerechnete Darstellung, das wären die Werte die ich benötige. Kannst Du mir hier auch noch auf die Sprünge helfen? Im Moment ist die Def wie folgt:

defmod Heizung ModbusAttr 1 60 192.168.192.86:502 TCP
attr Heizung DbLogExclude .*
attr Heizung dev-h-defLen 2
attr Heizung dev-h-defPoll 1
attr Heizung dev-h-defRevRegs 1
attr Heizung dev-h-defUnpack f>
attr Heizung enableControlSet 1
attr Heizung obj-h00000-reading Kesseltemperatur
attr Heizung obj-h00002-reading Bedarfstemperatur
attr Heizung obj-h00004-reading Kesselstatus
attr Heizung obj-h00006-reading Kesselleistung
attr Heizung obj-h00008-reading Kessel RL-Ist
attr Heizung obj-h00010-reading Kessel RL-Soll
attr Heizung room Heizung


Ich würde gerne für die Hand voll Parameter eine saubere Darstellung finden bevor ich die restlichen Register hinzufüge.

Besten Dank,

Tedious


FHEM auf Proxmox-VM (Intel NUC) mit 4xMapleCUN (433,3x868) und Jeelink, HUE, MiLight, Max!, SonOff, Zigbee, Alexa, uvm...

StefanStrobel

Hallo,

wenn der Hex-Wert der gesuchte Wert ist, dann möchtest Du die beiden Register offenbar nicht als 32-Bit Float interpretieren, sondern als 32-Bit Integer.
Schau Dir mal die entsprechenden Pack- bzw. Unpack-Codes unter https://perldoc.perl.org/functions/pack an.
Vermutlich (wenn es wirklich je zwei Register, also 32 Bit sind) wird es "l" oder "L" sein und nicht "f>"

Gruss
   Stefan

Tedious

Hi,

danke für Deine Hilfe. Leider stehe ich immer noch auf dem Schlauch. QModMaster liefert mir in den Registern die passenden Werte (s. Bild). In Fhem kommt dagegen - egal welche Parameter ich nehme - nur schräges Zeug an. Der Wert im Bild entspricht dem Wert per VPN, nur x10 (also hier 64,1°C).

FHEM auf Proxmox-VM (Intel NUC) mit 4xMapleCUN (433,3x868) und Jeelink, HUE, MiLight, Max!, SonOff, Zigbee, Alexa, uvm...

StefanStrobel

Hallo Tedious,

was ist denn das "schräge Zeug" das ankommt?
Wie sieht denn Deine Konfiguration (unpack, expr, ...) nun aus?
Stimmen denn die Register-Adressen (manche beginnen bei 0 zu zählen, andere bei 1)?
Wie immer hilft ein Log mit verbose 5 um besser zu verstehen, was bei Dir passiert.

Gruss
   Stefan

Tedious

Hallo Stefan,

vielen Dank für Deine Geduld. Ich hab den Schritt vom Schlauch runter hinbekommen, läuft jetzt. Zur Doku für die Nachwelt, falls jemand mal einen Herz Pelletstar Condendation einbinden will hier ein Teil der Konfig als Guideline. Ist noch nicht komplett, aber das Muster ist klar, insofern kann ich jetzt nach und nach alle Parameter reinbauen.

defmod Pelletheizung ModbusAttr 1 60 192.168.192.86:502 TCP
attr Pelletheizung group Pelletheizung
attr Pelletheizung obj-h00000-expr $val/10
attr Pelletheizung obj-h00000-len 2
attr Pelletheizung obj-h00000-poll 1
attr Pelletheizung obj-h00000-reading Kesseltemperatur
attr Pelletheizung obj-h00000-unpack N
attr Pelletheizung obj-h00002-expr $val/10
attr Pelletheizung obj-h00002-len 2
attr Pelletheizung obj-h00002-poll 1
attr Pelletheizung obj-h00002-reading Bedarfstemperatur_Kessel
attr Pelletheizung obj-h00002-unpack N
attr Pelletheizung obj-h00004-len 2
attr Pelletheizung obj-h00004-poll 1
attr Pelletheizung obj-h00004-reading Kesselstatus
attr Pelletheizung obj-h00004-unpack N
attr Pelletheizung obj-h00006-expr $val/10
attr Pelletheizung obj-h00006-len 2
attr Pelletheizung obj-h00006-poll 1
attr Pelletheizung obj-h00006-reading Kesselleistung
attr Pelletheizung obj-h00006-unpack N
attr Pelletheizung obj-h01362-expr $val/10
attr Pelletheizung obj-h01362-len 2
attr Pelletheizung obj-h01362-poll 1
attr Pelletheizung obj-h01362-reading Kollektor-Rücklauf
attr Pelletheizung obj-h01362-unpack N
attr Pelletheizung obj-h01364-expr $val/10
attr Pelletheizung obj-h01364-len 2
attr Pelletheizung obj-h01364-poll 1
attr Pelletheizung obj-h01364-reading Kollektor-Vorlauf
attr Pelletheizung obj-h01364-unpack N
attr Pelletheizung obj-h01366-expr $val/10
attr Pelletheizung obj-h01366-len 2
attr Pelletheizung obj-h01366-poll 1
attr Pelletheizung obj-h01366-reading Speichertemperatur
attr Pelletheizung obj-h01366-unpack N
attr Pelletheizung obj-h01368-reading scan-h01368
attr Pelletheizung obj-h01370-expr $val/10
attr Pelletheizung obj-h01370-len 2
attr Pelletheizung obj-h01370-poll 1
attr Pelletheizung obj-h01370-reading Pumpendrehzahl
attr Pelletheizung obj-h01370-unpack N
attr Pelletheizung obj-h01378-expr $val/10
attr Pelletheizung obj-h01378-len 2
attr Pelletheizung obj-h01378-poll 1
attr Pelletheizung obj-h01378-reading Ertrag-aktuell
attr Pelletheizung obj-h01378-unpack N
attr Pelletheizung room Heizung
FHEM auf Proxmox-VM (Intel NUC) mit 4xMapleCUN (433,3x868) und Jeelink, HUE, MiLight, Max!, SonOff, Zigbee, Alexa, uvm...

mBielemeier

Hallo,

ich habe seit kurzem eine Wallbox von cFos, die angeschlossene Zähler über Modbus auswertet. Num bietet die Wallbox auch einen Modbus-Proxy über TCP an. Mit einem Zähler konnte ich fehlerfrei über ModbusAttr mit der TCP-Definition arbeiten, bei zwei Zählern wurde es etwas instabil, connectete sich aber schnell wieder von selbst. Die dritte ModbusAttr-Definition auf die gleiche Adresse mit dritter ID führt nun dazu, dass ein Zähler sich komplett disconnected.

Damit sich die Modbus-Zugriffe nicht überlagern dachte ich das über die Modbus/ModbusAttr - Kombination zu machen. Dazu habe ich hart kodiert und somit nicht allgemeingültig in 98_Modbus.pm - DefineFn - Zeile 539 $ioHash->{SerialConn} = 1; durch $ioHash->{TCPConn} = 1; ersetzt. Dadurch konnte ich aber die Wallbox (= Modbus-Proxy) mit
defmod ModbusProxy Modbus 192.168.xxx.xxx:4710
definieren und alle Zähler in der Art
defmod ZaehlerAuto ModbusAttr 3 60 TCP
Seitdem gibt es keinen Timeout mehr.

Soweit zum Problem und nun die Frage: Gibt es eine geplante Lösung für das Problem oder ist das eine sinnvolle Lösung (dann natürlich mit der Erkennung Serial/TCP bei der Modbus-Definition)?

Viele Grüße
Manfred
FHEM 6.1 Raspberry 4, CUL868+CUL433 auf ESP8266-Basis, FS20, IT-Steckdosen, ESP8266-MQTT, Zigbee, Shelly