Skip to content
  • Home
  • Recent
  • Tags
  • 0 Unread 0
  • Categories
  • Unreplied
  • Popular
  • 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

  • Default (No Skin)
  • No Skin
Collapse
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. [gelöst] RegEx im $ Selector möglich?

NEWS

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

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

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    2.2k

[gelöst] RegEx im $ Selector möglich?

Scheduled Pinned Locked Moved Skripten / Logik
26 Posts 2 Posters 1.7k Views 1 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • Ben1983B Offline
    Ben1983B Offline
    Ben1983
    wrote on last edited by Ben1983
    #1

    ist im Selector eine RegEx möglich?

    Oder nur eine WIldcard mit *?

    paul53P 1 Reply Last reply
    0
    • Ben1983B Ben1983

      ist im Selector eine RegEx möglich?

      Oder nur eine WIldcard mit *?

      paul53P Offline
      paul53P Offline
      paul53
      wrote on last edited by paul53
      #2

      @ben1983 sagte: ist im Selector eine RegEx möglich?

      Nein. Der Javascript-Adapter macht aus dem Selektor eine RegEx.

      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

      Ben1983B 1 Reply Last reply
      0
      • paul53P paul53

        @ben1983 sagte: ist im Selector eine RegEx möglich?

        Nein. Der Javascript-Adapter macht aus dem Selektor eine RegEx.

        Ben1983B Offline
        Ben1983B Offline
        Ben1983
        wrote on last edited by
        #3

        @paul53 Ah ok, danke.
        Ich war mir fast sicher ich hätte es schon mal gemacht, aber war wohl mit ne Wildcard.

        paul53P 1 Reply Last reply
        0
        • Ben1983B Ben1983

          @paul53 Ah ok, danke.
          Ich war mir fast sicher ich hätte es schon mal gemacht, aber war wohl mit ne Wildcard.

          paul53P Offline
          paul53P Offline
          paul53
          wrote on last edited by
          #4

          @ben1983 sagte: ich hätte es schon mal gemacht

          Im on() kann RegEx verwendet werden.

          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

          Ben1983B 1 Reply Last reply
          0
          • paul53P paul53

            @ben1983 sagte: ich hätte es schon mal gemacht

            Im on() kann RegEx verwendet werden.

            Ben1983B Offline
            Ben1983B Offline
            Ben1983
            wrote on last edited by Ben1983
            #5

            @paul53 Ich wollte gerade den Selector mit WIldcard benutzen ...

            $(`state[id=${idStartAutomatikstati}.*]`).each((id)=>{
                const elementname = id.substring(id.lastIndexOf(".") + 1,id.length);
                automatikstatus[elementname] = getState(id).val;
            });
            

            Funktioniert.

            Aber das hier:

            $(`state[id=${idStartAutomatikstati}.*]`).on((obj)=>{
                log(obj._id);
                const elementname = obj._id.substring(obj._id.lastIndexOf(".") + 1,obj._id.length);
                const value = getState(obj._id);
                log(elementname);
                automatikstatus[elementname] =  value.val;
                if(!value.ack){
                    setState(obj._id,value.val,true);
                }       
            });
            

            Da kommt in der ersten Zeile "undefined" als log und das on reagiert nur auf Änderung.
            Ist das mit der Änderung so korrekt. Damit könnte ich ja noch leben, aber warum ist obj._id undefined?

            Edit:

            OK, ich muss "id" nicht "_id" verwenden.

            paul53P 1 Reply Last reply
            0
            • Ben1983B Ben1983

              @paul53 Ich wollte gerade den Selector mit WIldcard benutzen ...

              $(`state[id=${idStartAutomatikstati}.*]`).each((id)=>{
                  const elementname = id.substring(id.lastIndexOf(".") + 1,id.length);
                  automatikstatus[elementname] = getState(id).val;
              });
              

              Funktioniert.

              Aber das hier:

              $(`state[id=${idStartAutomatikstati}.*]`).on((obj)=>{
                  log(obj._id);
                  const elementname = obj._id.substring(obj._id.lastIndexOf(".") + 1,obj._id.length);
                  const value = getState(obj._id);
                  log(elementname);
                  automatikstatus[elementname] =  value.val;
                  if(!value.ack){
                      setState(obj._id,value.val,true);
                  }       
              });
              

              Da kommt in der ersten Zeile "undefined" als log und das on reagiert nur auf Änderung.
              Ist das mit der Änderung so korrekt. Damit könnte ich ja noch leben, aber warum ist obj._id undefined?

              Edit:

              OK, ich muss "id" nicht "_id" verwenden.

              paul53P Offline
              paul53P Offline
              paul53
              wrote on last edited by
              #6

              @ben1983 sagte: Ist das mit der Änderung so korrekt.

              Ja.

              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

              Ben1983B 1 Reply Last reply
              0
              • paul53P paul53

                @ben1983 sagte: Ist das mit der Änderung so korrekt.

                Ja.

                Ben1983B Offline
                Ben1983B Offline
                Ben1983
                wrote on last edited by
                #7

                @paul53 So ist es jetzt eine allgemeine Lösung und ich kann über die States weitere Stati als element der internen Automatikstruktur hinzufügen.

                // automatikstati
                // Wildcard definieren
                let idStartAutomatikstati = "0_userdata.0.Produktiv.Pool.Waermepumpe.automatikstati";
                let automatikstatus = {};
                $(`state[id=${idStartAutomatikstati}.*]`).each((id)=>{
                    const elementname = id.substring(id.lastIndexOf(".") + 1,id.length);
                    automatikstatus[elementname] = getState(id).val;
                });
                
                $(`state[id=${idStartAutomatikstati}.*]`).on((obj)=>{
                    log(obj.id);
                    const elementname = obj.id.substring(obj.id.lastIndexOf(".") + 1,obj.id.length);
                    const value = getState(obj.id);
                    log(elementname);
                    automatikstatus[elementname] =  value.val;
                    if(!value.ack){
                        setState(obj.id,value.val,true);
                    }       
                });
                
                // Funktion zum setzen der Werte
                function setAutomatikstati(elementname){
                    setState(`${idStartAutomatikstati}.${elementname}`,automatikstatus[elementname],true);
                };
                
                paul53P 1 Reply Last reply
                0
                • Ben1983B Ben1983

                  @paul53 So ist es jetzt eine allgemeine Lösung und ich kann über die States weitere Stati als element der internen Automatikstruktur hinzufügen.

                  // automatikstati
                  // Wildcard definieren
                  let idStartAutomatikstati = "0_userdata.0.Produktiv.Pool.Waermepumpe.automatikstati";
                  let automatikstatus = {};
                  $(`state[id=${idStartAutomatikstati}.*]`).each((id)=>{
                      const elementname = id.substring(id.lastIndexOf(".") + 1,id.length);
                      automatikstatus[elementname] = getState(id).val;
                  });
                  
                  $(`state[id=${idStartAutomatikstati}.*]`).on((obj)=>{
                      log(obj.id);
                      const elementname = obj.id.substring(obj.id.lastIndexOf(".") + 1,obj.id.length);
                      const value = getState(obj.id);
                      log(elementname);
                      automatikstatus[elementname] =  value.val;
                      if(!value.ack){
                          setState(obj.id,value.val,true);
                      }       
                  });
                  
                  // Funktion zum setzen der Werte
                  function setAutomatikstati(elementname){
                      setState(`${idStartAutomatikstati}.${elementname}`,automatikstatus[elementname],true);
                  };
                  
                  paul53P Offline
                  paul53P Offline
                  paul53
                  wrote on last edited by
                  #8

                  @ben1983
                  Zeile 13 würde ich optimieren:

                      const value = obj.state;
                  

                  wobei der Bezeichner value nicht optimal ist. Es handelt sich um den Zustand (state).

                  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

                  Ben1983B 2 Replies Last reply
                  0
                  • paul53P paul53

                    @ben1983
                    Zeile 13 würde ich optimieren:

                        const value = obj.state;
                    

                    wobei der Bezeichner value nicht optimal ist. Es handelt sich um den Zustand (state).

                    Ben1983B Offline
                    Ben1983B Offline
                    Ben1983
                    wrote on last edited by Ben1983
                    #9

                    @paul53 stimmt.
                    ach den state liefert er grad mit. cool.

                    habe es dann so gemacht:

                    // automatikstati
                    // Wildcard definieren
                    let idStartAutomatikstati = "0_userdata.0.Produktiv.Pool.Waermepumpe.automatikstati";
                    let automatikstatus = {};
                    $(`state[id=${idStartAutomatikstati}.*]`).each((id)=>{
                        const elementname = id.substring(id.lastIndexOf(".") + 1,id.length);
                        automatikstatus[elementname] = getState(id).val;
                    });
                    
                    $(`state[id=${idStartAutomatikstati}.*]`).on((obj)=>{
                        if(!obj.state.ack){
                            const elementname = obj.id.substring(obj.id.lastIndexOf(".") + 1,obj.id.length);
                            automatikstatus[elementname] =  obj.state.val;
                            setState(obj.id,obj.state.val,true);
                        }       
                    });
                    
                    // Funktion zum setzen der Werte
                    function setAutomatikstati(elementname){
                        setState(`${idStartAutomatikstati}.${elementname}`,automatikstatus[elementname],true);
                    };
                    
                    // Automatikstati zurücksetzen
                    function setzeAutomatikstatiZurueck(){
                        for(const stati in automatikstatus){
                            automatikstatus[stati] = false;
                            setAutomatikstati(stati);
                        }
                    }
                    
                    1 Reply Last reply
                    0
                    • paul53P paul53

                      @ben1983
                      Zeile 13 würde ich optimieren:

                          const value = obj.state;
                      

                      wobei der Bezeichner value nicht optimal ist. Es handelt sich um den Zustand (state).

                      Ben1983B Offline
                      Ben1983B Offline
                      Ben1983
                      wrote on last edited by
                      #10

                      @paul53 Wenn ich im selctor das Objekt logge, dann kommt:

                      o	javascript.0 (3299) script.js.Garten.Pool.Wärmepumpe: {"id":"0_userdata.0.Produktiv.Pool.Waermepumpe.automatikstati.warteAufGeringeLeistung","newState":{"val":true,"ts":1686679813843,"ack":false,"lc":1686679813843,"from":"system.adapter.admin.0","q":0,"user":"system.user.admin"},"oldState":{"val":false,"ts":1686679759809,"ack":true,"lc":1686679759805,"from":"system.adapter.javascript.0","q":0,"c":"script.js.Garten.Pool.Wärmepumpe","user":"system.user.admin"},"state":{"val":true,"ts":1686679813843,"ack":false,"lc":1686679813843,"from":"system.adapter.admin.0","q":0,"user":"system.user.admin"}}
                      

                      aber es gibt ja auch obj.name

                      Warum taucht das nicht mit log(JSON.stringify(obj) auf?

                      paul53P 1 Reply Last reply
                      0
                      • Ben1983B Ben1983

                        @paul53 Wenn ich im selctor das Objekt logge, dann kommt:

                        o	javascript.0 (3299) script.js.Garten.Pool.Wärmepumpe: {"id":"0_userdata.0.Produktiv.Pool.Waermepumpe.automatikstati.warteAufGeringeLeistung","newState":{"val":true,"ts":1686679813843,"ack":false,"lc":1686679813843,"from":"system.adapter.admin.0","q":0,"user":"system.user.admin"},"oldState":{"val":false,"ts":1686679759809,"ack":true,"lc":1686679759805,"from":"system.adapter.javascript.0","q":0,"c":"script.js.Garten.Pool.Wärmepumpe","user":"system.user.admin"},"state":{"val":true,"ts":1686679813843,"ack":false,"lc":1686679813843,"from":"system.adapter.admin.0","q":0,"user":"system.user.admin"}}
                        

                        aber es gibt ja auch obj.name

                        Warum taucht das nicht mit log(JSON.stringify(obj) auf?

                        paul53P Offline
                        paul53P Offline
                        paul53
                        wrote on last edited by paul53
                        #11

                        @ben1983 sagte: es gibt ja auch obj.name

                        obj.name gibt es nicht.

                        @ben1983 sagte in [gelöst] RegEx im $ Selector möglich?:

                        Warum taucht das nicht mit log(JSON.stringify(obj) auf?

                        Das habe ich mich auch schon gefragt. Logge mal obj.common.

                        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

                        Ben1983B 1 Reply Last reply
                        0
                        • paul53P paul53

                          @ben1983 sagte: es gibt ja auch obj.name

                          obj.name gibt es nicht.

                          @ben1983 sagte in [gelöst] RegEx im $ Selector möglich?:

                          Warum taucht das nicht mit log(JSON.stringify(obj) auf?

                          Das habe ich mich auch schon gefragt. Logge mal obj.common.

                          Ben1983B Offline
                          Ben1983B Offline
                          Ben1983
                          wrote on last edited by
                          #12

                          @paul53 oh ja. Meinte ja obj.common.name

                          Warum logt er das common nicht mit. So meinte ich es.

                          Die Frage ist eigentlich, was alles verfügbar ist in

                          A: dem selector.on()

                          B: getObject()

                          Es ist unterschiedlich, oder?

                          Und obj._Id meldet „undefined“
                          obj.Id geht.

                          paul53P 1 Reply Last reply
                          0
                          • Ben1983B Ben1983

                            @paul53 oh ja. Meinte ja obj.common.name

                            Warum logt er das common nicht mit. So meinte ich es.

                            Die Frage ist eigentlich, was alles verfügbar ist in

                            A: dem selector.on()

                            B: getObject()

                            Es ist unterschiedlich, oder?

                            Und obj._Id meldet „undefined“
                            obj.Id geht.

                            paul53P Offline
                            paul53P Offline
                            paul53
                            wrote on last edited by paul53
                            #13

                            @ben1983 sagte: was alles verfügbar ist in
                            A: dem selector.on()

                            Siehe Doku zu den Funktionen des Javascript-Adapters.

                            @ben1983 sagte in [gelöst] RegEx im $ Selector möglich?:

                            B: getObject()

                            Liefert nur die statischen Eigenschaften eine Objektes.

                            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

                            Ben1983B 1 Reply Last reply
                            0
                            • paul53P paul53

                              @ben1983 sagte: was alles verfügbar ist in
                              A: dem selector.on()

                              Siehe Doku zu den Funktionen des Javascript-Adapters.

                              @ben1983 sagte in [gelöst] RegEx im $ Selector möglich?:

                              B: getObject()

                              Liefert nur die statischen Eigenschaften eine Objektes.

                              Ben1983B Offline
                              Ben1983B Offline
                              Ben1983
                              wrote on last edited by Ben1983
                              #14

                              @paul53 sagte in [gelöst] RegEx im $ Selector möglich?:

                              @ben1983 sagte: was alles verfügbar ist in
                              A: dem selector.on()

                              Siehe Doku zu den Funktionen des Javascript-Adapters.

                              OK.... aber z.B. geht auch
                              obj.name ..... und das steht nicht in der Doku und wird auch nicht geloggt.

                              @ben1983 sagte in [gelöst] RegEx im $ Selector möglich?:

                              B: getObject()

                              Liefert nur die statischen Eigenschaften eine Objektes.

                              Was genau ist das denn alles?

                              paul53P 2 Replies Last reply
                              0
                              • Ben1983B Ben1983

                                @paul53 sagte in [gelöst] RegEx im $ Selector möglich?:

                                @ben1983 sagte: was alles verfügbar ist in
                                A: dem selector.on()

                                Siehe Doku zu den Funktionen des Javascript-Adapters.

                                OK.... aber z.B. geht auch
                                obj.name ..... und das steht nicht in der Doku und wird auch nicht geloggt.

                                @ben1983 sagte in [gelöst] RegEx im $ Selector möglich?:

                                B: getObject()

                                Liefert nur die statischen Eigenschaften eine Objektes.

                                Was genau ist das denn alles?

                                paul53P Offline
                                paul53P Offline
                                paul53
                                wrote on last edited by
                                #15

                                @ben1983 sagte: Was genau ist das denn alles?

                                Siehe Doku Kernkonzept, Abschnitt "Objekte".

                                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

                                Ben1983B 1 Reply Last reply
                                0
                                • paul53P paul53

                                  @ben1983 sagte: Was genau ist das denn alles?

                                  Siehe Doku Kernkonzept, Abschnitt "Objekte".

                                  Ben1983B Offline
                                  Ben1983B Offline
                                  Ben1983
                                  wrote on last edited by
                                  #16

                                  @paul53 ok, ich schau mal.

                                  Nur beim on() passt es ja auch nicht. ist es mal erweitert worden?

                                  1 Reply Last reply
                                  0
                                  • Ben1983B Ben1983

                                    @paul53 sagte in [gelöst] RegEx im $ Selector möglich?:

                                    @ben1983 sagte: was alles verfügbar ist in
                                    A: dem selector.on()

                                    Siehe Doku zu den Funktionen des Javascript-Adapters.

                                    OK.... aber z.B. geht auch
                                    obj.name ..... und das steht nicht in der Doku und wird auch nicht geloggt.

                                    @ben1983 sagte in [gelöst] RegEx im $ Selector möglich?:

                                    B: getObject()

                                    Liefert nur die statischen Eigenschaften eine Objektes.

                                    Was genau ist das denn alles?

                                    paul53P Offline
                                    paul53P Offline
                                    paul53
                                    wrote on last edited by paul53
                                    #17

                                    @ben1983 sagte: aber z.B. geht auch obj.name

                                    Stimmt. Habe bisher nur obj.common.name verwendet. Ist vielleicht mal um obj.name erweitert worden?

                                    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

                                    Ben1983B 1 Reply Last reply
                                    0
                                    • paul53P paul53

                                      @ben1983 sagte: aber z.B. geht auch obj.name

                                      Stimmt. Habe bisher nur obj.common.name verwendet. Ist vielleicht mal um obj.name erweitert worden?

                                      Ben1983B Offline
                                      Ben1983B Offline
                                      Ben1983
                                      wrote on last edited by
                                      #18

                                      @paul53 Aber nur beim
                                      on()

                                      beim getObject() gibts den nicht

                                      1 Reply Last reply
                                      0
                                      • Ben1983B Offline
                                        Ben1983B Offline
                                        Ben1983
                                        wrote on last edited by
                                        #19

                                        @paul53 ist es möglich die $(selector).on() reaktion auch noch anderes einzustellen, als "NUR" auf Änderungen?

                                        paul53P 1 Reply Last reply
                                        0
                                        • Ben1983B Ben1983

                                          @paul53 ist es möglich die $(selector).on() reaktion auch noch anderes einzustellen, als "NUR" auf Änderungen?

                                          paul53P Offline
                                          paul53P Offline
                                          paul53
                                          wrote on last edited by
                                          #20

                                          @ben1983 sagte: ist es möglich die $(selector).on() reaktion auch noch anderes einzustellen, als "NUR" auf Änderungen?

                                          Ich wüsste nicht wie.
                                          Hast Du es mal mit on({id: RegEx}, cb) versucht?

                                          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

                                          Ben1983B 2 Replies Last reply
                                          0
                                          Reply
                                          • Reply as topic
                                          Log in to reply
                                          • Oldest to Newest
                                          • Newest to Oldest
                                          • Most Votes


                                          Support us

                                          ioBroker
                                          Community Adapters
                                          Donate

                                          559

                                          Online

                                          32.6k

                                          Users

                                          82.2k

                                          Topics

                                          1.3m

                                          Posts
                                          Community
                                          Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                                          ioBroker Community 2014-2025
                                          logo
                                          • Login

                                          • Don't have an account? Register

                                          • Login or register to search.
                                          • First post
                                            Last post
                                          0
                                          • Home
                                          • Recent
                                          • Tags
                                          • Unread 0
                                          • Categories
                                          • Unreplied
                                          • Popular
                                          • GitHub
                                          • Docu
                                          • Hilfe