[OBIS V2] - Jetzt auch mit SML-Unterstützung

Begonnen von Icinger, 08 April 2016, 19:54:44

Vorheriges Thema - Nächstes Thema

klaso

Hallo zusammen,
ich habe das Modul zum Auslesen unseres Stromzählers im Einsatz, funktioniert hervorragend.

Ich habe nun festgestellt, dass unser Wärmemengenzähler Landis Gyr T550 Ultraheat ebenfalls über diese Schnittstelle verfügt. Etwas naiv dachte ich mir dann, ich könnte dieses Modul ebenfalls hierfür verwenden, muss nur die channels anpassen........weit bin ich also nicht gekommen ;-)
Doku habe ich keine gefunden, und am USB-Port mitlauschen brachte nichts.

Somit meine Frage an die Experten: Ist es überhaupt möglich, dieses Modul zum Tracken des Wärmemengenzählers zu verwenden?
Ich habe bei einem anderen Projekt folgenden Eintrag gefunden:
http://www.sedelmaier.at/content/siemens-uh50-landisgyr-ultraheat-t550-mit-openhab
https://github.com/lolodomo/openhab/commit/4aefdde25c11b751f92654526d814ae2920e10da

Hat jemand eine Idee, ob und wie ich das lösen kann?
Bin für jeden Tipp dankbar
Vielen Dank udn Grüsse
klaso
Raspberry Pi 2 B+; Software: Raspbian Jessie, Fhem 5.8
ZWave, Enocean, FBAHAHTTP, ENIGMA2
Barebone mit openmedivault und Fhem5.8, MySQL, MyObis, VBUS LAN-Adapter in Fhem, Homematic CCU2; Jeelink mit TX29IT, HMCCU: Schnittstelle CCU2 - FHEM

KölnSolar

dann gib doch erst mal Deine Erkenntnisse über den Zähler bekannt: muss er erst zum Senden animiert werden, pushed er, kommt irgend was mit verbose 5 im Log ? List des device.......
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

Icinger

Aus dem zweiten Link:

     private static final byte[] REQUEST_MESSAGE = new byte[] { (byte) 0x2F, (byte) 0x3F, (byte) 0x21, (byte) 0x0D,
             (byte) 0x0A };

     private static final byte[] ACKNOWLEDGE = new byte[] { (byte) 0x06, (byte) 0x30, (byte) 0x30, (byte) 0x30,
             (byte) 0x0D, (byte) 0x0A };


Sieht danach aus, als ob die Abfrage angestossen werden muss.

Würde mal mit Metertyp=VSM102 testen zB.

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

klaso

#93
Hallo,
ich habe mit unterschiedlichen Metertyp getestet, bei Metertyp VSM102 wird mit list MyObis zumindest etwas unter devices angezeigt, bei Metertyp Standard oder SML wird dort garnichts angezeigt.

Meine cfg:
define MyObis OBIS /dev/ttyUSB0@9600,8,N,1 VSM102
attr MyObis event-on-change-reading
attr MyObis verbose 5
define FileLog_MyObis FileLog ./log/%Y-%m-MyObis.log MyObis
attr FileLog_MyObis logtype text

andere Bautrate habe ich auch mal versucht => keine Änderung

das myObis-Log bleibt leer


