[Gelöst]Modbus TCP Zähler auslesen

Begonnen von kores, 04 Januar 2015, 20:14:21

Vorheriges Thema - Nächstes Thema

kores

Hallo Zusammen,

als erstes möchte ich euch allen noch ein gesundes neues Jahr wünschen.

Zu FHEM bin ich durch Zufall gestoßen und war von Anfang an begeistert, ich habe in den letzten Tagen viel Zeit hier im Forum verbracht und es hat mir sehr geholfen, aber jetzt bin ich mit meinem Latein am ende, was bestimmt auch daran liegt das ich mich PERL eigentlich gar nicht auskenne, was nicht ist kann ja noch werden, aber nun zu meinem Problem:

Ich habe 2 Zähler via Modus TCP mit dem Raspi verbunden und die Kommunikation klappt soweit auch, zumindest steht eine Verbindung, aber irgendwie kann ich die werte nicht auslesen und ich weiss einfach nicht woran es liegt.

Ich bin wie folgt vorgegangen:

Ich habe die 36_ModbusTCPServer.pm und 37_ModbusRegister.pm aus diesem Thread http://forum.fhem.de/index.php/topic,12655.msg205396.html#msg205396 in mein fhem/FHEM Verzeichnis kopiert.
danach hab ich mein cfg Datei geschrieben diese sieht wie folgt aus:
define Zähler_1 ModbusTCPServer IP Zähler 1
attr Zähler_1 pollIntervall 0.1
define MW0 ModbusRegister 0 0

define U_L1 ModbusRegister 1 30001
attr U_L1 group Stromzaehler
attr U_L1 plcDataType REAL_BE

define Zähler_2 ModbusTCPServer IP Zähler 2
attr Zähler_2 pollIntervall 0.1
define MW0 ModbusRegister 0 0

define U_L1 ModbusRegister 1 30001
attr U_L1 group Stromzaehler
attr U_L1 plcDataType REAL_BE


wenn ich FHEM Starte sehe ich Zähler 1 und 2 status ok

aber ich bekomme keine werte im Eventlog steht immer UNKNOWNCOMMAND Modus 0.0.3 Modbusregister

kann mir jemand sagen was ich falsch mache und oder mir dabei helfen ??

gruss Alex

ChrisD

Hallo,

Um das Problem einzugrenzen bräuchte ich noch ein paar Informationen:
- Kannst du schauen welche Meldungen (mit 'attr Zähler_1 verbose 5') in der FHEM-Logdatei stehen ?
- Was steht im Detail von Zähler 1 unter 'statistics' ?
- Kannst du in der FHEM-Kommandozeile version eingeben und die Zeilen mit fhem.pl und Modbus posten ?
- Die Herkunft der Meldung
ZitatUNKNOWNCOMMAND Modus 0.0.3 Modbusregister
ist mir nicht klar, kannst du die ganze Zeile aus dem Event-Monitor kopieren ? Wiederholt sich diese Zeile ?
- Die Definition von MW0 ist wahrscheinlich nicht nötig, kannst du sie entfernen ?
- Welche Zähler verwendest du ?

Umlaute sollen (oder dürfen) nicht in Gerätenamen verwendet werden. Beim Starten von FHEM sollte dies zu einer Fehlermeldung (configfile: Invalid characters in name (not A-Za-z0-9.:_)) führen.

Grüße,

ChrisD

kores

Hallo ChrisD,

ich habe folgende Zähler bei mir eingebaut:
http://www.stromzaehler.de/Nova_80.htm
mit dem LAN Gateway http://shop.enerserve.eu/zubehoer/120/nova-lan-gateway

