Ankündigung

Einklappen
Keine Ankündigung bisher.

Plot.period Stromverbrauch

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

    Plot.period Stromverbrauch

    Hallo zusammen,


    ich möchte meinen Stromverbrauch der Letzten 365 Tage mit einem plot-period Darstellen.

    Der Code ist wie folgt eingebunden :


    Code:
        <h2>Leistung in kW der 365 Tage{{ plot.period('Bezug.Aktuell', 'Bezug.Aktuell', 'avg', 'y') }} </h2>

    Jedoch erfolgt kein Plot - Das Item "Bezug.Aktuell" ist jedoch vorhanden und wird auch beschrieben.

    Die Items vom EMU Professional sind in SHNG wie folgt definiert:


    Code:
    
    Bezug:
        EnergieHT:
            type: num
            sqlite: 'yes'
            knx_dpt: 13
            knx_init: 5/5/1
            knx_listen: 5/5/1
        EnergieNT:
            type: num
            sqlite: 'yes'
            knx_dpt: 13
            knx_init: 5/5/2
            knx_listen: 5/5/2
        Gesammt:
            type: num
            sqlite: 'yes'
            knx_dpt: 13
            knx_init: 5/5/3
            knx_listen: 5/5/3
        Aktuell:
            type: num
            eval: value / 1000
            sqlite: 'yes'
            knx_dpt: 14
            knx_init: 5/1/4
            knx_listen: 5/1/4
        AmpereL1:
            type: num
            sqlite: 'yes'
            knx_dpt: 14
            knx_init: 5/4/1
            knx_listen: 5/4/1
        AmpereL2:
            type: num
            sqlite: 'yes'
            knx_dpt: 14
            knx_init: 5/4/2
            knx_listen: 5/4/2
        AmpereL3:
            type: num
            sqlite: 'yes'
            knx_dpt: 14
            knx_init: 5/4/3
            knx_listen: 5/4/3
        SpannungL1:
            type: num
            sqlite: 'yes'
            knx_dpt: 14
            knx_init: 5/3/1
            knx_listen: 5/3/1
        SpannungL2:
            type: num
            sqlite: 'yes'
            knx_dpt: 14
            knx_init: 5/3/2
            knx_listen: 5/3/2
        SpannungL3:
            type: num
            sqlite: 'yes'
            knx_dpt: 14
            knx_init: 5/3/3
            knx_listen: 5/3/3
        PowerL1:
            type: num
            sqlite: 'yes'
            knx_dpt: 14
            knx_init: 5/1/1
            knx_listen: 5/1/1
        PowerL2:
            type: num
            sqlite: 'yes'
            knx_dpt: 14
            knx_init: 5/1/2
            knx_listen: 5/1/2
        PowerL3:
            type: num
            sqlite: 'yes'
            knx_dpt: 14
            knx_init: 5/1/3
            knx_listen: 5/1/3


    Wo finde ich die sqlite Datei sodass ich den Datensatz evtl mal löschen könnte
    Gruss Oliver

    Elektroinstallateur für Energie und Gebäudetechnik

    #2
    Der letzte Parameter müsste '1y' sein statt nur 'y'.

    Kommentar


      #3
      Oh shame on me teste es später !
      danke


      Besteht die Möglichkeit die Datenbank zu cleanen ?





      So ich melde mich nochmal. Habe den parameter angepasst jedoch läuft es immer noch nicht..




      plot.png

      Im Backend erhalte ich jedoch fast alle 3 Minuten einen Aktuellen Wert sodass ich davon ausgehe das die Items richtig konfiguriert sind.
      Angehängte Dateien
      Zuletzt geändert von jonny7792; 19.04.2019, 05:32.
      Gruss Oliver

      Elektroinstallateur für Energie und Gebäudetechnik

      Kommentar


        #4
        Wenn du nichts anderes konfiguriert hast, liegt die sqlite-Datei unterhalb des SmartHomeNG Verzeichnisses in /var/db/smarthome.db

        Das sqlite Plugin wird übrigens nicht mehr gewartet, du solltest einen Wechsel auf das database Plugin in Betracht ziehen.

        P.S.: Das ist alles Teil von SHNG, die smartVISU macht nur die Darstellung der Plots. Für weitergehende Fragen erhälst du im SHNG-Forum eher Antworten.

        Kommentar


          #5
          Ok ich schaue mir mal am Wochenende das Database Plugin an !


          Danke dir und Grüße nach Aaarau
          Gruss Oliver

          Elektroinstallateur für Energie und Gebäudetechnik

          Kommentar


            #6
            So ich habe das Database Plugin zum Laufen gebracht! Danke dafür für die tolle Arbeit.



            Nun wäre es schon wenn man mittels eval den Aktuellen Tagesverbrauch und den Vortagesverbrauch plotten lassen könnte.Da mein Zähler nur die Werte ausgibt Aktuelle Leistung sowie die Zählerstände
            Gruss Oliver

            Elektroinstallateur für Energie und Gebäudetechnik

            Kommentar


              #7
              Ich habe das mit Logiken gelöst.
              Um Mitternacht wird eine Logik ausgeführt, die die Werte des letzten Tages berechnet und speichert.
              Und während des Tages wird zyklisch eine Logik ausgeführt, die die Werte des aktuellen Tages angibt.

              Für heute schaut das so aus:
              Code:
              #!/usr/bin/env python3
              
              # Berechne die Anzahl der Minuten seit Tagesbeginn
              Stunden = datetime.datetime.now().hour
              Minuten = datetime.datetime.now().minute
              Tagesminuten = (Stunden * 60) + Minuten
              start = str(Tagesminuten) + 'i'
              
              # Berechne die Minimaltemperatur und schreibe das Ergebnis in ein Item
              sh.DG.Garage.Raumklima.Ist_Temperatur.Minimum.Heute(sh.DG.Garage.Raumklima.Ist_Temperatur.db('min', start))
              sh.DG.Haus.Raumklima.Ist_Temperatur.Minimum.Heute(sh.DG.Haus.Raumklima.Ist_Temperatur.db('min', start))

              Für Gestern:
              Code:
              #!/usr/bin/env python3
              
              # Berechne die Minimaltemperatur und schreibe das Ergebnis in ein Item
              sh.DG.Garage.Raumklima.Ist_Temperatur.Minimum.Gestern(sh.DG.Garage.Raumklima.Ist_Temperatur.db('min', '24h'))
              sh.DG.Haus.Raumklima.Ist_Temperatur.Minimum.Gestern(sh.DG.Haus.Raumklima.Ist_Temperatur.db('min', '24h'))

              Kommentar


                #8
                Hallo Maxthomas2001 ,


                danke für deine Hilfestellung :


                Ich habe deinen Code so eingebunden:



                Code:
                
                #!/usr/bin/env python3
                # tagesverbrauch.py
                
                # Berechne die Anzahl der Minuten seit Tagesbeginn
                Stunden = datetime.datetime.now().hour
                Minuten = datetime.datetime.now().minute
                Tagesminuten = (Stunden * 60) + Minuten
                start = str(Tagesminuten) + 'i'
                
                # Berechne den Stromverbrauch von gestern und schreibe das Ergebnis in ein Item
                sh.Bezug.TagesverbrauchHT(sh.Bezug.EnergieHT.db('min', start))
                sh.Bezug.TagesverbrauchNT(sh.Bezug.EnergieNT.db('min', start))
                Jedoch erhalte ich auf den Items Bezug.TagesverbrauchHT sowie ....NT die Zählerstände angezeigt und nicht den Verbrauch.. Ich glaube ich bin wirklich zu doof dafür..

                Ich habe eben einen Doppeltarif Zähler ( Standart hier in CH )



                Aus Gründen der Vollständigkeit bzw. Nachvollziehbarkeit mal meine Items.yaml



                Code:
                
                
                Bezug:
                    EnergieHT:
                        type: num
                        database: init
                        knx_dpt: 13
                        knx_init: 5/5/8
                        knx_listen: 5/5/8
                        eval: value / 1000
                    EnergieNT:
                        type: num
                        database: init
                        knx_dpt: 13
                        knx_init: 5/5/9
                        knx_listen: 5/5/9
                        eval: value / 1000
                    Gesammt:
                        type: num
                        database: init
                        knx_dpt: 13
                        knx_init: 5/5/10
                        knx_listen: 5/5/10
                        eval: value / 1000
                    Vortagesverbrauch:
                        type: num
                        database: init
                        knx_dpt: 13
                        eval: sh.Bezug.VortagesverbrauchHT() + sh.Bezug.VortagesverbrauchNT()
                        eval_trigger: Bezug.VortagesverbrauchHT | Bezug.VortagesverbrauchNT
                    VortagesverbrauchHT:
                        type: num
                        database: init
                        knx_dpt: 13
                    VortagesverbrauchNT:
                        type: num
                        database: init
                        knx_dpt: 13
                    TagesverbrauchNT:
                        type: num
                        database: init
                        knx_dpt: 13
                    TagesverbrauchHT:
                        type: num
                        database: init
                        knx_dpt: 13
                    Tagesverbrauch:
                        type: num
                        database: init
                        knx_dpt: 13
                        eval: sh.Bezug.TagesverbrauchHT() + sh.Bezug.TagesverbrauchNT()
                        eval_trigger: Bezug.TagesverbrauchHT | Bezug.TagesverbrauchNT
                    AktuellKW:
                        type: num
                        eval: value / 1000
                        database: init
                        knx_dpt: 14
                        knx_init: 5/1/4
                        knx_listen: 5/1/4
                    AmpereL1:
                        type: num
                        database: init
                        knx_dpt: 14
                        knx_init: 5/4/1
                        knx_listen: 5/4/1
                    AmpereL2:
                        type: num
                        database: init
                        knx_dpt: 14
                        knx_init: 5/4/2
                        knx_listen: 5/4/2
                    AmpereL3:
                        type: num
                        database: init
                        knx_dpt: 14
                        knx_init: 5/4/3
                        knx_listen: 5/4/3
                    SpannungL1:
                        type: num
                        database: init
                        knx_dpt: 14
                        knx_init: 5/3/1
                        knx_listen: 5/3/1
                    SpannungL2:
                        type: num
                        database: init
                        knx_dpt: 14
                        knx_init: 5/3/2
                        knx_listen: 5/3/2
                    SpannungL3:
                        type: num
                        database: init
                        knx_dpt: 14
                        knx_init: 5/3/3
                        knx_listen: 5/3/3
                    PowerL1:
                        type: num
                        database: init
                        knx_dpt: 14
                        knx_init: 5/1/1
                        knx_listen: 5/1/1
                    PowerL2:
                        type: num
                        database: init
                        knx_dpt: 14
                        knx_init: 5/1/2
                        knx_listen: 5/1/2
                    PowerL3:
                        type: num
                        database: init
                        knx_dpt: 14
                        knx_init: 5/1/3
                        knx_listen: 5/1/3
                    KostenGesternHT:
                        type: num
                        database: init
                        eval: round((sh.Bezug.VortagesverbrauchHT())*0.2164 + (64.62/365),2)
                        eval_trigger: Bezug.VortagesverbrauchHT
                        crontab: 1 0 * * = 1
                    KostenGesternNT:
                        type: num
                        database: init
                        eval: round((sh.Bezug.VortagesverbrauchNT())*0.1652 + (64.62/365),2)
                        eval_trigger: Bezug.VortagesverbrauchNT
                        crontab: 1 0 * * = 1
                    KostenGesternHTNT:
                        type: num
                        database: init
                        eval: sh.Bezug.KostenGesternHT() + sh.Bezug.KostenGesternNT()
                        eval_trigger: Bezug.KostenGesternHT | Bezug.KostenGesternNT
                        crontab: 1 0 * * = 1
                    KostenHeuteHT:
                        type: num
                        database: init
                        eval: round((sh.Bezug.TagesverbrauchHT())*0.2164 + (64.62/365),2)
                        eval_trigger: Bezug.TagesverbrauchHT
                    KostenHeuteNT:
                        type: num
                        database: init
                        eval: round((sh.Bezug.TagesverbrauchNT())*0.1652 + (64.62/365),2)
                        eval_trigger: Bezug.TagesverbrauchNT
                    KostenHeuteHTNT:
                        type: num
                        database: init
                        eval: sh.Bezug.KostenHeuteHT() + sh.Bezug.KostenHeuteNT()
                        eval_trigger: Bezug.KostenHeuteHT | Bezug.KostenHeuteNT



                Gruss
                Gruss Oliver

                Elektroinstallateur für Energie und Gebäudetechnik

                Kommentar


                  #9
                  Hallo,
                  also zunächst einmal würde ich dir die Anwenderdokumentation auf smarthomeng.de empfehlen. Da erhältst du Infos zu allen Plugins.
                  Auch die Readme-Datei ist sehr interessant und enthält viele Beispiele.

                  Zu deinem Problem:
                  Das item EnergieHT enthält den aktuellen Zählerstand in kWh?
                  Du musst also die Differenz berechnen aus dem aktuellen Zählerstand und dem Zählerstand von vor 24 Stunden.
                  Das ganze wird dann in das item TagesverbrauchHT geschrieben. Etwa so:

                  Code:
                  sh.Bezug.TagesverbrauchHT(sh.Bezug.EnergieHT() - sh.Bezug.EnergieHT.db('min', '24h'))
                  Diese Logik lässt du dann täglich um Mitternacht ausführen. Damit erhältst du den Verbrauch des vergangenen Tages.
                  Den Rest, die Anzahl der Minuten seit Tagesbeginn, brauchst du nur, wenn du wissen willst, wieviel Energie du heute bereits verbraucht hast.
                  Zuletzt geändert von Maxthomas2001; 25.04.2019, 22:19.

                  Kommentar


                    #10
                    Hallo Maxthomas2001 ,

                    Ich werde dies Heute Abend mal testen !

                    Ja ich bräuchte den aktuellen Monat , aktueller Tag, sowie gestern , damit ich eine etwa kosten Berechnung durchführen kann.


                    Danke und schönen Tag
                    Gruss Oliver

                    Elektroinstallateur für Energie und Gebäudetechnik

                    Kommentar


                      #11
                      Zitat von Maxthomas2001 Beitrag anzeigen
                      sh.Bezug.TagesverbrauchHT(sh.Bezug.EnergieHT() - sh.Bezug.EnergieHT.db('min', '24h'))

                      Also ich habe das mal probiert und habe die Logik wie folgt umgebaut:


                      Code:
                      
                      #!/usr/bin/env python3
                      
                      # Berechne den Stromverbrauch und die Kosten von gestern und schreibe das Ergebnis in ein Item
                      sh.Bezug.VortagesverbrauchHT(sh.Bezug.EnergieHT() - sh.Bezug.EnergieHT.db('min', '24h'))
                      sh.Bezug.VortagesverbrauchNT(sh.Bezug.EnergieNT() - sh.Bezug.EnergieNT.db('min', '24h'))
                      sh.Bezug.Vortagesverbrauch(sh.Bezug.TagesverbrauchHT() + sh.Bezug.VortagesverbrauchNT())
                      sh.Bezug.KostenGestern((round((sh.Bezug.VortagesverbrauchNT())*0.1652 + (64.62/365),2)) + (round((sh.Bezug.VortagesverbrauchHT())*0.2164 + (64.62/365),2)))
                      Die Kosten Berechnet er mal Richtig : Kosten Gestern: 2.87 CHF

                      Wenn ich mir die Items Vortagesverbrauch HT sowie NT ansehe Stimmen die Werte : ca 11 kW/h

                      Verbauch Gestern: 11.611000000000217 kW/h




                      Bezüglich der weiteren Vorgehensweise für den Tagesverbrauch bis "jetzt" habe ich dein Beispiel übernommen und es wie folgt erweitert:


                      Code:
                      #!/usr/bin/env python3
                      # tagesverbrauch.py
                      
                      # Berechne die Anzahl der Minuten seit Tagesbeginn
                      Stunden = datetime.datetime.now().hour
                      Minuten = datetime.datetime.now().minute
                      Tagesminuten = (Stunden * 60) + Minuten
                      start = str(Tagesminuten) + 'i'
                      
                      # Berechne den Stromverbrauch und die Kosten von heute und schreibe das Ergebnis in ein Item
                      
                      sh.Bezug.TagesverbrauchHT(sh.Bezug.EnergieHT() - sh.Bezug.EnergieHT.db('min', start))
                      sh.Bezug.TagesverbrauchNT(sh.Bezug.EnergieNT() - sh.Bezug.EnergieNT.db('min', start))
                      sh.Bezug.Tagesverbrauch(sh.Bezug.TagesverbrauchHT() + sh.Bezug.TagesverbrauchNT())
                      sh.Bezug.KostenHeute((round((sh.Bezug.TagesverbrauchNT())*0.1652 + (64.62/365),2)) + (round((sh.Bezug.TagesverbrauchHT())*0.2164 + (64.62/365),2)))



                      Theoretisch sollte das passen oder sehe ich das Falsch?

                      Wie würde ich für eine Monatsstatistik vorgehen?



                      Vielen Dank für deine Hilfe







                      Zuletzt geändert von jonny7792; 27.04.2019, 09:21.
                      Gruss Oliver

                      Elektroinstallateur für Energie und Gebäudetechnik

                      Kommentar


                        #12
                        Für eine Übersicht des Verbrauchs im aktuellen Monat arbeite ich mit den Stunden seit Monatsbeginn:
                        Code:
                        # Berechne die Anzahl der Stunden seit Monatsbeginn
                        Tage = datetime.datetime.now().day
                        Stunden = datetime.datetime.now().hour
                        Monatsstunden = (Tage * 24) + Stunden
                        start = str(Monatsstunden) + 'h'
                        Dies Logik lässt du dann zyklisch einmal pro Stunde ausführen oder so.

                        Wenn du wissen willst, wieviel im letzten gesamten Monat verbraucht wurde, lasse ich jeden Tag um Mitternacht eine Logik ausführen, die überprüft, ob der erste des Monats ist. Nur wenn heute der Monatserste ist, werden die entsprechenden Werte aus der Datenbank ausgelesen. An allen anderen Tagen passiert nichts:

                        Code:
                        # Überprüfe, ob heute der erste Tag des Monats ist
                        Tag = datetime.date.today().day
                        Monatstage = (datetime.date.today() - datetime.timedelta(1)).day
                        start = str(Monatstage) + 'd'
                        
                        if Tag == 1:
                        
                        # Berechne die Minimaltemperatur und schreibe das Ergebnis in ein Item
                            sh.DG.Garage.Raumklima.Ist_Temperatur.Minimum.letztes_Monat(sh.DG.Garage.Raumklima.Ist_Temperatur.db('min', start))
                        Beachte die Einrückung nach dem if!

                        Noch ein Tipp: Wenn ich nicht sicher bin, wie die Befehle bei Python lauten, probiere ich Python in einem Live-Modus aus. Dazu einfach im Terminal python3 eingeben. Jetzt kannst du die Befehle testen und ausprobieren, was welcher Befehl macht.

                        Kommentar


                          #13
                          Hallo und Guten Abend Maxthomas2001 ,

                          es funktioniert wunderbar!!! DANKE !!!



                          Ich habe noch eine kleine Frage:

                          Wäre es möglich anhand der nun definierten Items ein Item bzw mehre zu beschreiben z.B Bezug.Verbrauch.April / Bezug.Verbrauch.Mai usw. sodass dies in einem Plot dargestellt werden kann ?

                          Ich dachte dabei an sowas :


                          Wenn letzter Tag im Monat nehme den Verbrauch vom Aktuellen Monat und schreibe um 0:00 am 1. des Monats den Verbrauch des Vorherigen Monats in ein Item sodass dieses Visualisiert werden kann. Bezug.Verbrauch.******


                          Vielen dank für deine Hilfe


                          Schönen Sonntag noch
                          Gruss Oliver

                          Elektroinstallateur für Energie und Gebäudetechnik

                          Kommentar


                            #14
                            Du verwendest doch eh die Logik, die am ersten des Monats den Verbrauch für das vorhergehende berechnet.
                            Das kannst du ja leicht erweitern.
                            Du fügst eine Variable hinzu, die den Monatsnamen des Vortages enthält:
                            Code:
                            Monat = (datetime.date.today() - datetime.timedelta(1)).strftime("%B")
                            Dann definierst du ein item als Variable:

                            Code:
                            item = 'sh.Bezug.Verbrauch.' + Monat
                            Und bei der if-Bedingung fügst du dann noch mit hinzu:

                            Code:
                            item(sh.DG.Garage.Raumklima.Ist_Temperatur.db('min ', start))
                            Ungetestet ohne Gewähr.

                            Kommentar


                              #15
                              Guten Morgen Maxthomas2001

                              Ich werde dies mal am Wochenende testen!
                              Danke


                              Ich habe noch ein Problem zum Aktuellen Monats Verbrauch :


                              Code:
                              
                              # Berechne die Anzahl der Stunden seit Monatsbeginn
                              Tage = datetime.datetime.now().day
                              Stunden = datetime.datetime.now().hour
                              Monatsstunden = (Tage * 24) + Stunden
                              start = str(Monatsstunden) + 'h'
                              
                              # Berechne die Stromkosten sowie den vebrauch des aktuellen Monats und schreibe das Ergebnis in ein Item
                              sh.Bezug.MonatsverbrauchHT(sh.Bezug.EnergieHT() - sh.Bezug.EnergieHT.db('min', start))
                              sh.Bezug.MonatsverbrauchNT(sh.Bezug.EnergieNT() - sh.Bezug.EnergieNT.db('min', start))
                              sh.Bezug.Monatsverbrauch(sh.Bezug.MonatsverbrauchHT() + sh.Bezug.MonatsverbrauchNT())
                              sh.Bezug.KostenMonat((round((sh.Bezug.MonatsverbrauchNT())*0.1652 + (64.62/365),2)) + (round((sh.Bezug.MonatsverbrauchHT())*0.2164 + (64.62/365),2)))
                              jedoch passt das irgendwie nicht so ganz da :


                              Verbauch Heute: 3.534 kW/h

                              Verbauch Aktueller Monat: 14.732 kW/h


                              Gruss
                              Gruss Oliver

                              Elektroinstallateur für Energie und Gebäudetechnik

                              Kommentar

                              Lädt...
                              X