NEWS
Alle Objekte mit einer Rolle
-
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.
-
@mariva sagte in Alle Objekte mit einer Rolle:
var x = $('channelstate.id=*.SENSOR');
var x = $('state[role=window.sensor](functions="Fenster")');
-
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 ?
-
@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.
-
@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); });
-
@paul53 sagte in Alle Objekte mit einer Rolle:
Scheine die Frage falsch verstanden zu habensuchen 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 } },
-
@ticaki
Was soll "channel" im Selektor? Das sind Datenpunkte mit sehr unterschiedlichen IDs. Versuche mal$('*.sensor*');
-
@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.
-
@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.
-
@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
-
@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) {});
-
@paul53 said in Alle Objekte mit einer Rolle:
iert, dann funktioniert
DAnke. Es klappt mit :
var reedContacts = $('state[id=*.SENSOR][role=sensor.window]');