mein logfile sieht so aus ( Auszug )
2000.01.05 16:47:13 1: Including fhem.cfg
2000.01.05 16:47:13 3: telnetPort: port 7072 opened
2000.01.05 16:47:16 3: WEB: port 8083 opened
2000.01.05 16:47:16 3: WEBphone: port 8084 opened
2000.01.05 16:47:16 3: WEBtablet: port 8085 opened
2000.01.05 16:47:17 2: eventTypes: loaded 3 events from ./log/eventTypes.txt
2000.01.05 16:47:18 3: Bezug0109: I/O device is Zaehler_1
2000.01.05 16:47:18 3: MBC01: I/O device is Zaehler_1
2000.01.05 16:47:18 3: MBTest02: I/O device is Zaehler_1
2000.01.05 16:47:18 3: U_L1: I/O device is Zaehler_1
2000.01.05 16:47:18 0: set, U_L1, group, Stromzaehler
2000.01.05 16:47:18 0: set, U_L1, plcDataType, REAL_BE
2000.01.05 16:47:18 3: U_L2: I/O device is Zaehler_1
2000.01.05 16:47:18 0: set, U_L2, group, Stromzaehler
2000.01.05 16:47:18 0: set, U_L2, plcDataType, REAL_BE
2000.01.05 16:47:18 3: U_L3: I/O device is Zaehler_1
2000.01.05 16:47:18 0: set, U_L3, group, Stromzaehler
2000.01.05 16:47:18 0: set, U_L3, plcDataType, REAL_BE
2000.01.05 16:47:18 3: MBTest03: I/O device is Zaehler_2
2000.01.05 16:47:18 3: MBC03: I/O device is Zaehler_2
2000.01.05 16:47:18 3: MB_Test03: I/O device is Zaehler_2
2000.01.05 16:47:18 1: Including ./log/fhem.save
2000.01.05 16:47:18 3: Opening Zaehler_1 device 192.168.178.201:502
2000.01.05 16:47:19 3: Zaehler_1 device opened
2000.01.05 16:47:19 3: Opening Zaehler_2 device 192.168.178.202:502
2000.01.05 16:47:19 3: Zaehler_2 device opened
2000.01.05 16:47:19 1: usb create starting
2000.01.05 16:47:23 3: Probing CUL device /dev/ttyAMA0
2000.01.05 16:47:29 3: Probing TCM_ESP3 device /dev/ttyAMA0
2000.01.05 16:47:29 3: Probing FRM device /dev/ttyAMA0
2000.01.05 16:47:35 1: usb create end
2000.01.05 16:47:35 2: SecurityCheck:  WEB,WEBphone,WEBtablet has no basicAuth attribute. telnetPort has no password/globalpassword attribute.  Restart FHEM for a new check if the problem is fixed, or set the global attribute motd to none to supress this message.
2000.01.05 16:47:35 0: Server started with 20 defined entities (version $Id: fhem.pl 6913 2014-11-08 10:32:44Z rudolfkoenig $, os linux, user fhem, pid 1979)
2000.01.05 16:47:35 1: PERL WARNING: Use of uninitialized value in pack at ./FHEM/36_ModbusTCPServer.pm line 367.
2000.01.05 16:47:35 5: AddRQueue [00 00 00 00 00 06] 00 03 00 6D 00 01
2000.01.05 16:47:35 5: SimpleWrite [00 00 00 00 00 06] 00 03 00 6D 00 01
2000.01.05 16:47:35 5: AddRQueue [00 00 00 00 00 06] 00 03 00 01 00 01
2000.01.05 16:47:35 5: adding to RQUEUE - 1
2000.01.05 16:47:35 5: AddRQueue [00 00 00 00 00 06] 00 03 00 01 00 01
2000.01.05 16:47:35 5: adding to RQUEUE - 2
2000.01.05 16:47:35 5: AddRQueue [00 00 00 00 00 06] 03 03 75 9D 00 01
2000.01.05 16:47:35 5: adding to RQUEUE - 3
2000.01.05 16:47:35 5: AddRQueue [00 00 00 00 00 06] 01 03 9C 41 00 01
2000.01.05 16:47:35 5: adding to RQUEUE - 4
2000.01.05 16:47:35 5: AddRQueue [00 00 00 00 00 06] 01 03 9C 45 00 01
2000.01.05 16:47:35 5: adding to RQUEUE - 5
2000.01.05 16:47:35 5: Received [00 00 00 00 00 03] 00 83 02
2000.01.05 16:47:35 2: ModbusTCPServer: except (code 2)
2000.01.05 16:47:35 4: RQUEUE: 5
2000.01.05 16:47:35 5: SimpleWrite [00 00 00 00 00 06] 00 03 00 01 00 01
2000.01.05 16:47:43 5: Received [00 00 00 00 00 05] 00 03 02 7E A1
2000.01.05 16:47:43 4: RQUEUE: 4
2000.01.05 16:47:43 5: SimpleWrite [00 00 00 00 00 06] 00 03 00 01 00 01
2000.01.05 16:47:45 2: ModbusRegister_Parse: invalid address 0 0
2000.01.05 16:47:45 2: ModbusRegister_Parse: invalid address 0 0
2000.01.05 16:47:45 3: Zaehler_2: Unknown code ModbusRegister:0:0:3:1:32525, help me!
2000.01.05 16:47:45 5: Received [00 00 00 00 00 05] 00 03 02 7F 7E
2000.01.05 16:47:45 5: Zaehler_1 dispatch ModbusRegister:0:0:3:1:32638
2000.01.05 16:47:46 5: ModbusRegister_Parse: 0 0
2000.01.05 16:47:46 2: ModbusRegister_Parse: invalid address 0 0
2000.01.05 16:47:46 5: ModbusRegister_Parse: 0 0
2000.01.05 16:47:46 2: ModbusRegister_Parse: invalid address 0 0
2000.01.05 16:47:46 3: Zaehler_1: Unknown code ModbusRegister:0:0:3:1:32638, help me!
2000.01.05 16:47:46 4: RQUEUE: 3
2000.01.05 16:47:46 5: SimpleWrite [00 00 00 00 00 06] 03 03 75 9D 00 01
2000.01.05 16:47:46 2: ModbusRegister_Parse: invalid address 0 0
2000.01.05 16:47:46 2: ModbusRegister_Parse: invalid address 0 0
2000.01.05 16:47:46 3: Zaehler_2: Unknown code ModbusRegister:0:0:3:1:32525, help me!
2000.01.05 16:47:46 5: Received [00 00 00 00 00 03] 03 83 02
2000.01.05 16:47:46 2: ModbusTCPServer: except (code 2)
2000.01.05 16:47:46 4: RQUEUE: 2
2000.01.05 16:47:46 5: SimpleWrite [00 00 00 00 00 06] 01 03 9C 41 00 01
2000.01.05 16:47:46 2: ModbusRegister_Parse: invalid address 0 0
2000.01.05 16:47:46 2: ModbusRegister_Parse: invalid address 0 0
2000.01.05 16:47:46 3: Zaehler_2: Unknown code ModbusRegister:0:0:3:1:32525, help me!
2000.01.05 16:47:46 5: Received [00 00 00 00 00 03] 01 83 02
2000.01.05 16:47:46 2: ModbusTCPServer: except (code 2)
2000.01.05 16:47:46 4: RQUEUE: 1
2000.01.05 16:47:46 5: SimpleWrite [00 00 00 00 00 06] 01 03 9C 45 00 01
2000.01.05 16:47:46 2: ModbusRegister_Parse: invalid address 0 0
2000.01.05 16:47:47 2: ModbusRegister_Parse: invalid address 0 0
2000.01.05 16:47:47 3: Zaehler_2: Unknown code ModbusRegister:0:0:3:1:32525, help me!
2000.01.05 16:47:47 5: Received [00 00 00 00 00 03] 01 83 02
2000.01.05 16:47:47 2: ModbusTCPServer: except (code 2)
2000.01.05 16:47:47 5: AddRQueue [00 00 00 00 00 06] 00 03 00 6D 00 01
2000.01.05 16:47:47 5: SimpleWrite [00 00 00 00 00 06] 00 03 00 6D 00 01
2000.01.05 16:47:47 5: AddRQueue [00 00 00 00 00 06] 00 03 00 01 00 01
2000.01.05 16:47:47 5: adding to RQUEUE - 1
2000.01.05 16:47:47 5: AddRQueue [00 00 00 00 00 06] 00 03 00 01 00 01
2000.01.05 16:47:47 5: adding to RQUEUE - 2
2000.01.05 16:47:47 5: AddRQueue [00 00 00 00 00 06] 03 03 75 9D 00 01
2000.01.05 16:47:47 5: adding to RQUEUE - 3
2000.01.05 16:47:47 5: AddRQueue [00 00 00 00 00 06] 01 03 9C 41 00 01
2000.01.05 16:47:47 5: adding to RQUEUE - 4
2000.01.05 16:47:47 5: AddRQueue [00 00 00 00 00 06] 01 03 9C 45 00 01
2000.01.05 16:47:47 5: adding to RQUEUE - 5
2000.01.05 16:47:47 5: Received [00 00 00 00 00 03] 00 83 02
2000.01.05 16:47:47 2: ModbusTCPServer: except (code 2)
2000.01.05 16:47:47 4: RQUEUE: 5
2000.01.05 16:47:47 5: SimpleWrite [00 00 00 00 00 06] 00 03 00 01 00 01
2000.01.05 16:47:47 2: ModbusRegister_Parse: invalid address 0 0
2000.01.05 16:47:47 2: ModbusRegister_Parse: invalid address 0 0
2000.01.05 16:47:47 3: Zaehler_2: Unknown code ModbusRegister:0:0:3:1:32525, help me!
2000.01.05 16:47:47 5: Received [00 00 00 00 00 05] 00 03 02 7F 7E
2000.01.05 16:47:47 5: Zaehler_1 dispatch ModbusRegister:0:0:3:1:32638
2000.01.05 16:47:47 5: ModbusRegister_Parse: 0 0
2000.01.05 16:47:47 2: ModbusRegister_Parse: invalid address 0 0
2000.01.05 16:47:47 5: ModbusRegister_Parse: 0 0
2000.01.05 16:47:47 2: ModbusRegister_Parse: invalid address 0 0
2000.01.05 16:47:47 3: Zaehler_1: Unknown code ModbusRegister:0:0:3:1:32638, help me!
2000.01.05 16:47:47 4: RQUEUE: 4
2000.01.05 16:47:47 5: SimpleWrite [00 00 00 00 00 06] 00 03 00 01 00 01
2000.01.05 16:47:47 2: ModbusRegister_Parse: invalid address 0 0
2000.01.05 16:47:47 2: ModbusRegister_Parse: invalid address 0 0
2000.01.05 16:47:47 3: Zaehler_2: Unknown code ModbusRegister:0:0:3:1:32525, help me!
2000.01.05 16:47:47 5: Received [00 00 00 00 00 05] 00 03 02 7F 7E
2000.01.05 16:47:47 5: Zaehler_1 dispatch ModbusRegister:0:0:3:1:32638
2000.01.05 16:47:47 5: ModbusRegister_Parse: 0 0
2000.01.05 16:47:47 2: ModbusRegister_Parse: invalid address 0 0
2000.01.05 16:47:47 5: ModbusRegister_Parse: 0 0
2000.01.05 16:47:47 2: ModbusRegister_Parse: invalid address 0 0
2000.01.05 16:47:47 3: Zaehler_1: Unknown code ModbusRegister:0:0:3:1:32638, help me!
2000.01.05 16:47:47 4: RQUEUE: 3


