Auslesen FINDER RS485 Energie Zweirichtungszähler

Begonnen von R1F800, 24 Oktober 2024, 12:10:25

Vorheriges Thema - Nächstes Thema

R1F800

Hallo Zusammen.

Ich stehe gerade auf dem Schlauch.
Ich möchte meinen an den PI RS485 HAT angeschlossenen FINDER Zweirichtungszähler auslesen.

Das RS485 Device ist angelegt, somit ist die Schnittstelle zum Modbus ja etabliert.

defmod ModbusRS485 Modbus /dev/ttyUSB0@9600
attr ModbusRS485 room interfaces

setstate ModbusRS485 opened
setstate ModbusRS485 2024-10-24 11:48:46 state opened

JETZT wird es schwierig, WIE bekomme ich die einzelnen Daten aus dem Finder abgefragt?

Summende Grüße
Ingo

R1F800

#1
Keiner, der mir weiterhelfen kann?

Fehlt das Device mit modbusattr ?
Die Doku zu dem Teil verstehe ich nicht wirklich.
ich müsste doch zuerst auf den Modbus zum jeweiligen register raussenden, das ich auslesen will oder?

defmod FinderEnergiezaehler ModbusAttr 3 60 RTU
attr FinderEnergiezaehler alias Finder Zweirichtungs Zähler
attr FinderEnergiezaehler comment Finder 7M.38
attr FinderEnergiezaehler dev-h-defLen 2
attr FinderEnergiezaehler dev-h-defPoll 1
attr FinderEnergiezaehler dev-h-defUnpack N
attr FinderEnergiezaehler dev-timing-commDelay 0.1
attr FinderEnergiezaehler dev-timing-timeout 2
attr FinderEnergiezaehler enableControlSet 1
attr FinderEnergiezaehler event-on-change-reading .*
attr FinderEnergiezaehler icon stromzaehler_icon@green
attr FinderEnergiezaehler obj-i32752-len 1
attr FinderEnergiezaehler obj-i32752-reading Energy Counter n1
attr FinderEnergiezaehler room interfaces
attr FinderEnergiezaehler verbose 5
attr FinderEnergiezaehler webCmd reread

1) Ist die ID aus der Deviceanlage ModbusAttr frei wählbar?
2) Jetzt die spezifischeren Fragen > die i### Variablen, sind das die Register im auszulesenden Gerät?
UND wie biege ich diese Attribute dem Device bei? Über die Weboberfläche kann ich das nicht > geht nur via edit der CFG

Hier mal das LOG
024.10.27 16:59:03 1: FinderEnergiezaehler: Can't connect to 33:502: connect to http://33:502 timed out
2024.10.27 17:00:38 5: FinderEnergiezaehler: UpdateSetList: setList=reconnect:noArg saveAsModule createAttrsFromParseInfo interval reread:noArg stop:noArg start:noArg close:noArg scanStop:noArg scanModbusObjects sendRaw scanModbusId inactive active
2024.10.27 17:00:38 5: FinderEnergiezaehler: UpdateSetList: getList=
2024.10.27 17:01:07 4: FinderEnergiezaehler: GetUpdate (V4.5.6 - 7.11.2023) called from Fhem internal timer
2024.10.27 17:01:07 4: FinderEnergiezaehler: UpdateTimer called from GetUpdate with cmd next sets timer to call update function in 300.0 sec at 17:06:07.454, interval 300
2024.10.27 17:01:07 5: FinderEnergiezaehler: CreateUpdateHash full object list: i32752 i32754 i32756
2024.10.27 17:01:07 4: FinderEnergiezaehler: CombineUpdateHash objHash keys before combine:
2024.10.27 17:01:07 5: FinderEnergiezaehler: CombineUpdateHash tries to combine read commands
2024.10.27 17:01:07 5: FinderEnergiezaehler: CombineUpdateHash keys are now
2024.10.27 17:01:07 4: FinderEnergiezaehler: GetUpdate will now create requests for
2024.10.27 17:06:07 4: FinderEnergiezaehler: GetUpdate (V4.5.6 - 7.11.2023) called from Fhem internal timer
2024.10.27 17:06:07 4: FinderEnergiezaehler: UpdateTimer called from GetUpdate with cmd next sets timer to call update function in 300.0 sec at 17:11:07.481, interval 300
2024.10.27 17:06:07 5: FinderEnergiezaehler: CreateUpdateHash full object list: i32752 i32754 i32756
2024.10.27 17:06:07 4: FinderEnergiezaehler: CombineUpdateHash objHash keys before combine:
2024.10.27 17:06:07 5: FinderEnergiezaehler: CombineUpdateHash tries to combine read commands
2024.10.27 17:06:07 5: FinderEnergiezaehler: CombineUpdateHash keys are now
2024.10.27 17:06:07 4: FinderEnergiezaehler: GetUpdate will now create requests for
2024.10.27 17:11:07 4: FinderEnergiezaehler: GetUpdate (V4.5.6 - 7.11.2023) called from Fhem internal timer
2024.10.27 17:11:07 4: FinderEnergiezaehler: UpdateTimer called from GetUpdate with cmd next sets timer to call update function in 300.0 sec at 17:16:07.483, interval 300
2024.10.27 17:11:07 5: FinderEnergiezaehler: CreateUpdateHash full object list: i32752 i32754 i32756
2024.10.27 17:11:07 4: FinderEnergiezaehler: CombineUpdateHash objHash keys before combine:
2024.10.27 17:11:07 5: FinderEnergiezaehler: CombineUpdateHash tries to combine read commands
2024.10.27 17:11:07 5: FinderEnergiezaehler: CombineUpdateHash keys are now
2024.10.27 17:11:07 4: FinderEnergiezaehler: GetUpdate will now create requests for

