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.
    • paul53
      paul53 @hanss last edited by

      @hanss said: wie erhalte ich den index?

      on({id: S_Raum, change: "ne"}, function(obj) {
        let index = S_Raum.indexOf(obj.id);
        let SollTemp_akt = obj.state.val;
        log('Neue '+D_Raum[index] + ' Temperatur: ' + SollTemp_akt);
      });
      
      hanss 1 Reply Last reply Reply Quote 0
      • 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

                          477
                          Online

                          31.8k
                          Users

                          80.0k
                          Topics

                          1.3m
                          Posts

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