bei version steht folgendes:
# $Id: fhem.pl 6913 2014-11-08 10:32:44Z rudolfkoenig $
# $Id: 01_FHEMWEB.pm 6884 2014-11-04 22:03:52Z rudolfkoenig $
# $Id: 92_FileLog.pm 6769 2014-10-15 17:03:30Z rudolfkoenig $
# $Id: 37_ModbusRegister.pm 0001 $
# $Id: 36_ModbusTCPServer.pm 0004 $
# $Id: 99_SUNRISE_EL.pm 6765 2014-10-14 18:24:29Z rudolfkoenig $
# $Id: 99_Utils.pm 6660 2014-10-03 06:35:43Z rudolfkoenig $
# $Id: 98_autocreate.pm 6505 2014-09-06 12:24:48Z rudolfkoenig $
# $Id: 91_eventTypes.pm 6792 2014-10-19 16:03:13Z rudolfkoenig $
# $Id: 91_notify.pm 6371 2014-08-07 05:33:37Z rudolfkoenig $
# $Id: 98_telnet.pm 6611 2014-09-24 07:48:32Z rudolfkoenig $


Event Monitor Meldung sieht so aus : ist ein Auszug schreibt also immer weiter
2000-01-05 16:26:40 ModbusTCPServer Zaehler_2 UNKNOWNCODE ModbusRegister:0:0:3:1:31865
2000-01-05 16:26:41 ModbusTCPServer Zaehler_2 UNKNOWNCODE ModbusRegister:0:0:3:1:31865
2000-01-05 16:26:41 ModbusTCPServer Zaehler_1 UNKNOWNCODE ModbusRegister:0:0:3:1:32260
2000-01-05 16:26:41 ModbusTCPServer Zaehler_2 UNKNOWNCODE ModbusRegister:0:0:3:1:31865
2000-01-05 16:26:41 ModbusTCPServer Zaehler_1 UNKNOWNCODE ModbusRegister:0:0:3:1:32260
2000-01-05 16:26:41 ModbusTCPServer Zaehler_2 UNKNOWNCODE ModbusRegister:0:0:3:1:31865
2000-01-05 16:26:41 ModbusTCPServer Zaehler_2 UNKNOWNCODE ModbusRegister:0:0:3:1:31865
2000-01-05 16:26:42 ModbusTCPServer Zaehler_2 UNKNOWNCODE ModbusRegister:0:0:3:1:31865
2000-01-05 16:26:42 ModbusTCPServer Zaehler_1 UNKNOWNCODE ModbusRegister:0:0:3:1:32260
2000-01-05 16:26:42 ModbusTCPServer Zaehler_1 UNKNOWNCODE ModbusRegister:0:0:3:1:32260