2024.10.27 19:38:40 5: FinderEnergiezaehler: UpdateSetList: setList=reconnect:noArg saveAsModule createAttrsFromParseInfo interval reread:noArg stop:noArg start:noArg close:noArg scanStop:noArg scanModbusObjects sendRaw scanModbusId inactive active
2024.10.27 19:38:40 5: FinderEnergiezaehler: UpdateSetList: getList=
Summende Grüße
Ingo

Prof. Dr. Peter Henning

Bitte verschieben ins Unterforum "Verbrauchsmessung"

pah

StefanStrobel

Hallo R1F800,

Mit
define ModbusRS485 Modbus /dev/ttyUSB0@9600

Legst Du das IO-Device fest. Das muss zur Schnittstelle und zu den Kommunikationseinstellungen passen. Wenn Dein Zähler nicht mit 9600, 8, N, 1 kommuniziert, dann wird es nicht klappen. Die korrekten Angaben sollten im Handbuch Deines Zählers stehen.

Dann brauchst Du ein logisches Device, in dem die Modbus-Id, die Register Deines Zählers mit der Art der Kodierung, Länge etc. angegeben werden. Auch diese Werte sollten im Handbuch des Zählers stehen. Wenn Die Modbus-Id nicht stimmt, antwortet der Zähler nicht. Ebenso kommt nichts sinnvolles wenn die Register-Adressen etc. nicht stimmen.

Define FinderEnergiezaehler ModbusAttr 3 60 RTU

Sieht nicht falsch aus, sofern Dein Zähler wirklich Id 3 verwendet und das Modbus-RTU-Protokoll spricht.

Dein Log-Auszug beginnt aber gleich mit einer Fehlermeldung, die nicht zu der geposteten Konfiguration passt.

FinderEnergiezaehler: Can't connect to 33:502: connect to http://33:502 timed out

sieht so aus als ob Du mit Modbus-TCP ein Gerät mit Namen 33 auf Port 502 ansprechen wolltest und eben nicht über die serielle Schnittstelle und Modbus-RTU.

Gruß
   Stefan



R1F800

#4
Hm. OK direkt mehrere Probleme auf ein Mal.

der Finder 7M.38 hat als Datenblattangabe  "Frame" 8,N,2; "Adresse" 33 und RTU Modbus.
defmod ModbusRS485 Modbus /dev/ttyUSB0@19200,8,N,2  << der RS485 ist zwar nicht via USB sonder via HAT über UART angeklemmt, aber das sollte ja kein Problem sein.

