Neues Plugin: Smartmeter - Stromzähler auslesen

Einklappen
X
 
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge
  • blacksun
    MS Profi
    • 20.01.2016
    • 575

    #361
    Seit gestern läuft das Skript mit einem Intervall von 10 Sekunden. Funktioniert zumindestens bei meinem Zähler, da ich ein Timeout von 5 Sekunden habe. Zwischen Skriptende und Skriptstart bleiben jetzt 3-4 Sekunden. Bei einem Zähler, der natürlich länger zum Übertragen braucht, funktioniert dies natürlich nicht. Jetzt habe ich mir gedacht, evtl. gibts einen Befehl, der das Skript einfach erneut startet, wenn das Skript abgearbeitet worden ist. Also ein Skript das sich wieder selbst aufruft. Würde sowas gehen? Dann würds für jeden Zähler passen, egal wie lange Bearbeitung dauert.

    Ja schein zu laufen. Ich habe dazu alle Cronjobs deaktiviert, in der Fetch.pl einfach bei EXIT ein Goto Start eingefügt und das Skript per Hand in Putty gestartet. Jetzt läuft das Skript in einer Dauerschleife, also wenn Skript fertig, fängts wieder von vorne an, geil. Das ist somit nun das kürzeste Abfrageintervall. Dazu müsste man jetzt noch in der Plugin html Seite evtl. noch was anpassen.

    Wie bearbeitet ihr diese? Habt ihr da einen Editor, also eine GUI oder programmiert ihr diese auch per Zeilencode? Z. B. möchte ich noch einen Schiebeschalter oder sowas einbauen.
    Zuletzt geändert von blacksun; 01.09.2019, 12:37.

    Kommentar

    • blacksun
      MS Profi
      • 20.01.2016
      • 575

      #362
      Servus zusammen,

      auf Basis des letzten PreRelease V1.1.1 habe ich nun noch eine Erweiterung eingebaut.

      Man kann das Abfrageintervall des Zählers jetzt auch auf "minimum" stellen, d. h. wenn das Skript mit dem Auslesen fertig ist, fängt es wieder von vorne an. Das Intervall hängt nur noch von eurem Zähler ab, wie schnell er die Daten sendet und wie lange das Skript zum Verarbeiten braucht. Bei meinem Zähler MT691, 9600,8,n,1 Timeout 5 Sekunden beträgt das Intervall nur noch 6-7 Sekunden. Das ist vorallem interessant, wenn man die Leistung beobachten möchte, da ist ja ein Intervall von 1 Minute eher unbrauchbar.

      Wer es testen möchte, einfach das angehängte Plugin installieren. Wenn es schon installiert ist, braucht man es vorher nicht deinstallieren.

      Ich hänge euch auch noch die geänderten Dateien mit an. Hier sind nur die geänderten Dateien enthalten seit V1.1.1. Diese dienen nur als Info.

      Testet es mal und gebt mir Rückmeldung, obs auch bei anderen Zählern so funktioniert. Oli, du wolltest du auch kürzere Abfrageintervalle :-)

      Prof.Mobilux, ich habe für diese Änderung noch einen Cronjob benötigt, der bei einem Reboot das Skript wieder startet, falls auf Minimum als Abfrageintervall eingestellt war. Dazu bin ich wie im Wiki angegeben vorgegangen. Ich werde einen neuen PullRequest erstellen.

      Viele Grüße
      Michael
      Angehängte Dateien
      Zuletzt geändert von blacksun; 02.09.2019, 21:08.

      Kommentar

      • Prof.Mobilux
        Supermoderator
        • 25.08.2015
        • 4715

        #363
        Du kannst in /opt/loxberry/system/cron/cron.d eigene Crontabs ablegen. Das müsste doch ausreichen? Einfach eine crontab mit folgendem Inhalt erzeugen:

        Code:
        MAILTO=""
        PATH=/usr/sbin:/usr/sbin:/usr/bin:/sbin:/bin
        
        # m h  dom mon dow   command
        @reboot loxberry perl $lbhomedir/bin/plugins/PLUGIN/scriptreboot > /dev/null 2>&1

        Hier steht wie es geht: https://www.loxwiki.eu/display/LOXBE...n-Code+pflegen
        Zuletzt geändert von Prof.Mobilux; 02.09.2019, 05:37.
        🇺🇦 Hilfe für die Menschen der Ukraine: https://www.loxforum.com/forum/proje...Cr-die-ukraine


        LoxBerry - Beyond the Limits

        Kommentar


        • Christian Fenzl
          Christian Fenzl kommentierte
          Kommentar bearbeiten
          blacksun Dateien die heißen wie „lbdefaults“ sind ganz gefährlich, dass wir sie bei LoxBerry Update überschreiben. Ein eigener cron ist sicherer.
      • blacksun
        MS Profi
        • 20.01.2016
        • 575

        #364
        Okay, das wußte ich nicht, das es auch einfacher geht. Allerdings bräuchte ich dann trotzdem noch unter /opt/loxberry/system/cron einen Ordner cron.startup. In diesen setze ich je nach Intervall den Symlink rein.

        Darf man sowas machen?
        Und wie sage ich es dem Plugin, das hier ein Ordner erstellt wird. Reicht es wenn ich in das Pluginzip einfach diesen Ordner packe? Wird dieser dann beim Installieren des Plugins dort hin kopiert? Kann ich mit dem neuen eigenen crontabfile auch so verfahren?

        Kommentar

      • Oli
        LoxBus Spammer
        • 25.08.2015
        • 293

        #365
        blacksun Hallo, einwandfrei funktioniert das abrufen mit minimalem Abfragezyklus, alle Daumen hoch 👍

        bei mir wird alle 8 Sekunden ein neuer Datensatz abgefragt, wird da aber nicht die SD-Karte recht stark beansprucht?
        Zuletzt geändert von Oli; 02.09.2019, 21:33.

        Kommentar

        • blacksun
          MS Profi
          • 20.01.2016
          • 575

          #366
          Nein, die Logs werden in im RAM erstellt und nicht auf der SD Karte.

          Endlich kann man Stromfresser ausfindig machen 😀

          Kommentar

          • Vespa_160GS
            Dumb Home'r
            • 05.09.2019
            • 11

            #367
            Hallo,

            ich bin neu in diese Community und bin der der Verwnedung dieses Plugins auf ein Problem gestossen und hoffe das ich in diesem Forum hilfe finden kannt. Ich habe mir einen Lesekopf bestellt welchen ich auch erfolgreich mit Tereterm an meinem SmartMeter geteset habe. Ich konnte dort mit senden von /?! die Daten erfolgreich abfragen.
            Ich habe nun den Lesekopf and den Loxberry angeschlossen und er wird vom Plugin auch erkannt aber anscheinend kann er keine Daten zurücklesen? Es schein so als ob der Zähler noch antwortet laut dem LOG file aber die restlichen Daten werden nicht angezeigt. Hatte vielleicht schon mal jemand das Problem.
            Ich habe die neusete Version 1.1.1 vom Plugin und auch die neueste Version von Loxberry installiert. Ich habe auch versucht das Plugin Manuel zu konfigurieren aber immer wieder mit dem gleichen Ergebnis?

            Vielen Dank schon mal im Voraus & lg
            Horst

            Kommentar

            • blacksun
              MS Profi
              • 20.01.2016
              • 575

              #368
              Stell mal hier das Dumpfile ein. Das Must du zuerst zippen, damit man es hier hochladen kann. Der Pfad zum Dumpfile steht im Logfile.

              Kommentar

              • Vespa_160GS
                Dumb Home'r
                • 05.09.2019
                • 11

                #369
                Hallo,

                vielen Dank! Anbei das Dump File.

                thx
                Horst
                Angehängte Dateien

                Kommentar

                • blacksun
                  MS Profi
                  • 20.01.2016
                  • 575

                  #370
                  Der Zähler schickt seine Identifikation - ISk5MT74, gefolgt von Programm Version 0001. Dieses soll mit ACK050CRLF bestätigt werden, dann wird die Baudrate von 300 auf 9600 umgeschaltet. Evtl. funktioniert die Bestätigung durch ACK050CRLF nicht. Dann würde er weiterhin mit Baudrate 300 senden. Versuche mal, den Zähler manuell zu parametrieren. Stell dazu bei Zähler auf manuelle Konfiguration, Protokoll auf ISRA MT174 D0, und dann brauchst eigentlich nur Max.Baudrate und Intiale Baudrate auf 300 stellen. Die anderen Felder lässt leer. Dann starte nochmal eine Abfrage.

                  Kommentar

                  • Dimon
                    LoxBus Spammer
                    • 27.08.2015
                    • 383

                    #371
                    Also bei mir funktioniert es auch nicht mehr... auch manuell schon eingerichtet und den Zähler ausgewählt... kann da jemand helfen?!

                    Code:
                    0001: Found configuration for 0001
                    0001: Configuration for 0001 is not complete. Skipping.
                    A505RGB1: Found configuration for A505RGB1
                    A505RGB1: Presetting: pafal20ec3grd0.
                    Initial Baudrate: 300
                    Max Baudrate: 300
                    Protocol: pafal20ec3grd0
                    Timeout: 120
                    Delay: 2
                    Setting up port /dev/serial/smartmeter/A505RGB1: Baudrate:300/300 Databits:7 Stopbits:1 Parity:even Handshake:none
                    Sending D0 Starting Sequence
                    Send: /?!
                    5 Bytes written.
                    PAF5g06
                    A5Cg000
                    /3
                    Save raw buffer to /var/run/shm/smartmeter/A505RGB1.dump
                    Parse /var/run/shm/smartmeter/A505RGB1.dump as D0-Protocol.
                    Calculate average power for cons.
                    Last Reading: . Saved before: 435488.0022 hours. Consumption: 0.0000. Avg. Power: 0.0000,
                    Calculate average power for del.
                    Last Reading: . Saved before: 435488.0022 hours. Consumption: 0.0000. Avg. Power: 0.0000,
                    Save Meter data to /var/run/shm/smartmeter/A505RGB1.data.
                    All data written to /var/run/shm/smartmeter/A505RGB1.xxxx
                    A505RGB1: UDP String to send: A505RGB1:Last_Update:2019-09-06 10:00:08; A505RGB1:Last_UpdateLoxEpoche:336996008; A505RGB1:Consumption_Total_OBIS_1.8.0:; A505RGB1:Consumption_Tarif1_OBIS_1.8.1:; A505RGB1:Consumption_Tarif2_OBIS_1.8.2:; A505RGB1:Consumption_Tarif3_OBIS_1.8.3:; A505RGB1:Consumption_Tarif4_OBIS_1.8.4:; A505RGB1:Consumption_Tarif5_OBIS_1.8.5:; A505RGB1:Consumption_Tarif6_OBIS_1.8.6:; A505RGB1:Consumption_Tarif7_OBIS_1.8.7:; A505RGB1:Consumption_Tarif8_OBIS_1.8.8:; A505RGB1:Consumption_Tarif9_OBIS_1.8.9:; A505RGB1:Consumption_CalculatedPower_OBIS_1.99.0:0.0000; A505RGB1:Consumption_Power_OBIS_1.7.0:; A505RGB1:Consumption_Power_L1_OBIS_21.7.0:; A505RGB1:Consumption_Power_L2_OBIS_41.7.0:; A505RGB1:Consumption_Power_L3_OBIS_61.7.0:; A505RGB1:Delivery_Total_OBIS_2.8.0:; A505RGB1:Delivery_Tarif1_OBIS_2.8.1:; A505RGB1:Delivery_Tarif2_OBIS_2.8.2:; A505RGB1:Delivery_Tarif3_OBIS_2.8.3:; A505RGB1:Delivery_Tarif4_OBIS_2.8.4:; A505RGB1:Delivery_Tarif5_OBIS_2.8.5:; A505RGB1:Delivery_Tarif6_OBIS_2.8.6:; A505RGB1:Delivery_Tarif7_OBIS_2.8.7:; A505RGB1:Delivery_Tarif8_OBIS_2.8.8:; A505RGB1:Delivery_Tarif9_OBIS_2.8.9:; A505RGB1:Delivery_CalculatedPower_OBIS_2.99.0:0.0000; A505RGB1:Delivery_Power_OBIS_2.7.0:; A505RGB1:Total_Power_OBIS_15.7.0:; A505RGB1:Total_Power_OBIS_16.7.0:;
                    Zuletzt geändert von Dimon; 06.09.2019, 10:47.
                    Haus: 1x Miniserver, 7x Extension, 4x RelayExtension, 1x 1-Wire, 1x DimmerExtension, 1x Tree Extension, 1x ModBus Extension, 1x DMX Extension, 6x RGBW, 2x UFO, 1x AirBaseExtension, 3x RGBW Air, Air Touch, Touch Pure Air, LED Pendulum Slim Tree
                    Wohnung: 1x Miniserver, 3x Extension, 2x RelayExtension, 1x 1-Wire, 1x DimmerExtension, 1x DMX,
                    Cams: Mobotix T25, Mobotix D22, Mobotix Q25, Axis P1428-E
                    LOXBERRY: SmartMeter, Weather 4 Lox
                    Heizung: Viessmann Vitocal 300-A
                    PV: Fronius Symo 17.5.3

                    Kommentar

                    • blacksun
                      MS Profi
                      • 20.01.2016
                      • 575

                      #372
                      Dimon, wie meinst du das, funktioniert auch nicht mehr. Was hast du verändert? Zähler ist der Pafal 20ec3gr (D0-Protocol).

                      Hast du evtl. die PreRelease 1.1 installiert und es funktioniert seit dem nicht mehr? Ich habe da ein paar Änderungen gemacht, welche aber eigentlich nichts mit dem D0 Protokoll zu tun haben. Konnte ich aber auch nicht testen, da mein Zähler die Telegramm im SML Protokoll schickt.

                      Bei dir schickt der Zähler aber noch Werte, allerdings sind das Hieroglyphen :-)
                      Zuletzt geändert von blacksun; 06.09.2019, 10:30.

                      Kommentar


                      • Dimon
                        Dimon kommentierte
                        Kommentar bearbeiten
                        ja habe die version 1.1 installiert, weil auch die alte nicht mehr lief... also ich sehe alles klar... nicht mit Hieroglyphen! (es sei den, du schaust es dir gerade auf einem Mobilem-Device an... (in Tapatalk sieht es bei mir auch schlimm aus))

                      • Dimon
                        Dimon kommentierte
                        Kommentar bearbeiten
                        Hier jetzt mal direkt aus dem Log-File

                        2019-09-06 11:20:03 <INFO> Initial Baudrate: 300
                        2019-09-06 11:20:03 <INFO> Max Baudrate: 300
                        2019-09-06 11:20:03 <INFO> Protocol: genericd0
                        2019-09-06 11:20:03 <INFO> Timeout: 5
                        2019-09-06 11:20:03 <INFO> Delay: 1
                        2019-09-06 11:20:03 <INFO> Setting up port /dev/serial/smartmeter/A505RGB1: Baudrate:300/300 Databits:7 Stopbits:1 Parity:even Handshake:none
                        2019-09-06 11:20:03 <INFO> Sending D0 Starting Sequence
                        2019-09-06 11:20:03 <INFO> Send: /?!
                        2019-09-06 11:20:03 <INFO> 5 Bytes written.
                        2019-09-06 11:20:08 <INFO> Save raw buffer to /var/run/shm/smartmeter/A505RGB1.dump
                        2019-09-06 11:20:08 <INFO> Parse /var/run/shm/smartmeter/A505RGB1.dump as D0-Protocol.
                        2019-09-06 11:20:08 <INFO> Calculate average power for cons.
                        2019-09-06 11:20:08 <INFO> Last Reading: . Saved before: 435489.3356 hours. Consumption: 0.0000. Avg. Power: 0.0000,
                        2019-09-06 11:20:08 <INFO> Calculate average power for del.
                        2019-09-06 11:20:08 <INFO> Last Reading: . Saved before: 435489.3356 hours. Consumption: 0.0000. Avg. Power: 0.0000,
                        2019-09-06 11:20:08 <INFO> Save Meter data to /var/run/shm/smartmeter/A505RGB1.data.
                        2019-09-06 11:20:08 <INFO> All data written to /var/run/shm/smartmeter/A505RGB1.xxxx
                    • blacksun
                      MS Profi
                      • 20.01.2016
                      • 575

                      #373
                      Nein :-), ich meine die Daten, die der Zähler schickt sind Hieroglyphen.

                      Code:
                      PAF5g06
                      A5Cg000
                      /3
                      In deinem letzten Log hat der Zähler garnicht mehr reagiert. Nach

                      Code:
                      Sending D0 Starting Sequence
                      Send: /?! 5 Bytes written.
                      müsste der Zähler antworten. Ich muss jetzt weg, ich schaue später nochmal rein. Interressant wäre auch das Problem von @Vespa_160GS.

                      Neustart des Zählers, des Loxberrys und der korrekte Sitz des Empfängers hast schon kontrolliert, davon gehe ich aus.

                      Kommentar

                      • blacksun
                        MS Profi
                        • 20.01.2016
                        • 575

                        #374
                        Dimon, du warst ja schon von Anfang an in diesen Thread dabei, wie man auf Seite 2 sieht. In diesem Log sieht man, das jetzt das ACK000 fehlt. Damals wars noch so.

                        https://www.loxforum.com/forum/proje...9863#post89863

                        Müssen wir schauen, warum er das jetzt nicht mehr macht.

                        Dadurch das Startbaudrate und Maxbaudrate gleich sind, sendet das Skript kein ACK000, 000 steht für Baudrate 300. Ich ändere das anschließend mal ab, dann sollte es wieder funktionieren.
                        Zuletzt geändert von blacksun; 06.09.2019, 12:58.

                        Kommentar


                        • Dimon
                          Dimon kommentierte
                          Kommentar bearbeiten
                          gut danke. gib hier kurz bescheid dann teste ich es sofort!
                      • blacksun
                        MS Profi
                        • 20.01.2016
                        • 575

                        #375
                        Servus @Dimon,

                        verbinde dich mit deinem Loxberry mit z. B. WinSCP und öffne die Datei sm_logger.pl unter opt/loxberry/webfrontend/cgi/bin/.

                        In dieser Datei suchst du die "Sub PROTO_GENERICD0". In dieser Sub ist die Abfrage, wenn Startbaudrate gleich der Maxbaudrate ist.

                        Du ersetzt jetzt folgenden Code in der "Sub PROTO_GENERICD0":
                        Code:
                        ### Changing Baudrate
                        ### Change baud rate only if different
                        if ( $startbaudrate ne $baudrate ) {
                            &D0_CHANGEBAUDRATE("$baudrate", "$precommand", "$postcommand");
                        }
                        gegen diesen hier:
                        Code:
                        ### Changing Baudrate
                        ### Change baud rate only if different
                        #if ( $startbaudrate ne $baudrate ) {
                            &D0_CHANGEBAUDRATE("$baudrate", "$precommand", "$postcommand");
                        #}
                        Es wird der Vergleich nicht ausgeführt. Auch wenn die Start und Maxbaudrate gleich sind, wird dann das ACK000 gesendet.

                        Stell dann bitte nochmal ein Dumpfile hier ein.
                        Zuletzt geändert von blacksun; 06.09.2019, 22:18.

                        Kommentar

                        Lädt...