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

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

Vorheriges Thema - Nächstes Thema

hdgucken

Zitat von: gvzdus am 07 Februar 2021, 18:52:21
Also, ich bin ja noch frisch und hochmotiviert :-)

Meine Zielsetzung wäre schon, dass man - solange es nicht "conflicting" ist - möglichst viele Definitionen rein nimmt. Denn so schön das mit "channel" ist: Das ist ja auch durchaus eine kleine Hürde.

Die historischen Werte wurde ja auch schon gewünscht, und das kann ich auch verstehen, weil es halt erst "extChannels" finden, und dann Rätseln ist. Mein Vorschlag wäre, hier "extChannels" um einen Modus "auto" zu erweitern. In dem wird "255" immer zum Default wie bei off, und die anderen Werte werden als postfix drangehängt (last_1d / last_7d / last_30d / last_365d / since_rset - mein Vorschlag).

Wichtig ist m.E.: Es darf bei niemandem was beim Update kaputt gehen: Wenn ich "extChannels" on habe und mein "power.255" wird mir plötzlich zum "power" gemacht, bin ich sauer. Aber dann stehe ich ja explizit auf "on".

Frage: Gibt es ausser den historischen Werten Fälle mit "extChannel != 255" ?

@hdgucken: Ich gucke mal, was ich abtippe...
Plan ist aber:
Dienstag morgen ist die jetzt aktuelle Version im SVN
Ab Mittwoch dann weiter.

Das mit den historischen Werten (255 angehängt) hatte ich auch schon im Auge, gute Idee !
Weitere oft gewünschte Werte solltest Du auch mit reinnehmen, denke ich. Denn die nicht ganz so versierten Fhem User haben es dann doch einfacher  :)
Keinen Stress, stell erstmal die aktuelle Version rein, können ja weiter dran arbeiten  ;)

Gruß Thomas

gvzdus

Ich würde es erst mal als 255 oder 0 = Keine Extension programmieren. Beim Rest mit den vorgeschlagenen Namen. Mein ISKRA wirft keine historischen Zahlen aus. Aber etwas wie "last_month" oder "last_week" finde ich irreführend: Der letzte Monat ist der Januar aus Sicht von heute. Oder der Februar. Aber nicht die letzten 30 Tage.

Könnten die Inhaber von Zählern mit historischen Werten mal gucken, ob das wirklich die gleitenden letzten 7 Tage / 30 Tage etc. sind? Sollte ja einfach sein: Wenn es sich laufend ändert, ist es gleitend.

hdgucken

Zitat von: gvzdus am 07 Februar 2021, 20:44:58
Ich würde es erst mal als 255 oder 0 = Keine Extension programmieren. Beim Rest mit den vorgeschlagenen Namen. Mein ISKRA wirft keine historischen Zahlen aus. Aber etwas wie "last_month" oder "last_week" finde ich irreführend: Der letzte Monat ist der Januar aus Sicht von heute. Oder der Februar. Aber nicht die letzten 30 Tage.

Könnten die Inhaber von Zählern mit historischen Werten mal gucken, ob das wirklich die gleitenden letzten 7 Tage / 30 Tage etc. sind? Sollte ja einfach sein: Wenn es sich laufend ändert, ist es gleitend.

Beim Logarex kann ich die historischen Werte zu einem beliebigen Zeitpunkt zurücksetzen, also gleitend.

gvzdus

So, wie angekündigt: Ab morgen ist die neue 47_OBIS per FHEM-Update erhältlich. Mal gucken...

Am Rande:
Vielleicht ist es ja weit und breit bekannt, aber ein Charme am Einsatz von ser2net:

Mit dem Zusatz:
... max-connections=3
kann man erreichen, mit mehreren Software-Instanzen gleichzeitig die Werte zu lesen.
Ist für mich sehr hilfreich, um auf meinem Test-Raspi nach Lust und Laune mit echten Daten spielen zu können, ohne permanent einen vollen Restart meines "Arbeits-FHEMs" durchführen zu müssen, der auf Live-Daten vom Stromzähler für die Verbrauchersteuerung angewiesen ist.

