Neue Versionen und Support zum Modbus-Modul

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

Vorheriges Thema - Nächstes Thema

Roger

Zitat von: StefanStrobel am 13 Dezember 2022, 18:42:53
Hallo Roger,
function code 0x42 bzw. 66 existiert nicht im Standard, aber ich könnte das vermutlich ins Modul einbauen.
Ich schau mal ob ich da einen eleganten Weg finde.
Gruss
   Stefan

Hi Stefan,
oh das wäre toll.  ;D
Ich hatte schon mit overrideFCwrite erfolglos versucht es hinzubekommen.
Vielleicht kannst Du ja raw read und write Kommandos einbauen. Nur CRC sollte automatisch gemacht werden und die Antwort irgendwie gespeichert werden.

Na Du wirst schon was zaubern.
//Roger
Zotac, BBB, RPIs mit 10*FHEM
2*HM-LAN, 2*JeeLink, 2*RS485, SignalESP
HomeMatic, PCA301 Komponenten, ModBus: Stromzähler, Fronius WR, Shelly

ChristianA

#1051
Hallo Stefan,

ich habe verbose auf 5 gesetzt, und versucht die relevanten Stellen von der Definition und mit Lücke ab dem letzten gelungenen Versuch. Bei dem Befehl rawDEF bring er leider eine Fehlermeldung.

Das ganze hat bis vor ein paar Tagen schon ein paar Monate funktioniert.

So habe ich es für den Test definiert. Auch so tritt der Fehler auf.

define PMR09 Modbus /dev/ttyUSB0@19200,8,none,1
define ModbusTest ModbusAttr 10 60
attr ModbusTest dev-h-defPoll 1
attr ModbusTest obj-h600-reading T10_Außentemperatur


Im Log stehen folgende Einträge. Das letzte Mal habe ich einen Wert am um 2022.12.13 23:43:12

