Ankündigung

Einklappen
Keine Ankündigung bisher.

SML Plugin - Datenblock Größenfehler

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

    #31
    So doch noch geschafft. Probier mal aus und gib Feeedback. Vorzugsweise über Gitter ...
    Angehängte Dateien

    Kommentar


      #32
      Habe die neuste Version ausprobiert. Läuft bei mir bisher seit einem Tag ohne Fehler

      Danke!

      Kommentar


        #33
        bmx
        Hallo,
        ich teste das smlx2 Plugin mit meinem Zähler Landis&Gyr E220. Logging steht auf DEBUG.
        Es kommt zu einer Fehlermeldung:

        Code:
        2019-01-14  21:56:11 DEBUG    plugins.sml2.Sml Polling Smartmeter now
        2019-01-14  21:56:11 INFO     plugins.sml2.Sml Sml: Connected to serial:///dev/ttyUSB_volkszaehler
        2019-01-14  21:56:11 DEBUG    plugins.sml2.Sml connected, try to query
        2019-01-14  21:56:11 DEBUG    plugins.sml2.Sml start read
        2019-01-14  21:56:14 DEBUG    plugins.sml2.Sml Read 1024 bytes
        2019-01-14  21:56:14 DEBUG    plugins.sml2.Sml Start sequence marker bytearray(b'\x1b\x1b\x1b\x1b\x01\x01\x01\x01') found
        2019-01-14  21:56:14 DEBUG    plugins.sml2.Sml End sequence marker found
        2019-01-14  21:56:14 DEBUG    plugins.sml2.Sml packet size is 260
        2019-01-14  21:56:14 DEBUG    plugins.sml2.Sml 2 fill bytes 
        2019-01-14  21:56:14 DEBUG    plugins.sml2.Sml checksum is 34175
        2019-01-14  21:56:14 DEBUG    plugins.sml2.Sml buffer length is 274
        2019-01-14  21:56:14 DEBUG    plugins.sml2.Sml buffer is bytearray(b'\x1b\x1b\x1b\x1b\x01\x01\x01\x01v\x05\x02\xdd\xa3\xfbb\x00b\x00rc\x01\x01v\x01\x07\xff\xff\xff\xff\xff\xff\x05\x00\xf4\x8b\xfe\x0b\n\x01LGZ\x00\x02\x8c\x0fLrb\x01e\x00\xf4\x8f\xb5\x01cL\x91\x00v\x05\x02\xdd\xa3\xfcb\x00b\x00rc\x07\x01w\x07\xff\xff\xff\xff\xff\xff\x0b\n\x01LGZ\x00\x02\x8c\x0fL\x07\x01\x00b\n\xff\xffrb\x01e\x00\xf4\x8f\xb5uw\x07\x01\x00`2\x01\x01\x01\x01\x01\x01\x04LGZ\x01w\x07\x01\x00`\x01\x00\xff\x01\x01\x01\x01\x0b\n\x01LGZ\x00\x02\x8c\x0fL\x01w\x07\x01\x00\x01\x08\x00\xffe\x00\x1c\x01\x04rb\x01e\x00\xf4\x8f\xb5b\x1eR\xffi\x00\x00\x00\x00\x01\x0e\x96*\x01w\x07\x01\x00\x02\x08\x00\xff\x01rb\x01e\x00\xf4\x8f\xb5b\x1eR\xffi\x00\x00\x00\x00\x00\x00\x00\x00\x01w\x07\x01\x00\x10\x07\x00\xff\x01\x01b\x1bR\x00Y\x00\x00\x00\x00\x00\x00\x01\x99\x01\x01\x01c\xb5\xeb\x00v\x05\x02\xdd\xa3\xfdb\x00b\x00rc\x02\x01q\x01c\xbc]\x00\x00\x00\x1b\x1b\x1b\x1b\x1a\x02')
        2019-01-14  21:56:14 DEBUG    plugins.sml2.Sml calculated checksum is 0x857f, given crc is 0x857f
        2019-01-14  21:56:14 DEBUG    plugins.sml2.Sml Checksum was ok, now parse the data_package
        2019-01-14  21:56:14 DEBUG    plugins.sml2.Sml Data: 76 05 02 dd a3 fb 62 00 62 00 72 63 01 01 76 01 07 ff ff ff ff ff ff 05 00 f4 8b fe 0b 0a 01 4c 47 5a 00 02 8c 0f 4c 72 62 01 65 00 f4 8f b5 01 63 4c 91 00 76 05 02 dd a3 fc 62 00 62 00 72 63 07 01 77 07 ff ff ff ff ff ff 0b 0a 01 4c 47 5a 00 02 8c 0f 4c 07 01 00 62 0a ff ff 72 62 01 65 00 f4 8f b5 75 77 07 01 00 60 32 01 01 01 01 01 01 04 4c 47 5a 01 77 07 01 00 60 01 00 ff 01 01 01 01 0b 0a 01 4c 47 5a 00 02 8c 0f 4c 01 77 07 01 00 01 08 00 ff 65 00 1c 01 04 72 62 01 65 00 f4 8f b5 62 1e 52 ff 69 00 00 00 00 01 0e 96 2a 01 77 07 01 00 02 08 00 ff 01 72 62 01 65 00 f4 8f b5 62 1e 52 ff 69 00 00 00 00 00 00 00 00 01 77 07 01 00 10 07 00 ff 01 01 62 1b 52 00 59 00 00 00 00 00 00 01 99 01 01 01 63 b5 eb 00 76 05 02 dd a3 fd 62 00 62 00 72 63 02 01 71 01 63 bc 5d 00 00 00
        2019-01-14  21:56:14 WARNING  plugins.sml2.Sml Can not parse entity at position 118, byte 52: unsupported operand type(s) for ** or pow(): 'int' and 'list': 77 07 ff ff ff ff ff ff 0b 0a 01 4c 47 5a 00 02 8c 0f 4c 07 01 00 62 0a ff ff 72 62 01 65 00 f4 8f b5 75 77 07 01 00 60 32 01 01 01 01 01 01 04 4c 47 5a 01 77 07 01 00 60 01 00 ff 01 01 01 01...
        2019-01-14  21:56:14 DEBUG    plugins.sml2.Sml Entry {'obis': '1-0:1.8.0*255', 'scaler': -1, 'valTime': [None, 16027573], 'signature': None, 'status': 1835268, 'value': 17733162, 'unitName': 'Wh', 'unit': 30, 'valueReal': 1773316.2000000002, 'objName': b'\x01\x00\x01\x08\x00\xff'}
        2019-01-14  21:56:14 DEBUG    plugins.sml2.Sml Entry {'obis': '1-0:96.1.0*255', 'scaler': None, 'valTime': None, 'signature': None, 'status': None, 'value': b'\n\x01LGZ\x00\x02\x8c\x0fL', 'unitName': None, 'unit': None, 'valueReal': b'\n\x01LGZ\x00\x02\x8c\x0fL', 'objName': b'\x01\x00`\x01\x00\xff'}
        2019-01-14  21:56:14 INFO     stromzaehler.bezug.energie-eval Update item: stromzaehler.bezug.energie, item has been changed outside this plugin
        2019-01-14  21:56:14 DEBUG    plugins.sml2.Sml Entry {'obis': '1-0:16.7.0*255', 'scaler': 0, 'valTime': None, 'signature': None, 'status': None, 'value': 409, 'unitName': 'W', 'unit': 27, 'valueReal': 409, 'objName': b'\x01\x00\x10\x07\x00\xff'}
        2019-01-14  21:56:14 INFO     plugins.sml2.Sml Update item: stromzaehler.bezug.leistung, item has been changed outside this plugin
        2019-01-14  21:56:14 DEBUG    plugins.sml2.Sml Entry {'obis': '1-0:2.8.0*255', 'scaler': -1, 'valTime': [None, 16027573], 'signature': None, 'status': None, 'value': 0, 'unitName': 'Wh', 'unit': 30, 'valueReal': 0.0, 'objName': b'\x01\x00\x02\x08\x00\xff'}
        2019-01-14  21:56:14 INFO     plugins.sml2.Sml Sml: Disconnected!
        2019-01-14  21:56:14 DEBUG    plugins.sml2.Sml cycle takes 3.3327505588531494 seconds
        2019-01-14  21:56:14 DEBUG    plugins.sml2.Sml Polling Smartmeter done
        2019-01-14  21:58:11 DEBUG    plugins.sml2.Sml Polling Smartmeter now
        2019-01-14  21:58:11 INFO     plugins.sml2.Sml Sml: Connected to serial:///dev/ttyUSB_volkszaehler
        2019-01-14  21:58:11 DEBUG    plugins.sml2.Sml connected, try to query
        2019-01-14  21:58:11 DEBUG    plugins.sml2.Sml start read
        2019-01-14  21:58:14 DEBUG    plugins.sml2.Sml Read 1024 bytes
        2019-01-14  21:58:14 DEBUG    plugins.sml2.Sml Start sequence marker bytearray(b'\x1b\x1b\x1b\x1b\x01\x01\x01\x01') found
        2019-01-14  21:58:14 DEBUG    plugins.sml2.Sml End sequence marker found
        2019-01-14  21:58:14 DEBUG    plugins.sml2.Sml packet size is 260
        2019-01-14  21:58:14 DEBUG    plugins.sml2.Sml 2 fill bytes 
        2019-01-14  21:58:14 DEBUG    plugins.sml2.Sml checksum is 18224
        2019-01-14  21:58:14 DEBUG    plugins.sml2.Sml buffer length is 274
        2019-01-14  21:58:14 DEBUG    plugins.sml2.Sml buffer is bytearray(b'\x1b\x1b\x1b\x1b\x01\x01\x01\x01v\x05\x02\xdd\xa5cb\x00b\x00rc\x01\x01v\x01\x07\xff\xff\xff\xff\xff\xff\x05\x00\xf4\x8cv\x0b\n\x01LGZ\x00\x02\x8c\x0fLrb\x01e\x00\xf4\x90-\x01c;\xf1\x00v\x05\x02\xdd\xa5db\x00b\x00rc\x07\x01w\x07\xff\xff\xff\xff\xff\xff\x0b\n\x01LGZ\x00\x02\x8c\x0fL\x07\x01\x00b\n\xff\xffrb\x01e\x00\xf4\x90-uw\x07\x01\x00`2\x01\x01\x01\x01\x01\x01\x04LGZ\x01w\x07\x01\x00`\x01\x00\xff\x01\x01\x01\x01\x0b\n\x01LGZ\x00\x02\x8c\x0fL\x01w\x07\x01\x00\x01\x08\x00\xffe\x00\x1c\x01\x04rb\x01e\x00\xf4\x90-b\x1eR\xffi\x00\x00\x00\x00\x01\x0e\x96\xb2\x01w\x07\x01\x00\x02\x08\x00\xff\x01rb\x01e\x00\xf4\x90-b\x1eR\xffi\x00\x00\x00\x00\x00\x00\x00\x00\x01w\x07\x01\x00\x10\x07\x00\xff\x01\x01b\x1bR\x00Y\x00\x00\x00\x00\x00\x00\x01\x97\x01\x01\x01c\xb92\x00v\x05\x02\xdd\xa5eb\x00b\x00rc\x02\x01q\x01c\x85\x05\x00\x00\x00\x1b\x1b\x1b\x1b\x1a\x02')
        2019-01-14  21:58:14 DEBUG    plugins.sml2.Sml calculated checksum is 0x4730, given crc is 0x4730
        2019-01-14  21:58:14 DEBUG    plugins.sml2.Sml Checksum was ok, now parse the data_package
        2019-01-14  21:58:14 DEBUG    plugins.sml2.Sml Data: 76 05 02 dd a5 63 62 00 62 00 72 63 01 01 76 01 07 ff ff ff ff ff ff 05 00 f4 8c 76 0b 0a 01 4c 47 5a 00 02 8c 0f 4c 72 62 01 65 00 f4 90 2d 01 63 3b f1 00 76 05 02 dd a5 64 62 00 62 00 72 63 07 01 77 07 ff ff ff ff ff ff 0b 0a 01 4c 47 5a 00 02 8c 0f 4c 07 01 00 62 0a ff ff 72 62 01 65 00 f4 90 2d 75 77 07 01 00 60 32 01 01 01 01 01 01 04 4c 47 5a 01 77 07 01 00 60 01 00 ff 01 01 01 01 0b 0a 01 4c 47 5a 00 02 8c 0f 4c 01 77 07 01 00 01 08 00 ff 65 00 1c 01 04 72 62 01 65 00 f4 90 2d 62 1e 52 ff 69 00 00 00 00 01 0e 96 b2 01 77 07 01 00 02 08 00 ff 01 72 62 01 65 00 f4 90 2d 62 1e 52 ff 69 00 00 00 00 00 00 00 00 01 77 07 01 00 10 07 00 ff 01 01 62 1b 52 00 59 00 00 00 00 00 00 01 97 01 01 01 63 b9 32 00 76 05 02 dd a5 65 62 00 62 00 72 63 02 01 71 01 63 85 05 00 00 00
        2019-01-14  21:58:14 WARNING  plugins.sml2.Sml Can not parse entity at position 118, byte 52: unsupported operand type(s) for ** or pow(): 'int' and 'list': 77 07 ff ff ff ff ff ff 0b 0a 01 4c 47 5a 00 02 8c 0f 4c 07 01 00 62 0a ff ff 72 62 01 65 00 f4 90 2d 75 77 07 01 00 60 32 01 01 01 01 01 01 04 4c 47 5a 01 77 07 01 00 60 01 00 ff 01 01 01 01...
        2019-01-14  21:58:14 DEBUG    plugins.sml2.Sml Entry {'obis': '1-0:1.8.0*255', 'scaler': -1, 'valTime': [None, 16027693], 'signature': None, 'status': 1835268, 'value': 17733298, 'unitName': 'Wh', 'unit': 30, 'valueReal': 1773329.8, 'objName': b'\x01\x00\x01\x08\x00\xff'}
        2019-01-14  21:58:14 DEBUG    plugins.sml2.Sml Entry {'obis': '1-0:96.1.0*255', 'scaler': None, 'valTime': None, 'signature': None, 'status': None, 'value': b'\n\x01LGZ\x00\x02\x8c\x0fL', 'unitName': None, 'unit': None, 'valueReal': b'\n\x01LGZ\x00\x02\x8c\x0fL', 'objName': b'\x01\x00`\x01\x00\xff'}
        2019-01-14  21:58:14 INFO     stromzaehler.bezug.energie-eval Update item: stromzaehler.bezug.energie, item has been changed outside this plugin
        2019-01-14  21:58:14 DEBUG    plugins.sml2.Sml Entry {'obis': '1-0:16.7.0*255', 'scaler': 0, 'valTime': None, 'signature': None, 'status': None, 'value': 407, 'unitName': 'W', 'unit': 27, 'valueReal': 407, 'objName': b'\x01\x00\x10\x07\x00\xff'}
        2019-01-14  21:58:14 INFO     plugins.sml2.Sml Update item: stromzaehler.bezug.leistung, item has been changed outside this plugin
        2019-01-14  21:58:14 DEBUG    plugins.sml2.Sml Entry {'obis': '1-0:2.8.0*255', 'scaler': -1, 'valTime': [None, 16027693], 'signature': None, 'status': None, 'value': 0, 'unitName': 'Wh', 'unit': 30, 'valueReal': 0.0, 'objName': b'\x01\x00\x02\x08\x00\xff'}
        2019-01-14  21:58:14 INFO     plugins.sml2.Sml Sml: Disconnected!
        2019-01-14  21:58:14 DEBUG    plugins.sml2.Sml cycle takes 3.5623762607574463 seconds
        2019-01-14  21:58:14 DEBUG    plugins.sml2.Sml Polling Smartmeter done
        Die beiden Werte die ich auslese, werden ins Item übertragen.

        Bekommt man den Fehler noch gelöst?
        Danke!

        Kommentar


          #34
          Theoretisch kriegt man den Fehler gelöst, aber ich brauche dazu mehr freie Zeit...

          Kommentar


            #35
            Servus

            Von allen SML Plugin Threads scheint mir der hier am besten zu passen.

            Ich hatte bisher einen Pafal Zwei-Richtungs-Zähler, der mit bmx super DLMS Plugin ausgelesen wurde. Ok, der Zähler war doof, aber wenigsten kam 1.8.0 und 2.8.0 raus.

            Nach knapp zwei Jahren hat mir mein Stromversorger nun einen Holley DTZ541 eingebaut. So ein doller chinesischer Smart Zähler, der aber jetzt SML spricht.
            Auslesen kann ich entweder wie üblich per IR Lesekopf oder über eine RS485 Schnittstelle. Funktioniert prinzipiell beides. Ich konnte per Linux und Windows von beiden Schnittstellen Daten abziehen und die SML Nachrichten händisch dekodieren. SML hab ich jetzt also recht gut drauf

            Dabei sind zwei Probleme aufgetaucht, die nach Recherche im Netzt bestätigt sind. Ein unschönes Problem (aber vielleicht harmlos) und ein recht grober Schnitzer.

            Zum einen wird die timestamp bei Bezug und Lieferung falsch kodiert:

            DTZ541 SML Auszug.png

            Die farblich markierten Bytes fehlen komplett, da steht also nur die blanke Timestamp. Relativ harmlos, aber unschön, weil diverse Parser damit anscheinend nicht zurechtkommen.

            Das größere Problem ist die Checksum. Die Berechnungsmethode des Zählers ist falsch. Dazu habe ich folgendes gefunden:

            SML uses
            width=16 poly=0x1021 init=0xffff refin=true refout=true xorout=0xffff check=0x906e residue=0xf0b8 name="CRC-16/IBM-SDLC"

            But Holleys DTZ541 uses
            width=16 poly=0x1021 init=0x0000 refin=true refout=true xorout=0x0000 check=0x2189 residue=0x0000 name="CRC-16/KERMIT"
            Ich habe das mit einem CRC Tool im Netz testen können und es stimmt. CRC-16/KERMIT wird verwendet.

            Frage 1:, Kann man das von bmx mit dem CRC-Check versehene Plugin ohne große Änderungen - im besten Fall nur ein paar Parameterwerte ändern - überhaupt verwenden? Ich hab mir das mal angesehen, aber dafür reichen meine Kentnisse schlicht nicht.

            Frage 2: Ist die falsche timestamp Kodierung überhaupt ein Problem für das Plugin?

            Frage 3: Wenn ich den Plugin Code richtig interpretiere, werden NUR Obis Codes die mit FF enden ausgewertet, richtig? Der Zähler liefert aber z.B. auch die interessanten historischen Verbrauchswerte, wie 1-0:1.8.0*96 Historischer Verbrauchswert 1 Tag usw.

            Frage 4: Kann man das SMLX Plugin auch standalone, also ohne shng, von der Kommandozeile aus testen? Beim DLMS Plugin geht das prima und ist sehr hilfreich.

            Frage 5: Der Zähler sendet unaufgefordert JEDE SEKUNDE eine Nachricht. Das Plugin muss/soll ja nicht jede Sekunde eine Nachricht parsen. Ich hoffe, es verschluckt sich nur nicht.

            Frage 6: Der Puffer des Plugins ist standardmäßig 1024 Bytes glaube ich. Meine kompletten Nachrichten sind aber schon fast so lang. Ich vermute, ich müsste den Puffer mindestens doppelt so groß wie eine komplette Nachricht lang ist machen, damit sicher eine ganze im Puffer steht. Oder habe ich da einen Denkfehler?

            Danke schon mal,

            Martin



            Kommentar


              #36
              Zitat von Sipple Beitrag anzeigen
              Zum einen wird die timestamp bei Bezug und Lieferung falsch kodiert:
              Da habe ich gerade keine Idee...

              Zitat von Sipple Beitrag anzeigen
              Das größere Problem ist die Checksum. Die Berechnungsmethode des Zählers ist falsch. Dazu habe ich folgendes gefunden:

              Ich habe das mit einem CRC Tool im Netz testen können und es stimmt. CRC-16/KERMIT wird verwendet.

              Frage 1:, Kann man das von bmx mit dem CRC-Check versehene Plugin ohne große Änderungen - im besten Fall nur ein paar Parameterwerte ändern - überhaupt verwenden? Ich hab mir das mal angesehen, aber dafür reichen meine Kentnisse schlicht nicht.
              Ja, theoretisch geht das. Du kannst die Parameter ab Zeile 299 anpassen:
              Code:
              xor_in = 0x0000
              und
              Code:
              xor_out = 0x0000
              Zitat von Sipple Beitrag anzeigen
              Frage 2: Ist die falsche timestamp Kodierung überhaupt ein Problem für das Plugin?
              In der jetzigen Form glaube ich nicht.

              Zitat von Sipple Beitrag anzeigen
              Frage 3: Wenn ich den Plugin Code richtig interpretiere, werden NUR Obis Codes die mit FF enden ausgewertet, richtig? Der Zähler liefert aber z.B. auch die interessanten historischen Verbrauchswerte, wie 1-0:1.8.0*96 Historischer Verbrauchswert 1 Tag usw.
              Ich vermute mal in der jetzigen Version nicht aber ich habe dafür gerade auch keine Zeit mich damit tiefer zu befassen.

              Zitat von Sipple Beitrag anzeigen
              Frage 4: Kann man das SMLX Plugin auch standalone, also ohne shng, von der Kommandozeile aus testen? Beim DLMS Plugin geht das prima und ist sehr hilfreich.
              Nein, das habe ich da noch nicht eingebaut. Das Problem ist, das es sich um eine binäre Codierung handelt und die open source parser, die ich kenne suchen einfach nur nach bestimmten Zahlenkombinationen innerhalb des Datenblocks
              Man müßte wirklich die Daten richtig parsen, interpretieren und dann daraufhin weiterlesen.
              Das habe ich mal angefangen aber mangels Zeit und anderer dringender Projekte nach hinten verschoben. Das ist derzeit nicht einsatzfähig und eher eine frühe Alpha Version.

              Zitat von Sipple Beitrag anzeigen
              Frage 5: Der Zähler sendet unaufgefordert JEDE SEKUNDE eine Nachricht. Das Plugin muss/soll ja nicht jede Sekunde eine Nachricht parsen. Ich hoffe, es verschluckt sich nur nicht.
              Nein. Nur in Abständen wie beim cycle festgelegt wird gepollt und dann auch nur solange gelesen bis ein Paket gültig ist. In deinem Fall kann das natürlich wegen der fehlerhaften Checksumme nicht gehen.

              Zitat von Sipple Beitrag anzeigen
              Frage 6: Der Puffer des Plugins ist standardmäßig 1024 Bytes glaube ich. Meine kompletten Nachrichten sind aber schon fast so lang. Ich vermute, ich müsste den Puffer mindestens doppelt so groß wie eine komplette Nachricht lang ist machen, damit sicher eine ganze im Puffer steht. Oder habe ich da einen Denkfehler?
              Ja, kannst Du doch anpassen in der Plugin.yaml ...?


              Fazit: Man könnte die checksum Parameter konfigurierbar machen über die Plugin.yaml und für den Zähler dann in der Readme die Änderungen bereitstellen.
              Zuletzt geändert von bmx; 13.10.2019, 11:17.

              Kommentar


                #37
                Hi Bernd

                Danke Dir.
                Ich werde mich dann mal "vorsichtig rantasten" und schauen, ob ich die Checksumme überhaupt korrekt hinbekomme und dann sehen wir weiter.

                Gruß, Martin

                Kommentar


                  #38
                  Ich habe da mal was vorbereitet bei dem Du das in der plugin.yaml anpassen kannst aber ich muss das hier selbst erst testen. Wird eher was zum Wochenende

                  Kommentar


                    #39
                    So, ich habe in develop eine Erweiterung des smlx bereitgestellt wo Du die Parameter anpassen kannst ohne das Plugin zu ändern. Allerdings mußt Du das entweder aus github selbst runterladen und Dir ins Verzeichnis plugins/smlx kopieren. Es sei denn Du bist auf develop, dann reicht ein git pull...

                    Kommentar


                      #40
                      Werde ich machen.
                      Wie immer recht herzlichen Dank für Deine Mühe!

                      Gruß

                      Martin

                      Kommentar


                        #41
                        So, hab es jetzt mal versucht.

                        Beim Neustart von SHNG bekomme ich im Log:

                        Code:
                        2019-10-15  13:07:55 WARNING  __main__            SmartHomeNG restarting, initiated by admin interface
                        2019-10-15  13:08:06 WARNING  __main__            SmartHomeNG stopped
                        2019-10-15  13:08:07 WARNING  __main__            --------------------   Init SmartHomeNG 1.6.master (1dcb4fb5)   --------------------
                        2019-10-15  13:08:07 WARNING  __main__            Running in Python interpreter 'v3.7.3 final' (pid=9620) on linux platform
                        2019-10-15  13:08:13 ERROR    lib.metadata        plugin 'smlx' version differs between Python code (1.1.0) and metadata (1.1.1)
                        2019-10-15  13:08:13 WARNING  lib.item            load_itemdefinitions(): For testing the joined item structs are saved to /usr/local/smarthome/etc/structs_joined.yaml
                        Meckert wohl wegen einer nicht passenden Plugin Versionsnummer..
                        Sonst passiert nichts weiter, auch nicht im Debug Modus. Das Plugin wird in der Liste angezeigt:

                        Pluginliste.png

                        Bedeutet der ERROR, dass das Plugin gar nicht aktiv ist?
                        Woran sieht man eigentlich im Admin Interface ob SHNG im Debug Modus läuft?

                        Ich habe es vom CLI so gestartet:

                        Code:
                        smarthome@RevPI:/usr/local/smarthome $ python3 bin/smarthome.py -d
                        [15/Oct/2019:12:52:35] ENGINE Bus STARTING
                        [15/Oct/2019:12:52:35] ENGINE Serving on http://192.168.178.71:8384
                        [15/Oct/2019:12:52:35] ENGINE Serving on http://192.168.178.71:8383
                        [15/Oct/2019:12:52:35] ENGINE Bus STARTED
                        192.168.178.67 - - [15/Oct/2019:12:54:51] "GET /admin/ HTTP/1.1" 304 - "" "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:69.0) Gecko/20100101                                                                    Firefox/69.0"
                        192.168.178.67 - - [15/Oct/2019:12:54:51] "GET /admin/styles.dc8d38acd6b3f657ad60.css HTTP/1.1" 304 - "http://192.168.178.71:8383/admin/" "M                                                                   ozilla/5.0 (Windows NT 10.0; Win64; x64; rv:69.0) Gecko/20100101 Firefox/69.0"
                        192.168.178.67 - - [15/Oct/2019:12:54:51] "GET /admin/runtime.26209474bfa8dc87a77c.js HTTP/1.1" 304 - "http://192.168.178.71:8383/admin/" "M                                                                   ozilla/5.0 (Windows NT 10.0; Win64; x64; rv:69.0) Gecko/20100101 Firefox/69.0"
                        192.168.178.67 - - [15/Oct/2019:12:54:51] "GET /admin/polyfills.efff76290c6668e3008b.js HTTP/1.1" 304 - "http://192.168.178.71:8383/admin/"                                                                    "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:69.0) Gecko/20100101 Firefox/69.0"

                        Der Vollständigkeit halber noch der Auszug aus der plugin.yaml:

                        Code:
                        Smartmeter:
                            plugin_name: smlx
                            serialport: /dev/ttyUSB0
                            buffersize: '2048'
                            poly: 0x1021
                            reflect_in: true
                            xor_in: 0x0000
                            reflect_out: true
                            xor_out: 0x0000

                        Und die Testitems:

                        Code:
                        # Smartmeter.yaml
                        
                        Technikraum:
                        
                            Smartmeter:
                        
                                Bezug:
                                    type: num
                                    sml_obis: 1-0:1.8.0*255
                        
                                Lieferung:
                                    type: num
                                    sml_obis: 1-0:2.8.0*255


                        Das passt doch so, oder?

                        Edit: Den ERROR hab ich jetzt nicht mehr, nachdem ich in der _init.py_ des Plugins die Versionsnummer auch auf 1.1.1 gesetzt habe. Soweit, so trivial. Aber jetzt passiert gar nichts mehr, als ob das Plugin gar nicht laufen würde.
                        Zuletzt geändert von Sipple; 15.10.2019, 12:32.

                        Kommentar


                          #42
                          Hast Du denn einen Logger für das Plugin eingestellt?

                          Auszug aus meiner etc/logging.yaml:


                          Code:
                          handlers:
                          
                              develop_file:
                                  class: logging.handlers.TimedRotatingFileHandler
                                  formatter: shng_detail
                                  level: DEBUG
                                  utc: false
                                  when: midnight
                                  backupCount: 7
                                  filename: ./var/log/smarthome-develop.log
                                  encoding: utf8
                          
                          .....
                          
                          
                          loggers:
                          
                              __main__:
                                  # SmartHomeNG.py base module
                                  handlers: [shng_details_file]
                                  level: DEBUG
                          
                          ....
                          
                              plugins.smlx:
                                  handlers: [develop_file]
                                  level: DEBUG
                          Ziel ist es die Debugmeldungen auch angezeigt zu bekommen. Ich starte SHNG nicht mehr im Debugmodus sondern lasse mir die interessanten Sachen einfach in eine Datei loggen.
                          Derzeit ist es im AdminInterface möglich die logging.yaml zu ändern, danach muß aber neu gestartet werden.

                          Ich vermute, es gibt vom Plugin zwar Fehlermeldungen aber die werden nicht geloggt denke ich.

                          Ach ja, die Pluginversion anzupassen ist ok. Habe ich leider vergessen ...

                          Und die Buffersize ist ein int, kein str. Nimm mal die Anführungen weg...

                          Kommentar


                            #43
                            Zitat von Sipple Beitrag anzeigen
                            Bedeutet der ERROR, dass das Plugin gar nicht aktiv ist?
                            Ja
                            Viele Grüße
                            Martin

                            There is no cloud. It's only someone else's computer.

                            Kommentar


                              #44
                              OK, das Logging war tatsächlich noch nicht aktiv für develop_file. Bin fälschlicherweise davon ausgegeangen, dass im Debug Modus die Meldungen in den Standard logfiles auftauchen.
                              Allerdings startete SHNG erst mal nicht, weil es den formatter shng_detail nicht gab. Nur shng_detail1 oder shng_detail2. Ersteren habe ich mal nun verwendet. Jetzt gibt es smarthome-details.log.
                              Was ich wegen der Änderung in __main__ auf DEBUG jetzt auch in smarthome-details stehen habe reicht schon:

                              Code:
                              2019-10-15  17:18:30 WARNING  __main__            --------------------   Init SmartHomeNG 1.6.master (1dcb4fb5)   --------------------
                              2019-10-15  17:18:30 WARNING  __main__            Running in Python interpreter 'v3.7.3 final' (pid=12020) on linux platform
                              2019-10-15  17:18:30 INFO     __main__            Init loadable Modules
                              2019-10-15  17:18:33 INFO     __main__            Init Plugins
                              2019-10-15  17:18:36 DEBUG    plugins.smlx        Using CRC params poly=4129, reflect_in=True, xor_in=0, reflect_out=True, xor_out=0
                              2019-10-15  17:18:36 INFO     __main__            Start initialization of items
                              2019-10-15  17:18:36 WARNING  lib.item            load_itemdefinitions(): For testing the joined item structs are saved to /usr/local/smarthome/etc/structs_joined.yaml
                              2019-10-15  17:18:36 DEBUG    plugins.smlx        attach Technikraum.Smartmeter.Bezug 1-0:1.8.0*255 valueReal
                              2019-10-15  17:18:36 DEBUG    plugins.smlx        attach Technikraum.Smartmeter.Lieferung 1-0:2.8.0*255 valueReal
                              2019-10-15  17:18:36 INFO     __main__            Items initialization finished, 130 items loaded
                              2019-10-15  17:18:36 DEBUG    plugins.smlx        Plugin 'smlx': run method called
                              2019-10-15  17:18:36 DEBUG    plugins.smlx        scheduler_add: name = plugins.smlx.Smlx, parameters: prio=3, cycle=60
                              2019-10-15  17:18:42 DEBUG    __main__            _maintenace: Started
                              2019-10-15  17:18:42 DEBUG    __main__            Garbage collector: collected 656 objects.
                              2019-10-15  17:18:42 DEBUG    __main__            _maintenace: Object references: 33829
                              2019-10-15  17:18:46 DEBUG    plugins.smlx        Polling Smartmeter now
                              2019-10-15  17:18:46 INFO     plugins.smlx        Sml: Connected to serial:///dev/ttyUSB0
                              2019-10-15  17:18:46 DEBUG    plugins.smlx        connected, try to query
                              2019-10-15  17:18:46 DEBUG    plugins.smlx        start read
                              2019-10-15  17:18:52 DEBUG    plugins.smlx        Read 2048 bytes
                              2019-10-15  17:18:52 DEBUG    plugins.smlx        Start sequence marker bytearray(b'\x1b\x1b\x1b\x1b\x01\x01\x01\x01') found
                              2019-10-15  17:18:52 DEBUG    plugins.smlx        End sequence marker found
                              2019-10-15  17:18:52 DEBUG    plugins.smlx        packet size is 660
                              2019-10-15  17:18:52 DEBUG    plugins.smlx        2 fill bytes
                              2019-10-15  17:18:52 DEBUG    plugins.smlx        checksum is 50711
                              2019-10-15  17:18:52 DEBUG    plugins.smlx        buffer length is 674
                              2019-10-15  17:18:52 DEBUG    plugins.smlx        buffer is bytearray(b'\x1b\x1b\x1b\x1b\x01\x01\x01\x01v\x04\x00\x00\x01b\x00b\x00re\x00\x00\x01\x01v\x01\x01\x07\x00\x00\x00y\xc1\x94\x0b\n\x01HLY\x02\x00\x01\xe2\xaf\x01\x01c\xdb\xe5\x00v\x04\x00\x00\x02b\x00b\x00re\x00\x00\x07\x01w\x01\x0b\n\x01HLY\x02\x00\x01\xe2\xaf\x01\x01\xf1\x0ew\x07\x01\x00`2\x01\x01\x01\x01\x01\x01\x04HLY\x01w\x07\x01\x00`\x01\x00\xff\x01\x01\x01\x01\x0b\n\x01HLY\x02\x00\x01\xe2\xaf\x01w\x07\x01\x00\x01\x08\x00\xffe\x00\x1c\x11\x04e\x00y\xc1\x94b\x1eR\xffe\x00\x08|*\x01w\x07\x01\x00\x02\x08\x00\xffe\x00\x1c\x11\x04e\x00y\xc1\x94b\x1eR\xffe\x01MI\x04\x01w\x07\x01\x00\x10\x07\x00\xff\x01\x01b\x1bR\x00R\x12\x01w\x07\x01\x00 \x07\x00\xff\x01\x01b#R\xffc\x08\xbb\x01w\x07\x01\x004\x07\x00\xff\x01\x01b#R\xffc\x08\xc2\x01w\x07\x01\x00H\x07\x00\xff\x01\x01b#R\xffc\x08\x84\x01w\x07\x01\x00\x1f\x07\x00\xff\x01\x01b!R\xfeb\xf3\x01w\x07\x01\x003\x07\x00\xff\x01\x01b!R\xfeb\xa9\x01w\x07\x01\x00G\x07\x00\xff\x01\x01b!R\xfeb\xdb\x01w\x07\x01\x00Q\x07\x01\xff\x01\x01b\x08R\x00bu\x01w\x07\x01\x00Q\x07\x02\xff\x01\x01b\x08R\x00b\xef\x01w\x07\x01\x00Q\x07\x04\xff\x01\x01b\x08R\x00b\xcd\x01w\x07\x01\x00Q\x07\x0f\xff\x01\x01b\x08R\x00c\x01#\x01w\x07\x01\x00Q\x07\x1a\xff\x01\x01b\x08R\x00c\x01A\x01w\x07\x01\x00\x0e\x07\x00\xff\x01\x01b,R\xffc\x01\xf3\x01w\x07\x01\x00\x01\x08\x00`\x01\x01b\x1eR\x02b\x01\x01w\x07\x01\x00\x01\x08\x00a\x01\x01b\x1eR\x02bx\x01w\x07\x01\x00\x01\x08\x00b\x01\x01b\x1eR\x02c\x01\x8b\x01w\x07\x01\x00\x01\x08\x00c\x01\x01b\x1eR\x02b\x00\x01w\x07\x01\x00\x01\x08\x00d\x01\x01b\x1eR\x02c\x02,\x01w\x07\x01\x00\x02\x08\x00`\x01\x01b\x1eR\x02b\xfd\x01w\x07\x01\x00\x02\x08\x00a\x01\x01b\x1eR\x02c\x04@\x01w\x07\x01\x00\x02\x08\x00b\x01\x01b\x1eR\x02c\x12I\x01w\x07\x01\x00\x02\x08\x00c\x01\x01b\x1eR\x02b\x00\x01w\x07\x01\x00\x02\x08\x00d\x01\x01b\x1eR\x02cUR\x01w\x07\x01\x00\x00\x02\x00\x00\x01\x01\x01\x01\t1.02.007\x01w\x07\x01\x00`Z\x02\x01\x01\x01\x01\x01\x05A01A\x01w\x07\x01\x00`\x05\x00\xff\x01\x01\x01\x01e\x00\x1c\x11\x04\x01\x01\x01cU\x00\x00v\x04\x00\x00\x03b\x00b\x00re\x00\x00\x02\x01q\x01c\xeb\xf4\x00\x00\x00\x1b\x1b\x1b\x1b\x1a\x02')
                              2019-10-15  17:18:52 DEBUG    plugins.smlx        calculated checksum is 0x17c6, given crc is 0xc617
                              2019-10-15  17:18:52 DEBUG    plugins.smlx        Checksum was not ok, will not parse the data_package
                              2019-10-15  17:18:52 INFO     plugins.smlx        Sml: Disconnected!
                              2019-10-15  17:18:52 DEBUG    plugins.smlx        cycle takes 6.8876564502716064 seconds
                              2019-10-15  17:18:52 DEBUG    plugins.smlx        Polling Smartmeter done
                              Liegt also an der Checksumme.

                              Könnte es daran liegen?:

                              SML uses
                              width=16 poly=0x1021 init=0xffff refin=true refout=true xorout=0xffff check=0x906e residue=0xf0b8 name="CRC-16/IBM-SDLC"

                              But Holleys DTZ541 uses
                              width=16 poly=0x1021 init=0x0000 refin=true refout=true xorout=0x0000 check=0x2189 residue=0x0000 name="CRC-16/KERMIT"

                              "check" und "residue"?

                              Die buffersize habe ich übrigens per admin Interface eingetragen:

                              Buffersize.png

                              Warum dann mit Quotes gespeichert wird weiß ich nicht.

                              Jedenfalls klappt die Kommunikation ja schon mal, zumindest findet das Plugin den Start und Stopcode. Hätte schlimmer sein können


                              Danke Euch beiden

                              Martin
                              Zuletzt geändert von Sipple; 15.10.2019, 16:55.

                              Kommentar


                                #45
                                Äh - da ist ja nur Highbyte/Lowbyte vertauscht?

                                Code:
                                calculated checksum is 0x1a7b, given crc is 0x7b1a
                                So einfach?

                                Kommentar

                                Lädt...
                                X