ioT4db

Hi,

also der letzte Modulstand läuft bei mir nun 1 Tag.

Die Verbindungsproblematik scheint, unabhängig von stateFormat, sauber abgefangen zu sein.

Log-Auszug:
2021.02.08 12:19:39.008 1:  192.168.41.150:20001 disconnected, waiting to reappear (StromZ1)
2021.02.08 12:19:39.041 1:  192.168.41.150:20002 disconnected, waiting to reappear (StromZ2)
2021.02.08 12:19:39.050 1:  192.168.41.150:20010 disconnected, waiting to reappear (Mythz)
2021.02.08 12:20:39.398 1:  192.168.41.150:20010 reappeared (Mythz)
2021.02.08 12:21:37.534 3:  OBIS (StromZ2) - No data received for 118 seconds, resetting connection
2021.02.08 12:21:37.555 3:  OBIS (StromZ1) - No data received for 121 seconds, resetting connection
2021.02.08 12:22:37.545 3:  OBIS (StromZ2) - No data received for 178 seconds, resetting connection
2021.02.08 12:22:37.550 3:  OBIS (StromZ2) - Init done
2021.02.08 12:22:37.550 1:  192.168.41.150:20002 reappeared (StromZ2)
2021.02.08 12:22:37.570 3:  OBIS (StromZ1) - No data received for 181 seconds, resetting connection
2021.02.08 12:22:37.573 3:  OBIS (StromZ1) - Init done
2021.02.08 12:22:37.573 1:  192.168.41.150:20001 reappeared (StromZ1)



Die Channels kommen bei meinem ISKRA nun auch Standardmäßig an, brauche also das Channels-Attribut nicht mehr  :)


Was mir aufgefallen ist, dass sowas hin und wieder kommt:
Habt Ihr das auch?
2021.02.08 05:32:13.811 3:  OBIS - Empty datagram: .010163B68900760502604F456200620072630201710163EB2A001B1B1B1B1A007707
2021.02.08 05:32:13.811 1:  PERL WARNING: Use of uninitialized value $list[1] in hex at ./FHEM/47_OBIS.pm line 405.
2021.02.08 05:32:13.811 1:  PERL WARNING: Use of uninitialized value $list[2] in hex at ./FHEM/47_OBIS.pm line 405.
2021.02.08 05:32:13.811 1:  PERL WARNING: Use of uninitialized value $list[3] in hex at ./FHEM/47_OBIS.pm line 405.
2021.02.08 05:32:13.811 1:  PERL WARNING: Use of uninitialized value $list[4] in hex at ./FHEM/47_OBIS.pm line 405.
2021.02.08 05:32:13.812 1:  PERL WARNING: Use of uninitialized value $list[5] in hex at ./FHEM/47_OBIS.pm line 405.
2021.02.08 05:32:13.815 3:  OBIS (StromZ1) - Unknown Message: 0-0:0.0.0*255()



Ansonsten wäre es vlt. noch schön zu jedem OBIS-spezifischen Attribut etwas in der Commandref zu finden. Beispielsweise habe ich keine Erklärung zu "extChannels" gefunden. Wahrscheinlich gibts noch ein paar Attribute, die vom OBIS-Modul kommen und dort nicht auftauchen?

Ansonsten bleibt mir nur nochmal ein Lob an alle Beteiligten loszuwerden!

VG...
FHEM auf Synology mittels Docker,  Jeelink-Clone 1x für PCA301 und 1x für Lacrosse, THZ304SOL, Homematic: CUL_HM / M-MOD-RPI-PCB, Pushover, Xiaomi s50

gvzdus

Zitat von: friesenjung am 08 Februar 2021, 14:02:14
Was mir aufgefallen ist, dass sowas hin und wieder kommt:
Habt Ihr das auch?

