Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. if-Abfrage mit Zahl

    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-Abfrage mit Zahl

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

      Hallo,

      ich möchte gerne auf Basis einens states eine if-Abfrage machen. Der Philips Switch (via deconz) schaltet z.B. den state auf 1002 für Button 1 kurz gedrückt oder 4002 für Button 4 kurz gedrückt.

      Dabei springt er allerdigns nicht direkt auf den Wert, sondern z.B. von 0 -> 1001 -> 1002. Am Ende steht aber dauerhaft 1002 im state "buttonevent".

      Ich habe folgendes probiert:

      5ef6a430-868d-4468-8c9b-c98d1bc97d04-image.png

      Frage 1: Warum kann man keine Zahlen in eine if-Abrfage einbauen?
      Frage 2: Mit dem textfeld klappt es nicht. Dies könnte am Textfeld liegen oder daran, dass der state erst wechselt...

      entferne ich die if-Abfrage und steuere einfach nach dem Falls object klappt es. Also das light geht z.B. ab. Aber dann ist es egal welchen button ich für wie lange drücke 😉

      Was kann ich tun um es hin zu bekommen?

      1 Reply Last reply Reply Quote 0
      • T
        ticaki Developer last edited by

        Hallo,

        1. keine Ahnung 🙂
        2. das ist kein Text sondern ein Zahlenwert.

        So sollte es gehen:

        setzte das anerkannt ist noch auf "Befehl"

        Bildschirmfoto 2020-02-06 um 10.12.27.png

        1 Reply Last reply Reply Quote 0
        • D
          dehein2 last edited by

          @ticaki
          Danke.

          Ich habe es nun so geändert:

          4c2a93d2-3f80-47e3-a2d5-7a5f39877413-image.png

          1. Was macht die Umstllung auf Befehl genau?
          2. Leider klappt es nicht. Evtl. liegt es daran wie der state funktioniert: Ich drücke die Taste und in <1sek wechselt er von 0 auf 1000 auf 1002 auf 0.
          • Ist es so, dass dann das Falls Objekt 3x durchlaufen wird? Also einmal beim wechsel von 0->1000, dann 1000->1002 und ein letztes mal 1002 ->0

          VG

          1 Reply Last reply Reply Quote 0
          • T
            ticaki Developer last edited by ticaki

            bin in Bloody nicht so toll. Kannst du das in Javascript umwandeln und posten. 🙂 gibt oben einen Knopf um sich das Javascript anzuschauen das Bloody erzeugt

            1 Reply Last reply Reply Quote 0
            • D
              dehein2 last edited by

              @ticaki
              Gerne, Danke!

              var event1;
              
              
              on({id: 'deconz.0.Sensors.17.buttonpressed', change: "ne", ack: false}, function (obj) {
                var value = obj.state.val;
                var oldValue = obj.oldState.val;
                event1 = 1002;
                if ('deconz.0.Sensors.17.buttonpressed' == event1) {
                  setState("hue.0.Schlafzimmer_links.on"/*Schlafzimmer links.on*/, true);
                  setState("hue.0.Schlafzimmer_links.level"/*Schlafzimmer links.level*/, 100);
                }
              });
              
              1002;
              
              on({id: 'deconz.0.Sensors.17.buttonpressed', change: "ne", ack: false}, function (obj) {
                var value = obj.state.val;
                var oldValue = obj.oldState.val;
                event1 = 2002;
                if ('deconz.0.Sensors.17.buttonpressed' == event1) {
                  setState("hue.0.Schlafzimmer_links.on"/*Schlafzimmer links.on*/, true);
                  setState("hue.0.Schlafzimmer_links.level"/*Schlafzimmer links.level*/, 20);
                }
              });
              
              on({id: 'deconz.0.Sensors.17.buttonpressed', change: "ne", ack: false}, function (obj) {
                var value = obj.state.val;
                var oldValue = obj.oldState.val;
                event1 = 4002;
                if ('deconz.0.Sensors.17.buttonpressed' == event1) {
                  setState("hue.0.Schlafzimmer_links.on"/*Schlafzimmer links.on*/, true);
                }
              });
              
              1 Reply Last reply Reply Quote 0
              • T
                ticaki Developer last edited by

                Hehehe mein Fehler moment 🙂

                1 Reply Last reply Reply Quote 0
                • T
                  ticaki Developer last edited by

                  Bildschirmfoto 2020-02-06 um 10.33.56.png

                  Das anerkannt hab ich hier erläutert:

                  https://forum.iobroker.net/post/372192

                  1 Reply Last reply Reply Quote 0
                  • D
                    dehein2 last edited by

                    @ticaki

                    leider funktioniert es immer noch nicht

                    fa301576-9707-4f88-81ee-da6d9b73aa3e-image.png

                    1 Reply Last reply Reply Quote 0
                    • T
                      ticaki Developer last edited by ticaki

                      Was soll das Skript tun? Im Moment schaltet es die Lampe aus. Edit: und dann setzte es das level auf 100

                      1 Reply Last reply Reply Quote 0
                      • D
                        dehein2 last edited by

                        ja, das war nur ein Test. Aber wenn ich es wieder auf "egal" stelle funkioniert es scheinbar

                        1 Reply Last reply Reply Quote 0
                        • D
                          dehein2 last edited by

                          also so:
                          8ff8f475-3c3e-448d-853b-da8d91841fc1-image.png

                          Asgothian 1 Reply Last reply Reply Quote 0
                          • T
                            ticaki Developer last edited by ticaki

                            Bei geändert ist es auch egal 🙂

                            Ich verwende bri (0-255) und nicht level(0-100) hatte Probleme mit level am Anfang. Wollte es nur erwähnt haben.

                            1 Reply Last reply Reply Quote 0
                            • D
                              dehein2 last edited by

                              @ticaki
                              Jetzt beim test klappt es. Aber ich behalte es im Hinterkopf
                              Wenn du auch die Hue hast. Wie veränderst du die Farbwerte? Mit "xy"?

                              T 1 Reply Last reply Reply Quote 0
                              • T
                                ticaki Developer @dehein2 last edited by

                                @dehein2
                                Jo, Befehl funktioniert nicht... war zulange her dass ich mein dimmer skript geschrieben habe.

                                Ich verwende hue (0-359), hat aber eher was damit zu tun, das ich mich mit xy noch nicht auseinandergesetzt habe.

                                1 Reply Last reply Reply Quote 0
                                • Asgothian
                                  Asgothian Developer @dehein2 last edited by

                                  @dehein2

                                  Dieses Skript ist an mehreren stellen nicht optimal:

                                  • Es macht wenig Sinn erst Variablen Werte zuzuweisen, und diese dann abzufragen.
                                    Screenshot 2020-02-06 at 13.05.57.png
                                    Statt dessen kann direkt der Baustein
                                    Screenshot 2020-02-06 at 13.19.01.png
                                    an Stelle von
                                    Screenshot 2020-02-06 at 13.06.57.png eingesetzt werden

                                  • Des weiteren fragst du 4 mal nacheinander den gleichen Datenpunkt ab, der auch schon den Trigger auslöst. Dafür gibt es einen Extra Baustein im "Trigger" Bereich. (Siehe roter Pfeil im nächsten Bild)
                                    IMG_11E587E92EDA-1 2.jpeg
                                    An Stelle von Objekt ID kann dort Wert eingetragen werden, so das dieser Baustein an Stelle von
                                    Screenshot 2020-02-06 at 13.14.18.png
                                    eingesetzt werden kann. Damit sparst du dir das wiederholte Abfragen des Datenpunktes (und Damit Rechenleistung)

                                  • auch das Triggern auf Screenshot 2020-02-06 at 13.15.41.png
                                    ist nicht optimal, da der Datenpunkt bei einem Tastendruck den Status doppelt ändert, einmal auf z.Bsp. 1001, und danach dann auf 0. Damit wird der trigger 2 mal aktiv, um bei der zweiten Aktivierung ohne Aktion durch alle Falls Abfragen durchzulaufen.
                                    Besser ist es, an dieser stelle auf "ist grösser als vorher" zu stellen, dann wird der Trigger pro Tastendruck auch nur genau 1 mal aktiviert. (Spart auch wieder Rechenleistung)

                                  A.

                                  1 Reply Last reply Reply Quote 0
                                  • D
                                    dehein2 last edited by

                                    @Asgothian: super, vielen Dank für die Mühe!

                                    1 Reply Last reply Reply Quote 0
                                    • First post
                                      Last post

                                    Support us

                                    ioBroker
                                    Community Adapters
                                    Donate

                                    827
                                    Online

                                    31.9k
                                    Users

                                    80.1k
                                    Topics

                                    1.3m
                                    Posts

                                    blockly
                                    3
                                    16
                                    649
                                    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