2022.12.13 20:37:27 5: PMR09: open called from AttrFn, busyOpenDev 0
2022.12.13 20:37:27 4: PMR09: open trying to open connection to /dev/ttyUSB0@19200,8,none,1
2022.12.13 20:37:27 3: Opening PMR09 device /dev/ttyUSB0
2022.12.13 20:37:27 3: Setting PMR09 serial parameters to 19200,8,N,1
2022.12.13 20:37:27 3: PMR09 device opened
2022.12.13 20:43:11 3: ModbusTest: defined master with id 1, protocol RTU and interval 60
2022.12.13 20:43:11 3: ModbusTest: RegisterAtIODev called from SetIODev registers ModbusTest at PMR09 with id 1, MODE master, PROTOCOL RTU
2022.12.13 20:43:11 3: ModbusTest: Notify / Init: using PMR09 for communication
2022.12.13 20:47:40 1: RMDIR: ./restoreDir/save/2022-11-19
2022.12.13 20:47:59 3: UWZ OUT_Unwetter: UWZ.1811 Done fetching data
2022.12.13 20:49:00 3: ModbusTest: defined master with id 10, protocol RTU and interval 60
2022.12.13 20:49:00 3: ModbusTest: RegisterAtIODev called from SetIODev registers ModbusTest at PMR09 with id 10, MODE master, PROTOCOL RTU
2022.12.13 20:49:00 3: ModbusTest: Notify / Init: using PMR09 for communication
2022.12.13 20:56:12 5: PMR09: QueueRequest called from DoRequest with h600, qlen 0 from master ModbusTest through io device PMR09
2022.12.13 20:56:12 5: PMR09: StartQueueTimer called from QueueRequest sets internal timer to process queue in 0.000 seconds
2022.12.13 20:56:12 5: PMR09: ProcessRequestQueue called from Fhem internal timer as queue:PMR09, qlen 1, request: request: id 10, read fc 3 h600, len 1, master device ModbusTest, reading T10_Außentemperatur (getUpdate for T10_Außentemperatur len 1), queued 0.00 secs ago
2022.12.13 20:56:12 5: PMR09: checkDelays sendDelay, last send to same device was never, required delay is 0.1
2022.12.13 20:56:12 5: PMR09: checkDelays busDelayRead, last activity on bus was 82246.113 secs ago, required delay is 0
2022.12.13 20:56:12 5: PMR09: checkDelays clientSwitchDelay is not relevant
2022.12.13 20:56:12 5: PMR09: checkDelays commDelay, last communication with same device was never, required delay is 0.1
2022.12.13 20:56:12 4: PMR09: ProcessRequestQueue (V4.3.15 - 23.1.2021) qlen 1, sending 0a0302580001051a via /dev/ttyUSB0@19200,8,none,1, read buffer empty,
request: id 10, read fc 3 h600, len 1, master device ModbusTest, reading T10_Außentemperatur (getUpdate for T10_Außentemperatur len 1), queued 0.00 secs ago
2022.12.13 20:56:12 5: PMR09: Send called from ProcessRequestQueue
2022.12.13 20:56:12 5: SW: 0a0302580001051a
2022.12.13 20:56:12 5: PMR09: readFn buffer: 03
2022.12.13 20:56:12 5: PMR09: ParseFrameStart called from ReadFn protocol RTU expecting id 10
2022.12.13 20:56:12 5: PMR09: readFn did not see a valid RTU frame start yet, wait for more data
2022.12.13 20:56:12 5: PMR09: readFn buffer: 0302ff
2022.12.13 20:56:12 5: PMR09: ParseFrameStart called from ReadFn protocol RTU expecting id 10
2022.12.13 20:56:12 5: PMR09: readFn did not see a valid RTU frame start yet, wait for more data
2022.12.13 20:56:12 5: PMR09: readFn buffer: 0302ffdd9c2c
2022.12.13 20:56:12 5: PMR09: ParseFrameStart called from ReadFn protocol RTU expecting id 10
2022.12.13 20:56:12 4: PMR09: ParseFrameStart (RTU, master) extracted id 3, fCode 2 and potential data ffdd
2022.12.13 20:56:12 5: PMR09: HandleResponse called from ReadFn
2022.12.13 20:56:12 5: PMR09: ParseResponse called from HandleResponse
2022.12.13 20:56:12 5: PMR09: ParseResponse got incomplete frame. Got 6 but expecting 260 bytes
2022.12.13 20:56:14 3: PMR09: Timeout waiting for a modbus response, current frame / read buffer: 0302ffdd9c2c, id 3, fCode 2,
request: id 10, read fc 3 h600, len 1, master device ModbusTest, reading T10_Außentemperatur (getUpdate for T10_Außentemperatur len 1), queued 2.00 secs ago, sent 2.00 secs ago, error: Modbus ID 3 of response does not match request ID 10, Function code 2 in Modbus response does not match request function code 3, Invalid checksum 9c2c received. Calculated 2009
2022.12.13 20:56:14 5: PMR09: DropFrame called from ResponseTimeout - drop 0302ffdd9c2c
2022.12.13 20:57:12 5: PMR09: QueueRequest called from DoRequest with h600, qlen 0 from master ModbusTest through io device PMR09
2022.12.13 20:57:12 5: PMR09: StartQueueTimer called from QueueRequest sets internal timer to process queue in 0.000 seconds
2022.12.13 20:57:12 5: PMR09: ProcessRequestQueue called from Fhem internal timer as queue:PMR09, qlen 1, request: request: id 10, read fc 3 h600, len 1, master device ModbusTest, reading T10_Außentemperatur (getUpdate for T10_Außentemperatur len 1), queued 0.00 secs ago
2022.12.13 20:57:12 5: PMR09: checkDelays clientSwitchDelay, last read with different id was 59.940 secs ago, required delay is 0
2022.12.13 20:57:12 5: PMR09: checkDelays commDelay, last communication with same device was 59.939 secs ago, required delay is 0.1
2022.12.13 20:57:12 5: PMR09: checkDelays busDelayRead, last activity on bus was 59.940 secs ago, required delay is 0
2022.12.13 20:57:12 5: PMR09: checkDelays sendDelay, last send to same device was 59.998 secs ago, required delay is 0.1
2022.12.13 20:57:12 4: PMR09: ProcessRequestQueue (V4.3.15 - 23.1.2021) qlen 1, sending 0a0302580001051a via /dev/ttyUSB0@19200,8,none,1, read buffer empty,
request: id 10, read fc 3 h600, len 1, master device ModbusTest, reading T10_Außentemperatur (getUpdate for T10_Außentemperatur len 1), queued 0.00 secs ago
2022.12.13 20:57:12 5: PMR09: Send called from ProcessRequestQueue
2022.12.13 20:57:12 5: SW: 0a0302580001051a
2022.12.13 20:57:12 5: PMR09: readFn buffer: 0a
2022.12.13 20:57:12 5: PMR09: ParseFrameStart called from ReadFn protocol RTU expecting id 10
2022.12.13 20:57:12 5: PMR09: readFn did not see a valid RTU frame start yet, wait for more data
2022.12.13 20:57:12 5: PMR09: readFn buffer: 0a0302ff
2022.12.13 20:57:12 5: PMR09: ParseFrameStart called from ReadFn protocol RTU expecting id 10
2022.12.13 20:57:12 4: PMR09: ParseFrameStart (RTU, master) extracted id 10, fCode 3 and potential data
2022.12.13 20:57:12 5: PMR09: HandleResponse called from ReadFn
2022.12.13 20:57:12 5: PMR09: ParseResponse called from HandleResponse
2022.12.13 20:57:12 5: PMR09: readFn buffer: 0a0302ffdd9c
2022.12.13 20:57:12 5: PMR09: ParseFrameStart called from ReadFn protocol RTU expecting id 10
2022.12.13 20:57:12 4: PMR09: ParseFrameStart (RTU, master) extracted id 10, fCode 3 and potential data 02ff
2022.12.13 20:57:12 5: PMR09: HandleResponse called from ReadFn
2022.12.13 20:57:12 5: PMR09: ParseResponse called from HandleResponse
2022.12.13 20:57:12 5: PMR09: ParseResponse got incomplete frame. Got 6 but expecting 7 bytes
2022.12.13 20:57:12 5: PMR09: readFn buffer: 0a0302ffdd9c2c
2022.12.13 20:57:12 5: PMR09: ParseFrameStart called from ReadFn protocol RTU expecting id 10
2022.12.13 20:57:12 4: PMR09: ParseFrameStart (RTU, master) extracted id 10, fCode 3 and potential data 02ffdd
2022.12.13 20:57:12 5: PMR09: HandleResponse called from ReadFn
2022.12.13 20:57:12 5: PMR09: ParseResponse called from HandleResponse
2022.12.13 20:57:12 5: PMR09: CheckChecksum (called from ParseResponse): 9c2c is valid
2022.12.13 20:57:12 5: PMR09: now parsing response data objects, master is ModbusTest relay is undefined
2022.12.13 20:57:12 4: PMR09: HandleResponse done, current frame / read buffer: 0a0302ffdd9c2c, id 10, fCode 3,
request: id 10, read fc 3 h600, len 1, master device ModbusTest, reading T10_Außentemperatur (getUpdate for T10_Außentemperatur len 1), queued 0.07 secs ago, sent 0.07 secs ago,
response: id 10, , fc 3, h . 600, len 1, values ffdd
2022.12.13 20:57:12 5: PMR09: ResetExpect for HandleResponse from response to idle
2022.12.13 20:57:12 5: PMR09: DropFrame called from ReadFn - drop 0a0302ffdd9c2c

...

