[gelöst] [Modbus] Problem mit komischem Register von Stromzähler Orno-We-514

Begonnen von andi11, 18 Juli 2020, 15:15:00

Vorheriges Thema - Nächstes Thema

andi11

Alle "einfachen Werte" kann ich soweit auslesen, aber wie muss die Konfiguration für das "Active Energy" Register sein?
Dieses liefert nicht nur einen Wert zurück, sondern 5 Stück.  Total, T1,T2,T3,T4  Mich interessiert nur der erste Wert, wie komm ich an den dran?
Output der Original Software, zuerst ein "normales Register" angefragt und dann das sonderteil um 39:612

14:47:39:159  Write: 06 03 01 40 00 02 C5 94
14:47:39:487  Read: 06 03 04 00 00 00 9F CC 9B
14:47:39:612  Write: 06 03 A0 00 00 0A E6 7A
14:47:39:938  Read: 06 03 14 00 00 00 11 00 00 00 11 00 00 00 00 00 00 00 00 00 00 00 00 A5 35
14:47:40:296  Over

Interessant sind entsprechend für mich nur die ersten 4 Datenbytes 00 00 00 11

Ich krieg aber noch nichtmal ein entsprechendes Reading, in dem zumindest Mist drinsteht.
Sauber formatiert sieht das ganze so aus:
Active Power:
0,159 kW

Active Energy:
Total:0,17 kWh
T1:0,17 kWh
T2:0,00 kWh
T3:0,00 kWh
T4:0,00 kWh



Active Power frag ich dabei so ab:

attr Stromverbrauch_Zaehler3 dev-h-defLen 2
attr Stromverbrauch_Zaehler3 dev-h-defPoll 1
attr Stromverbrauch_Zaehler3 dev-h-defUnpack l
attr Stromverbrauch_Zaehler3 obj-h320-expr $val/1000
attr Stromverbrauch_Zaehler3 obj-h320-reading P_act
attr Stromverbrauch_Zaehler3 obj-h320-unpack N


Das Sonderregister versuche ich mit
attr Stromverbrauch_Zaehler3 obj-40960-len 10
attr Stromverbrauch_Zaehler3 obj-40960-reading Energie_Total_aktiv
attr Stromverbrauch_Zaehler3 obj-40960-unpack N




amenomade

Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

andi11

vielen Dank für deine Antwort.
Weil das Register &hA000 ist laut der Original Software und Doku die ich finden konnte

amenomade

Zitat von: andi11 am 21 Juli 2020, 18:33:55
vielen Dank für deine Antwort.
Weil das Register &hA000 ist laut der Original Software und Doku die ich finden konnte

Dann eher obj-h40960 wenn das ein "holding" Register ist
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

andi11

arg ja, Mist. Da ist mir wohl beim rumprobieren ein Fehler passiert.
Hast du auch ne Idee, wie ich Unpack usw setzen muss? Len wäre ich jetzt bei 10 da 10Word /  5x4Bytes Nutzdaten

amenomade

Len 10 = 10 Register = 160 bits = 20 Bytes, ja

Aber Du sagst, Du brauchst nicht die 20 Bytes00 00 00 11 00 00 00 11 00 00 00 00 00 00 00 00 00 00 00 00sondern nur den ersten Wert00 00 00 11 also len 4 sollte reichen. Ob es mit dem ModbusAttr Modul möglich ist, aus einem 20 Bytes Register, nur die 4 ersten zu lesen, weiss ich nicht. Wenn es geht, dann sollte unpack N OK sein

Aber den ganzen 20 Bytes Wert zu N-unpacken macht wenig Sinn, es sei denn Du machst danach irgendeine Kalkulation dazu.


Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

andi11

warum auch immer,
attr Stromverbrauch_Zaehler3 obj-h40960-expr $val/100
attr Stromverbrauch_Zaehler3 obj-h40960-len 10
attr Stromverbrauch_Zaehler3 obj-h40960-reading total-get
attr Stromverbrauch_Zaehler3 obj-h40960-unpack N


scheint wunderbar zu klappen. Sieht so aus als ob unpack mit den ersten Bytes arbeitet.
Ich hab mal rumprobiert, aber nicht mit Len=2 oder Len=4, einfach weil ich mir denke das müsste man dem Slave extra mitteilen.

amenomade

Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

andi11


amenomade

Zitat von: andi11 am 21 Juli 2020, 19:55:08
weis ich nicht, ich dachte defLen überschreibt len.
Genau. Wenn ich das Ding richtig verstehe, liest er zwar 10 Register, interpretiert aber davon nur 2 als 32 bits Integer
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

andi11

hm, oder es ist das unpack N was den Rest ignoriert, jedenfalls gehts 1a :)

amenomade

Also rein von der Logik von unpack aus, unpackt N ohne Suffix (kein N*, kein N2) ein "unsigned long (32-bit) in "network" (big-endian) order."
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

Bruchflieger

Moin Andy, und guten Rutsch allen...

ich hab mir grad den OR-WE 516 bestellt und werde dann in ein paar Tagen vor dem Rätsel stehen, wie ich ihn in FHEM integrieren kann.
Da du es offensichtlich hinbekommen hast, möchte ich einmal fragen, ob du die nötigen Konfigurationen mal als textfile oder kompletten codeschnipsel hier posten könntest.
Ich vermute mir als Windowskind wird es ebenso Probleme bereiten, den RS485-Adapter zu konfigurieren. Auch diese Schnipsel würden mir da sicherlich sehr helfen.

Danke.

