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

      Hi alle,

      ich versuche mich gerade das erste mal in Blockly.
      Leider finde ich es wenig intuitiv, bzw bei mir fällt der Groschen irgendwie nicht.

      Als erstes Projekt habe ich mir folgendes Szenario überlegt.

      Ich habe am TV eine FritzDect Steckdose, die mir den Stromverbrauch misst.
      Hinter dem TV steht eine AVM LED Lampe.

      Ich möchte, dass die LED Lampe abends bei Sonnentuntergang eingeschaltet wird, aber nur wenn der TV läuft.
      Oder morgens, vor Sonnenaufgang, wenn es noch dunkel ist und der TV läuft.
      Also kurz, wenn draussen Dunkel und TV ist an, dann LED Lampe an.

      Jetzt probiere ich schon seit Stunden, bzw Tage, wie das Script funktioniert.
      Genaugenommen, was ist der Auslöse oder Trigger?
      Ich suche den ersten Block

      Ist es Astro (Goldene Stunden)
      oder ist der Auslöser Falls Objekt (TV) über einen bestimmten Stromwert geht.

      Hier mal meine bescheidene Anfänge.

      Danke fürs anschubsen.

      Gruß HelixBildschirmfoto vom 2025-03-22 09-10-37.png

      E mickym Homoran paul53 MartinP 6 Replies Last reply Reply Quote 0
      • E
        emil70 @Doppellhelix last edited by

        @doppellhelix

        dein Trigger ist die Steckdose vom TV

        Versuchmal so

        Screenshot 2025-03-22 at 09-34-03 javascript - f5529c8310eb.png

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

          @doppellhelix vielleicht probierst du es mit NodeRed. vielleicht ist das intuitiver für dich.

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

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

            Leider finde ich es wenig intuitiv

            ist es eigentlich schon.

            du hast allerdings noch keine wirklich strukturierte Idee

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

            Ich möchte, dass die LED Lampe abends bei Sonnentuntergang eingeschaltet wird, aber nur wenn der TV läuft.

            das sollte so funktionieren wenn die richtigen Datenpunkte gewählt sind.

            Aber nun wirds ziemlich komplex

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

            Oder morgens, vor Sonnenaufgang, wenn es noch dunkel ist und der TV läuft.

            oder, oder und?

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

              @doppellhelix sagte: Ist es Astro (Goldene Stunden)
              oder ist der Auslöser Falls Objekt (TV) über einen bestimmten Stromwert geht.

              Beide Trigger werden benötigt:

              • Es wird dunkel und der TV läuft bereits (Astro-Trigger)
              • TV wird eingeschaltet und es ist dunkel (Strom-Trigger)

              Wie soll das Ausschalten erfolgen? Manuell oder automatisch (TV aus oder es wird hell)?

              Anmerkung: "Golden hour Ende" ist am Vormittag.

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

                @doppellhelix sagte: wenn draussen Dunkel und TV ist an, dann LED Lampe an.

                Vorschlag:

                Blockly_temp.JPG

                Wenn die Leistungsaufnahme des TV ständig schwankt, kann auf die Astro-Trigger verzichtet werden.

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

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

                  du hast allerdings noch keine wirklich strukturierte Idee

                  Dem stimme ich zu 100% zu 😊

                  Vielen Dank euch allen für die Hilfe.
                  Das sind genau die "Kleinigkeiten", womit mir das eingrooven spaß macht.
                  Wildes rumprobieren ist ohne einen schnellen Erfolg doch sehr frustrieren.

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

                    @doppellhelix Um eine "Spielwiese" für Tests zu haben, habe ich mir irgendwann ein paar Userdata - Datenpunkte angelegt...

                    b62c2eec-3fbc-4b39-837b-4e590d2df14a-grafik.png

                    Dafür habe ich dann einen Vis View angelegt, mit dem ich den Zustand der Test-States verändern kann, und Veränderungen durch das Skript auch sehe ...

                    Mit dieser Testumgebung kann ich dann Skripte ausprobieren, ohne echte Hardware durch falsche Programmierung zu gefährden...

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

                      @paul53

                      Hier habe ich noch zwei Fragen zu.

                      • Wo bekomme ich den Block "setzte" (Licht) her?
                        Finde den irgendwie nicht.

                      • was passiert in diesem Block "setze" genau?

                      Gruß Helix

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

                        @doppellhelix sagte: Wo bekomme ich den Block "setzte" (Licht) her?

                        Du musst erst die Variable Licht erstellen. Danach wird "setze Licht auf" angeboten.

                        Blockly_temp.JPG

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

                        was passiert in diesem Block "setze" genau?

                        Die Variable Licht erhält das Ergebnis der UND-Vernüpfung.

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

                          @paul53

                          Ok, ich konnte es umsetzen.

                          Wenn ich es vor mir sehen, ist es logisch. Aber selber drauf kommen....

                          Gibts ne Möglichkeit innerhalb von Blockly zu sehen, welche Bedingungen erfüllt sind?
                          Bei Scripten vom Typ Rules geht das ja.

                          1 Reply Last reply Reply Quote 0
                          • 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
                                            • First post
                                              Last post

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            910
                                            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