NEWS
Raum eines States herausfinden
-
Hallo, wenn ich eine Funktion wie folgt erstelle:
$(`state(${enumtypeFunctions}=${enumBewegungsmelder})`).on((obj)=>{ .... Hier steht der quellcode });
kann ich irgendwie direkt herausfinden, in welcher enum "rooms" der state ist,
oder müsste ich erst die enum "rooms" durchlaufen und suchen, ob es eine Übereinstimmung gibt?Außer common.role habe ich nichts gefunden.... also zu "function" oder "rooms".
Kann natürlich sein, dass es das nicht gibt, weil es ja beliebig erweiterbar ist. Liegt es daran?
-
@ben1983 sagte: herausfinden, in welcher enum "rooms" der state ist,
let room = getObject(obj.id, 'rooms').enumNames[0]; if(typeof room == 'object') room = room.de;
-
@paul53
Ah so greift man wohl direkt auf den Namen zu?Ich mache das meinst so:
var rooms = getObject(obj.replace('.available', ''), 'rooms').enumIds; if (rooms === undefined) return; if (rooms.indexOf('enum.rooms.Haus.second_floor.schlafzimmer') != -1...
Wobei ich aber keine Ahnung habe wieso da das
obj.replace()
drin ist.bzw. mehr auf die Frage bezogen so:
var rooms = getObject(obj.replace('.available', ''), 'rooms').enumIds; if (rooms === undefined) return; let rname = '' rooms.forEach((room) => { // workaround manche Geräte enthalten Räume die ihnen nicht zugewiesen sind. var enumObj = getObject(room); if (enumObj.common.members.findIndex((a) => {return obj.includes(a)}) == -1 ) return; room = enumObj.common.name; let r = room.de; if (r === undefined) r = room; rname+= rname =='' ? r : `, ${r}`; }
Code ist schon alt, keine Ahnung ob der Workaround heute noch nötig ist.
-
@ticaki sagte: so greift man wohl direkt auf den Namen zu?
Ja, wobei ich davon ausgehe, dass nur ein Raum zugewiesen wurde.
-
@paul53 cool danke muss mir wohl das getObject nochmal genauer ansehen.
-
@ticaki sagte in Raum eines States herausfinden:
@paul53
Ah so greift man wohl direkt auf den Namen zu?Ich mache das meinst so:
var rooms = getObject(obj.replace('.available', ''), 'rooms').enumIds; if (rooms === undefined) return; if (rooms.indexOf('enum.rooms.Haus.second_floor.schlafzimmer') != -1...
Wobei ich aber keine Ahnung habe wieso da das
obj.replace()
drin ist.Was sollte denn ".abailable" sein?
gab es das früher mal? -
@ben1983 sagte in Raum eines States herausfinden:
@ticaki sagte in Raum eines States herausfinden:
@paul53
Ah so greift man wohl direkt auf den Namen zu?Ich mache das meinst so:
var rooms = getObject(obj.replace('.available', ''), 'rooms').enumIds; if (rooms === undefined) return; if (rooms.indexOf('enum.rooms.Haus.second_floor.schlafzimmer') != -1...
Wobei ich aber keine Ahnung habe wieso da das
obj.replace()
drin ist.Was sollte denn ".abailable" sein?
gab es das früher mal?Weiß ich nicht mehr, hab den Code vor hm 4 Jahren??? eingebaut/kopiert/keine Ahnung und seit dem kopiere ich ihn nur dahin wo ich ihn brauche.