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

    • Neuer Blog: Fotos und Eindrücke aus Solingen

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

    • ioBroker goes Matter ... Matter Adapter in Stable

    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

      @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

                                  964
                                  Online

                                  31.9k
                                  Users

                                  80.2k
                                  Topics

                                  1.3m
                                  Posts

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