Skip to content
  • 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
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. If else if Anweisung

NEWS

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

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

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

If else if Anweisung

Geplant Angeheftet Gesperrt Verschoben Skripten / Logik
24 Beiträge 4 Kommentatoren 4.8k 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.
  • 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
                    • T Offline
                      T Offline
                      thomson
                      schrieb am zuletzt editiert von
                      #22

                      Ich danke euch. Das läuft so 🙂

                      Und wieder ein wenig schlauer…

                      Dennoch komisch. ich habe erwartet das der code der FB immer gleich ist....

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

                        Wahrscheinlich ist die eine Ziffer eine fortlaufende Sequenz, das ist bei dem ein oder anderen Protokoll auch so.

                        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
                          #24

                          okay. Aber nun weiß ich worauf ich achten mus

                          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

                          541

                          Online

                          32.4k

                          Benutzer

                          81.4k

                          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
                          • Aktuell
                          • Tags
                          • Ungelesen 0
                          • Kategorien
                          • Unreplied
                          • Beliebt
                          • GitHub
                          • Docu
                          • Hilfe