Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. JavaScript
    5. Gartenbewässerung (später dann Dauer über Jarvis einstellen)

    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

    Gartenbewässerung (später dann Dauer über Jarvis einstellen)

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

      Liebe Gemeinde,
      ich stehe etwas auf dem Schlauch, weil ich zwar einfaches Javascript hinbekomme, mich aber noch sehr schwer bei komplexen Fragestellungen tue.
      Ich habe 6 Kreisläufe (Homematic Schaltaktor), die abends (gegen 20:15 Uhr) nacheinander für eine bestimmte Zeit (20 Minuten und später dann über Jarvis einstellen...) laufen sollen.
      Dann soll je nach Regenmenge gestern und heute, aktuell Regen und starkem Wind die Sprenger aus- oder gar nicht erst angehen.
      Hat da vielleicht schon jemand mal sowas gebastelt oder hilft mir Schritt für Schritt?
      Vielen herzlichen Dank!

      crunchip T paul53 3 Replies Last reply Reply Quote 0
      • crunchip
        crunchip Forum Testing Most Active @Luebke69 last edited by

        @luebke69 guck mal in diesen Thread, vllt ist etwas brauchbares dabei

        L 1 Reply Last reply Reply Quote 0
        • L
          Luebke69 @crunchip last edited by

          @crunchip Cool. Danke für den schnellen Hinweis.
          Das sehe ich mir mal genauer an. Aber hoffentlich kommt noch mehr aus der Community...

          1 Reply Last reply Reply Quote 0
          • T
            tritor @Luebke69 last edited by

            @luebke69
            Ich hab mir auch was selbst gestrickt. Sehr simpel mit eingeschränkter Funktionalität.
            Hier in dem Thread kannst mal nachsehen, ob das deinen Anforderungen gerecht wird.

            L 1 Reply Last reply Reply Quote 0
            • L
              Luebke69 @tritor last edited by

              @tritor So simple finde ich das gar nicht... Danke!

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

                @luebke69 sagte: gegen 20:15 Uhr) nacheinander für eine bestimmte Zeit (20 Minuten und später dann über Jarvis einstellen...) laufen sollen.
                Dann soll je nach Regenmenge gestern und heute, aktuell Regen und starkem Wind die Sprenger aus- oder gar nicht erst angehen.

                Version mit gleicher Dauer für alle 6 Ventile und mit Datenpunkten für "genug Regen", "aktuell Regen" und "starkem Wind".

                const idDauer = '0_userdata.0.Garten.Bewaesserung.Dauer'; // Dauer pro Ventil in Minuten 
                const idRegen = '...'; // es regnet
                const idFeucht = '0_userdata.0.Garten.Bewaesserung.Boden_feucht'; // heute, gestern war genug Regen
                const idSturm = '0_userdata.0.Garten.Bewaesserung.Sturm'; // Starker Wind
                
                const ids = [
                    '', // Platz für ID des gerade offenen Ventils
                    'id1', 
                    'id2',
                    'id3',
                    'id5',
                    'id5',
                    'id6'
                ];
                
                var ventil = 0; // kein Ventil offen
                
                var dauer = 60000 * getState(idDauer).val;
                on(idDauer, function(dp) {
                    dauer = 60000 * dp.state.val;
                });
                
                var timer = null;
                
                function ventile() {
                    if(ids[0]) setState(ids[0], false); // Ventil schließt
                    ventil++;
                    if(ventil <= 6) {
                        setState(ids[ventil], true); // Ventil öffnet
                        ids[0] = ids[ventil];
                        timer = setTimeout(ventile, dauer);
                    } else {
                        ventil = 0;
                        ids[0] = '';
                        timer = null;
                    } 
                }
                
                function abbruch() {
                    if(timer) clearTimeout(timer);
                    timer = null;
                    if(ids[0]) setState(ids[0], false);
                    ventil = 0;
                    ids[0] = '';
                }
                
                var regen = getState(idRegen).val;
                var feucht = getState(idFeucht).val;
                var sturm = getState(idSturm).val;
                
                on(idRegen, function(dp) {
                    regen = dp.state.val;
                    if(regen) abbruch();
                });
                on(idSturm, function(dp) {
                    sturm = dp.state.val;
                    if(sturm) abbruch();
                });
                on(idFeucht, function(dp) {
                    feucht = dp.state.val;
                });
                
                schedule('15 20 * * *', function() {
                    if(!regen && !feucht && !sturm) ventile();
                });
                
                1 Reply Last reply Reply Quote 0
                • First post
                  Last post

                Support us

                ioBroker
                Community Adapters
                Donate

                792
                Online

                31.8k
                Users

                80.0k
                Topics

                1.3m
                Posts

                4
                6
                418
                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