47_OBIS zusammen mit Landis+Gyr E650

Begonnen von hypetsch, 27 Mai 2016, 21:57:50

Vorheriges Thema - Nächstes Thema

hypetsch

Hallo,

dies ist mein erster Post - hoffe ich bin hier am richtigen Ort dafür:

Habe das Modul OBIS zusammen mit meinem Stromzähler von Landis+Gyr E650 getestet. Das define sieht folgendermaßen aus:


define powermeter OBIS /dev/ttyUSB0@300,7,E,1 E110


Prinzipiell funktioniert es auch, es sind allerdings 2 Punkte aufgetaucht. Eventuell kann mir damit jemand weiterhelfen:

1) Ein kompletter Auslesezyklus über 3 Minuten
Das Auslesen funktioniert scheinbar nur mit 300 Baud. Stellt man im define auf 9600 werden keine Daten mehr empfangen. Soweit ich weiß sollte der Zähler auch ein Auslesen mit 9600 Baud unterstützen. Eventuell liegt es daran, dass die "Initialisierungskommandos" immer mit 300 Baud geschickt werden müssen. Sobald man auf 9600 stellt läuft aber die gesamte Kommunikation mit 9600 nicht nur das Empfangen der eigentlichen Daten. Zumindest würde darauf ein Post in diesem Forum hindeuten: http://www.photovoltaikforum.com/solarview-f104/d0-fb-mit-landis-gyr-e560-auf-rpi--t97944-s10.html

2) Gelesene Daten nicht vollständig
Einige Readings werden während einem Auslesevorgang mehrfach aktualisiert (bzw überschrieben). Eine Folge: es wird nicht für alle Werte ein Reading erzeugt.

Hier die gesamten Daten die vom Zähler empfangen wurden (Auszug aus dem Log):

