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.
    • M
      michihorn last edited by michihorn

      Hallo ich protokolliere die Regenmengen jeden Tag, einmal die Woche möchte ich die Regenmengen zusammen addieren und als Regenmenge Kalenderwoche ausgeben.
      Die Datenpunkte sehen so aus:
      regen.png
      Wie kann ich nun ohne große Tip Arbeit die DP addieren, nun sind es bei den Tagen nur 7, ist überschaubar, wenn ich aber später die 52 KW addieren möchte wird es aufwendig.
      DP Syntax = 0_userdata.0.Giethoorn.Wetter.Regen_Mo usw.
      Gibt es eine elegante Lösung?
      Gruß
      Michael

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

        @michihorn Wenn Du NodeRed nutzt ist das mit wenigen Nodes erledigt.

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

          @michihorn
          Mit "ID von Selektor" geht das eigentlich ziemlich einfach.

          Wie lautet genau die ID von Wetter.KW?

          Sollte etwa so funktionieren:

          bf8e4fb8-15c0-4797-ba2e-af39532e45b6-grafik.png

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

            War klar dass id Puzzlefreunde meinen es geht schneller - aber NodeRed ist unschlagbar:

            838bc0d0-fbe3-456b-abb9-d9bfa831bf5d-image.png

            Also die Summe lautet 21.6 🙂

            fc8b6032-5f85-462b-a256-99eb8f4ae25b-image.png

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

              @mickym
              Wenn man NodeRed installiert hat.

              Ich brauch's nicht 😁

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

                Na wenn man den JS Adapter installiert hat, ich brauch ihn nicht. 😉

                Ich hätte ja nichts im gepostet, wenn der Threadersteller im Blockly oder JS Forum gepostet hätte, aber so gehe ich mal davon aus, dass er technologieoffen ist und keine ideologische Brille auf hat.

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

                  @mickym
                  Mir persönlich ist das doch Wumpe.
                  Jeder so, wie er/sie am besten klarkommt.

                  Allerdings haben die meisten halt JS eh schon installiert.
                  Da wäre dann wieder NodeRed unnötig, nur um an eine Summe zu kommen.

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

                    @codierknecht Alles gut - Du machst einen tollen Job hier und hilfst vielen und die meisten puzzeln inzwischen eh hier alle, insofern ist Dein Beitrag für den TE sowieso sinnvoller als meiner. Ich will nur manchmal aufgrund der Technologieoffenheit auf Alternativen hinweisen.

                    Aber wie gesagt - Du machst hier einen tollen Job und störe nicht länger, ausser es wird gewünscht.

                    Codierknecht 1 Reply Last reply Reply Quote 0
                    • 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
                                            • First post
                                              Last post

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            1.1k
                                            Online

                                            31.7k
                                            Users

                                            79.7k
                                            Topics

                                            1.3m
                                            Posts

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