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. Frage: RegExp in on()

NEWS

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    22
    1
    1.1k

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

  • Monatsrückblick – September 2025
    BluefoxB
    Bluefox
    14
    1
    2.4k

Frage: RegExp in on()

Geplant Angeheftet Gesperrt Verschoben Skripten / Logik
28 Beiträge 7 Kommentatoren 6.1k 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.
  • ruhr70R Offline
    ruhr70R Offline
    ruhr70
    schrieb am zuletzt editiert von
    #1

    Eine Frage zu dem Thema RegExp

    In der Javascript-Beschreibung ist die Möglichkeit aufgeführt:

    Note: you can use RegExp directly:*

    on(/^system\.adapter\..*\.\d+\.memRss$/, function (obj) {
    });
    
    // same as
    on({id: /^system\.adapter\..*\.\d+\.memRss$/, "change": "ne"}, function (obj) {
    });
    
    

    Nun habe ich von RegExp keine Ahnung.

    Ich würde gerne die Zeile:

    on("javascript.1."+ hueSzenenApapterPfad + "wohnzimmer", function(obj) {
    
    

    verallgemeinern.

    on("javascript.1."+ hueSzenenApapterPfad + "wohnzimmer", function(obj) {

    hueSzenenApapterPfad enthält: hue.szenen.

    javascript.x soll immer funktionieren, egal in welcher Instanz das Script gestartet wurde.

    und bei wohnzimmer sollen alle vorhandenen Zimmer überwacht werden.

    Den Teil wohnzimmer benötige ich darüberhinaus als Variable, da ich diese im weiterem Script verwenden möchte.

    Kann mir da jemand helfen?

    Adapter: Fritzbox, Unify Circuit
    Skripte: dynamic hue, Bluetooth Scan, Multi-Ereignisliste

    1 Antwort Letzte Antwort
    0
    • BluefoxB Offline
      BluefoxB Offline
      Bluefox
      schrieb am zuletzt editiert von
      #2

      Ich muss klären. Welche teile von

      "javascript.1.hue.szenen.wohnzimmer"

      sind variabel?

      1

      wohnzimmer

      ?

      on(/^javascript\.\d+hue\.szenen\..*$/, function (obj) {
          var zimmer = obj.id.split('.').pop();
          log(zimmer);
      });
      
      1 Antwort Letzte Antwort
      0
      • ruhr70R Offline
        ruhr70R Offline
        ruhr70
        schrieb am zuletzt editiert von
        #3

        @Bluefox:

        Ich muss klären. Welche teile von

        "javascript.1.hue.szenen.wohnzimmer"

        sind variabel?

        1

        wohnzimmer

        ? `

        1 kann sich ändern. Die Javascript-Adapter-Instanz.

        wohnzimmer kann sich ebenfalls ändern. Das ist der Gruppenname.

        Folgende Zeile funktioniert:

        on(/^javascript\.1\.hue\.szene\..*$/, function (obj) {
        

        Wenn ich die Instanz noch variable mache, greift es nicht:

        on(/^javascript\.d+\.hue\.szene\..*$/, function (obj) {
        

        Ich bin schon einmal ein Schritt weiter. Danke!

        Zwei Punkte sind noch offen:

        1.) die Instanznummer

        2.) der flexible Teil, der als Variable hinterlegt ist ("hue.szene" in der Variable hueSzenenApapterPfad)

        Kann man das überhaupt realisieren?

        Hast Du da noch einen Tipp?

        Adapter: Fritzbox, Unify Circuit
        Skripte: dynamic hue, Bluetooth Scan, Multi-Ereignisliste

        1 Antwort Letzte Antwort
        0
        • BluefoxB Offline
          BluefoxB Offline
          Bluefox
          schrieb am zuletzt editiert von
          #4

          @ruhr70:

          @Bluefox:

          Ich muss klären. Welche teile von

          "javascript.1.hue.szenen.wohnzimmer"

          sind variabel?

          1

          wohnzimmer

          ? `

          1 kann sich ändern. Die Javascript-Adapter-Instanz.

          wohnzimmer kann sich ebenfalls ändern. Das ist der Gruppenname.

          Folgende Zeile funktioniert:

          on(/^javascript\.1\.hue\.szene\..*$/, function (obj) {
          

          Wenn ich die Instanz noch variable mache, greift es nicht:

          on(/^javascript\.d+\.hue\.szene\..*$/, function (obj) {
          

          Ich bin schon einmal ein Schritt weiter. Danke!

          Zwei Punkte sind noch offen:

          1.) die Instanznummer

          2.) der flexible Teil, der als Variable hinterlegt ist ("hue.szene" in der Variable hueSzenenApapterPfad)

          Kann man das überhaupt realisieren?

          Hast Du da noch einen Tipp? `
          Du hast Backslash vergessen:

          on(/^javascript.\d+.hue.szene..*$/, function (obj) {

          var reg = new RegExp("^javascript\\.\\d+\\." + hueSzenenApapterPfad.replace('.', '\\.') + ".*$");
          on(reg , function (obj) {
          
          
          1 Antwort Letzte Antwort
          0
          • ruhr70R Offline
            ruhr70R Offline
            ruhr70
            schrieb am zuletzt editiert von
            #5

            Verdammte Tat ;-)

            Das würde es erklären!

            Danke auch für die Ergänzung mit der Variable im RegExp. Werde ich direkt nachher versuchen :)

            Adapter: Fritzbox, Unify Circuit
            Skripte: dynamic hue, Bluetooth Scan, Multi-Ereignisliste

            1 Antwort Letzte Antwort
            0
            • ruhr70R Offline
              ruhr70R Offline
              ruhr70
              schrieb am zuletzt editiert von
              #6

              Danke!!!

              Klappt super :-)

              Warum in der Funktion einfache Backslash reichen und im String doppelte sein müssen, schaue ich mir an ;-)

              Adapter: Fritzbox, Unify Circuit
              Skripte: dynamic hue, Bluetooth Scan, Multi-Ereignisliste

              1 Antwort Letzte Antwort
              0
              • bentschikB Offline
                bentschikB Offline
                bentschik
                schrieb am zuletzt editiert von
                #7

                Hallo,

                Ich bin neu beim ioBroker und bin gerade ausgiebig am Testen. Bei mir läuft derzeit alles mit CCU.IO und eigener Visualisierung völlig problemlos, aber mit ioBoker hoffe ich, mittelfristig alle Programme aus der CCU rauswerden zu können und eine ordentliche Script-Sprache als Werkzeug zur Verfügung zu haben. Die ersten Tests sehen sehr gut aus. Meinen Glückwunsch und vollen Respekt für diese Entwicklungsleistung und weiter so! Die ersten kleineren Programme werden wohl bald zu ioBroker migrieren können, wenn die Stabilität des Gesamtsystems passt.

                Jetzt hänge ich allerdings bei einer Kleinigkeit mit den RegExps in on(). Die scheinen nicht mit {name:…} zu funktionieren, sondern offenbar nur mit id. Ist das korrekt beobachtet?

                Ich habe meine RPC-Objekte mit einen für mich sinnigen Namen versehen (Beispiel: /Wohnzimmer/Tuer/DGK:1.STATE für einen Drehgriffkontakt). Jetzt hatte ich gehofft, dass ich mittels RegExp auf on({name:..} mehrere states mit einem on() erschlagen kann, zum Beispiel für einen optischen TFK, der zusätzlich zu den DGK an jeder Tür sitzt.

                Beste Grüsse,

                bentschik

                1 Antwort Letzte Antwort
                0
                • BluefoxB Offline
                  BluefoxB Offline
                  Bluefox
                  schrieb am zuletzt editiert von
                  #8

                  War ein Fehler drin. Ist gefixt in 1.0.0

                  1 Antwort Letzte Antwort
                  0
                  • P Offline
                    P Offline
                    pix
                    schrieb am zuletzt editiert von
                    #9

                    @Bluefox:

                    Ist gefixt in 1.0.0 `
                    Glückwunsch zur 1 des Javacript-Adapters! :lol:

                    Grüße,

                    Pix

                    ioBroker auf Ubuntu in Proxmox (früher Mac mini (bis OS X 10.12.6 Sierra), VIS via iOS; angeschlossen: Homematic CCU2, Homepilot 1, ConBee II, einige Wemos, Sonos, Unifi CK+Protect, Homekit, Homebridge; KEIN blockly! Github-Profil

                    1 Antwort Letzte Antwort
                    0
                    • bentschikB Offline
                      bentschikB Offline
                      bentschik
                      schrieb am zuletzt editiert von
                      #10

                      Bestätigt.

                      Bluefox, ich Danke dir!

                      Gruss,

                      Bentschik

                      1 Antwort Letzte Antwort
                      0
                      • bentschikB Offline
                        bentschikB Offline
                        bentschik
                        schrieb am zuletzt editiert von
                        #11

                        Hallo,

                        Eine weitere Frage, oder auch Feature-Request zu dem Thema:

                        Innerhalb einer eigenen setSubscription-Funktion baue ich die RegExp für on() dynamisch zusammen, um mir das Escaping der regExp-spezifischen Zeichen zu sparen.

                        Ein setSubscription-Aufruf würde so aussehen:

                        setSubscription("/AZB/Tuer-R");
                        
                        

                        Das Escaping übernimmt die setSubscription-Funktion und übergibt die fertige RegExp an on().

                        Bei der regexp-Syntax von on() kann ich keine Variablen unterbingen:

                        on({name:/\/AZB\/Tuer-R\/.*?\:1\.STATE$/,change:"ne"}, function(obj) {
                        
                        

                        Wenn ich die RegExp als String behandle, wird sie nicht mehr als RegExp erkannt.

                        Daher hatte ich den Gedanken, anstatt der regExp ein regExp-Objekt zu übergeben. Das scheint allerdings nicht zu funktionieren. Stumpfer Test:

                        var r = new RegExp("\/AZB\/Tuer-R\/.*?\:1\.STATE$");
                        on({name:r,change:"ne"}, function(obj) {
                        ...
                        
                        

                        Die Verwendung eines RegExp-Objekts als value für name wäre daher vielleicht eine gute Ergänzung, ausser, es gibt noch einen anderen Workaround, um Variablen bei on() in eine RegExp zu bekommen.

                        Beste Grüsse,

                        Bentschik

                        1 Antwort Letzte Antwort
                        0
                        • BluefoxB Offline
                          BluefoxB Offline
                          Bluefox
                          schrieb am zuletzt editiert von
                          #12

                          Das muss gehen.

                          Gib einen Beispiel, welcher durch diesen RegExp erkannt werden muss.

                          1 Antwort Letzte Antwort
                          0
                          • bentschikB Offline
                            bentschikB Offline
                            bentschik
                            schrieb am zuletzt editiert von
                            #13

                            Hi Bluefox,

                            Ich habe mal die Instanz des Javascript-Adapters neugestartet, nachdem zu meintest, dass das laufen müsste. Jetzt funktioniert es mit den RegExp-Objekt. Also alles gut!

                            Danke & beste Grüsse,

                            Bentschik

                            1 Antwort Letzte Antwort
                            0
                            • blauholstenB Offline
                              blauholstenB Offline
                              blauholsten
                              Developer
                              schrieb am zuletzt editiert von
                              #14

                              Hi,

                              muss das Thema nochmal hoch holen!

                              Ich würde auch gern mithilfe von RegExp mehrer Signale in einen On Aufruf packen. (Falls das geht)

                              Ich komme leider nicht weiter, habe schon tausend Sachen probiert, und muss jetzt leider aufgeben. :cry:

                              var a = "hm-rpc.0.MEQ075xxxx.1.STATE";
                              var b = "hm-rpc.0.MEQ075xxxx.1.STATE";
                              var c = "hm-rpc.0.MEQ075xxxx.1.STATE";
                              
                              var x = new RegExp("?????");
                              
                              on({id: x, val: true}, function(dp)
                              {
                                  log('haut hin');
                              
                              });
                              

                              Entwickler vom: - Viessman Adapter
                              - Alarm Adapter

                              1 Antwort Letzte Antwort
                              0
                              • ruhr70R Offline
                                ruhr70R Offline
                                ruhr70
                                schrieb am zuletzt editiert von
                                #15

                                @blauholsten:

                                Hi,

                                muss das Thema nochmal hoch holen!

                                Ich würde auch gern mithilfe von RegExp mehrer Signale in einen On Aufruf packen. (Falls das geht)

                                Ich komme leider nicht weiter, habe schon tausend Sachen probiert, und muss jetzt leider aufgeben. :cry:

                                var a = "hm-rpc.0.MEQ075xxxx.1.STATE";
                                var b = "hm-rpc.0.MEQ075xxxx.1.STATE";
                                var c = "hm-rpc.0.MEQ075xxxx.1.STATE";
                                
                                var x = new RegExp("?????");
                                
                                on({id: x, val: true}, function(dp)
                                {
                                    log('haut hin');
                                    
                                });
                                ```` `  
                                

                                Probier mal:

                                var a = "hm-rpc.0.MEQ075xxxx.1.STATE";
                                var b = "hm-rpc.0.MEQ075xxxx.1.STATE";
                                var c = "hm-rpc.0.MEQ075xxxx.1.STATE";
                                
                                var x = /\hm-rpc\.0\.MEQ075[0-9]{4}\.1\.STATE$/; 
                                
                                on(x, function(obj) {
                                 if (obj.state.val) log('haut hin');    
                                });
                                

                                Keine Ahnung, ob es passt. RegEx ist ein Buch mit sieben Siegeln.

                                Hab das mal so unter https://regex101.com/#javascript zusammengeklickt.

                                Adapter: Fritzbox, Unify Circuit
                                Skripte: dynamic hue, Bluetooth Scan, Multi-Ereignisliste

                                1 Antwort Letzte Antwort
                                0
                                • ruhr70R Offline
                                  ruhr70R Offline
                                  ruhr70
                                  schrieb am zuletzt editiert von
                                  #16

                                  oder:

                                  var x = new RegExp("\hm-rpc\.0\.MEQ075[0-9]{4}\.1\.STATE$");
                                  on({id:x,change:'ne'}, function (obj) {
                                   if (obj.state.val) log('haut hin');    
                                  });
                                  
                                  

                                  Adapter: Fritzbox, Unify Circuit
                                  Skripte: dynamic hue, Bluetooth Scan, Multi-Ereignisliste

                                  1 Antwort Letzte Antwort
                                  0
                                  • blauholstenB Offline
                                    blauholstenB Offline
                                    blauholsten
                                    Developer
                                    schrieb am zuletzt editiert von
                                    #17

                                    @ruhr70:

                                    oder:

                                    var x = new RegExp("\hm-rpc\.0\.MEQ075[0-9]{4}\.1\.STATE$");
                                    on({id:x,change:'ne'}, function (obj) {
                                     if (obj.state.val) log('haut hin');    
                                    });
                                    
                                    ```` `  
                                    

                                    Hi,

                                    haut hin! :)

                                    Ich habe nur gedacht, man könne das "variabel" machen. Und dadurch mehrere Trigger in einen on erschlagen.

                                    Entwickler vom: - Viessman Adapter
                                    - Alarm Adapter

                                    1 Antwort Letzte Antwort
                                    0
                                    • ruhr70R Offline
                                      ruhr70R Offline
                                      ruhr70
                                      schrieb am zuletzt editiert von
                                      #18

                                      @blauholsten:

                                      Ich habe nur gedacht, man könne das "variabel" machen. Und dadurch mehrere Trigger in einen on erschlagen. `

                                      Danke für die Rückmeldung!

                                      Das wiederum verstehe ich nun nicht. Das ist doch variabel und Du hast alle drei Trigger in einem on.

                                      Adapter: Fritzbox, Unify Circuit
                                      Skripte: dynamic hue, Bluetooth Scan, Multi-Ereignisliste

                                      1 Antwort Letzte Antwort
                                      0
                                      • blauholstenB Offline
                                        blauholstenB Offline
                                        blauholsten
                                        Developer
                                        schrieb am zuletzt editiert von
                                        #19

                                        Hi,

                                        ich ist sicherlich von mir blöd gewählt dass alles drei HomeMatic Kontakte sind. Stellt man sich aber vor man hat 15 verschiedene Datenpunkte, ….....

                                        Aber eigentlich ist es nur rein Interesse halber, ob es möglich wäre.

                                        Entwickler vom: - Viessman Adapter
                                        - Alarm Adapter

                                        1 Antwort Letzte Antwort
                                        0
                                        • P Offline
                                          P Offline
                                          pix
                                          schrieb am zuletzt editiert von
                                          #20

                                          Zur Not kannst du alle Datenpunkte einem Gewerk (homematic) oder Aufzählung (ioBroker) zuordnen und das dann abfragen. Gab's hier ja schon häufiger.

                                          Gruß

                                          Pix

                                          ioBroker auf Ubuntu in Proxmox (früher Mac mini (bis OS X 10.12.6 Sierra), VIS via iOS; angeschlossen: Homematic CCU2, Homepilot 1, ConBee II, einige Wemos, Sonos, Unifi CK+Protect, Homekit, Homebridge; KEIN blockly! Github-Profil

                                          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

                                          332

                                          Online

                                          32.5k

                                          Benutzer

                                          81.7k

                                          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