Ankündigung

Einklappen
Keine Ankündigung bisher.

Stromdaten aus vzlogger importieren

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

    #16
    Hallo zusammen,

    danke fuer die info die ich hier gefunden hab.

    Habe mich dann gestern an meinem ersten Baustein versucht und dieses hier angefuegt sollte die Antwort des vzloggers HTTP-Get-requests (s.o. - danke) parsen - ohne Anspruch auf Korrektheit.

    NB: unser vzlogger ist an einen ISKRA681 angeschlossen - alle Daten, die der Zaehler abgibt sind hier in Edomi abgebildet. Die Frequenz der Datenpushens vom Zaehler 1Hz < f < 2Hz. vzlogger liefer incl. timestamp.

    Da wir keinen NT haben, sind einige Daten uninteressant (1.8.2 / 2.8.2) - Momentanleistung an den unterschiedlichen Phasen ({36, 56, 76}.7.0 ebenfalls z.Zt. nicht in Gebrauch.

    Jeglicher Kommentar/Kritik/Vorschlag gerne willkommen.

    Lieben Gruss - tullsta

    Capture.PNG

    PHP-Code:
    ###[DEF]###
    [name        =    vzlogger_parser]

    [e#1        =    vzlogger_string]

    [a#1        =    1.8.0_val]
    [a#2        =    1.8.0_uts]
    [a#3        =    1.8.1_val]
    [a#4        =    1.8.1_uts]
    [a#5        =    1.8.2_val]
    [a#6        =    1.8.2_uts]
    [a#7        =    2.8.0_val]
    [a#8        =    2.8.0_uts]
    [a#9        =    2.8.1_val]
    [a#10        =    2.8.1_uts]
    [a#11        =    2.8.2_val]
    [a#12        =    2.8.2_uts]
    [a#13        =    16.7.0_val]
    [a#14        =    16.7.0_uts]
    [a#15        =    36.7.0_val]
    [a#16        =    36.7.0_uts]
    [a#17        =    56.7.0_val]
    [a#18        =    56.7.0_uts]
    [a#19        =    76.7.0_val]
    [a#20        =    76.7.0_uts]

    [v#1        = ]
    [v#2        = ]
    [v#3        = ]
    [v#4        = ]
    [v#5        = ]
    [v#6        = ]
    [v#7        = ]
    [v#8        = ]
    [v#9        = ]
    [v#10       = ]
    ###[/DEF]###


    ###[HELP]###
    Vorlage: Standard-LBS
    ###[/HELP]###


    ###[LBS]###
    <?
    function LB_LBSID($id) {
        if ($E=logic_getInputs($id)) {
            if ($E[1]['refresh'] && $E[1]['value']!="") {
                $matches = null;
                $vz_item_idx = 1;
                $return_value = preg_match_all('/"tuples":\\s\\[\\s\\[\\s(\\d+),\\s([0-9\\-\\.]+)/', $E[1]['value'], $vz_items, PREG_SET_ORDER);
                foreach($vz_items as $vz_item){
                    $prev_uts = logic_getVar($id, $vz_item_idx);
                    if ((string)$vz_item[1] !== (string)$prev_uts) {
                        logic_setOutput($id, 2*$vz_item_idx-1, $vz_item[2] );
                        logic_setOutput($id, 2*$vz_item_idx,   $vz_item[1] );
                        logic_setVar($id, $vz_item_idx, $vz_item[1]);
                    }
                    $vz_item_idx++;
                }
            }
        }
    }
    ?>
    ###[/LBS]###


    ###[EXEC]###
    <?
    ?>
    ###[/EXEC]###

    Kommentar


      #17
      tullsta Was hast du denn als HTTP-Request eingesetzt? Bzw. wie sieht dein Befehl aus?

      Gruß

      Henrik

      Kommentar


        #18
        Hallo Henrik,

        das ist einfach Folgendes (gekritzel = IP-Adresse ala 192.xxx.xxx.xxx):

        LG - tullsta

        Capture.PNG

        Kommentar


          #19
          tullsta Irgendwas ist komisch... Ich bekomme nur den Wert für 1.8.0..... Wo könnte da das Problem liegen? Müssen alle Werte die ich auslesen kann/will in der vzzaehler.conf angelegt sein? Im VZ-Log sehe ich alle Werte....

          Edit: Zähler ist auch ein 681....

          Unbenannt.png
          Zuletzt geändert von Langer89; 17.05.2018, 17:27.

          Kommentar


            #20
            Hallo Henrik,

            dann oeffne die Seite mal im Firefox.

            hier sollten auch alle EIntraege zu sehen sein:

            Capture.PNG

            LG - tullsta

            Kommentar


              #21
              Hmmm.. ne da steht nur der eine Wert drin, den ich auch bekomme. Müssen alle Werte die ich auslesen möchte in der vzlogger.conf stehen? wie sieht deine .conf aus?

              Kommentar


                #22
                Hi Henrik,

                ja - in der vzlogger.conf muessen natuerlich alle channels drinnen stehen. Man kann sie einzeln mit der jeweiligen UUID abfragen oder eben alle wie oben.

                Hier die conf-datei:

                Code:
                {
                "retry" : 0,
                "daemon": true,
                "verbosity" : 3,
                "log" : "/var/log/vzlogger.log",
                
                "local" : {
                        "enabled" : true,
                        "port" : 8080,
                        "index" : true,
                        "timeout" : 30,
                        "buffer" : 60
                },
                
                "meters" : [
                        {
                        "enabled" : true,
                        "device" : "/dev/ttyS1",
                        "protocol" : "sml",
                        "parity" : "8N1",
                        "baudrate" : 9600,
                        "aggtime" : -1,
                        "aggfixedinterval" : true,
                        "channels": [
                            {
                            "uuid" : "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxx0180",
                            "identifier" : "1-0:1.8.0",
                            "api": "null",
                            "aggmode" : "none"
                            },
                            {
                            "uuid" : "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxx0181",
                            "identifier" : "1-0:1.8.1",
                            "api": "null",
                            "aggmode": "none"
                            },
                            {
                            "uuid" : "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxx0182",
                            "identifier" : "1-0:1.8.2",
                            "api": "null",
                            "aggmode": "none"
                            },
                            {
                            "uuid" : "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxx0280",
                            "identifier" : "1-0:2.8.0",
                            "api": "null",
                            "aggmode": "none"
                            },
                            {
                            "uuid" : "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxx0281",
                            "identifier" : "1-0:2.8.1",
                            "api": "null",
                            "aggmode": "none"
                            },
                            {
                            "uuid" : "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxx0282",
                            "identifier" : "1-0:2.8.2",
                            "api": "null",
                            "aggmode": "none"
                            },
                            {
                            "uuid" : "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxx1670",
                            "identifier" : "1-0:16.7.0",
                            "api": "null",
                            "aggmode": "none"
                            },
                            {
                            "uuid" : "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxx3670",
                            "identifier" : "1-0:36.7.0",
                            "api": "null",
                            "aggmode": "none"
                            },
                            {
                            "uuid" : "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxx5670",
                            "identifier" : "1-0:56.7.0",
                            "api": "null",
                            "aggmode": "none"
                            },
                            {
                            "uuid" : "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxx7670",
                            "identifier" : "1-0:76.7.0",
                            "api": "null",
                            "aggmode": "none"
                            }
                        ]
                        }
                    ]
                }
                LG - tullsta

                Kommentar


                  #23
                  Danke! Das war es natürlich.... Hatte nur die Gesamtleistung in meiner vzlogger.conf.....

                  Edit: Wie verarbeitest du die Zeitstempel? nur für das Datenarchiv? Wie teilst du diese dem Archiv mit?
                  Hat sich die Sekundliche Abfrage als praktikabel erwiesen?

                  Gruß

                  Henrik
                  Zuletzt geändert von Langer89; 19.05.2018, 10:45.

                  Kommentar


                    #24
                    tullsta Habe deine Lösung nun einen Monat am laufen, läuft super! Nur eine Sache ist mir aufgefallen: Ich lasse mir die Gesamtleistung (16.7.0) in meine Visu anzeigen. Dort habe ich eine Verzögerung des Werte (im Vergleich zum Zähler) von über 30 Sekunden. Ist das bei dir auch der Fall? In welchem Intervall fragst du den vzlogger ab (Sekündlich?)

                    Gruß

                    Henrik

                    Kommentar


                      #25
                      Hi Henrik,

                      mein Zaehler schickt alle 1-3 Sekunden einen Wert auf die Reise - das scheint zu variieren und ich hab' keine Ahnung was die Grundlage dafuer ist.
                      => ich hatte jede Sekunde eine logger-Abfrage - daher die Abfrage der doppelten Werte.
                      Eine sekuendliche Abfrage in Normalfall m.M.n. zu viel - ich hatte diese um den Nutzen eines Stromspeichers zu simulieren, allerdings ist da Edomi doch recht schnell am Limit mit meinem Fujitsu.

                      Was noch fehlt ist z.B. unplausible Daten rauszufiltern (hatte ab und an einen Wert, der im Terrawatt-Bereich lag - woran das lag weiss ich nicht aber meine Verkabelung ist auch recht lang).

                      Eine Verzoegerung Auslesen <=> Anzeige hab' ich noch nicht ueberprueft.

                      Zeitstempel hab' ich bislang noch nicht verarbeitet - im Datenarchiv bekommen die einen Edomi-Stempel.

                      LG - tullsta

                      Kommentar


                        #26
                        Nabend zusammen,

                        ich muss diesen Thread nochmal ausgraben. Denn bei uns liest ein IR Leser unseren EMH Zähler über einen PI3 aus. Im vzlogger kommen auch die entsprechenden Daten an. Aber irgendwie klappt der http Abruf ins edomi nicht.

                        Demnach müssten die Daten ja korrekt sein:
                        Code:
                        pi@raspberrypi:~ $ tail -f /var/log/vzlogger.log
                        [Nov 15 21:48:18][mtr0] Got 4 new readings from meter:
                        [Nov 15 21:48:18][mtr0] Reading: id=1-0:1.8.0*255/ObisIdentifier:1-0:1.8.0*255 value=[COLOR=#FF0000][B]13588062[/B][/COLOR].00 ts=1573850898814
                        [Nov 15 21:48:18][mtr0] Reading: id=1-0:1.8.1*255/ObisIdentifier:1-0:1.8.1*255 value=13588062.00 ts=1573850898814
                        [Nov 15 21:48:18][mtr0] Reading: id=1-0:1.8.2*255/ObisIdentifier:1-0:1.8.2*255 value=0.00 ts=1573850898814
                        [Nov 15 21:48:18][mtr0] Reading: id=1-0:16.7.0*255/ObisIdentifier:1-0:16.7.0*255 value=73.80 ts=1573850898814
                        [Nov 15 21:48:23][mtr0] Got 4 new readings from meter:
                        [Nov 15 21:48:23][mtr0] Reading: id=1-0:1.8.0*255/ObisIdentifier:1-0:1.8.0*255 value=[COLOR=#FF0000][B]13588062[/B][/COLOR].00 ts=1573850903192
                        [Nov 15 21:48:23][mtr0] Reading: id=1-0:1.8.1*255/ObisIdentifier:1-0:1.8.1*255 value=13588062.00 ts=1573850903192
                        [Nov 15 21:48:23][mtr0] Reading: id=1-0:1.8.2*255/ObisIdentifier:1-0:1.8.2*255 value=0.00 ts=1573850903192
                        [Nov 15 21:48:23][mtr0] Reading: id=1-0:16.7.0*255/ObisIdentifier:1-0:16.7.0*255 value=73.70 ts=1573850903192
                        Denn der Zählerstand ist momentan auf 13,5KW

                        Der http Abruf nach tullsta schaut wie folgt aus:
                        Unbenannt1.JPG
                        Den Pfad aus #12 hatte ich auch schon versucht. Aber wie setzt sich dieser Pfad des Links bei dir Hannes17 zusammen?

                        Und die Logik spuckt nichts aus:
                        Unbenannt.JPG

                        Auch, wenn ich den #pfad exakt wie aus #12 eintrage.
                        Aber es komt einfach nichts an.

                        Woran hakt es hier nocht?

                        Gruß
                        Angehängte Dateien
                        Zuletzt geändert von ThomasCologne; 15.11.2019, 22:54.

                        Kommentar


                          #27
                          Dein http-Resquest unterscheidet sich doch von meinem.
                          Ist leider schon etwas länger her, das ich das eingerichtet habe. Aber es läuft noch immer ohne Probleme.

                          Was erhälst du als Antwort, wenn du die URL aufrufst?
                          Ich hatte damals auch Hilfe aus einem anderen Forum.

                          Kommentar


                            #28
                            In der Tat, hier habe ich was gefunden:

                            https://www.photovoltaikforum.com/th...lesenen-daten/

                            Bei mir passte die conf nicht, sodass ich diese entsprechend anpassen konnte. Nun kann es auch im edomi per http abgerufen werden.

                            Code:
                            {
                            "retry" : 5,
                            "daemon": true,
                            "verbosity" : 10,
                            "log" : "/var/log/vzlogger.log",
                            
                            
                            "local" : {
                            "enabled" : true,
                            "port" : 8080,
                            "index" : true,
                            "timeout" : 30,
                            "buffer" : -1
                            },
                            
                            
                            "meters" : [{
                            "protocol" : "sml",
                            "enabled" : true,
                            "device" : "/dev/ttyUSB0",
                            "parity" : "8N1",
                            "baudrate" : 9600,
                            "aggtime" : -1,
                            "aggfixedinterval" : true,
                            "channels": [{
                            "api": "volkszaehler", // middleware api, default volkszaehler
                            "uuid": "fde8f1d0-c5d0-11e0-856e-f9e4360ced10",
                            "middleware": "http://localhost/middleware.php",
                            "identifier": "1-0:1.8.0" // OBIS identifier (alias for '1-0:1.7.ff')
                            // see 'vzlogger -h' for available aliases
                            // see 'vzlogger -v20' for available identifiers for attached meters
                            }]
                            }]
                            }
                            Der identifier war bei mir falsch gesetzt.

                            Kommentar


                              #29
                              Hallo zusammen,
                              kurze Frage: was ist bei den Daten der Unterschied zwischen val und uts?
                              Vielen Dank

                              Kommentar


                                #30
                                Zitat von Willi will Knx Beitrag anzeigen
                                Hallo zusammen,
                                kurze Frage: was ist bei den Daten der Unterschied zwischen val und uts?
                                Vielen Dank
                                Willi will Knx Christian: [EDIT Korrektur]: Ich denke "val" ist der aktuelle Verbrauch in W, "uts" ist der Timestamp (siehe hier).

                                Sobald ich es geschafft habe, den string vernünftig zu zerteilen, kann ich dir das bestätigen. Aktuell läufts noch nicht so richtig.

                                Bekomme mit der angegebenen Abfrage keine Werte, sondern nur wenn ich konkret eine UUID im request abfrage. Sollte ja eigentlich anders sein?

                                Ausserdem bekomme ich keinen Zählerstand abgefragt, dies scheint mittels vzlogger auch nicht zu funktionieren. Hier scheint eine mysql-Abfrage notwendig zu sein! Puhh... Doch nicht mal so eben gemacht.....

                                Gruß
                                Sven
                                Zuletzt geändert von xsven80x; 05.04.2020, 13:55.

                                Kommentar

                                Lädt...
                                X