2022.12.13 23:43:12 5: PMR09: QueueRequest called from DoRequest with h600, qlen 0 from master ModbusTest through io device PMR09
2022.12.13 23:43:12 5: PMR09: StartQueueTimer called from QueueRequest sets internal timer to process queue in 0.000 seconds
2022.12.13 23:43:12 5: PMR09: ProcessRequestQueue called from Fhem internal timer as queue:PMR09, qlen 1, request: request: id 10, read fc 3 h600, len 1, master device ModbusTest, reading T10_Außentemperatur (getUpdate for T10_Außentemperatur len 1), queued 0.00 secs ago
2022.12.13 23:43:12 5: PMR09: checkDelays commDelay, last communication with same device was 59.937 secs ago, required delay is 0.1
2022.12.13 23:43:12 5: PMR09: checkDelays clientSwitchDelay is not relevant
2022.12.13 23:43:12 5: PMR09: checkDelays sendDelay, last send to same device was 59.998 secs ago, required delay is 0.1
2022.12.13 23:43:12 5: PMR09: checkDelays busDelayRead, last activity on bus was 59.938 secs ago, required delay is 0
2022.12.13 23:43:12 4: PMR09: ProcessRequestQueue (V4.3.15 - 23.1.2021) qlen 1, sending 0a0302580001051a via /dev/ttyUSB0@19200,8,none,1, read buffer empty,
request: id 10, read fc 3 h600, len 1, master device ModbusTest, reading T10_Außentemperatur (getUpdate for T10_Außentemperatur len 1), queued 0.00 secs ago
2022.12.13 23:43:12 5: PMR09: Send called from ProcessRequestQueue
2022.12.13 23:43:12 5: SW: 0a0302580001051a
2022.12.13 23:43:12 5: PMR09: readFn buffer: 0a03
2022.12.13 23:43:12 5: PMR09: ParseFrameStart called from ReadFn protocol RTU expecting id 10
2022.12.13 23:43:12 5: PMR09: readFn did not see a valid RTU frame start yet, wait for more data
2022.12.13 23:43:12 5: PMR09: readFn buffer: 0a0302ffdf
2022.12.13 23:43:12 5: PMR09: ParseFrameStart called from ReadFn protocol RTU expecting id 10
2022.12.13 23:43:12 4: PMR09: ParseFrameStart (RTU, master) extracted id 10, fCode 3 and potential data 02
2022.12.13 23:43:12 5: PMR09: HandleResponse called from ReadFn
2022.12.13 23:43:12 5: PMR09: ParseResponse called from HandleResponse
2022.12.13 23:43:12 5: PMR09: ParseResponse got incomplete frame. Got 5 but expecting 7 bytes
2022.12.13 23:43:12 5: PMR09: readFn buffer: 0a0302ffdf1ded
2022.12.13 23:43:12 5: PMR09: ParseFrameStart called from ReadFn protocol RTU expecting id 10
2022.12.13 23:43:12 4: PMR09: ParseFrameStart (RTU, master) extracted id 10, fCode 3 and potential data 02ffdf
2022.12.13 23:43:12 5: PMR09: HandleResponse called from ReadFn
2022.12.13 23:43:12 5: PMR09: ParseResponse called from HandleResponse
2022.12.13 23:43:12 5: PMR09: CheckChecksum (called from ParseResponse): 1ded is valid
2022.12.13 23:43:12 5: PMR09: now parsing response data objects, master is ModbusTest relay is undefined
2022.12.13 23:43:12 4: PMR09: HandleResponse done, current frame / read buffer: 0a0302ffdf1ded, id 10, fCode 3,
request: id 10, read fc 3 h600, len 1, master device ModbusTest, reading T10_Außentemperatur (getUpdate for T10_Außentemperatur len 1), queued 0.07 secs ago, sent 0.07 secs ago,
response: id 10, , fc 3, h . 600, len 1, values ffdf
2022.12.13 23:43:12 5: PMR09: ResetExpect for HandleResponse from response to idle
2022.12.13 23:43:12 5: PMR09: DropFrame called from ReadFn - drop 0a0302ffdf1ded
2022.12.13 23:44:12 5: PMR09: QueueRequest called from DoRequest with h600, qlen 0 from master ModbusTest through io device PMR09
2022.12.13 23:44:12 5: PMR09: StartQueueTimer called from QueueRequest sets internal timer to process queue in 0.000 seconds
2022.12.13 23:44:12 5: PMR09: ProcessRequestQueue called from Fhem internal timer as queue:PMR09, qlen 1, request: request: id 10, read fc 3 h600, len 1, master device ModbusTest, reading T10_Außentemperatur (getUpdate for T10_Außentemperatur len 1), queued 0.00 secs ago
2022.12.13 23:44:12 5: PMR09: checkDelays sendDelay, last send to same device was 59.998 secs ago, required delay is 0.1
2022.12.13 23:44:12 5: PMR09: checkDelays busDelayRead, last activity on bus was 59.939 secs ago, required delay is 0
2022.12.13 23:44:12 5: PMR09: checkDelays commDelay, last communication with same device was 59.938 secs ago, required delay is 0.1
2022.12.13 23:44:12 5: PMR09: checkDelays clientSwitchDelay is not relevant
2022.12.13 23:44:12 4: PMR09: ProcessRequestQueue (V4.3.15 - 23.1.2021) qlen 1, sending 0a0302580001051a via /dev/ttyUSB0@19200,8,none,1, read buffer empty,
request: id 10, read fc 3 h600, len 1, master device ModbusTest, reading T10_Außentemperatur (getUpdate for T10_Außentemperatur len 1), queued 0.00 secs ago
2022.12.13 23:44:12 5: PMR09: Send called from ProcessRequestQueue
2022.12.13 23:44:12 5: SW: 0a0302580001051a
2022.12.13 23:44:14 3: PMR09: Timeout waiting for a modbus response, read buffer empty,
request: id 10, read fc 3 h600, len 1, master device ModbusTest, reading T10_Außentemperatur (getUpdate for T10_Außentemperatur len 1), queued 2.00 secs ago, sent 2.00 secs ago
2022.12.13 23:45:12 5: PMR09: QueueRequest called from DoRequest with h600, qlen 0 from master ModbusTest through io device PMR09
2022.12.13 23:45:12 5: PMR09: StartQueueTimer called from QueueRequest sets internal timer to process queue in 0.000 seconds
2022.12.13 23:45:12 5: PMR09: ProcessRequestQueue called from Fhem internal timer as queue:PMR09, qlen 1, request: request: id 10, read fc 3 h600, len 1, master device ModbusTest, reading T10_Außentemperatur (getUpdate for T10_Außentemperatur len 1), queued 0.00 secs ago
2022.12.13 23:45:12 5: PMR09: checkDelays sendDelay, last send to same device was 60.000 secs ago, required delay is 0.1
2022.12.13 23:45:12 5: PMR09: checkDelays busDelayRead, last activity on bus was 119.943 secs ago, required delay is 0
2022.12.13 23:45:12 5: PMR09: checkDelays commDelay, last communication with same device was 119.942 secs ago, required delay is 0.1
2022.12.13 23:45:12 5: PMR09: checkDelays clientSwitchDelay is not relevant
2022.12.13 23:45:12 4: PMR09: ProcessRequestQueue (V4.3.15 - 23.1.2021) qlen 1, sending 0a0302580001051a via /dev/ttyUSB0@19200,8,none,1, read buffer empty,
request: id 10, read fc 3 h600, len 1, master device ModbusTest, reading T10_Außentemperatur (getUpdate for T10_Außentemperatur len 1), queued 0.00 secs ago
2022.12.13 23:45:12 5: PMR09: Send called from ProcessRequestQueue
2022.12.13 23:45:12 5: SW: 0a0302580001051a
2022.12.13 23:45:14 3: PMR09: Timeout waiting for a modbus response, read buffer empty,
request: id 10, read fc 3 h600, len 1, master device ModbusTest, reading T10_Außentemperatur (getUpdate for T10_Außentemperatur len 1), queued 2.00 secs ago, sent 2.00 secs ago
2022.12.13 23:46:12 5: PMR09: QueueRequest called from DoRequest with h600, qlen 0 from master ModbusTest through io device PMR09
2022.12.13 23:46:12 5: PMR09: StartQueueTimer called from QueueRequest sets internal timer to process queue in 0.000 seconds
2022.12.13 23:46:12 5: PMR09: ProcessRequestQueue called from Fhem internal timer as queue:PMR09, qlen 1, request: request: id 10, read fc 3 h600, len 1, master device ModbusTest, reading T10_Außentemperatur (getUpdate for T10_Außentemperatur len 1), queued 0.00 secs ago
2022.12.13 23:46:12 5: PMR09: checkDelays busDelayRead, last activity on bus was 179.941 secs ago, required delay is 0
2022.12.13 23:46:12 5: PMR09: checkDelays sendDelay, last send to same device was 59.995 secs ago, required delay is 0.1
2022.12.13 23:46:12 5: PMR09: checkDelays commDelay, last communication with same device was 179.940 secs ago, required delay is 0.1
2022.12.13 23:46:12 5: PMR09: checkDelays clientSwitchDelay is not relevant
2022.12.13 23:46:12 4: PMR09: ProcessRequestQueue (V4.3.15 - 23.1.2021) qlen 1, sending 0a0302580001051a via /dev/ttyUSB0@19200,8,none,1, read buffer empty,
request: id 10, read fc 3 h600, len 1, master device ModbusTest, reading T10_Außentemperatur (getUpdate for T10_Außentemperatur len 1), queued 0.00 secs ago
2022.12.13 23:46:12 5: PMR09: Send called from ProcessRequestQueue
2022.12.13 23:46:12 5: SW: 0a0302580001051a
2022.12.13 23:46:14 3: PMR09: Timeout waiting for a modbus response, read buffer empty,


