Ankündigung

Einklappen
Keine Ankündigung bisher.

SML Plugin - Datenblock Größenfehler

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

    #91
    Noch ne andere Frage: Kommen die Werte für 1.8.0, 2.8.0 und 16.7.0 auch in Watt an?
    Kommen in WattSTUNDEN. Sind ja die Zählerstände.

    Wenn der Momentanverbrauch nicht immer geschrieben wird, liegt es wahrscheinlich daran, dass er sich zum vorherigen Wert nicht geändert hat. Vermutung!

    Kommentar


      #92
      Noch ne Frage von meiner Seite:

      Bayernwerk AG? Außenstelle?

      Kommentar


        #93
        Danke Martin, sieht gut aus :-)

        Wahnsinn wie schnell du das lösen konntest... Respekt!

        Ich hab nun glaub ich auch eine mögliche Ursache dafür gefunden, weshalb vor der Lösung des Problems auch der Momentanverbrauch nicht immer geupdated wurde:

        Code:
        2020-02-15 10:47:17 DEBUG __init__ plugins.smlx.Smlx Polling Smartmeter now -- __init__.py:poll_device:281
        2020-02-15 10:47:17 INFO __init__ plugins.smlx.Smlx SML: Connected to serial:///dev/ttyS1 -- __init__.py:connect:229
        2020-02-15 10:47:17 DEBUG __init__ plugins.smlx.Smlx Connected, try to query -- __init__.py:poll_device:291
        2020-02-15 10:47:17 DEBUG __init__ plugins.smlx.Smlx Start read -- __init__.py:_read:250
        2020-02-15 10:47:19 DEBUG __init__ plugins.smlx.Smlx End read -- __init__.py:_read:260
        2020-02-15 10:47:19 DEBUG __init__ plugins.smlx.Smlx Read 600 bytes -- __init__.py:poll_device:301
        2020-02-15 10:47:19 DEBUG __init__ plugins.smlx.Smlx Start sequence marker 1b 1b 1b 1b 01 01 01 01 found -- __init__.py:poll_device:305
        2020-02-15 10:47:19 DEBUG __init__ plugins.smlx.Smlx No End sequence marker found in data -- __init__.py:poll_device:333
        2020-02-15 10:47:19 DEBUG __init__ plugins.smlx.Smlx Checksum was not ok, will not parse the data_package -- __init__.py:poll_device:355
        2020-02-15 10:47:19 INFO __init__ plugins.smlx.Smlx SML: Disconnected! -- __init__.py:disconnect:244
        2020-02-15 10:47:19 DEBUG __init__ plugins.smlx.Smlx Cycle took 1.7982769012451172 seconds -- __init__.py:poll_device:361
        2020-02-15 10:47:19 DEBUG __init__ plugins.smlx.Smlx Polling Smartmeter done -- __init__.py:poll_device:362
        Das Plugin findet die Endsequenz nicht. Ich hab daraufhin mal die Buffersize erhöht. Bis jetzt mal ich keine derartigen Fehler mehr erhalten. Ich werde das mal beobachten...

        Ich werde mir das date_offset dann ebenfalls noch genauer anschauen!

        Nochmals danke für deine Hilfe!

        VG
        Christian

        Kommentar


          #94
          Sorry deinen letzten Post erst gerade gesehen:

          Ja, Bayernwerk AG. Außenstelle Weiden/Oberpfalz soweit ich weiß...

          Kommentar


            #95
            Ach ja, das mit der Buffersize wollte ich noch anmerken. Erschien mir auch etwas knapp. Kommt halt darauf an, ob du z.B. per IR oder RS485 ausliest und ob du die PIN eingegeben hast um mehr Werte zu bekommen (was du offensichtlich hast).
            Ich lese per RS485 aus und bekomme alle Werte die er liefert. Da brauche ich schon eine buffersize von ca. 1500.

            Dass ich das so schnell lösen konnte war Glück und liegt nur daran, dass ich ein gebranntes Kind bin mit dem Zähler. Den dekodier ich dir inzwischen händisch im Schlaf.
            Von SHNG Internas habe ich weiterhin quasi keine Ahnung und Python habe ich auch nie gelernt. Aber irgendwie sind alle Programmiersprachen gleich, wenn man mal wenigstens die Grundsyntax versteht.

            Kommentar


              #96
              Mit der Buffersize "teste" ich mich jetzt mal langsam runter... habs auch auf 1500 gestellt, was mir aber viel zu hoch vorkommt. In den Logs lese ich eigentlich nämlich nie Werte (Buffer Length/Packet Size) über 502...

              PIN ist eingegeben. Lese die Werte über IR aus. RS485 wär eigentlich am optimalsten gewesen. Leider wusste ich nicht, dass ich diesen Zähler gesetzt bekomme. Die Anschlüsse sind nun verplombt. Und selbst wenn ich mit einem entsprechendem Kabel beim Zählereinbau daneben gestanden wäre wäre immer noch gewiss gewesen, dass mich der Zählermonteur das Kabel auch anschließen lässt ;-)

              Wenn ich Zeit finde versuche ich das Plugin noch so anzupassen, dass es mit beiden "Varianten" des Zählers umgehen kann...

              Kommentar


                #97
                Also ganz ehrlich Leute: Bei so einem Scheiß würde ich darauf bestehen, das die umgehend einen Zähler mit fehlerbereinigter und dem Standard entsprechender Firmware einbauen. Sowas kann echt nicht sein!
                Die lassen billig in China zusammenkloppen und wir machen das in der Freizeit mit Patches und Hirnschmalz wieder wett...



                Ansonsten könnt ihr ggf. den Messtellenbetreiber wechseln (Siehe Messtellenbetriebsgesetz §§ 5,6)

                fuppy 1500 bei der Buffersize ist definitiv zu hoch, es sei denn das der Zähler von Zeit zu Zeit mehr Informationen preisgibt...

                Kommentar


                  #98
                  Kleines Update zu "date_offset"

                  Ich musste bei der Ermittlung etwas anders vorgehen als in der aktuellen README im Develop-Branch beschrieben, da bei mir kein valTime mit einem Wert zu finden war.

                  Bei mir gab es ein Key-Value-Pair namens "actualTime". Dort war augenscheinlich das/die Datum/Uhrzeit seit Inbetriebnahme des Zählers ausgehend von der UNIX Epochtime hinterlegt. Bin dann wie folgt vorgegangen:
                  1. Den Value von actualTime in Unix timestamp umgewandelt
                  2. Datum/Uhrzeit des zugehörigen Log-Eintrags in Unix timestamp umgewandet
                  3. Subtraktion: Unix timestamp Log-Eintrag (2.) - Unix timestamp actualTime (1.)
                  4. Ergebnis aus 3. = date_offset
                  Die vom Plugin zurückgelieferten Datum/Uhrzeit-Werte sehen auch soweit plausibel aus.

                  Kommentar


                    #99
                    Zitat von bmx Beitrag anzeigen
                    Ansonsten könnt ihr ggf. den Messtellenbetreiber wechseln (Siehe Messtellenbetriebsgesetz §§ 5,6)
                    Das is eh geplant. In Absprache mit meinem bevorzugten Messstellenbetreiber sollte vorher aber erst noch die neuen Zähler (werden für die PV-Anlage benötigt) durch den Standard-Messstellenbetreiber gesetzt werden. Ihrer Erfahrung nach gab es ansonsten eher immer Probleme, wenn beides gleichzeitig erfolgt ist.

                    Zitat von bmx Beitrag anzeigen
                    fuppy 1500 bei der Buffersize ist definitiv zu hoch, es sei denn das der Zähler von Zeit zu Zeit mehr Informationen preisgibt...
                    Bin ich voll bei dir. Eigentlich hätten die vorher gesetzten 600 reichen müssen, taten sie aber anscheinend nicht. Ich lass es jetzt mal bei 1024 und versuch dann schrittweise runterzugehen...

                    Kommentar


                      Zitat von bmx Beitrag anzeigen
                      Also ganz ehrlich Leute: Bei so einem Scheiß würde ich darauf bestehen, das die umgehend einen Zähler mit fehlerbereinigter und dem Standard entsprechender Firmware einbauen. Sowas kann echt nicht sein!
                      Die lassen billig in China zusammenkloppen und wir machen das in der Freizeit mit Patches und Hirnschmalz wieder wett...



                      Ansonsten könnt ihr ggf. den Messtellenbetreiber wechseln (Siehe Messtellenbetriebsgesetz §§ 5,6)
                      Wenn du wüsstest wie die Regionalfürsten bei den Bayernwerken (zumindest in Pfaffenhofen a.d.Ilm) arbeiten...
                      Sowas habe ich noch nicht erlebt. Seit 2016 versuche ich dieser geballten Inkompetenz klar zu machen, was ich für eine PV Anlage habe und sie verbocken seitdem immer wieder alles, was man verbocken kann und hängen es MIR an. Obwohl ich damit nichts zu tun habe, weil die das mit dem Anlagenbauer ausmachen müssen.
                      Lange Geschichte.....

                      Messstellenbetreiber wechseln habe ich auch schon mal drüber nachgedacht, aber bevor die alte Leiche mit der ordnungsgemäßen PV Anlage nicht vom Tisch ist, brauch ich da gar nicht drüber nachdenken, dann machen die noch mehr Mist.

                      Kommentar


                        fuppy Alles richtig gemacht.

                        Wenns' magst, schickst nochmal einen kompletten, fehlerfreien Debug Eintrag?
                        Zuletzt geändert von Sipple; 15.02.2020, 13:43.

                        Kommentar


                          Zitat von Sipple Beitrag anzeigen

                          Wenns' magst, schickst nochmal einen kompletten, fehlerfreien Debug Eintrag?
                          Na selbstverständlich. Anbei der Log-Auszug:

                          Code:
                          2020-02-16 08:39:24 DEBUG __init__ plugins.smlx.Smlx Polling Smartmeter now -- __init__.py:poll_device:281
                          2020-02-16 08:39:24 INFO __init__ plugins.smlx.Smlx SML: Connected to serial:///dev/ttyS1 -- __init__.py:connect:229
                          2020-02-16 08:39:24 DEBUG __init__ plugins.smlx.Smlx Connected, try to query -- __init__.py:poll_device:291
                          2020-02-16 08:39:24 DEBUG __init__ plugins.smlx.Smlx Start read -- __init__.py:_read:250
                          2020-02-16 08:39:26 DEBUG __init__ plugins.smlx.Smlx End read -- __init__.py:_read:260
                          2020-02-16 08:39:26 DEBUG __init__ plugins.smlx.Smlx Read 800 bytes -- __init__.py:poll_device:301
                          2020-02-16 08:39:26 DEBUG __init__ plugins.smlx.Smlx Start sequence marker 1b 1b 1b 1b 01 01 01 01 found -- __init__.py:poll_device:305
                          2020-02-16 08:39:26 DEBUG __init__ plugins.smlx.Smlx End sequence marker 1b 1b 1b 1b 1a found -- __init__.py:poll_device:308
                          2020-02-16 08:39:26 DEBUG __init__ plugins.smlx.Smlx Packet size is 484 -- __init__.py:poll_device:309
                          2020-02-16 08:39:26 DEBUG __init__ plugins.smlx.Smlx 2 fill byte(s) -- __init__.py:poll_device:312
                          2020-02-16 08:39:26 DEBUG __init__ plugins.smlx.Smlx Checksum is 0xd711 -- __init__.py:poll_device:314
                          2020-02-16 08:39:26 DEBUG __init__ plugins.smlx.Smlx Buffer length is 498 -- __init__.py:poll_device:317
                          2020-02-16 08:39:26 DEBUG __init__ plugins.smlx.Smlx Buffer: 1b 1b 1b 1b 01 01 01 01 76 04 00 00 01 62 00 62 00 72 65 00 00 01 01 76 01 01 07 00 00 00 05 12 59 0b 0a 01 48 4c 59 02 00 02 24 e4 01 01 63 c6 e1 00 76 04 00 00 02 62 00 62 00 72 65 00 00 07 01 77 01 0b 0a 01 48 4c 59 02 00 02 24 e4 01 01 f1 04 77 07 01 00 60 32 01 01 01 01 01 01 04 48 4c 59 01 77 07 01 00 60 01 00 ff 01 01 01 01 0b 0a 01 48 4c 59 02 00 02 24 e4 01 77 07 01 00 01 08 00 ff 65 00 1c 79 04 65 00 05 12 59 62 1e 52 ff 65 00 07 bc b4 01 77 07 01 00 02 08 00 ff 65 00 1c 79 04 65 00 05 12 59 62 1e 52 ff 65 00 0b 6e 12 01 77 07 01 00 10 07 00 ff 01 01 62 1b 52 00 53 fe 55 01 77 07 01 00 20 07 00 ff 01 01 62 23 52 ff 63 08 f6 01 77 07 01 00 34 07 00 ff 01 01 62 23 52 ff 63 08 ea 01 77 07 01 00 48 07 00 ff 01 01 62 23 52 ff 63 08 f3 01 77 07 01 00 1f 07 00 ff 01 01 62 21 52 fe 62 6b 01 77 07 01 00 33 07 00 ff 01 01 62 21 52 fe 62 74 01 77 07 01 00 47 07 00 ff 01 01 62 21 52 fe 62 85 01 77 07 01 00 51 07 01 ff 01 01 62 08 52 00 62 78 01 77 07 01 00 51 07 02 ff 01 01 62 08 52 00 62 f0 01 77 07 01 00 51 07 04 ff 01 01 62 08 52 00 62 e5 01 77 07 01 00 51 07 0f ff 01 01 62 08 52 00 62 e1 01 77 07 01 00 51 07 1a ff 01 01 62 08 52 00 62 fe 01 77 07 01 00 0e 07 00 ff 01 01 62 2c 52 ff 63 01 f4 01 77 07 01 00 00 02 00 00 01 01 01 01 09 31 2e 30 32 2e 30 30 37 01 77 07 01 00 60 5a 02 01 01 01 01 01 05 41 30 31 41 01 77 07 01 00 60 05 00 ff 01 01 01 01 65 00 1c 79 04 01 01 01 63 b7 22 00 76 04 00 00 03 62 00 62 00 72 65 00 00 02 01 71 01 63 e8 23 00 00 00 1b 1b 1b 1b 1a 02 -- __init__.py:poll_device:318
                          2020-02-16 08:39:26 DEBUG __init__ plugins.smlx.Smlx Calculated checksum is 0xd711, given CRC is 0xd711 -- __init__.py:poll_device:324
                          2020-02-16 08:39:26 DEBUG __init__ plugins.smlx.Smlx Checksum was ok, now parse the data_package -- __init__.py:poll_device:341
                          2020-02-16 08:39:26 DEBUG __init__ plugins.smlx.Smlx Data: 76 04 00 00 01 62 00 62 00 72 65 00 00 01 01 76 01 01 07 00 00 00 05 12 59 0b 0a 01 48 4c 59 02 00 02 24 e4 01 01 63 c6 e1 00 76 04 00 00 02 62 00 62 00 72 65 00 00 07 01 77 01 0b 0a 01 48 4c 59 02 00 02 24 e4 01 01 f1 04 77 07 01 00 60 32 01 01 01 01 01 01 04 48 4c 59 01 77 07 01 00 60 01 00 ff 01 01 01 01 0b 0a 01 48 4c 59 02 00 02 24 e4 01 77 07 01 00 01 08 00 ff 65 00 1c 79 04 65 00 05 12 59 62 1e 52 ff 65 00 07 bc b4 01 77 07 01 00 02 08 00 ff 65 00 1c 79 04 65 00 05 12 59 62 1e 52 ff 65 00 0b 6e 12 01 77 07 01 00 10 07 00 ff 01 01 62 1b 52 00 53 fe 55 01 77 07 01 00 20 07 00 ff 01 01 62 23 52 ff 63 08 f6 01 77 07 01 00 34 07 00 ff 01 01 62 23 52 ff 63 08 ea 01 77 07 01 00 48 07 00 ff 01 01 62 23 52 ff 63 08 f3 01 77 07 01 00 1f 07 00 ff 01 01 62 21 52 fe 62 6b 01 77 07 01 00 33 07 00 ff 01 01 62 21 52 fe 62 74 01 77 07 01 00 47 07 00 ff 01 01 62 21 52 fe 62 85 01 77 07 01 00 51 07 01 ff 01 01 62 08 52 00 62 78 01 77 07 01 00 51 07 02 ff 01 01 62 08 52 00 62 f0 01 77 07 01 00 51 07 04 ff 01 01 62 08 52 00 62 e5 01 77 07 01 00 51 07 0f ff 01 01 62 08 52 00 62 e1 01 77 07 01 00 51 07 1a ff 01 01 62 08 52 00 62 fe 01 77 07 01 00 0e 07 00 ff 01 01 62 2c 52 ff 63 01 f4 01 77 07 01 00 00 02 00 00 01 01 01 01 09 31 2e 30 32 2e 30 30 37 01 77 07 01 00 60 5a 02 01 01 01 01 01 05 41 30 31 41 01 77 07 01 00 60 05 00 ff 01 01 01 01 65 00 1c 79 04 01 01 01 63 b7 22 00 76 04 00 00 03 62 00 62 00 72 65 00 00 02 01 71 01 63 e8 23 00 00 00 -- __init__.py:_parse:372
                          2020-02-16 08:39:26 DEBUG __init__ plugins.smlx.Smlx Entry {'signature': None, 'valTime': None, 'objName': '1-0:96.5.0*255', 'scaler': None, 'value': 1865988, 'actualTime': None, 'valueReal': '0b1110001111001', 'unit': None, 'status': None, 'obis': '1-0:96.5.0*255', 'unitName': None} -- __init__.py:poll_device:348
                          2020-02-16 08:39:26 DEBUG __init__ plugins.smlx.Smlx Entry {'signature': None, 'valTime': None, 'objName': '1-0:0.2.0*0', 'scaler': None, 'value': b'1.02.007', 'actualTime': None, 'valueReal': '1.02.007', 'unit': None, 'status': None, 'obis': '1-0:0.2.0*0', 'unitName': None} -- __init__.py:poll_device:348
                          2020-02-16 08:39:26 DEBUG __init__ plugins.smlx.Smlx Entry {'signature': None, 'valTime': None, 'objName': '1-0:81.7.1*255', 'scaler': 0, 'value': 120, 'actualTime': None, 'valueReal': 120, 'unit': 8, 'status': None, 'obis': '1-0:81.7.1*255', 'unitName': '°'} -- __init__.py:poll_device:348
                          2020-02-16 08:39:26 DEBUG __init__ plugins.smlx.Smlx Entry {'signature': None, 'valTime': None, 'objName': '1-0:32.7.0*255', 'scaler': -1, 'value': 2294, 'actualTime': None, 'valueReal': 229.4, 'unit': 35, 'status': None, 'obis': '1-0:32.7.0*255', 'unitName': 'V'} -- __init__.py:poll_device:348
                          2020-02-16 08:39:26 DEBUG __init__ plugins.smlx.Smlx Entry {'signature': None, 'valTime': None, 'objName': '1-0:72.7.0*255', 'scaler': -1, 'value': 2291, 'actualTime': None, 'valueReal': 229.10000000000002, 'unit': 35, 'status': None, 'obis': '1-0:72.7.0*255', 'unitName': 'V'} -- __init__.py:poll_device:348
                          2020-02-16 08:39:26 DEBUG __init__ plugins.smlx.Smlx Entry {'signature': None, 'valTime': None, 'objName': '1-0:51.7.0*255', 'scaler': -2, 'value': 116, 'actualTime': None, 'valueReal': 1.16, 'unit': 33, 'status': None, 'obis': '1-0:51.7.0*255', 'unitName': 'A'} -- __init__.py:poll_device:348
                          2020-02-16 08:39:26 DEBUG __init__ plugins.smlx.Smlx Entry {'signature': None, 'valTime': None, 'objName': '1-0:81.7.4*255', 'scaler': 0, 'value': 229, 'actualTime': None, 'valueReal': 229, 'unit': 8, 'status': None, 'obis': '1-0:81.7.4*255', 'unitName': '°'} -- __init__.py:poll_device:348
                          2020-02-16 08:39:26 DEBUG __init__ plugins.smlx.Smlx Entry {'signature': None, 'valTime': None, 'objName': '1-0:96.1.0*255', 'scaler': None, 'value': b'\n\x01HLY\x02\x00\x02$\xe4', 'actualTime': None, 'valueReal': '0a01484c5902000224e4', 'unit': None, 'status': None, 'obis': '1-0:96.1.0*255', 'unitName': None} -- __init__.py:poll_device:348
                          2020-02-16 08:39:26 DEBUG __init__ plugins.smlx.Smlx Entry {'signature': None, 'valTime': None, 'objName': '1-0:52.7.0*255', 'scaler': -1, 'value': 2282, 'actualTime': None, 'valueReal': 228.20000000000002, 'unit': 35, 'status': None, 'obis': '1-0:52.7.0*255', 'unitName': 'V'} -- __init__.py:poll_device:348
                          2020-02-16 08:39:26 DEBUG __init__ plugins.smlx.Smlx Entry {'signature': None, 'valTime': None, 'objName': '1-0:31.7.0*255', 'scaler': -2, 'value': 107, 'actualTime': None, 'valueReal': 1.07, 'unit': 33, 'status': None, 'obis': '1-0:31.7.0*255', 'unitName': 'A'} -- __init__.py:poll_device:348
                          2020-02-16 08:39:26 DEBUG __init__ plugins.smlx.Smlx Entry {'signature': None, 'valTime': None, 'objName': '1-0:96.90.2*1', 'scaler': None, 'value': b'A01A', 'actualTime': None, 'valueReal': b'A01A', 'unit': None, 'status': None, 'obis': '1-0:96.90.2*1', 'unitName': None} -- __init__.py:poll_device:348
                          2020-02-16 08:39:26 DEBUG __init__ plugins.smlx.Smlx Entry {'signature': None, 'valTime': None, 'objName': '1-0:14.7.0*255', 'scaler': -1, 'value': 500, 'actualTime': None, 'valueReal': 50.0, 'unit': 44, 'status': None, 'obis': '1-0:14.7.0*255', 'unitName': 'Hz'} -- __init__.py:poll_device:348
                          2020-02-16 08:39:26 DEBUG __init__ plugins.smlx.Smlx Entry {'signature': None, 'valTime': None, 'objName': '1-0:81.7.26*255', 'scaler': 0, 'value': 254, 'actualTime': None, 'valueReal': 254, 'unit': 8, 'status': None, 'obis': '1-0:81.7.26*255', 'unitName': '°'} -- __init__.py:poll_device:348
                          2020-02-16 08:39:26 DEBUG __init__ plugins.smlx.Smlx Entry {'signature': None, 'valTime': None, 'objName': '1-0:16.7.0*255', 'scaler': 0, 'value': -427, 'actualTime': None, 'valueReal': -427, 'unit': 27, 'status': None, 'obis': '1-0:16.7.0*255', 'unitName': 'W'} -- __init__.py:poll_device:348
                          2020-02-16 08:39:26 INFO __init__ plugins.smlx.Smlx Update item: ZENTRAL.Stromzaehler.Momentanverbrauch, item has been changed outside this plugin -- __init__.py:update_item:207
                          2020-02-16 08:39:26 DEBUG __init__ plugins.smlx.Smlx Entry {'signature': None, 'valTime': None, 'objName': '1-0:71.7.0*255', 'scaler': -2, 'value': 133, 'actualTime': None, 'valueReal': 1.33, 'unit': 33, 'status': None, 'obis': '1-0:71.7.0*255', 'unitName': 'A'} -- __init__.py:poll_device:348
                          2020-02-16 08:39:26 DEBUG __init__ plugins.smlx.Smlx Entry {'signature': None, 'valTime': None, 'objName': '1-0:81.7.2*255', 'scaler': 0, 'value': 240, 'actualTime': None, 'valueReal': 240, 'unit': 8, 'status': None, 'obis': '1-0:81.7.2*255', 'unitName': '°'} -- __init__.py:poll_device:348
                          2020-02-16 08:39:26 DEBUG __init__ plugins.smlx.Smlx Entry {'statEnergyTotal': True, 'statEnergyL2': True, 'scaler': -1, 'signature': None, 'status': 1865988, 'obis': '1-0:2.8.0*255', 'statCalFault': False, 'statFraudCover': False, 'unitName': 'Wh', 'statEnergyL3': True, 'statRotaryField': False, 'value': 749074, 'statRun': True, 'actualTime': 'Sun Feb 16 08:39:28 2020', 'valueReal': 74907.40000000001, 'objName': '1-0:2.8.0*255', 'unit': 30, 'statVoltageL2': True, 'statVoltageL3': True, 'statBackstop': False, 'statVoltageL1': True, 'statEnergyL1': True, 'statFraudMagnet': False, 'valTime': 332377} -- __init__.py:poll_device:348
                          2020-02-16 08:39:26 DEBUG __init__ plugins.smlx.Smlx Entry {'statEnergyTotal': True, 'statEnergyL2': True, 'scaler': -1, 'signature': None, 'status': 1865988, 'obis': '1-0:1.8.0*255', 'statCalFault': False, 'statFraudCover': False, 'unitName': 'Wh', 'statEnergyL3': True, 'statRotaryField': False, 'value': 507060, 'statRun': True, 'actualTime': 'Sun Feb 16 08:39:28 2020', 'valueReal': 50706.0, 'objName': '1-0:1.8.0*255', 'unit': 30, 'statVoltageL2': True, 'statVoltageL3': True, 'statBackstop': False, 'statVoltageL1': True, 'statEnergyL1': True, 'statFraudMagnet': False, 'valTime': 332377} -- __init__.py:poll_device:348
                          2020-02-16 08:39:26 INFO __init__ ZENTRAL.Stromzaehler.Einspeisung_PV-eval Update item: ZENTRAL.Stromzaehler.Einspeisung_PV, item has been changed outside this plugin -- __init__.py:update_item:207
                          2020-02-16 08:39:26 DEBUG __init__ plugins.smlx.Smlx Entry {'signature': None, 'valTime': None, 'objName': '1-0:81.7.15*255', 'scaler': 0, 'value': 225, 'actualTime': None, 'valueReal': 225, 'unit': 8, 'status': None, 'obis': '1-0:81.7.15*255', 'unitName': '°'} -- __init__.py:poll_device:348
                          2020-02-16 08:39:26 DEBUG __init__ plugins.smlx.Smlx Entry {'signature': None, 'valTime': None, 'objName': '1-0:96.50.1*1', 'scaler': None, 'value': b'HLY', 'actualTime': None, 'valueReal': 'HLY', 'unit': None, 'status': None, 'obis': '1-0:96.50.1*1', 'unitName': None} -- __init__.py:poll_device:348
                          2020-02-16 08:39:26 INFO __init__ plugins.smlx.Smlx SML: Disconnected! -- __init__.py:disconnect:244
                          2020-02-16 08:39:26 DEBUG __init__ plugins.smlx.Smlx Cycle took 2.3287553787231445 seconds -- __init__.py:poll_device:361
                          2020-02-16 08:39:26 DEBUG __init__ plugins.smlx.Smlx Polling Smartmeter done -- __init__.py:poll_device:362

                          Kommentar


                            Wunderbar, danke.

                            Ich sehe da eine Buffer lenght von 498 Bytes, also rund 500. Das können natürlich je nach kodierten aktuellen Werten noch ein paar Byte mehr oder eniger werden.
                            Der Zähler sendet ja unaufgefordert jede Sekunde eine Nachricht. Je nachdem wann das Plugin nun einen Zyklus startet, liest es zufällig exakt mit der Startsequenz in den Buffer ein. Dann würden die 600 Byte natürlich reichen. Aber wenn eben z.B. mittendrin oder am Ende eingelesen wird, dann reichen die 600 Byte nicht, weil die Startsequenz nicht gefunden wird, bzw. erst die nächste. Dann hast du das Problem, dass zu früh gestoppt wird und keine vollständige Nachricht im Buffer steht. Daher - und man möge die Gedankengänge meines alten Hirns korrigieren - kann man nur sicher sein, dass eine ganze Nachricht im Buffer steht, wenn dieser mindestens doppelt so groß ist wie die längste zu erwartende Nachricht. Richtig? Das wären bei dir so um die 1000 Byte. Mit ein wenig Sicherheit wegen der variablen Nachrichtenlänge sind deine 1024 schon gut. Würde ich so lassen.

                            Gruß, Martin

                            Kommentar


                              Martin, da stimme ich Dir voll zu. Wenn man Pech hat, wir der Startmarker gerade nicht erfasst, weil das erste Byte fehlt, Also mal 497 Bytes für /dev/nul und dann noch mal 498 für die korrekt eingelesene Nachricht Plus einen Sicherheitszuschlag passt mit 1024 recht gut.

                              Kommentar


                                Hallo zusammen,

                                ich hab wie angekündigt das Plugin jetzt nochmals so erweitert, dass es mit dem Timestamp Fehler des Holley umgehen kann:

                                vorher:
                                Code:
                                entry['actualTime'] = time.ctime(self.date_offset + entry['valTime'][1]) if entry['valTime'] is not None else None
                                # For a Holley DTZ541 with faulty Firmware remove the                ^[1] from this line ^.
                                nachher:
                                Code:
                                if entry['valTime'] is not None:[INDENT]if isinstance(entry['valTime'], list):[/INDENT][INDENT=2]entry['actualTime'] = time.ctime(self.date_offset + entry['valTime'][1])[/INDENT][INDENT]
                                else:[/INDENT][INDENT=2]self.logger.debug('Looks like there is a malformed timestamp, maybe from a Holley DTZ541. Try to work around it...')[/INDENT][INDENT=2]entry['actualTime'] = time.ctime(self.date_offset + entry['valTime'])[/INDENT]
                                 
                                else:[INDENT]entry['actualTime'] = None[/INDENT]
                                Sipple Könntest du mal testen, ob das Plugin so auch bei dir ohne Probleme läuft? Dann könnten wir ja die Änderung in den Develop-Branch mit aufnehmen...

                                Danke nochmals für den Hinweis wg. der BufferSize. Dann lasse ich die einfach mal bei 1024.
                                Zuletzt geändert von fuppy; 17.02.2020, 10:18.

                                Kommentar

                                Lädt...
                                X