meine config dabei habe ich so angepasst:

define Zaehler_1 ModbusTCPServer 192.168.178.201
attr Zaehler_1 pollIntervall 0.1
attr Zaehler_1 verbose 5
define Bezug0109 ModbusRegister 0 0109
define MBC01 ModbusRegister 0 1
define MBTest02 ModbusRegister 0 1

define U_L1 ModbusRegister 3 30109
attr U_L1 group Stromzaehler
attr U_L1 plcDataType REAL_BE

define U_L2 ModbusRegister 1 40001
attr U_L2 group Stromzaehler
attr U_L2 plcDataType REAL_BE

define U_L3 ModbusRegister 1 40005
attr U_L3 group Stromzaehler
attr U_L3 plcDataType REAL_BE

define Zaehler_2 ModbusTCPServer 192.168.178.202
attr Zaehler_2 pollIntervall 0.1
define MBTest03 ModbusRegister 0 1
define MBC03 ModbusRegister 0 1
define MB_Test03 ModbusRegister 0 1


Statistics habe ich nicht gefunden muss ich mal lesen wie oder wo ich das finde.

so ich hoffe ich habe alle deine Fragen beantworten können.

gruss Alex

ChrisD

Hallo,

Danke für die Antworten.

Kannst du bitte die beigefügten Versionen der Module verwenden ? Da der Modbus-Thread ziemlich lang geworden ist und diverse Versionen der Module in den Beiträgen sind habe ich den letzten Stand der Module auf https://github.com/ChrisD70/FHEM-Modules gesetzt.