Ich hoffe damit kann man was anfangen. Vielen Dank für die Unterstützung.

*** 16.12.2022 editiert ***
Sowie es aussieht, kommen keine Antworten mehr. Deshalb habe ich mit Wireshark den USB mitgeschnitten. Es kommen schon dort keine Antworten mehr zurück wenn die Daten ausfallen. Werde erst mal den USB-RS232 Adapter austauschen und dann sehe ich weiter.
***

Schönen Gruß
Christian

Roger

Zitat von: StefanStrobel am 13 Dezember 2022, 18:42:53
Hallo Roger,
function code 0x42 bzw. 66 existiert nicht im Standard, aber ich könnte das vermutlich ins Modul einbauen.
Ich schau mal ob ich da einen eleganten Weg finde.
Gruss
   Stefan

Hi Stefan,
hier alle Infos zum Reset der Energy.

Das Kommando hat nur 4 Bytes: <slave-Modbus-ID>+0x42+CRC high byte+CRC low byte
Antwort bei Erfolg:           <slave-Modbus-ID>+0x42+CRC high byte+CRC low byte
Fehler Antwort:               <slave-Modbus-ID>+0xC2+<Error Code>+CRC high byte+CRC low byte


Dann gibt es noch ein Kommando für eine Kalibrierung (keine Ahnung, ob man das braucht).

Das Kommando hat 6 Bytes: 0xF8+0x41+0x37+0x21+CRC high byte+CRC low byte
Antwort bei Erfolg:       0xF8+0x41+0x37+0x21+CRC high byte+CRC low byte
Fehler Antwort:           0xF8+0xC1+<Error Code>+CRC high byte+CRC low byte

Die vermisse ich die Modbus-ID --> muss man wohl probieren.

Wenn Du Fragen hast --> bitte fragen. Ansonsten teste ich gern.  :)

//Roger
Zotac, BBB, RPIs mit 10*FHEM
2*HM-LAN, 2*JeeLink, 2*RS485, SignalESP
HomeMatic, PCA301 Komponenten, ModBus: Stromzähler, Fronius WR, Shelly

StefanStrobel

Hallo Roger,

ich hätte da eine experimentelle Erweiterung des Moduls für Dich.
Da gibt es jetzt ein set sendRaw. Dem kannst Du Hex-Werte übergeben und die werden dann zwischen die Modbus-Id und CRC gesetzt und rausgeschickt.
In Deinem Fall also sendRaw 42
Die Antwort kommt dann in einem Reading mit Namen rawResponse- mit angehängtem function code.
Teste das doch mal bei verbose 5. Ob es klappt kann ich nicht sagen, da ich kein passendes Gerät habe.

Gruss
   Stefan

rasti

Hallo,

ich hab unter Sonstiges hier => https://forum.fhem.de/index.php/topic,128695.0.html  schonmal dieselbe Anfrage gestellt. Leider hat da keiner geantwortet, vielleicht passt es in diesem Unterforum besser.

Ich habe auch einen Waveshare RS485/Modbus <=> Ethernet POE Modul,
den hier => https://www.waveshare.com/wiki/RS485_TO_POE_ETH_(B)
und mehrere Modbuszähler.
5xSDM72DM und 1x SDM230DM

Das hier habe ich verwendet als Code:

defmod System_Gateway_Modbus_TCP Modbus 192.168.178.20:502
attr System_Gateway_Modbus_TCP room Photovoltaik

defmod Haus_Strom_Meter1 ModbusSDM72DMV2 1 180 TCP
attr Haus_Strom_Meter1 event-on-change-reading .*
attr Haus_Strom_Meter1 room Photovoltaik


Konfig des Gateways ist im Screenshot.

Leider sehe ich keine Daten in FHEM.

System_Gateway_Modbus_TCP erscheint als "opened"
Haus_Strom_Meter1 erscheint als "disconnected"

Mit dem Hölldobler-Gateway => https://hoelldobler.net/Gateway/
funktioniert die Auslese, die Modbus-Verkabelung ist also OK.

Ist in der Konfig des Waveshare alles OK ?
Falls ja, wie mache ich mich hier nun auf Fehlersuche ?

Kann hier jemand helfen ?

Viele Grüße

Ralf


Roger

#1055
Zitat von: StefanStrobel am 15 Dezember 2022, 18:27:45
Hallo Roger,
ich hätte da eine experimentelle Erweiterung des Moduls für Dich.
Da gibt es jetzt ein set sendRaw. Dem kannst Du Hex-Werte übergeben und die werden dann zwischen die Modbus-Id und CRC gesetzt und rausgeschickt.
In Deinem Fall also sendRaw 42
Die Antwort kommt dann in einem Reading mit Namen rawResponse- mit angehängtem function code.
Teste das doch mal bei verbose 5. Ob es klappt kann ich nicht sagen, da ich kein passendes Gerät habe.
Gruss  Stefan

Hi Stefan,
es funktioniert - fast.
Also das Kommando wird ausgeführt, da die Energie auf Null gesetzt wurde.
Aber das Reading rawResponse-66 ist leer.

Anbei das Log mit Loglevel 5.
HA_Modbus_1 ist das IO-Device.
HA_PZEM_1 ist das ModbusAttr-Device für das PZEM-003/017 DC-Modul, wo "set HA_PZEM_1 sendRaw 42" ausgeführt wurde.

