Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. On()-Funktion - Reagieren auf _SHORT oder _LONG

    NEWS

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

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    On()-Funktion - Reagieren auf _SHORT oder _LONG

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

      @AndyUM61:

      Das gefällt mir sehr gut!!! `
      Das ist die Variante mit 2 mal on().

      Die verkürzte Schreibweise ohne geschweifte Klammern ist möglich, da nur eine einzelne Anweisung (Funktion: klingeln) ausgeführt werden muss.

      http://forum.iobroker.de/viewtopic.php?f=21&t=1305&p=10889&sid=8d66987961ab8b9ec660c280b994fba5&sid=8d66987961ab8b9ec660c280b994fba5#p10889 hatte ich allerdings schon mal die Erfahrung gemacht, dass es verkürzt nicht funktioniert. Das hat sich anscheinend inzwischen geändert !?

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

        @paul53:

        @AndyUM61:

        Das gefällt mir sehr gut!!! `
        Das ist die Variante mit 2 mal on().

        Die verkürzte Schreibweise ohne geschweifte Klammern ist möglich, da nur eine einzelne Anweisung (Funktion: klingeln) ausgeführt werden muss.

        http://forum.iobroker.de/viewtopic.php?f=21&t=1305&p=10889&sid=8d66987961ab8b9ec660c280b994fba5&sid=8d66987961ab8b9ec660c280b994fba5#p10889 hatte ich allerdings schon mal die Erfahrung gemacht, dass es verkürzt nicht funktioniert. Das hat sich anscheinend inzwischen geändert !? `
        Du hast "status()" geschrieben. Und ich ohne Klammern.

        Bei dir wolltest du das Ergebnis von Funktion status nutzen (Vermutlich "undefined") und ich habe die Funktionen eingegeben.

        BTW: Fehler mit RegExp habe ich gefixt.

        1 Reply Last reply Reply Quote 0
        • A
          AndyUM61 last edited by

          Also da ich ja für die ID's variablen verwende ist diese Variante für mich sehr gut nachvollziehbar.

          Auch wenn es eben 2 on()-Funktionen sind.

          Könnte man eigentlich der Funktion klingeln() eine Variable übergeben?

          Dann bräuchte ich nur eine Funktion, die in Abhängigkeit dieser Variable entsprechendes ausführt.

          Da wir zwei Klingeln haben, habe ich jetzt 4 on()-Funktionen, die hätte ich ja dann auch, und 2 klingeln()-Funktionen.

          Bin halt noch nicht soooo Weit mit dem Scripten, aber ich arbeite daran;).

          @Bluefox:

          Ist das normal, dass wenn man ein Script zum Editieren aufruft, das Editor-Fenster so weit unten geöffnet wird, dass man immer erst runter Scrollen muss? Ist ein wenig stressig, beim Experimentieren.

          Vielleicht mal beim nächsten Update…;)

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

            @Bluefox:

            Du hast "status()" geschrieben. Und ich ohne Klammern. `
            Und nur ohne Klammern funktioniert der Funktionsaufruf ?

            Javascript wird mir langsam unheimlich :roll:

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

              @AndyUM61:

              Also da ich ja für die ID's variablen verwende ist diese Variante für mich sehr gut nachvollziehbar.

              Auch wenn es eben 2 on()-Funktionen sind.

              Könnte man eigentlich der Funktion klingeln() eine Variable übergeben? `
              Ja natürlich:

              function klingeln(number) {
                  // mache irgendwas
                  log('Klingeklingelin ' + number);
              }
              on({id: hm-rpc.1.JEQ1234567.7.PRESS_SHORT, val: true}, function (){klingeln(1);});
              on({id: hm-rpc.1.JEQ1234567.7.PRESS_LONG, val: true}, function (){klingeln(2);});
              
              

              @AndyUM61:

              @Bluefox:

              Ist das normal, dass wenn man ein Script zum Editieren aufruft, das Editor-Fenster so weit unten geöffnet wird, dass man immer erst runter Scrollen muss? Ist ein wenig stressig, beim Experimentieren.

              Vielleicht mal beim nächsten Update…;) `

              Ich gehe davon aus, dass du mit dem Skript weiterarbeiten willst. :lol:

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

                @Bluefox:

                BTW: Fehler mit RegExp habe ich gefixt. `
                @AndyUM61: Hast Du die RegExp-Variante nach Update des Javascript-Adapters auf Version 1.1.1 nochmal getestet ?

                1 Reply Last reply Reply Quote 0
                • A
                  AndyUM61 last edited by

                  @paul53:

                  @AndyUM61: Hast Du die RegExp-Variante nach Update des Javascript-Adapters auf Version 1.1.1 nochmal getestet ? `

                  Nein, noch nicht.

                  Ich müsste ja einen Regulären Ausdruck für meine Variablennamen finden, so das natürlich geht.

                  Muss ich mir erst einmal ausprobieren.

                  Das mit diesen RegExp fiel mir - ehrlich gesagt - bei anderen Programmiersprachen schon immer sehr schwer;).

                  Ist ja auch wirklich recht unübersichtlich.

                  Aber ich werde es mit Sicherheit bei anderen Scripten mal versuchen.

                  Dankeschön trotzdem für den Tip:)!

                  1 Reply Last reply Reply Quote 0
                  • A
                    AndyUM61 last edited by

                    @Bluefox:

                    Ich gehe davon aus, dass du mit dem Skript weiterarbeiten willst. :lol: `

                    Aber du hast verstanden was ich meine;)?
                    518_script_editor.gif

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

                      Habe das folgende Script mit der Javascript-Adapter Version 1.1.1 getestet:

                      on({id: /^hm-rpc\.0\.BidCoS-RF\.1\.PRESS_.*$/, val:true}, function(dp) { 
                          log(dp.id);
                      });
                      
                      

                      und es funktioniert. Log:
                      ` > javascript-0 2015-12-16 21:15:51 info script.js._Multistate-Test: hm-rpc.0.BidCoS-RF.1.PRESS_LONG

                      javascript-0 2015-12-16 21:15:31 info script.js._Multistate-Test: hm-rpc.0.BidCoS-RF.1.PRESS_SHORT `

                      1 Reply Last reply Reply Quote 0
                      • A
                        AndyUM61 last edited by

                        Na ist doch klasse:).

                        …und wie würde das für die Variablen "klingel" und "klingel_long" aussehen?

                        Geht das denn mit Variablen?

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

                          @AndyUM61:

                          …und wie würde das für die Variablen "klingel" und "klingel_long" aussehen? `
                          Sollen die Variablen als Auslöser dienen:

                          on({id: /^javascript\.0\.klingel.*$/, val:true}, function(dp) {
                              log(dp.id);
                          });
                          
                          1 Reply Last reply Reply Quote 0
                          • A
                            AndyUM61 last edited by

                            Das hast du falsch verstanden.

                            Ich habe zur Vereinfachung halber die Actoren, also z.B. "hm-rpc.1.J…......" in Variablen, also z.B. "klingel" gepackt.

                            Diese verwende ich halt in den on()-Funktionen.

                            Ich mag meine Scripts möglichst universell, und brauche so eben nur jeweils den "Kopf" ändern.

                            Bei dem Klingelscript ist das nicht wirklich notwendig, aber bei meinen MQTT-Sensoren macht das schon Sinn.

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

                              Das Script mit den "hm-rpc.1.J…......" als Auslöser habe ich bereits gepostet.

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

                                @AndyUM61:

                                @Bluefox:

                                Ich gehe davon aus, dass du mit dem Skript weiterarbeiten willst. :lol: `

                                Aber du hast verstanden was ich meine;)? `
                                Nein. Habe ich nicht so verstanden.

                                Schiebe das Febster ein mal nach oben. Der wird dann die Position merken.

                                1 Reply Last reply Reply Quote 0
                                • A
                                  AndyUM61 last edited by

                                  @Bluefox:

                                  Kannst mir glauben, das Fenster habe ich Heute bestimmt 1000x nach oben geschoben.

                                  …immer wieder neu;).

                                  Sonst hätte ich ja auch nichts dazu geschrieben;).

                                  Benutze übrigens Firefox.

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

                                    @Bluefox:

                                    Du hast "status()" geschrieben. Und ich ohne Klammern.

                                    Bei dir wolltest du das Ergebnis von Funktion status nutzen (Vermutlich "undefined") und ich habe die Funktionen eingegeben. `
                                    Mit dem Ergebnis der Funktion hat es nichts zu tun.

                                    Es sollte lediglich ein Funktionsaufruf ohne Parameterübergabe sein. Macht man einen solchen Funktionsaufruf in einer extra Zeile - z.B. innerhalb einer Verbundanweisung, sind die Klammern erfoderlich.

                                    { funcXYZ();
                                    }
                                    ````funktioniert
                                    

                                    { funcXYZ;
                                    }

                                    
                                    EDIT: Habe noch etwas recherchiert: Callback-Funktionen müssen offenbar als anonyme Funktion (mit oder ohne Argumente)
                                    

                                    on(id, function(arg1, ...argN) {
                                    Funktion(en);
                                    });

                                    oder als Funktionsreferenz (ohne Argumente)
                                    

                                    on(id, FunktionXYZ);

                                    angegeben werden.
                                    1 Reply Last reply Reply Quote 0
                                    • Bluefox
                                      Bluefox last edited by

                                      @AndyUM61:

                                      @Bluefox:

                                      Kannst mir glauben, das Fenster habe ich Heute bestimmt 1000x nach oben geschoben.

                                      …immer wieder neu;).

                                      Sonst hätte ich ja auch nichts dazu geschrieben;).

                                      Benutze übrigens Firefox. `
                                      Versuche Cache zu löschen. Komplett

                                      1 Reply Last reply Reply Quote 0
                                      • R
                                        rascal last edited by

                                        Hey,

                                        frage von einem totalen JavaScript noob: Er schaltet mir die Var output2 nicht, was mache ich falsch?

                                        log("Test","info");
                                        
                                        //var input1 = "ping.0.input1";/*input1 bool*/ 
                                        //var input2 = "ping.0.input2";/*input2 zahl*/
                                        //var output1 = "ping.0.output1";/*output1 bool*/
                                        //var output2 = "ping.0.output2";/*output2 zahl*/
                                        
                                        function testfunc1() 
                                        {
                                            setState("ping.0.output1", true);
                                        }
                                        
                                        function testfunc2() 
                                        {
                                            setState("ping.0.output1", false);
                                        }
                                        
                                        on({id: "ping.0.input1", val: true}, testfunc1);
                                        on({id: "ping.0.input1", val: false}, testfunc2);
                                        
                                        

                                        305_heizungsscript_220_b14_temp.txt

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

                                        Support us

                                        ioBroker
                                        Community Adapters
                                        Donate

                                        1.1k
                                        Online

                                        31.7k
                                        Users

                                        79.7k
                                        Topics

                                        1.3m
                                        Posts

                                        5
                                        34
                                        2442
                                        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