Kannst du zum Testen die Konfiguration so anpassen:
define Zaehler_1 ModbusTCPServer 192.168.178.201
attr Zaehler_1 pollIntervall 0.1
attr Zaehler_1 verbose 5

define U_L1 ModbusRegister 0 0
attr U_L1 group Stromzaehler
attr U_L1 plcDataType DWORD
attr U_L1 disableRegisterMapping 1
attr U_L1 conversion 0.001:0


In der von dir verwendeten Version gibt es noch kein statistics, in der beigefügten schon. Kannst du mit der obigen Definition schauen was bei statistics und im Log angezeigt wird ?

Grüße,

ChrisD

kores

Hallo,

vielen dank für deine Hilfe, ich werde das morgen gleich mal probieren und werde mich danach wieder melden

gruß

Alex

kores

Hallo Chris,

vielen vielen Dank  ;D ;D ich bekomme endlich Daten von meinen zählen, Ich freu mich wie verrückt  ;D

die Daten sehen so aus

Bezug     236983091.527
Einspeisung 248905072.985
Verbrauch 235918721.351

ich lese Register 0109 und 0115 aus weil ich nur die gesamt erzeugte Leistung bzw. Einspeisung sehen will.

wie bekomme ich denn jetzt aus diesen werten einen kw/h wert also sprich Bezug x  kw/h Einspeisung y kw/h verbrauch z kw/h
weil nach meiner Meinung sollte doch jetzt bei Einspeisung 0 stehen da es dunkel ist und keine Einspeisung stattfindet .