2021.02.08 05:32:13.811 3:  OBIS - Empty datagram: .010163B68900760502604F456200620072630201710163EB2A001B1B1B1B1A007707
2021.02.08 05:32:13.811 1:  PERL WARNING: Use of uninitialized value $list[1] in hex at ./FHEM/47_OBIS.pm line 405.
2021.02.08 05:32:13.811 1:  PERL WARNING: Use of uninitialized value $list[2] in hex at ./FHEM/47_OBIS.pm line 405.
...

Das scheint mir ein vergessenes "next" im Code zu sein. Bei mir treten keine "Empty datagrams" auf. Könntest Du bitte die Zeile suchen und ändern?
                        if (!@list) {Log3 $hash,3,"OBIS - Empty datagram: .$msg";next};


Das "next" sollte zwar nur Gutes bewirken, aber Schleifen zu verkürzen hat immer das Restrisiko, sie endlos zu machen.
Erfolgsmeldung wäre ein "Empty datagram" im Logfile ohne die Warnings danach (und ein noch laufendes FHEM :-) ) - dann nehme ich es auf.

Zitat von: friesenjung am 08 Februar 2021, 14:02:14
Ansonsten wäre es vlt. noch schön zu jedem OBIS-spezifischen Attribut etwas in der Commandref zu finden. Beispielsweise habe ich keine Erklärung zu "extChannels" gefunden. Wahrscheinlich gibts noch ein paar Attribute, die vom OBIS-Modul kommen und dort nicht auftauchen?

Ich kann mal forschen. extChannels zu dokumentieren bietet sich ja an, wenn ich das "auto" wie vorgeschlagen implementiere.

ioT4db

Zitat von: gvzdus am 08 Februar 2021, 14:32:42
...
Erfolgsmeldung wäre ein "Empty datagram" im Logfile ohne die Warnings danach (und ein noch laufendes FHEM :-) ) - dann nehme ich es auf.
...
Habs grad eingespielt und schon ein "Empty datagram" im Logfile ohne die Warnings danach und Fhem läuft noch  :) Ich berichte dann morgen mehr...
FHEM auf Synology mittels Docker,  Jeelink-Clone 1x für PCA301 und 1x für Lacrosse, THZ304SOL, Homematic: CUL_HM / M-MOD-RPI-PCB, Pushover, Xiaomi s50

gvzdus

Klasse, Danke!

Anbei nun eine Version, die wie vorgeschlagen:

  • extChannels dokumentiert
  • per Default im Modus "auto" ist und "sprechende" Postfixe anhängt

Wäre nett, wenn es jemand mit einem der Zähler testet - bei Erfolgsmeldung wäre es dann in der "Mittwoch"-Offiziell-Version.

Anleitung:
- Kommen ohne "extChannel"-Attribut (oder mit explizitem "auto") automatisch die historischen Werte? Wirken die passend?
- Allgemein: Tauchen die Postfixe irgendwo auf, wo sie Unsinn sind?
- Verhalten bei "on" sollte unverändert sein.

Der Patch mit "next" ist auch drin.

Nur noch ein Hinweis für nicht so FHEM-Versierte: Den "Schrott", der beim Testing entsteht (z.B. Readings mit ".255" am Ende) kann man mit "deletereading <devicename> <muster>" wegräumen, also z.B. deletereading myobis .*255

hdgucken

Zitat von: gvzdus am 08 Februar 2021, 21:27:24
Klasse, Danke!

Da schließe ich mich an  :)

ZitatAnbei nun eine Version, die wie vorgeschlagen:

  • extChannels dokumentiert
  • per Default im Modus "auto" ist und "sprechende" Postfixe anhängt

Wäre nett, wenn es jemand mit einem der Zähler testet - bei Erfolgsmeldung wäre es dann in der "Mittwoch"-Offiziell-Version.

Anleitung:
- Kommen ohne "extChannel"-Attribut (oder mit explizitem "auto") automatisch die historischen Werte? Wirken die passend?
- Allgemein: Tauchen die Postfixe irgendwo auf, wo sie Unsinn sind?
- Verhalten bei "on" sollte unverändert sein.

Der Patch mit "next" ist auch drin.

