Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. ioBroker Allgemein
    4. Kontrolle über Skripte

    NEWS

    • Wir empfehlen: Node.js 22.x

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker goes Matter ... Matter Adapter in Stable

    Kontrolle über Skripte

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

      Ich nutze IOBroker nun eine ganze Zeit und habe auch schon ein paar Dinge automatisiert. Was mir aktuell fehlt, ist die Kontrolle über die Skripte, also das manuelle Starten, das Live-Monitoren und das eventuelle Abbrechen der Skripte (so, als ob ich ein Skript auf einer Linux-Shell aufrufe).

      Der Hintergrund ist folgender: Ich habe meine Gartenbewässerung automatisiert mit vier Gardena-Ventilen, die jeweils über Shelly 1 gesteuert werden. Ich würde jetzt gerne die Bewässerung manuell starten und dann ggf. vor dem Start individuell die Dauer anpassen (z.B. Channel 1: 30 Minuten, Channel 2: 20 Minuten etc.) und dann würde ich (z.B. über Debug-Ausgaben) mir die Restlaufzeiten gerne anzeigen lassen und ein Skript ggf. auch unter- oder abbrechen.

      Wie mache ich das? Oder können Skripte nur über Trigger gestartet werden?

      htrecksler 1 Reply Last reply Reply Quote 0
      • htrecksler
        htrecksler Forum Testing @MaTr75 last edited by

        @matr75 Scripte werden nicht gestartet, die laufen einfach und reagieren auf Trigger. In deinem Fall musst du dir einen eigenen Datenpunkt anlegen und diesen in deinem Script als Trigger verwenden. Dann hast du Einfluss auf den Startzeitpunkt.
        Aber das was du da vorhast ist schon ein sehr komplexes Script. Bist du sicher das du das angehen willst? Es gibt einen Adapter, der das so ähnlich realisiert hat. Such mal nach Gartenbewässerung

        M 1 Reply Last reply Reply Quote 0
        • M
          MaTr75 @htrecksler last edited by

          @htrecksler Keine Ahnung, ob ich das umsetzen will, ich bin noch in der Situation, dass ich verstehen möchte, wie das alles funktioniert.

          Also das manuelle Starten eines Skriptes ist im IOBroker so erstmal nicht vorgesehen, das verstehe ich so richtig? D.h. ich müsste mir Datenpunkte anlegen, in die ich die jeweiligen Werte eintrage und über einen Start-Datenpunkt (auf true setzen) könnte ich das Script starten.

          Aber wie kann ich ein laufendes Script stoppen? Wenn die Bewässerung losläuft und ich merke, die Gartenparty läuft noch, kann ich zwar den Stecker aus der Pumpe ziehen, das wäre aber sehr unsmart 😳 Kann ich einem laufenden Script ein kill senden? Noch besser ein "beende dich sinnvoll", also schließe alle Ventile und schalte die Pumpe aus?

          Thomas Braun htrecksler 2 Replies Last reply Reply Quote 0
          • Thomas Braun
            Thomas Braun Most Active @MaTr75 last edited by

            @matr75

            Kann ich einem laufenden Script ein kill senden?

            Wozu? Einfach das Skript entsprechend aufbauen. Wenn der Trigger wieder auf false geht werden die Ventile geschlossen, z.B.

            1 Reply Last reply Reply Quote 0
            • htrecksler
              htrecksler Forum Testing @MaTr75 last edited by

              @matr75 sagte in Kontrolle über Skripte:

              Aber wie kann ich ein laufendes Script stoppen?

              du stoppst ein Script nicht. Genausowenig wie du es startest. Du sorgst in deinem Code dafür das es auf die Anweisung von Außen reagiert. Das geht am einfachsten über manuelle Datenpunkte.
              So hast du z. B. einen Datenpunkt "Abbruch". Und auf den reagierst du in deinem Script in der Form das du das Ventil (auch ein Datenpunkt) ausschaltest.

              htrecksler 1 Reply Last reply Reply Quote 0
              • htrecksler
                htrecksler Forum Testing @htrecksler last edited by htrecksler

                @htrecksler ich bin aktuell dabei mir ein solches Script zu schreiben. Das Ganze für 6 Bewässerungskreise. Es sind inzwischen 3 Scripte geworden (damit es übersichtlich bleibt) Das Hauptscript hat inzwischen fast 600 Zeilen Code.
                Aber im Prinzip soll es das machen was du beschrieben hast. Allerdings prüft es dann auch noch die Bodenfeuchtigkeit (2 Sensoren) und die zu erwartende Regenmenge, etc.

                Ich will damit nur sagen...das Thema ist sehr komplex.

                edit: So in etwa stell ich mir dann die View vor
                View.PNG

                M 1 Reply Last reply Reply Quote 0
                • M
                  MaTr75 @htrecksler last edited by

                  @htrecksler @THOMAS BRAUN

                  danke für eure Beiträge, das habe ich jetzt besser verstanden. In Blockly habe ich eben gesehen, dass es "wiederhole (solange)"-Bausteine gibt, die man dafür wird nutzen können.

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

                    @matr75 sagte: dass es "wiederhole (solange)"-Bausteine gibt, die man dafür wird nutzen können.

                    Den Block solltest Du besser nicht verwenden, denn Anfänger erzeugen damit meist eine Endlosschleife.
                    Verwende Trigger zum Starten und Stoppen von Vorgängen! Javascript arbeitet nicht zyklisch, sondern wird durch Ereignisse gesteuert.

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

                      @paul53 OK... ich dachte, ich hätte es verstanden. Habe ich offenbar nicht. Wie sieht den ein Trigger aus, um einen "Vorgang" zu stoppen?

                      Das war ja meine ursprüngliche Frage, wie ich von außen ein Skript beenden kann... OK, es ist nicht das Skript, dass ich beende sondern ein Prozess innerhalb des Skripts, also ich beende einen Block, der über einen Trigger gestartet wurde. Wie kann ich den durch einen anderen Trigger beenden? Mit einer while-Schleife innerhalb des Blocks hätte ich es verstanden...

                      htrecksler paul53 Homoran 3 Replies Last reply Reply Quote 0
                      • htrecksler
                        htrecksler Forum Testing @MaTr75 last edited by

                        @matr75 du beendest auch keinen Prozess. Du setzt am Anfang einen Datenpunkt auf True (Ventil offen) und dann entweder manuell oder über einen Timer wieder auf FALSE.
                        Das ist im Prinzip (vereinfacht) alles.

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

                          @matr75
                          Prinzip:

                          Bild_2021-04-11_172326.png

                          Wert ist der Wert des Trigger-Datenpunktes ("Bewässerung ein").

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

                            @matr75 sagte in Kontrolle über Skripte:

                            Habe ich offenbar nicht. Wie sieht den ein Trigger aus, um einen "Vorgang" zu stoppen?

                            Ich versuch es auch mal es dir zu erklären.

                            javascript arbeitet ereignisbasiert.

                            Ein Skript "existiert" einfach und wartet dass es einen Auftrag bekommt etwas zu tun, arbeitet es dann ab und wartet wieder....

                            Das ist im Prinzip das, was du unter starten und stoppen des Skripts verstehst.

                            Beispiel Lampe:
                            Trigger soll ein Helligkeitssensor sein, der regelmäßig seine Werte sendet.
                            jede dieser Sendungen löst den Trigger aus.
                            Die folgende Logik überprüft, ob die Helligkeit kleiner als ein angegebener Wert ist.
                            Ist sie das, macht das Skript das Licht an
                            ist sie das nicht, macht das Skript nichts.

                            Um zu der Frage zurückzukommen:
                            Wie stoppe ich das Licht 😉

                            Dann musst du die Logik ein wenig aufbohren und beim Anschalten eine Variable auf true setzen und diese Variable ebenfalls in der Logik abfragen.

                            Wenn also draußen die Helligkeit den Schwellwert wieder überschreitet und die Variable Licht an true ist, mache das Licht wieder aus und setze die Variable auf false

                            in einfachen Fällen kann man auch in der Logik mit "Falls Helligkeit zu klein mache Licht an und sonst mache aus" arbeiten

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

                              @paul53 Ok... der Trigger "Wert" innerhalb des Trigger-Blocks "Falls Objekt wurde geändert"... das hat mir gefehlt. Da werde ich jetzt mal ein wenig mit herumspielen.

                              Ich danke euch allen für eure Hilfe und Geduld 🙂

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

                              Support us

                              ioBroker
                              Community Adapters
                              Donate
                              FAQ Cloud / IOT
                              HowTo: Node.js-Update
                              HowTo: Backup/Restore
                              Downloads
                              BLOG

                              729
                              Online

                              32.0k
                              Users

                              80.5k
                              Topics

                              1.3m
                              Posts

                              5
                              13
                              499
                              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