die ID habe ich dann mal an die Adresse angepasst. Das hatte ich so nicht aus der Doku verstanden.
defmod FinderEnergiezaehler ModbusAttr 33 60 RTU
Immerhin kommt die Kommunikation jetzt schon mal weiter:
2024.10.28 16:37:49 4: FinderEnergiezaehler: GetIOHash (called from NotifyFn) did not find valid IODev hash key, calling SetIODev now
2024.10.28 16:37:49 5: FinderEnergiezaehler: SetIODev called from GetIOHash
2024.10.28 16:37:49 4: FinderEnergiezaehler: RegisterAtIODev called from SetIODev registers FinderEnergiezaehler at ModbusRS485 with id 33, MODE master, PROTOCOL RTU
2024.10.28 16:37:49 4: FinderEnergiezaehler: Notify / Init: using ModbusRS485 for communication
2024.10.28 16:37:49 4: FinderEnergiezaehler: UpdateTimer called from NotifyFn with cmd start sets timer to call update function in 0.0 sec at 16:37:49.851, interval 60
2024.10.28 16:37:50 4: FinderEnergiezaehler: GetUpdate (V4.5.6 - 7.11.2023) called from Fhem internal timer
2024.10.28 16:37:50 4: FinderEnergiezaehler: UpdateTimer called from GetUpdate with cmd next sets timer to call update function in 60.0 sec at 16:38:50.304, interval 60
2024.10.28 16:37:50 5: FinderEnergiezaehler: CreateUpdateHash full object list: i30406 i32752
2024.10.28 16:37:50 4: FinderEnergiezaehler: CombineUpdateHash objHash keys before combine:
2024.10.28 16:37:50 5: FinderEnergiezaehler: CombineUpdateHash tries to combine read commands
2024.10.28 16:37:50 5: FinderEnergiezaehler: CombineUpdateHash keys are now
2024.10.28 16:37:50 4: FinderEnergiezaehler: GetUpdate will now create requests for
2024.10.28 16:37:50 5: FinderEnergiezaehler: UpdateSetList: setList=reconnect:noArg saveAsModule createAttrsFromParseInfo interval reread:noArg stop:noArg start:noArg close:noArg scanStop:noArg scanModbusObjects sendRaw scanModbusId inactive active
2024.10.28 16:37:50 5: FinderEnergiezaehler: UpdateSetList: getList=
2024.10.28 16:38:50 4: FinderEnergiezaehler: GetUpdate (V4.5.6 - 7.11.2023) called from Fhem internal timer
2024.10.28 16:38:50 4: FinderEnergiezaehler: UpdateTimer called from GetUpdate with cmd next sets timer to call update function in 60.0 sec at 16:39:50.306, interval 60
2024.10.28 16:38:50 5: FinderEnergiezaehler: CreateUpdateHash full object list: i30406 i32752
2024.10.28 16:38:50 4: FinderEnergiezaehler: CombineUpdateHash objHash keys before combine:
2024.10.28 16:38:50 5: FinderEnergiezaehler: CombineUpdateHash tries to combine read commands
2024.10.28 16:38:50 5: FinderEnergiezaehler: CombineUpdateHash keys are now
2024.10.28 16:38:50 4: FinderEnergiezaehler: GetUpdate will now create requests for
2024.10.28 16:39:50 4: FinderEnergiezaehler: GetUpdate (V4.5.6 - 7.11.2023) called from Fhem internal timer
 

die beiden I Register sind eigentlich :

i30406 & i30407  (32bit floating point single precision)
i32752 & i32753  (signed long value 32 bit)

die müssten ja eigentlich dann konkatiniert werden ?
attr PWP obj-i30406-unpack f>
Summende Grüße
Ingo

StefanStrobel

Jetzt musst Du die Input-Register auch noch abfragen. Bisher hast Du mit dev-h-defPoll zwar alle Holding-Register zur Abfrage festgelegt, nicht aber die Input-Register. Das wäre dev-i-defPoll.

Gruß
  Stefan

StefanStrobel

Und wenn zwei Input-Register zusammen einen 32-Bit-Float-Wert enthalten, dann musst Du die kleinere Adresse mit Len 2 angeben.

R1F800

#7
Den Zusammenhang hatte ich so noch nicht in der Doku gesehen.

Zitat von: StefanStrobel am 29 Oktober 2024, 15:14:29Und wenn zwei Input-Register zusammen einen 32-Bit-Float-Wert enthalten, dann musst Du die kleinere Adresse mit Len 2 angeben.


heisst
attr FinderEnergiezaehler dev-i-defLen 2
attr FinderEnergiezaehler dev-i-defPoll 1

und dann die Länge bei den abzufragenden OBJ?