Habe es soeben getestet, funktioniert, wie beschrieben: "extChannels=on" es bleibt alles, wie es war.
Bei "extCannels=Auto" kommen die historischen Werte in lesbarer Form und wie gewohnt "total_consumption" und "total_feed" ohne die Endung ".255".
Perfekt gemacht !

Gruß Thomas

gvzdus

Danke.

Dann haue ich jetzt doch noch in das Release für morgen rein, ist also morgen offiziell!

Violinux

Ergebnis kann ich auch bei meinem ISKRA MT175 bestätigen. Echt cool.
Gruß Uwe

Violinux

#1121
Ist das korrekt, wenn "interval" z.B. auf 180 gesetzt ist, jede Minute ein Reset und eine neue Initialisierung stattfindet ?

z.B.
2021.02.08 23:58:30 1: /dev/serial/by-id/usb-FTDI_FT230X_Basic_UART_D309V5ZE-if00-port0 reappeared (ISK)
2021.02.09 00:00:30 3: OBIS (ISK) - No data received for 111 seconds, resetting connection
2021.02.09 00:00:30 3: OBIS (ISK) - Init done
2021.02.09 00:00:30 1: /dev/serial/by-id/usb-FTDI_FT230X_Basic_UART_D309V5ZE-if00-port0 reappeared (ISK)
2021.02.09 00:01:30 3: OBIS (ISK) - No data received for 171 seconds, resetting connection
2021.02.09 00:01:30 3: OBIS (ISK) - Init done
2021.02.09 00:01:30 1: /dev/serial/by-id/usb-FTDI_FT230X_Basic_UART_D309V5ZE-if00-port0 reappeared (ISK)
2021.02.09 00:03:30 3: OBIS (ISK) - No data received for 111 seconds, resetting connection
2021.02.09 00:03:30 3: OBIS (ISK) - Init done
2021.02.09 00:03:30 1: /dev/serial/by-id/usb-FTDI_FT230X_Basic_UART_D309V5ZE-if00-port0 reappeared (ISK)
2021.02.09 00:04:30 3: OBIS (ISK) - No data received for 171 seconds, resetting connection
2021.02.09 00:04:30 3: OBIS (ISK) - Init done

(Verbose 3)
Gruß Uwe



gvzdus

Auf die Schnelle sollte "resetAfterNoDataTime" auf 240 (also höher als Poll-Intervall) setzen helfen, aber der Reset sollte auch nicht schaden.

Lass' uns mal die Tage über den Sinn von pollTime sprechen! Mir erscheint das möglicherweise ungenau, und den Sinn möchte ich auch verstehen - jenseits von CPU. Ich lese auch punktgenau (stündlich, täglich) Zählerstände ab und bilde Tageswerte - mit at-Jobs. Aber erstmal gucken, ob ab morgen hier Tomatenwürfe im Forum auftauchen...

papa

