Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. JavaScript
    5. innerhalb eines Zeitplans Status abfragen

    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

    innerhalb eines Zeitplans Status abfragen

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

      Hallo,
      wie kann ich innerhalb eines Zeitplanes (Bewässerung zu bestimmten Zeiten) die Umweltdaten (Regen, Wind) regelmäßig abfragen, um das Programm zu beenden oder gar nicht erst zu starten?
      Danke, liebe Community!
      Bisher habe ich das so gelöst (ist Blockly, soll aber Javascript werden, weil da mehr fetzt...)

      // Terrasse vorn
      schedule("30 23 * * 0-1,3,5", function () {
        if (getState("hm-rega.0.11439").val <= 4 && getState("hm-rega.0.11440").val <= 4 && getState("hm-rpc.0.NEQ1100316.1.WIND_SPEED").val <= 30 && getState("hm-rpc.0.QEQ2009796.1.STATE").val == 0) {
          setState("hm-rpc.0.NEQ0102532.3.STATE"/*Bewässerung Terrasse vorn.STATE*/, true);
          setStateDelayed("hm-rpc.0.NEQ0102532.3.STATE"/*Bewässerung Terrasse vorn.STATE*/, false, 1800000, false);
        } else {
          setState("hm-rpc.0.NEQ0102532.3.STATE"/*Bewässerung Terrasse vorn.STATE*/, false);
        }
      });
      
      L 1 Reply Last reply Reply Quote 0
      • L
        Luebke69 @Luebke69 last edited by

        Also in dem Sinne als Unterpunkt der Schedule...
        (ist mein erstes Script, dass ich allein gemacht habe und ich lerne es jetzt erst)

        // Regnet es?
        var nass = (getState('hm-rpc.0.QEQ2009796.1.STATE'/*Garten - Regensensor 1 STATE*/).val == 1)
        var trocken = (getState('hm-rpc.0.QEQ2009796.1.STATE'/*Garten - Regensensor 1 STATE*/).val == 0)
        schedule("*/10 * * * *", function () {
          if  (nass) {
            console.log("Es regnet.")
          }
          if  (trocken) {
              console.log("Es regnet nicht.")
          }
        });
        
        paul53 1 Reply Last reply Reply Quote 0
        • paul53
          paul53 @Luebke69 last edited by paul53

          @luebke69 sagte: ist mein erstes Script, dass ich allein gemacht habe

          Das sieht man, denn es kann nicht funktionieren: Man muss den Datenpunkt-Wert innerhalb eines Triggers (schedule) auslesen.

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

            @paul53 Das untere Script macht, was es soll. Kannst du mir helfen?

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

              @luebke69 sagte: Das untere Script macht, was es soll. Kannst du mir helfen?

              Das täuscht, denn die Variablen nass, trocken werden nur bei Skript-Start mit den Werten befüllt, ändern sich danach aber nicht mehr: Im Log wird immer der gleiche Text ausgegeben, auch wenn es anfängt oder aufhört zu regnen.
              Normalerweise macht man keine zyklische Abfrage, sondern triggert auf Wertänderung:

              // Regnet es?
              on('hm-rpc.0.QEQ2009796.1.STATE'/*Garten - Regensensor 1 STATE*/, function(dp) {
                if(dp.state.val) {
                  log("Es regnet.");
                } else {
                  log("Es regnet nicht.");
                }
              });
              
              1 Reply Last reply Reply Quote 0
              • L
                Luebke69 last edited by Luebke69

                Cool. Vielen Dank!
                Fragt er jetzt auch regelmäßig ab? Er macht ein log doch jetzt nur bei Änderung, oder, weil das on() auf Änderungen regiert...

                Aber wie frage ich mein obiges Script so ab, dass in der Bewässerungszeit prüft, ob es regnet oder windig ist - dann Sprenger aus?
                Darf ich fragen, ob meine Annahme richtig ist, dass dann "dp.state.val" dem Grunde nach true ist?
                Ich lerne gerade JavaScript über einen Online-Kurs und muss feststellen, dass sich IoBroker davon doch etwas unterscheidet...

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

                  @luebke69 sagte: Er macht ein log doch jetzt nur bei Änderung

                  Ja, braucht man öfter ein Log ? Es würde keine neue Information enthalten.

                  @luebke69 sagte in innerhalb eines Zeitplans Status abfragen:

                  "dp.state.val" dem Grunde nach true ist?

                  dp.state.val ist der Wert des Trigger-Datenpunktes, der bei Regen true ist.

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

                    @paul53 Danke für dein Mitdenken!
                    Mir geht es ja dem Grunde nach nicht um das Log, das für mich ja nur Spielerei ist, um einen Erfolg - oder eben nicht - meiner Programmierung darzustellen. Mir geht es wie gesagt, um das Prüfen innerhalb einer Schedule, den Rasensprenger auszuschalten, wenn es regent oder stürmt. Das macht das Programm oben an sich aber eben nur einmal. Wenn es dann nach der Prüfung im Zeitraum regnet, macht er einfach weiter...

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

                      @luebke69 sagte in innerhalb eines Zeitplans Status abfragen:

                      macht er einfach weiter...

                      was spricht dagegen einfach zusätzlich auf "Regenbeginn" (welcher DP das auch immer ist) zu triggern?
                      ...zu früh abgeschickt...

                      so hatte Paul es ja auch vorgeschlagen.
                      Der schedule startet die Begegnung --> Beregnung = true und wenn dann der richtige Regen einsetzt wird durch den Trigger Beregnung = false.

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

                      Support us

                      ioBroker
                      Community Adapters
                      Donate

                      883
                      Online

                      31.8k
                      Users

                      80.0k
                      Topics

                      1.3m
                      Posts

                      javascript
                      3
                      9
                      569
                      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