Ich brauch eine Kreissäge für das Brett vorm Kopf ...
Summende Grüße
Ingo

StefanStrobel

def-i-def... bzw. def-h-def... legen Defaults für Objektarten fest. Angaben bei den Objekten können das überschreiben.
Alternativ kannst Du auch Datentypen angeben. Hinter einem Datentyp steckt dann schon die Länge und der Unpack-Code.
Das steht in der commandref für ModbusAttr unter "Handling Data Types"

Gruß
   Stefan

R1F800

OK, dann hab ich das ja schon drin:

attr FinderEnergiezaehler dev-h-defLen 2
attr FinderEnergiezaehler dev-h-defPoll 1
attr FinderEnergiezaehler dev-i-defLen 2
attr FinderEnergiezaehler dev-i-defPoll 1
attr FinderEnergiezaehler dev-timing-commDelay 0.1
attr FinderEnergiezaehler dev-timing-timeout 2
attr FinderEnergiezaehler disable 0
attr FinderEnergiezaehler enableControlSet 1
attr FinderEnergiezaehler event-on-change-reading .*
attr FinderEnergiezaehler icon stromzaehler_icon@green
### Temperaturregister
attr FinderEnergiezaehler obj-i30181-len 1
attr FinderEnergiezaehler obj-i30181-reading FinderGeraetetemperatur:temperature
attr FinderEnergiezaehler obj-i30181-showGet 1
attr FinderEnergiezaehler obj-i30181-type signed short little
#### Register 752 und 753
attr FinderEnergiezaehler obj-i32752-len 2
attr FinderEnergiezaehler obj-i32752-reading EnergieBezug
attr FinderEnergiezaehler obj-i32752-showGet 1
attr FinderEnergiezaehler obj-i32752-type unsigned long little
attr FinderEnergiezaehler obj-i32752-unpack f>
#### Register 754 und 755
attr FinderEnergiezaehler obj-i32754-len 2
attr FinderEnergiezaehler obj-i32754-reading EnergieEinspeisung
attr FinderEnergiezaehler obj-i32754-showGet 1
attr FinderEnergiezaehler obj-i32754-type unsigned long little
attr FinderEnergiezaehler obj-i32754-unpack f>

Jetzt komme ich zumindest schon mal weiter, nachdem ich die timeouts hochgesetzt hab. Die waren zu klein dimensioniert ... ob das besser ist :
2024.10.29 18:17:56 4: FinderEnergiezaehler: get called with EnergieBezug (i32752)
2024.10.29 18:17:56 5: FinderEnergiezaehler: GetSetChecks with force
2024.10.29 18:17:56 5: FinderEnergiezaehler: GetSetChecks returns success
2024.10.29 18:17:56 4: FinderEnergiezaehler: DoRequest called from GetLDFn created new request, read buffer empty,
request: id 33, read fc 4 i32752, len 2, master device FinderEnergiezaehler, reading EnergieBezug (get EnergieBezug)

Summende Grüße
Ingo

StefanStrobel

In dem Ausschnitt des Logs sieht man nur dass eine Anfrage vorbereitet wurde.
Der interessante Teil müsste danach kommen.

R1F800

Zitat von: StefanStrobel am 30 Oktober 2024, 15:11:33In dem Ausschnitt des Logs sieht man nur dass eine Anfrage vorbereitet wurde.
Der interessante Teil müsste danach kommen.
Da kam aber nichts mehr ... das wundert mich auch.
Summende Grüße
Ingo

R1F800

So, habe auch einnal die RS485 auf Verbose 5 gestellt.
bei einem GET reuqest ist das hier das LOG:

