Hallo,
ich möchte gerne die Philips HUE an meine restliche KNX Installation anbinden.
Es ist ziemlich unsmart, jedesmal das Handy für etwas Licht zu zücken.
Gleichzeitig möchte ich so das Thema: "Stehlampen (dimmbar)" erschlagen.
(... wie hier mehrfacch gelesen, ist das öfter ein Problem)
zB: https://knx-user-forum.de/knx-eib-fo...e-per-knx.html
Ziel ist es erstmal, die Lampen über einen KNX-Tastsensor (GA) zu dimmen.
Da ich im Alleingang gescheitert bin was die Benutzung und Einrichtung des Plugins betrifft, möchte ich es hier einmal "laut" überdenken und nachvolziehbar
festhalten. (Zweitziel: Tutorial fürs Wiki)
Ausgangslage/ Komponenten:
aufgesetzt wie hier: https://github.com/mknx/smarthome/wiki/SmartHome.pi
In der Liste der Plugins für SH.py gibt es bereits eines für die HUE.
Plugins ? SmartHome.py 1.0 documentation
Phillips HUE ? SmartHome.py 1.0 documentation
Im Folgenden, beschreibe ich mal mein Vorgehen, um zu sehen wo der/die Fehler liegen.
1. Step: (Plugin aktivieren, bekannt machen)
Folgendes habe ich an die plugin.conf (/usr/smarthome/etc/plugin.conf) angefügt
Die UserID ist beliebig wählbar und dient, wenn authorisiert, als Key für die externe Applikation zur Nutzung der API.
Man kann die ID auch im Debugger der Hue-Bridge "generieren" (d.h. beliebig wählen und registrieren) und dann diese ID in die Config eintragen:
http://www.developers.meethue.com/do...etting-started
Ich habe einfach den aus der plugin Docu genommen.
2. Step: (HUE Items anlegen)
Eine neue Item Datei anlegen um den Rest(Items) nicht zu verändern.
Datei liegt unter: /usr/smarthome/items/hue_items.conf
2a. Step: (alternative HUE Items anlegen)
Eine neue Item Datei anlegen um den Rest(Items) nicht zu verändern.
Die Items sind so gewählt, dass beide .confs parallel existieren können
Datei liegt unter: /usr/smarthome/items/hue_neu_items.conf
3. Step: Restart SH
SSH connection aufbauen, wenn nicht schon geschehen und eingeben:
(alternative ist auch ein restart über das Webinterface möglich)
4. Step: Restart SH im interaktive Modus
SSH connection aufbauen, wenn nicht schon geschehen und eingeben:
5. Step: Authorisierung des HUE users
in der SSH console hat man nun die Möglichkeit nach den ">>>" direkt mit SH.py zu interagieren.
a) Link-Taste an der Bridge drücken.
b) Eingabe im interaktive Modus
Wichtig: Großbuchstaben beachten, scheinbar ein Unterschied zur Plugin Doku
Fehlermeldung:
Cursor braucht lange (2min) um zurück zu kommen.
Fehlermeldung mal anders:
Wenn man eine User nimmt, der im Debugger der HUE schon bekannt war, gibt es eine andere Fehlermeldung.
Cursor ist sofort wieder da.
6. Step: Restart SH
SSH connection aufbauen, wenn nicht schon geschehen und eingeben:
Log Ausgabe beachten, keine Fehlermeldung bezüglich der Autorisierung
Das Testen der HUE ist mit den Fehlemeldungen trotzdem möglich und sollte auch trotzdem funktionieren. (jedenfals bei mir)
So bald klar ist, was die Ursache dafür ist, könnte hier noch etwas nachgebessert werden.
7. Step: Testen der HUE im interaktive Modus
"Ein" und "Aus" mit Zwischenwerten geht so: z.b.
7a. Step: Testen der HUE (alternativ Items) im interaktive Modus
zum Beispiel:
Ab hier werde ich unsicherer....
(der Beitrag wird von mir immer editiert, sobald sich etwas ergibt)
Die Funktionsbeschreibungen von sat, bri, hue muss ich noch einmal recherchieren.
Bei den einfachen Test erschloss sich mir die Logik noch nicht ganz.
8. Step: Farbe beeinflussen der HUE im interaktive Modus
TBD (to be done)
TBW (to be written)
Ich bedanke mich jetzt schon für eure Mithilfe.
Gruß Stefan
ich möchte gerne die Philips HUE an meine restliche KNX Installation anbinden.
Es ist ziemlich unsmart, jedesmal das Handy für etwas Licht zu zücken.
Gleichzeitig möchte ich so das Thema: "Stehlampen (dimmbar)" erschlagen.
(... wie hier mehrfacch gelesen, ist das öfter ein Problem)
zB: https://knx-user-forum.de/knx-eib-fo...e-per-knx.html
Ziel ist es erstmal, die Lampen über einen KNX-Tastsensor (GA) zu dimmen.
Da ich im Alleingang gescheitert bin was die Benutzung und Einrichtung des Plugins betrifft, möchte ich es hier einmal "laut" überdenken und nachvolziehbar
festhalten. (Zweitziel: Tutorial fürs Wiki)
Ausgangslage/ Komponenten:
1) Philips HUE incl. Bridge (eingerichted und functionsfähig über Handy App)
2) MDT Glastaster (bei mir, es kann aber auch ein anderer TS sein)
3)funktionsfähige SH.py Umgebung (hier: Raspberry mit dem SH/SV image)
von hier:https://knx-user-forum.de/smarthome-...-pi-2-1-a.html2) MDT Glastaster (bei mir, es kann aber auch ein anderer TS sein)
3)funktionsfähige SH.py Umgebung (hier: Raspberry mit dem SH/SV image)
aufgesetzt wie hier: https://github.com/mknx/smarthome/wiki/SmartHome.pi
In der Liste der Plugins für SH.py gibt es bereits eines für die HUE.
Plugins ? SmartHome.py 1.0 documentation
Phillips HUE ? SmartHome.py 1.0 documentation
Im Folgenden, beschreibe ich mal mein Vorgehen, um zu sehen wo der/die Fehler liegen.
1. Step: (Plugin aktivieren, bekannt machen)
Folgendes habe ich an die plugin.conf (/usr/smarthome/etc/plugin.conf) angefügt
Code:
[HUE] class_name = HUE class_path = plugins.hue hue_user = 38f625a739562a8bd261ab9c7f5e62c8
Man kann die ID auch im Debugger der Hue-Bridge "generieren" (d.h. beliebig wählen und registrieren) und dann diese ID in die Config eintragen:
http://www.developers.meethue.com/do...etting-started
Ich habe einfach den aus der plugin Docu genommen.
2. Step: (HUE Items anlegen)
Eine neue Item Datei anlegen um den Rest(Items) nicht zu verändern.
Datei liegt unter: /usr/smarthome/items/hue_items.conf
Code:
# items/hue_items.conf [huebulbs] [[hue1]] type = bool hue_id = 1 [[[level]]] type = num hue_id = 1 [[[effect]]] type = str hue_id = 1 hue_feature = effect [[[all]]] type = dict hue_id = 1 hue_feature = all [[hue2]] type = bool hue_id = 2 [[[level]]] type = num hue_id = 2 [[[effect]]] type = str hue_id = 2 hue_feature = effect [[[all]]] type = dict hue_id = 2 hue_feature = all [[hue3]] type = bool hue_id = 3 [[[level]]] type = num hue_id = 3 [[[effect]]] type = str hue_id = 3 hue_feature = effect [[[all]]] type = dict hue_id = 3 hue_feature = all
Eine neue Item Datei anlegen um den Rest(Items) nicht zu verändern.
Die Items sind so gewählt, dass beide .confs parallel existieren können
Datei liegt unter: /usr/smarthome/items/hue_neu_items.conf
Code:
# items/hue_neu_items.conf [huebulb] [[hue_01]] [[[on_off]]] type = bool cache = on hue_id = 1 [[[bri]]] type = num cache = on [[[sat]]] type = num cache = on [[[hue]]] type = num cache = on [[[control]]] type = dict cache = on hue_id = 1 eval = dict({'sat': sh.huebulb.hue_01.sat(),'bri': sh.huebulb.hue_01.bri(),'hue': sh.huebulb.hue_01.hue()}) eval_trigger = huebulb.hue_01.bri | huebulb.hue_01.sat | huebulb.hue_01.hue [[hue_02]] [[[on_off]]] type = bool cache = on hue_id = 2 [[[bri]]] type = num cache = on [[[sat]]] type = num cache = on [[[hue]]] type = num cache = on [[[control]]] type = dict cache = on hue_id = 2 eval = dict({'sat': sh.huebulb.hue_02.sat(),'bri': sh.huebulb.hue_02.bri(),'hue': sh.huebulb.hue_02.hue()}) eval_trigger = huebulb.hue_02.bri | huebulb.hue_02.sat | huebulb.hue_02.hue [[hue_03]] [[[on_off]]] type = bool cache = on hue_id = 3 [[[bri]]] type = num cache = on [[[sat]]] type = num cache = on [[[hue]]] type = num cache = on [[[control]]] type = dict cache = on hue_id = 3 eval = dict({'sat': sh.huebulb.hue_03.sat(),'bri': sh.huebulb.hue_03.bri(),'hue': sh.huebulb.hue_03.hue()}) eval_trigger = huebulb.hue_03.bri | huebulb.hue_03.sat | huebulb.hue_03.hue
SSH connection aufbauen, wenn nicht schon geschehen und eingeben:
(alternative ist auch ein restart über das Webinterface möglich)
Code:
/usr/smarthome/bin/smarthome.py –-stop /usr/smarthome/bin/smarthome.py –-start
4. Step: Restart SH im interaktive Modus
SSH connection aufbauen, wenn nicht schon geschehen und eingeben:
Code:
/usr/smarthome/bin/smarthome.py –-stop /usr/smarthome/bin/smarthome.py –i
in der SSH console hat man nun die Möglichkeit nach den ">>>" direkt mit SH.py zu interagieren.
a) Link-Taste an der Bridge drücken.
b) Eingabe im interaktive Modus
Wichtig: Großbuchstaben beachten, scheinbar ein Unterschied zur Plugin Doku
Code:
sh.HUE.authorizeuser()
Cursor braucht lange (2min) um zurück zu kommen.
Code:
>>> sh.HUE.authorizeuser() Traceback (most recent call last): File "<console>", line 1, in <module> File "/usr/smarthome/plugins/hue/__init__.py", line 222, in authorizeuser con.request("POST", "/api", data) File "/usr/lib/python3.2/http/client.py", line 970, in request self._send_request(method, url, body, headers) File "/usr/lib/python3.2/http/client.py", line 1008, in _send_request self.endheaders(body) File "/usr/lib/python3.2/http/client.py", line 966, in endheaders self._send_output(message_body) File "/usr/lib/python3.2/http/client.py", line 811, in _send_output self.send(msg) File "/usr/lib/python3.2/http/client.py", line 749, in send self.connect() File "/usr/lib/python3.2/http/client.py", line 727, in connect self.timeout, self.source_address) File "/usr/lib/python3.2/socket.py", line 415, in create_connection raise err File "/usr/lib/python3.2/socket.py", line 406, in create_connection sock.connect(sa) socket.error: [Errno 110] Connection timed out
Wenn man eine User nimmt, der im Debugger der HUE schon bekannt war, gibt es eine andere Fehlermeldung.
Cursor ist sofort wieder da.
Code:
>>> sh.HUE.authorizeuser() Traceback (most recent call last): File "<console>", line 1, in <module> File "/usr/smarthome/plugins/hue/__init__.py", line 233, in authorizeuser resp = json.loads(resp) File "/usr/lib/python3.2/json/__init__.py", line 309, in loads return _default_decoder.decode(s) File "/usr/lib/python3.2/json/decoder.py", line 353, in decode obj, end = self.raw_decode(s, idx=_w(s, 0).end()) TypeError: can't use a string pattern on a bytes-like object
SSH connection aufbauen, wenn nicht schon geschehen und eingeben:
Code:
/usr/smarthome/bin/smarthome.py –-stop /usr/smarthome/bin/smarthome.py –d
Code:
2014-11-05 22:35:02,806 INFO Main Start SmartHome.py 1.0-5-g5300605 -- smarthome.py:__init__:231 2014-11-05 22:35:02,811 DEBUG Main Python 3.2.3 -- smarthome.py:__init__:232 2014-11-05 22:35:02,817 INFO Main Init Scheduler -- scheduler.py:__init__:86 2014-11-05 22:35:02,824 INFO Main Init Plugins -- smarthome.py:start:274 2014-11-05 22:35:02,836 DEBUG Scheduler creating 5 workers -- scheduler.py:run:93 2014-11-05 22:35:02,851 DEBUG Main Plugin: knx -- plugin.py:__init__:43 2014-11-05 22:35:02,883 DEBUG Main Plugin: visu -- plugin.py:__init__:43 2014-11-05 22:35:02,973 DEBUG Main Plugin: cli -- plugin.py:__init__:43 2014-11-05 22:35:02,986 DEBUG Main Plugin: sql -- plugin.py:__init__:43 2014-11-05 22:35:03,019 DEBUG Main SQLite 3.7.13 -- __init__.py:__init__:62 2014-11-05 22:35:05,512 DEBUG Main SQLite: database integrity ok -- __init__.py:__init__:78 2014-11-05 22:35:05,539 DEBUG Main SQLite pack next time: 2014-11-06 03:02:00+01:00 -- scheduler.py:_next_time:289 2014-11-05 22:35:05,545 DEBUG Main Plugin: HUE -- plugin.py:__init__:43 2014-11-05 22:35:05,559 DEBUG Main hue-update next time: 2014-11-05 22:35:17+01:00 -- scheduler.py:_next_time:289 2014-11-05 22:35:05,564 DEBUG Main Triggering hue-update - by: Logic source: None dest: None value: None -- scheduler.py:trigger:162
So bald klar ist, was die Ursache dafür ist, könnte hier noch etwas nachgebessert werden.
7. Step: Testen der HUE im interaktive Modus
"Ein" und "Aus" mit Zwischenwerten geht so: z.b.
Code:
>>> sh.huebulbs.hue3.level(100) >>> sh.huebulbs.hue3.level(255) >>> sh.huebulbs.hue3.level(0) >>>
zum Beispiel:
Code:
>>> sh.huebulb.hue_03.on_off(1) >>> sh.huebulb.hue_03.on_off(0) >>> sh.huebulb.hue_03.sat(255) >>> sh.huebulb.hue_03.sat(0) >>> sh.huebulb.hue_03.bri(0) >>> sh.huebulb.hue_03.bri(255) >>> sh.huebulb.hue_03.hue(35000) >>> sh.huebulb.hue_03.hue(65000) >>> sh.huebulb.hue_03.hue(0)
Ab hier werde ich unsicherer....
(der Beitrag wird von mir immer editiert, sobald sich etwas ergibt)
Die Funktionsbeschreibungen von sat, bri, hue muss ich noch einmal recherchieren.
Bei den einfachen Test erschloss sich mir die Logik noch nicht ganz.
8. Step: Farbe beeinflussen der HUE im interaktive Modus
TBD (to be done)
TBW (to be written)
Ich bedanke mich jetzt schon für eure Mithilfe.
Gruß Stefan
Kommentar