Skip to content
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. Blockly
  5. Mehrere Und-Abfragen

NEWS

  • Neuer Blogbeitrag: Monatsrückblick - Dezember 2025 🎄
    BluefoxB
    Bluefox
    11
    1
    480

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    24
    1
    1.6k

  • UPDATE 31.10.: Amazon Alexa - ioBroker Skill läuft aus ?
    apollon77A
    apollon77
    48
    3
    9.6k

Mehrere Und-Abfragen

Geplant Angeheftet Gesperrt Verschoben Blockly
15 Beiträge 7 Kommentatoren 1.9k Aufrufe 7 Watching
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • bahnuhrB Online
    bahnuhrB Online
    bahnuhr
    Forum Testing Most Active
    schrieb am zuletzt editiert von
    #5

    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


    Wenn ich helfen konnte, dann Daumen hoch (Pfeil nach oben)!
    Danke.
    gute Forenbeiträge: https://forum.iobroker.net/topic/51555/hinweise-f%C3%BCr-gute-forenbeitr%C3%A4ge
    ScreenToGif :https://www.screentogif.com/downloads.html

    DutchmanD AsgothianA 2 Antworten Letzte Antwort
    0
    • bahnuhrB bahnuhr

      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

      DutchmanD Offline
      DutchmanD Offline
      Dutchman
      Developer Most Active Administrators
      schrieb am zuletzt editiert von
      #6

      @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 😉

      bahnuhrB 1 Antwort Letzte Antwort
      0
      • DutchmanD Dutchman

        @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 😉

        bahnuhrB Online
        bahnuhrB Online
        bahnuhr
        Forum Testing Most Active
        schrieb am zuletzt editiert von
        #7

        @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


        Wenn ich helfen konnte, dann Daumen hoch (Pfeil nach oben)!
        Danke.
        gute Forenbeiträge: https://forum.iobroker.net/topic/51555/hinweise-f%C3%BCr-gute-forenbeitr%C3%A4ge
        ScreenToGif :https://www.screentogif.com/downloads.html

        DutchmanD 1 Antwort Letzte Antwort
        0
        • bahnuhrB bahnuhr

          @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

          DutchmanD Offline
          DutchmanD Offline
          Dutchman
          Developer Most Active Administrators
          schrieb am zuletzt editiert von
          #8

          @bahnuhr sagte in Mehrere Und-Abfragen:

          900000 = 15 Minuten

          🙈 ich brauche mehr Kaffee heute 😒

          bahnuhrB 1 Antwort Letzte Antwort
          0
          • DutchmanD Dutchman

            @bahnuhr sagte in Mehrere Und-Abfragen:

            900000 = 15 Minuten

            🙈 ich brauche mehr Kaffee heute 😒

            bahnuhrB Online
            bahnuhrB Online
            bahnuhr
            Forum Testing Most Active
            schrieb am zuletzt editiert von
            #9

            @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 !! ;-)


            Wenn ich helfen konnte, dann Daumen hoch (Pfeil nach oben)!
            Danke.
            gute Forenbeiträge: https://forum.iobroker.net/topic/51555/hinweise-f%C3%BCr-gute-forenbeitr%C3%A4ge
            ScreenToGif :https://www.screentogif.com/downloads.html

            1 Antwort Letzte Antwort
            1
            • bahnuhrB bahnuhr

              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

              AsgothianA Offline
              AsgothianA Offline
              Asgothian
              Developer
              schrieb am zuletzt editiert von
              #10

              @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.

              ioBroker auf RPi4 - Hardware soweit wie möglich via Zigbee.
              "Shit don't work" ist keine Fehlermeldung, sondern ein Fluch.

              Torsten K.T 1 Antwort Letzte Antwort
              0
              • AsgothianA Asgothian

                @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.T Offline
                Torsten K.T Offline
                Torsten K.
                schrieb am zuletzt editiert von Torsten K.
                #11

                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.

                DutchmanD 1 Antwort Letzte Antwort
                0
                • Torsten K.T 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.

                  DutchmanD Offline
                  DutchmanD Offline
                  Dutchman
                  Developer Most Active Administrators
                  schrieb am zuletzt editiert von
                  #12

                  @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 Antwort Letzte Antwort
                  0
                  • R RappiRN

                    @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 Offline
                    I Offline
                    ITCrowd
                    schrieb am zuletzt editiert von ITCrowd
                    #13

                    @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 Antwort Letzte Antwort
                    0
                    • I 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 Offline
                      R Offline
                      RappiRN
                      Most Active
                      schrieb am zuletzt editiert von
                      #14

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

                      Enrico

                      1 Antwort Letzte Antwort
                      0
                      • Torsten K.T Torsten K.

                        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

                        dslraserD Offline
                        dslraserD Offline
                        dslraser
                        Forum Testing Most Active
                        schrieb am zuletzt editiert von dslraser
                        #15

                        @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 Antwort Letzte Antwort
                        0
                        Antworten
                        • In einem neuen Thema antworten
                        Anmelden zum Antworten
                        • Älteste zuerst
                        • Neuste zuerst
                        • Meiste Stimmen


                        Support us

                        ioBroker
                        Community Adapters
                        Donate

                        350

                        Online

                        32.5k

                        Benutzer

                        81.8k

                        Themen

                        1.3m

                        Beiträge
                        Community
                        Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                        ioBroker Community 2014-2025
                        logo
                        • Anmelden

                        • Du hast noch kein Konto? Registrieren

                        • Anmelden oder registrieren, um zu suchen
                        • Erster Beitrag
                          Letzter Beitrag
                        0
                        • Home
                        • Aktuell
                        • Tags
                        • Ungelesen 0
                        • Kategorien
                        • Unreplied
                        • Beliebt
                        • GitHub
                        • Docu
                        • Hilfe