im fhem-Log sehe ich folgendes:
2016.05.28 20:49:03.071 5: Cmd: >define MyObis OBIS /dev/ttyUSB0@9600,8,N,1 VSM102<
2016.05.28 20:49:03.071 5: Loading ./FHEM/47_OBIS.pm
2016.05.28 20:49:03.095 1: PERL WARNING: Smartmatch is experimental at ./FHEM/47_OBIS.pm line 360, <$fh> line 44.
2016.05.28 20:49:03.112 1: PERL WARNING: main::OBIS_decodeTL() called too early to check prototype at ./FHEM/47_OBIS.pm line 629, <$fh> line 44.
2016.05.28 20:49:03.142 5: OBIS (MyObis) - Internal timer set to 2016-05-28 20:59:03
2016.05.28 20:49:03.143 5: OBIS (MyObis) - Opening device...
2016.05.28 20:49:03.143 3: Opening MyObis device /dev/ttyUSB0
2016.05.28 20:49:03.241 3: Setting MyObis serial parameters to 9600,8,N,1
2016.05.28 20:49:03.250 3: MyObis device opened
2016.05.28 20:49:03.251 5: Cmd: >attr MyObis event-on-change-reading<
2016.05.28 20:49:03.252 5: Cmd: >attr MyObis verbose 5<
2016.05.28 20:49:03.253 5: Cmd: >define FileLog_MyObis FileLog ./log/%Y-%m-MyObis.log MyObis<
2016.05.28 20:49:03.254 5: Cmd: >attr FileLog_MyObis logtype text<
2016.05.28 20:49:03.256 1: Including /opt/fhem/log/fhem.save
2016.05.28 20:49:03.256 5: Cmd: >setstate FileLog_MyObis active<
2016.05.28 20:49:03.257 5: Cmd: >setstate Logfile active<
2016.05.28 20:49:03.258 5: Cmd: >setstate MyObis opened<
2016.05.28 20:49:03.258 5: Cmd: >setstate MyObis 2016-05-28 20:48:42 state opened<
2016.05.28 20:49:03.259 5: Cmd: >setstate autocreate active<
2016.05.28 20:49:03.259 5: Cmd: >setstate eventTypes active<
2016.05.28 20:49:03.260 5: Cmd: >setstate global <no definition><
2016.05.28 20:49:03.261 5: Triggering global (1 changes)
2016.05.28 20:49:03.261 5: Starting notify loop for global, first event INITIALIZED
2016.05.28 20:49:03.262 2: Messages collected while initializing FHEM
2016.05.28 20:49:03.265 0: Featurelevel: 5.7

list MyObis

Internals:
   DEF        /dev/ttyUSB0@9600,8,N,1 VSM102
   DeviceName /dev/ttyUSB0@9600,8,N,1
   FD         10
   MeterType  VSM102
   NAME       MyObis
   NR         25
   PARTIAL
   STATE      opened
   TYPE       OBIS
   Readings:
     2016-05-28 20:49:03   state           opened
   Helper:
     EoM        -1
     SPEED      5
     TRIGGERTIME 1464461343.14236
     DEVICES:
       /?!


       600
       050



ich finde zu diesem WMZ nur sehr "allgemiene" Informationen, bzw. Infos in welcher Ausstattung es diesen Zähler gibt. Ich habe keinerlei Infos gefunden zu Protokollen, etc. ( nur den oben erwähnten Beitrag in Verbindung mit Obenhab; aber dieses hatte ich schon, ich bleib bei fhem ;-) )

VG
klaso
Raspberry Pi 2 B+; Software: Raspbian Jessie, Fhem 5.8
ZWave, Enocean, FBAHAHTTP, ENIGMA2
Barebone mit openmedivault und Fhem5.8, MySQL, MyObis, VBUS LAN-Adapter in Fhem, Homematic CCU2; Jeelink mit TX29IT, HMCCU: Schnittstelle CCU2 - FHEM

Icinger

Argh, schon wieder so ein Kauderwelsch:
/LUGCUH50