request: id 33, read fc 4 i30181, len 1, master device FinderEnergiezaehler, reading FinderGeraetetemperatur (get FinderGeraetetemperatur), queued 5.01 secs ago, sent 5.01 secs ago
2024.10.31 14:39:17 4: FinderEnergiezaehler: get called with FinderGeraetetemperatur (i30181)
2024.10.31 14:39:17 5: FinderEnergiezaehler: GetSetChecks with force
2024.10.31 14:39:17 5: FinderEnergiezaehler: GetSetChecks returns success
2024.10.31 14:39:17 4: FinderEnergiezaehler: DoRequest called from GetLDFn created new request, read buffer empty,
request: id 33, read fc 4 i30181, len 1, master device FinderEnergiezaehler, reading FinderGeraetetemperatur (get FinderGeraetetemperatur)
2024.10.31 14:39:17 5: ModbusRS485: QueueRequest called from DoRequest with i30181, qlen 0 from master FinderEnergiezaehler through io device ModbusRS485
2024.10.31 14:39:17 5: ModbusRS485: ProcessRequestQueue called from QueueRequest as direct:ModbusRS485, qlen 1, force, request: request: id 33, read fc 4 i30181, len 1, master device FinderEnergiezaehler, reading FinderGeraetetemperatur (get FinderGeraetetemperatur), queued 0.00 secs ago
2024.10.31 14:39:17 5: ModbusRS485: checkDelays commDelay, last communication with same device was never, required delay is 0.5
2024.10.31 14:39:17 5: ModbusRS485: checkDelays busDelayRead is not required
2024.10.31 14:39:17 5: ModbusRS485: checkDelays sendDelay, last send to same device was 75.477 secs ago, required delay is 0.1
2024.10.31 14:39:17 5: ModbusRS485: checkDelays clientSwitchDelay is not relevant
2024.10.31 14:39:17 4: ModbusRS485: ProcessRequestQueue (V4.5.6 - 7.11.2023) qlen 1, sending 210475e500013d51 via /dev/ttyUSB0@19200,8,N,2, read buffer empty,
request: id 33, read fc 4 i30181, len 1, master device FinderEnergiezaehler, reading FinderGeraetetemperatur (get FinderGeraetetemperatur), queued 0.01 secs ago
2024.10.31 14:39:17 5: ModbusRS485: Send called from ProcessRequestQueue
2024.10.31 14:39:17 5: DevIo_SimpleWrite ModbusRS485: 210475e500013d51
2024.10.31 14:39:17 5: ModbusRS485: ReadAnswer called from GetLDFn
2024.10.31 14:39:17 5: ModbusRS485: ReadAnswer remaining timeout is 4.99415111541748
2024.10.31 14:39:22 3: ModbusRS485: Timeout in Readanswer, read buffer empty,
request: id 33, read fc 4 i30181, len 1, master device FinderEnergiezaehler, reading FinderGeraetetemperatur (get FinderGeraetetemperatur), queued 5.01 secs ago, sent 5.01 secs ago
Summende Grüße
Ingo

StefanStrobel

Dein Zähler antwortet nicht. Bist Du sicher dass die 19200,8,N,2 stimmen?

Gruß
  Stefan

R1F800

Zitat von: StefanStrobel am 31 Oktober 2024, 21:36:40Dein Zähler antwortet nicht. Bist Du sicher dass die 19200,8,N,2 stimmen?

Gruß
  Stefan


Ehm es steht so im Datenblatt
Speed 1200 - 115200   Default 19200
Frame 8 N 2

vielleicht packt die Leitung die Geschwindigkeit nicht?
Summende Grüße
Ingo

R1F800

Habe die Parameter mal auf beiden Seiten auf 8 E 2 angepasst ... leider auch kein Erfolg
Summende Grüße
Ingo

Prof. Dr. Peter Henning

Zitat von: R1F800 am 01 November 2024, 10:30:27Speed 1200 - 115200   Default 19200
Dann würde ich doch mal langsam bei 1200 anfangen und mich hocharbeiten...

LG

pah

R1F800

Zitat von: Prof. Dr. Peter Henning am 04 November 2024, 18:07:21
Zitat von: R1F800 am 01 November 2024, 10:30:27Speed 1200 - 115200   Default 19200
Dann würde ich doch mal langsam bei 1200 anfangen und mich hocharbeiten...

LG

pah

Hm. vielleicht lese ich das falsch, aber warum schreibt mir das LOG immer etwas von READ BUFFER empty? Kommen keine Daten im PI an? (TIMEOUT?)

