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

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

Vorheriges Thema - Nächstes Thema

gvzdus

Zitat von: friesenjung am 06 Februar 2021, 22:33:12
Der Log-Eintrag für die ReadyFN Funktion ist aber noch drin ;)

Krutzifix! Habe die Datei ausgetauscht. Du weisst ja, was wo löschen.

hdgucken

N'Abend Jungs, mußte mich mal etwas um die Familie kümmern  :)
Das sieht doch schon super aus, langsam wird es zum (fast) perfekten Modul  ;)

hdgucken

Das mit dem "CONNECTED" war nicht ganz korrekt vorhin, DevIo schickt einen Event an das OBIS Modul mit "CONNECTED", das könnte man dann in der function OBIS_Notify verarbeiten. Wäre vielleicht auch noch ein Ansatz ?!

hdgucken

Positive Rückmeldung auch von mir, Modul läuft soweit und der Fehler ist jetzt verschwunden:
PERL WARNING: main::OBIS_decodeTL() called too early to check prototype at ./FHEM/47_OBIS.pm line 855, <$fh> line 3876.
also noch ein Problem abgehakt  :)

Habe die OBIS_init etwas besser gemacht:
sub OBIS_Init($)
{
my ($hash) = @_;

Log 3,"$hash->{NAME} Init done";
 
  return undef;
}


Damit weiß man, wenn man ins Log schaut, welches Gerät initialisiert wurde  ;)
Könnte man evtl. auch noch Loglevel-abhängig machen.


gvzdus

Komm' - dann schon konsequent :-)
Logging ist in der angehängten Version durchgängig angepasst - und ich hoffe, die CPU-Last etwas weiter reduziert.

Außerdem habe ich jetzt die standardisierten Werte für die Phasen-Leistung aufgenommen, die "wir ISKRA"-Nutzer immer per Hand / channels eingeben:

my %OBIS_channels = (
                          "21"  =>"power_L1", # Positive active instantaneous power
                          "36"  =>"power_L1", # Sum active instantaneous power
                          "41"  =>"power_L2",
                          "56"  =>"power_L2",
                          "61"  =>"power_L3",
                          "76"  =>"power_L3",


Quelle: https://www.promotic.eu/en/pmdoc/Subsystems/Comm/PmDrivers/IEC62056_OBIS.htm

Violinux

Modul geht jetzt bei mir einwandfrei ohne Fehler. Tolle Arbeit, vielen Dank !

Icinger

Hallo Leute,

na, hier tut sich ja einiges :)

Kurz zur Info an alle: Ich hatte gerade ein längeres Telefonat mit Georg (gvzdus).
Er ist hier ja grade sehr aktiv ist und durchaus an der Weiterentwicklung interessiert. Im Gegensatz dazu fehlt mir einfach die Zeit dafür.

Ich habe ihm angeboten, die Maintainerschaft für das Modul zu übernehmen. Ich denke, das ist durchaus im Sinne der gesamten Community hier.

Somit gehört das 47_OBIS ab sofort ganz offiziell nicht mehr mir, sondern Georg. Rudi wurde ebenfalls schon darüber informiert.

Liebe Grüße aus dem aktuell sehr vereisten Weinviertel,

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

gvzdus

Herzlichen Dank für das Vertrauen, und ich möchte dann hiermit einmal klar feststellen:

Alle wesentlichen Funktionen des Codes sind unverändert von Stefan - falls sich jemand zum neuen Maintainer berufen fühlt - spätestens, wenn ich alt, griesgrämig und völlig untätig werde - soll es an Stefan sein, ggf. den neuen Maintainer zu berufen. Also: Ich "verwalte", "gehören" tut es für mich unverändert Stefan.

Dann möchte ich herzlich Mitleser bitten, die letzte Version hier im Thread zu testen. Denn ich werde sie dann morgen einchecken (1 Tag Warnfrist will ich noch lassen) - und dann lesen wir ja schon übermorgen hier, was der Neue alles so kaputt gemacht hat :-)

Und zum anderen: Herzlich gerne Code-Schnippsel beisteuern, oder wie beim DZG-Zähler ausgraben: "So kann man das machen - ich kann nur nicht selber programmieren".