6.8(0074900*kWh)6.26(04142.48*m3)9.21(66409080)
6.26*01(03957.55*m3)6.8*01(0071925*kWh)
F(0)9.20(66409080)6.35(60*m)
6.6(0016.2*kW)6.6*01(0015.3*kW)6.33(001.608*m3ph)9.4(094.4*C&092.9*C)
6.31(0046124*h)6.32(0000000*h)9.22(R)9.6(000&66409080&0&000&66409080&0)
9.7(60000)6.32*01(0000000*h)6.36(01-01&00:00)6.33*01(001.608*m3ph)
6.8.1()6.8.2()6.8.3()6.8.4()6.8.5()
6.8.1*01()6.8.2*01()6.8.3*01()
6.8.4*01()6.8.5*01()
9.4*01(094.4*C&092.9*C)
6.36.1(2016-01-18)6.36.1*01(2011-07-13)
6.36.2(2015-01-07)6.36.2*01(2015-01-07)
6.36.3(2014-12-23)6.36.3*01(2014-12-23)
6.36.4(2014-03-14)6.36.4*01(2014-03-14)
6.36.5()6.36*02(01&00:00)9.36(2016-02-12&19:36:08)9.24(1.5*m3ph)
9.17(0)9.18()9.19()9.25()
9.1(0&1&0&0000&CECV&CECV&1&5.16&5.16&F&101008&1>1>04&08&0)
9.2(&&)9.29()9.31(0014842*h)
9.0.1(00000000)9.0.2(00000000)9.34.1(000.00000*m3)9.34.2(000.00000*m3)
8.26.1(00000000*m3)8.26.2(00000000*m3)
8.26.1*01(00000000*m3)8.26.2*01(00000000*m3)
6.26.1()6.26.4()6.26.5()
6.26.1*01()6.26.4*01()6.26.5*01()0.0(66409080)
!

Hier steht was darüber:
http://www.sedelmaier.at/node/112
Verwende deine Zeit nicht mit Erklärungen. Die Menschen hören (lesen) nur, was sie hören (lesen) wollen. (c) Paulo Coelho

klaso

Vielen Dank, ich werde mich mal daran versuchen ;-)
VG
klaso
Raspberry Pi 2 B+; Software: Raspbian Jessie, Fhem 5.8
ZWave, Enocean, FBAHAHTTP, ENIGMA2
Barebone mit openmedivault und Fhem5.8, MySQL, MyObis, VBUS LAN-Adapter in Fhem, Homematic CCU2; Jeelink mit TX29IT, HMCCU: Schnittstelle CCU2 - FHEM

KölnSolar

Hi Stefan,
wenn ich es so richtig verstanden habe, hast Du ja früher auf x.y.z*255 für einen gültigen OBIS-Code abgefragt. Dann hatte dbox2user das Problem, dass dessen Zähler x.y.z*00 ausgibt und Du hattest dann den rexgexp so umgestellt, dass(spekuliere ich) alle numerischen Werte hinter dem * als gültig erkannt werden. Nun hat hier:
https://forum.fhem.de/index.php/topic,53906.0.html
jemand einen Zähler, der historische Werte mit x.y.z*ab(ab=01-20) liefert. Viel schlimmer scheint aber noch zu sein, dass der aktuelle Wert lediglich mit x.y.z, also ohne *irgendwas kommt. In den Readings steht natürlich mit der jetzigen Version immer einer der zuletzt gelesenen historischen und nicht der aktuelle Werte.
Lässt sich da etwas Sinnvolles z.B. über den metertype machen ? Oder über ein neues Attribut attr currValue mit "*255" für Standard, "*00" für den Fall von dbox2user und "" für diesen neuen Fall ?
Schönes RestWochenende, 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

Icinger

Hi Markus,

hab im anderen Thread schon geantwortet.

Ich überlege grade, was das kleinere Übel der beiden Lösungen ist, die mir grade einfallen:

1) Universeller, aber schlecht, weils alle bisherigen Nutzer betrifft:
das "*xxx" in die RegEx mitaufnehmen, somit würde für jede Zeile dann ein zusätzliches Reading erstellt, welches auch mit dem Channel-Attribut gemappt werden kann.

2) Spezieller, aber betrifft eben nur die Nutzer dieses einen Meters:
einen neuen Metertyp, und für diesen dann alle RegExes im Modul einzeln anpassen.

Ausserdem überlege ich grade, wie ich das mit der Baudrate machen könnte.
Grundsätzlich kann in der ersten Antwort ans Meter die zukünftige Baudrate mitgegeben werden.
Würde aber bedeuten, dass ich zuerst die Schnittstelle mit der Baudrate, die im define angegeben ist, öffnen muss, dann das Init schicken, und danach irgendwoher die Info bekommen muss, auf welche neue Speed der User denn umsteigen will.