/LGZ5\2ZMD3104407.B32
F.F(00000000)
0.0.0(50724832)
0.0.1(50724832)
0.1.0(20)
0.1.0*20(16-05-01 00:00)
0.1.0*19(16-04-01 00:00)
0.1.0*18(16-03-01 00:02)
0.1.0*17(16-02-01 00:00)
0.1.0*16(16-01-01 00:00)
0.1.0*15(15-12-01 00:00)
0.1.0*14(15-11-01 00:00)
0.1.0*13(15-10-01 00:00)
0.1.0*12(15-09-01 00:00)
0.1.0*11(15-08-01 00:00)
0.1.0*10(15-07-01 00:00)
0.1.0*09(15-06-01 00:00)
0.1.0*08(15-05-01 00:00)
0.1.0*07(15-04-01 00:00)
0.1.0*06(15-03-01 00:00)
0.9.1(20:35:32)
0.9.2(16-05-27)
1.4.0(05)(00.56*kW)
2.4.0(05)(00.00*kW)
9.4.0(05)(00.61*kVA)
10.4.0(05)(00.00*kVA)
1.6.0(10.55*kW)(16-05-02 19:30)
1.6.0*20(11.11)(16-04-29 19:30)
1.6.0*19(12.63)(16-03-05 19:45)
1.6.0*18(12.08)(16-02-22 15:15)
1.6.0*17(10.51)(16-01-23 08:45)
1.6.0*16(11.21)(15-12-14 16:30)
1.6.0*15(11.49)(15-11-13 09:15)
1.6.0*14(10.36)(15-10-23 08:45)
1.6.0*13(10.45)(15-09-24 08:45)
1.6.0*12(05.13)(15-08-10 21:15)
1.6.0*11(05.30)(15-07-22 20:45)
1.6.0*10(03.83)(15-06-02 19:00)
1.6.0*09(10.37)(15-05-02 19:00)
1.6.0*08(11.75)(15-04-02 19:30)
1.6.0*07(11.06)(15-03-15 08:15)
1.6.0*06(11.41)(15-02-24 20:00)
2.6.0(04.09*kW)(16-05-26 14:30)
2.6.0*20(03.87)(16-04-24 13:30)
2.6.0*19(03.86)(16-03-05 11:45)
2.6.0*18(03.11)(16-02-26 12:45)
2.6.0*17(02.53)(16-01-28 12:15)
2.6.0*16(02.22)(15-12-04 12:15)
2.6.0*15(02.64)(15-11-02 12:30)
2.6.0*14(03.10)(15-10-03 15:15)
2.6.0*13(03.48)(15-09-16 13:15)
2.6.0*12(03.49)(15-08-21 12:00)
2.6.0*11(03.59)(15-07-27 14:30)
2.6.0*10(04.04)(15-06-24 14:00)
2.6.0*09(03.96)(15-05-16 15:00)
2.6.0*08(04.05)(15-04-05 14:15)
2.6.0*07(03.84)(15-03-16 12:45)
2.6.0*06(03.13)(15-02-15 13:30)
9.6.0(11.34*kVA)(16-05-02 19:30)
9.6.0*20(11.87)(16-04-29 19:30)
9.6.0*19(13.40)(16-03-05 19:45)
9.6.0*18(12.88)(16-02-22 15:15)
9.6.0*17(11.39)(16-01-23 08:45)
9.6.0*16(12.09)(15-12-14 16:30)
9.6.0*15(12.31)(15-11-13 09:15)
9.6.0*14(11.14)(15-10-23 08:45)
9.6.0*13(11.27)(15-09-24 08:45)
9.6.0*12(05.44)(15-08-10 21:15)
9.6.0*11(05.64)(15-07-22 20:45)
9.6.0*10(04.31)(15-06-02 19:00)
9.6.0*09(11.15)(15-05-02 19:00)
9.6.0*08(12.39)(15-04-02 19:30)
9.6.0*07(11.71)(15-03-15 08:15)
9.6.0*06(12.06)(15-02-24 20:00)
10.6.0(04.10*kVA)(16-05-26 14:30)
10.6.0*20(03.88)(16-04-24 13:30)
10.6.0*19(03.87)(16-03-05 11:45)
10.6.0*18(03.12)(16-02-26 12:45)
10.6.0*17(02.54)(16-01-28 12:15)
10.6.0*16(02.23)(15-12-04 12:15)
10.6.0*15(02.65)(15-11-02 12:30)
10.6.0*14(03.15)(15-10-03 15:30)
10.6.0*13(03.52)(15-09-16 13:15)
10.6.0*12(03.49)(15-08-21 12:00)
10.6.0*11(03.60)(15-07-27 14:30)
10.6.0*10(04.06)(15-06-24 14:00)
10.6.0*09(03.97)(15-05-16 15:00)
10.6.0*08(04.07)(15-04-05 14:15)
10.6.0*07(03.85)(15-03-16 12:45)
10.6.0*06(03.28)(15-02-26 13:45)
1.8.1(007111.1*kWh)
1.8.1*20(006926.3)
1.8.1*19(006648.2)
1.8.1*18(006326.4)
1.8.1*17(005896.9)
1.8.1*16(004992.7)
1.8.1*15(004301.2)
1.8.1*14(003773.9)
1.8.1*13(003485.1)
1.8.1*12(003353.0)
1.8.1*11(003245.0)
1.8.1*10(003144.3)
1.8.1*09(003050.6)
1.8.1*08(002865.3)
1.8.1*07(002600.2)
1.8.1*06(002128.0)
1.8.2(000773.2*kWh)
1.8.2*20(000734.2)
1.8.2*19(000689.4)
1.8.2*18(000645.8)
1.8.2*17(000602.7)
1.8.2*16(000558.3)
1.8.2*15(000509.8)
1.8.2*14(000465.0)
1.8.2*13(000418.9)
1.8.2*12(000369.2)
1.8.2*11(000309.0)
1.8.2*10(000249.0)
1.8.2*09(000199.6)
1.8.2*08(000155.2)
1.8.2*07(000114.0)
1.8.2*06(000073.8)
2.8.1(005522.7*kWh)
2.8.1*20(005148.3)
2.8.1*19(004756.4)
2.8.1*18(004389.0)
2.8.1*17(004231.0)
2.8.1*16(004176.7)
2.8.1*15(004043.6)
2.8.1*14(003871.2)
2.8.1*13(003585.6)
2.8.1*12(003252.3)
2.8.1*11(002763.8)
2.8.1*10(002190.3)
2.8.1*09(001646.4)
2.8.1*08(001206.1)
2.8.1*07(000720.6)
2.8.1*06(000350.6)
2.8.2(000003.4*kWh)
2.8.2*20(000003.4)
2.8.2*19(000003.4)
2.8.2*18(000003.4)
2.8.2*17(000003.4)
2.8.2*16(000003.4)
2.8.2*15(000003.4)
2.8.2*14(000003.4)
2.8.2*13(000003.4)
2.8.2*12(000003.4)
2.8.2*11(000003.4)
2.8.2*10(000003.4)
2.8.2*09(000003.4)
2.8.2*08(000003.4)
2.8.2*07(000003.4)
2.8.2*06(000003.4)
5.8.0(001789.7*kvarh)
5.8.0*20(001731.1)
5.8.0*19(001641.7)
5.8.0*18(001536.6)
5.8.0*17(001390.8)
5.8.0*16(001222.9)
5.8.0*15(001013.4)
5.8.0*14(000858.8)
5.8.0*13(000779.3)
5.8.0*12(000740.0)
5.8.0*11(000703.9)
5.8.0*10(000667.8)
5.8.0*09(000629.4)
5.8.0*08(000570.3)
5.8.0*07(000492.8)
5.8.0*06(000400.2)
6.8.0(000104.1*kvarh)
6.8.0*20(000101.1)
6.8.0*19(000095.3)
6.8.0*18(000086.4)
6.8.0*17(000082.6)
6.8.0*16(000080.5)
6.8.0*15(000071.0)
6.8.0*14(000067.2)
6.8.0*13(000063.2)
6.8.0*12(000059.6)
6.8.0*11(000055.0)
6.8.0*10(000051.5)
6.8.0*09(000045.7)
6.8.0*08(000041.2)
6.8.0*07(000032.1)
6.8.0*06(000025.6)
7.8.0(000138.9*kvarh)
7.8.0*20(000128.8)
7.8.0*19(000119.3)
7.8.0*18(000111.3)
7.8.0*17(000106.3)
7.8.0*16(000103.9)
7.8.0*15(000099.2)
7.8.0*14(000094.1)
7.8.0*13(000087.5)
7.8.0*12(000080.2)
7.8.0*11(000071.4)
7.8.0*10(000065.7)
7.8.0*09(000060.0)
7.8.0*08(000047.5)
7.8.0*07(000029.2)
7.8.0*06(000013.3)
8.8.0(000383.8*kvarh)
8.8.0*20(000369.3)
8.8.0*19(000351.8)
8.8.0*18(000331.1)
8.8.0*17(000307.6)
8.8.0*16(000280.5)
8.8.0*15(000256.7)
8.8.0*14(000235.6)
8.8.0*13(000215.7)
8.8.0*12(000198.7)
8.8.0*11(000179.6)
8.8.0*10(000168.5)
8.8.0*09(000158.8)
8.8.0*08(000138.5)
8.8.0*07(000108.2)
8.8.0*06(000070.6)
C.7.0(00000004)
C.7.1(00000005)
C.7.2(00000003)
C.7.3(00000002)
32.32.0(0000)(00-00-00 00:00)
52.32.0(0000)(00-00-00 00:00)
72.32.0(0000)(00-00-00 00:00)
32.36.0(0001)(14-03-03 12:01)
52.36.0(0001)(14-03-03 12:01)
72.36.0(0001)(14-03-03 12:01)
32.7(232.4*V)
52.7(232.9*V)
72.7(230.4*V)
0.2.0(B32)
0.2.1(0DG61)
0.2.2(405)
0.2.8(F84F)
C.2.1(14-02-18 09:54)
C.8.1(00000000*min)
C.8.2(00808359*min)
C.90.1(50724832)
!
#