papa

Zitat von: gvzdus am 07 Februar 2021, 14:07:36
Und zum anderen: Herzlich gerne Code-Schnippsel beisteuern, oder wie beim DZG-Zähler ausgraben: "So kann man das machen - ich kann nur nicht selber programmieren".
Ich hätte da ne komplette, neue Routine zum Zerlegen der Nachrichten. Ist aber nicht im Modul, sondern als extra Perl-Programm. Das ganze kommt komplett ohne RegEx aus und kann kontinuierlich mit den Daten gefüttert werden. Leider stehe ich mit Perl absolut auf Kriegsfuß und habe das ganze dann erst mal wieder weggelegt.
Ich hänge das hier einfach mal ran (inklusive meiner Beispieldaten) - vielleicht kannst Du es ja gebrauchen.

$ perl sml.pl  sml.bin
76  - 06
  05 00 86 c6 3e
  62 00
  62 00
  72  - 02
    63 01 01
    76  - 06
      01
      07 ff ff ff ff ff ff
      05 00 2c ec c0
      0b 0a 01 45 46 52 20 02 cd 46 bc
      72  - 02
        62 01
        64 a5 0f 67
      01
  63 83 f9
  00
76  - 06
  05 00 86 c6 3f
  62 00
  62 00
  72  - 02
    63 07 01
    77  - 07
255.255.255.255.255.255
      07 ff ff ff ff ff ff
      0b 0a 01 45 46 52 20 02 cd 46 bc
      07 01 00 62 0a ff ff
      72  - 02
        62 01
        64 a5 0f 67
      f1  - 16
        77  - 07
1.0.96.50.1.1
          07 01 00 60 32 01 01
          01
          01
          01
          01
          04 45 46 52
          01
        77  - 07
1.0.96.1.0.255
          07 01 00 60 01 00 ff
          01
          01
          01
          01
          0b 0a 01 45 46 52 20 02 cd 46 bc
          01
        77  - 07
1.0.1.8.0.255
          07 01 00 01 08 00 ff
          64 1c 00 04
          72  - 02
            62 01
            64 a5 0f 67
          62 1e
          52 ff
          64 64 04 53
          01
        77  - 07
1.0.2.8.0.255
          07 01 00 02 08 00 ff
          01
          72  - 02
            62 01
            64 a5 0f 67
          62 1e
          52 ff
          64 31 b3 0d
          01
        77  - 07
1.0.16.7.0.255
          07 01 00 10 07 00 ff
          01
          01
          62 1b
          52 00
          53 00 d4
          01
        77  - 07
1.0.32.7.0.255
          07 01 00 20 07 00 ff
          01
          01
          62 23
          52 ff
          63 08 ea
          01
        77  - 07
1.0.52.7.0.255
          07 01 00 34 07 00 ff
          01
          01
          62 23
          52 ff
          63 08 e4
          01
        77  - 07
1.0.72.7.0.255
          07 01 00 48 07 00 ff
          01
          01
          62 23
          52 ff
          63 08 e7
          01
        77  - 07
1.0.31.7.0.255
          07 01 00 1f 07 00 ff
          01
          01
          62 21
          52 fe
          62 14
          01
        77  - 07
1.0.51.7.0.255
          07 01 00 33 07 00 ff
          01
          01
          62 21
          52 fe
          62 74
          01
        77  - 07
1.0.71.7.0.255
          07 01 00 47 07 00 ff
          01
          01
          62 21
          52 fe
          62 51
          01
        77  - 07
1.0.81.7.1.255
          07 01 00 51 07 01 ff
          01
          01
          62 08
          52 00
          52 75
          01
        77  - 07
1.0.81.7.2.255
          07 01 00 51 07 02 ff
          01
          01
          62 08
          52 00
          53 00 ec
          01
        77  - 07
1.0.81.7.4.255
          07 01 00 51 07 04 ff
          01
          01
          62 08
          52 00
          53 01 19
          01
        77  - 07
1.0.81.7.15.255
          07 01 00 51 07 0f ff
          01
          01
          62 08
          52 00
          53 01 37
          01
        77  - 07
