Ankündigung

Einklappen
Keine Ankündigung bisher.

Volkszähler-Stromzähler: Werte auslesen/auswerten und an den Gira Homeserver senden

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

    [Elektro] Volkszähler-Stromzähler: Werte auslesen/auswerten und an den Gira Homeserver senden

    Hallo,

    ich nutze KNX mit einem Gira Homeserver.
    Den Stromzähler lese ich seit ner Woche mit dem Volkszaehler.org aus und habe dazu das fertige Image für den Raspi genommen.
    Per USB ist dann ein Optokoppler an meinem ISKRA MT681 dran und ich bekomme auch Werte nachdem ich einen Kanal hinzugefügt hatte und ne Datei für meinen MT681 angepasst hatte. Auch habe ich die PIN des MT681 eingeben.

    Mein Ziel ist es auf dem Homeserver die Werte momentaner/aktueller Verbrauch in Watt zu haben und die letzten Monatswerte und die letzten Jahreswerte zu haben.

    Ich kenne mich grundsätzlich noch nicht mit dem Volkszähler aus. Ich habe gesehen, dass in der MySQL DB des Volkszählers in der Tabelle Data nur ein Wert je Kanal und Zeitstempel gespeichert wird.

    Mir ist noch nicht klar, wie ich mehrere Werte, die der Stromzähler hoffentlich schickt und ich noch nicht sehe, erst einmal am Volkszähler sehen kann (1. Schritt) und dann an den Homeserver übergeben kann (2. Schritt).

    Kann ich irgendwie prüfen, was aktuell alles am Volkszähler vom Stromzähler aus an kommt. Und wie speichere ich dann die benötigten Werte oder sehe diese auf der Webseite vom Volkszähler bzw. schicke diese zu Homeserver von Gira?

    Danke für eure Hilfe, danke

    Eric

    #2
    Ich habe ein bash Script dafür geschrieben.
    sobald ich daheim bin poste ich es dir.

    Der VZlogger zieht sich 4 mal pro Sekunde die Leistungswerte und speichert die in der SQL tabelle ab.

    Bei dem Script gibst du die UUID an, und lässt es in per Cronjob ausführen.
    Ich lasse mir die Leistungswerte und Zählerstand an den HS senden
    Zuletzt geändert von larsrosen; 31.01.2019, 15:38.
    Elektroinstallation-Rosenberg
    -Systemintegration-
    Planung, Ausführung, Bauherren Unterstützung
    http://www.knx-haus.com

    Kommentar


      #3
      So hoffe damit kannst was anfangen....

      .txt löschen

      p.s.

      Falls sich damit jemand auskennt und lacht... Ich habe davon wenig Ahnung. Ich denke Nils könnte das in 2 Zeilen LBS packen.
      Für mich hat es den Zweck bislang erfüllt.
      Angehängte Dateien
      Zuletzt geändert von larsrosen; 31.01.2019, 21:30.
      Elektroinstallation-Rosenberg
      -Systemintegration-
      Planung, Ausführung, Bauherren Unterstützung
      http://www.knx-haus.com

      Kommentar


        #4
        Vielen Dank dafür.

        Wenn ich das Script richtig gelesen habe, gibt es die gesammelten Infos am Bildschirm aus.

        Ich hänge vermutlich noch daran, die Daten vom Zähler überhaupt in die Datenbank zu schreiben. In meinen SQLs über die Tabelle data bringen nur einen einigen Wert raus. Ich habe nun noch etwas davon gelesen, dass ich in er vzlogger,conf mehrere uuids definieren sollte mit unterschiedlichen OBIS-Daten. Bisher habe ich nur 1-0:1.8.0 drin.

        Wenn ich es beim Zähler MT631 von ISKRA richtig gelesen habe, erhalte ich nur Wirkenergie in Wh(total), was ich schon abfrage, und Wirkleistung in W, was ich noch in die vzlogger.conf einbauen muss.

        Ich vermute mal, dass dann in der Tabelle data auch mehr drin stehen wird.

        Wenn dort mehr drin steht, kann ich die SQLs und das Script nutzen, um mir Werte zu ermitteln und dann auch an den HS zu übergeben. Ich weiß nur noch nicht ob der HS SQL kann oder ob ich über HTTP request was bauen muss.

        Grüße
        Eric

        Kommentar


          #5
          Das Script holt die Daten aus dem SQL und sendet sie an ein Port vom HS.

          Du musst für jeden Kanal eine UUID anlegen.
          Je nachdem welche OBIs das sind...Siehst du aber wenn du den VZlogger per Hand startest
          Elektroinstallation-Rosenberg
          -Systemintegration-
          Planung, Ausführung, Bauherren Unterstützung
          http://www.knx-haus.com

          Kommentar


            #6
            Ok. Das ist ja klasse. Das Script betrachte ich genau, wenn ich die DB klar hab.

            Zur Zeit werden nur Daten in meine Channel ID 7 geschrieben. Im vzlogger.conf ist nur eine UUID, also die mit Channel id 7 drin.

            Werden in die DB nur die Obis geschrieben, die in der vzlogger.conf definiert sind? Oder hat die Webseite, wo ich die Kanäle hinzufügen kann irgendwelche Auswirkungen?



            Kommentar


              #7
              Du legst im Frontend die benötigten Kanäle an.
              Diese gibst du dann im VZlogger an

              Auszug aus dem Wiki :
              https://wiki.volkszaehler.org/_expor...ge?codeblock=8
              Zuletzt geändert von larsrosen; 01.02.2019, 16:46.
              Elektroinstallation-Rosenberg
              -Systemintegration-
              Planung, Ausführung, Bauherren Unterstützung
              http://www.knx-haus.com

              Kommentar


                #8
                mmmh. ja, den Link kenne ich und so wollte ich es auch machen.
                Irgendwie bekomme ich in DATA nur Channel 7 geschrieben, obwohl ich die vzlogger.conf so aufgebaut habe. Auch wenn ich die OBIS tausche zwischen den beiden UUIDs wird weiter der gleiche Art von Wert weiter geschrieben. im Channel 7. Reboot hab ich natürlich durchgeführt.

                Code:
                {
                
                "retry" : 3,
                
                "daemon": true,
                
                "verbosity" : 0,
                
                "log" : "/var/log/vzlogger.log",
                
                
                
                "local" : {
                
                "enabled" : false,
                
                "port" : 8080,
                
                "index" : true,
                
                "timeout" : 30,
                
                "buffer" : 600
                
                },
                
                
                
                "meters" : [
                
                {
                
                "enabled" : true,
                
                "device" : "/dev/ttyUSB0",
                
                "protocol" : "sml",
                
                "parity" : "8N1",
                
                "baudrate" : 9600,
                
                "aggtime" : -1,
                
                "aggfixedinterval" : true,
                
                "channels": [{
                
                "uuid" : "a3b02b60-2473-11e9-adf2-41e80098d208",
                
                "middleware" : "http://localhost/middleware.php",
                
                "identifier" : "1-0:15.7.0",
                
                "aggmode" : "MAX"
                
                }
                
                ,
                
                {
                
                "uuid" : "c91ff300-2638-11e9-a51b-31db1edb6197",
                
                "middleware" : "http://localhost/middleware.php",
                
                "identifier" : "1-0:1.8.0",
                
                "aggmode" : "MAX"
                
                }
                
                 
                
                 
                
                ]
                
                }
                
                ]
                
                }
                
                 

                Kommentar


                  #9
                  so....hab den Fehler vermutlich gefunden. Die OBIS muss 1-0:16.7.0 sein und nicht 1-0:15.7.0 wie auf dieser Webseite: https://wiki.volkszaehler.org/hardwa...kraemeco_mt681

                  Hier steht die 1-0:16.7.0:
                  https://de.wikipedia.org/wiki/OBIS-Kennzahlen

                  Die Tabelle DATA hat nun diese Einträge:
                  | 95816 | 5 | 1549039118838 | 3338217 |
                  | 95817 | 9 | 1549039120225 | 771 |
                  | 95818 | 5 | 1549039120225 | 3338217.3 |
                  | 95819 | 5 | 1549039121645 | 3338217.6 |
                  | 95820 | 9 | 1549039121645 | 756 |
                  | 95821 | 9 | 1549039123013 | 800 |
                  | 95822 | 5 | 1549039123013 | 3338217.9 |
                  | 95823 | 5 | 1549039124373 | 3338218.2 |
                  | 95824 | 9 | 1549039124373 | 945 |
                  | 95825 | 9 | 1549039125521 | 937 |
                  | 95826 | 5 | 1549039125521 | 3338218.5 |
                  | 95827 | 5 | 1549039126675 | 3338218.8 |
                  | 95828 | 9 | 1549039126675 | 936 |

                  Ich vermute nun kann ich mit dem Script weiter machen :-)

                  Kommentar


                    #10
                    Script funktioniert, ich habe die benötigten Werte in nem iko, sofern ich das Script starte.
                    Eine Sache bekomme ich jetzt aber doch nicht hin :-)
                    Wie lasse ich das Script per Cronjob laufen?

                    Ich habs mal in der crontab reingeschrieben, geht aber nicht:
                    Code:
                    # /etc/crontab: system-wide crontab
                    
                    # Unlike any other crontab you don't have to run the `crontab'
                    
                    # command to install the new version when you edit this file
                    
                    # and files in /etc/cron.d. These files also have username fields,
                    
                    # that none of the other crontabs do.
                    
                     
                    
                    SHELL=/bin/sh
                    
                    PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
                    
                     
                    
                    # m h dom mon dow user command
                    
                    17 * * * * root cd / && run-parts --report /etc/cron.hourly
                    
                    25 6 * * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily )
                    
                    47 6 * * 7 root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.weekly )
                    
                    52 6 1 * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.monthly )
                    
                    [SIZE=3]*/1 * * * * root [/SIZE][SIZE=3]/tmp/skripte/[/SIZE][SIZE=3]volkszaehler_hs3.sh[/SIZE]
                    
                    [SIZE=3]#[/SIZE]
                    Cronjob kann nur je Minute, wenn ich es richtig gelesen habe, wie lasse ich das Skript alle 5 Sekunden ausführen?

                    Grüße
                    Eric

                    Kommentar


                      #11
                      Tja, genau das ist das Problem....
                      Ich habe das so nicht benötigt, da ich nir Zählerstand übertrage.

                      Du könntest eine Schleife daraus bauen mit einem sleep 5 für 5 Sekunden.

                      Aber ka ob das dem PI oder dem HS was von der Performance ausmacht.
                      Zuletzt geändert von larsrosen; 01.02.2019, 20:47.
                      Elektroinstallation-Rosenberg
                      -Systemintegration-
                      Planung, Ausführung, Bauherren Unterstützung
                      http://www.knx-haus.com

                      Kommentar


                        #12
                        Ich würde es gerne zuerst einmal je Minute einrichten wollen. Irgendwie nimmt der in der crontab keinen meiner Befehle an. Reichen würde es, wenn es überhaupt per CronJob laufen würden :-))

                        Folgendes hatte ich eben testweise drin, aber das Script wurde scheinbar nicht ausgeführt nach dem Reboot:
                        Code:
                        @reboot /etc/./volkszaehler_hs3.sh
                        
                        @reboot /etc/volkszaehler_hs3.sh
                        
                        @reboot root /etc/volkszaehler_hs3.sh
                        
                        @reboot root /etc/./volkszaehler_hs3.sh
                        
                        @reboot cd / && cd etc && ./volkszaehler_hs3.sh

                        Kommentar


                          #13
                          Auf welche Attribute ist das Script gestellt?

                          755?

                          richtig wäre
                          Code:
                           */1 * * * *   /tmp/skripte/volkszaehler_hs3.sh > /dev/null 2>&1
                          Das rost würde ich erstmal weglassen, da der Prozess normal von root ausgeführt wird.

                          und wichtige Infos gibt die
                          /var/log/syslog
                          Elektroinstallation-Rosenberg
                          -Systemintegration-
                          Planung, Ausführung, Bauherren Unterstützung
                          http://www.knx-haus.com

                          Kommentar


                            #14
                            Ich hatte 777, habe auf 755 jetzt mal geändert. Owner war pi, habe jetzt owner root gesetzt.
                            Leider geht immer noch keiner meiner Befehle in crontab unter /etc
                            Das Script hab ich jetzt auch mal in den Ordner /etc gelegt..

                            Hier mal die komplett crontab, verstehe nicht woran es liegen könnte, in der syslog steht auch nix schlimmes....
                            Code:
                            # /etc/crontab: system-wide crontab
                            
                            # Unlike any other crontab you don't have to run the `crontab'
                            
                            # command to install the new version when you edit this file
                            
                            # and files in /etc/cron.d. These files also have username fields,
                            
                            # that none of the other crontabs do.
                            
                             
                            
                            SHELL=/bin/sh
                            
                            PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
                            
                             
                            
                            # m h dom mon dow user command
                            
                            @reboot /etc/volkszaehler_hs3.sh /dev/null 2>&1
                            
                            @reboot /etc/./volkszaehler_hs3.sh /dev/null 2>&1
                            
                            @reboot ./volkszaehler_hs3.sh /dev/null 2>&1
                            
                            */1 * * * * /etc/volkszaehler_hs3.sh > /dev/null 2>&1
                            
                            */1 * * * * /etc/./volkszaehler_hs3.sh > /dev/null 2>&1
                            
                            17 * * * * root cd / && run-parts --report /etc/cron.hourly
                            
                            25 6 * * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily )
                            
                            47 6 * * 7 root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.weekly )
                            
                            52 6 1 * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.monthly )
                            
                            #
                            
                             

                            Kommentar


                              #15
                              Wie öffnest du die crontab denn?

                              crontab -e

                              läuft der crond Prozess?
                              Elektroinstallation-Rosenberg
                              -Systemintegration-
                              Planung, Ausführung, Bauherren Unterstützung
                              http://www.knx-haus.com

                              Kommentar

                              Lädt...
                              X