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. If else if Anweisung

NEWS

  • Jahresrückblick 2025 – unser neuer Blogbeitrag ist online! ✨
    BluefoxB
    Bluefox
    15
    1
    628

  • Neuer Blogbeitrag: Monatsrückblick - Dezember 2025 🎄
    BluefoxB
    Bluefox
    13
    1
    628

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    1.9k

If else if Anweisung

Geplant Angeheftet Gesperrt Verschoben Skripten / Logik
24 Beiträge 4 Kommentatoren 5.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.
  • BuZZyB Offline
    BuZZyB Offline
    BuZZy
    schrieb am zuletzt editiert von
    #2

    Du vergleichst ja nirgends ob der neue Wert denn sA oder sB entspricht.

    Deine if Abfragen sind falsch formuliert.

    on({id: "mqtt.0.ESPURNA_CB3XXX.rfin"/*ESPURNA_CB3XXX/rfin*/, change: "any"}, function (obj) {
        const sA = "1EB402D0012C7F7XXX";        //Taste A
        const sB = "1EB400FA03027F7XXX";        //Taste B
        if(obj.state.val == sA){
            setState("sonoff.0.Wohnzimmerlampe.POWER"/*Wohnzimmerlampe POWER*/,true);
        }
        else if (obj.state.val == sB) {
            setState("sonoff.0.Wohnzimmerlampe.POWER"/*Wohnzimmerlampe POWER*/,false);
        }
    });
    

    Gruß

    1 Antwort Letzte Antwort
    0
    • T Offline
      T Offline
      thomson
      schrieb am zuletzt editiert von
      #3

      Danke für die Antwort, okay das habe ich verstanden. Aber es funktioniert so leider nicht :(

      Es ändert sich nichts

      1 Antwort Letzte Antwort
      0
      • AlCalzoneA Offline
        AlCalzoneA Offline
        AlCalzone
        Developer
        schrieb am zuletzt editiert von
        #4

        Dann füge mal einen Log-Output vor deinen Bedingungen ein, damit du überprüfen kannst, was eigentlich ankommt

        log(obj.state.val);
        

        Warum `sudo` böse ist: https://forum.iobroker.net/post/17109

        1 Antwort Letzte Antwort
        0
        • BuZZyB Offline
          BuZZyB Offline
          BuZZy
          schrieb am zuletzt editiert von
          #5

          Wo kommt denn das

              const sA = "1EB402D0012C7F7XXX";        //Taste A
              const sB = "1EB400FA03027F7XXX";        //Taste B
          

          her? Diese Zeichenketten? Werden die im Datenpunkt geschrieben wenn du die Fernbedienung drückst?

          EDIT: Füge die Zeile mit dem Log von AlCalzone ein und guck was überhaupt ankommt..

          Gruß

          1 Antwort Letzte Antwort
          0
          • arteckA Offline
            arteckA Offline
            arteck
            Developer Most Active
            schrieb am zuletzt editiert von
            #6
            on({id: "mqtt.0.ESPURNA_CB3XXX.rfin"/*ESPURNA_CB3XXX/rfin*/, change: "ne"}, function (obj) {
                    var sA = "1EB402D0012C7F7XXX";                                                      //Taste A
                    var sB = "1EB400FA03027F7XXX";                                                      //Taste B
            
                    if (sA ===  getState("mqtt.0.ESPURNA_CB3XXX.rfin").val) {
                       setState("sonoff.0.Wohnzimmerlampe.POWER"/*Wohnzimmerlampe POWER*/,true);
                    }
            
                    if (sB ===  getState("mqtt.0.ESPURNA_CB3XXX.rfin").val) {
                       setState("sonoff.0.Wohnzimmerlampe.POWER"/*Wohnzimmerlampe POWER*/,false);
                    }
             });
            

            zigbee hab ich, zwave auch, nuc's genauso und HA auch

            1 Antwort Letzte Antwort
            0
            • T Offline
              T Offline
              thomson
              schrieb am zuletzt editiert von
              #7

              log(obj.state.val);

              habe ich gemacht. Die Werte kommen richtig an

              1 Antwort Letzte Antwort
              0
              • T Offline
                T Offline
                thomson
                schrieb am zuletzt editiert von
                #8

                @arteck:

                on({id: "mqtt.0.ESPURNA_CB3XXX.rfin"/*ESPURNA_CB3XXX/rfin*/, change: "ne"}, function (obj) {
                        var sA = "1EB402D0012C7F7XXX";                                                      //Taste A
                        var sB = "1EB400FA03027F7XXX";                                                      //Taste B
                
                        if (sA ===  getState("mqtt.0.ESPURNA_CB3XXX.rfin").val) {
                           setState("sonoff.0.Wohnzimmerlampe.POWER"/*Wohnzimmerlampe POWER*/,true);
                        }
                
                        if (sB ===  getState("mqtt.0.ESPURNA_CB3XXX.rfin").val) {
                           setState("sonoff.0.Wohnzimmerlampe.POWER"/*Wohnzimmerlampe POWER*/,false);
                        }
                 });
                ```` `  
                

                Leider auch nicht :(

                1 Antwort Letzte Antwort
                0
                • BuZZyB Offline
                  BuZZyB Offline
                  BuZZy
                  schrieb am zuletzt editiert von
                  #9

                  Damit wir uns richtig verstehen,

                  der Datenpunkt mqtt.0.ESPURNA_CB3XXX.rfin ändert sich auf den Wert 1EB402D0012C7F7XXX wenn du die Taste A auf der Fernbedienung drückst ja?

                  Gruß

                  1 Antwort Letzte Antwort
                  0
                  • T Offline
                    T Offline
                    thomson
                    schrieb am zuletzt editiert von
                    #10

                    ~~![](</s><URL url=)https://ibb.co/nsnfLe" />

                    Ja bei dem Datenpunkt ESPURNA_CB3A71/rfin ändern sich die Werte. Wenn ich nur eine IF drin habe geht die Lapme auch an.

                    Bei der Variante aus dem Forum bsp.

                    on({id: 'hm-rpc.1.IEQ053xxxx.1.PRESS_SHORT‘}, function (obj) {
                    setState("hm-rpc.1.IEQ038xxxx.3.State",!getState("hm-rpc.1.IEQ038xxxx3.State").val);
                    setState("hm-rpc.1.IEQ056xxxx.3.State",!getState("hm-rpc.1.IEQ056xxxx.State").val);
                    });
                    

                    ging es.

                    Aber ich wollte gerne mit dieser FB alle Lampen draußen an oder Ausschalten. Egel was für einen Zustand die gerade haben.~~

                    1 Antwort Letzte Antwort
                    0
                    • T Offline
                      T Offline
                      thomson
                      schrieb am zuletzt editiert von
                      #11

                      Sporadisch kamen gerade Signale an.. :?:

                      so ist es nun

                                                           // Außemlampen
                      
                      on({id: "mqtt.0.ESPURNA_CB3A71.rfin"/*ESPURNA_CB3A71/rfin*/, change: "any"}, function (obj) {
                          const sA = "1EC802E401187F7CE2";        //Taste A
                          const sB = "1EC802E401187F7CE8";        //Taste B
                          log(obj.state.val);
                          if (sA ===  getState("mqtt.0.ESPURNA_CB3A71.rfin"/*ESPURNA_CB3A71/rfin*/).val) {
                              setState("sonoff.0.Wohnzimmerlampe.POWER"/*Wohnzimmerlampe POWER*/,true);
                          }
                           if (sB ===  getState("mqtt.0.ESPURNA_CB3A71.rfin"/*ESPURNA_CB3A71/rfin*/).val) {
                              setState("sonoff.0.Wohnzimmerlampe.POWER"/*Wohnzimmerlampe POWER*/,false);
                          }
                      });
                      
                      1 Antwort Letzte Antwort
                      0
                      • T Offline
                        T Offline
                        thomson
                        schrieb am zuletzt editiert von
                        #12

                        Keiner eine Idee. Ich bin hier am verzweifeln

                        1 Antwort Letzte Antwort
                        0
                        • T Offline
                          T Offline
                          thomson
                          schrieb am zuletzt editiert von
                          #13

                          @BuZZy:

                          Wo kommt denn das

                              const sA = "1EB402D0012C7F7XXX";        //Taste A
                              const sB = "1EB400FA03027F7XXX";        //Taste B
                          

                          her? Diese Zeichenketten? Werden die im Datenpunkt geschrieben wenn du die Fernbedienung drückst?

                          EDIT: Füge die Zeile mit dem Log von AlCalzone ein und guck was überhaupt ankommt..

                          Gruß `
                          Ja das steht bei dem Datenpunkt

                          1 Antwort Letzte Antwort
                          0
                          • AlCalzoneA Offline
                            AlCalzoneA Offline
                            AlCalzone
                            Developer
                            schrieb am zuletzt editiert von
                            #14

                            @thomson:

                            Keiner eine Idee. Ich bin hier am verzweifeln `
                            Ich habe dich gebeten, eine Log-Ausgabe in dein Skript zu integrieren. Hast du die mal überprüft und kannst die hier posten? Ohne die zu sehen können wir hier genauso wenig nachvollziehen wie vorher.

                            on({id: "mqtt.0.ESPURNA_CB3A71.rfin"/*ESPURNA_CB3A71/rfin*/, change: "any"}, function (obj) {
                                 //
                                if (sA ===  getState("mqtt.0.ESPURNA_CB3A71.rfin"/*ESPURNA_CB3A71/rfin*/).val) {
                                // ...
                            
                            

                            Das erneute Abfragen des Werts von mqtt.0.ESPURNA_CB3A71.rfin ist nicht nötig und eventuell sogar ein Fehler, je nachdem wie schnell sich da was ändert. obj.state.val enthält den aktuellen Wert des Datenpunkts in dem Moment wo der Trigger ausgelöst wurde.

                            Warum `sudo` böse ist: https://forum.iobroker.net/post/17109

                            1 Antwort Letzte Antwort
                            0
                            • T Offline
                              T Offline
                              thomson
                              schrieb am zuletzt editiert von
                              #15

                              Ja das habe ich gemacht. Ist das so Richtig?

                              on({id: "mqtt.0.ESPURNA_CB3A71.rfin"/*ESPURNA_CB3A71/rfin*/, change: "any"}, function (obj) {
                                  const sA = "1EC800FA03027F7CE2";        //Taste A
                                  const sB = "1EC800FA03027F7CE8";        //Taste B
                                  log(obj.state.val);
                                  if (sA ===  getState("mqtt.0.ESPURNA_CB3A71.rfin")) {
                                      console.log(sA);
                                      setState("sonoff.0.Wohnzimmerlampe.POWER"/*Wohnzimmerlampe POWER*/,true);
                                  }
                                   if (sB ===  getState("mqtt.0.ESPURNA_CB3A71.rfin")) {
                                         console.log(sB);
                                      setState("sonoff.0.Wohnzimmerlampe.POWER"/*Wohnzimmerlampe POWER*/,false);
                                  }
                              });
                              

                              LOG

                              09:05:12.500	[info]	javascript.0 Stop script script.js.common.RF_Bridge
                              09:05:12.526	[info]	javascript.0 Start javascript script.js.common.RF_Bridge
                              09:05:12.527	[info]	javascript.0 script.js.common.RF_Bridge: registered 1 subscription and 0 schedules
                              09:05:13.918	[info]	javascript.0 script.js.common.RF_Bridge: 1EBE00FA03027F7CE2
                              09:05:18.273	[info]	javascript.0 script.js.common.RF_Bridge: 1EBE00FA03027F7CE8
                              

                              //edit

                              Habe in der if Bedingung die getState abfrage raus genommen. Dann schaltet die Lampe für einen Bruchteil einer Sek. Man hört nur ein schnelles klacken vom Relai. Beim Drücken der "aus" Taste passiert das selbe

                              Das steth dan im LOG - Habe nur einmal auf "A" gedrückt. Das kommt dabei raus. Beim drücken von "B" das selbe…

                              javascript.0	2018-08-07 09:09:45.284	info	script.js.common.RF_Bridge: 1EC800FA03027F7CE8
                              javascript.0	2018-08-07 09:09:45.284	info	script.js.common.RF_Bridge: 1EC800FA03027F7CE2
                              javascript.0	2018-08-07 09:09:45.283	info	script.js.common.RF_Bridge: 1EC800FA03027F7CE2
                              
                              1 Antwort Letzte Antwort
                              0
                              • AlCalzoneA Offline
                                AlCalzoneA Offline
                                AlCalzone
                                Developer
                                schrieb am zuletzt editiert von
                                #16

                                Und da haben wirs schon…

                                Laut log wird "1E<u>BE00</u>FA03027F7CE2" und "1E<u>BE00</u>FA03027F7CE8" empfangen, du vergleichst aber mit "1E<u>C800</u>FA03027F7CE2" und "1E<u>C800</u>FA03027F7CE8"

                                Und wie ich schon sagte, nicht nochmal den State abfragen (getState), sondern den vorhandenen Wert (obj.state.val) nutzen!

                                on({id: "mqtt.0.ESPURNA_CB3A71.rfin"/*ESPURNA_CB3A71/rfin*/, change: "any"}, function (obj) {
                                    const sA = "1EBE00FA03027F7CE2";        //Taste A
                                    const sB = "1EBE00FA03027F7CE8";        //Taste B
                                    log(obj.state.val);
                                    if (sA ===  obj.state.val) {
                                        setState("sonoff.0.Wohnzimmerlampe.POWER"/*Wohnzimmerlampe POWER*/,true);
                                    } else if (sB ===  obj.state.val) {
                                        setState("sonoff.0.Wohnzimmerlampe.POWER"/*Wohnzimmerlampe POWER*/,false);
                                    }
                                });
                                

                                Warum `sudo` böse ist: https://forum.iobroker.net/post/17109

                                1 Antwort Letzte Antwort
                                0
                                • T Offline
                                  T Offline
                                  thomson
                                  schrieb am zuletzt editiert von
                                  #17

                                  ok. Jetzt habe ich es auch gesehen.

                                  Aber warum ändert sich der wert immer?

                                  Habe die Sonoff brige mit ESPurna 1.12.3.

                                  als FB SONOFF 433 mhz Fernbedienung

                                  Das ist mir vorher nicht aufegefallen das sich die Werte bei jedem Tastendruck ändern. Was kann ich dagegen tun?

                                  In ESPurna unter dem Punkt RFBRIDGE kann man Signale anlernen. Dort ändern sich der Wert auch

                                  1 Antwort Letzte Antwort
                                  0
                                  • BuZZyB Offline
                                    BuZZyB Offline
                                    BuZZy
                                    schrieb am zuletzt editiert von
                                    #18

                                    Wenn es immer nur die ersten paar Zeichen sind die sich ändern könnte man einfach prüfen ob der letzte Teil stimmt und den Anfang des empfangen Codes weglassen..

                                    Gruß

                                    1 Antwort Letzte Antwort
                                    0
                                    • T Offline
                                      T Offline
                                      thomson
                                      schrieb am zuletzt editiert von
                                      #19

                                      Das klingt gut. Wie kann ich das machen?

                                      Danke und gruß

                                      1 Antwort Letzte Antwort
                                      0
                                      • BuZZyB Offline
                                        BuZZyB Offline
                                        BuZZy
                                        schrieb am zuletzt editiert von
                                        #20
                                        on({id: "mqtt.0.ESPURNA_CB3A71.rfin"/*ESPURNA_CB3A71/rfin*/, change: "any"}, function (obj) {
                                            const sA = "FA03027F7CE2";        //Taste A
                                            const sB = "FA03027F7CE8";        //Taste B
                                            const val = obj.state.val;
                                            const code = val.substr(val.length - 12);
                                            if (code === sA) {
                                                setState("sonoff.0.Wohnzimmerlampe.POWER"/*Wohnzimmerlampe POWER*/,true);
                                            } else if (code === sB) {
                                                setState("sonoff.0.Wohnzimmerlampe.POWER"/*Wohnzimmerlampe POWER*/,false);
                                            }
                                        });
                                        

                                        So ungefähr - Prüfung auf die letzten 12 Zeichen im empfangenen Wert..

                                        Gruß

                                        1 Antwort Letzte Antwort
                                        0
                                        • AlCalzoneA Offline
                                          AlCalzoneA Offline
                                          AlCalzone
                                          Developer
                                          schrieb am zuletzt editiert von
                                          #21

                                          Oder kürzer:

                                          @BuZZy:

                                          // ...
                                              const code = obj.state.val.substr(-12);
                                          // ...
                                          
                                          ```` ` 

                                          Warum `sudo` böse ist: https://forum.iobroker.net/post/17109

                                          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

                                          463

                                          Online

                                          32.6k

                                          Benutzer

                                          81.9k

                                          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