NEWS
Hue Szenen aus ioBroker steuern
-
Ich habe mal ein Skript geschrieben, welches automatisch alle (sinnvollen) Szenen von der Hue-Bridge abfragt und über Objekte aktivierbar macht, welche man dann auch im VIS verwenden kann.
Skript (Version 1):
! ```
`var HueApi = require("node-hue-api").HueApi
! var host = "192.168.x.x",
username = "xxxxxxxxxx",
api = new HueApi(host, username),
light_list = [];
! var displayResults = function(result) {
console.log(JSON.stringify(result, null, 2));
};
! var parseLights = function(result) {
for (var i = 0; i < result.length; i++) {
var id = result[i].id,
name = result[i].name;
light_list[id] = name;
}
};
! var createStates = function(result) {
for (var i = 0; i < result.length; i++) {
if (!result[i].appdata.data){continue;}var id = result[i].id, lights = result[i].lights, name = result[i].name.replace(/"/g,''), pathname = name.replace(/ /g,'_'), light_names = []; if (name.indexOf("Switch") !== -1){continue;}
! for (var j = 0; j < lights.length; j++) {
var light_name = light_list[lights[j]];
light_names.push(light_name);
}createState('Hue_Scenes.'+pathname+'.'+id, false, {role: "button", name: 'Scene: '+name+' ('+light_names.join(", ")+')'}); }
};
! api.lights(function(err, lights) {
if (err) throw err;
parseLights(lights.lights);
});
! api.scenes(function(err, scenes) {
if (err) throw err;
createStates(scenes);
});
! on({id: /^javascript.0.Hue_Scenes./, val: true}, function (obj) {
sceneId = obj.id.split('.').pop();
api.activateScene(sceneId, function(err, result) {
if (err) throw err;
displayResults(result);
});
setState(obj.id, false);
});`
! ~~[b]~~Version 2 auf GitHub:[/b]
! https://github.com/cernst1980/iobroker.hue_scenes
! ~~[b]~~Screenshots:[/b]
! Im Javascript Adapter muss das Modul "node-hue-api" geladen werden.
! Im Skript müssen nur IP und https://github.com/peter-murray/node-hue-api#registering-without-an-existing-deviceuser-id gesetzt werden.[/i][/i][/i][/i][/i][/i] -
Das ist ja cool. Probiere ich am Wochenende aus. Wäre vielleicht auch etwas, das in den Hue Adapter integriert werden könnte?
Danke dir und Grüße, Thorsten
Gesendet von meinem HUAWEI RIO-L01 mit Tapatalk
-
Das ist ja cool. Hab das Skript getestet - und was soll ich sagen - LÄUFT
Hab den Username aus dem HUE-Adapter kopiert, meine IP vom HUE eingetragen, gestartet und folgendes Ergebnis:
Danke dir für deine Arbeit.
Viele Grüße, Thorsten
-
Läuft bei mir auch. Sehr gut, vielen Dank für Deine Arbeit… Die fehlenden Szenen im Hue-Adapter
Eine Kleinigkeit habe ich aber doch 8-)
Wobei ich nicht weiß ob es halt so ist oder ob man es ändern kann? Ich habe z. B. jetzt eine Szene: "Wohnzimmer gedimmt" drücke ich auf den Button im Reiter Objekte wird das Wohnzimmer gedimmt und zwar egal ob das Licht vorher an oder aus war. Das passt auch. Jetzt hätte ich aber erwartet, dass wenn ich nochmal auf den Button drücke das das Licht dann aus geht. Geht das?
Zusatzfrage: Wenn ich jetzt neue Szenen erstelle. Landen die dann automatisch im iobroker? Wahrscheinlich nicht. Ich vermute ich muss dann das Script neu starten oder? Wie sieht es aus wenn ich eine Szene lösche?
-
Jetzt hätte ich aber erwartet, dass wenn ich nochmal auf den Button drücke das das Licht dann aus geht. `
Das Skript ist "quick & dirty" entstanden.
Es verhält sich, wie in der Hue App. Man kann "nur" die Szenen aktivieren.
In HomeKit und im ioBroker Szenen Adapter ist das anders, ich weiß.
Da kann man Szenen an- und ausschalten.
Man könnte es aber theoretisch entsprechend erweitern.
Die Lampen, die zur Szene gehören, sind ja bekannt.
Die müsste man dann einzeln ausschalten.
Vielleicht gibt es in der Hue API aber auch eine entsprechende Funktion.
Einfacher wäre es aktuell, einfach eine weitere Szene "Licht aus…" zu erstellen.
Wenn ich jetzt neue Szenen erstelle. Landen die dann automatisch im iobroker? Wahrscheinlich nicht. Ich vermute ich muss dann das Script neu starten oder? `
Richtig, man könnte das aber einfach über ein "setInterval" lösen.
Wie sieht es aus wenn ich eine Szene lösche? `
Dann muss man aktuell die Objekte manuell löschen.
Sollte ja nicht allzu oft vorkommen.
Könnte man aber theoretisch auch lösen.
Die wichtigste Frage, die sich mir aber stellt:
Für mich ist das Skript nur ein "Workaround", um eine fehlende Funktion "schnell & einfach" zu ermöglichen.
Klar könnte man das jetzt auch schön machen mit allem "wenn & aber".
Das gehört aber meiner Meinung nach in den offiziellen Adapter.
Ich hab hier schon Sachen gesehen, da wurde an mehreren Adaptern und Skripten für das gleiche Thema entwickelt, und am Ende gibt es nichts Fertiges (z.B. Denon).
Das finde ich nicht zielführend.
Ebenso gehören Skripte ins GitHub, was bringt es, wenn im Forum zig Versionen existieren.
__Wie seht Ihr das?
Wie sollte man Adapter und Skripte voneinander abgrenzen?__
Wenn gewünscht, kann ich das Skript in GitHub einstellen und kleinere Verbesserungen vornehmen.
Für größere Änderungen würde ich eher versuchen, diese in den Adapter einfließen zu lassen, da fehlt mir aber in diesen Tagen leider die Zeit dafür.
PS: Danke für das positive Feedback, freut mich, wenn ich mit dem einfachen Skript dem ein oder anderen helfen kann.
-
Neue Version, nun auf GitHub:
-
Mit den Adaptern gebe ich Dir recht. Es gibt viele Adapter die haben nur die Grundfunktionen mehr leider nicht. Irgend etas fehlt mir eigentlich bei jedem Adapter. Und deshalb sind manche eigentlich nicht wirklich 100% zu nutzen…
Ich finde in den Hue-Adapter gehören eben auch die Szenen. Am Besten natürlich als Option so kann jeder der Szenen nutzt, diese aktivieren und die die es anders wollen eben nicht.
Für nich sind die Hue´s ohne Szenen eigentlich nicht zu verwenden. Klar kann man per Script Szenen nachbauen aber in homematic habe ich dabei festgestellt das die Hue Bridge damit überfordert istEs steht ja auch glaube ich in der Api von Hue das man pro Sekunde nur max. 2 Lampen steuern soll... Mit einer Szene hat man die Probleme eben nicht...
Leider habe ich 0 Ahnung von Adaptern ansonsten würde ich den ein oder anderen eben auch erweitern. Ich scheitere ja schon oft an den einfachsten Scripten. Obwohl es dort langsam besser wird...
Gegen eine eigene Gegenszene für Lampen aus spricht übrigens das diese für mich dann die Hue-App zumüllen und in Alexa sind die dann auch. Deshalb habe ich pro Raum max 3 Szenen (oft auch nur 2, einmal hell und einmal gedimmt). Bei vielen Räumen kommt so schon einiges zusammen... Zumal man sich die ganzen Namen ja auch noch merken muss wenn man die Sprache bedienen will...
Auf jeden Fall Danke das Du das Script veröffentlicht hast. Ob nun Github oder nicht ist mir eigentlich egal. Bei Adaptern macht es dort auf jeden Fall Sinn bei einen Script was nur aus einer Datei ist, ist es nach meiner Meinung nicht nötig. Schadet aber natürlich auch nicht.
-
Finde den Upload auf git sehr gut. Evtl sieht das Thema hier jemand der den Hue Adapter weiter entwickeln kann. Und er hat via Git steht die nötigen Code Zeilen…
Danke und grüße, Thorsten
Gesendet von meinem HUAWEI RIO-L01 mit Tapatalk
-
Neue Version, nun auf GitHub:
magst Du die Unterschiede ggf. kurz schildern?
Bei mir findet die v.1 deutlich mehr Szenen als die v.2
Als wären es bei der v.2 nur Standardszenen?!
-
magst Du die Unterschiede ggf. kurz schildern? `
https://github.com/cernst1980/iobroker. … 0Szenen.js-
Resync function (script start & button)
-
Rooms (groups) instead of lights in the scene names
-
Only Hue app default and custom scenes
-
Get rooms directly from scenes, not over lights
-
Skip duplicates
Bei mir findet die v.1 deutlich mehr Szenen als die v.2
Als wären es bei der v.2 nur Standardszenen?! `
Hast Du die Szenen außerhalb der Hue App angelegt, die fehlen?
Kommentier mal diese Zeile ein…
https://github.com/cernst1980/iobroker. ... nen.js#L63
Wenn die Szenen mit der Hue App angelegt wurden, dann müsste bei den Szenen unter appdata -> data etwas in dem Format stehen:
xxxxx___r__yy___d__zz
yy ist die ID für Raum/Gruppe
zz ist 01-x für Standardszenen und 99 für Custom Szenen
Alle anderen Szenen werden momentan rausgefiltert.
-
-
Ich habe die iPhone App "iConnectHue" und dort wiederum einige "In-App-Käufe" getätigt.
Unter anderem habe ich dadurch einige Animierte Szenen.
In deinem Script v.1 werden diese ebenfalls gefunden und angelegt.
In deinem Script v.2. nicht (ich hatte vor dem Script v.2 alle Szenen gelöscht)
[EDIT]
v.2 gefundene Szenen: 11
v.1. gefundene Szenen: 75
-
Kommentier mal diese Zeile ein…
https://github.com/cernst1980/iobroker. ... nen.js#L63 ` da kommt dann ein beeindruckend langes Log-File bei raus
(ich wollte es hier nicht reinstellen, da einige kryptische "owner" Angaben enthalten sind die ich nicht recht zuordnen kann)
-
da kommt dann ein beeindruckend langes Log-File bei raus
(ich wollte es hier nicht reinstellen, da einige kryptische "owner" Angaben enthalten sind die ich nicht recht zuordnen kann) `
Mindestens eine Szene bräuchte ich mal exemplarisch, owner kannst Du gerne anonymisieren. Müsste der Hue Bridge Benutzer sein, der die Szene erstellt hat.
Ich habe noch keine Möglichkeit gefunden, bei den Szenen Spreu und Weizen zu trennen. Wahrscheinlich muss man doch alle nehmen, wo es appdata Daten gibt. Dann muss man die Raumzuordnung aber auch wieder über die Leuchten machen, da das direkt nicht möglich ist bei diesen Szenen.
Gesendet von iPhone mit Tapatalk
-
Mindestens eine Szene bräuchte ich mal exemplarisch, owner kannst Du gerne anonymisieren. Müsste der Hue Bridge Benutzer sein, der die Szene erstellt hat. ` ich habe einen Auszug des Logs angefügt
! ````
{ "name": "Scene mySceneDim huelabs/chris", "lights": [ "1", "2", "3", "4", "5", "22", "23", "24" ], "owner": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", "recycle": true, "locked": true, "appdata": {}, "picture": "", "lastupdated": "2018-01-05T14:06:18", "version": 2, "id": "RQj2JRcyGxWKWHG" }, { "name": "Scene myScene1 huelabs/christm", "lights": [ "1", "2", "3", "4", "5", "22", "23", "24" ], "owner": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", "recycle": true, "locked": true, "appdata": {}, "picture": "", "lastupdated": "2018-01-05T14:06:19", "version": 2, "id": "Wzbzl3V8mS1nDTC" }, { "name": "Scene myScene2 huelabs/christm", "lights": [ "1", "2", "3", "4", "5", "22", "23", "24" ], "owner": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", "recycle": true, "locked": true, "appdata": {}, "picture": "", "lastupdated": "2018-01-05T14:06:20", "version": 2, "id": "zTCG7lcWMbD7cFi" }, { "name": "Scene myScene3 huelabs/christm", "lights": [ "1", "2", "3", "4", "5", "22", "23", "24" ], "owner": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", "recycle": true, "locked": true, "appdata": {}, "picture": "", "lastupdated": "2018-01-05T14:06:21", "version": 2, "id": "BiblxsWfZKj2Z3t" }, { "name": "Green day-Animation", "lights": [ "1", "2", "3", "4", "5", "12", "22", "23", "24" ], "owner": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", "recycle": true, "locked": false, "appdata": { "version": 1, "data": "dfsjkh54:CA06000" }, "picture": "", "lastupdated": "2018-01-14T21:30:15", "version": 2, "id": "i6F7O7VRXDV3ebY" }, { "name": "Green day-Animation", "lights": [ "1", "2", "3", "4", "5", "12", "22", "23", "24" ], "owner": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", "recycle": true, "locked": false, "appdata": { "version": 1, "data": "j65dfggj:CA06000" }, "picture": "", "lastupdated": "2018-01-14T21:30:16", "version": 2, "id": "7Qef2YB4KXRTkZc" }, { "name": "Green day-Animation", "lights": [ "1", "2", "3", "4", "5", "12", "22", "23", "24" ], "owner": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", "recycle": true, "locked": false, "appdata": { "version": 1, "data": "jdfh5345:CA06000" }, "picture": "", "lastupdated": "2018-01-14T21:30:17", "version": 2, "id": "AIxffigw1K7gO7C" }, { "name": "Green day-Animation", "lights": [ "1", "2", "3", "4", "5", "12", "22", "23", "24" ], "owner": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", "recycle": true, "locked": false, "appdata": { "version": 1, "data": "djh5lsef:CA06000" }, "picture": "", "lastupdated": "2018-01-14T21:30:18", "version": 2, "id": "0KbRcqtSX8wKLyi" }, { "name": "The beach-Animation", "lights": [ "1", "2", "3", "4", "5", "12", "22", "23", "24" ], "owner": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", "recycle": true, "locked": true, "appdata": { "version": 1, "data": "sdfjhe65:CA06000" }, "picture": "", "lastupdated": "2018-01-14T21:31:55", "version": 2, "id": "EOru8lpElqA3yZT" }, { "name": "The beach-Animation", "lights": [ "1", "2", "3", "4", "5", "12", "22", "23", "24" ], "owner": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", "recycle": true, "locked": true, "appdata": { "version": 1, "data": "sdfkljw4:CA06000" }, "picture": "", "lastupdated": "2018-01-14T21:31:56", "version": 2, "id": "JJjdIDIhsuCY3Yk" }, { "name": "The beach-Animation", "lights": [ "1", "2", "3", "4", "5", "12", "22", "23", "24" ], "owner": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", "recycle": true, "locked": true, "appdata": { "version": 1, "data": "fjk76dfg:CA06000" }, "picture": "", "lastupdated": "2018-01-14T21:31:57", "version": 2, "id": "avewviNhrPWQuKP" } ] -
Danke Dir.
Ist gar nicht so trivial…
Wenn ich mir dies so anschaue, musste ich folgende Annahmen treffen.
! ````
"name": "Scene mySceneDim huelabs/chris",
"name": "Scene myScene1 huelabs/christm",
"name": "Scene myScene2 huelabs/christm",
"name": "Scene myScene3 huelabs/christm",
"data": "dfsjkh54:CA06000",
"name": "Green day-Animation",
"data": "j65dfggj:CA06000",
"name": "Green day-Animation",
"data": "jdfh5345:CA06000",
"name": "Green day-Animation",
"data": "djh5lsef:CA06000",
"name": "Green day-Animation",
"data": "sdfjhe65:CA06000",
"name": "The beach-Animation",
"data": "sdfkljw4:CA06000",
"name": "The beach-Animation",
"data": "fjk76dfg:CA06000",
"name": "The beach-Animation",1\. Die "huelabs" Szenen werden nicht benötigt (haben auch keine "appdata" Einträge). 2\. Die "Green day-Animation" und "The beach-Animation" Szenen sind alle im selben Raum (ID: 06) und somit Duplikate!? Wenn meine Annahmen richtig sind, sollte die aktuelle Version im GitHub funktionieren. Kannst Du bitte folgendes prüfen: - Fehlen Szenen? - Sind Szenen zuviel? - Gibt es Duplikate (gleicher Name und Raum)? - Wird bei allen Szenen ein Raumname angezeigt? - Stimmen die Raumangaben bei den Szenen?
-
Mit dem neuen Script werden bei mir gar keine Szenen angelegt 8-)
-
Mit dem neuen Script werden bei mir gar keine Szenen angelegt 8-) ` Sorry, Kommando zurück!
Wenn man seine Log-In Angaben (Host, Username) korrekt setzt, dann klappt natürlich auch die Verbindung
Die aktuelle Version findet wie auch schon die v.2 insgesamt 11 Szenen.
Das sind jene welche die ich als "Standardszenen" bezeichnen würde.
Also Nicht die Szenen aus iConnectHue App die von der v.1 gefunden werden.
Die Szenen aus der iConnectHue App sind nicht unbedingt einem Raum zugeordnet.
[EDIT]
Ich habe 2 ScreenShots angefügt:
-
Szenen aus Script v.2/3
-
Auszug aus den Szenen der v.1.
1917_hue_szene_v.1.jpg
1917_hue_szenen_v.3.jpg
-
-
Die Szenen aus der iConnectHue App sind nicht unbedingt einem Raum zugeordnet. `
Dies scheint der springende Punkt zu sein.
Wie sieht es denn mit der jetzt aktuellen Version auf GitHub aus?
-
Die Szenen aus der iConnectHue App sind nicht unbedingt einem Raum zugeordnet. ` Dies scheint der springende Punkt zu sein.
Wie sieht es denn mit der jetzt aktuellen Version auf GitHub aus?
` Sieht gut aus, alle 75 Szenen wurden angelegt
-
Die Szenen aus der iConnectHue App sind nicht unbedingt einem Raum zugeordnet. ` Dies scheint der springende Punkt zu sein.
Wie sieht es denn mit der jetzt aktuellen Version auf GitHub aus?
Sieht gut aus, alle 75 Szenen wurden angelegt :)
Überlege seit längerem mir auch die App iconnect zu kaufen, werden alle szenen aus der App dann angezeigt? Auch Dynamische? Was musich in der App noch dazu kaufen?Gesendet von iPhone mit Tapatalk