2022.12.16 21:57:08.003 5: HA_Modbus_1: DropFrame called from ReadFn - drop 01428011
2022.12.16 21:57:07.999 5: HA_Modbus_1: Profiling add 0.025 to sum for Fhem (now is 21:57:07.995, start for Fhem was 21:57:07.970)
2022.12.16 21:57:07.997 5: HA_Modbus_1: Profiling Idle, before Fhem, now is 21:57:07.995, Idle started at 21:56:14.295, Fhem started at 21:57:07.970
2022.12.16 21:57:07.993 5: HA_Modbus_1: ResetExpect for HandleResponse from response to idle
response: id 1, fc 66
request: id 1 fc 999 0, value 3432, master device HA_PZEM_1, reading dummy, queued 0.31 secs ago, sent 0.16 secs ago,
2022.12.16 21:57:07.991 4: HA_Modbus_1: HandleResponse done, current frame / read buffer: 01428011, id 1, fCode 66,
2022.12.16 21:57:07.976 4: HA_Modbus_1: got reply to raw request:
2022.12.16 21:57:07.975 5: HA_Modbus_1: Profiling add 0.020 to sum for Read (now is 21:57:07.970, start for Read was 21:57:07.950)
2022.12.16 21:57:07.972 5: HA_Modbus_1: Profiling Fhem, before Read, now is 21:57:07.970, Fhem started at 21:56:14.276, Read started at 21:57:07.950
2022.12.16 21:57:07.968 5: HA_Modbus_1: CheckChecksum (called from ParseResponse): 8011 is valid
2022.12.16 21:57:07.966 5: HA_Modbus_1: ParseResponse called from HandleResponse
2022.12.16 21:57:07.964 5: HA_Modbus_1: HandleResponse called from ReadFn
2022.12.16 21:57:07.962 4: HA_Modbus_1: ParseFrameStart (RTU, master) extracted id 1, fCode 66 and potential data
2022.12.16 21:57:07.959 5: HA_Modbus_1: ParseFrameStart called from ReadFn protocol RTU expecting id 1
2022.12.16 21:57:07.958 5: HA_Modbus_1: readFn buffer: 01428011
2022.12.16 21:57:07.955 5: HA_Modbus_1: Profiling add 0.095 to sum for Wait (now is 21:57:07.950, start for Wait was 21:57:07.855)
2022.12.16 21:57:07.952 5: HA_Modbus_1: Profiling Read, before Wait, now is 21:57:07.950, Read started at 21:56:14.265, Wait started at 21:57:07.855
2022.12.16 21:57:07.860 5: HA_Modbus_1: Profiling add 0.010 to sum for Send (now is 21:57:07.855, start for Send was 21:57:07.845)
2022.12.16 21:57:07.857 5: HA_Modbus_1: Profiling Wait, before Send, now is 21:57:07.855, Wait started at 21:56:14.162, Send started at 21:57:07.845
2022.12.16 21:57:07.852 5: DevIo_SimpleWrite HA_Modbus_1: 01428011
2022.12.16 21:57:07.851 5: HA_Modbus_1: Profiling add 53.551 to sum for Idle (now is 21:57:07.845, start for Idle was 21:56:14.295)
2022.12.16 21:57:07.848 5: HA_Modbus_1: Profiling Send, before Idle, now is 21:57:07.845, Send started at 21:56:14.156, Idle started at 21:56:14.295
2022.12.16 21:57:07.844 5: HA_Modbus_1: Send called from ProcessRequestQueue
request: id 1 fc 999 0, value 3432, master device HA_PZEM_1, reading dummy, queued 0.16 secs ago
2022.12.16 21:57:07.841 4: HA_Modbus_1: ProcessRequestQueue (V4.4.14 - 14.12.2022) qlen 1, sending 01428011 via /dev/ttyUSB0@9600,8,0,2, read buffer empty,
2022.12.16 21:57:07.838 5: HA_Modbus_1: checkDelays busDelayRead, last activity on bus was 53.567 secs ago, required delay is 1
2022.12.16 21:57:07.836 5: HA_Modbus_1: checkDelays commDelay, last communication with same device was 53.558 secs ago, required delay is 0.7
2022.12.16 21:57:07.835 5: HA_Modbus_1: checkDelays sendDelay, last send to same device was 53.670 secs ago, required delay is 0.7
2022.12.16 21:57:07.833 5: HA_Modbus_1: checkDelays clientSwitchDelay is not relevant
2022.12.16 21:57:07.829 5: HA_Modbus_1: ProcessRequestQueue called from Fhem internal timer as queue:HA_Modbus_1, qlen 1, request: request: id 1 fc 999 0, value 3432, master device HA_PZEM_1, reading dummy, queued 0.14 secs ago
2022.12.16 21:57:07.685 5: HA_Modbus_1: StartQueueTimer called from QueueRequest sets internal timer to process queue in 0.000 seconds
2022.12.16 21:57:07.682 5: HA_Modbus_1: QueueRequest called from ControlSet with 0, qlen 0 from master HA_PZEM_1 through io device HA_Modbus_1


Ich hatte vorher ein "set HA_PZEM_1 stop" ausgeführt, damit das Log sauber ist.

Was brauchst Du noch?

Nachtrag:
Ich finde es verwirrend eine 42 (hex) zu schicken und ein Reading 66 (dec) zu erhalten. Das sollte man gleich machen. (Wobei mir hex besser gefällt.)
Wie sende ich den ein längeres Kommando?
z.B. für die Kalibrierung: 0xF8+0x41+0x37+0x21

//Roger

Zotac, BBB, RPIs mit 10*FHEM
2*HM-LAN, 2*JeeLink, 2*RS485, SignalESP
HomeMatic, PCA301 Komponenten, ModBus: Stromzähler, Fronius WR, Shelly

StefanStrobel

Hallo Ralf,

Zitat von: rasti am 16 Dezember 2022, 19:50:05
defmod System_Gateway_Modbus_TCP Modbus 192.168.178.20:502
attr System_Gateway_Modbus_TCP room Photovoltaik

defmod Haus_Strom_Meter1 ModbusSDM72DMV2 1 180 TCP
attr Haus_Strom_Meter1 event-on-change-reading .*
attr Haus_Strom_Meter1 room Photovoltaik

probier doch erst mal einen einzelnen Zähler abzufragen, indem Du ModbusSDM72DMV2 gleich mit der Adresse des Gateways definierst.