meine config sieht so aus
define Zaehler_1 ModbusTCPServer 192.168.178.201
attr Zaehler_1 pollIntervall 0.1
attr Zaehler_1 verbose 5

define Bezug ModbusRegister 0 0
attr Bezug group Stromzaehler
attr Bezug plcDataType DWORD
attr Bezug disableRegisterMapping 1
attr Bezug conversion 0.109:0

define Zaehler_2 ModbusTCPServer 192.168.178.202
attr Zaehler_1 pollIntervall 0.1
attr Zaehler_1 verbose 5


define Verbrauch ModbusRegister 0 0
attr Verbrauch group Stromzaehler
attr Verbrauch plcDataType DWORD
attr Verbrauch disableRegisterMapping 1
attr Verbrauch conversion 0.109:0

define Einspeisung ModbusRegister 0 0
attr Einspeisung group Stromzaehler
attr Einspeisung plcDataType DWORD
attr Einspeisung disableRegisterMapping 1
attr Einspeisung conversion 0.115:0


Daten kommen aber wie kann ich die umrechnen oder hab ich noch einen Fehler irgendwo ?

achja die statistics hab ich vergessen
bei zähler 1 steht:

statistics 2058 / 2059 / 26754 / 24708

Zähler 2

statistics 454 / 454 / 5902 / 5448

vielen dank für deine Hilfe

Gruß Alex

ChrisD

Hallo,

Es freut mich dass die Kommunikation funktioniert.

Was die Daten und deren Umrechnung betrifft ist es etwas schwieriger. Da das Modul noch (immer) keine Dokumentation hat, hier eine kurze Beschreibung :

- bei der Definition von ModbusRegister muss die UnitId und das Register angegeben werden:
define Bezug ModbusRegister 0 0bedeutet also dass von Unit 0 das Register 0 gelesen wird
- das Attribut plcDataType ermöglicht eine automatische Interpretation der ankommenden Daten, bei DWORD werden 2 aufeinanderfolgende Register (die immer 16 Bit enthalten) ausgelesen und zu einem 32 Bitwert zusammengesetzt. Da die Wortreihenfolge nicht spezifiziert ist gibt es zusätzlich die _BE-Typen bei denen Low-Word und High-Word vertauscht werden
- mit dem Attribut conversion kann der gelesene Wert umgerechnet resp. skaliert werden, das Format ist a:b mit angezeigter Wert = a * gelesener Wert + b
- das Attribut disableRegisterMapping dient dazu die interne Umrechnung von Registern in Adressen abzuschalten, es hängt vom Gerät ab ob diese Option gesetzt werden muss oder nicht

Aus deiner Konfiguration ergibt sich dass 'Bezug' im Moment auf Adresse 0 zugreift wo die Spannung L1-N liegt. Es müsste also ein Wert von ~ 230 (V) gelesen werden. Wenn ich 236983091.527 mit 0.109 zurückrechne ergibt sich dass bei deinen Geräten die _BE-Variante von plcDataType verwendet werden muss. Folgende Definition sollte die Spannung korrekt anzeigen (zum Testen):

define U_L1N ModbusRegister 0 0
attr U_L1N group Stromzaehler
attr U_L1N plcDataType DWORD_BE
attr U_L1N disableRegisterMapping 1
attr U_L1N conversion 0.001:0