1.0.81.7.26.255
          07 01 00 51 07 1a ff
          01
          01
          62 08
          52 00
          53 01 1e
          01
        77  - 07
1.0.14.7.0.255
          07 01 00 0e 07 00 ff
          01
          01
          62 2c
          52 ff
          63 01 f3
          01
        77  - 07
1.0.0.2.0.0
          07 01 00 00 02 00 00
          01
          01
          01
          01
          06 30 33 2e 30 30
          01
        77  - 07
1.0.96.90.2.1
          07 01 00 60 5a 02 01
          01
          01
          01
          01
          03 42 bd
          01
        77  - 07
1.0.97.97.0.0
          07 01 00 61 61 00 00
          01
          01
          01
          01
          03 00 00
          01
        77  - 07
1.0.96.50.1.4
          07 01 00 60 32 01 04
          01
          01
          01
          01
          08 50 31 2e 32 2e 31 32
          01
        77  - 07
1.0.96.50.4.4
          07 01 00 60 32 04 04
          01
          01
          01
          01
          03 04 22
          01
      01
      01
  63 4b 64
  00
76  - 06
  05 00 86 c6 40
  62 00
  62 00
  72  - 02
    63 02 01
    71  - 01
      01
  63 3f f0
  00
BananaPi + CUL868 + CUL433 + HM-UART + 1Wire

hdgucken

Zitat von: gvzdus am 07 Februar 2021, 07:20:30
Komm' - dann schon konsequent :-)
Logging ist in der angehängten Version durchgängig angepasst - und ich hoffe, die CPU-Last etwas weiter reduziert.

Außerdem habe ich jetzt die standardisierten Werte für die Phasen-Leistung aufgenommen, die "wir ISKRA"-Nutzer immer per Hand / channels eingeben:

my %OBIS_channels = (
                          "21"  =>"power_L1", # Positive active instantaneous power
                          "36"  =>"power_L1", # Sum active instantaneous power
                          "41"  =>"power_L2",
                          "56"  =>"power_L2",
                          "61"  =>"power_L3",
                          "76"  =>"power_L3",


Quelle: https://www.promotic.eu/en/pmdoc/Subsystems/Comm/PmDrivers/IEC62056_OBIS.htm

Moin zusammen,
ich hab zwar noch mit der vorletzten Version getestet, aber sieht schon perfekt aus, Gerät meldet sich nach einiger Zeit als "disconnected", wenn ich es wieder einstecke, startet es wieder, super !
Hab mal zwei Bilder angehängt...
Man könnte eigentlich die Channel-Liste deutlich erweitern, Frage ist nur, was gebraucht bzw. genutzt oder auch überhaupt von den gängigen Zählern geliefert wird.
Ich habe zwei Logarex-Zähler vom Typ LK13BE803039, da sind die Ausgabedaten recht bescheiden aber gut dokumentiert, hänge auch ein Bild mit an.
Teste gleich mal die letzte Version !
Bis gleich ...

Icinger

ZitatMan könnte eigentlich die Channel-Liste deutlich erweitern, Frage ist nur, was gebraucht bzw. genutzt oder auch überhaupt von den gängigen Zählern geliefert wird.
Deswegen habe ich ja damals die Möglichkeit geschaffen, eigene Channels zu definieren :)
Verwende deine Zeit nicht mit Erklärungen. Die Menschen hören (lesen) nur, was sie hören (lesen) wollen. (c) Paulo Coelho

hdgucken

Zitat von: Icinger am 07 Februar 2021, 15:53:57
Deswegen habe ich ja damals die Möglichkeit geschaffen, eigene Channels zu definieren :)

Da hast Du auch wieder Recht, nur die gängigsten vordefinieren, seltener benötigte kann man sich ja relativ einfach dazu definieren.

Gruß Thomas

hdgucken

Hier noch die Registerbeschreibungen vom Logarex LK13BE...

hdgucken

#1108
@Georg: in der OBIS_define kannst Du noch die Zeile "my $netdev=0;" rausschmeißen.
              in der englischen html-doku fehlt noch das <br> hinter der ersten Zeile von "Example:"  ;)

gvzdus

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.