2024.11.05 13:41:18 5: FinderEnergiezaehler: UpdateSetList: setList=reconnect:noArg saveAsModule createAttrsFromParseInfo interval reread:noArg stop:noArg start:noArg close:noArg scanStop:noArg scanModbusObjects sendRaw scanModbusId inactive active
2024.11.05 13:41:18 5: FinderEnergiezaehler: UpdateSetList: getList=FinderGeraetetemperatur:noArg EnergieBezug:noArg EnergieEinspeisung:noArg
2024.11.05 13:41:45 5: FinderEnergiezaehler: UpdateSetList: setList=reconnect:noArg saveAsModule createAttrsFromParseInfo interval reread:noArg stop:noArg start:noArg close:noArg scanStop:noArg scanModbusObjects sendRaw scanModbusId inactive active
2024.11.05 13:41:45 5: FinderEnergiezaehler: UpdateSetList: getList=FinderGeraetetemperatur:noArg EnergieBezug:noArg EnergieEinspeisung:noArg
2024.11.05 13:41:51 1: RMDIR: ./restoreDir/save/2024-11-02
2024.11.05 13:41:55 4: FinderEnergiezaehler: get called with EnergieBezug (h32752)
2024.11.05 13:41:55 5: FinderEnergiezaehler: GetSetChecks with force
2024.11.05 13:41:55 5: FinderEnergiezaehler: GetSetChecks returns success
2024.11.05 13:41:55 4: FinderEnergiezaehler: DoRequest called from GetLDFn created new request, read buffer empty,
request: id 33, read fc 3 h32752, len 2, master device FinderEnergiezaehler, reading EnergieBezug (get EnergieBezug)
2024.11.05 13:41:55 5: ModbusRS485: QueueRequest called from DoRequest with h32752, qlen 0 from master FinderEnergiezaehler through io device ModbusRS485
2024.11.05 13:41:55 5: ModbusRS485: ProcessRequestQueue called from QueueRequest as direct:ModbusRS485, qlen 1, force, request: request: id 33, read fc 3 h32752, len 2, master device FinderEnergiezaehler, reading EnergieBezug (get EnergieBezug), queued 0.00 secs ago
2024.11.05 13:41:55 5: ModbusRS485: checkDelays commDelay, last communication with same device was never, required delay is 0.5
2024.11.05 13:41:55 5: ModbusRS485: checkDelays clientSwitchDelay is not relevant
2024.11.05 13:41:55 5: ModbusRS485: checkDelays busDelayRead is not required
2024.11.05 13:41:55 5: ModbusRS485: checkDelays sendDelay, last send to same device was never, required delay is 0.1
2024.11.05 13:41:55 4: ModbusRS485: ProcessRequestQueue (V4.5.6 - 7.11.2023) qlen 1, sending 21037ff00002da8c via /dev/ttyUSB0@19200,8,E,2, read buffer empty,
request: id 33, read fc 3 h32752, len 2, master device FinderEnergiezaehler, reading EnergieBezug (get EnergieBezug), queued 0.00 secs ago
2024.11.05 13:41:55 5: ModbusRS485: Send called from ProcessRequestQueue
2024.11.05 13:41:55 5: DevIo_SimpleWrite ModbusRS485: 21037ff00002da8c
2024.11.05 13:41:55 5: ModbusRS485: ReadAnswer called from GetLDFn
2024.11.05 13:41:55 5: ModbusRS485: ReadAnswer remaining timeout is 4.99391794204712
2024.11.05 13:42:00 3: ModbusRS485: Timeout in Readanswer, read buffer empty,
request: id 33, read fc 3 h32752, len 2, master device FinderEnergiezaehler, reading EnergieBezug (get EnergieBezug), queued 5.01 secs ago, sent 5.01 secs ago

Ich drehe mal das Speed auf Schneckentempo auf beiden Seiten. Dann schauen wir mal ...
Summende Grüße
Ingo

R1F800

@
Zitat von: Prof. Dr. Peter Henning am 04 November 2024, 18:07:21
Zitat von: R1F800 am 01 November 2024, 10:30:27Speed 1200 - 115200   Default 19200
Dann würde ich doch mal langsam bei 1200 anfangen und mich hocharbeiten...

LG

pah

Also an der Geschwindigkeit liegt es nicht. 2400bps und gleiches Ergebnis.
Summende Grüße
Ingo

Prof. Dr. Peter Henning

Hmm...

Es _könnte_ noch sein, dass das daran liegt:
Zitatder RS485 ist zwar nicht via USB sonder via HAT über UART angeklemmt, aber das sollte ja kein Problem sein.

Auf dem Raspberry Pi wird der interne serielle Port in der Software emuliert, das ist keine Hardware-Lösung. Als ich vor etlichen Jahren das erste EBUS-Interface für den RPI entworfen habe, hat dies massive Probleme bereitet. Das ging EBEN NICHT über UART, weil dabei durch die Emulation Latenzen eingefügt wurden, die nicht beherrschbar waren.