Da dieses Init in der Define-Routine gesendet wird, kommt ein eventuelles Attribut leider zu spät.
Also entweder eine zusätzliche, optionale Angabe im Define-String, oder die Baudrate nach dem Init fix auf die höchstmögliche Geschwindigkeit setzen (was mir aber nicht so wirklich gefällt)

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

KölnSolar

sind ja erst 10 Nutzer und mit einem kleinen Kommentar beim Update..... ;)
Mit der Baudrate würd ich mir nicht so den Kopf machen. Wenn ich das so richtig gesehen habe, hat der Zähler keine Leistungsdaten und was will man dann mit häufigeren Updates der readings ?
Schönen Abend & Danke, 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

Icinger

Guten Morgen.

habe grade die neueste Version commited.

Neuigkeiten:
1) Auch solche Daten sollten jetzt erkannt werden:
+6.36.1(2016-01-18)
6.36.1*01(2011-07-13)
6.36.2(2015-01-07)
6.36.2*01(2015-01-07)


Es wird für JEDEN Datensatz ein reading angelegt. Wenn es zuviele werden, könnt ihr sie mit dem >channel"-Attribut mappen und dann "ignoreUnknown" setzen :)

2) Ein neues Attribut "bracketValue": Kann "first", "second" oder "both" sein.
Je nachdem, wird bei Datensätzen, die zwei Klammerpaare beinhalten, der erste oder zweite Wert genommen.
Bei "both" werden für beide Werte readings angelegt, jeweils mit "_1" und "_2"-Suffix.
zB:
0-1:24.2.1(160520140000S)(00043.563*m3)

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

KölnSolar

#100
Hallo Stefan,
nach knapp 24h Einsatz des geänderten Moduls, läuft es mit meinem pushenden Zähler stabil. Allerdings ist heute Nacht das erste Mal das passiert, was ich befürchtet hatte: ein "Schrottdatensatz" ist verarbeitet worden und hat ein Reading angelegt:
1.0.961.7.0*255   0.34    2016-06-06 04:19:35

Wenn ich jetzt für jedes neuerliche Schrott-Reading ein channel-Attribut setzen muss, um es auszuschließen, wird das arg zäh.
Da fand ich den vorherigen generellen Ausschluss sinnvoller.

Denkst Du auch noch an die Beseitigung der Log-Meldungen beim FHEM-Start:
2016.06.05 12:32:47 1: PERL WARNING: main::OBIS_decodeTL() called too early to check prototype at ./FHEM/47_OBIS.pm line 657, <> line 162
2016.06.05 12:32:59 1: PERL WARNING: Use of uninitialized value $1 in hash element at ./FHEM/47_OBIS.pm line 410.
2016.06.05 12:32:59 1: PERL WARNING: Use of uninitialized value $v2 in substitution (s///) at ./FHEM/47_OBIS.pm line 439

Grüße, Markus
Edit: und das kommt jetzt bei einem restart:
2016.06.06 08:56:13 3: WARNING: unsupported character in reading 1.0.0.0.0*255 (not A-Za-z/\d_\.-), notify the OBIS module maintainer.
2016.06.06 08:56:13 3: WARNING: unsupported character in reading 1.0.96.5.5*255 (not A-Za-z/\d_\.-), notify the OBIS module maintainer.
2016.06.06 08:56:13 3: WARNING: unsupported character in reading 1.0.961.7.0*255 (not A-Za-z/\d_\.-), notify the OBIS module maintainer.


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

Icinger

ZitatWenn ich jetzt für jedes neuerliche Schrott-Reading ein channel-Attribut setzen muss, um es auszuschließen, wird das arg zäh.
Da fand ich den vorherigen generellen Ausschluss sinnvoller.
Das gibts doch eh noch, setz einfach das "ignoreUnknown" auf on 8)

ZitatEdit: und das kommt jetzt bei einem restart:
Das wird vmtl. am statefile liegen, in dem noch Readingsleichen liegen.
Am einfachsten wär's, das komplette Device zu löschen und neu anzulegen.
zB die aktuelle Definition aus der Config kopieren, dann löschen, und dann wieder zB per Telnet copy&paste neu anzulegen.

