Skip to content
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. JavaScript
  5. HowTo Frage: Selector.on mit change any

NEWS

  • Jahresrückblick 2025 – unser neuer Blogbeitrag ist online! ✨
    BluefoxB
    Bluefox
    16
    1
    1.6k

  • Neuer Blogbeitrag: Monatsrückblick - Dezember 2025 🎄
    BluefoxB
    Bluefox
    13
    1
    864

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    2.1k

HowTo Frage: Selector.on mit change any

Geplant Angeheftet Gesperrt Verschoben JavaScript
9 Beiträge 4 Kommentatoren 2.3k Aufrufe 2 Watching
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • K Offline
    K Offline
    Kamikaze
    schrieb am zuletzt editiert von
    #1

    Hallo,

    ich brauche wieder einmal Eure Hilfe. Ich suche schon seit Stunden und kann nichts brauchbares finden, wobei mein Anliegen eigentlich ganz einfach sein sollte:

    ich verwende einen Selector:

    var Selector_Homematic_Bewegung = $('channel[state.id=*.MOTION|*.PRESENCE_DETECTION_STATE](functions=Bewegung)');
    Selector_Homematic_Bewegung.on(function(obj) {
        var raum=room(obj);
        logs("Bewegugsmelder ausgelöst: "+ obj.name + " " + raum,"info","ffff00");
        raum_status_ermitteln();
    });
    
    

    Soweit funktioniert das auch, aber nur wenn sich der Zustand ändert.

    Nun meine Frage:

    Wie muss ich das Ereignis beschreiben, wenn alle Meldungen auslösen sollen.

    also so wie z.B.````
    on({id:/hm-rpc.2.*.1.PRESENCE_DETECTION_STATE/,change:'any'}, function (obj) { // Arbeitszimmer Präsenzmelder

    
    Vielen Dank für eure Hilfe
    1 Antwort Letzte Antwort
    0
    • DutchmanD Offline
      DutchmanD Offline
      Dutchman
      Developer Most Active Administrators
      schrieb am zuletzt editiert von
      #2

      Ich verstehe nicht ganz was du meinst :-).

      Der selector ist ein regex der also auf alles subscribet.

      Du möchtest aber nicht nur Änderungen sondern auch Updates als Event ?

      Wozu? Könntest du Mal den usw Case beschreiben?

      Sent from my iPhone using Tapatalk

      1 Antwort Letzte Antwort
      0
      • K Offline
        K Offline
        Kamikaze
        schrieb am zuletzt editiert von
        #3

        Der Hintergrund in meinem Fall ist folgender:

        Erste Bewegung erkannt –> Licht für 5 Minuten an, gesteuert durch ein Script, dass den Lichtaktor mit einem Timer für 300 Sekunden aktiviert.

        Es soll keine Direktverknüfung genutzt werden.

        Zweite Bewegung wird innerhalb der 5 Minuten erkannt --> Licht wird wieder auf 5 Minuten gesetzt.

        ... solange wie Bewegung erkannt wird, bleibt das Licht von der letzten Bewegung für 5 Minuten an.

        Wird in diesem Zeitraum keine Bewegung mehr erkannt, geht das Licht aus.

        Jetzt kommt mein Problem. Mein Selector reagiert aber erst, wenn garantiert keine Bewegung mehr erkannt wird, d.h. die zweite Bewegung löst den Trigger nicht aus.

        1 Antwort Letzte Antwort
        0
        • DutchmanD Offline
          DutchmanD Offline
          Dutchman
          Developer Most Active Administrators
          schrieb am zuletzt editiert von
          #4

          Du hast keinen ob in deinem Script?

           $(selector).on(function(obj) {});
          

          Sent from my iPhone using Tapatalk

          1 Antwort Letzte Antwort
          0
          • K Offline
            K Offline
            Kamikaze
            schrieb am zuletzt editiert von
            #5

            Hallo,

            das verstehe ich nicht. Das obj ist doch enthalten.

            var Selector_Homematic_Bewegung = $('channel[state.id=*.MOTION|*.PRESENCE_DETECTION_STATE](functions=Bewegung)');
            Selector_Homematic_Bewegung.on(function(obj) {
                var raum=room(obj);
                logs("Bewegugsmelder ausgelöst: "+ obj.name + " " + raum,"info","ffff00");
                raum_status_ermitteln();
            });
            
            

            und vom Grundsatz her funktioniert das ja auch, bei der ersten Bewegungserkennung löst dieses Script aus.

            Aber nicht wenn innerhalb der eingestellten Zeit die gleiche Meldung noch einmal kommt, nämlich Bewegung erkannt.

            Wenn ich das klassisch mache mit:

            on({id:/hm-rpc.0.MEQ0538238.1.MOTION/,change:'any'}, function (obj) {  // Arbeitszimmer Präsenzmelder
              var raum=room(obj);
              logs("Direktangabe Bewegugsmelder ausgelöst: "+ obj.name + " " + raum,"info","ffff00");
              raum_status_ermitteln();
            });
            
            

            funktioniert alles soweit, wie ich das wünsche. Der Grund hierfür liegt daran, dass ich hier change: ' any' angeben kann.

            1 Antwort Letzte Antwort
            0
            • DutchmanD Offline
              DutchmanD Offline
              Dutchman
              Developer Most Active Administrators
              schrieb am zuletzt editiert von
              #6

              Probier doch Mal den selector mit on wie in der Dokumentation beschrieben anstatt Variable

              Sent from my iPhone using Tapatalk

              1 Antwort Letzte Antwort
              0
              • paul53P Offline
                paul53P Offline
                paul53
                schrieb am zuletzt editiert von
                #7

                Probier es mal mit RegExp:

                on({id: /.*(\.MOTION|\.PRESENCE_DETECTION_STATE)/}, function (obj) { // triggert auf Aktualisierung
                

                Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
                Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

                1 Antwort Letzte Antwort
                0
                • K Offline
                  K Offline
                  Kamikaze
                  schrieb am zuletzt editiert von
                  #8

                  Hallo,

                  da ich deinen Hinweis in der Doku nicht finden konnte, habe ich jetzt hierfür einen Workaround gefunden.

                  Es hat den Anschein, dass Selector_Homematic_Bewegung.on(function(obj) {}) nur auf Änderung reagiert.

                  Jetzt habe ich mir folgendes gebastelt.

                  `var bewegungname = [],  bewegungid = [],       bewegungstatus = [];
                  // ------------------------------------------------------------------------------------------------------------------------------------------------------
                  // Bewegungsmelder zusammenstellen
                  // ------------------------------------------------------------------------------------------------------------------------------------------------------
                  var Selector_Homematic_Bewegung = $('channel[state.id=*.MOTION|*.PRESENCE_DETECTION_STATE](functions=Bewegung)');
                  Selector_Homematic_Bewegung.each(function (id,i) {
                  	bewegungname[i] = getObject(id).common.name;
                  	bewegungid[i] = id;
                  	bewegungstatus[i] = getState(id).val;
                  	log ("Bewegungsmelder Name: " + bewegungname[i] + " Status: " +  bewegungstatus[i]); // +JSON.stringify(getObject(id)
                  });
                  
                  on({id:bewegungid,change:'any'}, function (obj) {  // Arbeitszimmer Präsenzmelder
                    logs("03 Direktangabe Bewegugsmelder ausgelöst: "+ obj.name ,"info","ffff00");
                  
                  });` 
                  
                  Jetzt löst er auf jede Aktualisierung aus. 
                  
                  Vielleicht hat ja noch jemand eine bessere Lösung, aber ich finde die scheinbar nicht.
                  
                  Trotzdem Danke für Eure Hilfe.[/i][/i][/i][/i][/i]
                  
                  1 Antwort Letzte Antwort
                  0
                  • andreaskosA Offline
                    andreaskosA Offline
                    andreaskos
                    schrieb am zuletzt editiert von
                    #9

                    Da ich auch gerade nach diesem Thema gesucht habe und es ähnlich gemacht hab, hier noch eine Art, wie es noch einfacher geht. Einfach ein Array erstellen und darauf dann das ON lauschen lassen:

                    var IDs=[];
                    $(selector).each(function(id, i){
                       IDs.push(id) ;
                    });
                    
                    on({id: IDs, change: "any"}, function (obj){
                       // code
                    });
                    

                    LG, Andreas

                    1 Antwort Letzte Antwort
                    0
                    Antworten
                    • In einem neuen Thema antworten
                    Anmelden zum Antworten
                    • Älteste zuerst
                    • Neuste zuerst
                    • Meiste Stimmen


                    Support us

                    ioBroker
                    Community Adapters
                    Donate

                    838

                    Online

                    32.6k

                    Benutzer

                    82.1k

                    Themen

                    1.3m

                    Beiträge
                    Community
                    Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                    ioBroker Community 2014-2025
                    logo
                    • Anmelden

                    • Du hast noch kein Konto? Registrieren

                    • Anmelden oder registrieren, um zu suchen
                    • Erster Beitrag
                      Letzter Beitrag
                    0
                    • Home
                    • Aktuell
                    • Tags
                    • Ungelesen 0
                    • Kategorien
                    • Unreplied
                    • Beliebt
                    • GitHub
                    • Docu
                    • Hilfe