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

  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. On(); mehrere Bedingungen in einem on()?

NEWS

  • UPDATE 31.10.: Amazon Alexa - ioBroker Skill läuft aus ?
    apollon77A
    apollon77
    48
    3
    8.2k

  • Monatsrückblick – September 2025
    BluefoxB
    Bluefox
    13
    1
    1.9k

  • Neues Video "KI im Smart Home" - ioBroker plus n8n
    BluefoxB
    Bluefox
    15
    1
    2.2k

On(); mehrere Bedingungen in einem on()?

Geplant Angeheftet Gesperrt Verschoben Skripten / Logik
24 Beiträge 6 Kommentatoren 6.0k Aufrufe
  • Ä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.
  • andreaskosA Offline
    andreaskosA Offline
    andreaskos
    schrieb am zuletzt editiert von
    #9

    Ah, jetzt bin ich auf der richtigen Spur, denk ich: man benötigt dafür den $-Selector !!

    Hab ein Beispiel probiert. Wenn irgendein Licht an- oder abgeht, dann soll eine Aktion ausgeführt werden, also:

    $('channel[state.id=*.STATE](functions=Licht)').on(function(obj) {
            console.log("Dieses Licht wurde geschaltet: "  + obj.id);
    });
    
    

    Gleiches geht eben auch mit in Enums zusammengefassten Tastern, so hast du's gemeint Dutchman, oder?

    D.h. man braucht nur mehr die Enum angreifen und ändern, aber nicht mehr ins Skript.

    Cool!

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

      @andreaskos:

      Gleiches geht eben auch mit in Enums zusammengefassten Tastern, so hast du's gemeint Dutchman, oder?

      D.h. man braucht nur mehr die Enum angreifen und ändern, aber nicht mehr ins Skript.

      Cool! `

      Genau :)

      –-----------------------

      Send from mobile device

      Das schöne ios hat Auto Korrektur zum k****

      Wer Schreibfehler findet darf sie behalten oder auf eBay verkaufen, mindest Umsatz 10% für die community

      1 Antwort Letzte Antwort
      0
      • S Offline
        S Offline
        stan23
        schrieb am zuletzt editiert von
        #11

        Hallo,

        funktioniert das auch mit Enums auf der admin-Oberfläche?

        // Triggern Tastendruck
        on({id: "enum.tasterrollo.tasterrollohocheg", change: "ne"}, function (obj) {
        
        

        3680_enum.png

        Das Log zeigt nämlich dass es als Pattern erkannt wird und der Trigger greift nicht.
        > script.js.common.Rollos.RolloHochEgDoppelklick: subscribe: {"pattern":{"id":"enum.tasterrollo.tasterrollohocheg","change":"ne"},"name":"script.js.common.Rollos.RolloHochEgDoppelklick"}

        Oder muss das Enum im gleichen Skript definiert werden?

        Viele Grüße
        Marco

        1 Antwort Letzte Antwort
        0
        • andreaskosA Offline
          andreaskosA Offline
          andreaskos
          schrieb am zuletzt editiert von
          #12

          Das Enum kann ganz normal in der Admin-Oberfläche definiert werden.

          Die on-Funktion wird dann über den $-Selektor ausgelöst, d.h. in deinem Fall (stan23) wäre das etwa so:

          $('state(tasterrollo=tasterrollohocheg)').on(function(obj) {
          
                  console.log("Ausgelöst hat: "  + obj.id);
          
          });
          
          

          Ich hab außerdem gemerkt, dass Änderungen von Enums oft nicht sofort vom ioBroker übernommen werden. Nach einem Befehl über die Kommandozeile sollte es dann gehen:

          iobroker stop && iobroker start
          
          
          1 Antwort Letzte Antwort
          0
          • S Offline
            S Offline
            stan23
            schrieb am zuletzt editiert von
            #13

            Hi Andreas,

            weißt du auch wie ich die State-Änderung "any" spezifizieren kann?

            Mit dem Beispiel ergibt sich folgendes:

             script.js.common.Rollos.RolloOgDoppelklick: subscribe: {"pattern":{"id":"hm-rpc.0.LEQ1322734.2.PRESS_SHORT","change":"ne"},"name":"script.js.common.Rollos.RolloOgDoppelklick"}
             ... für alle Enum-Members
            

            https://github.com/ioBroker/ioBroker.javascript/blob/master/doc/en/javascript.md#–-selector habe ich auf Anhieb nichts passendes gefunden.

            Viele Grüße
            Marco

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

              @andreaskos:

              Ich hab außerdem gemerkt, dass Änderungen von Enums oft nicht sofort vom ioBroker übernommen werden. Nach einem Befehl über die Kommandozeile sollte es dann gehen: `

              Fast richtig, der JavaScript adapter liest bei einen Script (oder Adapter Start zweifele jetzt) alle enums und dessen Inhalte aus.

              Erweiterst/änderst du objecte darin musst das neu geladen werden.

              Kompletter ioBroker Reboot ist Scherz völlig übertrieben, JavaScript Instanz neu starten reicht.

              (Eventuell reicht sogar einfach Script neu starten wie gesagt bin mir nicht ganz sicher)

              –-----------------------

              Send from mobile device

              Das schöne ios hat Auto Korrektur zum k****

              Wer Schreibfehler findet darf sie behalten oder auf eBay verkaufen, mindest Umsatz 10% für die community

              1 Antwort Letzte Antwort
              0
              • andreaskosA Offline
                andreaskosA Offline
                andreaskos
                schrieb am zuletzt editiert von
                #15

                @Marco:

                Bin mir nicht ganz sicher was du meinst. Das Beispiel müsste schon bei jeder Änderung reagieren.

                @Dutchman:

                Vielen Dank für die Klärung!

                1 Antwort Letzte Antwort
                0
                • S Offline
                  S Offline
                  stan23
                  schrieb am zuletzt editiert von
                  #16

                  Hi Andreas,

                  in meinem Enum sind HomeMatic Wired Rolloaktoren (HMW-LC-Bl1-DR) aufgeführt, dies bei SHORT_PRESS immer nur TRUE aktualisieren, aber den Wert nicht ändern.

                  Der Trigger muss daher nicht auf ne (not equal) sondern auf any stehen.

                  Im erweiterten Log steht aber dass per default "change":"ne" ausgewählt ist:
                  > script.js.common.Rollos.RolloOgDoppelklick: subscribe: {"pattern":{"id":"hm-rpc.0.LEQ1322734.2.PRESS_SHORT",****"change":"ne"****},"name":"script.js.common.Rollos.RolloOgDoppelklick"}

                  Viele Grüße
                  Marco

                  1 Antwort Letzte Antwort
                  0
                  • andreaskosA Offline
                    andreaskosA Offline
                    andreaskos
                    schrieb am zuletzt editiert von
                    #17

                    Ah, verstehe! Ich hab hatte es bisher nur mit Lichtern ausprobiert. Diese ändern sich natürlich jedesmal, also geht es auch immer. Du hast recht Marco, die Taster frischen ihr "true" nur immer wieder auf, da geht es dann nicht mehr. Ich habe leider bislang auch noch keine Möglichkeit gefunden, das change: any im $-Selektor mit rein zu packen.

                    Kann uns jemand weiterhelfen?

                    1 Antwort Letzte Antwort
                    0
                    • T Offline
                      T Offline
                      Tefi
                      schrieb am zuletzt editiert von
                      #18

                      Irgendwie habe ich das noch nicht gepackt.

                      Ich füge die state aller Bewegungsmelder in enum.roomcontroller.kueche.motions.

                      subscribe ( {id: "enum.roomcontroller.kueche.motions", change: 'any'}, function (data) {
                          log('Test');
                      } );
                      
                      

                      Was ist da falsch?

                      Bei Bewegung wird nicht regaiert.

                      Besten Dnak für alle Tipps

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

                        @Tefi:

                        Was ist da falsch?

                        Bei Bewegung wird nicht regaiert. `
                        Man kann nicht auf enums triggern, sondern nur auf Datenpunkte. Will man enums auswerten, muss man den https://github.com/ioBroker/ioBroker.javascript/blob/master/doc/en/javascript.md#–-selector anwenden.

                        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
                        • T Offline
                          T Offline
                          Tefi
                          schrieb am zuletzt editiert von
                          #20

                          Ok, danke

                          enum.functions.Beleuchtung wurde bei der Installation des Adapeters angelegt und funktioniert:

                          const testDps = $('state(functions=Beleuchtung)');

                          testDps.each(function(id, i) {

                          log(id + ': ' + getState(id).val);

                          });

                          enum.roomcontroller.test abe ich von Hand angelegt und brings nichts, obwohl auf Datenpunkte vorhanden sind:

                          const testDps = $('state(roomcontroller=test)');
                          testDps.each(function(id, i) {
                              log(id + ': ' + getState(id).val);
                          });
                          
                          1 Antwort Letzte Antwort
                          0
                          • paul53P Offline
                            paul53P Offline
                            paul53
                            schrieb am zuletzt editiert von
                            #21

                            Wenn enum.roomcontroller.test und die Zuordnung der Datenpunkte neu ist, muss erst die JS-Instanz neu gestartet werden, damit der Selektor die Datenpunkte findet.
                            493_enum_neu.jpg
                            493_enum_neu_log.jpg

                            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
                            • T Offline
                              T Offline
                              Tefi
                              schrieb am zuletzt editiert von
                              #22

                              Super. Genau das war es.

                              Wie hole ich mir jetzt alle Enum's nicht die Mitglieder?

                              zB enum.functions =(Bewegung, Beleuchtung, usw)?

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

                                @Tefi:

                                Wie hole ich mir jetzt alle Enum's nicht die Mitglieder?

                                zB enum.functions =(Bewegung, Beleuchtung, usw)? `
                                Versuche es mal mit https://github.com/ioBroker/ioBroker.javascript/blob/master/doc/en/javascript.md#getenums.

                                `var functions = getEnums('functions');
                                for(var i = 0; i < functions.length; i++) {
                                   log(functions[i].name);
                                }`[/i]
                                

                                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
                                • T Offline
                                  T Offline
                                  Tefi
                                  schrieb am zuletzt editiert von
                                  #24

                                  Ja genau das war es.

                                  Besten Dank

                                  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

                                  188

                                  Online

                                  32.4k

                                  Benutzer

                                  81.4k

                                  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