NEWS
Cloud Adapter + Alexa + Mehrere Räume
-
Ich habe in IO Broker einigen Lampen mehrere Räume zugeordnet.
D.h.
Lampe A ist Teil von "Raum" Sofa und Wohnzimmer
Lampe B ist Teil von "Raum" Esstisch und Wohnzimmer
"Alexa, schalte das Licht am Sofa an" (Nur Sofa geht an)
"Alexa,schalte das Licht im Wohnzimmer an" (Sofa UND Esstisch) geht an.Die Virtuellen Geräte im Cloud Adapter werden zwar angelegt, allerdings ist eine Lampe jeweils nur in einem Raum angelegt.
Hat da jemand einen Tipp?
Vielen Dank. -
Problem gelöst:
Ich habe mir ein eigenes Script geschrieben, über das die Virtuellen Geräte angelegt werden.Dazu lösche ich erst alle Einstellungen des Cloud Adapters:
$('state').each(function (id) { var obj = getObject(id); if (obj.common.smartName) { //console.log(id); extendObject(id, { common: { smartName: null } }); } });
Dann sammle ich alle Räume und Funktionen ein, und gruppiere die zu den entsprechenden IDs:
var objects = {}; getEnums('rooms').forEach(function (obj) { obj.members.forEach(function (id) { var o = objects[id]; if (!o) o = objects[id] = { rooms: [], functions: [], id: id }; var name = typeof obj.name == "string" ? obj.name : obj.name.de; o.rooms.push(name); }) }) getEnums('functions').forEach(function (obj) { obj.members.forEach(function (id) { var o = objects[id]; if (!o) o = objects[id] = { rooms: [], functions: [], id: id }; var name = typeof obj.name == "string" ? obj.name : obj.name.de; o.functions.push(name); }) })
Am Ende laufe ich durch alle IDs in objects, erstelle eine Liste von "Gerätenamen", und setze diese via extendObject.
var virtualNames="Name1,Name2,Name3"; extendObject(col.id, { common: { smartName: { de: virtualNames, smartType: "LIGHT" } } });
Im Cloud Adapter deaktiviert man einfach nur alle Aufzählungen.
Mein Script starte ich immer neu, wenn ich etwas an den Räumen oder Gruppen geändert habe.
Stolpersteine:
Der CloudAdapter blockiert manchmal das Ändern des smartName Feldes. Dann muss man den Cloud Adapter kurz abschalten während das Script läuft. Eventl geht das auch per Script?Auflistungen, Räume und Funktionen: Wenn man da was ändert, sollte man den Javascript Adapter neu starten, weil die Änderungen sonst noch nicht bekannt sind.