Anbei noch noch ein Screenshot der erzeugten Readings.

Vielleicht hat da ja noch jemand eine Idee oder kann eventuell sogar das Modul anpassen?

KölnSolar

Hi, ich verstehe Deine Frage nicht ganz:
ZitatEinige Readings werden während einem Auslesevorgang mehrfach aktualisiert (bzw überschrieben).
Überschrieben ? Ja und, wenn der Zähler aktuellere Daten liefert.
ZitatEine Folge: es wird nicht für alle Werte ein Reading erzeugt.
Wie kommst Du darauf, dass aus Deiner Sicht fehlende Readings eine Folge wären ? Welche Readings fehlen Dir denn bzw. wäre für Dich wichtig ? Die 4 Werte zu consumption/feed sind aber OK ?
Ggfs. das interval höher setzen, um alle Daten zu bekommen ?
Grüße, Markus

RPi3/2 buster/stretch-SamsungAV_E/N-RFXTRX-IT-RSL-NC5462-Oregon-CUL433-GT-TMBBQ-01e-CUL868-FS20-EMGZ-1W(GPIO)-DS18B20-CO2-USBRS232-USBRS422-Betty_Boop-EchoDot-OBIS(Easymeter-Q3/EMH-KW8)-PCA301(S'duino)-Deebot(mqtt2)-zigbee2mqtt

hypetsch

Hallo,

zuerst mal danke für deine Antwort. Ist etwas missverständlich formuliert.

@überschreiben/fehlende Readings: Nur als Beispiel (unabhängig davon ob die Werte später als Reading gebraucht werden) - der Zähler liefert unter "10.6.0" diese Werte:


10.6.0(04.10*kVA)(16-05-26 14:30)
10.6.0*20(03.88)(16-04-24 13:30)
10.6.0*19(03.87)(16-03-05 11:45)
10.6.0*18(03.12)(16-02-26 12:45)
10.6.0*17(02.54)(16-01-28 12:15)
10.6.0*16(02.23)(15-12-04 12:15)
10.6.0*15(02.65)(15-11-02 12:30)
10.6.0*14(03.15)(15-10-03 15:30)
10.6.0*13(03.52)(15-09-16 13:15)
10.6.0*12(03.49)(15-08-21 12:00)
10.6.0*11(03.60)(15-07-27 14:30)
10.6.0*10(04.06)(15-06-24 14:00)
10.6.0*09(03.97)(15-05-16 15:00)
10.6.0*08(04.07)(15-04-05 14:15)
10.6.0*07(03.85)(15-03-16 12:45)
10.6.0*06(03.28)(15-02-26 13:45)


Als Reading wird aber nur

10.6.0   15-02-26 13:45

angelegt - also die letzte empfange Zeile mit "10.6.0". Während dem Auslesen sieht man, dass die anderen Zeilen auch verarbeitet werden, aber eben das "10.6.0" Reading überschrieben wird.
Hoffe es ist jetzt klarer was ich gemeint habe.

Anderes Beispiel: Unter 9.6.0 liefert der Zähler laut Stromnetzbetreiber: "Lieferung (aus sicht des Betreibers) Wirkleistung aktuelles Monat".
Der Wert vom Reading ist aber nur ein Datum (Wert der letzten 9.6.0 Zeile).

@Die 4 Werte zu consumption/feed sind aber OK?
Habe ich ehrlich gesagt noch nicht geprüft - hoffe das geht sich bald mal aus. Zz ist es etwas stressig. Das ganze war nur mal ein schneller Test.

@Interval höher setzen: zZ hab ich es auf 10min. Nachdem die Abfrage 3 Minuten dauert - reicht es soweit ja. War nur eine Anmerkung, dass es eigentlich ja auch schneller gehen müsste wenn man die 9600 nutzen kann.

Noch einen schönen Sonntag.
LG Peter

KölnSolar

Hallo Peter, jetzt habe ich den Datensalat schon etwas besser verstanden ;)
Der Zähler liefert also x-fach historische Daten( zu einer OBIS-Kennzahl: x.y.z*ab) und die aktuellen Daten mit x.y.z und nur diese sollten dann im Reading landen(historische Daten machen wir uns in fhem ja selber ;)) Meinst Du das so ? Das könnte man Stefan zur Lichtung des Datensalats mal vorschlagen zu implementieren, vielleicht mit extra metertype, wenn es sich nicht anders lösen löst.
Grüße, Markus
RPi3/2 buster/stretch-SamsungAV_E/N-RFXTRX-IT-RSL-NC5462-Oregon-CUL433-GT-TMBBQ-01e-CUL868-FS20-EMGZ-1W(GPIO)-DS18B20-CO2-USBRS232-USBRS422-Betty_Boop-EchoDot-OBIS(Easymeter-Q3/EMH-KW8)-PCA301(S'duino)-Deebot(mqtt2)-zigbee2mqtt

hypetsch

Ja genau, das dürfen wohl historische Daten sein, bzw. Daten in der ersten Klammer und der Timestamp in der Zweiten.

Icinger

Hmm, das ist der erste Zähler, den ich sehe, der die hostorischen Daten mitschickt.

Workaround, da ich momentan nicht an meinen Laptop rankann:
Ändere die Zeile
if($rmsg=~/\/.*|^((?:\d{1,3}-\d{1,3}:)?\d{1,3}.\d{1,3}.\d{1,3})(?:\*\d{1,3})?(?:\(.*?\))?\(.*?\)|!/) { # old regex: \/.*|\d-\d{1,3}:\d{1,3}.\d{1,3}.\d{1,3}\*\d{1,3}\(.*?\)|!
auf
if($rmsg=~/\/.*|^((?:\d{1,3}-\d{1,3}:)?\d{1,3}.\d{1,3}.\d{1,3}(?:\*\d{1,3})?)(?:\(.*?\))?\(.*?\)|!/) { # old regex: \/.*|\d-\d{1,3}:\d{1,3}.\d{1,3}.\d{1,3}\*\d{1,3}\(.*?\)|!

Damit bekommst du für jede Zeile ein extra reading.

Um die Werte aus der ersten Klammer auszulesen, muss ich mir was einfallen lassen.
Da werde ich vmtl. um einen neuen MeterTyp nicht herumkommen, da es andere Meter gibt, die in der ERSTEN Klammer den Timestamp schicken und erst in der ZWEITEN Klammer dann den Wert.
Aktuell ist es so, dass der Inhalt der ersten Klammer einfach "vergessen" wird.

Ab Dienstag hab ich wieder zugang zu meiner Entwicklungsumgebung, da schau ich mal, was sich machen lässt.

lg, Stefan
Verwende deine Zeit nicht mit Erklärungen. Die Menschen hören (lesen) nur, was sie hören (lesen) wollen. (c) Paulo Coelho

hypetsch

Hallo Stefan,

klingt super, falls dann schon eine aktualisierte Version hast und ich dir diese testen soll, am Mittwoch Abend hab ich voraussichtlich Zeit.

LG Peter

hypetsch

Hallo,

mit der aktuellen Version bisher keine Probleme mehr. Danke für die schnelle Hilfe.

Nur der Vollständigkeit halber:

  • Auslesen geht aktuell nur mit 300 Baud (ist aber kein Problem - gibt ja eh keine wirklichen "Echtzeitwerte")
  • Die Readings 0.0.1, 0.2.1, 0.2.2 werden bei mir auch angelegt obwohl "ignoreUnknown" auf "on" steht.

lg Peter


Icinger

Hi Peter,

ok, muss mir das mit den Readings nochmal anschaun.
Hab morgen eh frei, und da es (voraussichtlich) regnen soll, evtl. auch Zeit :D

lg, Stefan
Verwende deine Zeit nicht mit Erklärungen. Die Menschen hören (lesen) nur, was sie hören (lesen) wollen. (c) Paulo Coelho