Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Blockly
    5. Liste aus Temperaturen, Mittelwert wiedergeben [gelöst]

    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

    Liste aus Temperaturen, Mittelwert wiedergeben [gelöst]

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

      hallo paul53,
      erstmal danke für deine Hilfe, währe ich wohl nie drauf gekommen.
      rein aus interesse wüsste ich mal gern wo diese list erzeugt wird, kann man die als datenpunkt irgendwo sehen? finde den datenpunkt nicht.

      des weiteren habe ich probleme mit dem "entferne letzen wert", das finde ich in meinem blockly garnicht. kann bei diesem block nur "setze für" oder "füge als" auswählen, aber nicht "entferne" 🤔

      paul53 Asgothian 2 Replies Last reply Reply Quote 0
      • X
        xbow42 last edited by

        @Dom-Sch
        so z.B. kannst du dir die Werte ins Log schreiben lassen.
        iobroker-liste.png

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

          @Dom-Sch sagte:

          finde den datenpunkt nicht.

          Den Datenpunkt musst Du im Reiter "Objekte" manuell anlegen. Oder per Blockly unter javascript.0

          Blockly_temp.JPG

          @Dom-Sch sagte in Liste aus Temperaturen, Mittelwert wiedergeben:

          "entferne letzen wert", das finde ich in meinem blockly garnicht.

          Blockly_temp.JPG

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

            @Dom-Sch
            Ich muss jetzt mal ganz dumm Fragen.. wieso dieser Aufwand mit der Liste ?

            Mit 2 Datenpunkten kannst du das Problem einfach lösen:

            DP1: Anzahl der aufaddierten Werte
            DP2: Summe der aufaddierten Werte
            nach 24 Werten (oder alternativ per Zeitplan:
            Teile DP1 durch DP2, speichere als Tageswert, setze DP1=0, setze DP2=0.

            A.

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

              So, nun hab ich es endlich geschafft einen Datenpunkt zu erzeugen und ihn auch beschrieben mit 96 werten (habe es im Gedanken auf alle 15min geändert) natürlich vorerst alle gleich.

              Wenn ich es richtig verstanden habe, brauche ich ja einen zweiten Datenpunkt der mit zur Ausgabe des Mittelwertes dient ?! Stimmt das so ?

              Habe dein Script (Paul53) mal nachgebaut, ganz oben als Objekt ID habe ich den erstellten Datenpunkt ausgewählt (also die liste mit 96 werten).

              Im Log taucht nun folgendes auf :

              Bildschirmfoto 2020-02-09 um 14.41.11.png

              Das Script sieht nun so aus:

              Bildschirmfoto 2020-02-09 um 14.43.50.png

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

                @Dom-Sch sagte

                einen zweiten Datenpunkt der mit zur Ausgabe des Mittelwertes dient ?! Stimmt das so ?

                Ja, Typ: Zahl, Einheit: °C

                @Dom-Sch sagte in Liste aus Temperaturen, Mittelwert wiedergeben:

                Im Log taucht nun folgendes auf :

                Wurde der Datenpunkt "temp liste 1" vorher mit 96 Temperaturwerten gefüllt ?

                @Dom-Sch sagte in Liste aus Temperaturen, Mittelwert wiedergeben:

                auf alle 15min geändert

                Dann muss der Zeitplan auch alle 15 Minuten triggern: "*/15 * * * *"

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

                  Ja werte habe ich rein schreiben lassen, hatte jetzt nur jede minute zum testen eingestellt, das dürfte doch nicht das problem herbeirufen oder, löscht ja nur einen wert und setzt einen neuen davor... sollte ihm doch egal sein wie oft das passiert, oder ?!

                  Bildschirmfoto 2020-02-09 um 14.51.33.png

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

                    @Dom-Sch sagte:

                    das dürfte doch nicht das problem herbeirufen

                    Nein. Die Fehlermeldung deutet darauf hin, dass kein Array eingelesen wurde. Deshalb füge mal 2 Debug-Blöcke ein:

                    Blockly_temp.JPG

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

                      Habe nun den Datenpunkt "liste" geändert.

                      Erst den selbst erstellten Datenpunkt benutzt, nun den mit Blockly erstellten Datenpunkt, jetzt scheint es zu gehen, hab ich wohl was falsch gemacht beim erstellen 🙄
                      Kann man nen Datenpunkt einfach kopieren ? wollte den eigentlich wo anders haben, währe aber auch nicht ganz so dramatisch wenn nicht ... hab es 1:1 versucht nachzubauen, trotzdem scheint er den Datenpunkt nicht zu mögen, als welchen Grund auch immer, vielleicht muss er einfach im Verzeichnis javascript.0 liegen 🤷‍♂️

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

                        @Dom-Sch sagte:

                        hab ich wohl was falsch gemacht beim erstellen

                        Eher beim Befüllen mit den 96 Werten. Das kann man nicht per Hand, sondern nur per Script machen.

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

                          Hatte ich auch so gemacht wie du erlärt hast. stehen in beiden datenpunkten 96 werte drin. Mit dem einen geht es mit dem anderen nicht. Verstehe ich auch nicht wirklich.

                          Egal, geht ja jetzt, vielen Dank

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

                            Du hattest natürlich recht 😬
                            Den Datenpunkt noch mal neu gefüllt, jetzt kann ich auch diesen nehmen, an dem Ort wo ich möchte.

                            💯

                            1 Reply Last reply Reply Quote 0
                            • M
                              Muhagl @xbow42 last edited by Muhagl

                              @xbow42
                              "und so umbauen" ..... wie geht das ????

                              Hat sich erledigt - einfach blind 🙂 Vielen Dank für die Anleitung

                              Hier mein Script:
                              dc683995-a0d4-46fc-9f50-d9b55410e8b0-grafik.png

                              Zu beachten ist, das sich durch die Mittelwertsberechnung bei einer grafischen Darstellung ein Shift ergibt....

                              J 1 Reply Last reply Reply Quote 0
                              • J
                                juergschwarz @Muhagl last edited by juergschwarz

                                @Muhagl Ich hab das so gelöst für einen laufenden Durchschnitt für 15min:

                                Bildschirmfoto von 2020-10-25 07-58-48.png

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

                                  @paul53
                                  Hallo,
                                  bei mir läuft Dein blockly zum gleitenden Mittelwert seit einiger Zeit ohne Probleme:

                                  var Liste, Summe, i, Mittel;
                                  
                                  
                                  // einmalig Liste befüllen
                                  
                                  Liste = getState("0_userdata.0.Variablen.Lux_Durchschnitt").val;
                                  schedule("*/15 * * * * *", async function () {
                                    Liste.pop();
                                    Liste.unshift(getState("zigbee.1.04cf8cdf3c7b6097.illuminance").val);
                                    setState("0_userdata.0.Variablen.Lux_Durchschnitt"/*Lux_Durchschnitt*/, Liste, true);
                                    Summe = 0;
                                    for (i = 1; i <= 80; i++) {
                                      Summe = (typeof Summe == 'number' ? Summe : 0) + Liste[(i - 1)];
                                    }
                                    console.log(('Summe ist ' + String(Summe)));
                                    Mittel = Math.round(Summe / 80);
                                    setState("0_userdata.0.Variablen.Lux_Durchschnitt_Wert"/*Lux_Durchschnitt_Wert*/, Mittel, true);
                                    console.log(('Mittel ist ' + String(Mittel)));
                                  });
                                  

                                  Neuerdings bekomme ich diesen Fehler:

                                  15:28:30.012	error	javascript.0 (10504) at Object.<anonymous> (script.js.common.Verschiedenes.Lux_Durchnitt_berechnen:8:9)
                                  15:28:45.002	error	javascript.0 (10504) script.js.common.Verschiedenes.Lux_Durchnitt_berechnen: TypeError: Liste.pop is not a function
                                  

                                  Downgrade des javascript Adapters hat nicht geholfen, ebensowenig Neueingabe des scripts.
                                  Was kann ich tun?

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

                                    @zahnheinrich
                                    Offenbar enthält der Datenpunkt "0_userdata.0.Variablen.Lux_Durchschnitt" keine Liste mehr.
                                    Welche Version des Javascript-Adpters? In neueren Versionen wurde auf JSON umgestellt, so dass es sein kann, dass die Liste neu befüllt werden muss. Einmalig ausführen:

                                    Bild_2021-09-12_155640.png

                                    Vorher den Javascript-Adapter aktualisieren.

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

                                      @paul53
                                      Die Listenvariable war schon gefüllt, hatte ich extra abgezählt auf 80 Elemente, aber egal.

                                      Nach Neubefüllung mit Deinem blockly geht´s wieder, vielen Dank!

                                      Wäre aufgrund der mir unverständlichen Fehlermeldung vorerst nicht drauf gekommen.

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

                                        @zahnheinrich sagte: Nach Neubefüllung mit Deinem blockly geht´s wieder

                                        Adapter-Version?

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

                                          @paul53
                                          Aktuell javascript 4.11.0, downgrade von 5.2.6
                                          Allerdings auf meinem Produktivsystem mit admin 4.x

                                          Auf meinem Testsystem mit admin 5.x und neuesten stable Adapterversionen ging es auch nicht.

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

                                            @zahnheinrich sagte: downgrade von 5.2.6

                                            Deshalb hat es nicht mehr funktioniert: Version 5.2.6 hat ein JSON in den Datenpunkt geschrieben, was für Version 4.11.0 kein Array ist. Mit der Admin-Version hat es nichts zu tun.

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

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            702
                                            Online

                                            31.8k
                                            Users

                                            80.0k
                                            Topics

                                            1.3m
                                            Posts

                                            7
                                            25
                                            4182
                                            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