Ich habe jetzt auch mal die letzte Version versucht - leider habe ich dann folgende Probleme:
2021.02.09 08:36:23 1: PERL WARNING: Use of uninitialized value $tmp2 in concatenation (.) or string at ./FHEM/47_OBIS.pm line 892.
2021.02.09 08:36:23 1: stacktrace:
2021.02.09 08:36:23 1:     main::__ANON__                      called by ./FHEM/47_OBIS.pm (892)
2021.02.09 08:36:23 1:     main::OBIS_decodeTL                 called by ./FHEM/47_OBIS.pm (403)
2021.02.09 08:36:23 1:     main::OBIS_trySMLdecode             called by ./FHEM/47_OBIS.pm (515)
2021.02.09 08:36:23 1:     main::OBIS_Parse                    called by ./FHEM/47_OBIS.pm (321)
2021.02.09 08:36:23 1:     main::OBIS_Read                     called by fhem.pl (3818)
2021.02.09 08:36:23 1:     main::CallFn                        called by fhem.pl (822)
2021.02.09 08:36:23 1: PERL WARNING: Use of uninitialized value $tmp2 in concatenation (.) or string at ./FHEM/47_OBIS.pm line 892.
2021.02.09 08:36:23 1: stacktrace:
2021.02.09 08:36:23 1:     main::__ANON__                      called by ./FHEM/47_OBIS.pm (892)
2021.02.09 08:36:23 1:     main::OBIS_decodeTL                 called by ./FHEM/47_OBIS.pm (403)
2021.02.09 08:36:23 1:     main::OBIS_trySMLdecode             called by ./FHEM/47_OBIS.pm (515)
2021.02.09 08:36:23 1:     main::OBIS_Parse                    called by ./FHEM/47_OBIS.pm (321)
2021.02.09 08:36:23 1:     main::OBIS_Read                     called by fhem.pl (3818)
2021.02.09 08:36:23 1:     main::CallFn                        called by fhem.pl (822)
2021.02.09 08:36:23 1: PERL WARNING: Use of uninitialized value $tmp2 in concatenation (.) or string at ./FHEM/47_OBIS.pm line 892.
2021.02.09 08:36:23 1: stacktrace:
2021.02.09 08:36:23 1:     main::__ANON__                      called by ./FHEM/47_OBIS.pm (892)
2021.02.09 08:36:23 1:     main::OBIS_decodeTL                 called by ./FHEM/47_OBIS.pm (403)
2021.02.09 08:36:23 1:     main::OBIS_trySMLdecode             called by ./FHEM/47_OBIS.pm (515)
2021.02.09 08:36:23 1:     main::OBIS_Parse                    called by ./FHEM/47_OBIS.pm (321)
2021.02.09 08:36:23 1:     main::OBIS_Read                     called by fhem.pl (3818)
2021.02.09 08:36:23 1:     main::CallFn                        called by fhem.pl (822)
2021.02.09 08:36:23 1: PERL WARNING: Use of uninitialized value $tmp2 in concatenation (.) or string at ./FHEM/47_OBIS.pm line 892.
2021.02.09 08:36:23 1: stacktrace:
2021.02.09 08:36:23 1:     main::__ANON__                      called by ./FHEM/47_OBIS.pm (892)
2021.02.09 08:36:23 1:     main::OBIS_decodeTL                 called by ./FHEM/47_OBIS.pm (403)
2021.02.09 08:36:23 1:     main::OBIS_trySMLdecode             called by ./FHEM/47_OBIS.pm (515)
2021.02.09 08:36:23 1:     main::OBIS_Parse                    called by ./FHEM/47_OBIS.pm (321)
2021.02.09 08:36:23 1:     main::OBIS_Read                     called by fhem.pl (3818)
2021.02.09 08:36:23 1:     main::CallFn                        called by fhem.pl (822)
2021.02.09 08:36:23 1: PERL WARNING: Use of uninitialized value $tmp2 in concatenation (.) or string at ./FHEM/47_OBIS.pm line 892.
2021.02.09 08:36:23 1: stacktrace:
2021.02.09 08:36:23 1:     main::__ANON__                      called by ./FHEM/47_OBIS.pm (892)
2021.02.09 08:36:23 1:     main::OBIS_decodeTL                 called by ./FHEM/47_OBIS.pm (403)
2021.02.09 08:36:23 1:     main::OBIS_trySMLdecode             called by ./FHEM/47_OBIS.pm (515)
2021.02.09 08:36:23 1:     main::OBIS_Parse                    called by ./FHEM/47_OBIS.pm (321)
2021.02.09 08:36:23 1:     main::OBIS_Read                     called by fhem.pl (3818)
2021.02.09 08:36:23 1:     main::CallFn                        called by fhem.pl (822)
2021.02.09 08:36:23 1: PERL WARNING: Use of uninitialized value $tmp2 in concatenation (.) or string at ./FHEM/47_OBIS.pm line 892.
2021.02.09 08:36:23 1: stacktrace:
2021.02.09 08:36:23 1:     main::__ANON__                      called by ./FHEM/47_OBIS.pm (892)
2021.02.09 08:36:23 1:     main::OBIS_decodeTL                 called by ./FHEM/47_OBIS.pm (403)
2021.02.09 08:36:23 1:     main::OBIS_trySMLdecode             called by ./FHEM/47_OBIS.pm (515)
2021.02.09 08:36:23 1:     main::OBIS_Parse                    called by ./FHEM/47_OBIS.pm (321)
2021.02.09 08:36:23 1:     main::OBIS_Read                     called by fhem.pl (3818)
2021.02.09 08:36:23 1:     main::CallFn                        called by fhem.pl (822)
2021.02.09 08:36:23 1: PERL WARNING: Use of uninitialized value in numeric gt (>) at ./FHEM/47_OBIS.pm line 898.
2021.02.09 08:36:23 1: stacktrace:
2021.02.09 08:36:23 1:     main::__ANON__                      called by ./FHEM/47_OBIS.pm (898)
2021.02.09 08:36:23 1:     main::OBIS_decodeTL                 called by ./FHEM/47_OBIS.pm (403)
2021.02.09 08:36:23 1:     main::OBIS_trySMLdecode             called by ./FHEM/47_OBIS.pm (515)
2021.02.09 08:36:23 1:     main::OBIS_Parse                    called by ./FHEM/47_OBIS.pm (321)
2021.02.09 08:36:23 1:     main::OBIS_Read                     called by fhem.pl (3818)
2021.02.09 08:36:23 1:     main::CallFn                        called by fhem.pl (822)