Ich habe keine Ahnung, ob das bei aufgestecktem HAT auch noch der Fall ist. Könnte ich mir als misstrauischer Mensch aber durchaus vorstellen.

Vlt. mal probieren, ob das bei einem Anschluss über USB besser ist.

LG

pah

Aurel_B

Kurz zur Hardware: Ich habe seit > 2 Jahren drei von diesen im Einsatz: https://www.waveshare.com/product/iot-communication/wired-comm-converter/rs232-rs485-can-dali2/usb-to-rs232-485-ttl-kl.htm (die waren mal viel günstiger bei ca. 20$!), funktionierten in dieser Zeit absolut problemlos an meinem RasPi und jetzt an meinem Mini-PC.

R1F800

#21
Ich muss mal schauen, ob ich hier noch einen USB RS485 rumfliegen habe.
Das wäre natürlich schon der Hammer.

Aktuell montiert
Zihatec RS485 hat


und den hier habe ich bestellt.:
Waveshare
I´ll be back

vG
Ingo
Summende Grüße
Ingo

jumpman_junior

#22
Hallo zusammen, ich habe einen Finder 7m.38 eingebaut und lese den mit einem USB-RS485 (4- EUR aus der Bucht) Adapter aus. Der Port ist mittels ser2net weitergeleitet.
In der Modbus Spec vom E-Meter sind die Input Register mit einem 30000er Prefix aufgeführt. Der muss weggelassen werden und Offset 1 von der Registeradresse abziehen. Das passt dann zumindest bei mir.
Wenn man 32xxx abfragt, kommt nur out of range zurück.

Meine device Config sieht so aus:

