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.
    • 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
                        • JoJo58
                          JoJo58 @Homoran last edited by

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

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

                          Wusste ich nicht und werde ich anpassen. Und wenn ich einmal dran bin, dann ändere ich die Prüfungen auf falsch auch. Zumindest bei größeren Blocklys.

                          Und was ist mit der Frage zu den Namen der Scripte? Die sollte ich ändern?

                          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":

                            Frage zu den Namen der Scripte? Die sollte ich ändern?

                            hmm, auch da bin ich mir nicht wirklich sicher. Ist ja nicht unerheblicher Aufwand.
                            Bei neuen drauf achten, aber ändern IMHO nicht zwingend nötig.

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

                              @homoran

                              Okay, dann weiß ich Bescheid. Werde es einfach nach und nach mal anpassen und bei neuen Blocklys direkt darauf achten. Danke für deine Hilfe.

                              PS: Mit dem prüfen auf falsch, das ist lesbarer, mit dem "nicht" Block, da muss ich mehr aufpassen. Ist bestimmt auch eine Gewohnheitssache. 😉

                              Johannes

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

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

                                Mit dem prüfen auf falsch, das ist lesbarer, mit dem "nicht" Block, da muss ich mehr aufpassen. Ist bestimmt auch eine Gewohnheitssache

                                So ist es.
                                Man muss sich nur mal vergegenwärtigen, was da eigentlich passiert.
                                Eine Prüfung mit "Falls" wird ja intern als "if" abgebildet. Und so ein "if" prüft, ob der übergebene Ausdruck als Ergebnis ein "true" oder ein "false" zurückliefert.

                                if (value > 42)
                                

                                liefert true wenn der Wert in value größer als 42 ist und falseim anderen Fall.
                                Bei solch einer Prüfung auf z.B. Zahlenwerte ist das ja noch völlig klar.
                                Was aber, wenn man eine bool'sche Variable prüft, die selbst nur true oder false sein kann?

                                if (istWochenende == true)
                                

                                Nehmen wir mal an, die Variable "istWochenende" enthält gerade den Wert true.
                                Dann würde beim Ablauf des Scripts ja eigentlich folgende Prüfung erfolgen:

                                if (true == true)
                                

                                Hier sieht man eigentlich schon, dass eine solche Formulierung ziemlicher Quatsch ist.
                                Der Ausdruck liefert als Ganzes true. Das steht aber ja bereits in der Variablen drin. Man kann also genau so gut schreiben:

                                if (istWochenende)
                                

                                Das liest sich dann schon wesentlich besser. Ist für meine Begriffe auch wesentlich intuitiver.

                                Jetzt ist es eigentlich nur noch reine Gewöhnungssache, das auch bei "Falsch" so zu verwenden.
                                Das sieht bei Blockly leider etwas umständlich aus. In JavaScript (und allen anderen C-artigen Sprachen) sieht das als reiner Code wesentlich einfacher aus:

                                if (value)  // liefert "true", wenn value = true
                                if (!value) // liefert "true", wenn value = false (negiert)
                                

                                Programmierer sind halt faul - sonst wären sie nicht Programmierer geworden.
                                Darum verwenden sie deutlich lieber die kürzere Schreibweise.

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

                                  @codierknecht sagte: if !(value)

                                  if (!value) // liefert true, wenn value = false (negiert)
                                  
                                  Codierknecht 1 Reply Last reply Reply Quote 0
                                  • Codierknecht
                                    Codierknecht Developer Most Active @paul53 last edited by

                                    @paul53
                                    Danke!

                                    1 Reply Last reply Reply Quote 0
                                    • S
                                      stronoff last edited by

                                      @Codierknecht :

                                      Vielen Dank für Deinen "Blockly für Dummies" Beitrag der mir schon sehr viel geholfen hat.

                                      Für ein Thema habe ich bisher noch keine schöne Lösung gefunden :

                                      Ich habe immer wieder die Herausforderung, dass ich mit mehreren verschiedenen (Zahlen-) Datenpunkten rechnen möchte:

                                      DP_1 + DP_2 - DP_3 + (DP_4/1000)
                                      z. B. um mehrere Stromverbraucher (ein DP_4 ist z.B. in Wh, alle anderen in kWh) zusammenzufassen und in einen neuen Datenpunkt zu schreiben.

                                      Bisher löse ich das, in dem ich zu dem einen DP_4 ein Alias erstelle und das Alias schon mit der Umrechnung in kWh anlege und dann mit "Summe über Liste" rechne.

                                      Aber wie würde ich dann z. B sowas am sinnvollsten und effizientesten bewerkstelligen? :

                                      (DP_1 + DP_2 - DP_3 + (DP_4/1000))/4

                                      Die Durchschnitt / gleitender Durchschnitt Ermittlung weiter oben habe ich gesehen. Mir geht es nur darum zu verstehen, ob ich hinsichtlich "komplexerer" Berechnungen etwas übersehen habe.

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

                                        @stronoff
                                        Das geht natürlich auch ohne Alias.
                                        Wird allerdings mit zunehmender Zahl von Operanden ziemlich unübersichtlich.
                                        Mit "externe Eingänge" kann man das etwas übersichtlicher gestalten.

                                        15686ca3-b3d6-4488-aff1-be7b05427513-image.png

                                        Homoran S 2 Replies Last reply Reply Quote 1
                                        • Homoran
                                          Homoran Global Moderator Administrators @Codierknecht last edited by

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

                                          Mit "externe Eingänge" kann man das etwas übersichtlicher gestalten.

                                          zumal dann die Klammersetzung deutlicher wird.

                                          hier

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

                                          (DP_1 + DP_2 - DP_3 + (DP_4/1000))/4

                                          ist bei DP1 - 3 ja gar keine Klammerung

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

                                            @homoran
                                            Das überlasse ich dann gerne dem TE 😁

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

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            715
                                            Online

                                            31.9k
                                            Users

                                            80.1k
                                            Topics

                                            1.3m
                                            Posts

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