Wahrscheinlich das selbe Problem/Fix wie hier schon mal beschrieben.
https://forum.fhem.de/index.php/topic,51948.msg1085400.html#msg1085400
BananaPi + CUL868 + CUL433 + HM-UART + 1Wire

ioT4db

Zitat von: friesenjung am 08 Februar 2021, 21:14:57
Habs grad eingespielt und schon ein "Empty datagram" im Logfile ohne die Warnings danach und Fhem läuft noch  :) Ich berichte dann morgen mehr...

Moin,

ich habe mal alle OBIS-relevanten Einträge zusammengefasst, seitdem ich das Modul um ca. 21:30 eingespielt hatte:

2021.02.08 22:11:07.317 1:  PERL WARNING: substr outside of string at ./FHEM/47_OBIS.pm line 882.
2021.02.08 22:11:07.317 1:  PERL WARNING: Use of uninitialized value in numeric gt (>) at ./FHEM/47_OBIS.pm line 898.
2021.02.08 22:11:07.317 1:  PERL WARNING: Use of uninitialized value $dataT in numeric eq (==) at ./FHEM/47_OBIS.pm line 421.
2021.02.08 22:11:07.317 1:  PERL WARNING: Use of uninitialized value $data in substitution (s///) at ./FHEM/47_OBIS.pm line 428.
2021.02.08 22:11:07.317 1:  PERL WARNING: Use of uninitialized value $data in substitution (s///) at ./FHEM/47_OBIS.pm line 429.
2021.02.08 22:11:07.317 1:  PERL WARNING: Use of uninitialized value $data in string at ./FHEM/47_OBIS.pm line 430.
2021.02.08 22:11:07.318 1:  PERL WARNING: Use of uninitialized value $msg in pattern match (m//) at ./FHEM/47_OBIS.pm line 409.
2021.02.08 22:11:07.318 3:  OBIS (StromZ1) - Unknown Message: 215-112:120.24.28*255()
...
...
...
2021.02.09 00:00:59.903 3:  OBIS (StromZ1) - Unknown Message: 0-27:27.27.27*255()
2021.02.09 03:16:04.136 1:  PERL WARNING: Use of uninitialized value $tmp2 in concatenation (.) or string at ./FHEM/47_OBIS.pm line 892.
...
2021.02.09 04:06:59.602 3:  OBIS (StromZ2) - Unknown Message: 0-27:27.27.27*255()
...
2021.02.09 06:08:23.599 3:  OBIS - Empty datagram: .01016388A800760502638DAF62006200726302017101631B75001B1B1B1B1A007707
...



VG

FHEM auf Synology mittels Docker,  Jeelink-Clone 1x für PCA301 und 1x für Lacrosse, THZ304SOL, Homematic: CUL_HM / M-MOD-RPI-PCB, Pushover, Xiaomi s50