Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. If else if Anweisung

    NEWS

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    If else if Anweisung

    This topic has been deleted. Only users with topic management privileges can see it.
    • T
      thomson last edited by

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

      Es ändert sich nichts

      1 Reply Last reply Reply Quote 0
      • AlCalzone
        AlCalzone Developer last edited by

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

        log(obj.state.val);
        
        1 Reply Last reply Reply Quote 0
        • BuZZy
          BuZZy last edited by

          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 Reply Last reply Reply Quote 0
          • arteck
            arteck Developer Most Active last edited by

            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);
                    }
             });
            
            1 Reply Last reply Reply Quote 0
            • T
              thomson last edited by

              log(obj.state.val);

              habe ich gemacht. Die Werte kommen richtig an

              1 Reply Last reply Reply Quote 0
              • T
                thomson last edited by

                @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 Reply Last reply Reply Quote 0
                • BuZZy
                  BuZZy last edited by

                  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 Reply Last reply Reply Quote 0
                  • T
                    thomson last edited by

                    ~~![](</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 Reply Last reply Reply Quote 0
                    • T
                      thomson last edited by

                      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 Reply Last reply Reply Quote 0
                      • T
                        thomson last edited by

                        Keiner eine Idee. Ich bin hier am verzweifeln

                        1 Reply Last reply Reply Quote 0
                        • T
                          thomson last edited by

                          @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 Reply Last reply Reply Quote 0
                          • AlCalzone
                            AlCalzone Developer last edited by

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

                            1 Reply Last reply Reply Quote 0
                            • T
                              thomson last edited by

                              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 Reply Last reply Reply Quote 0
                              • AlCalzone
                                AlCalzone Developer last edited by

                                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);
                                    }
                                });
                                
                                1 Reply Last reply Reply Quote 0
                                • T
                                  thomson last edited by

                                  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 Reply Last reply Reply Quote 0
                                  • BuZZy
                                    BuZZy last edited by

                                    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 Reply Last reply Reply Quote 0
                                    • T
                                      thomson last edited by

                                      Das klingt gut. Wie kann ich das machen?

                                      Danke und gruß

                                      1 Reply Last reply Reply Quote 0
                                      • BuZZy
                                        BuZZy last edited by

                                        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 Reply Last reply Reply Quote 0
                                        • AlCalzone
                                          AlCalzone Developer last edited by

                                          Oder kürzer:

                                          @BuZZy:

                                          // ...
                                              const code = obj.state.val.substr(-12);
                                          // ...
                                          
                                          ```` ` 
                                          1 Reply Last reply Reply Quote 0
                                          • T
                                            thomson last edited by

                                            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 Reply Last reply Reply Quote 0
                                            • First post
                                              Last post

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            778
                                            Online

                                            31.7k
                                            Users

                                            79.9k
                                            Topics

                                            1.3m
                                            Posts

                                            4
                                            24
                                            4407
                                            Loading More Posts
                                            • Oldest to Newest
                                            • Newest to Oldest
                                            • Most Votes
                                            Reply
                                            • Reply as topic
                                            Log in to reply
                                            Community
                                            Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                                            The ioBroker Community 2014-2023
                                            logo