Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Blockly
    5. Periodischen Verbrauch ermitteln und darstellen.

    NEWS

    • Wir empfehlen: Node.js 22.x

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker goes Matter ... Matter Adapter in Stable

    Periodischen Verbrauch ermitteln und darstellen.

    This topic has been deleted. Only users with topic management privileges can see it.
    • docadams
      docadams @Homoran last edited by

      Ich habe das jetzt so gelöst (bild ich mir ein 😉 )
      autostrom2.jpg
      Also auch mit einem dritten Datenpunkt, der jeden Tag einen Wert erhält. Mal sehen, ob ich das ansprechend in ein Diagramm bekomme.

      Homoran 1 Reply Last reply Reply Quote 0
      • Homoran
        Homoran Global Moderator Administrators @docadams last edited by

        @docadams sagte in Periodischen Verbrauch ermitteln und darstellen.:

        mit einem dritten Datenpunkt, der jeden Tag einen Wert erhält.

        das meinte ich nicht wirklich. in meinem dritten Datenpunkt wird der Wert kontinuierlich hochgezählt.

        Wenn ich das richtig sehe machst du das auch

        docadams 1 Reply Last reply Reply Quote 0
        • docadams
          docadams @Homoran last edited by

          @homoran
          Hm, es geht bei mir um das Laden eines E-Autos über die Wallbox go E-charger.
          Das Auto haben wir erst eine Woche und wir können es zZ. nicht groß ausfahren. Darum erst einmal etwas geladen, also noch keine vielen Werte.
          Stellst du das grafisch dar? Oder zeigst du nur die aktuelle Lademenge seit Beginn der Periode?
          Vielleicht reden wir vom Selben, ich habe aber die falschen Begriffe. Wenn du eine Grafik hast, wie sieht die aus?

          Homoran 1 Reply Last reply Reply Quote 0
          • Asgothian
            Asgothian Developer @docadams last edited by

            @docadams sagte in Periodischen Verbrauch ermitteln und darstellen.:

            Hallo,

            ich möchte gern den monatlichen Stromverbrauch in der Form eines Balkendiagramms darstellen.
            Dazu habe ich 2 Datenpunkte angelegt:

            • Monatsstart, dort wird immer am 1. des Monats um 0.03 Uhr der aktuelle Zählerstand eingelesen
            • Monatsverbrauch, dort wird am 1. des Monats um 0.02 Uhr die Differenz aus aktuellem Zählerstand minus Monatsstart eingetragen. Der Datenpunkt wird geloggt (für History aktiviert).

            Den Monatsverbrauch könnte ich nun in VIS darstellen, weil jeder Monat eine Zeile bekommt.
            Aber 2 Probleme:
            Es sind ja eigentlich die Werte des Vormonats, die am Monatsersten eingetragen werden. Weil ich finde keinen Zeittrigger "Monatsletzter um 23.58 Uhr"
            Ich sehe das Ergebnis erst nach Abschluss des Monats. Ich möchte aber gern zwischendurch auch sehen, wie der Balken wächst. Würde ich das jeden Tag berechnen (dieses Zeitraster genügt), würde aber jeden Tag eine Zeile in der Tabelle sein und in Flot entsteht eine Art Sägezahn.

            Ich komme aus dem Dilemma nicht raus, ist mein ganzer Ansatz falsch?

            Sorry wenn ich so spät noch auf den Zug aufspringe. Meiner Meinung nach ist dein Ansatz vollständig falsch. Aus meiner Sicht ist das ganze eine klare Aufgabe für eine Datenvisualisierung (grafana / flot / echart), bei der Du direkt auf die in der History eingetragenen Verbrauchswerte gehst und als "Akkumulation" auf "summe aller Werte pro Zeiteinheit" stellst und auf der anderen Seite die Zeiteinheit auf 1 Tag, 1 Woche oder 1 Monat einstellst.

            Dieses jonglieren von einzelnen Datenpunkten zur Visualisierung ist zwar technisch machbar, aber in meinen Augen prinzipiell falsch.

            A.

            Homoran 1 Reply Last reply Reply Quote 0
            • Homoran
              Homoran Global Moderator Administrators @docadams last edited by

              @docadams sagte in Periodischen Verbrauch ermitteln und darstellen.:

              Hm, es geht bei mir um das Laden eines E-Autos über die Wallbox go E-charger.

              bei mir geht es um den Gesamtverbrauch des Hauses, sowie in weiteren Datenpunkten, um den Bezug und die Einspeisung.

              Aber das sollte ja keinen Unterschied machen.
              Das Ganze sieht bei mir dann so aus:
              05-Strom.png

              Oben der aktuelle Wert als Gauges
              darunter die diversen Zähler

              Die Grafik darunter, dann als Verlauf über 24h

              Rechts oben, die Balkengrafik über eine Woche

              darunter die Einzelwerte, das Auto auch nur als Verlaufskurve und als hochgezählter Gesamtverbrauch
              PHEV über Haushaltssteckdose 2kW

              1 Reply Last reply Reply Quote 0
              • Homoran
                Homoran Global Moderator Administrators @Asgothian last edited by

                @asgothian sagte in Periodischen Verbrauch ermitteln und darstellen.:

                aber in meinen Augen prinzipiell falsch.

                das kann man sagen, wenn man mit Grafana arbeitet.
                Die ioBroker hauseigenen Methoden bieten IMHO so etwas nicht an.

                (ganz abgesehen davon, dass ich in den Datenpunkten auch die Werte für das Melden von Zählerständen nutze 😉 )

                docadams 1 Reply Last reply Reply Quote 0
                • docadams
                  docadams @Homoran last edited by docadams

                  Ich hatte ganz am Anfang meiner ioBroker-Zeit lange zwischen Flot und grafana hin und herüberlegt, und mich dann für Flot entschieden.
                  Eddy hatte letztens auch Grafiken mit Material-Design vorgestellt, was auch interessant ist. Ich möchte aber echt bei einem System (Flot) bleiben, sonst wächst mir das über den Kopf. 😕
                  @Homoran : Das ist ja der Wahnsinn (also das war ein respektvolles Lob) So eine Anzeige wie bei "Tagesprofil Strom" schwebt mir vor. Das Zeigt aber immer die Werte bis gestern, oder? Bei Tageswerten ist das OK, aber ich möchte nicht erst bis nach Ende des Monats warten.
                  Was sind die Vollkreisanzeigen für Widgets (Metergauge?)?

                  Homoran 1 Reply Last reply Reply Quote 0
                  • Homoran
                    Homoran Global Moderator Administrators @docadams last edited by

                    @docadams sagte in Periodischen Verbrauch ermitteln und darstellen.:

                    as war ein respektvolles Lob

                    Hätte ich auch ohne Zusatz so verstanden 😂

                    @docadams sagte in Periodischen Verbrauch ermitteln und darstellen.:

                    Das Zeigt aber immer die Werte bis gestern, oder?

                    ist aber in flot unter 'Zeit' konfigurierbar

                    @docadams sagte in Periodischen Verbrauch ermitteln und darstellen.:

                    aber ich möchte nicht erst bis nach Ende des Monats warten.

                    worauf?
                    Der Graph erscheint "sekundenaktuell" und wächst dann bis an das Tagesende.

                    @docadams sagte in Periodischen Verbrauch ermitteln und darstellen.:

                    Was sind die Vollkreisanzeigen für Widgets

                    rgraph - Gauge-basic

                    docadams 1 Reply Last reply Reply Quote 0
                    • Homoran
                      Homoran Global Moderator Administrators last edited by

                      @docadams
                      Sorry - war ein Missverständnis meinerseits.
                      Du meintest ja die Balken!

                      Habe hier mal alles gezoomt:
                      Strom_zoom.png

                      bei den Balken ist es natürlich etwas kniffelig eine vernünftige Darstellung hinzubekommen, wenn die Zeit länger wird.
                      Da es bei dir aber nur ein Balken wird, dürfte ein Monat auf der Zeitachse auch kein Problem sein.
                      Auch hier ist es dynamisch, so dass der letzte Eintrag immer rechts steht, die Balken links davon abhängig von der eingestellten Periode ist.

                      Links neben dem Chart visualisiere ich den aktuellen kumulierenden Zeitabschnitt (bei mir der heutige Tag)
                      Die Balken "wachsen" über den Tag und werden am Folgetag in dem Chart daneben übernommen

                      1 Reply Last reply Reply Quote 0
                      • K
                        klassisch Most Active last edited by klassisch

                        Für solche Themen habe ich ein Skript "TodayIsLastOf" geschrieben
                        Das ermittelt morgens ob der aktuelle Tag der letzte der Woche, des Monats, des Jahres ist. Und speichert das in Datenpunkten.
                        Die Statistikfunktionen der verschiedenen Verbrauchsmesser können dann kurz vor Mitternacht diese Datenpunkte abfragen und schauen, was es heute zu berechnen gilt.
                        Das Skript ist sicher nicht optimal und eher unbeholfen programmiert, scheint aber so weit zu funktionieren. Vielleicht hilft es ja.

                        /*
                             TodayIsLastDayOf
                             
                             detecs if today is last day of week, month, year
                        
                        */
                        
                        /* Input datapath */
                        const dataPathId = '0_userdata.0.Calendar.TodayIsLastDayOf';
                        /* End Input datapath - data will be generated automatically */
                        
                        
                        const weekName = 'Week';
                        const monthName = 'Month';
                        const yearName = 'Year';
                        
                        
                        let Namehelper = null; 
                        let presetValue = false;
                        
                        Namehelper = weekName;
                        const weekId = dataPathId + '.' + Namehelper;
                        createState(dataPathId + '.' + Namehelper, presetValue , false, {
                          name: Namehelper,
                          type: 'boolean',
                          role: 'value'
                        });
                        
                        Namehelper = monthName;
                        const monthId = dataPathId + '.' + Namehelper;
                        createState(dataPathId + '.' + Namehelper, presetValue , false, {
                          name: Namehelper,
                          type: 'boolean',
                          role: 'value'
                        });
                        
                        Namehelper = yearName;
                        const yearId = dataPathId + '.' + Namehelper;
                        createState(dataPathId + '.' + Namehelper, presetValue , false, {
                          name: Namehelper,
                          type: 'boolean',
                          role: 'value'
                        });
                        
                        
                        function checkTodayIsLastDayOf(){
                           //checke if end of week
                           // first get currend date
                           let currentDate = new Date();
                           let weekResult = false;
                           let monthResult= false;
                           let yearResult = false;
                           
                           // then check if date # is 0 
                           if(currentDate.getDay() == 0){
                           	weekResult = true; 
                           }; 
                        
                           // next, check if end of Month: => check day of date of tomorrow
                           // create tomorrow
                           let tomorrow = formatDate (currentDate.getTime() + 1 * 24 * 3600000, 'DD');
                           
                           if(tomorrow == '01'){ // today is last of month
                                monthResult = true;     
                           }
                        
                        
                           // check if end of the year. That is easy: Day is 31 and (javascript-)month == 11 
                           if (currentDate.getMonth() == 11){ // now it is December 
                               if (currentDate.getDay() == 31){ // another year is over
                           	yearResult = true;
                               }
                           } 
                           	  
                           setState(weekId,weekResult);
                           setState(monthId, monthResult);
                           setState(yearId, yearResult);
                        } // end function TodayIsLastDayOf	
                           	  
                           	  
                        checkTodayIsLastDayOf(); // Init values
                        
                        schedule({hour: 0, minute: 6}, function(){ // dayOfWeek: 0: sunday 
                           checkTodayIsLastDayOf();
                        }); // end  Schedule
                        
                        
                           	  
                        
                        
                        
                        //end
                        
                        
                        
                        
                        
                        

                        1 Reply Last reply Reply Quote 1
                        • docadams
                          docadams @Homoran last edited by docadams

                          @homoran
                          Naja, ich sitz gern mal in de Nesseln, und durch die Masken sogar im analogen Leben.
                          Der Graph erscheint "sekundenaktuell" und wächst dann bis an das Tagesende.
                          ...und das begreife ich nicht. Bei mir erschein mit jeder Messung ein neuer Punkt/Säule.
                          Wie bringe ich es bei, in VIS die einzelnen "Tageswerte" in den Graphen Januar zu schreiben, der kontinuierlich steigt, und ab Februar in den Graphen Februar usw.? Und ab 1.2. geht es bei 0 Differenz zwischen aktuellem Zählerstand und Startwert zum Monatsbeginn wieder los.

                          rgraph - Gauge-basic: steckt das in einem nachinstallierten Adapter?

                          Sorry, ich hatte solange an meinem Text gefeilt, dass ich die neuen Beiträge gich bemerkt hatte. Melde mich gleich

                          Homoran 1 Reply Last reply Reply Quote 0
                          • Homoran
                            Homoran Global Moderator Administrators @docadams last edited by

                            @docadams sagte in Periodischen Verbrauch ermitteln und darstellen.:

                            ...und das begreife ich nicht.

                            Sorry für die Verwirrung.
                            Ich schrieb, dass ich das falsch verstanden hatte, ich bezog es auf die Kurve unten links.

                            @docadams sagte in Periodischen Verbrauch ermitteln und darstellen.:

                            Bei mir erschein mit jeder Messung ein neuer Punkt/Säule.

                            Das ist beim Balken so, deswegen musst du einen Datenpunkt kumulieren.
                            Den aknnst du nicht in einem Balkenchart darstellen, sondern z.b. nur in einem Slider vertical oder mehrere in einem rgraph-barchart

                            1 Reply Last reply Reply Quote 0
                            • docadams
                              docadams last edited by

                              @klassisch : Bitte entschuldige, aber da endet mein Verstehen 🙂

                              Ich habe jetzt einige Diskussionen gelesen, wo viele schöne Balkendiagramme stehen. Mir fehlt aber der Schritt davor, Flot klar zu machen, dass ich ein Balkendiagramm mit 12 Balken (für jeden Monat einen) haben möchte.
                              Ich habe es mal, mangels geeigneter Datenbasis, mit einer Temperarurreihe versucht und eine Aggregation mit 86400 Sekunden (1Tag) probiert. kein Ergebnis.
                              Eigentlich soll ja der Balken immer die Differenz von Zwischen Jetzt und Start darstellen. Der Wert ist morgen nach der Ladung Größer, aber immer noch der selbe Balken.

                              Homoran 1 Reply Last reply Reply Quote 0
                              • Homoran
                                Homoran Global Moderator Administrators @docadams last edited by Homoran

                                @docadams sagte in Periodischen Verbrauch ermitteln und darstellen.:

                                Eigentlich soll ja der Balken immer die Differenz von Zwischen Jetzt und Start darstellen

                                das kannst du nicht mit einem Flot Chart darstellen!
                                Flot kann out of the Box in Balken nur statische Daten visualisieren!

                                Die Basis für die Darstellung in Flot sind historisierte Daten eines Datenpunktes.
                                in der Einen Achse die Zeitstempel, in der anderen deren Wert

                                Wenn du im Monat pro Tag nur einen Balken haben willst, darf im Datenpunkt "Monat" auch pro Tag nur ein Wert drin stehen

                                1 Reply Last reply Reply Quote 0
                                • docadams
                                  docadams last edited by

                                  OK, dann habe ich zu viel gewollt. Ich erzeuge ja am Monatsende einen Eintrag (Wert ist Differenz aus Jetzt und Monatanfang), Im nächsten Monat wieder ein Eintrag (Differenz aus Jetzt und dem neuen Monatsanfang.
                                  Da muss ich also immer warten, bis dem Monat vergangen ist.
                                  OK
                                  Das mit dem Slider schaue ich mir morgen an. Vielleicht kann man es größenmäßig so anpassen, dass man im Verhältnis sieht, wie der Verbrauch des laufenden Monats zu den statisch vergangenen Monaten im Balkendiagramm aussieht.

                                  Homoran 1 Reply Last reply Reply Quote 0
                                  • Homoran
                                    Homoran Global Moderator Administrators @docadams last edited by

                                    @docadams sagte in Periodischen Verbrauch ermitteln und darstellen.:

                                    Vielleicht kann man es größenmäßig so anpassen, dass man im Verhältnis sieht, wie der Verbrauch des laufenden Monats zu den statisch vergangenen Monaten im Balkendiagramm aussieht.

                                    so habe ich es gemacht

                                    1 Reply Last reply Reply Quote 1
                                    • docadams
                                      docadams last edited by docadams

                                      Hallo, ich werkele immer noch an einer anschaulichen Balken-Grafik.
                                      Ich möchte die Ladungen des Autos grafisch aufbereiten.
                                      Die Zeitspanne soll ein längerer Zeitraum sein, ideal wäre ein Jahr.
                                      E-Ladung1.jpg
                                      Die lilanen Balken sind die Einzelladungen, jeden Tag kommt um 7 Uhr ein Eintrag der Lademenge der letzten 24 h dazu, notfalls auch 0.
                                      Nun würde ich gern am Monatsletzten auch einen Eintrag des Monats erfassen und das als dicken Balken im Hintergrund darstellen.

                                      Dazu aktualisiere ich den Datenpunkt am Monatsletzten um 23.58Uhr mit der erfassten Lademenge seit Monatsbeginn, 10 Sekunden später aktualisiere ich den Datenpunkt wieder mit 0. Das Ganze soll sich am nächsten Monatsletzten wiederholen.
                                      E-Ladung2.jpg
                                      E-Ladung3.png
                                      Es gelingt mir mit FLOT (!!) einfach nicht, einen dicken Balken um den Monatsletzten zu erzeugen. Bestenfalls bekomme ich bei der Einstellung Art: max und Typ: Streudiagramm einen Punkt (grün) hin. Bei erweitert wird NULL mit default definiert.
                                      Die History-Einträge sehen z.Z. so aus:
                                      E-Ladung4.png
                                      Was mache ich handwerklich falsch? Es sollen einzelne Balken pro Monat entstehen.

                                      Homoran 1 Reply Last reply Reply Quote 0
                                      • Homoran
                                        Homoran Global Moderator Administrators @docadams last edited by

                                        @docadams sagte in Periodischen Verbrauch ermitteln und darstellen.:

                                        Dazu aktualisiere ich den Datenpunkt am Monatsletzten um 23.58Uhr mit der erfassten Lademenge seit Monatsbeginn, 10 Sekunden später aktualisiere ich den Datenpunkt wieder mit 0

                                        so sieht es in deiner Tabelle zumindest nicht aus.

                                        docadams 1 Reply Last reply Reply Quote 0
                                        • docadams
                                          docadams @Homoran last edited by

                                          @homoran
                                          Erwischt.
                                          Da zum betreffenden Zeitpunkt meine Programmierung nicht so funktionierte, habe ich gestern mit Nano und dem passenden Timecode nachgeholfen.
                                          Aber sollte nicht FLOT egal sein, ob ein Wert von javascript.0 oder history.0 oder admin.0 kommt?
                                          Inzwischen sieht der Datenpunkt von gestern nur noch so aus, eine Wirkung auf FLOT hat das aber nicht.

                                          [
                                            {
                                              "val": 91.74,
                                              "ack": true,
                                              "ts": 1612133784000,
                                              "q": 0,
                                              "from": "system.adapter.history.0",
                                              "user": "system.user.admin"
                                            },
                                            {
                                              "val": 0,
                                              "ack": false,
                                              "ts": 1612133964000,
                                              "q": 0,
                                              "from": "system.adapter.admin.0",
                                              "user": "system.user.admin"
                                            }
                                          ]
                                          
                                          
                                          Homoran 1 Reply Last reply Reply Quote 0
                                          • Homoran
                                            Homoran Global Moderator Administrators @docadams last edited by

                                            @docadams sagte in Periodischen Verbrauch ermitteln und darstellen.:

                                            Aber sollte nicht FLOT egal sein, ob ein Wert von javascript.0 oder history.0 oder admin.0 kommt?

                                            immer einen Schritt nach dem anderen 😉

                                            Ich wollte erst einmal sicherstellen, dass nicht schon beim Befüllen der Tabelle etwas schief geht.
                                            (Vielleicht schaltest du die NULL-eingaben beim Adapterstart auch lieber aus- ist Geschmackssache!)

                                            @docadams sagte in Periodischen Verbrauch ermitteln und darstellen.:

                                            Es gelingt mir mit FLOT (!!) einfach nicht, einen dicken Balken um den Monatsletzten zu erzeugen.

                                            Wo ist denn in deinem Setup überhaupt ein Balken definiert?

                                            @docadams sagte in Periodischen Verbrauch ermitteln und darstellen.:

                                            Die lilanen Balken sind die Einzelladungen

                                            Auch da sehe ich keine Bar in dem Typ

                                            1 Reply Last reply Reply Quote 0
                                            • First post
                                              Last post

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            580
                                            Online

                                            32.0k
                                            Users

                                            80.5k
                                            Topics

                                            1.3m
                                            Posts

                                            blockly
                                            5
                                            37
                                            5052
                                            Loading More Posts
                                            • Oldest to Newest
                                            • Newest to Oldest
                                            • Most Votes
                                            Reply
                                            • Reply as topic
                                            Log in to reply
                                            Community
                                            Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                                            The ioBroker Community 2014-2023
                                            logo