Zitat
Konfig des Gateways ist im Screenshot.
was bedeutet dabei Destination IP?
Zitat
System_Gateway_Modbus_TCP erscheint als "opened"
Haus_Strom_Meter1 erscheint als "disconnected"
hast Du beim Haus_Strom_Meter1 ein IODev?
Zitat
Mit dem Hölldobler-Gateway => https://hoelldobler.net/Gateway/
funktioniert die Auslese, die Modbus-Verkabelung ist also OK.
von Fhem aus?
Zitat
Ist in der Konfig des Waveshare alles OK ?
keine Ahnung - ich kennen das Gateway nicht.
Zitat
Falls ja, wie mache ich mich hier nun auf Fehlersuche ?
Kann hier jemand helfen ?
Ein größerer Auszug aus dem Log bei verbose 5 wäre dafür hilfreich

Gruss
   Stefan

StefanStrobel

Hallo Roger,

anbei eine verbesserte Version, bei der das Reading auch erzeugt wird, wenn nach dem function code keine Daten kommen. Zudem ist das Reading in Hex.

Gruss
   Stefan

Roger

Zitat von: StefanStrobel am 17 Dezember 2022, 12:16:51
Hallo Roger,
anbei eine verbesserte Version, bei der das Reading auch erzeugt wird, wenn nach dem function code keine Daten kommen. Zudem ist das Reading in Hex.
Gruss Stefan

Hi Stefan,
etwas besser.
list IHA_PZEM_1 rawResponse-42
HA_PZEM_1            2022-12-17 19:33:49    no data

Aber der Befehl wird ausgeführt!

Hier das Log:

2022.12.17 19:33:49.677 5: HA_Modbus_1: DropFrame called from ReadFn - drop 01428011
2022.12.17 19:33:49.674 5: HA_Modbus_1: Profiling add 0.162 to sum for Fhem (now is 19:33:49.669, start for Fhem was 19:33:49.507)
2022.12.17 19:33:49.671 5: HA_Modbus_1: Profiling Idle, before Fhem, now is 19:33:49.669, Idle started at 19:33:49.669, Fhem started at 19:33:49.507
2022.12.17 19:33:49.668 5: HA_Modbus_1: ResetExpect for HandleResponse from response to idle
response: id 1, fc 66
request: id 1 fc 999 0, value 3432, master device HA_PZEM_1, reading dummy, queued 0.54 secs ago, sent 0.38 secs ago,
2022.12.17 19:33:49.666 4: HA_Modbus_1: HandleResponse done, current frame / read buffer: 01428011, id 1, fCode 66,
2022.12.17 19:33:49.514 4: HA_Modbus_1: got reply to raw request: fCode 42, no data
2022.12.17 19:33:49.512 5: HA_Modbus_1: Profiling add 0.020 to sum for Read (now is 19:33:49.507, start for Read was 19:33:49.488)
2022.12.17 19:33:49.509 5: HA_Modbus_1: Profiling Fhem, before Read, now is 19:33:49.507, Fhem started at 19:33:49.507, Read started at 19:33:49.488
2022.12.17 19:33:49.506 5: HA_Modbus_1: CheckChecksum (called from ParseResponse): 8011 is valid
2022.12.17 19:33:49.503 5: HA_Modbus_1: ParseResponse called from HandleResponse
2022.12.17 19:33:49.501 5: HA_Modbus_1: HandleResponse called from ReadFn
2022.12.17 19:33:49.499 4: HA_Modbus_1: ParseFrameStart (RTU, master) extracted id 1, fCode 66 and potential data
2022.12.17 19:33:49.497 5: HA_Modbus_1: ParseFrameStart called from ReadFn protocol RTU expecting id 1
2022.12.17 19:33:49.495 5: HA_Modbus_1: readFn buffer: 01428011
2022.12.17 19:33:49.493 5: HA_Modbus_1: Profiling add 0.111 to sum for Wait (now is 19:33:49.488, start for Wait was 19:33:49.377)
2022.12.17 19:33:49.490 5: HA_Modbus_1: Profiling Read, before Wait, now is 19:33:49.488, Read started at 19:33:49.488, Wait started at 19:33:49.377
2022.12.17 19:33:49.382 5: HA_Modbus_1: Profiling add 0.050 to sum for Send (now is 19:33:49.377, start for Send was 19:33:49.327)
2022.12.17 19:33:49.379 5: HA_Modbus_1: Profiling Wait, before Send, now is 19:33:49.377, Wait started at 19:33:49.377, Send started at 19:33:49.327
2022.12.17 19:33:49.374 5: DevIo_SimpleWrite HA_Modbus_1: 01428011
2022.12.17 19:33:49.372 5: HA_Modbus_1: Profiling set new sum for Idle to 29.327
2022.12.17 19:33:49.346 5: HA_Modbus_1: Profiling set reading for Idle to 918.424
2022.12.17 19:33:49.344 5: HA_Modbus_1: Profiling set reading for Read to 0.723
2022.12.17 19:33:49.341 5: HA_Modbus_1: Profiling set reading for Send to 0.495
2022.12.17 19:33:49.339 5: HA_Modbus_1: Profiling set reading for Wait to 7.257
2022.12.17 19:33:49.336 5: HA_Modbus_1: Profiling set reading for Fhem to 5.880
2022.12.17 19:33:49.334 5: HA_Modbus_1: Profiling set reading for Delay to 67.221
2022.12.17 19:33:49.332 5: HA_Modbus_1: Profiling add 147.074 to sum for Send
2022.12.17 19:33:49.331 5: HA_Modbus_1: Profiling pPeriod changed, last pPeriod was 1671301 now 1671302, total diff for Idle is 176.40131187439, 29.327 over the pPeriod
2022.12.17 19:33:49.329 5: HA_Modbus_1: Profiling Send, before Idle, now is 19:33:49.327, Send started at 19:30:52.779, Idle started at 19:30:52.925
2022.12.17 19:33:49.325 5: HA_Modbus_1: Send called from ProcessRequestQueue
request: id 1 fc 999 0, value 3432, master device HA_PZEM_1, reading dummy, queued 0.18 secs ago
2022.12.17 19:33:49.304 4: HA_Modbus_1: ProcessRequestQueue (V4.4.14 - 14.12.2022) qlen 1, sending 01428011 via /dev/ttyUSB0@9600,8,0,2, read buffer empty,
2022.12.17 19:33:49.300 5: HA_Modbus_1: checkDelays clientSwitchDelay is not relevant
2022.12.17 19:33:49.298 5: HA_Modbus_1: checkDelays sendDelay, last send to same device was 176.510 secs ago, required delay is 0.7
2022.12.17 19:33:49.297 5: HA_Modbus_1: checkDelays commDelay, last communication with same device was 176.416 secs ago, required delay is 0.7
2022.12.17 19:33:49.295 5: HA_Modbus_1: checkDelays busDelayRead, last activity on bus was 176.422 secs ago, required delay is 1
2022.12.17 19:33:49.291 5: HA_Modbus_1: ProcessRequestQueue called from Fhem internal timer as queue:HA_Modbus_1, qlen 1, request: request: id 1 fc 999 0, value 3432, master device HA_PZEM_1, reading dummy, queued 0.16 secs ago
2022.12.17 19:33:49.128 5: HA_Modbus_1: StartQueueTimer called from QueueRequest sets internal timer to process queue in 0.000 seconds
2022.12.17 19:33:49.125 5: HA_Modbus_1: QueueRequest called from ControlSet with 0, qlen 0 from master HA_PZEM_1 through io device HA_Modbus_1


