Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. JavaScript
    5. Alle Objekte mit einer Rolle

    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

    Alle Objekte mit einer Rolle

    This topic has been deleted. Only users with topic management privileges can see it.
    • T
      ticaki Developer @mariva last edited by

      @mariva sagte in Alle Objekte mit einer Rolle:

      var x = $('channelstate.id=*.SENSOR');

      var x  = $('state[role=window.sensor](functions="Fenster")');
      
      M 1 Reply Last reply Reply Quote 0
      • M
        mariva @ticaki last edited by mariva

        @ticaki

        Ok Danke. Kann ich channel state.id und state role auch kombinieren?

        var reedContacts  = $('state[id=*.SENSOR][role=sensor.window]');
        
        // on Change
        reedContacts.on(function(obj){
            updateStates(obj);
        });
        

        scheint nicht mehr zu gehen. vermutlich weil ich nun keine objekte mehr bekomme. mit channel ist das anderst oder ?

        T 1 Reply Last reply Reply Quote 0
        • T
          ticaki Developer @mariva last edited by

          @mariva
          Da muß ich passen. Das ich state benutze ist ne Angewohnheit, mir ist noch kein Unterschied aufgefallen.

          Ich mache das so:

          const devices = 'state(functions=switch)(functions=humidity)';
          const sensor = 'state(functions=sumroom)(functions=humidity)';
          const targethumidity = 'state(functions=target)(functions=humidity)';
          const windows = 'state(functions=window)';
          
          var x = $(devices) //usw.
          

          weil nicht jeder Adapter die gleiche Role verwendet und ids noch unsicherer sind. Ich hab hier shelly, homematic und deconz im Einsatz. Deshalb benutze ich jetzt 2 Funktionen um ein Gerät zu identifizieren.

          1 Reply Last reply Reply Quote 0
          • paul53
            paul53 @mariva last edited by

            @mariva sagte: Ist es möglich das ich die ROLE = window.sensor selektieren kann ?

            Gerade getestet: Bei mir funktioniert es so:

            const idsSetpoint = $('[role=level.temperature]');
            idsSetpoint.each(function(id, i) {
                log(id);
            });
            
            T M 2 Replies Last reply Reply Quote 0
            • T
              ticaki Developer @paul53 last edited by ticaki

              @paul53 sagte in Alle Objekte mit einer Rolle:
              Scheine die Frage falsch verstanden zu haben

              suchen nach [role=xyz] geht natürlich nur nicht mit *

              Den Unterschied zwischen state/channel/nichts erschließt sich mir nicht. Habs getestet sehe das wieso jedoch nicht.

              Der erste State($('channel(id=sensor)')) wird nicht gefunden, der 2. schon...

              {
                "mihome-vacuum.0.consumable.sensors": {
                  "_id": "mihome-vacuum.0.consumable.sensors",
                  "type": "state",
                  "common": {
                    "name": "sensors lifetime",
                    "type": "number",
                    "role": "value.usage.sensors",
                    "read": true,
                    "write": false,
                    "unit": "%"
                  },
                  "native": {},
                  "from": "system.adapter.mihome-vacuum.0",
                  "user": "system.user.admin",
                  "ts": 1628194429902,
                  "acl": {
                    "object": 1632,
                    "state": 1632,
                    "owner": "system.user.admin",
                    "ownerGroup": "system.group.administrator"
                  }
                }
              }
              
                  "daikin.0.sensorInfo.cmpfreq": {
                      "type": "state",
                      "common": {
                          "role": "value",
                          "read": true,
                          "write": false,
                          "type": "number",
                          "name": "Wohnzimmer Jr. sensorInfo.cmpfreq"
                      },
                      "native": {
                          "id": "sensorInfo.cmpfreq"
                      },
                      "from": "system.adapter.daikin.0",
                      "user": "system.user.admin",
                      "ts": 1575113145790,
                      "_id": "daikin.0.sensorInfo.cmpfreq",
                      "acl": {
                          "object": 1636,
                          "state": 1636
                      }
                  },
              
              paul53 1 Reply Last reply Reply Quote 0
              • paul53
                paul53 @ticaki last edited by

                @ticaki
                Was soll "channel" im Selektor? Das sind Datenpunkte mit sehr unterschiedlichen IDs. Versuche mal

                $('*.sensor*');
                
                T 1 Reply Last reply Reply Quote 0
                • T
                  ticaki Developer @paul53 last edited by

                  @paul53 sagte in Alle Objekte mit einer Rolle:

                  @ticaki
                  Was soll "channel" im Selektor? Das sind Datenpunkte mit sehr unterschiedlichen IDs. Versuche mal

                  $('*.sensor*');
                  

                  Die * waren drin das kursiv 🙂

                  Es geht um:

                  Format of selector:
                  
                  "name[commonAttr=something1](enumName=something2){nativeName=something3}[id=idfilter][state.id=idfilter]"
                  name can be: state, channel, device or schedule "idfilter" can have wildcards '*'
                  

                  channel und state unterscheiden sich, jedoch nicht nachvollziehbar für mich. Dachte du wüsstest es vielleicht.

                  paul53 1 Reply Last reply Reply Quote 0
                  • paul53
                    paul53 @ticaki last edited by

                    @ticaki sagte: channel und state unterscheiden sich, jedoch nicht nachvollziehbar für mich.

                    Der Selektor wurde im Laufe der Zeit überarbeitet, so dass es wohl keinen Unterschied mehr macht. Früher musste bei HomeMatic "channel" angegeben werden, da Aufzählungen (Räume, Gewerke) bei HomeMatic den Kanälen zugeordnet sind.

                    1 Reply Last reply Reply Quote 0
                    • M
                      mariva @paul53 last edited by

                      @paul53 said in Alle Objekte mit einer Rolle:

                      const idsSetpoint = $('[role=level.temperature]'); idsSetpoint.each(function(id, i) { log(id); });

                      Ich möchte ja ein On Change auf jedes dieser Objekte welche ich mit dem selektor greife.
                      Sicher das ich das jetzt vorher noch iterieren muss um dann dort das on change zu machen ?

                      Möchte einfach der möglichst performanteste Code, da es doch einige Sensoren sind 😉

                      paul53 1 Reply Last reply Reply Quote 0
                      • paul53
                        paul53 @mariva last edited by paul53

                        @mariva sagte: Ich möchte ja ein On Change auf jedes dieser Objekte welche ich mit dem selektor greife.

                        Wenn

                        Selektor.each(function(id, i) {});
                        

                        funktioniert, dann funktioniert auch

                        Selektor.on(function(dp) {});
                        
                        M 1 Reply Last reply Reply Quote 1
                        • M
                          mariva @paul53 last edited by

                          @paul53 said in Alle Objekte mit einer Rolle:

                          iert, dann funktioniert

                          DAnke. Es klappt mit :

                          var reedContacts = $('state[id=*.SENSOR][role=sensor.window]');

                          1 Reply Last reply Reply Quote 0
                          • First post
                            Last post

                          Support us

                          ioBroker
                          Community Adapters
                          Donate

                          428
                          Online

                          31.8k
                          Users

                          80.0k
                          Topics

                          1.3m
                          Posts

                          javascript
                          3
                          12
                          580
                          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