(Hab die Konfiguration meines FHEM zuletzt vor 2 Jahren angefasst - da ist schon wieder sehr vieles dem Datenabbau im Langzeitgedächtnis zum Opfer gefallen... ;) )
Grüße Daniel.

andi11

aber gerne doch. Gib bescheid wenn du die Infos für den 1ph Zähler auch brauchst

Das Modbus Device (ID musst du dir selbst raussuchen unter /dev/serial/by-id
define ModbusLine Modbus /dev/serial/by-id/usb-1a86_USB2.0-Serial-if00-port0@9600,8,E,1

Stromzähler:
Es gibt noch mehr Register, aber mit der Zeit nutz ich immer weniger...
Dabei ist 7 die ID von meinem Zähler (ich hab mehrere)
define Stromverbrauch_Zaehler1 ModbusAttr 7 300
attr Stromverbrauch_Zaehler1 userattr dev-h-defLen dev-h-defPoll dev-h-defUnpack dev-timing-commDelay obj-h0-reading obj-h13-len obj-h13-reading obj-h14-format obj-h14-poll obj-h14-reading obj-h14-unpack obj-h16-format obj-h16-poll obj-h16-reading obj-h16-unpack obj-h18-format obj-h18-poll obj-h18-reading obj-h18-unpack obj-h2-len obj-h2-reading obj-h20-format obj-h20-poll obj-h20-reading obj-h20-unpack obj-h22-format obj-h22-reading obj-h22-unpack obj-h24-format obj-h24-reading obj-h24-unpack obj-h256-format obj-h256-reading obj-h256-unpack obj-h26-format obj-h26-reading obj-h26-unpack obj-h264-format obj-h264-poll obj-h264-reading obj-h264-unpack obj-h272-format obj-h272-poll obj-h272-reading obj-h272-unpack obj-h28-format obj-h28-reading obj-h28-unpack obj-h280-format obj-h280-reading obj-h280-unpack obj-h288-format obj-h288-reading obj-h288-unpack obj-h296-format obj-h296-reading obj-h296-unpack obj-h3-len obj-h3-reading obj-h30-format obj-h30-reading obj-h30-unpack obj-h32-format obj-h32-reading obj-h32-unpack obj-h34-format obj-h34-reading obj-h34-unpack obj-h36-format obj-h36-reading obj-h36-unpack obj-h38-format obj-h38-reading obj-h38-unpack obj-h40-format obj-h40-reading
attr Stromverbrauch_Zaehler1 DbLogExclude .*
attr Stromverbrauch_Zaehler1 DbLogInclude .*(stat|VerbrauchLastMonth|intensity|statIntensityHour).*
attr Stromverbrauch_Zaehler1 dev-h-defLen 4
attr Stromverbrauch_Zaehler1 dev-h-defPoll 1
attr Stromverbrauch_Zaehler1 dev-h-defUnpack f>
attr Stromverbrauch_Zaehler1 dev-timing-commDelay 0.5
attr Stromverbrauch_Zaehler1 dev-timing-timeout 5
attr Stromverbrauch_Zaehler1 disable 0
attr Stromverbrauch_Zaehler1 enableControlSet 1
attr Stromverbrauch_Zaehler1 event-min-interval .*:600
attr Stromverbrauch_Zaehler1 event-on-change-reading .*
attr Stromverbrauch_Zaehler1 obj-h14-format %.1f
attr Stromverbrauch_Zaehler1 obj-h14-poll 0
attr Stromverbrauch_Zaehler1 obj-h14-reading V1
attr Stromverbrauch_Zaehler1 obj-h16-format %.1f
attr Stromverbrauch_Zaehler1 obj-h16-poll 0
attr Stromverbrauch_Zaehler1 obj-h16-reading V2
attr Stromverbrauch_Zaehler1 obj-h18-format %.1f
attr Stromverbrauch_Zaehler1 obj-h18-poll 0
attr Stromverbrauch_Zaehler1 obj-h18-reading V3
attr Stromverbrauch_Zaehler1 obj-h20-format %.1f
attr Stromverbrauch_Zaehler1 obj-h20-poll 0
attr Stromverbrauch_Zaehler1 obj-h20-reading GridFreq
attr Stromverbrauch_Zaehler1 obj-h256-format %.3f
attr Stromverbrauch_Zaehler1 obj-h256-reading total-get
attr Stromverbrauch_Zaehler1 obj-h264-format %i
attr Stromverbrauch_Zaehler1 obj-h264-poll 0
attr Stromverbrauch_Zaehler1 obj-h264-reading E_forw_act_tot
attr Stromverbrauch_Zaehler1 obj-h272-format %i
attr Stromverbrauch_Zaehler1 obj-h272-poll 0
attr Stromverbrauch_Zaehler1 obj-h272-reading E_rev_act_tot
attr Stromverbrauch_Zaehler1 obj-h28-format %.3f
attr Stromverbrauch_Zaehler1 obj-h28-reading P_act_tot
attr Stromverbrauch_Zaehler1 obj-h30-format %.3f
attr Stromverbrauch_Zaehler1 obj-h30-reading P1_act
attr Stromverbrauch_Zaehler1 obj-h32-format %.3f
attr Stromverbrauch_Zaehler1 obj-h32-reading P2_act
attr Stromverbrauch_Zaehler1 obj-h34-format %.3f
attr Stromverbrauch_Zaehler1 obj-h34-reading P3_act
attr Stromverbrauch_Zaehler1 room Technik
attr Stromverbrauch_Zaehler1 stateFormat P_act_tot kW aktuell
attr Stromverbrauch_Zaehler1 webCmd reread


Verbrauch pro Tag usw. mach ich per Statistics Modul