Vielen Dank für Deine Mühe.
//Roger
Zotac, BBB, RPIs mit 10*FHEM
2*HM-LAN, 2*JeeLink, 2*RS485, SignalESP
HomeMatic, PCA301 Komponenten, ModBus: Stromzähler, Fronius WR, Shelly

StefanStrobel

Hallo Roger,

Das Gerät schickt als Antwort nur den function code ohne Daten zurück. Deshalb no data.

Gruss
   Stefan

Roger

#1060
Zitat von: StefanStrobel am 17 Dezember 2022, 20:46:34
Hallo Roger,
Das Gerät schickt als Antwort nur den function code ohne Daten zurück. Deshalb no data.
Gruss  Stefan

Hi Stefan,
OK verstanden.
Ich habe mal versucht andere FC zu schicken - aber da scheint keine Antwort zu erfolgen, wohl auch keine Fehlermeldung.

Wie schicke ich denn mehrere Bytes mit sendRaw?
Zur Vollständigkeit hätte ich gern noch die Kalibrierung mit : 0xF8+0x41+0x37+0x21
(Eventuell ist mit F8 die Modbus ID gemeint - muss ich aber probieren.)

Edit
Es erfolgt doch eine Fehlerantwort. Diese wird nur nicht in ein Reading geschrieben, da sie nicht mit dem ursprünglichen fc kommt sondern mit C1 (193 dec).
Log:

2022.12.17 22:27:45.858 5: HA_Modbus_1: DropFrame called from ReadFn - drop 01c1033191
2022.12.17 22:27:45.855 5: HA_Modbus_1: Profiling add 0.012 to sum for Fhem (now is 22:27:45.851, start for Fhem was 22:27:45.838)
2022.12.17 22:27:45.852 5: HA_Modbus_1: Profiling Idle, before Fhem, now is 22:27:45.851, Idle started at 22:27:02.599, Fhem started at 22:27:45.838
2022.12.17 22:27:45.849 5: HA_Modbus_1: ResetExpect for HandleResponse from response to idle
response: id 1, fc 193, error code 03
request: id 1 fc 999 0, value 343133373231, master device HA_PZEM_1, reading dummy, queued 0.62 secs ago, sent 0.48 secs ago,
2022.12.17 22:27:45.847 4: HA_Modbus_1: HandleResponse done, current frame / read buffer: 01c1033191, id 1, fCode 193,
2022.12.17 22:27:45.844 4: HA_Modbus_1: HandleResponse got response with error code c1 / 03, illegal data value
2022.12.17 22:27:45.843 5: HA_Modbus_1: Profiling add 0.020 to sum for Read (now is 22:27:45.838, start for Read was 22:27:45.818)
2022.12.17 22:27:45.840 5: HA_Modbus_1: Profiling Fhem, before Read, now is 22:27:45.838, Fhem started at 22:27:02.555, Read started at 22:27:45.818
2022.12.17 22:27:45.836 5: HA_Modbus_1: CheckChecksum (called from ParseResponse): 3191 is valid
2022.12.17 22:27:45.834 5: HA_Modbus_1: ParseResponse called from HandleResponse
2022.12.17 22:27:45.832 5: HA_Modbus_1: HandleResponse called from ReadFn
2022.12.17 22:27:45.830 4: HA_Modbus_1: ParseFrameStart (RTU, master) extracted id 1, fCode 193 and potential data 03
2022.12.17 22:27:45.828 5: HA_Modbus_1: ParseFrameStart called from ReadFn protocol RTU expecting id 1
2022.12.17 22:27:45.826 5: HA_Modbus_1: readFn buffer: 01c1033191
2022.12.17 22:27:45.824 5: HA_Modbus_1: Profiling add 0.423 to sum for Wait (now is 22:27:45.818, start for Wait was 22:27:45.396)
2022.12.17 22:27:45.821 5: HA_Modbus_1: Profiling Read, before Wait, now is 22:27:45.818, Read started at 22:27:02.547, Wait started at 22:27:45.396
2022.12.17 22:27:45.400 5: HA_Modbus_1: Profiling add 0.010 to sum for Send (now is 22:27:45.396, start for Send was 22:27:45.386)
2022.12.17 22:27:45.398 5: HA_Modbus_1: Profiling Wait, before Send, now is 22:27:45.396, Wait started at 22:27:02.471, Send started at 22:27:45.386
2022.12.17 22:27:45.392 5: DevIo_SimpleWrite HA_Modbus_1: 0141372187e4
2022.12.17 22:27:45.391 5: HA_Modbus_1: Profiling add 42.787 to sum for Idle (now is 22:27:45.386, start for Idle was 22:27:02.599)
2022.12.17 22:27:45.388 5: HA_Modbus_1: Profiling Send, before Idle, now is 22:27:45.386, Send started at 22:27:02.466, Idle started at 22:27:02.599
2022.12.17 22:27:45.384 5: HA_Modbus_1: Send called from ProcessRequestQueue
request: id 1 fc 999 0, value 343133373231, master device HA_PZEM_1, reading dummy, queued 0.15 secs ago
2022.12.17 22:27:45.382 4: HA_Modbus_1: ProcessRequestQueue (V4.4.14 - 14.12.2022) qlen 1, sending 0141372187e4 via /dev/ttyUSB0@9600,8,0,2, read buffer empty,
2022.12.17 22:27:45.378 5: HA_Modbus_1: checkDelays sendDelay, last send to same device was 42.901 secs ago, required delay is 0.7
2022.12.17 22:27:45.376 5: HA_Modbus_1: checkDelays clientSwitchDelay is not relevant
2022.12.17 22:27:45.375 5: HA_Modbus_1: checkDelays busDelayRead, last activity on bus was 42.826 secs ago, required delay is 1
2022.12.17 22:27:45.373 5: HA_Modbus_1: checkDelays commDelay, last communication with same device was 42.819 secs ago, required delay is 0.7
2022.12.17 22:27:45.370 5: HA_Modbus_1: ProcessRequestQueue called from Fhem internal timer as queue:HA_Modbus_1, qlen 1, request: request: id 1 fc 999 0, value 343133373231, master device HA_PZEM_1, reading dummy, queued 0.14 secs ago
2022.12.17 22:27:45.228 5: HA_Modbus_1: StartQueueTimer called from QueueRequest sets internal timer to process queue in 0.000 seconds
2022.12.17 22:27:45.225 5: HA_Modbus_1: QueueRequest called from ControlSet with 0, qlen 0 from master HA_PZEM_1 through io device HA_Modbus_1


