Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Javaskript: Auf Listeneintrag triggern

    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

    Javaskript: Auf Listeneintrag triggern

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

      @paul53
      Super.
      Jetzt nur noch ein kleines Problem:

      Wie kann ich der Funktion xlog die Variable obj mitgeben?
      on({id: Target_Raum, change: "ne"}, xlog(obj)) funktioniert nicht

      on({id: Target_Raum, change: "ne"}, xlog)
      
      function xlog(obj){
          let index = S_Raum.indexOf(obj.id)
          let SollTemp_akt = obj.state.val
        log('Neue '+obj.channelName+' Temperatur: '+SollTemp_akt)     // ID: "alexa2.0.Smart-Home-Devices.bf2c0ac3-ee45-47ab-9151-d003cb270374"
        log('Index: '+index+'   Raum: '+D_Raum[index])
      }
      
      paul53 1 Reply Last reply Reply Quote 0
      • paul53
        paul53 @hanss last edited by paul53

        @hanss said: Wie kann ich der Funktion xlog die Variable obj mitgeben?

        Genau so, wenn Target_Raum das Array of IDs ist. Der Index muss dann auch von Target_Raum ermittelt werden.

        on({id: Target_Raum, change: "ne"}, xlog);
        

        Wenn xlog() auf mehrere Arrays anwendbar sein soll:

        on({id: Target_Raum, change: "ne"}, function(obj) {
           xlog(obj, Target_Raum);
        });
        
        hanss 2 Replies Last reply Reply Quote 0
        • hanss
          hanss @paul53 last edited by

          @paul53
          Das wäre ja genauso wie in meinem Beispiel.
          Wenn ich das so mache, dann wird index -1.

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

            @hanss said: Wenn ich das so mache, dann wird index -1.

            Ja, wenn Trigger-Array und Index-Array nicht identisch sind. Versuche es mal so:

            function xlog(obj, index, names){
                let SollTemp_akt = obj.state.val
                log('Neue '+obj.channelName+' Temperatur: '+SollTemp_akt)     // ID: "alexa2.0.Smart-Home-Devices.bf2c0ac3-ee45-47ab-9151-d003cb270374"
                log('Index: '+index+'   Raum: '+names[index])
            }
            
            on({id: Target_Raum, change: "ne"}, function(obj) {
               xlog(obj, Target_Raum.indexOf(obj.id), D_Raum);
            });
            
            hanss 1 Reply Last reply Reply Quote 0
            • hanss
              hanss @paul53 last edited by

              @paul53 said in Javaskript: Auf Listeneintrag triggern:

              @hanss said: Wie kann ich der Funktion xlog die Variable obj mitgeben?

              Genau so, wenn Target_Raum das Array of IDs ist. Der Index muss dann auch von Target_Raum ermittelt werden.

              on({id: Target_Raum, change: "ne"}, xlog);
              

              Wenn xlog() auf mehrere Arrays anwendbar sein soll:

              on({id: Target_Raum, change: "ne"}, function(obj) {
                 xlog(obj, Target_Raum);
              });
              

              Nur aus Interesse, für mich ist das sehr verwirrend:
              Gibt es dafür einen Grund, dass man bei on( callback zwar bei function(obj) einen Parameter angeben
              kann, aber nicht, wenn eine andere Funktion aufgerufen wird xlog?

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

                @hanss said: nicht, wenn eine andere Funktion aufgerufen wird xlog?

                Das musste ich zu Anfang auch lernen: Das ist kein Funktionsaufruf, sondern eine Funktions-Referenz. Was an die Callback-Funktion übergeben wird, bestimmt die aufrufende Funktion on(id, callback).

                function(obj) {}
                

                ist eine anonyme Callback-Funktion, bei der angegeben wird, mit welchem Bezeichner (obj) die Übergabe von Parametern an die Funktion erfolgt.

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

                  @paul53 sagte in Javaskript: Auf Listeneintrag triggern:

                  Hallo paul53,
                  on({id: Target_Raum, change: "ne"}

                  Der Trigger wird offensichtlich ausgelöst, wenn nicht alle Target_Raum gleich sind.

                  Wie erhalte ich einen Trigger, der nur dann auslöst, wenn sich ein oder mehrere Target_Raum verändert haben?
                  Also:
                  kein Trigger bei

                  1. Target_Raum [1,2,3,4,5,6,7,8]
                  2. Target_Raum [1,2,3,4,5,6,7,8]

                  1* Trigger bei

                  1. Target_Raum [1,2,3,4,5,6,7,8]
                  2. Target_Raum [5,2,3,4,5,6,7,8]

                  1* Trigger bei

                  1. Target_Raum [1,2,3,4,5,6,7,8]
                  2. Target_Raum [5,0,9,4,5,6,7,8]
                  paul53 1 Reply Last reply Reply Quote 0
                  • paul53
                    paul53 @hanss last edited by

                    @hanss sagte: wenn sich ein oder mehrere Target_Raum verändert haben?

                    Verstehe ich nicht. Getriggert wird, wenn sich in einem Target_Raum der Wert (targetSetpoint) ändert.

                    hanss 2 Replies Last reply Reply Quote 0
                    • hanss
                      hanss @paul53 last edited by hanss

                      @paul53

                      Das Beispiel ist so gemeint:
                      00:01 Uhr Target_Raum1 = 1; Target_Raum2 = 2; Target_Raum3 = 3 .....
                      00:02 Uhr Target_Raum1' Target_Raum2'Target_Raum3' ......

                      KEIN Trigger, wenn Target_Raum1 == Target_Raum1' && Target_Raum2 == Target_Raum2' ....
                      Trigger, wenn Target_Raum1 != Target_Raum1' || Target_Raum2 != Target_Raum2' ....

                      Es wird aber offensichtlich ein Trigger ausgelöst, wenn Target_Raum1 != Target_Raum2

                      d.h. change: "ne" soll nur jeweils den selben Raum betreffen.

                      kein Trigger bei
                      00:01 Uhr Target_Raum [1,2,3,4,5,6,7,8]
                      00:02 Uhr Target_Raum' [1,2,3,4,5,6,7,8]

                      1* Trigger bei
                      00:01 Uhr Target_Raum [1,2,3,4,5,6,7,8]
                      00:02 Uhr Target_Raum' [5,2,3,4,5,6,7,8]

                      1* Trigger bei
                      00:01 Uhr Target_Raum [1,2,3,4,5,6,7,8]
                      00:02 Uhr Target_Raum' [5,0,9,4,5,6,7,8]

                      Bitte um Nachricht, wenn es immer noch nicht klar ist, dann muß ich ein Beispiel programmieren.

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

                        @paul53
                        Entschuldige bitte, ich bin da einem Irrtum aufgesessen.
                        der on({id: Target_Raum, change: "ne"} Trigger bezieht sich tatsächlich
                        nur auf einen Target_Raum, so wie er soll.

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

                        Support us

                        ioBroker
                        Community Adapters
                        Donate

                        745
                        Online

                        31.8k
                        Users

                        80.0k
                        Topics

                        1.3m
                        Posts

                        5
                        22
                        1503
                        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