Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. "einfaches" Blockly-Script zur Bewässeungssteuerung

    NEWS

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

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    "einfaches" Blockly-Script zur Bewässeungssteuerung

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

      geht ist ja cool das wuste ich auch noch nicht, also anstatt von ms name der variable eingeben. Variable dan per vis setzen:
      979_timer_variable.jpg

      ~Dutch 8-)

      Edit: Docu auf GIT hinzugefuegt und pull request erstellt: https://github.com/ioBroker/ioBroker.javascript/pull/29

      DutchmanNL created this issue in ioBroker/ioBroker.javascript

      closed Add description to use variable in timeout to documentation #29

      1 Reply Last reply Reply Quote 0
      • rantanplan
        rantanplan last edited by

        @Dutchman:

        geht ist ja cool das wuste ich auch noch nicht, also anstatt von ms name der variable eingeben. Variable dan per vis setzen: `

        Hallo

        War mir auch neu, dass das so geht.

        Würde ich allerdings nicht so offiziell machen. Das ist bestimmt nicht so gewollt und mit Vorsicht zu gebrauchen.

        1. Das geht nur mit lokalen Variablen

        2. Der Variablenname hat Einschränkungen!!

        "MyVar" -> geht.

        "MyVar01" -> geht

        "MyVar_01" -> geht

        "MyVar-01" -> !!!!!! FEHLER !!!!!

        Andere Kombis habe ich noch nicht getestet.

        Der TE möchte die Zeiten über VIS einstellen.

        Über VIS kann man aber nicht auf lokale Variablen zugreifen.

        Wenn er dieses undokumentierte "Feature" benutzen möchte, muss er den Umweg über globale Variaben/Objekte machen.
        147_test.png

        Grüße

        1 Reply Last reply Reply Quote 0
        • rantanplan
          rantanplan last edited by

          @Dutchman:

          Edit: Docu auf GIT hinzugefuegt und pull request erstellt: https://github.com/ioBroker/ioBroker.javascript/pull/29 `

          Hallo Dutchman

          Finde ich gefährlich soetwas direkt in die offizielle Doku zu übernehmen.

          Grüße

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

            ahh… somit könnte ich die Dauer der Beregnung dann im Vis festlegen (würde ja mit einem Schieberegler gehen, so wie bei den Rollläden)

            müsste ich ja für jeden Kreislauf separat ein Script anlegen, richtig? Die Dauer in Milisekunden könnte man ja mit einer Formel umrechnen.

            In die Scripte für die Automatik und den manuellen Gebrauch könnte man ja noch nnifügen, dass ein Objekt(Datenpunkt) geändert wird in dem das Datum und Uhrzeit der letzen Auslösung dokumentiert wird ein Objekt für die gesamte Dauer an einem Tag... sollte doch machbar sein, oder?

            1 Reply Last reply Reply Quote 0
            • rantanplan
              rantanplan last edited by

              @sveni_lee:

              müsste ich ja für jeden Kreislauf separat ein Script anlegen, richtig? `
              Nicht unbedingt. Kommt auf die Komplexität an.

              Dein Beispiel, würde ich in einem Blockly-Script lassen.
              @sveni_lee:

              Die Dauer in Milisekunden könnte man ja mit einer Formel umrechnen. `
              Jepp, würde ich aber in eine Funktion auslagern.

              Wäre übersichtlicher, weil es in Deinem Script mehrmals benutzt würde.
              @sveni_lee:

              In die Scripte für die Automatik und den manuellen Gebrauch könnte man ja noch nnifügen, dass ein Objekt(Datenpunkt) geändert wird in dem das Datum und Uhrzeit der letzen Auslösung dokumentiert wird ein Objekt für die gesamte Dauer an einem Tag… sollte doch machbar sein, oder? `
              Wenn da noch mehr unterschiedliche Logiken rein sollen, stellt sich natürlich wieder die Frage nach separaten Blocklys.

              Grüße

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

                Ich denke ich sollte das Wort einfach aus meinem Wortschatz und dem Betreff hier streichen. 😄

                Um so mehr ich darüber nachdenke, um so größer werden meine Anforderungen und Vorstellungen.

                Da man bei einer reinen Zeitsteuerung nicht von Automatik sprechen kann nenne ich das jetzt mal Semi-Automatik.

                meine jetzigen Überlegungen:

                <u>Semi-Automatik:</u>

                • zwei Kreisläufe nacheinander steuern

                • zu einer bestimmten Zeit (a) einschlten

                • für eine bestimmte dauer (b) laufen

                • a & b in Vis definierbar

                • Zeitpunkt der Einschaltung protokolieren und einem Objekt zuweisen

                • Dauer der Einschaltung protokolieren und einem Objekt zuweisen (ggf. aufrechnen)

                • Restlaufzeit anzeigen und einem Objekt zuweisen (counter)

                • möglichkeit der Unterbrechung

                • Zeitpunkt der nächsten geplanten Einschaltung einem Objekt zuweisen

                <u>manuelle Schaltung:</u>

                • Einschalten mit auswahl Dauer bzw. nur ON (ähnlich Rollladenschalter)

                • Zeitpunkt der Einschaltung protokollieren

                • Dauer der Einschaltung protokollieren und einem Objekt zuweisen (ggf. aufrechnen)

                • Restlaufzeit anzeigen und einem Objekt zuweisen (counter)

                • möglichkeit der Unterbrechung

                ist das, wenn auch mit viel Aufwand, umsetzbar?

                Gruß

                Sveni_Lee

                1 Reply Last reply Reply Quote 0
                • rantanplan
                  rantanplan last edited by

                  @sveni_lee:

                  Ich denke ich sollte das Wort einfach aus meinem Wortschatz und dem Betreff hier streichen. 😄 `
                  Ja, das ist schon ein Projekt! 😉 Aber machbar.

                  Je nachdem was Du mit den ganzen Protokollierungen willst, würde ich mir mal "History" u.ä. anschauen.

                  Man muss das Rad ja nicht 2x erfinden.

                  Mach doch einfach einen neuen Thread auf "[Projekt] Blockly - Bewässerungssteuerung"

                  Das könnte auch andere Interessieren. Und Hilfe wird bestimmt kommen.

                  Grüße

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

                    War ja nur gut gemeint mit der docu [emoji6]

                    Ich habe die Karte in trello Mal zurück auf testen geholt.

                    Damit halt doch weiter testen, was geht wohl/nicht eventuell doch fix.

                    Danach die Frage ob das in die docu gehört oder einer how to.

                    Wie erstelle ich mir timer mit Zeit als Variable | wie setze ich die Variable (state/object) | besser practises wie Funktion umrechnen ms > sec > mm und Wiedergabe in mm:ss zb

                    Wäre ne coole how to und Beispiel!

                    ~Dutch

                    –-----------------------

                    Send from mobile device

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

                      @rantanplan:

                      Mach doch einfach einen neuen Thread auf "[Projekt] Blockly - Bewässerungssteuerung"

                      Das könnte auch andere Interessieren. Und Hilfe wird bestimmt kommen.

                      Grüße `

                      werde ich dann auch machen…

                      eine Kurze Frage noch. Als Widget müsste ich ja eines mit Diqalog mehmen damit ich eine Auswahl treffen kann. Das hatte ich gerstern Abend auch probiert. ging auch ich hatte den Bereich 0-60 eingestellt und min als Einheit. Bei 25% wurden dann 15min angezeigt, passt also. Kann ich irgendwo Ändern, das nicht 25% sondern direkt 15min angezeigt werden?

                      Habe ich das richtig verstanden, Ich muß einen Objekt anlegen, dass Widget verweist dann auf das Objekt und es wird der Wert x gesetzt. Aber wie kann ich dann gleichzitig das script starten und wie müsste ich das Script anfangen... Ich habe irgendwie keinen passenden "ersten Baustein gefunden"...

                      1 Reply Last reply Reply Quote 0
                      • rantanplan
                        rantanplan last edited by

                        @sveni_lee:

                        eine Kurze Frage noch. Als Widget müsste ich ja eines mit Diqalog mehmen damit ich eine Auswahl treffen kann. Das hatte ich gerstern Abend auch probiert. ging auch ich hatte den Bereich 0-60 eingestellt und min als Einheit. Bei 25% wurden dann 15min angezeigt, passt also. Kann ich irgendwo Ändern, das nicht 25% sondern direkt 15min angezeigt werden? `
                        Der Widget Name wäre hilfreich.

                        Das "jqui Select ValueList" ist recht flexibel.

                        Feld Werte: 10;20;30…...

                        Feld Texte: 10 Min;20 Min;30 Min........

                        @sveni_lee:

                        Habe ich das richtig verstanden, Ich muß einen Objekt anlegen, dass Widget verweist dann auf das Objekt und es wird der Wert x gesetzt. Aber wie kann ich dann gleichzitig das script starten und wie müsste ich das Script anfangen… Ich habe irgendwie keinen passenden "ersten Baustein gefunden"... `
                        Bei Deinem Beispiel leuchtet mir nicht ganz ein, warum Du auf die Änderung Deiner "Zeit-Variablen" reagieren möchtest.

                        Wenn Du das tun möchtest dann: "Falls Objekt <objekt id/deiner/variablen="">wurde geändert"…....

                        Ich habe es hier im Forum schon häufiger erklärt.

                        Aber nochmal in Kürze.

                        Blocklys/Scripte reagieren/starten in der Regen auf Ereignisse (Trigger).

                        WICHTIG!

                        Reagiert ein Trigger auf seine Bedingung, werden die Befehle INNERHALB des Triggers EINMAL von oben nach unten abgeabeitet.

                        Danach wartet der Trigger wieder auf seine Bedingung.

                        Grüße</objekt>

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

                          @rantanplan:

                          Der Widget Name wäre hilfreich.

                          Das "jqui Select ValueList" ist recht flexibel.

                          Feld Werte: 10;20;30…...

                          Feld Texte: 10 Min;20 Min;30 Min........ `

                          hab ich grad leider nicht zur Hand aber werde ich mir später ansehen, welcher das ist/war

                          @rantanplan:

                          Bei Deinem Beispiel leuchtet mir nicht ganz ein, warum Du auf die Änderung Deiner "Zeit-Variablen" reagieren möchtest.

                          Wenn Du das tun möchtest dann: "Falls Objekt <objekt id/deiner/variablen="">wurde geändert"…....</objekt> `

                          möchte ich ja im Grunde gar nicht…

                          mit dem Widget wird das Script aufgerufen und die Zeitvariable übergeben...

                          hatte ich mich falsch ausgedrückt.

                          @rantanplan:

                          Ich habe es hier im Forum schon häufiger erklärt.

                          Aber nochmal in Kürze.

                          Blocklys/Scripte reagieren/starten in der Regen auf Ereignisse (Trigger).

                          WICHTIG!

                          Reagiert ein Trigger auf seine Bedingung, werden die Befehle INNERHALB des Triggers EINMAL von oben nach unten abgeabeitet.

                          Danach wartet der Trigger wieder auf seine Bedingung. `

                          also:

                          Wert meiner <objekt id/actor="">auf WAHR setzen

                          –-> Ausführen Timeout <zeit variable/aus/widget="">---> Wert meiner <objekt id/actor="">auf FALSE setzen

                          habe ich das so jetzt richtig verstanden...

                          Gruß

                          Sveni_Lee</objekt></zeit></objekt>

                          1 Reply Last reply Reply Quote 0
                          • rantanplan
                            rantanplan last edited by

                            @sveni_lee:

                            möchte ich ja im Grunde gar nicht…

                            mit dem Widget wird das Script aufgerufen und die Zeitvariable übergeben... `
                            Mit dem Widget musst Du kein Script aufrufen.

                            Das Widget ändert den Inhalt Variable direkt.

                            Wenn Du über ein Widget eine Lampe ein/aus schaltest, machst Du das ja auch nicht über ein Script.

                            @sveni_lee:

                            also:

                            Wert meiner <objekt id/actor="">auf WAHR setzen

                            –-> Ausführen Timeout <zeit variable/aus/widget="">---> Wert meiner <objekt id/actor="">auf FALSE setzen

                            habe ich das so jetzt richtig verstanden...</objekt></zeit></objekt> `
                            Fast.

                            Es gibt keine direkte Verbindung von Blockly zu VIS/Widget.

                            Du legst ja eine ioBroker Objekt/Variable an.

                            Widget -> ändert Zeit Variable

                            Blockly arbeitet mit "Wert von Objekt ID Zeit Variable".

                            Wert meiner <objekt id/actor="">auf WAHR setzen

                            –-> Ausführen Timeout <zeit variable="">---> Wert meiner <objekt id/actor="">auf FALSE setzen

                            So sieht es richtiger aus.

                            Grüße</objekt></zeit></objekt>

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

                              so, ich habe gerstern abend noch mal ein bischen gespielt aber irgendwie komme ich nicht weiter…

                              Ich verwende folgendes widget: jqui-mfd - Custom10 + jqui Dialog.

                              hier habe ich max auf 60 und min auf 0 gesetzt. als Winheit habe ich dann "min" eingegeben.

                              im jqui wird das auch korrekt angezeigt also 25% - 15min.

                              soweit so gut...

                              Ich habe mir mal einen sehr einfachen Ablaufplan erstellt.

                              Das sollte beim Einschalten/Betätigen des Widgets passieren...

                              wenn das steht müsste noch die mit übergebene Variable der dauer eingebaut werden...
                              2712_bew_sserungsablauf.jpg

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

                                @sveni_lee:

                                so, ich habe gerstern abend noch mal ein bischen gespielt aber irgendwie komme ich nicht weiter…

                                Ich verwende folgendes widget: jqui-mfd - Custom10 + jqui Dialog.

                                hier habe ich max auf 60 und min auf 0 gesetzt. als Winheit habe ich dann "min" eingegeben.

                                im jqui wird das auch korrekt angezeigt also 25% - 15min.

                                soweit so gut...

                                Ich habe mir mal einen sehr einfachen Ablaufplan erstellt.

                                Das sollte beim Einschalten/Betätigen des Widgets passieren...

                                wenn das steht müsste noch die mit übergebene Variable der dauer eingebaut werden... `

                                Piste mal dein skript (een blockly bitten eine export) und widget

                                ~Dutch

                                –-----------------------

                                Send from mobile device

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

                                  Ja genau da liegt ja mein Problem.

                                  Ein Skript beginnt ja immer mit einem Trigger… Bei einem Zeitgesteuerten Ablauf ist das einfach.

                                  Aber auf was müsste ich den Trigger in diesem Fall setzen und welches Objekt gebe ich denn im

                                  Widget an?

                                  Gruß

                                  Sveni_lee

                                  1 Reply Last reply Reply Quote 0
                                  • rantanplan
                                    rantanplan last edited by

                                    Sollen die beiden Pumpen nie gleichzeitig laufen?

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

                                      Nein, es dürfen nicht beide Ventile gleichzeitig geöffnet sein…

                                      1 Reply Last reply Reply Quote 0
                                      • rantanplan
                                        rantanplan last edited by

                                        @sveni_lee:

                                        Nein, es dürfen nicht beide Ventile gleichzeitig geöffnet sein… `
                                        OK, dann habe ich Deinen Ablaufplan (fast) verstanden.

                                        Sollen die denn über einen bestimmten Tagesabschnitt, z.B. 05:45 bis 17:00 Uhr, im Wechsel für eine Laufzeit von x Minuten laufen?

                                        Oder soll einmalig um 05:45 Pumpe-1 x-Minuten laufen und danach Pumpe-2 y-Minuten und dann Bewässerung Ende?

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

                                          @rantanplan:

                                          OK, dann habe ich Deinen Ablaufplan (fast) verstanden.

                                          Sollen die denn über einen bestimmten Tagesabschnitt, z.B. 05:45 bis 17:00 Uhr, im Wechsel für eine Laufzeit von x Minuten laufen?

                                          Oder soll einmalig um 05:45 Pumpe-1 x-Minuten laufen und danach Pumpe-2 y-Minuten und dann Bewässerung Ende? `

                                          Das soll später mal kommen als Semi-Automatik…

                                          in diesem Fall geht es um das "simple" Einschalten für x-Minuten und das nach meinem Ablaufplan...

                                          darum müsste ich ja irgendwie das "widget" Triggern bzw ein eigens dafür angelegtes Objekt.

                                          1 Reply Last reply Reply Quote 0
                                          • rantanplan
                                            rantanplan last edited by

                                            @sveni_lee:

                                            in diesem Fall geht es um das "simple" Einschalten für x-Minuten und das nach meinem Ablaufplan…

                                            darum müsste ich ja irgendwie das "widget" Triggern bzw ein eigens dafür angelegtes Objekt. `

                                            Also willst Du die Bewässerung manuell über VIS einschalten.

                                            Dann brauchst Du eine boolsche Variable "Bewaesserung" Wahr = Ein / unwahr = Aus.

                                            (Da gibt es etliche Widgets die eine Variable wahr/unwahr schalten)

                                            Diese Variable musst Du dann triggern.

                                            Falls Objekt ID <bewaesserung>gleich wahr

                                            Damit würde Dein Ablauf gestartet, sobald Du über VIS diese Var auf wahr setzt.

                                            Am Ende des Scripts: "steuere Wert von <bewaesserung>= unwahr"

                                            Dann kannst Du auch in VIS sehen ob die Bewässerung aktiv ist oder nicht.

                                            Noch eine Frage. Nach dem Starten sollen BEIDE Pumpen x-Minuten laufen, aber NICHT zusammen.

                                            Und je Pumpe gibt es unterschiedliche Laufzeiten.</bewaesserung></bewaesserung>

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

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            457
                                            Online

                                            31.7k
                                            Users

                                            79.8k
                                            Topics

                                            1.3m
                                            Posts

                                            3
                                            37
                                            5916
                                            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