Die vom System aufgenommene Energie steht ab Register 0109, laut meiner Dokumentation sind die Register in Hex angegeben, so dass sich aus der 0109h 265dez ergibt. Die Energie wird aber in 3 Worten mit der Einheit 0.1Wh angegeben was im Moment nicht direkt auslesbar ist da das Modul maximal 2 Worte zusammenfassen kann. Ich habe eine neue Version angehängt die auch 3 Worte lesen und zusammenfassen kann. Mit der Definition
define Bezug ModbusRegister 0 265
attr Bezug group Stromzaehler
attr Bezug plcDataType 3WORD_BE
attr Bezug disableRegisterMapping 1
attr Bezug conversion 0.0001:0

sollte die aufgenommene Energie in kWh herauskommen. Es handelt sich dabei um einen Zähler. Um den Verbrauch pro Tag oder Stunde zu sehen kannst du das statistics-Modul verwenden, z.B.:
attr Bezug stateAlias energy
define stat_Bezug statistics Bezug
attr stat_Bezug singularReadings Bezug:energy.*:Delta:(Hour|Day)
Details zum statistics-Modul gibt es in der Commandref.

Um die Rechenlast niedrig zu halten sollte zusätzlich bei den ModbusRegistern das Attribut event-on-change-reading gesetzt werden:
attr Bezug event-on-change-reading .*

Wenn du die 2 Zähler über getrennte LAN-Gateways erfasst musst du bei den ModbusRegistern aufpassen dass das Attribut IODev auf den korrekten ModbusTCPServer zeigt.

Grüße,

ChrisD

kores

Hallo Chris,

jetzt Funktioniert alles und ich kann mich der nächsten Hürde widmen.

vielen herzlichen Dank für deine Hilfe

Gruss Alex

19Enrico64

#8
Tolle Anleitung!!
Ich habe einen iEM3155 Zähler über ein EGX300 Gateway nach der Anleitung
an die FHEM angebunden.
Nur mit den Werten habe ich noch so ein Problem, wobei ich vermute, das hängt damit zusammen,
das der Zähler die entsprechenden Werte in Float32 aufgeteilt in zwei Register ausgibt.
Mit DWORD werden ja die Werte zweier aufeinander folgender Register verknüpft,
soweit ok, jedoch steht in der 37_ModbusRegister.pm float als Datentyp nicht float32.
Im oModbusMaster werden die Werte übrigens richtig angezeigt.

Hat jemand einen Lösungsvorschlag?





ChrisD

Hallo,

Der Datentyp FLOAT stellt eine 32-Bit IEEE754 Zahl dar und sollte Float32 entsprechen.

Was passiert wenn du FLOAT auswählst ?

Wenn die Zahl nicht korrekt dargestellt wird, was steht im Reading RAW ?

Grüße,

ChrisD

19Enrico64

Hallo Chris,
Vielen Dank für die superschnelle Antwort!!

Sorry als Anfänger weiß ich leider nicht, wie ich float da noch einbinden muss.
Ich hab mal für die Frequenz 2 Hardcopies angehängt, einen mit und einen
ohne correction, incl. RAW Daten.
Bei den Leiterströmen bräuchte ich aber drei verschiedene Faktoren...

Gruß Erik

ChrisD

Hallo,

Du brauchst für die Werte keine Faktoren. Wenn du das Attribut plcDataType von DWORD auf FLOAT änderst werden die Zahlen automatisch konvertiert.

Falls dabei keine sinnvollen Werte herauskommen kann es sein dass die Register um 1 versetzt sind. Um die Frequenz zu lesen kannst du es dann mit 3109 statt 3110 versuchen.

Grüße,

ChrisD

19Enrico64

Hallo ChrisD,
danke für den Tip mit Modbusadresse -1.
Vernünftige Werte, die mir als Starkstromelektriker bekannt vorkommen,
kommen jetzt auch raus, allerdings mit der Einstellung REAL_BE...
Um die Optik kümmere ich mich am Wochenende...  :)
Gruß Erik