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. JavaScript
  5. [gelöst] Schleife mit getState / setState

NEWS

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

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

  • Neues Video "KI im Smart Home" - ioBroker plus n8n
    BluefoxB
    Bluefox
    16
    1
    3.3k

[gelöst] Schleife mit getState / setState

Geplant Angeheftet Gesperrt Verschoben JavaScript
9 Beiträge 3 Kommentatoren 620 Aufrufe 1 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.
  • Johannes BauerstatterJ Offline
    Johannes BauerstatterJ Offline
    Johannes Bauerstatter
    schrieb am zuletzt editiert von Johannes Bauerstatter
    #1

    Hallo,

    ich versuche mich gerade mit dem Javascripten. Kann mir bitte jemand sagen, warum es nicht funktioniert?
    Ich möchte vorerst einen PIR an einen ESP8266 per MQTT abfragen und dann eine Shelly V1 schalten. In weiterer Folge möchte ich das Script um eine 5minütige Ausschaltverzögerung erweitern.

    if (getState("mqtt.0.Wemos_Kueche_Vorhaus.PIR.PIR") == "1")
    {
        setState("mqtt.0.shellies.shelly1-056C43.relay.0.command", "off");
    }
    
    
    paul53P 1 Antwort Letzte Antwort
    0
    • Johannes BauerstatterJ Johannes Bauerstatter

      Hallo,

      ich versuche mich gerade mit dem Javascripten. Kann mir bitte jemand sagen, warum es nicht funktioniert?
      Ich möchte vorerst einen PIR an einen ESP8266 per MQTT abfragen und dann eine Shelly V1 schalten. In weiterer Folge möchte ich das Script um eine 5minütige Ausschaltverzögerung erweitern.

      if (getState("mqtt.0.Wemos_Kueche_Vorhaus.PIR.PIR") == "1")
      {
          setState("mqtt.0.shellies.shelly1-056C43.relay.0.command", "off");
      }
      
      
      paul53P Offline
      paul53P Offline
      paul53
      schrieb am zuletzt editiert von paul53
      #2

      @Johannes-Bauerstatter
      Das ist keine Schleife, sondern nur bei Start des Skriptes erfolgt einmal die Abfrage und die entsprechende Reaktion. Soll auf eine Änderung des PIR reagiert werden, muss der Datenpunkt als Trigger on(id, callback) dienen.

      Liefert der PIR wirklich einen String "1" ?

      Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
      Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

      Johannes BauerstatterJ 1 Antwort Letzte Antwort
      0
      • paul53P paul53

        @Johannes-Bauerstatter
        Das ist keine Schleife, sondern nur bei Start des Skriptes erfolgt einmal die Abfrage und die entsprechende Reaktion. Soll auf eine Änderung des PIR reagiert werden, muss der Datenpunkt als Trigger on(id, callback) dienen.

        Liefert der PIR wirklich einen String "1" ?

        Johannes BauerstatterJ Offline
        Johannes BauerstatterJ Offline
        Johannes Bauerstatter
        schrieb am zuletzt editiert von Johannes Bauerstatter
        #3

        @paul53

        OK. Danke bin wieder ein Stück schlauer, aber irgendwie versteh ich die Syntax noch nicht richtig.
        Hab jetzt folgenden Code (stimmt, PIR liefert einen Integer keinen String):

        on(getState("mqtt.0.Wemos_Kueche_Vorhaus.PIR.PIR") == 1), function (obj) 
        {
            setState("mqtt.0.shellies.shelly1-056C43.relay.0.command", "on");
        };
        

        Ich hab mir auch mal die Einführung durchgelesen: link text werd aber nicht ganz schlau wie ich das bei mir anwende:

        on({id: 'hm-rpc.1.IEQ053xxxx.1.PRESS_SHORT‘}, function (obj) {
        	setState("hm-rpc.1.IEQ038xxxx3.State",true);
        });
        

        Woher weiß das Programm was es mit dem Wert von hm-rpc.1.IEQ053xxxx.1.PRESS_SHORT machen soll? Mir ist klar dass die {} ausgeführt werden, nur wann? Wenn hm-rpc.1.IEQ053xxxx.1.PRESS_SHORT von 0 auf 1 geht? Was wäre wenn der Wert von False auf True geht?

        Sollte es so funktionieren?

        on({id: 'mqtt.0.Wemos_Kueche_Vorhaus.PIR.PIR', change: "ne"}, function (obj) 
        {
          var value = obj.state.val;
          var oldValue = obj.oldState.val;
          if (getState("mqtt.0.Wemos_Kueche_Vorhaus.PIR.PIR").val == 0) 
          {
              setState("mqtt.0.shellies.shelly1-056C43.relay.0.command", 'off');
          } 
          else if (getState("mqtt.0.Wemos_Kueche_Vorhaus.PIR.PIR").val == 1) 
          {
              setState("mqtt.0.shellies.shelly1-056C43.relay.0.command", 'on');
          }
        });
        

        Kann es im Moment leider nicht testen, möchte aber alles soweit vorbereiten und verstehen.

        paul53P 2 Antworten Letzte Antwort
        0
        • Johannes BauerstatterJ Johannes Bauerstatter

          @paul53

          OK. Danke bin wieder ein Stück schlauer, aber irgendwie versteh ich die Syntax noch nicht richtig.
          Hab jetzt folgenden Code (stimmt, PIR liefert einen Integer keinen String):

          on(getState("mqtt.0.Wemos_Kueche_Vorhaus.PIR.PIR") == 1), function (obj) 
          {
              setState("mqtt.0.shellies.shelly1-056C43.relay.0.command", "on");
          };
          

          Ich hab mir auch mal die Einführung durchgelesen: link text werd aber nicht ganz schlau wie ich das bei mir anwende:

          on({id: 'hm-rpc.1.IEQ053xxxx.1.PRESS_SHORT‘}, function (obj) {
          	setState("hm-rpc.1.IEQ038xxxx3.State",true);
          });
          

          Woher weiß das Programm was es mit dem Wert von hm-rpc.1.IEQ053xxxx.1.PRESS_SHORT machen soll? Mir ist klar dass die {} ausgeführt werden, nur wann? Wenn hm-rpc.1.IEQ053xxxx.1.PRESS_SHORT von 0 auf 1 geht? Was wäre wenn der Wert von False auf True geht?

          Sollte es so funktionieren?

          on({id: 'mqtt.0.Wemos_Kueche_Vorhaus.PIR.PIR', change: "ne"}, function (obj) 
          {
            var value = obj.state.val;
            var oldValue = obj.oldState.val;
            if (getState("mqtt.0.Wemos_Kueche_Vorhaus.PIR.PIR").val == 0) 
            {
                setState("mqtt.0.shellies.shelly1-056C43.relay.0.command", 'off');
            } 
            else if (getState("mqtt.0.Wemos_Kueche_Vorhaus.PIR.PIR").val == 1) 
            {
                setState("mqtt.0.shellies.shelly1-056C43.relay.0.command", 'on');
            }
          });
          

          Kann es im Moment leider nicht testen, möchte aber alles soweit vorbereiten und verstehen.

          paul53P Offline
          paul53P Offline
          paul53
          schrieb am zuletzt editiert von paul53
          #4

          @Johannes-Bauerstatter sagte:

          Sollte es so funktionieren?

          Ja, so funktioniert es (mit Blockly erzeugt). MIt Javascript direkt würde man es einfacher machen

          on('mqtt.0.Wemos_Kueche_Vorhaus.PIR.PIR', function (obj) {
            if (obj.state.val == 1) {
                setState("mqtt.0.shellies.shelly1-056C43.relay.0.command", 'on');
            } else {
                setState("mqtt.0.shellies.shelly1-056C43.relay.0.command", 'off');
            }
          });
          

          Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
          Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

          Johannes BauerstatterJ Lenny.CBL 2 Antworten Letzte Antwort
          0
          • paul53P paul53

            @Johannes-Bauerstatter sagte:

            Sollte es so funktionieren?

            Ja, so funktioniert es (mit Blockly erzeugt). MIt Javascript direkt würde man es einfacher machen

            on('mqtt.0.Wemos_Kueche_Vorhaus.PIR.PIR', function (obj) {
              if (obj.state.val == 1) {
                  setState("mqtt.0.shellies.shelly1-056C43.relay.0.command", 'on');
              } else {
                  setState("mqtt.0.shellies.shelly1-056C43.relay.0.command", 'off');
              }
            });
            
            Johannes BauerstatterJ Offline
            Johannes BauerstatterJ Offline
            Johannes Bauerstatter
            schrieb am zuletzt editiert von
            #5

            @paul53 #

            Vielen Dank!!

            Ich versuche es mit Blockly und dann den Code zu verstehen/erlernen. :blush:

            1 Antwort Letzte Antwort
            0
            • paul53P paul53

              @Johannes-Bauerstatter sagte:

              Sollte es so funktionieren?

              Ja, so funktioniert es (mit Blockly erzeugt). MIt Javascript direkt würde man es einfacher machen

              on('mqtt.0.Wemos_Kueche_Vorhaus.PIR.PIR', function (obj) {
                if (obj.state.val == 1) {
                    setState("mqtt.0.shellies.shelly1-056C43.relay.0.command", 'on');
                } else {
                    setState("mqtt.0.shellies.shelly1-056C43.relay.0.command", 'off');
                }
              });
              
              Lenny.CBL Offline
              Lenny.CBL Offline
              Lenny.CB
              Most Active
              schrieb am zuletzt editiert von
              #6

              @paul53 sagte in Anfänger: Schleife mit getState und setState:

              @Johannes-Bauerstatter sagte:

              Sollte es so funktionieren?

              Ja, so funktioniert es (mit Blockly erzeugt). MIt Javascript direkt würde man es einfacher machen

              on('mqtt.0.Wemos_Kueche_Vorhaus.PIR.PIR', function (obj) {
                if (obj.state.val == 1) {
                    setState("mqtt.0.shellies.shelly1-056C43.relay.0.command", 'on');
                } else {
                    setState("mqtt.0.shellies.shelly1-056C43.relay.0.command", 'off');
                }
              });
              

              einfach ist immer gut, kannst Du vielleicht das "Einfache" dagegenstellen? (interessiert mich grad :grinning: )

              paul53P 1 Antwort Letzte Antwort
              0
              • Lenny.CBL Lenny.CB

                @paul53 sagte in Anfänger: Schleife mit getState und setState:

                @Johannes-Bauerstatter sagte:

                Sollte es so funktionieren?

                Ja, so funktioniert es (mit Blockly erzeugt). MIt Javascript direkt würde man es einfacher machen

                on('mqtt.0.Wemos_Kueche_Vorhaus.PIR.PIR', function (obj) {
                  if (obj.state.val == 1) {
                      setState("mqtt.0.shellies.shelly1-056C43.relay.0.command", 'on');
                  } else {
                      setState("mqtt.0.shellies.shelly1-056C43.relay.0.command", 'off');
                  }
                });
                

                einfach ist immer gut, kannst Du vielleicht das "Einfache" dagegenstellen? (interessiert mich grad :grinning: )

                paul53P Offline
                paul53P Offline
                paul53
                schrieb am zuletzt editiert von
                #7

                @Lenny-CB sagte:

                kannst Du vielleicht das "Einfache" dagegenstellen?

                Das ist das "Einfachere" gegenüber der Blockly-Übersetzung, die Du gepostet hast.

                Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
                Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

                Lenny.CBL 1 Antwort Letzte Antwort
                0
                • paul53P paul53

                  @Lenny-CB sagte:

                  kannst Du vielleicht das "Einfache" dagegenstellen?

                  Das ist das "Einfachere" gegenüber der Blockly-Übersetzung, die Du gepostet hast.

                  Lenny.CBL Offline
                  Lenny.CBL Offline
                  Lenny.CB
                  Most Active
                  schrieb am zuletzt editiert von
                  #8

                  @paul53 achso, habe deine Aussage nur falsch verstanden. :hushed:
                  PS: Das Blockly ist nicht von mir. Ich hatte nur gefragt, weils mich interessiert und man immer was lernen kann.

                  1 Antwort Letzte Antwort
                  0
                  • Johannes BauerstatterJ Johannes Bauerstatter

                    @paul53

                    OK. Danke bin wieder ein Stück schlauer, aber irgendwie versteh ich die Syntax noch nicht richtig.
                    Hab jetzt folgenden Code (stimmt, PIR liefert einen Integer keinen String):

                    on(getState("mqtt.0.Wemos_Kueche_Vorhaus.PIR.PIR") == 1), function (obj) 
                    {
                        setState("mqtt.0.shellies.shelly1-056C43.relay.0.command", "on");
                    };
                    

                    Ich hab mir auch mal die Einführung durchgelesen: link text werd aber nicht ganz schlau wie ich das bei mir anwende:

                    on({id: 'hm-rpc.1.IEQ053xxxx.1.PRESS_SHORT‘}, function (obj) {
                    	setState("hm-rpc.1.IEQ038xxxx3.State",true);
                    });
                    

                    Woher weiß das Programm was es mit dem Wert von hm-rpc.1.IEQ053xxxx.1.PRESS_SHORT machen soll? Mir ist klar dass die {} ausgeführt werden, nur wann? Wenn hm-rpc.1.IEQ053xxxx.1.PRESS_SHORT von 0 auf 1 geht? Was wäre wenn der Wert von False auf True geht?

                    Sollte es so funktionieren?

                    on({id: 'mqtt.0.Wemos_Kueche_Vorhaus.PIR.PIR', change: "ne"}, function (obj) 
                    {
                      var value = obj.state.val;
                      var oldValue = obj.oldState.val;
                      if (getState("mqtt.0.Wemos_Kueche_Vorhaus.PIR.PIR").val == 0) 
                      {
                          setState("mqtt.0.shellies.shelly1-056C43.relay.0.command", 'off');
                      } 
                      else if (getState("mqtt.0.Wemos_Kueche_Vorhaus.PIR.PIR").val == 1) 
                      {
                          setState("mqtt.0.shellies.shelly1-056C43.relay.0.command", 'on');
                      }
                    });
                    

                    Kann es im Moment leider nicht testen, möchte aber alles soweit vorbereiten und verstehen.

                    paul53P Offline
                    paul53P Offline
                    paul53
                    schrieb am zuletzt editiert von
                    #9

                    @Johannes-Bauerstatter:

                    dass die {} ausgeführt werden, nur wann? Wenn hm-rpc.1.IEQ053xxxx.1.PRESS_SHORT von 0 auf 1 geht? Was wäre wenn der Wert von False auf True geht?

                    Die Datenpunkte PRESS_SHORT haben immer den Wert true. Bei kurzer Tastenbetätigung wird nur der Zeitstempel aktualisiert, wodurch getriggert wird.

                    Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
                    Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

                    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

                    846

                    Online

                    32.4k

                    Benutzer

                    81.5k

                    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