Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Blockly
    5. Anfänger - Wie mit Script beginnen

    NEWS

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

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    Anfänger - Wie mit Script beginnen

    This topic has been deleted. Only users with topic management privileges can see it.
    • D
      Doppellhelix last edited by

      Ich habe mich jetzt nochmal an diesen Script versucht und es ein wenig anders gelöst. Für mich nachvollziehbarer.
      Es funktioniert. Aber vllt findet ihr ja etwas, was man verbessern kann.

      Ich habe erstmal einen Datepunkt "dunkel" unter 0_userdata angelegt.
      Mit einem extra Script setze ich diese Variable auf "wahr", wenn es dunkel ist.
      Ich habe extra ein eigenständiges Script daraus gemacht, da ich die Vartiable "dunkel" auch noch woanders verwenden kann und so eine bessere Übersicht (zumindest für mich) bekommen.

      Bildschirmfoto vom 2025-04-06 10-08-10.png

      Danach habe ich ein eigenständiges Script erstellt, nur für das Schalten der LED Lampe in abhängigkeit ob der TV Strom verbraucht, also an ist und es dunkel ist.

      Bildschirmfoto vom 2025-04-06 10-11-31.png

      Was sagt ihr?

      Gruß Helix

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

        @doppellhelix sagte: Was sagt ihr?

        Man verwendet pro Datenpunkt nur einen Trigger in einem Skript (Ressourcen).
        Soll das Licht nicht angehen, wenn der TV bei Dunkelheit eingeschaltet wird?

        Besser so:

        Blockly_temp.JPG

        Der Vergleich unten dient dazu, dass nicht ständig gesendet wird, wenn die Leistungsaufnahme schwankt.

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

          @paul53 said in Anfänger - Wie mit Script beginnen:

          Man verwendet pro Datenpunkt nur einen Trigger in einem Skript (Ressourcen).

          Guter Hinweis.
          Aber sind es viele Resourcen? Wo kann ich sehen, wieviele Resourcen mein (ineffizientes) Script benötigt?

          @paul53 said in Anfänger - Wie mit Script beginnen:

          Soll das Licht nicht angehen, wenn der TV bei Dunkelheit eingeschaltet wird?

          Ich dachte das würde auch schon im ersten Teil passieren.

          @paul53 said in Anfänger - Wie mit Script beginnen:

          Der Vergleich unten dient dazu, dass nicht ständig gesendet wird, wenn die Leistungsaufnahme schwankt.

          Der TV nimmt immer über 70W auf im Betrieb.
          Versteh ich das richtig? Sobald sich die Stromaufnahme schon um 1 Watt oder 0,1 Watt ändert, macht das Script etwas? Also sendet etwas?

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

            @doppellhelix sagte: das würde auch schon im ersten Teil passieren.

            Der triggert nur einmal am Tag, nicht wenn sich die TV-Leistung ändert.

            @doppellhelix sagte in Anfänger - Wie mit Script beginnen:

            Sobald sich die Stromaufnahme schon um 1 Watt oder 0,1 Watt ändert, macht das Script etwas? Also sendet etwas?

            Ja (ohne den Vergleich).

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

              @paul53

              Und ich dachte ich "hätte" es. gg

              Danke für die Erklärungen.

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

                @doppellhelix wie wäre es mit der Arbeit die @Codierknecht sich gemacht hat: https://forum.iobroker.net/topic/70481/blockly-for-dummies-starthilfe-und-tipps

                Oder die Videos von @haus-automatisierung https://www.youtube.com/@haus_automation/search?query=blockly
                und/oder der Masterkurs von Ihm: https://haus-automatisierung.com/iobroker-kurs/

                D 1 Reply Last reply Reply Quote 1
                • D
                  Doppellhelix @BananaJoe last edited by

                  @bananajoe

                  Du wirst lachen.....Tips und Tricks gelesen, Masterkurs bezahlt und zur Hälfte abgearbeitet.
                  Den kann ich übrigens empfehlen.

                  Das Problem ist bei mir ein anderes.
                  Ich komme aus der SPS Welt.
                  Hier wird das Script in einer Schleife immer wieder gelesen bzw ausgeführt.
                  Das mag sich nicht nach einem großen Untershcied anhören, ist es aber.

                  Dazu finde ich die Übersetzung von Blockly nicht ganz gelungen.
                  In der SPS Welt hat man eine einfachere Sprache. Und Oder Undnicht usw.
                  Die SPS Proframmierung in FUP (Funktionsplan) kommt der Blockly Geschicht recht nahe.
                  Ist aber in der SPS Welt m.M. nah besser gelöst.

                  Z.B.
                  Bildschirmfoto vom 2025-04-06 12-03-01.png

                  Der Auslöser "Falls Objekt" und dann nochmal "falls mache".
                  Für mich ist es teilweise schwer auf einem Blick zu sehen, dass es sich bei dem zweiten "falls mache" um eine UND Verknüpung handelt.

                  und wenn jetzt noch ein "UND" oder ein "ODER" dabei kommt ....... brrrr. Dann suche ich mir einen Ast, wie man das am besten umsetzt.
                  Vllt denke ich auch viel zu kompliziert, Noch 🙂

                  Habe mir mal ein paar Videos mit NodeRed angeschaut, aber das erscheint mir noch komplizierter.

                  BananaJoe Codierknecht 2 Replies Last reply Reply Quote 0
                  • BananaJoe
                    BananaJoe Most Active last edited by

                    @doppellhelix wir hatten hier schon mal einen Kollegen der aus der SPS Welt kam und alles in Schleifen abarbeiten wollte.

                    Das wichtigste hier an iobroker (und nodeJS / JavaScript) ist das man hier Ereignisorientiert arbeitet.
                    Die Datenpunkte sagen schon bescheid wenn etwas ist.

                    Meine alte Smarthome-Lösung war ein Raspberry Pi mit 32 Relais und 32 Eingängen welche ich in einer Endlosschleife immer Abfragen musste um zu erkennen wie denn was geschaltet ist.
                    Hohe Last auf dem Pi weil ist ja auch Arbeit.

                    Ich habe dann auf Shellys umgestellt - die waren eine Offenbarung! Die Dinger sagen einfach per MQTT bescheid wenn sich etwas ändert. Und reagieren sofort auf jeden Befehl über MQTT.
                    Dann kam iobroker mit dem gleichen Prinzp - die Daten aus den Shellys sind in Echtzeit einfach da (man Schaltet den Lichtschalter und sofort ändert sich der Datenpunkt in iobroker. Oder öffnet eine Tür und der ZigBee-Sensor meldet).

                    Und dann kam das nächste Coole: Man kann ein Skript einfach ein einen oder mehrere Datenpunkte hängen, sogar per Suchmaske (Selektor). Und das Skript macht nichts bis sich etwas ändert, arbeitet das ab und legt sich wieder schlafen.
                    Das fand ich Hammer!

                    Klar, ich habe auch ein paar Routinen die 1x die Minute etwas machen. Aber das ist die Ausnahme.

                    1 Reply Last reply Reply Quote 0
                    • BananaJoe
                      BananaJoe Most Active @Doppellhelix last edited by BananaJoe

                      @doppellhelix sagte in Anfänger - Wie mit Script beginnen:

                      Der Auslöser "Falls Objekt" und dann nochmal "falls mache".

                      Naja, du hast halt eine Menge Auswahl im Falls Objekt. Und du bekommst von diesem Trigger nicht nur den Wert zurück sondern das ganze Objekt.
                      Inklusive vorherigen Wert, Zeitstempel, wer das Objekt denn geändert hat.
                      800da36b-5273-430a-946a-4082660fd0b9-image.png 2a64f567-cc7e-45bf-b8d6-f3ade9b42610-image.png

                      Und du kannst die Reaktion weiter einstampfen, z.b. auf "ist größer als der letzte Wert" oder "Ist wahr"
                      Zur Übersicht: Es gibt auch den Falls Block wo man seitlich etwas anstöpseln kann:
                      4b339fb5-fad4-47c2-95b3-c0436e4a3a7a-image.png
                      Über das Zahnrad dann auch mehr als einen. Da kann man auch Textfelder draufziehen, z.B. mit dem Pfad des Datenpunktes. Oder den Pfad aus Textbausteinen zusammenbauen.

                      Cool ist auch die "bestätigte" und "unbestätigte" Änderung, damit kannst du leicht unterscheiden ob ein Wert nur gesetzt werden soll oder ob auch darauf reagiert werden soll.
                      Adapter setzen Werte immer bestätigt. Schreibst du in den gleichen Datenpunkt unbestätigt, weis der Adapter das er handeln muss.

                      Dein 2. Freund der Übersichtlichkeit ist die Rechte Maustastet und die Umschaltung zwischen
                      7c4e7ef8-d1e4-44a5-9c7a-7cfedb460951-image.png

                      interne Eingänge und externe Eingänge

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

                        @doppellhelix sagte in Anfänger - Wie mit Script beginnen:

                        Ich komme aus der SPS Welt.

                        Da muss man sich dann umgewöhnen. Wie @BananaJoe schon schriebt, läuft im ioBroker (fast) alles ereignisorientiert ab. Das kann eine Änderung an einem State sein, oder z.B. auch ein Zeitereignis.
                        GUI-Programme für Windows funktionieren übrigens genauso ... da passiert nix, solange nicht ein Ereignis eintritt. Mausklick auf einen Button, Mausbewegung, Tastatureingabe usw.
                        Das ist letzendlich auch deutlich ressourcenschonender als ständig irgendwelche Schleifen abzuarbeiten. Wozu sollte ein Programm etwas tun, wenn gerade nix zu tun ist`?

                        In der SPS Welt hat man eine einfachere Sprache

                        Ansichtssache. Wer in der großen Nicht-SPS-Welt eine (fast beliebige) Sprache beherrscht, findet sich da eigentlich sofort zurecht. SPS ist nicht die Regel, sondern eher die Ausnahme.

                        Proframmierung in FUP (Funktionsplan) kommt der Blockly Geschicht recht nahe.
                        Ist aber in der SPS Welt m.M. nah besser gelöst

                        Du musst Dich leider von Dingen wie Funktions- oder Ablaufplänen verabschieden. Fange an, ereignisorientiert an die Sache heranzugehen. Was ist der Auslöser (Trigger) und welche zusätzlichen Bedingungen müssen beim Eintritt desselben erfüllt sein, um etwas zu tun.

                        und wenn jetzt noch ein "UND" oder ein "ODER" dabei kommt ....... brrrr

                        Das ist die eigentliche Kunst. Nennt sich "bool'sche Algebra". Hat viel mit der einst so gehassten "Mengenlehre" zu tun. Das Problem hat man aber grundsätzlich mit allen modernen Sprachen. Egal ob Basic, C, Pascal, JavaScript etc.p.p.

                        By the way (zu Deinem Screenshot): In einem Trigger muss man den Wert des "triggernden" DP nicht nochmal lesen. Der Trigger kennt "seinen Wert" bereits (wie auch alle anderen Eigenschaften des State). Für sowas verwendet man den Block "Wert" aus dem Bereich "Trigger".
                        Vielleicht schaust Du Dir "Blockly für Dummies" nochmal an 😉

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

                        Support us

                        ioBroker
                        Community Adapters
                        Donate

                        911
                        Online

                        31.7k
                        Users

                        79.7k
                        Topics

                        1.3m
                        Posts

                        8
                        21
                        523
                        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