Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Blockly
    5. Mehrere Und-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

    Mehrere Und-Abfragen

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

      Hallo Leute,

      Ich hab folgendes Problem, und ich denke dass es bestimmt recht einfach ist, dieses zu lösen.

      Ausgangslage : ich habe eine Wasserpumpe mit einer Bewässerunsanlage mit mehreren Kreisläufen. Da meine Pumpe gerne auch angeht, obwohl kein Wasser benötigt wird, schalte ich diese nur bei Bedarf an und aus mit einem Sonoff POW mit Tasmota.

      Für die Kreisläufe habe ich mir einen extra Datenpunkt angelegt, welches alle Kreisläufe automatisch nacheinander durchläuft, sowie die Pumpe automatisch ein und ausschaltet.

      Nun mein Vorhaben: Wenn ich die Pumpe separat einschalte und keinen Kreislauf aktiviere, soll die Pumpe automatisch nach 15 Minuten ausgeschalten werden. Wird aber die Pumpe aufgrund eines Kreislaufes eingeschalten, soll sie nicht automatisch durchbraus Skript ausgeschalten werden.

      Also wenn Pumpe geändert wurde in wahr und alle Bewässerungskreisläufe unwahr sind, dann schalte Pumpe nach 15 Minuten aus.

      Ich hoffe ich habe mich halbwegs verständlich ausgedrückt 😀

      Schöne Grüße

      R Dutchman dslraser 3 Replies Last reply Reply Quote 0
      • R
        RappiRN Most Active @Torsten K. last edited by

        @Torsten-K
        Ich habe in deinem Post keine Frage entdeckt, deshalb beantworte ich mal deine Überschrift.
        Es scheint ja um Blockly zu gehen, da kannst du mehrere und-Blöcke nacheinander verwenden, je nachdem wieviel du brauchst. Das macht sich am besten, wenn du die Blöcke mit rechts anklickst und "externe Eingänge" auswählst.
        Solltest du schon was angefangen haben in Blockly, dann her damit!

        Enrico

        I 1 Reply Last reply Reply Quote 0
        • Dutchman
          Dutchman Developer Most Active Administrators @Torsten K. last edited by

          @Torsten-K

          Was du suchst ist

          • auslösen auf Änderungen der states
          • alle prüfen mit UND ist ...
          • time-out starten am der nach x Zeit ausschaltet

          Beispiel Code mit timeout : Waschmaschine fertig 🙂

          Torsten K. 1 Reply Last reply Reply Quote 0
          • Torsten K.
            Torsten K. @Dutchman last edited by Torsten K.

            @Dutchman & @RappiRN

            Ich habe mich wirklich gestern blöd ausgedrückt. Meine Ausgangssituation. Ich habe eine Wasserpumpe die extra immer ein und ausgeschlafen wird, wegen hohen Stromverbrauch. Zusätzlich habe ich eine Bewässerungsanlage die ich auch über Relais schalten kann.

            Wenn ich jetzt mein automatisches Bewässerungsskript laufen lasse (wo die Pumpe automatisch ein und wieder ausgeschalten wird) soll dieses Skript, welches ich jetzt versuche zu schreiben, nicht darauf reagieren. Erst wenn ich die Pumpe separat einschalte, soll diese Skript greifen und die Pumpe wieder nach 15 min ausschalten. Sonst vergisst es mein Frau gern und die Pumpe läuft und läuft und läuft 🙄

            Ich hab auch schon was probiert, aber es sieht meiner Meinung nach echt komisch aus und funktioniert auch nicht.
            Bildschirmfoto 2020-08-30 um 07.11.37.png

            • Sonoff Pumpe ist die Pumpe die geschalten werden soll
            • Wasser_10, Wasser_30_o_4 usw. sind die verschiedenen Kreisläufe
            • testbutton habe ich für diesen Test erstellt, um nicht immer die Kreisläufe ein und aus zu stellen.

            Und so sieht das Skript aus mit den Kreisläufen für die Bewässerung
            Bildschirmfoto 2020-08-30 um 07.32.13.png Bildschirmfoto 2020-08-30 um 07.30.51.png

            Also für mich ist wichtig, nur wenn keiner meiner Wasserkreisläufe aktiviert wurde, soll die Pumpe nach 15min automatisch ausgehen.

            1 Reply Last reply Reply Quote 0
            • bahnuhr
              bahnuhr Forum Testing Most Active last edited by

              Nehme folgendes Script:

              //Variablen
                  var idPumpe = "xxx"
              
              //Trigger
                  on({id: idPumpe, change: "ne", val: true}, function(){          // Pumpe wurde ein geschaltet
                      var idKreislauf1 = getState("...").val; 
                      var idKreislauf2 = getState("...").val;
                      var idKreislauf3 = getState("...").val;
                      var idKreislauf4 = getState("...").val;
              
                      if (idKreislauf1 == false && idKreislauf2 == false && idKreislauf3 == false && idKreislauf4 == false) {
                          setTimeout(function() { setState(idPumpe, false); }, 900000); 
                      }
                  });
              

              Voraussetzung für das Script:
              Deine Pumpe zeigt true wenn sie an ist.
              Die Kreisläufe zeigen true wenn sie an sind; bzw. false wenn sie aus sind.

              mfg

              Dutchman Asgothian 2 Replies Last reply Reply Quote 0
              • Dutchman
                Dutchman Developer Most Active Administrators @bahnuhr last edited by

                @bahnuhr

                Passt für ihn bis auf ne fehlende if Abfrage ob die Automationssystem und läuft Erklärung was wofür ist 🙂

                Btw auch der time-out hat die falsche Zeit und wir nicht angehalten wen er bereits läuft da können sich Sachen überschlagen da muss im Script noch was ergänzt werden 😉

                bahnuhr 1 Reply Last reply Reply Quote 0
                • bahnuhr
                  bahnuhr Forum Testing Most Active @Dutchman last edited by

                  @Dutchman sagte in Mehrere Und-Abfragen:

                  time-out hat die falsche Zeit

                  wieso?
                  900000 = 15 Minuten
                  was soll da falsch sein ?

                  @Dutchman sagte in Mehrere Und-Abfragen:

                  nicht angehalten wen er bereits läuft

                  stimmt

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

                    @bahnuhr sagte in Mehrere Und-Abfragen:

                    900000 = 15 Minuten

                    🙈 ich brauche mehr Kaffee heute 😒

                    bahnuhr 1 Reply Last reply Reply Quote 0
                    • bahnuhr
                      bahnuhr Forum Testing Most Active @Dutchman last edited by

                      @Dutchman sagte in Mehrere Und-Abfragen:

                      @bahnuhr sagte in Mehrere Und-Abfragen:

                      900000 = 15 Minuten

                      🙈 ich brauche mehr Kaffee heute 😒

                      hab ich auch gerade geholt, es hilft !! 😉

                      1 Reply Last reply Reply Quote 1
                      • Asgothian
                        Asgothian Developer @bahnuhr last edited by

                        @bahnuhr
                        Interessanter Vorschlag. Ich würde es systematisch anders lösen:

                        Dabei ist wichtig das alles in EINEM Blockly Skript liegt, sprich dieser Block muss im gleichen Script mit drin sein.

                        Screen Shot 2020-08-30 at 10.36.57 .png

                        Dann kannst du im eigentlichen Script einfach die Variable "PathInUse" abfragen. Wenn die >1 ist dann ist mindestens ein Kreislauf aktiv.

                        Warum so - damit ich nicht jedes mal wenn die Pumpe geschaltet wird die Datenpunkte aller Kreisläufe abgefragt werden.

                        Alternativ gibt es noch eine elegante Lösung:

                        Du kannst bei dem trigger auf das einschalten der Pumpe testen wer das ausgelöst hat - es gibt dazu den "origin of value" Baustein (sorry, ich weiss nicht wie der auf deutsch heisst). Wenn das Pumpenscript die Pumpe schaltet, dann beinhaltet der origin "javascript.0". Wenn du ihn manuell schaltest, oder die Pumpe sogar extern geschaltet wird gibt es da einen anderen Eintrag.

                        A.

                        Torsten K. 1 Reply Last reply Reply Quote 0
                        • Torsten K.
                          Torsten K. @Asgothian last edited by Torsten K.

                          erst einmal vielen Dank für die Hilfe.

                          Ich hab das Skript von @bahnuhr einmal auf mich angepasst.(da ich nicht so viel Ahnung habe, hoffentlich richtig)

                          //Variablen
                              var idPumpe = "sonoff.0.Sonoff Pumpe.POWER"
                           
                          //Trigger
                              on({id: idPumpe, change: "ne", val: true}, function(){          // Pumpe wurde ein geschaltet
                                  var idKreislauf1 = getState("0_userdata.0.Wasser_20_10_10_10").val; 
                                  var idKreislauf2 = getState("0_userdata.0.Wasser_30_10_10").val;
                                  var idKreislauf3 = getState("0_userdata.0.Wasser_30_o_4").val;
                                  var idKreislauf4 = getState("0_userdata.0.testbutton").val;
                                  var idKreislauf5 = getState("0_userdata.0.Wasser1_20min").val;
                                  var idKreislauf6 = getState("0_userdata.0.Wasser1_30min").val;
                           
                                  if (idKreislauf1 == false && idKreislauf2 == false && idKreislauf3 == false && idKreislauf4 == false && idKreislauf5 == false && idKreislauf6 == false) {
                                      setTimeout(function() { setState(idPumpe, false); }, 5000); 
                                  }
                              });
                          
                          

                          Die 5000 habe ich nur zu Testzwecken verringert. Scheint soweit zu funktionieren. Werde ich jetzt die Tage mal im Alltag testen.

                          Dutchman 1 Reply Last reply Reply Quote 0
                          • Dutchman
                            Dutchman Developer Most Active Administrators @Torsten K. last edited by

                            @Torsten-K sagte in Mehrere Und-Abfragen:

                            Die 5000 habe ich nur zu Testzwecken verringert. Scheint soweit zu funktionieren. Werde ich jetzt die Tage mal im Alltag testen.

                            Wichtig noch das du den time-out anhältst oder anderweitig dafür sorgst das er nicht doppelt starten kan

                            1 Reply Last reply Reply Quote 0
                            • I
                              ITCrowd @RappiRN last edited by ITCrowd

                              @RappiRN Falls lange Kaskaden von UND oder ODER Blöcken nerven. Packs in JS.

                              Beispiel 8fach UND

                              8f6b1b05-3ea8-4932-ae27-e6b857a95fe6-grafik.png

                              8441fb6b-c128-4ae5-8a75-d058e7ac09dd-grafik.png

                              return I1 && I2 && I3 && I4 && I5 && I6 && I7 && I8;

                              R 1 Reply Last reply Reply Quote 0
                              • R
                                RappiRN Most Active @ITCrowd last edited by

                                @ITCrowd
                                Hat mich bisher nicht genervt, aber danke für die Info, werde ich mal ausprobieren.

                                Enrico

                                1 Reply Last reply Reply Quote 0
                                • dslraser
                                  dslraser Forum Testing Most Active @Torsten K. last edited by dslraser

                                  @Torsten-K

                                  Zum Thema mehrere und Abragen. Es gibt auf GitHub etwas interessantes dazu (habe ich aber selbst noch nicht probiert.)

                                  Blockly-plus

                                  https://github.com/excal-foley/ioBroker.blockly-plus

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

                                  Support us

                                  ioBroker
                                  Community Adapters
                                  Donate

                                  713
                                  Online

                                  31.7k
                                  Users

                                  79.9k
                                  Topics

                                  1.3m
                                  Posts

                                  7
                                  15
                                  1688
                                  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