Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Blockly Skript für Gartenbewässerung - DutyCycle steigt

    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

    Blockly Skript für Gartenbewässerung - DutyCycle steigt

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

      Guten Morgen, hatte diese Woche leiger wenig Zeit mir das ganze nochmal anzuschauen.

      Habe nun heute Morgen das Skript optimiert und vieles in Funktionen ausgelagert - es ist nun deutlich übersichtlicher und Pflegeleichter geworden 🙂

      https://github.com/darkiop/iobroker.gar … omatik.xml

      Der Testdurchlauf heute Morgen war mal wieder Fehlerfrei (wie auch schon in der Vergangenheit, wenn man davor sitzt und beobachtet :))

      Was mich wundern, wieso kommen die Telegramm Nachrichten immer im 3-4, statt 1x ?

      Diese Nachrichten wurden bei einem kompletten Durchlauf ausgelöst:

      5671_2018-05-12_09_57_23-clipboard.png

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

        Heut Morgen wieder das negativ Beispiel, Innerer Kreis lief sauber mit einer Minute durch (08:01 Uhr), Äußerer Kreis ging an und aber nicht mehr aus = Duty Cycle rauscht nach oben. Um 08:09 Uhr habe ich dann manuell beendet.

        Das Skript muss sich an diesen Stellen ab und zu verschlucken, anders kann ich es mir nicht erklären. Bin allerdings auch mit meinem Latein am Ende …

        Liegt es evtl. an der Art und Weise wie ich die Timer verschachtelt habe? Wenn hier jemand eine andere Idee hat wie man das lösen kann, das die 3 Kreise nacheinander laufen und abschalten, habe ein offenes Ohr 😄

        5671_2018-05-13_08_08_50-clipboard.png

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

          @darkiop:

          Liegt es evtl. an der Art und Weise wie ich die Timer verschachtelt habe? Wenn hier jemand eine andere Idee hat wie man das lösen kann, das die 3 Kreise nacheinander laufen und abschalten, habe ein offenes Ohr 😄 `
          Ein offenes Ohr reicht nicht. Man muss auch offene Augen haben und lesen 😉

          Wie schon mal geschrieben…..

          Timer mit Variablen funktionieren NICHT (mehr).

          Nur schalten wenn notwendig.

          Ein Schaltbefehl zu einem Aktor wird IMMER gesendet. Egal ob notwendig oder nicht.

          Wenn man 1000mal eine eine Lampe einschaltet obwohl sie schon eingeschaltet ist werden trotzdem 1000 Einschaltbefehle gesendet.

          Und der DutyCycle schießt nach oben.

          Vorher den aktuellen Status abfragen hilft da enorm.

          Z.B.

          Ausschalten:

          Falls STATUS = TRUE

          mache STATUS =FALSE

          Einschalten:

          Falls STATUS = FALSE

          mache STATUS =TRUE

          An Deiner Stelle würde ich das Konzept nochmal überdenken und neu anfangen.

          Versuche doch mal Dein Projekt hier in Worten zu beschreiben.

          Grüße

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

            Hey 🙂

            Ich hatte deinen Hinweis bzgl. des Timers gelesen, allerdings fehlt mir grad die Idee wie ich das anders lösen soll. Und da es ab und zu funktionierte, hatte ich da auch dran festgehalten … 🙂

            Gegeben ist:

            • 2 Ventile für die Rasenbewässerung

            • 1 Ventil für die Strauchbewässerung (Tropsschlauch)

            • Geschaltet über einen HM 4-fach Aktor.

            Vorgestellt habe ich mir die Steuerung so:

            • Allgemeiner Ein- /Ausschalter in VIS

            • Bewässerungstage sind über VIS einstellbar

            • getrennte Laufzeit für Rasen und Sträucher

            • Startzeit über VIS einstellbar

            • Einstellbar über VIS welche Kreise in der Automatik berücksichtigt werden sollen

            • Diverse andere Unterschiedliche Variablen die den Start der Beregnung beeinflussen (aktuell Regen / Regenvorhersage, ggf. Bodenfeuchte, Wind, …)

            Bzgl. des "nur schalten wenn notwendig", dachte ich, ich hätte das mit meiner "Bewaesserung_ist_aktiviert" Variable gelöst. Ist dies nicht so?

            So das Konzept bzw. meine Idee. Das Programm sollte dann ein nach dem anderen Kreis abarbeiten (eben je nach Integration in die Automatik -> VIS). Wenn ich jetzt eine Laufzeit von 10min über VIS für die beiden Rasenkreisläufe parametriere, darf der zweite Kreislauf ja erst nach diesen 10min aktiviert werden (Grund: Wasserdruck, ich muss einen Kreis nach dem anderen öffnen).

            Wie kann ich das mit dem vorgegeben Wert aus VIS entsprechend Verzögern (eben ohne den Timer + Variable)?

            Danke und noch einen schönen Sonntag!

            Grüße Thorsten

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

              @darkiop:

              Ich hatte deinen Hinweis bzgl. des Timers gelesen, allerdings fehlt mir grad die Idee wie ich das anders lösen soll. Und da es ab und zu funktionierte, hatte ich da auch dran festgehalten … 🙂 `
              Du scheinst mit einer sehr alten JavaScript Version zu arbeiten. In Deinem Code werden die Variablen noch eingesetzt.

              Aktuell wird das nicht mehr unterstützt!

              @darkiop:

              Bzgl. des "nur schalten wenn notwendig", dachte ich, ich hätte das mit meiner "Bewaesserung_ist_aktiviert" Variable gelöst. Ist dies nicht so? `
              Nun "Bewaesseung_ist_aktiv" ist ja wohl für längere Zeit aktiv. Und in dieser Zeit wird geschaltet ob notwendig oder nicht.

              Die anderen Sachen schaue ich mir noch mal an.

              Da ich zurzeit zeitlich zu 150% eingespannt bin kann es aber etwas dauern.

              Grüße

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

                Der iobroker läuft in einem Docker Container auf ner Synology DS 918.

                Der js-controller mit der Version 1.4.2., nodejs mit 6.14.2 und npm mit 3.10.10

                Also sollte ich bzgl. "Bewaesseung_ist_aktiv" die Schaltfunktion an die Aktoren nochmal in ein if packen.

                Edit: Bzgl. der alten Version - ich habe die Variable von Handreingeschrieben, nicht das Puzzlestück. Hatte ich so irgendwo im Forum gesehen 🙂

                Danke für deine Hilfe,

                Grüße

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

                  @darkiop:

                  Also sollte ich bzgl. "Bewaesseung_ist_aktiv" die Schaltfunktion an die Aktoren nochmal in ein if packen. `
                  Jepp

                  Und welche Version hat Dein "Script Engine" Adapter? (Bei mir v3.6.4)

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

                    Hier auch die 3.6.4

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

                      @darkiop:

                      Hier auch die 3.6.4 `
                      Wenn ich Dein Script importiere werden die Variablen auch übernommen.

                      Lege bitte mal ein neues Blockly an.
                      147_beispiel.png

                      Grüße

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

                        Beide Logs werden sofort nach Skriptstart ausgegeben:

                        5671_2018-05-13_21_30_47-clipboard.png

                        5671_2018-05-13_21_31_19-clipboard.png

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

                          @darkiop:

                          Beide Logs werden sofort nach Skriptstart ausgegeben: `

                          Ja weil das nicht mehr funktioniert.

                          Wenn Du Dir den Code anschaust wirst Du sehen das "NaN" eingesetzt wird anstatt die Variable "Zeit".

                          timeout = setTimeout(function () {
                            console.log('***Ende');
                          }, NaN);
                          
                          

                          Dein Blockly muss schon "etwas" älter sein 😉

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

                            Guten Morgen,

                            stimmt auch hier NaN 🙂

                            Aber Blockly wird doch mit der Script Engine aktualisiert oder?

                            5671_2018-05-14_07_00_55-clipboard.png

                            EDIT:

                            Mir ist gerade aufgefallen, das NaN wird im Code nur gesetzt wenn man als Einheit Minuten oder Sekunden wählt. Bei MS wird die Variable auch im Code übernommen.

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

                            Support us

                            ioBroker
                            Community Adapters
                            Donate

                            878
                            Online

                            31.7k
                            Users

                            79.9k
                            Topics

                            1.3m
                            Posts

                            4
                            21
                            3805
                            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