//Roger
Zotac, BBB, RPIs mit 10*FHEM
2*HM-LAN, 2*JeeLink, 2*RS485, SignalESP
HomeMatic, PCA301 Komponenten, ModBus: Stromzähler, Fronius WR, Shelly

rasti

Hallo Stefan,

vielen Dank es funzt nun !

Zitat von: StefanStrobel am 17 Dezember 2022, 11:19:24
Hallo Ralf,
probier doch erst mal einen einzelnen Zähler abzufragen, indem Du ModbusSDM72DMV2 gleich mit der Adresse des Gateways definierst.

Genau das war der richtige Hinweis, es funktioniert  ;D ;D ;D

define Haus_Strom_Meter1 ModbusSDM72DMV2 1 60 192.168.178.20:502 TCP
attr Haus_Strom_Meter1 room Photovoltaik

define Haus_Strom_Meter2 ModbusSDM72DMV2 2 60 192.168.178.20:502 TCP
attr Haus_Strom_Meter2 room Photovoltaik

define Haus_Strom_Meter3 ModbusSDM72DMV2 3 60 192.168.178.20:502 TCP
attr Haus_Strom_Meter3 room Photovoltaik

define Haus_Strom_Meter4 ModbusSDM72DMV2 4 60 192.168.178.20:502 TCP
attr Haus_Strom_Meter4 room Photovoltaik

define Haus_Strom_Meter5 ModbusSDM72DMV2 5 60 192.168.178.20:502 TCP
attr Haus_Strom_Meter5 room Photovoltaik

define Haus_Strom_Meter6 ModbusSDM72DMV2 1 60 192.168.178.20:502 TCP
attr Haus_Strom_Meter1 room Photovoltaik



Zitat
was bedeutet dabei Destination IP?

Gute Frage, keine Ahnung. Geht jetzt jedenfalls mit genau der Einstellung im Screenshot und dem obigen Code. :)

Übrigens habe ich 3phasige SDM72 und 1phasige SDM230 gemischt, geht alles mit o.g. SDM72 Modul, weil die Registerbelegung gleich ist.

rasti

Hier ein wenig Code :

define Haus_Strom_Meter5 ModbusSDM72DMV2 5 60 192.168.178.20:502 TCP
attr Haus_Strom_Meter5 userattr stateFormat
attr Haus_Strom_Meter5 alias 5 - Wärmepumpe
attr Haus_Strom_Meter5 room Photovoltaik
attr Haus_Strom_Meter5 stateFormat {sprintf("Energy: %.0f kWh", (ReadingsVal($name,"Energy_import__kWh",0) ) )." / Power:". sprintf("%.0f W", ReadingsVal($name,"Power_Sum__W",0)). " / L1:" . sprintf("%.0f W", ReadingsVal($name,"Power_L1__W",0)). " / L2:" . sprintf("%.0f W", ReadingsVal($name,"Power_L2__W",0)). " / L3:" . sprintf("%.0f W", ReadingsVal($name,"Power_L3__W",0))}

define Haus_Strom_Meter6 ModbusSDM72DMV2 6 60 192.168.178.20:502 TCP
attr Haus_Strom_Meter6 userattr stateFormat
attr Haus_Strom_Meter6 alias 6 - Klima Wohnzimmer
attr Haus_Strom_Meter6 room Photovoltaik
attr Haus_Strom_Meter6 stateFormat {sprintf("Energy: %.0f kWh", (ReadingsVal($name,"Energy_import__kWh",0) ) )." / Power:". sprintf("%.0f W", ReadingsVal($name,"Power_L1__W",0))}



Haus_Strom_Meter5 ist für SDM72, Haus_Strom_Meter6 ist ein SDM230




StefanStrobel

Zitat von: Roger am 17 Dezember 2022, 22:33:04
Wie schicke ich denn mehrere Bytes mit sendRaw?
Zur Vollständigkeit hätte ich gern noch die Kalibrierung mit : 0xF8+0x41+0x37+0x21
(Eventuell ist mit F8 die Modbus ID gemeint - muss ich aber probieren.)

Edit
Es erfolgt doch eine Fehlerantwort. Diese wird nur nicht in ein Reading geschrieben, da sie nicht mit dem ursprünglichen fc kommt sondern mit C1 (193 dec).

Hallo Roger,

mehrere Bytes einfach als Hex-String: F8413721
wegen der Fehlermeldung müsste ich das ganze aber evt. doch noch mal umbauen.
Evt. als sendFC, damit man explizit einen function code setzen kann und die Antwort bzw. der zugehörige Fehler erkennbar ist.
Oder sogar als Definition des function codes mit Informationen zum Parsen ...

Gruss
   Stefan

Roger

Zitat von: StefanStrobel am 18 Dezember 2022, 08:56:54
Hallo Roger,
mehrere Bytes einfach als Hex-String: F8413721
wegen der Fehlermeldung müsste ich das ganze aber evt. doch noch mal umbauen.
Evt. als sendFC, damit man explizit einen function code setzen kann und die Antwort bzw. der zugehörige Fehler erkennbar ist.
Oder sogar als Definition des function codes mit Informationen zum Parsen ...
Gruss Stefan

Hi Stefan,
in diese Richtung gingen auch meine Überlegungen.  :)
So ein sendRaw ist in Modbus als IO besser aufgehoben. Dann aber als wirkliches RAW (ohne Modbus-ID, aber schon mit CRC?).
Dort könnten dann ev. nicht zuordenbare Empfänge (z.B. C1, C2) in Readings abgelegt werden.

Das sendFC wie bisher in ModbusAttr mit den Empfangs-Readings ResponseFC-xx.

Was hältst Du davon? Soll ja für viele User nutzbar sein und Mehrwert bringen (z.B. zum testen/probieren).

//Roger
Zotac, BBB, RPIs mit 10*FHEM
2*HM-LAN, 2*JeeLink, 2*RS485, SignalESP
HomeMatic, PCA301 Komponenten, ModBus: Stromzähler, Fronius WR, Shelly