defmod ABLMeter ModbusAttr 33 10 remote-host:20002 RTU
attr ABLMeter DbLogExclude .*
attr ABLMeter dev-type-FL32-len 2
attr ABLMeter dev-type-FL32-revRegs 1
attr ABLMeter dev-type-FL32-unpack f>
attr ABLMeter disable 0
attr ABLMeter obj-i2479-format %.2f
attr ABLMeter obj-i2479-poll 1
attr ABLMeter obj-i2479-reading Runtime
attr ABLMeter obj-i2479-type FL32
attr ABLMeter obj-i2489-format %.2f
attr ABLMeter obj-i2489-poll 1
attr ABLMeter obj-i2489-reading ActivePowerTotal
attr ABLMeter obj-i2489-type FL32
attr ABLMeter obj-i2491-format %.2f
attr ABLMeter obj-i2491-poll 1
attr ABLMeter obj-i2491-reading ReactivePowerTotal
attr ABLMeter obj-i2491-type FL32
attr ABLMeter obj-i2493-format %.2f
attr ABLMeter obj-i2493-poll 1
attr ABLMeter obj-i2493-reading ApparentPowerTotal
attr ABLMeter obj-i2493-type FL32
attr ABLMeter obj-i2495-format %.2f
attr ABLMeter obj-i2495-poll 1
attr ABLMeter obj-i2495-reading PowerFactorTotal
attr ABLMeter obj-i2495-type FL32
attr ABLMeter obj-i2497-format %.2f
attr ABLMeter obj-i2497-poll 1
attr ABLMeter obj-i2497-reading Frequency
attr ABLMeter obj-i2497-type FL32
attr ABLMeter obj-i2499-format %.2f
attr ABLMeter obj-i2499-poll 1
attr ABLMeter obj-i2499-reading U1
attr ABLMeter obj-i2499-type FL32
attr ABLMeter obj-i2501-format %.2f
attr ABLMeter obj-i2501-poll 1
attr ABLMeter obj-i2501-reading U2
attr ABLMeter obj-i2501-type FL32
attr ABLMeter obj-i2503-format %.2f
attr ABLMeter obj-i2503-poll 1
attr ABLMeter obj-i2503-reading U3
attr ABLMeter obj-i2503-type FL32
attr ABLMeter obj-i2515-format %.2f
attr ABLMeter obj-i2515-poll 1
attr ABLMeter obj-i2515-reading I1
attr ABLMeter obj-i2515-type FL32
attr ABLMeter obj-i2517-format %.2f
attr ABLMeter obj-i2517-poll 1
attr ABLMeter obj-i2517-reading I2
attr ABLMeter obj-i2517-type FL32
attr ABLMeter obj-i2519-format %.2f
attr ABLMeter obj-i2519-poll 1
attr ABLMeter obj-i2519-reading I3
attr ABLMeter obj-i2519-type FL32
attr ABLMeter obj-i2529-format %.2f
attr ABLMeter obj-i2529-poll 1
attr ABLMeter obj-i2529-reading ActivePowerL1
attr ABLMeter obj-i2529-type FL32
attr ABLMeter obj-i2531-format %.2f
attr ABLMeter obj-i2531-poll 1
attr ABLMeter obj-i2531-reading ActivePowerL2
attr ABLMeter obj-i2531-type FL32
attr ABLMeter obj-i2533-format %.2f
attr ABLMeter obj-i2533-poll 1
attr ABLMeter obj-i2533-reading ActivePowerL3
attr ABLMeter obj-i2533-type FL32
attr ABLMeter obj-i2535-format %.2f
attr ABLMeter obj-i2535-poll 1
attr ABLMeter obj-i2535-reading ActivePowerLges
attr ABLMeter obj-i2535-type FL32
attr ABLMeter obj-i2537-format %.2f
attr ABLMeter obj-i2537-poll 1
attr ABLMeter obj-i2537-reading ReactivePowerL1
attr ABLMeter obj-i2537-type FL32
attr ABLMeter obj-i2539-format %.2f
attr ABLMeter obj-i2539-poll 1
attr ABLMeter obj-i2539-reading ReactivePowerL2
attr ABLMeter obj-i2539-type FL32
attr ABLMeter obj-i2541-format %.2f
attr ABLMeter obj-i2541-poll 1
attr ABLMeter obj-i2541-reading ReactivePowerL3
attr ABLMeter obj-i2541-type FL32
attr ABLMeter obj-i2543-format %.2f
attr ABLMeter obj-i2543-poll 1
attr ABLMeter obj-i2543-reading ReactivePowerLges
attr ABLMeter obj-i2543-type FL32
attr ABLMeter obj-i2545-format %.2f
attr ABLMeter obj-i2545-poll 1
attr ABLMeter obj-i2545-reading ApparentPowerL1
attr ABLMeter obj-i2545-type FL32
attr ABLMeter obj-i2547-format %.2f
attr ABLMeter obj-i2547-poll 1
attr ABLMeter obj-i2547-reading ApparentPowerL2
attr ABLMeter obj-i2547-type FL32
attr ABLMeter obj-i2549-format %.2f
attr ABLMeter obj-i2549-poll 1
attr ABLMeter obj-i2549-reading ApparentPowerL3
attr ABLMeter obj-i2549-type FL32
attr ABLMeter obj-i2551-format %.2f
attr ABLMeter obj-i2551-poll 1
attr ABLMeter obj-i2551-reading ApparentPowerLges
attr ABLMeter obj-i2551-type FL32
attr ABLMeter obj-i2553-format %.2f
attr ABLMeter obj-i2553-poll 1
attr ABLMeter obj-i2553-reading PowerFactorL1
attr ABLMeter obj-i2553-type FL32
attr ABLMeter obj-i2555-format %.2f
attr ABLMeter obj-i2555-poll 1
attr ABLMeter obj-i2555-reading PowerFactorL2
attr ABLMeter obj-i2555-type FL32
attr ABLMeter obj-i2557-format %.2f
attr ABLMeter obj-i2557-poll 1
attr ABLMeter obj-i2557-reading PowerFactorL3
attr ABLMeter obj-i2557-type FL32
attr ABLMeter obj-i2559-format %.2f
attr ABLMeter obj-i2559-poll 1
attr ABLMeter obj-i2559-reading PowerFactorLges
attr ABLMeter obj-i2559-type FL32
attr ABLMeter obj-i2583-format %.2f
attr ABLMeter obj-i2583-poll 1
attr ABLMeter obj-i2583-reading Frequency_2
attr ABLMeter obj-i2583-type FL32
attr ABLMeter obj-i2637-format %.2f
attr ABLMeter obj-i2637-poll 1
attr ABLMeter obj-i2637-reading EnergyCount_1
attr ABLMeter obj-i2637-type FL32
attr ABLMeter obj-i2639-format %.2f
attr ABLMeter obj-i2639-poll 1
attr ABLMeter obj-i2639-reading EnergyCount_2

Hope it helps