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.
    • M
      mariva last edited by

      Hallo,

      hatte früher immer folgende funktion um alle reedkontakte zulesen.

      var x  = $('channel[state.id=*.SENSOR](functions="Fenster")');
      

      nach dem update auf Admin 5. scheint das nicht mehr zu gehen. Ist es möglich das ich die ROLE = window.sensor selektieren kann ?

      Danke schonmal.

      T paul53 2 Replies Last reply Reply Quote 0
      • 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

                            652
                            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