Hmm, die Start-Meldungen kommen immer noch? Dachte eigentlich, die hätte ich endlich weg.
Da bin ich momentan aber echt mit meinem Latein am Ende, kA wo die noch herkommen :(

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

KölnSolar

#102
ZitatDas gibts doch eh noch, setz einfach das "ignoreUnknown" auf on 8)
Hab ich doch  >:(
Ich hatte Dich so verstanden, dass vermeintlich neue OBIS-Codes(also auch Schrott) erst einmal angelegt werden(wie auch immer das praktisch funktionieren sollte)
Aber warum hat dann das  ignoreUnknown nicht funktioniert ?  :(
2 früher erzeugte (aber unbedeutende) readings waren immer mit z.B. "1.0.0.0.0" angelegt worden. Mit der neuen Version mit "1.0.0.0.0*255". Das dachte ich wäre so gewollt. Aber hilft vielleicht eine Einschränkung zu definieren ? Im Moment lässt Du ja alles Mögliche zu, damit auch die Exoten(warum ist OBIS eigentlich ein Standard, wenn sich keiner dran hält) bedient werden.
ZitatDas wird vmtl. am statefile liegen, in dem noch Readingsleichen liegen.
Die haue ich morgen mal nach einem shutdown raus und restarte manuell. Werde berichten.
Gute Nacht
Edit: Da wolltest Du mich wohl aufs Glatteis führen  ;D Die vermeintlichen Readingsleichen sind gar keine Leichen, sondern exakt die Readings, erzeugt durch die neue Version, die ich gar nicht haben möchte  :'(
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

Icinger

Hi,

mit dem morgigen Update sollten diese unbeliebten x.x.x-Readings der Vergangenheit angehören.
Genauso wie die
2016.06.06 08:56:13 3: WARNING: unsupported character in reading 1.0.0.0.0*255 (not A-Za-z/\d_\.-), notify the OBIS module maintainer.
Fehlermeldungen.

lg, Stefan

Und das
Zitatwarum ist OBIS eigentlich ein Standard, wenn sich keiner dran hält
frag ich mich schon lange ^^
Verwende deine Zeit nicht mit Erklärungen. Die Menschen hören (lesen) nur, was sie hören (lesen) wollen. (c) Paulo Coelho

8byte

Zitat von: Icinger am 09 Juni 2016, 19:50:20
Hi,

mit dem morgigen Update sollten diese unbeliebten x.x.x-Readings der Vergangenheit angehören.
Genauso wie die
2016.06.06 08:56:13 3: WARNING: unsupported character in reading 1.0.0.0.0*255 (not A-Za-z/\d_\.-), notify the OBIS module maintainer.
Fehlermeldungen.

lg, Stefan

Und dasfrag ich mich schon lange ^^

Hi Icinger,

leider existiert das Problem nach dem Update weiterhin. Es ist sogar noch schlimmer geworden - bei mir existieren weiterhin die Fehlermeldungen und zusätzlich doppelt so viele Readings wie zuvor:


2016.06.10 22:34:59 3: WARNING: unsupported character in reading 1.0.0.0.9*255 (not A-Za-z/\d_\.-), notify the OBIS module maintainer.
2016.06.10 22:34:59 3: WARNING: unsupported character in reading 1.0.36.7.0*255 (not A-Za-z/\d_\.-), notify the OBIS module maintainer.
2016.06.10 22:34:59 3: WARNING: unsupported character in reading 1.0.56.7.0*255 (not A-Za-z/\d_\.-), notify the OBIS module maintainer.
2016.06.10 22:34:59 3: WARNING: unsupported character in reading 1.0.76.7.0*255 (not A-Za-z/\d_\.-), notify the OBIS module maintainer.
2016.06.10 22:34:59 3: WARNING: unsupported character in reading 129.129.199.130.3*255 (not A-Za-z/\d_\.-), notify the OBIS module maintainer.
2016.06.10 22:34:59 3: WARNING: unsupported character in reading 129.129.199.130.5*255 (not A-Za-z/\d_\.-), notify the OBIS module maintainer.