Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Gelöst: Datenpunkte addieren

    NEWS

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    Gelöst: Datenpunkte addieren

    This topic has been deleted. Only users with topic management privileges can see it.
    • Codierknecht
      Codierknecht Developer Most Active @mickym last edited by

      @mickym sagte in Datenpunkte addieren:

      Du machst einen tollen Job hier

      Gebe ich gerne zurück.

      Lassen wir den TE entscheiden, was für ihn sinnvoller oder einfacher ist.

      1 Reply Last reply Reply Quote 0
      • M
        michihorn @mickym last edited by

        @mickym Ich würde das gerne per Script machen

        1 Reply Last reply Reply Quote 1
        • M
          michihorn @Codierknecht last edited by

          @codierknecht 0_userdata.0.Giethoorn.Wetter.Regen_Mo
          Bitte kein Blocky

          Codierknecht 1 Reply Last reply Reply Quote 0
          • Codierknecht
            Codierknecht Developer Most Active @michihorn last edited by

            @michihorn sagte in Datenpunkte addieren:

            Bitte kein Blocky

            Dann etwa so:

            var regenmenge = 0;
            const states = Array.prototype.slice.apply($('0_userdata.0.Giethoorn.Wetter.*'));
            for (var state_index in states) {
              state = states[state_index];
              regenmenge += getState(state).val;
            }
            console.log(regenmenge);
            
            paul53 1 Reply Last reply Reply Quote 1
            • paul53
              paul53 @Codierknecht last edited by paul53

              @codierknecht sagte: Dann etwa so:

              Der $Selector hat eine eigene Schleifenfunktion.

              const states = $('0_userdata.0.Giethoorn.Wetter.Regen_*');
              
              let regenmenge = 0;
              states.each(function(id) {
                regenmenge += getState(id).val;
              });
              log(regenmenge);
              
              Codierknecht M 2 Replies Last reply Reply Quote 0
              • Codierknecht
                Codierknecht Developer Most Active @paul53 last edited by

                @paul53
                Danke. Muss ich mir merken.
                Da kann ich noch das eine oder andere Script umbauen.

                1 Reply Last reply Reply Quote 0
                • M
                  michihorn @paul53 last edited by

                  @paul53 sagte in Datenpunkte addieren:

                  const states = $('0_userdata.0.Giethoorn.Wetter.Regen_*'); let regenmenge = 0; states.each(function(id) { regenmenge += getState(id).val; } log(regenmenge);

                  Danke bis auf eine fehlende "schliessende Klammer", in Zeile 6, klappt das:

                  const states = $('0_userdata.0.Giethoorn.Wetter.Tage.Regen_*');
                   
                  let regenmenge = 0;
                  states.each(function(id) {
                    regenmenge += getState(id).val;
                  })
                  log(regenmenge);
                  

                  Hast du noch einen Tip wie ich die aktuelle Kalenderwoche berechne?
                  Gruß
                  Michael

                  Codierknecht 1 Reply Last reply Reply Quote 0
                  • Codierknecht
                    Codierknecht Developer Most Active @michihorn last edited by Codierknecht

                    @michihorn sagte in Datenpunkte addieren:

                    Hast du noch einen Tip wie ich die aktuelle Kalenderwoche berechne?

                    const moment = require("moment");
                    
                    let week = moment().isoWeek();
                    // oder für ein spezifisches Datum:
                    // let week = moment('2024/02/13').isoWeek();
                    log(week);
                    
                    M 1 Reply Last reply Reply Quote 1
                    • M
                      michihorn @Codierknecht last edited by michihorn

                      @codierknecht sagte in Datenpunkte addieren:

                      const moment = require("moment"); let week = moment().isoWeek(); // oder für ein spezifisches Datum: // let week = moment('2024/02/13').isoWeek(); log(week);

                      Danke, klappt, gibt es auch eine Funktion für den Monat?

                      Codierknecht 1 Reply Last reply Reply Quote 0
                      • mickym
                        mickym Most Active last edited by mickym

                        Es kann sein, dass du mit der Moment Bibliothek und dem JS Adapter bei jedem Neustart einen Haufen Warnungen bekommst.

                        Dann nutze lieber die days Bibliothek: https://day.js.org/docs/en/get-set/iso-weeks-in-year

                        Jetzt bin ich aber wirklich weg. 😉

                        M 1 Reply Last reply Reply Quote 0
                        • M
                          michihorn @mickym last edited by

                          @mickym Ne es gab keine Warnungen, Moment im JS als zusätze NPM eintragen und gut.
                          Leider gibt es über "moment" keine Funktion "isoMonth".
                          Eine Days Bibliothek kenne ich nicht. Danke für den Link.

                          1 Reply Last reply Reply Quote 0
                          • Codierknecht
                            Codierknecht Developer Most Active @michihorn last edited by

                            @michihorn sagte in Datenpunkte addieren:

                            Danke, klappt, gibt es auch eine Funktion für den Monat?

                            Ein- oder zweistellig?

                            let month = moment().format('M');
                            log(month);
                            month = moment().format('MM');
                            log(month);
                            

                            @mickym moment funzt einwandfrei - ohne Warnungen o.ä. 😉

                            mickym 1 Reply Last reply Reply Quote 0
                            • mickym
                              mickym Most Active @Codierknecht last edited by

                              @codierknecht sagte in Datenpunkte addieren:

                              @michihorn sagte in Datenpunkte addieren:

                              Danke, klappt, gibt es auch eine Funktion für den Monat?

                              Ein- oder zweistellig?

                              let month = moment().format('M');
                              log(month);
                              month = moment().format('MM');
                              log(month);
                              

                              @mickym moment funzt einwandfrei - ohne Warnungen o.ä. 😉

                              Na gut. Ich dachte, ich hätte Warnungen gesehen, wenn man die Maschine neu startet.

                              Codierknecht 1 Reply Last reply Reply Quote 1
                              • M
                                michihorn last edited by

                                @mickym Ne es gab keine Warnungen, Moment im JS als zusätze NPM eintragen und gut.
                                Leider gibt es über "moment" keine Funktion "isoMonth".
                                Eine Days Bibliothek kenne ich nicht. Danke für den Link.

                                1 Reply Last reply Reply Quote 0
                                • Codierknecht
                                  Codierknecht Developer Most Active @mickym last edited by

                                  @mickym sagte in Datenpunkte addieren:

                                  Na gut. Ich dachte, ich hätte Warnungen gesehen, wenn man die Maschine neu startet.

                                  Muss ich mal drauf achten. Aber das mache ich ja nur alle Jubeljahre 😁

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

                                    @michihorn Auch wenn Du NodeRed nicht magst, hier mal ein paar nützliche Erklärungen und Beispiele mit der Moments-Bibliothek, da diese in NodeRed schon standardmässig eingebaut ist:

                                    https://forum.iobroker.net/topic/50086/datum-und-zeitverarbeitung-mit-nodered

                                    und hier noch ein Link zur originalen Moments-Bibliothek:

                                    https://momentjs.com/docs/#/displaying/

                                    Hier siehst dann auch, wie Du Dir den Monatsnamen in Worten und ggf. auf deutsch ausgeben lassen kannst.

                                    moment().locale('de').format('MMMM')
                                    
                                    1 Reply Last reply Reply Quote 1
                                    • C
                                      cbrocker last edited by

                                      @mickym

                                      hey mickym,
                                      ich versuche mich schon geraume Zeit an dem Flow für die Summe von Datenpunkten.
                                      Könntest du mir sagen, welche Eigenschaften die nodes haben. Ich komme da nicht weiter.
                                      vielen Dank.

                                      https://forum.iobroker.net/assets/uploads/files/1708891083341-838bc0d0-fbe3-456b-abb9-d9bfa831bf5d-image.png

                                      mickym 1 Reply Last reply Reply Quote 0
                                      • mickym
                                        mickym Most Active @cbrocker last edited by mickym

                                        @cbrocker Du liest mit einer list Node einfach mit Wildcard alle untergeordneten Objekte/Datenpunkte mit den Werten.

                                        ff0d4766-5995-4d24-ab80-d727a6058a21-image.png

                                        Anschließend bildest Du einfach die Summe aus den Werten

                                        Hier der Flow zum Import:

                                        [{"id":"7d1e245379d70cc0","type":"inject","z":"289f539dcc33814e","name":"","props":[{"p":"trigger","v":"true","vt":"bool"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","x":130,"y":5160,"wires":[["c1364b291413b43e"]]},{"id":"c1364b291413b43e","type":"ioBroker list","z":"289f539dcc33814e","name":"","topic":"0_userdata.0.Test.FritzBox7590.Zähler.*","objType":"state","regex":"","asArray":"true","onlyIDs":"true","withValues":"true","x":380,"y":5160,"wires":[["7ae6b190062293fb","83565c11b43f8064"]]},{"id":"83565c11b43f8064","type":"debug","z":"289f539dcc33814e","name":"Array","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","statusVal":"","statusType":"auto","x":650,"y":5120,"wires":[]},{"id":"7ae6b190062293fb","type":"change","z":"289f539dcc33814e","name":"","rules":[{"t":"set","p":"payload","pt":"msg","to":"$sum(payload.val)","tot":"jsonata"}],"action":"","property":"","from":"","to":"","reg":false,"x":670,"y":5160,"wires":[["23d459549a7c4a1e"]]},{"id":"23d459549a7c4a1e","type":"debug","z":"289f539dcc33814e","name":"Summe","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","statusVal":"","statusType":"auto","x":860,"y":5160,"wires":[]}]
                                        

                                        C 1 Reply Last reply Reply Quote 1
                                        • C
                                          cbrocker @mickym last edited by

                                          @mickym Hey mickym, danke für die schnelle Reaktion. Cool, daß du gerade auch zufällig vorm PC sitzt 🙂
                                          Ich habe den Flow importiert und angepasst. Funktioniert sehr gut 🙂

                                          Warum ist da aber jetzt ein Array dabei. Bei dem o.g. Beispiel hattest du auch kein Array gezeigt.

                                          Danke für die prompte Hilfe

                                          mickym 2 Replies Last reply Reply Quote 0
                                          • mickym
                                            mickym Most Active @cbrocker last edited by

                                            @cbrocker Die Debug Node dient ja nur zur Veranschaulichung. Das funktioniert natürlich mit einem Array - aber das musst ja nicht ausgeben. Da unten funktioniert das natürlich auch mit einem Array.

                                            Also wenn du die Debug Node weglässt - siehst das Array gar nicht.

                                            43174e2d-645a-4f3d-b3f2-51dd8e6ac9c9-image.png

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

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            601
                                            Online

                                            31.7k
                                            Users

                                            79.7k
                                            Topics

                                            1.3m
                                            Posts

                                            5
                                            44
                                            1695
                                            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