Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Sprung bei Durchschnittsberechnung

    NEWS

    • Neuer Blog: Fotos und Eindrücke aus Solingen

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

    • ioBroker goes Matter ... Matter Adapter in Stable

    Sprung bei Durchschnittsberechnung

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

      @ecurb sagte: obwohl der echte Messwert gar nicht so extrem schwankt.

      Sicher? Lasse mal einen kürzeren Zeitraum (um den Aussetzer) darstellen oder schau in die History-Tabelle.

      1 Reply Last reply Reply Quote 0
      • E
        ecurb @AndyGR42 last edited by

        hey vielen Dank schon mal für die Antworten

        @andygr42
        Reingeschaut habe ich noch nicht in die Tabelle. Immer nur mit "Flot" wenn ich dort so na ran gehe das ich die einzelnen Messwerte als punkte sehen kann sieht es so aus das nur die Berechneten werte "Springen".

        Dein Skript muss ich mir mit etwas zeit anschauen und auf mich anpassen. (Bin in der Java Welt noch nicht ganz so sicher wie in anderen Welten).
        Ich denke aber das ich es die Tage abends schaffe.

        @paul53
        meinst du eventuelle so?
        Gas-Messwerte.PNG

        Ich finde da kann man schön sehen das alle:

        • 10 Minuten ein Roter Messwert erscheint
        • 1 Minute ein grüner & lila punkt erscheint.
        • Blaue Punkte kommen je nach geändertem Messwert. Also unregelmäßig.

        Vielen Dank noch mal sobald ich weitermachen konnte melde ich mich wieder.

        Grüße
        Bruce

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

          @ecurb sagte: meinst du eventuelle so?

          In dieser Darstellung sieht man keine Ausreißer unter 18,00 kg.

          EDIT: Da innerhalb einer Minute eine ausreichende Anzahl Messwerte eingehen, würde ich Ausreißer so ausschließen:

          const idMesswert = '...';
          const idMittel = '...';
          
          // vor erstem Skriptstart Wert manuell so genau wie möglich in Datenpunkt eintragen 
          var mittel = getState(idMittel).val;
          var werte = [];
          
          function mathMean(myList) {
            return myList.reduce(function(x, y) {return x + y;}) / myList.length;
          }
          
          on({id: idMesswert}, function (dp) {
            if(Math.abs(dp.state.val - mittel) < 0.05) {
              werte.push(dp.state.val);
            }
          });
          
          schedule("* * * * *", function () {
            if(werte.length) mittel = mathMean(werte);
            setState(idMittel, mittel, true);
            werte = [];
          });
          

          Blockly-Version:

          Bild_2021-08-01_190206.png

          E 1 Reply Last reply Reply Quote 0
          • E
            ecurb @paul53 last edited by ecurb

            @paul53
            Hey
            ich habe das mal erstellt und gestartet. Morgen denke ich kann ich sehen ob es funktioniert.

            Es stimmt schon das der Blaue wert keine großen Ausreißer hat.
            Genau aus diesem Grund verstehe ich ja nicht warum meine durchschnitts berechnung quasi Springt.
            Gas-Messwerte_sprung.png

            links und rechts springt der wert. Wärend dessen ist der wert dann wieder konstant.

            Und ich berechne den durchschnitt ja in 2 verschiedenen Skripten und auf 2 verscheidene arten.

            Viele grüße

            Bruce

            paul53 2 Replies Last reply Reply Quote 0
            • Asgothian
              Asgothian Developer @ecurb last edited by Asgothian

              @ecurb

              Zeig doch bitte mal dein Blockly Skript. Es sieht so aus als ob da etwas nicht zusammen passt.

              Die rote und grüne Linie passen prinzipiell zusammen - was mich auf einen systematischen Fehler in deine, Skript schließen lässt.

              A.

              M 1 Reply Last reply Reply Quote 0
              • M
                MartyBr @Asgothian last edited by

                @ecurb
                Ich nutze das geniale Script von @paul53 .
                Das berechnet dir für beliebige Datenpunkte gemittelten Werte und Min und Max Werte. Das kannst du einfach um weitere DPs mit einem Eintrag im Config-Teil erweitern.
                Das läuft bei mir mit fast allen Wetterwerten meiner Wetterstation absolut unauffällig und stabil:
                https://forum.iobroker.net/topic/1037/gleitender-durchschnitt-min-max-über-def-zeitraum

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

                  @ecurb sagte: Es stimmt schon das der Blaue wert keine großen Ausreißer hat.

                  Oder man sieht sie nur nicht, da Werte unter 18,00 kg nicht dargestellt werden. Stelle mal das Minimum für die blaue Kurve auf 0 kg.

                  Für eine Glättung der Kurve sollte ein gleitender Mittelwert über 60 Minutenwerte ausreichend sein. Hier eine entsprechende Erweiterung:

                  Blockly_temp.JPG

                  Unter "0_userdata.0":

                  Bild_2021-08-01_185317.png

                  Das "Netto Gasgewicht" (Gewicht - Leergewicht der Gasflasche) würde ich allerdings in einem Alias abbilden.

                  E 1 Reply Last reply Reply Quote 0
                  • E
                    ecurb @paul53 last edited by

                    Hallo Zusammen,

                    auf die schnelle hier meine beiden Skripte. Dies habe ich als zweites erstellt da ich das Problem mit dem Blocky Skript hatte. Um keine Fehler zu machen bei einer Schleife habe ich es in einzelne Bedingungen gemacht um erst einmal die Funktion zu prüfen.

                    schedule("* * * * *", async function () {
                      if (1 == (new Date().getMinutes())) {setState("0_userdata.0.Gewichtsdurchschnitt.1-Stunde.Min_01"/*Min_01*/, (getState("0_userdata.0.Gas-Flasche.Messwerte.Gewicht").val - getState("0_userdata.0.Gas-Flasche.Messwerte.Flaschen-Gewicht").val));  }
                      if (2 == (new Date().getMinutes())) {setState("0_userdata.0.Gewichtsdurchschnitt.1-Stunde.Min_02"/*Min_02*/, (getState("0_userdata.0.Gas-Flasche.Messwerte.Gewicht").val - getState("0_userdata.0.Gas-Flasche.Messwerte.Flaschen-Gewicht").val));  }
                      if (3 == (new Date().getMinutes())) {setState("0_userdata.0.Gewichtsdurchschnitt.1-Stunde.Min_03"/*Min_03*/, (getState("0_userdata.0.Gas-Flasche.Messwerte.Gewicht").val - getState("0_userdata.0.Gas-Flasche.Messwerte.Flaschen-Gewicht").val));  }
                      if (4 == (new Date().getMinutes())) {setState("0_userdata.0.Gewichtsdurchschnitt.1-Stunde.Min_04"/*Min_04*/, (getState("0_userdata.0.Gas-Flasche.Messwerte.Gewicht").val - getState("0_userdata.0.Gas-Flasche.Messwerte.Flaschen-Gewicht").val));  }
                      if (5 == (new Date().getMinutes())) {setState("0_userdata.0.Gewichtsdurchschnitt.1-Stunde.Min_05"/*Min_05*/, (getState("0_userdata.0.Gas-Flasche.Messwerte.Gewicht").val - getState("0_userdata.0.Gas-Flasche.Messwerte.Flaschen-Gewicht").val));  }
                      if (6 == (new Date().getMinutes())) {setState("0_userdata.0.Gewichtsdurchschnitt.1-Stunde.Min_06"/*Min_06*/, (getState("0_userdata.0.Gas-Flasche.Messwerte.Gewicht").val - getState("0_userdata.0.Gas-Flasche.Messwerte.Flaschen-Gewicht").val));  }
                      if (7 == (new Date().getMinutes())) {setState("0_userdata.0.Gewichtsdurchschnitt.1-Stunde.Min_07"/*Min_07*/, (getState("0_userdata.0.Gas-Flasche.Messwerte.Gewicht").val - getState("0_userdata.0.Gas-Flasche.Messwerte.Flaschen-Gewicht").val));  }
                      if (8 == (new Date().getMinutes())) {setState("0_userdata.0.Gewichtsdurchschnitt.1-Stunde.Min_08"/*Min_08*/, (getState("0_userdata.0.Gas-Flasche.Messwerte.Gewicht").val - getState("0_userdata.0.Gas-Flasche.Messwerte.Flaschen-Gewicht").val));  }
                      if (9 == (new Date().getMinutes())) {setState("0_userdata.0.Gewichtsdurchschnitt.1-Stunde.Min_09"/*Min_09*/, (getState("0_userdata.0.Gas-Flasche.Messwerte.Gewicht").val - getState("0_userdata.0.Gas-Flasche.Messwerte.Flaschen-Gewicht").val));  }
                      if (10 == (new Date().getMinutes())) {setState("0_userdata.0.Gewichtsdurchschnitt.1-Stunde.Min_10"/*Min_10*/, (getState("0_userdata.0.Gas-Flasche.Messwerte.Gewicht").val - getState("0_userdata.0.Gas-Flasche.Messwerte.Flaschen-Gewicht").val));  }
                      if (11 == (new Date().getMinutes())) {setState("0_userdata.0.Gewichtsdurchschnitt.1-Stunde.Min_11"/*Min_11*/, (getState("0_userdata.0.Gas-Flasche.Messwerte.Gewicht").val - getState("0_userdata.0.Gas-Flasche.Messwerte.Flaschen-Gewicht").val));  }
                      if (12 == (new Date().getMinutes())) {setState("0_userdata.0.Gewichtsdurchschnitt.1-Stunde.Min_12"/*Min_12*/, (getState("0_userdata.0.Gas-Flasche.Messwerte.Gewicht").val - getState("0_userdata.0.Gas-Flasche.Messwerte.Flaschen-Gewicht").val));  }
                      if (13 == (new Date().getMinutes())) {setState("0_userdata.0.Gewichtsdurchschnitt.1-Stunde.Min_13"/*Min_13*/, (getState("0_userdata.0.Gas-Flasche.Messwerte.Gewicht").val - getState("0_userdata.0.Gas-Flasche.Messwerte.Flaschen-Gewicht").val));  }
                      if (14 == (new Date().getMinutes())) {setState("0_userdata.0.Gewichtsdurchschnitt.1-Stunde.Min_14"/*Min_14*/, (getState("0_userdata.0.Gas-Flasche.Messwerte.Gewicht").val - getState("0_userdata.0.Gas-Flasche.Messwerte.Flaschen-Gewicht").val));  }
                      if (15 == (new Date().getMinutes())) {setState("0_userdata.0.Gewichtsdurchschnitt.1-Stunde.Min_15"/*Min_15*/, (getState("0_userdata.0.Gas-Flasche.Messwerte.Gewicht").val - getState("0_userdata.0.Gas-Flasche.Messwerte.Flaschen-Gewicht").val));  }
                      if (16 == (new Date().getMinutes())) {setState("0_userdata.0.Gewichtsdurchschnitt.1-Stunde.Min_16"/*Min_16*/, (getState("0_userdata.0.Gas-Flasche.Messwerte.Gewicht").val - getState("0_userdata.0.Gas-Flasche.Messwerte.Flaschen-Gewicht").val));  }
                      if (17 == (new Date().getMinutes())) {setState("0_userdata.0.Gewichtsdurchschnitt.1-Stunde.Min_17"/*Min_17*/, (getState("0_userdata.0.Gas-Flasche.Messwerte.Gewicht").val - getState("0_userdata.0.Gas-Flasche.Messwerte.Flaschen-Gewicht").val));  }
                      if (18 == (new Date().getMinutes())) {setState("0_userdata.0.Gewichtsdurchschnitt.1-Stunde.Min_18"/*Min_18*/, (getState("0_userdata.0.Gas-Flasche.Messwerte.Gewicht").val - getState("0_userdata.0.Gas-Flasche.Messwerte.Flaschen-Gewicht").val));  }
                      if (19 == (new Date().getMinutes())) {setState("0_userdata.0.Gewichtsdurchschnitt.1-Stunde.Min_19"/*Min_19*/, (getState("0_userdata.0.Gas-Flasche.Messwerte.Gewicht").val - getState("0_userdata.0.Gas-Flasche.Messwerte.Flaschen-Gewicht").val));  }
                      if (20 == (new Date().getMinutes())) {setState("0_userdata.0.Gewichtsdurchschnitt.1-Stunde.Min_20"/*Min_20*/, (getState("0_userdata.0.Gas-Flasche.Messwerte.Gewicht").val - getState("0_userdata.0.Gas-Flasche.Messwerte.Flaschen-Gewicht").val));  }
                      if (21 == (new Date().getMinutes())) {setState("0_userdata.0.Gewichtsdurchschnitt.1-Stunde.Min_21"/*Min_21*/, (getState("0_userdata.0.Gas-Flasche.Messwerte.Gewicht").val - getState("0_userdata.0.Gas-Flasche.Messwerte.Flaschen-Gewicht").val));  }
                      if (22 == (new Date().getMinutes())) {setState("0_userdata.0.Gewichtsdurchschnitt.1-Stunde.Min_22"/*Min_22*/, (getState("0_userdata.0.Gas-Flasche.Messwerte.Gewicht").val - getState("0_userdata.0.Gas-Flasche.Messwerte.Flaschen-Gewicht").val));  }
                      if (23 == (new Date().getMinutes())) {setState("0_userdata.0.Gewichtsdurchschnitt.1-Stunde.Min_23"/*Min_23*/, (getState("0_userdata.0.Gas-Flasche.Messwerte.Gewicht").val - getState("0_userdata.0.Gas-Flasche.Messwerte.Flaschen-Gewicht").val));  }
                      if (24 == (new Date().getMinutes())) {setState("0_userdata.0.Gewichtsdurchschnitt.1-Stunde.Min_24"/*Min_24*/, (getState("0_userdata.0.Gas-Flasche.Messwerte.Gewicht").val - getState("0_userdata.0.Gas-Flasche.Messwerte.Flaschen-Gewicht").val));  }
                      if (25 == (new Date().getMinutes())) {setState("0_userdata.0.Gewichtsdurchschnitt.1-Stunde.Min_25"/*Min_25*/, (getState("0_userdata.0.Gas-Flasche.Messwerte.Gewicht").val - getState("0_userdata.0.Gas-Flasche.Messwerte.Flaschen-Gewicht").val));  }
                      if (26 == (new Date().getMinutes())) {setState("0_userdata.0.Gewichtsdurchschnitt.1-Stunde.Min_26"/*Min_26*/, (getState("0_userdata.0.Gas-Flasche.Messwerte.Gewicht").val - getState("0_userdata.0.Gas-Flasche.Messwerte.Flaschen-Gewicht").val));  }
                      if (27 == (new Date().getMinutes())) {setState("0_userdata.0.Gewichtsdurchschnitt.1-Stunde.Min_27"/*Min_27*/, (getState("0_userdata.0.Gas-Flasche.Messwerte.Gewicht").val - getState("0_userdata.0.Gas-Flasche.Messwerte.Flaschen-Gewicht").val));  }
                      if (28 == (new Date().getMinutes())) {setState("0_userdata.0.Gewichtsdurchschnitt.1-Stunde.Min_28"/*Min_28*/, (getState("0_userdata.0.Gas-Flasche.Messwerte.Gewicht").val - getState("0_userdata.0.Gas-Flasche.Messwerte.Flaschen-Gewicht").val));  }
                      if (29 == (new Date().getMinutes())) {setState("0_userdata.0.Gewichtsdurchschnitt.1-Stunde.Min_29"/*Min_29*/, (getState("0_userdata.0.Gas-Flasche.Messwerte.Gewicht").val - getState("0_userdata.0.Gas-Flasche.Messwerte.Flaschen-Gewicht").val));  }
                      if (30 == (new Date().getMinutes())) {setState("0_userdata.0.Gewichtsdurchschnitt.1-Stunde.Min_30"/*Min_30*/, (getState("0_userdata.0.Gas-Flasche.Messwerte.Gewicht").val - getState("0_userdata.0.Gas-Flasche.Messwerte.Flaschen-Gewicht").val));  }
                      if (31 == (new Date().getMinutes())) {setState("0_userdata.0.Gewichtsdurchschnitt.1-Stunde.Min_31"/*Min_31*/, (getState("0_userdata.0.Gas-Flasche.Messwerte.Gewicht").val - getState("0_userdata.0.Gas-Flasche.Messwerte.Flaschen-Gewicht").val));  }
                      if (32 == (new Date().getMinutes())) {setState("0_userdata.0.Gewichtsdurchschnitt.1-Stunde.Min_32"/*Min_32*/, (getState("0_userdata.0.Gas-Flasche.Messwerte.Gewicht").val - getState("0_userdata.0.Gas-Flasche.Messwerte.Flaschen-Gewicht").val));  }
                      if (33 == (new Date().getMinutes())) {setState("0_userdata.0.Gewichtsdurchschnitt.1-Stunde.Min_33"/*Min_33*/, (getState("0_userdata.0.Gas-Flasche.Messwerte.Gewicht").val - getState("0_userdata.0.Gas-Flasche.Messwerte.Flaschen-Gewicht").val));  }
                      if (34 == (new Date().getMinutes())) {setState("0_userdata.0.Gewichtsdurchschnitt.1-Stunde.Min_34"/*Min_34*/, (getState("0_userdata.0.Gas-Flasche.Messwerte.Gewicht").val - getState("0_userdata.0.Gas-Flasche.Messwerte.Flaschen-Gewicht").val));  }
                      if (35 == (new Date().getMinutes())) {setState("0_userdata.0.Gewichtsdurchschnitt.1-Stunde.Min_35"/*Min_35*/, (getState("0_userdata.0.Gas-Flasche.Messwerte.Gewicht").val - getState("0_userdata.0.Gas-Flasche.Messwerte.Flaschen-Gewicht").val));  }
                      if (36 == (new Date().getMinutes())) {setState("0_userdata.0.Gewichtsdurchschnitt.1-Stunde.Min_36"/*Min_36*/, (getState("0_userdata.0.Gas-Flasche.Messwerte.Gewicht").val - getState("0_userdata.0.Gas-Flasche.Messwerte.Flaschen-Gewicht").val));  }
                      if (37 == (new Date().getMinutes())) {setState("0_userdata.0.Gewichtsdurchschnitt.1-Stunde.Min_37"/*Min_37*/, (getState("0_userdata.0.Gas-Flasche.Messwerte.Gewicht").val - getState("0_userdata.0.Gas-Flasche.Messwerte.Flaschen-Gewicht").val));  }
                      if (38 == (new Date().getMinutes())) {setState("0_userdata.0.Gewichtsdurchschnitt.1-Stunde.Min_38"/*Min_38*/, (getState("0_userdata.0.Gas-Flasche.Messwerte.Gewicht").val - getState("0_userdata.0.Gas-Flasche.Messwerte.Flaschen-Gewicht").val));  }
                      if (39 == (new Date().getMinutes())) {setState("0_userdata.0.Gewichtsdurchschnitt.1-Stunde.Min_39"/*Min_39*/, (getState("0_userdata.0.Gas-Flasche.Messwerte.Gewicht").val - getState("0_userdata.0.Gas-Flasche.Messwerte.Flaschen-Gewicht").val));  }
                      if (40 == (new Date().getMinutes())) {setState("0_userdata.0.Gewichtsdurchschnitt.1-Stunde.Min_40"/*Min_40*/, (getState("0_userdata.0.Gas-Flasche.Messwerte.Gewicht").val - getState("0_userdata.0.Gas-Flasche.Messwerte.Flaschen-Gewicht").val));  }
                      if (41 == (new Date().getMinutes())) {setState("0_userdata.0.Gewichtsdurchschnitt.1-Stunde.Min_41"/*Min_41*/, (getState("0_userdata.0.Gas-Flasche.Messwerte.Gewicht").val - getState("0_userdata.0.Gas-Flasche.Messwerte.Flaschen-Gewicht").val));  }
                      if (42 == (new Date().getMinutes())) {setState("0_userdata.0.Gewichtsdurchschnitt.1-Stunde.Min_42"/*Min_42*/, (getState("0_userdata.0.Gas-Flasche.Messwerte.Gewicht").val - getState("0_userdata.0.Gas-Flasche.Messwerte.Flaschen-Gewicht").val));  }
                      if (43 == (new Date().getMinutes())) {setState("0_userdata.0.Gewichtsdurchschnitt.1-Stunde.Min_43"/*Min_43*/, (getState("0_userdata.0.Gas-Flasche.Messwerte.Gewicht").val - getState("0_userdata.0.Gas-Flasche.Messwerte.Flaschen-Gewicht").val));  }
                      if (44 == (new Date().getMinutes())) {setState("0_userdata.0.Gewichtsdurchschnitt.1-Stunde.Min_44"/*Min_44*/, (getState("0_userdata.0.Gas-Flasche.Messwerte.Gewicht").val - getState("0_userdata.0.Gas-Flasche.Messwerte.Flaschen-Gewicht").val));  }
                      if (45 == (new Date().getMinutes())) {setState("0_userdata.0.Gewichtsdurchschnitt.1-Stunde.Min_45"/*Min_45*/, (getState("0_userdata.0.Gas-Flasche.Messwerte.Gewicht").val - getState("0_userdata.0.Gas-Flasche.Messwerte.Flaschen-Gewicht").val));  }
                      if (46 == (new Date().getMinutes())) {setState("0_userdata.0.Gewichtsdurchschnitt.1-Stunde.Min_46"/*Min_46*/, (getState("0_userdata.0.Gas-Flasche.Messwerte.Gewicht").val - getState("0_userdata.0.Gas-Flasche.Messwerte.Flaschen-Gewicht").val));  }
                      if (47 == (new Date().getMinutes())) {setState("0_userdata.0.Gewichtsdurchschnitt.1-Stunde.Min_47"/*Min_47*/, (getState("0_userdata.0.Gas-Flasche.Messwerte.Gewicht").val - getState("0_userdata.0.Gas-Flasche.Messwerte.Flaschen-Gewicht").val));  }
                      if (48 == (new Date().getMinutes())) {setState("0_userdata.0.Gewichtsdurchschnitt.1-Stunde.Min_48"/*Min_48*/, (getState("0_userdata.0.Gas-Flasche.Messwerte.Gewicht").val - getState("0_userdata.0.Gas-Flasche.Messwerte.Flaschen-Gewicht").val));  }
                      if (49 == (new Date().getMinutes())) {setState("0_userdata.0.Gewichtsdurchschnitt.1-Stunde.Min_49"/*Min_49*/, (getState("0_userdata.0.Gas-Flasche.Messwerte.Gewicht").val - getState("0_userdata.0.Gas-Flasche.Messwerte.Flaschen-Gewicht").val));  }
                      if (50 == (new Date().getMinutes())) {setState("0_userdata.0.Gewichtsdurchschnitt.1-Stunde.Min_50"/*Min_50*/, (getState("0_userdata.0.Gas-Flasche.Messwerte.Gewicht").val - getState("0_userdata.0.Gas-Flasche.Messwerte.Flaschen-Gewicht").val));  }
                      if (51 == (new Date().getMinutes())) {setState("0_userdata.0.Gewichtsdurchschnitt.1-Stunde.Min_51"/*Min_51*/, (getState("0_userdata.0.Gas-Flasche.Messwerte.Gewicht").val - getState("0_userdata.0.Gas-Flasche.Messwerte.Flaschen-Gewicht").val));  }
                      if (52 == (new Date().getMinutes())) {setState("0_userdata.0.Gewichtsdurchschnitt.1-Stunde.Min_52"/*Min_52*/, (getState("0_userdata.0.Gas-Flasche.Messwerte.Gewicht").val - getState("0_userdata.0.Gas-Flasche.Messwerte.Flaschen-Gewicht").val));  }
                      if (53 == (new Date().getMinutes())) {setState("0_userdata.0.Gewichtsdurchschnitt.1-Stunde.Min_53"/*Min_53*/, (getState("0_userdata.0.Gas-Flasche.Messwerte.Gewicht").val - getState("0_userdata.0.Gas-Flasche.Messwerte.Flaschen-Gewicht").val));  }
                      if (54 == (new Date().getMinutes())) {setState("0_userdata.0.Gewichtsdurchschnitt.1-Stunde.Min_54"/*Min_54*/, (getState("0_userdata.0.Gas-Flasche.Messwerte.Gewicht").val - getState("0_userdata.0.Gas-Flasche.Messwerte.Flaschen-Gewicht").val));  }
                      if (55 == (new Date().getMinutes())) {setState("0_userdata.0.Gewichtsdurchschnitt.1-Stunde.Min_55"/*Min_55*/, (getState("0_userdata.0.Gas-Flasche.Messwerte.Gewicht").val - getState("0_userdata.0.Gas-Flasche.Messwerte.Flaschen-Gewicht").val));  }
                      if (56 == (new Date().getMinutes())) {setState("0_userdata.0.Gewichtsdurchschnitt.1-Stunde.Min_56"/*Min_56*/, (getState("0_userdata.0.Gas-Flasche.Messwerte.Gewicht").val - getState("0_userdata.0.Gas-Flasche.Messwerte.Flaschen-Gewicht").val));  }
                      if (57 == (new Date().getMinutes())) {setState("0_userdata.0.Gewichtsdurchschnitt.1-Stunde.Min_57"/*Min_57*/, (getState("0_userdata.0.Gas-Flasche.Messwerte.Gewicht").val - getState("0_userdata.0.Gas-Flasche.Messwerte.Flaschen-Gewicht").val));  }
                      if (58 == (new Date().getMinutes())) {setState("0_userdata.0.Gewichtsdurchschnitt.1-Stunde.Min_58"/*Min_58*/, (getState("0_userdata.0.Gas-Flasche.Messwerte.Gewicht").val - getState("0_userdata.0.Gas-Flasche.Messwerte.Flaschen-Gewicht").val));  }
                      if (59 == (new Date().getMinutes())) {setState("0_userdata.0.Gewichtsdurchschnitt.1-Stunde.Min_59"/*Min_59*/, (getState("0_userdata.0.Gas-Flasche.Messwerte.Gewicht").val - getState("0_userdata.0.Gas-Flasche.Messwerte.Flaschen-Gewicht").val));  }
                      if (0 == (new Date().getMinutes())) {setState("0_userdata.0.Gewichtsdurchschnitt.1-Stunde.Min_60"/*Min_60*/,  (getState("0_userdata.0.Gas-Flasche.Messwerte.Gewicht").val - getState("0_userdata.0.Gas-Flasche.Messwerte.Flaschen-Gewicht").val));  }
                    
                    
                    
                    setState("0_userdata.0.Gewichtsdurchschnitt.1-Stunde.Schnitt"/*Schnitt*/, 
                    ((
                     getState("0_userdata.0.Gewichtsdurchschnitt.1-Stunde.Min_01").val +
                     getState("0_userdata.0.Gewichtsdurchschnitt.1-Stunde.Min_02").val +
                     getState("0_userdata.0.Gewichtsdurchschnitt.1-Stunde.Min_03").val +
                     getState("0_userdata.0.Gewichtsdurchschnitt.1-Stunde.Min_04").val +
                     getState("0_userdata.0.Gewichtsdurchschnitt.1-Stunde.Min_05").val +
                     getState("0_userdata.0.Gewichtsdurchschnitt.1-Stunde.Min_06").val +
                     getState("0_userdata.0.Gewichtsdurchschnitt.1-Stunde.Min_07").val +
                     getState("0_userdata.0.Gewichtsdurchschnitt.1-Stunde.Min_08").val +
                     getState("0_userdata.0.Gewichtsdurchschnitt.1-Stunde.Min_09").val +
                     getState("0_userdata.0.Gewichtsdurchschnitt.1-Stunde.Min_10").val +
                     getState("0_userdata.0.Gewichtsdurchschnitt.1-Stunde.Min_11").val +
                     getState("0_userdata.0.Gewichtsdurchschnitt.1-Stunde.Min_12").val +
                     getState("0_userdata.0.Gewichtsdurchschnitt.1-Stunde.Min_13").val +
                     getState("0_userdata.0.Gewichtsdurchschnitt.1-Stunde.Min_14").val +
                     getState("0_userdata.0.Gewichtsdurchschnitt.1-Stunde.Min_15").val +
                     getState("0_userdata.0.Gewichtsdurchschnitt.1-Stunde.Min_16").val +
                     getState("0_userdata.0.Gewichtsdurchschnitt.1-Stunde.Min_17").val +
                     getState("0_userdata.0.Gewichtsdurchschnitt.1-Stunde.Min_18").val +
                     getState("0_userdata.0.Gewichtsdurchschnitt.1-Stunde.Min_19").val +
                     getState("0_userdata.0.Gewichtsdurchschnitt.1-Stunde.Min_20").val +
                     getState("0_userdata.0.Gewichtsdurchschnitt.1-Stunde.Min_21").val +
                     getState("0_userdata.0.Gewichtsdurchschnitt.1-Stunde.Min_22").val +
                     getState("0_userdata.0.Gewichtsdurchschnitt.1-Stunde.Min_23").val +
                     getState("0_userdata.0.Gewichtsdurchschnitt.1-Stunde.Min_24").val +
                     getState("0_userdata.0.Gewichtsdurchschnitt.1-Stunde.Min_25").val +
                     getState("0_userdata.0.Gewichtsdurchschnitt.1-Stunde.Min_26").val +
                     getState("0_userdata.0.Gewichtsdurchschnitt.1-Stunde.Min_27").val +
                     getState("0_userdata.0.Gewichtsdurchschnitt.1-Stunde.Min_28").val +
                     getState("0_userdata.0.Gewichtsdurchschnitt.1-Stunde.Min_29").val +
                     getState("0_userdata.0.Gewichtsdurchschnitt.1-Stunde.Min_30").val +
                     getState("0_userdata.0.Gewichtsdurchschnitt.1-Stunde.Min_31").val +
                     getState("0_userdata.0.Gewichtsdurchschnitt.1-Stunde.Min_32").val +
                     getState("0_userdata.0.Gewichtsdurchschnitt.1-Stunde.Min_33").val +
                     getState("0_userdata.0.Gewichtsdurchschnitt.1-Stunde.Min_34").val +
                     getState("0_userdata.0.Gewichtsdurchschnitt.1-Stunde.Min_35").val +
                     getState("0_userdata.0.Gewichtsdurchschnitt.1-Stunde.Min_36").val +
                     getState("0_userdata.0.Gewichtsdurchschnitt.1-Stunde.Min_37").val +
                     getState("0_userdata.0.Gewichtsdurchschnitt.1-Stunde.Min_38").val +
                     getState("0_userdata.0.Gewichtsdurchschnitt.1-Stunde.Min_39").val +
                     getState("0_userdata.0.Gewichtsdurchschnitt.1-Stunde.Min_40").val +
                     getState("0_userdata.0.Gewichtsdurchschnitt.1-Stunde.Min_41").val +
                     getState("0_userdata.0.Gewichtsdurchschnitt.1-Stunde.Min_42").val +
                     getState("0_userdata.0.Gewichtsdurchschnitt.1-Stunde.Min_43").val +
                     getState("0_userdata.0.Gewichtsdurchschnitt.1-Stunde.Min_44").val +
                     getState("0_userdata.0.Gewichtsdurchschnitt.1-Stunde.Min_45").val +
                     getState("0_userdata.0.Gewichtsdurchschnitt.1-Stunde.Min_46").val +
                     getState("0_userdata.0.Gewichtsdurchschnitt.1-Stunde.Min_47").val +
                     getState("0_userdata.0.Gewichtsdurchschnitt.1-Stunde.Min_48").val +
                     getState("0_userdata.0.Gewichtsdurchschnitt.1-Stunde.Min_49").val +
                     getState("0_userdata.0.Gewichtsdurchschnitt.1-Stunde.Min_50").val +
                     getState("0_userdata.0.Gewichtsdurchschnitt.1-Stunde.Min_51").val +
                     getState("0_userdata.0.Gewichtsdurchschnitt.1-Stunde.Min_52").val +
                     getState("0_userdata.0.Gewichtsdurchschnitt.1-Stunde.Min_53").val +
                     getState("0_userdata.0.Gewichtsdurchschnitt.1-Stunde.Min_54").val +
                     getState("0_userdata.0.Gewichtsdurchschnitt.1-Stunde.Min_55").val +
                     getState("0_userdata.0.Gewichtsdurchschnitt.1-Stunde.Min_56").val +
                     getState("0_userdata.0.Gewichtsdurchschnitt.1-Stunde.Min_57").val +
                     getState("0_userdata.0.Gewichtsdurchschnitt.1-Stunde.Min_58").val +
                     getState("0_userdata.0.Gewichtsdurchschnitt.1-Stunde.Min_59").val +
                     getState("0_userdata.0.Gewichtsdurchschnitt.1-Stunde.Min_60").val 
                     ) / 60));
                    });
                    

                    das Entspricht der Lila Linie.

                    und nun kommt die Grüne Line (hier bitte nicht verwirren lassen das da was mit Tages Durchschnitt steht)

                    Skript.PNG

                    den Rest kann ich erst heute abend (bin in einer anderen Zeitzone) testen.

                    Was ich jetzt schon mal sagen kann das wenn ich in Flote gar keine Angaben zu Skala mache geht die automatische Skala nicht auf null.

                    Vielen dank
                    Bruce

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

                      @ecurb sagte: das Entspricht der Lila Linie.

                      Die Werte zur Mittelwertbildung werden unmittelbar nach dem Schreiben wieder eingelesen, was aufgrund der asynchronen Ausführung von setState() nicht (oder nur manchmal) funktioniert. Außerdem sind 60 Datenpunkte Overkill, da ein Datenpunkt vom Typ "Liste" ("array") ausreicht (siehe meine Erweiterung).

                      @ecurb sagte in Sprung bei Durchschnittsberechnung:

                      und nun kommt die Grüne Line

                      Die Liste wird bei jedem Skriptstart mit dem zufälligen Messwert gefüllt.

                      Beide Skripte sollen eigentlich das gleiche machen (gleitender Durchschnitt über 60 Minutenwerte).

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

                        @ecurb sagte: links und rechts springt der wert. Wärend dessen ist der wert dann wieder konstant.

                        Mir fällt auf, dass die Dauer der Abweichung genau eine Stunde beträgt, d.h. in der Liste weicht ein Wert - abgetastet um 9:56 Uhr - stark nach unten ab und nach einer Stunde ist dieser Wert "raus geschoben". Dieser Wert ist wahrscheinlich 0, da die Abweichung ca. -0,3 (18,4 / 60) beträgt.

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

                        Support us

                        ioBroker
                        Community Adapters
                        Donate

                        568
                        Online

                        31.9k
                        Users

                        80.2k
                        Topics

                        1.3m
                        Posts

                        5
                        12
                        732
                        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