Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Blockly
    5. Diskussionsthread zu "Blockly für Dummies"

    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

    Diskussionsthread zu "Blockly für Dummies"

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

      @codierknecht war nur ein Schnellschuss aus dem Bestand

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

        @codierknecht sagte: Mittelwert aus X Temperaturwerten zu erhalten.

        Gleitender Mittelwert über 24 h:

        Blockly_temp.JPG

        Anmerkung: Der DP "Temperatur-Liste" muss vom Typ "array" sein.
        Durch das Voranstellen des neuesten Wertes in der Liste, kann man im Tab "Objekte" Änderungen in der Liste besser beobachten.

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

          @Homoran @paul53
          Ich habe das hier fabriziert ... in der Hoffnung, dass es für Anfänger leicht zu verstehen ist:

          7413f926-f463-4656-bf4c-1b9469887f18-image.png

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

            @codierknecht
            hier eine andere Variante, läuft gleitend
            Screenshot_20231127-124952_Firefox.jpg
            Länge der Liste wird ganz oben definiert.

            Die beiden letzten können durch Mittelwert der Liste ersetzt werden

            EDIT: Hat Paul ja inzwischen ähnlich gepostet.

            bin zu langsam

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

              Ich glaube, so eine Mischung aus allem ist für den Anfänger verständlich.
              Also den Mittelwert der Tagestemperaturen ermitteln.

              Trigger auf die Temperatur, Mittelwert ausgeben (im Log. Da einen DP zu hinterlegen kann jeder halten wie er will) und um 00:00 Uhr Liste leeren.

              Dass das damit nicht persistent ist, ist soweit klar.
              Soll aber nur ein knackiges Beispiel ohne viel Tamtam sein.

              @paul53 Vorne anfügen macht Sinn.

              Edit
              Etwa so:
              0719cfbc-fec7-439e-86d8-36693910ebbe-image.png

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

                @codierknecht sagte: Trigger auf die Temperatur, Mittelwert ausgeben

                Das ist kein echter Tages-Mittelwert, da Temperaturwerte, die lange Zeit konstant bleiben, untergewichtet werden.

                Codierknecht Homoran 2 Replies Last reply Reply Quote 1
                • Codierknecht
                  Codierknecht Developer Most Active @paul53 last edited by

                  @paul53
                  Guter Hinweis - ich baue das um auf CRON

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

                    @paul53 sagte in Diskussionsthread zu "Blockly für Dummies":

                    da Temperaturwerte, die lange Zeit konstant bleiben, untergewichtet werden.

                    dafür hatte ich auch mal was geklöppelt, das mit Zeitdifferenzen arbeitete und dann den letzten Wert x-mal in die Liste eintrug. (x = Zeitspanne : Standardsendeintervall)

                    ich weiss gar nicht ob das korrekt arbeitet.

                    Screenshot_20231127-132207_Firefox.jpg

                    mir hat's gereicht und für Einsteiger zu komplex

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

                      Ich denke, der Ursprungsthread ist so ziemlich komplett.
                      Ich will den Anfänger ja nicht überfordern, denke aber, die wichtigsten Punkte angesprochen zu haben.
                      Soll ja nicht die Doku ersetzen, sondern nur die häufigsten Fallstricke und deren Umgehung aufzeigen.

                      Sollten der Thread eklatante Fehler enthalten oder ein wichtiger Punkt noch gänzlich unbehandelt sein: Nur zu - bitte hier melden.

                      1 Reply Last reply Reply Quote 1
                      • H-a-m-i
                        H-a-m-i last edited by

                        Hallo. Ich bin gerade, bei der Suche nach der Antwort auf eine Frage, auf den Blockly für Dummies Thread gestoßen und würde die Frage einfach mal hier stellen, vielleicht wäre dieser Punkt evtl. auch für andere im Dummies Thread hilfreich.

                        Und zwar geht es um den "Falls Block". Ich habe in einigen meiner Skripte, bei den Falls Blöcken, mehrere Bedingungen mit den selben Variablen Abfragen und frage mich, welche Variante in diesem Fall ressourcenschonender und auch schneller ist. Bisher habe ich es immer, soweit es geht, vermieden, Falls Blöcke in Falls Blöcke zu bauen, weil ich meine mal gelesen zu haben, dass das nicht so gut sei. Ich habe dann immer mehrere Bedingungen mit "und" oder "oder" Blöcken zusammen gebaut und manche Variable so mehrfach überprüft, was ja, nach meinem Verständnis, aber eigentlich mehr Ressourcen benötigt. Deshalb frage ich mich mittlerweile, ob es nicht doch besser ist, in so einem Fall dann doch mehrere Falls Blöcke ineinander zu setzen, da so die jeweilige Variable nur einmal abgefragt werden muss und nicht mehrfach.

                        Hier mal Screenshots beider Varianten, dann ist es leichter zu verstehen, was ich meine. Als erstes, wie ich es bisher gemacht habe, hier wurden zb die Variablen Entpreller, AlexaImBett, BWM_HS mehrfach in Bedingungen gesetzt und mehrfach überprüft:

                        2.JPG

                        Und so habe ich den Block jetzt mal umgestellt mit mehreren Falls Blöcken ineinander:

                        1.JPG

                        Welche Variante ist denn jetzt tatsächlich die bessere, was den code, die Ressourcen und die Geschwindigkeit angeht? (Die Übersichtlichkeit ist eher zweitrangig)

                        paul53 Codierknecht 2 Replies Last reply Reply Quote 0
                        • paul53
                          paul53 @H-a-m-i last edited by paul53

                          @h-a-m-i sagte: Welche Variante ist denn jetzt tatsächlich die bessere

                          Wenn alle Debug-Ausgaben in den sonst-Zweigen benötigt werden, ist die zweite Variante besser. In jedem Fall ist es besser, die Entpreller-Variable nur einmal zu prüfen, was mittels Timer-Variable eleganter geht:

                          Blockly_temp.JPG

                          1 Reply Last reply Reply Quote 0
                          • Codierknecht
                            Codierknecht Developer Most Active @H-a-m-i last edited by Codierknecht

                            @h-a-m-i
                            Ich glaube, in diesem Fall ist Lesbarkeit wichtiger als noch das letzte Quentchen Performance rauszuquetschen.

                            Nimm die Variante, die Du nach einigen Wochen oder gar Monaten noch verstehst.

                            1 Reply Last reply Reply Quote 0
                            • H-a-m-i
                              H-a-m-i last edited by

                              Ok prima, also ist es nicht schlimm, mehrere Falls Blöcke ineinander zu bauen. Solche Blöcke kommen nämlich bei mir öfter vor.

                              @codierknecht sagte in Diskussionsthread zu "Blockly für Dummies":

                              in diesem Fall ist Lesbarkeit wichtiger als noch das letzte Quentchen Performance rauszuquetschen.

                              Aber bedeutet das dann, dass die aufgeräumte, zweite Variante mehr Ressourcen/Zeit verbraucht als die erste? In diesem Fall geht es ja um das Einschalten eines Lichts per Bewegungsmelder und das soll so schnell wie möglich passieren...

                              @paul53 sagte in Diskussionsthread zu "Blockly für Dummies":

                              was mittels Timer-Variable eleganter geht:

                              Ach cool, das ist ja noch besser. Danke. Der grüne "Verzögerung timeout" Block oben gibt also immer an, ob dieser timeout gerade läuft, richtig?

                              paul53 Codierknecht 2 Replies Last reply Reply Quote 0
                              • paul53
                                paul53 @H-a-m-i last edited by

                                @h-a-m-i sagte: Der grüne "Verzögerung timeout" Block oben gibt also immer an, ob dieser timeout gerade läuft, richtig?

                                Ja, seit Javascript-Version 7.0.5 ist es so.

                                1 Reply Last reply Reply Quote 0
                                • Codierknecht
                                  Codierknecht Developer Most Active @H-a-m-i last edited by

                                  @h-a-m-i sagte in Diskussionsthread zu "Blockly für Dummies":

                                  Aber bedeutet das dann, dass die aufgeräumte, zweite Variante mehr Ressourcen/Zeit verbraucht als die erste? In diesem Fall geht es ja um das Einschalten eines Lichts per Bewegungsmelder und das soll so schnell wie möglich passieren...

                                  Was die Performance angeht, reden wir von Millisekunden, die eine Variante evtl. schneller ist als eine andere.
                                  Das fällt wohl kaum ins Gewicht.

                                  JoJo58 1 Reply Last reply Reply Quote 0
                                  • H-a-m-i
                                    H-a-m-i last edited by

                                    Super. Vielen Dank euch

                                    1 Reply Last reply Reply Quote 0
                                    • JoJo58
                                      JoJo58 @Codierknecht last edited by

                                      @codierknecht

                                      Ich habe mir dein "Blockly for dummies" durchgelesen und bin echt angetan davon 👍 , ist wirklich hilfreich, vielen Dank. Ich wäre froh wenn ich einiges davon schon früher gewusst hätte.
                                      Hab dann doch Fragen dazu. Ich habe sehr viele Blocklys und alle in einer Ordnerstruktur in root erstellt. Ob die Blocklys alle sinnvoll sind, bezweifele ich selber, aber egal. Ich habe bei allen Namen, egal ob Ordner oder Blocklys, leider Leerzeichen und auch Umlauten angelegt. Habe gerade zum Testen einen Ordner, darunter noch einen Ordner und da ein Blockly erstellt. Alles mit Leerzeichen und Umlauten. Die habe ich dann nachträglich umbenannt und das hat geklappt.

                                      1. Frage: Ist es sinnvoll das jetzt im nachhinein bei allen Blocklys (über 300) zu machen und die alle mit Bindestrich/Unterstrich und ohne Umlaute umzubenennen?

                                      2. Frage: Ich kannte den "nicht" Block nicht, habe also immer auf "Wert von Objekt ID = falsch" oder "Variable = falsch" geprüft. Lohnt es sich das nach und nach in den Blocklys zu ändern?

                                      Wenn du/ihr ja sagt, habe ich eine neue Beschäftigung 😁

                                      Gruß Johannes

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

                                        @jojo58
                                        zu 2)
                                        du hast leider kein Beispiel gezeigt.
                                        Interessant wird es wenn du mehrfach den Wert des Triggerdatenpunkts nochmals separat über "Wert von..." holst.
                                        Dann lohnt es sich auf jeden Fall statt dessen den Block WERT aus dem Beteich Trigger zu nehmen und nicht Wert daraus zu machen.

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

                                          @homoran
                                          Mit dem "WERT" aus Trigger das kenne ich, in dem Beispiel hier, triggere ich allerdings auf 2 Bewegungsmelder. Die Werte setze ich in die Variablen "Bewegung_Kaffeemaschine" und "Bewegung_Spuele" und arbeite damit.
                                          Im Screenshot (etwa ein viertel des Blocklys) habe ich schon 7 (von insgesamt 16) mal die Prüfung auf "falsch" und das meinte ich. Und ich sehe gerade das ich den "currentState" auch mehrfach verwende, hätte ich auch in eine Variable setzen sollen.

                                          Blockly auf falsch.jpg

                                          Die Frage ist halt, lohnt es sich, oder ist es sinnvoll, die in diesem Blockly 16 mal vorhandene Prüfung auf "falsch" zu ändern und den "nicht" Block zu nehmen? Bei neuen werde ich es definitiv machen.

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

                                            @jojo58 sagte in Diskussionsthread zu "Blockly für Dummies":

                                            die in diesem Blockly 16 mal vorhandene Prüfung auf "falsch" zu ändern und den "nicht" Block zu nehmen?

                                            ich würde mir dafürdie Arbeit nicht machen, zumal wenn du dir vornimmst

                                            @jojo58 sagte in Diskussionsthread zu "Blockly für Dummies":

                                            Bei neuen werde ich es definitiv machen.

                                            Aber

                                            @jojo58 sagte in Diskussionsthread zu "Blockly für Dummies":

                                            den "currentState" auch mehrfach verwende, hätte ich auch in eine Variable setzen sollen.

                                            spart mehr Ressourcen und hat den Vorteil, dass immer der selbe Wert vorliegt, wenn die Variable direkt zu Beginn gefüllt wird

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

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            940
                                            Online

                                            31.9k
                                            Users

                                            80.1k
                                            Topics

                                            1.3m
                                            Posts

                                            9
                                            46
                                            3095
                                            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