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. Visualisierung
  4. Widget zum setzen mehrerer States

NEWS

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    21
    1
    928

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

  • Monatsrückblick – September 2025
    BluefoxB
    Bluefox
    13
    1
    2.4k

Widget zum setzen mehrerer States

Geplant Angeheftet Gesperrt Verschoben Visualisierung
12 Beiträge 3 Kommentatoren 1.1k Aufrufe
  • Ä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.
  • N Offline
    N Offline
    nobody
    schrieb am zuletzt editiert von
    #2

    Ändere mal deine setState-Statements auf

    if (feuchtesensor1 === true) {
        setState(feuchtesensor1, false, false);
    }
    if (feuchtesensor2 === true) {
        setState(feuchtesensor2, false, false);
    }
    if (feuchtesensor3 === true) {
        setState(feuchtesensor3, false, false);
    }
    if (feuchtesensor4 === true) {
        setState(feuchtesensor4, false, false);
    }
    if (feuchtesensor5 === true) {
        setState(feuchtesensor5, false, false);
    }
    

    Die Werte werden nur an die CCU übertragen, wenn ACK == false

    1 Antwort Letzte Antwort
    0
    • P Offline
      P Offline
      pix
      schrieb am zuletzt editiert von
      #3

      Schönes Projekt. Kannst du die Hardware (Akku?) und Software hier vorstellen (vielleicht in einem neuen Thread, wenn das aktuelle Problem gelöst ist).

      Ich möchte auch in Zukunft WeMos D1 Minis einsetzen.

      Gruß

      Pix

      ioBroker auf Ubuntu in Proxmox (früher Mac mini (bis OS X 10.12.6 Sierra), VIS via iOS; angeschlossen: Homematic CCU2, Homepilot 1, ConBee II, einige Wemos, Sonos, Unifi CK+Protect, Homekit, Homebridge; KEIN blockly! Github-Profil

      1 Antwort Letzte Antwort
      0
      • P Offline
        P Offline
        PrinzEisenherz1
        schrieb am zuletzt editiert von
        #4

        Hi Pix!

        Ja, kein Problem kann ich machen! laufen alle mit Akku 18650!

        @nobody oder @Pix

        Leider klappt das mit dem zurücksetzen auf VIS mit dem Vorschlag von nobody nicht!

        Ich hab jetzt das Skript mal so abgeändert aber ohne Erfolg

        createState("Bodenfeuchtesensor", false, {
                          read: true, 
                          write: true, 
                          desc: "Zurücksetzen der Bodenfeuchtesensoren", 
                          type: "boolean", 
                          def: false
        });
        
        on("javascript.0.Bodenfeuchtesensor", function(dp) {
            if(dp.state.val) { 
                setState(dp.id, false);
        if ('hm-rega.0.28658' == "true") {
            setState('hm-rega.0.28658', false, false);
        }
        if ('hm-rega.0.28660' == "true") {
            setState('hm-rega.0.28660', false, false);
        }
        if ('hm-rega.0.28662' == "true") {
            setState('hm-rega.0.28662', false, false);
        }
        if ('hm-rega.0.28664' == "true") {
            setState('hm-rega.0.28664', false, false);
        }
        if ('hm-rega.0.28666' == "true") {
            setState('hm-rega.0.28666', false, false);
        }
            }
        });
        
        

        Intel-NUC mit ProxMox: ioBroker,SQL, logging Strom- Gas- u. Wasserzähler;10Zoll Tab im Flur für VIS; weiteres: Homematic CCU2, Homeduino, Kameras, selbstgebaute Wetterstation;

        1 Antwort Letzte Antwort
        0
        • N Offline
          N Offline
          nobody
          schrieb am zuletzt editiert von
          #5

          klar,

          im ersten Skript von dir wurden ja die Werte auch noch geholt und in Variablen geschrieben.

          'hm-rega.0.28662' == "true" ist immer false also wird nie was ausgeführt ;)

          du musst die Werte schon mit getState holen um sie zu vergleichen oder du lässt die Abfrage gleich weg und überschreibst einfach alles. Dabei dürfte in diesem Fall auch nichts kaputt gehen.

          1 Antwort Letzte Antwort
          0
          • P Offline
            P Offline
            PrinzEisenherz1
            schrieb am zuletzt editiert von
            #6

            Ist das so besser?

            createState("Bodenfeuchtesensor", false, {
                              read: true, 
                              write: true, 
                              desc: "Zurücksetzen der Bodenfeuchtesensoren", 
                              type: "boolean", 
                              def: false
            });
            
            var idSensor1 = "hm-rega.0.28658";
            var idSensor2 = "hm-rega.0.28660";
            var idSensor3 = "hm-rega.0.28662";
            var idSensor4 = "hm-rega.0.28664";
            var idSensor5 = "hm-rega.0.28666";
            
            var feuchtesensor1 = getState(idSensor1).val;
            var feuchtesensor2 = getState(idSensor2).val;
            var feuchtesensor3 = getState(idSensor3).val;
            var feuchtesensor4 = getState(idSensor4).val;
            var feuchtesensor5 = getState(idSensor5).val;
            
            on("javascript.0.Bodenfeuchtesensor", function(dp) {
                if(dp.state.val) { 
                    setState(dp.id, false);
            
            if (feuchtesensor1 === true) {
                setState(feuchtesensor1, false, false);
            }
            if (feuchtesensor2 === true) {
                setState(feuchtesensor2, false, false);
            }
            if (feuchtesensor3 === true) {
                setState(feuchtesensor3, false, false);
            }
            if (feuchtesensor4 === true) {
                setState(feuchtesensor4, false, false);
            }
            if (feuchtesensor5 === true) {
                setState(feuchtesensor5, false, false);
            }
                }
            });
            
            

            Intel-NUC mit ProxMox: ioBroker,SQL, logging Strom- Gas- u. Wasserzähler;10Zoll Tab im Flur für VIS; weiteres: Homematic CCU2, Homeduino, Kameras, selbstgebaute Wetterstation;

            1 Antwort Letzte Antwort
            0
            • N Offline
              N Offline
              nobody
              schrieb am zuletzt editiert von
              #7

              geht das denn jetzt?

              Der Operator === prüft auch den Datentypen. Dies klappt nur, wenn dieser bei der Übertragung von der CCU auch als Boolean übertragen wird.

              Wenn du die Werte für die ids außerhalb des on-Statements holst, erfolgt dies einmal zum Start des Javascript-Adapters und danach nie wieder. Somit ergibt dies keinen Sinn.

              Versuche mal einfach das:

              createState("Bodenfeuchtesensor", false, {
                                read: true, 
                                write: true, 
                                desc: "Zurücksetzen der Bodenfeuchtesensoren", 
                                type: "boolean", 
                                def: false
              });
              
              var idSensor1 = "hm-rega.0.28658";
              var idSensor2 = "hm-rega.0.28660";
              var idSensor3 = "hm-rega.0.28662";
              var idSensor4 = "hm-rega.0.28664";
              var idSensor5 = "hm-rega.0.28666";
              
              on("javascript.0.Bodenfeuchtesensor", function(dp) {
                  if(dp.state.val) { 
                     setState(dp.id, false);
                     setState(idSensor1 , false, false);
                     setState(idSensor2 , false, false);
                     setState(idSensor3 , false, false);
                     setState(idSensor4 , false, false);
                     setState(idSensor5 , false, false);
                  }
              });
              
              
              1 Antwort Letzte Antwort
              0
              • P Offline
                P Offline
                PrinzEisenherz1
                schrieb am zuletzt editiert von
                #8

                Nö, klappt leider nicht!

                Hab es auch ohne if-Abfrage probiert. Auch kein Erfolg

                createState("Bodenfeuchtesensor", false, {
                                  read: true, 
                                  write: true, 
                                  desc: "Zurücksetzen der Bodenfeuchtesensoren", 
                                  type: "boolean", 
                                  def: false
                });
                
                var idSensor1 = "hm-rega.0.28658";
                var idSensor2 = "hm-rega.0.28660";
                var idSensor3 = "hm-rega.0.28662";
                var idSensor4 = "hm-rega.0.28664";
                var idSensor5 = "hm-rega.0.28666";
                
                var feuchtesensor1 = getState(idSensor1).val;
                var feuchtesensor2 = getState(idSensor2).val;
                var feuchtesensor3 = getState(idSensor3).val;
                var feuchtesensor4 = getState(idSensor4).val;
                var feuchtesensor5 = getState(idSensor5).val;
                
                on("javascript.0.Bodenfeuchtesensor", function(dp) {
                    if(dp.state.val) { 
                        setState(dp.id, false);
                    setState(feuchtesensor1, false, false);
                    setState(feuchtesensor2, false, false);
                    setState(feuchtesensor3, false, false);
                    setState(feuchtesensor4, false, false);
                    setState(feuchtesensor5, false, false);
                    }
                });
                
                

                Intel-NUC mit ProxMox: ioBroker,SQL, logging Strom- Gas- u. Wasserzähler;10Zoll Tab im Flur für VIS; weiteres: Homematic CCU2, Homeduino, Kameras, selbstgebaute Wetterstation;

                1 Antwort Letzte Antwort
                0
                • P Offline
                  P Offline
                  pix
                  schrieb am zuletzt editiert von
                  #9

                  Die Variablen feuchtesensor1-5 werden nur beim Skriptstart mit den Werten gefüllt. Sie sollen aber bei Tastendruck (bzw Bodenfeuchtesensor ist wahr) abgefragt werden.

                  Dazu einige Abkürzungen und bei CreateState ist def dazu da, den Default-Wert zu setzen, dann kannst du ihn vor der geschweifetn Klammer weglassen.

                  createState("Bodenfeuchtesensor", {
                                    read: true, 
                                    write: true, 
                                    desc: "Zurücksetzen der Bodenfeuchtesensoren", 
                                    type: "boolean", 
                                    def: false
                  });
                  
                  var idSensor1 = "hm-rega.0.28658";
                  var idSensor2 = "hm-rega.0.28660";
                  var idSensor3 = "hm-rega.0.28662";
                  var idSensor4 = "hm-rega.0.28664";
                  var idSensor5 = "hm-rega.0.28666";
                  
                  on("javascript.0.Bodenfeuchtesensor", function(dp) {
                  
                      var feuchtesensor1 = getState(idSensor1).val;
                      var feuchtesensor2 = getState(idSensor2).val;
                      var feuchtesensor3 = getState(idSensor3).val;
                      var feuchtesensor4 = getState(idSensor4).val;
                      var feuchtesensor5 = getState(idSensor5).val;
                  
                      if(dp.state.val) { 
                          setState(dp.id, false);
                          if (feuchtesensor1) setState(feuchtesensor1, false, false);
                          if (feuchtesensor2) setState(feuchtesensor2, false, false);
                          if (feuchtesensor3) setState(feuchtesensor3, false, false);
                          if (feuchtesensor4) setState(feuchtesensor4, false, false);
                          if (feuchtesensor5) setState(feuchtesensor5, false, false);
                      }
                  });
                  
                  

                  Gruß

                  Pix

                  ioBroker auf Ubuntu in Proxmox (früher Mac mini (bis OS X 10.12.6 Sierra), VIS via iOS; angeschlossen: Homematic CCU2, Homepilot 1, ConBee II, einige Wemos, Sonos, Unifi CK+Protect, Homekit, Homebridge; KEIN blockly! Github-Profil

                  1 Antwort Letzte Antwort
                  0
                  • N Offline
                    N Offline
                    nobody
                    schrieb am zuletzt editiert von
                    #10

                    @PrinzEisenherz1:

                    var idSensor1 = "hm-rega.0.28658";
                    var idSensor2 = "hm-rega.0.28660";
                    var idSensor3 = "hm-rega.0.28662";
                    var idSensor4 = "hm-rega.0.28664";
                    var idSensor5 = "hm-rega.0.28666";
                    
                    var feuchtesensor1 = getState(idSensor1).val;
                    var feuchtesensor2 = getState(idSensor2).val;
                    var feuchtesensor3 = getState(idSensor3).val;
                    var feuchtesensor4 = getState(idSensor4).val;
                    var feuchtesensor5 = getState(idSensor5).val;
                    
                    ...
                        setState(feuchtesensor1, false, false);
                        setState(feuchtesensor2, false, false);
                        setState(feuchtesensor3, false, false);
                        setState(feuchtesensor4, false, false);
                        setState(feuchtesensor5, false, false);
                    
                    ```` `  
                    

                    setState(feuchtesensor2, false, false); kann auch nicht klappen weil feuchtesensor2 == true ist und nicht die id enthält.

                    1 Antwort Letzte Antwort
                    0
                    • P Offline
                      P Offline
                      pix
                      schrieb am zuletzt editiert von
                      #11

                      Au man :oops: :oops: :oops: :oops:
                      @nobody:

                      setState(feuchtesensor2, false, false); kann auch nicht klappen weil feuchtesensor2 == true ist und nicht die id enthält. `

                      createState("Bodenfeuchtesensor", {
                                        read: true, 
                                        write: true, 
                                        desc: "Zurücksetzen der Bodenfeuchtesensoren", 
                                        type: "boolean", 
                                        def: false
                      });
                      
                      var idSensor1 = "hm-rega.0.28658";
                      var idSensor2 = "hm-rega.0.28660";
                      var idSensor3 = "hm-rega.0.28662";
                      var idSensor4 = "hm-rega.0.28664";
                      var idSensor5 = "hm-rega.0.28666";
                      
                      on("javascript.0.Bodenfeuchtesensor", function(dp) {
                      
                          var feuchtesensor1 = getState(idSensor1).val;
                          var feuchtesensor2 = getState(idSensor2).val;
                          var feuchtesensor3 = getState(idSensor3).val;
                          var feuchtesensor4 = getState(idSensor4).val;
                          var feuchtesensor5 = getState(idSensor5).val;
                      
                          if(dp.state.val) { 
                              setState(dp.id, false);
                      
                              if (feuchtesensor1) setState(idSensor1, false, false);
                              if (feuchtesensor2) setState(idSensor2, false, false);
                              if (feuchtesensor3) setState(idSensor3, false, false);
                              if (feuchtesensor4) setState(idSensor4, false, false);
                              if (feuchtesensor5) setState(idSensor5, false, false);
                          }
                      });
                      

                      :lol:

                      ioBroker auf Ubuntu in Proxmox (früher Mac mini (bis OS X 10.12.6 Sierra), VIS via iOS; angeschlossen: Homematic CCU2, Homepilot 1, ConBee II, einige Wemos, Sonos, Unifi CK+Protect, Homekit, Homebridge; KEIN blockly! Github-Profil

                      1 Antwort Letzte Antwort
                      0
                      • P Offline
                        P Offline
                        PrinzEisenherz1
                        schrieb am zuletzt editiert von
                        #12

                        Perfekt!

                        Jetzt geht es. Tausend Dank euch beiden!

                        Einen schönen noch euch beiden.

                        Gruß

                        Johnny

                        Intel-NUC mit ProxMox: ioBroker,SQL, logging Strom- Gas- u. Wasserzähler;10Zoll Tab im Flur für VIS; weiteres: Homematic CCU2, Homeduino, Kameras, selbstgebaute Wetterstation;

                        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

                        789

                        Online

                        32.5k

                        Benutzer

                        81.6k

                        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