FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: chrille76 am 12 November 2016, 16:34:30

Titel: HUEDevice/HUEGroup Szene mit Überblendzeit einschalten
Beitrag von: chrille76 am 12 November 2016, 16:34:30
Hallo,

folgendes Szenario. Im Moment schalte ich eine bestimmte Gruppe von Hue-Lampen mit einer bestimmten Szene 45 Minuten vor Sonnenuntergang mit einer Überblendzeit von 30 Minuten ein. Dafür benutze ich die App iConnectHue. Ich habe nun versucht, dies in FHEM nachzubauen. Und hier beginnt das Problem. Die Uhrzeit jetzt mal außen vor, ist mir klar, wie ich eine Gruppe entsprechend einschalte.
set <HUEGroup> on : transitiontime 18000
Soweit so gut. Aber wie schalte ich eine bestimmte Szene? Was ja nicht geht ist das folgende:
set <HUEGroup> scene <id> : transitiontime 18000
Geht das mit FHEM überhaupt irgendwie?

Danke schonmal, habe mich hoffentlich verständlich ausgedrückt.

Gruß
Titel: Antw:HUEDevice/HUEGroup Szene mit Überblendzeit einschalten
Beitrag von: justme1968 am 12 November 2016, 17:10:03
das war bis jetzt noch nicht vorgesehen. hab es eben eingebaut. geht ab dem
update morgen.

gruss
  andre
Titel: Antw:HUEDevice/HUEGroup Szene mit Überblendzeit einschalten
Beitrag von: chrille76 am 12 November 2016, 17:28:43
Perfekt, danke!
Titel: Antw:HUEDevice/HUEGroup Szene mit Überblendzeit einschalten
Beitrag von: chrille76 am 13 November 2016, 10:10:03
Guten Morgen,

set <HUEGroup> scene <id> : transitiontime <time>
lässt sich jetzt aufrufen. Das ist schon mal super. Allerdings bleibt die Zeitangabe ohne Auswirkung. Das Licht geht sofort in voller Helligkeit an :(

Gruß
Titel: Antw:HUEDevice/HUEGroup Szene mit Überblendzeit einschalten
Beitrag von: justme1968 am 13 November 2016, 15:27:38
leider scheint es so zu sein das das api die transition time ignoriert wenn sie beim abrufen der szene gesetzt wird.

die einzige möglichkeit ist in der szene selber schon die transitiontime drin zu haben. entweder beim createscene mit angeben oder über modifyscene mit einfügen.

sorry
  andre
Titel: Antw:HUEDevice/HUEGroup Szene mit Überblendzeit einschalten
Beitrag von: justme1968 am 13 November 2016, 15:49:22
wenn du die szene mit iconnect erstellt sollte sie in fhem beim get <bridge> scenes zu sehen sein. wenn du diese szene über fhem aktivierst sollte die laut api darin enthaltene transition time gelten.

wenn iconnect hue keine transitiontime rein schreibt wird keine echte hue szene verwendet. sondern die lampen direkt mit transition angesteuert. das kannst du mit fhem natürlich auch.
Titel: Antw:HUEDevice/HUEGroup Szene mit Überblendzeit einschalten
Beitrag von: chrille76 am 13 November 2016, 15:56:01
Ich glaube, ich habe jetzt verstanden, wie es funktioniert.

Die Szene hab ich erstmal in iConnectHue ganz normal erstellt. Was ich dann gemacht habe, ist einen Timer zum Sonnenuntergang mit den entsprechenden Zeiten (45 min vorher und mit 30 min Überblendzeit) erstellt. Diesen Timer wiederum legt die App offensichtlich als neue Szene an! Das heißt, dass eigentlich gar nicht meine selbst angelegte Szene, sondern eine neue, von der App angelegte aufgerufen wird!

Danke für deine Hinweise, jetzt hat's klick gemacht! Lösung ist also tatsächlich eine neue Szene, die die Daten schon enthält.
Titel: Antw:HUEDevice/HUEGroup Szene mit Überblendzeit einschalten
Beitrag von: chrille76 am 13 November 2016, 16:19:28
Eine Frage noch:
modifyscene <id> <light> <light-args>
id ist klar, was muss in den Parameter light? Und wie muss die Transitiontime in den light-args angeben werden, einfach transitiontime <time>? Commandref gibt da nicht viel her.

Edit: ok, hab was gefunden. Dennoch die Frage, kann ich da in den light-args einfach ausschließlich die transitiontime angeben und die wird dann ergänzt?
Titel: Antw:HUEDevice/HUEGroup Szene mit Überblendzeit einschalten
Beitrag von: justme1968 am 13 November 2016, 16:38:29
das weiss ich nicht. vermute aber du musst komplett alle parameter angeben. zumal man bei den alten version 1 szenen die gesetzten parameter auch nicht auslesen kann.
Titel: Antw:HUEDevice/HUEGroup Szene mit Überblendzeit einschalten
Beitrag von: chrille76 am 13 November 2016, 16:48:01
Ok. Trotzdem danke. Hat mir alles weitergeholfen.
Titel: Antw:HUEDevice/HUEGroup Szene mit Überblendzeit einschalten
Beitrag von: chrille76 am 13 November 2016, 20:27:04
Ich hab mir das jetzt mal weiter angesehen. In der Bridge sind u. a. folgende Szenen gespeichert:

lPb7ZRHZU2mcJ8q      Sonnenuntergang      6,7,8,9
HEzQo6X5S1W9os-      Sonnenuntergang-Timer 6,7,8,9


Die Szene "Sonnenuntergang" habe ich selbst angelegt. Die Szene "Sonnenuntergang-Timer" hat iConnectHue angelegt. Außerdem legt die App eine Rule an, zu der "get <HUEBridge> rule <id>"  folgendes im Web IF anzeigt (ich bekomm das irgendwie nicht in nen Code Block):

[{"operator":"eq","address":"/sensors/1/state/daylight","value":"false"},{"operator":"dx","address":"/sensors/1/state/daylight"}]
[{"method":"PUT","body":{"status":0},"address":"/sensors/10/state"},{"method":"PUT","body":{"transitiontime":18000,"scene":"HEzQo6X5S1W9os-"},"address":"/groups/8/action"}]

Die Transitiontime für eine Szene kann man also über eine Regel steuern.

Selbst Regeln erstellen kann man ja mit
set <HUEBridge> createrule <name> <json>

Und hier komme ich nicht weiter. Wie muss die Syntax für den json Parameter aussehen?
Titel: Antw:HUEDevice/HUEGroup Szene mit Überblendzeit einschalten
Beitrag von: justme1968 am 13 November 2016, 20:55:51
so wie es auch beim get rules angezeigt wird. also etwa so alles auf eine zeile:set <HUEBridge> createrule <name> {[{"operator":"eq","address":"/sensors/1/state/daylight","value":"false"},{"operator":"dx","address":"/sensors/1/state/daylight"}],
[{"method":"PUT","body":{"status":0},"address":"/sensors/10/state"},{"method":"PUT","body":{"transitiontime":18000,"scene":"HEzQo6X5S1W9os-"},"address":"/groups/8/action"}]}


wenn ich das richtig verstehe wird da sobald es dunkel wird die gruppe 8 mit der szene HEzQo6X5S1W9os- und einer transitiontime aufgerufen. das ist genau das was fhem auch versucht hat und was laut api und hue forum nicht geht.

wenn das eine v2 szene ist ruf mal im browser http://<bridge-ip>/api/<key>/scenes/HEzQo6X5S1W9os- (http://<bridge-ip>/api/<key>/scenes/HEzQo6X5S1W9os-) auf und schau ob bei den einstellungen für die einzelnen lampen eine transition time gesetzt ist. falls ja würde ich sagen das die transitiontime nichts tut und alles nur von der transitiontime in der szene abhängt.

gruss
  andre
Titel: Antw:HUEDevice/HUEGroup Szene mit Überblendzeit einschalten
Beitrag von: chrille76 am 13 November 2016, 21:46:26
Zitat von: justme1968 am 13 November 2016, 20:55:51
so wie es auch beim get rules angezeigt wird. also etwa so alles auf eine zeile:set <HUEBridge> createrule <name> {[{"operator":"eq","address":"/sensors/1/state/daylight","value":"false"},{"operator":"dx","address":"/sensors/1/state/daylight"}],
[{"method":"PUT","body":{"status":0},"address":"/sensors/10/state"},{"method":"PUT","body":{"transitiontime":18000,"scene":"HEzQo6X5S1W9os-"},"address":"/groups/8/action"}]}

Hatte ich versucht, allerdings ohne die äußeren geschweiften Klammern. Funktioniert allerdings auch mit Klammern nicht.

2016.11.13 21:28:28 2: wz_HueBridge: json error: garbage after JSON object, at character offset 172 (before "}") at ./FHEM/30_HUEBridge.pm line 491.
in [{"method":"PUT","body":{"status":0},"address":"/sensors/10/state"},{"method":"PUT","body":{"transitiontime":18000,"scene":"HEzQo6X5S1W9os-"},"address":"/groups/8/action"}]}


Zitat von: justme1968 am 13 November 2016, 20:55:51
wenn das eine v2 szene ist ruf mal im browser http://<bridge-ip>/api/<key>/scenes/HEzQo6X5S1W9os- (http://<bridge-ip>/api/<key>/scenes/HEzQo6X5S1W9os-) auf und schau ob bei den einstellungen für die einzelnen lampen eine transition time gesetzt ist. falls ja würde ich sagen das die transitiontime nichts tut und alles nur von der transitiontime in der szene abhängt.

Sieht ganz danach aus. Was meinst du mit v2? Version der Bridge? Ja, das ist die neuere.

{"name":"Sonnenuntergang-Timer","lights":
["6","7","8","9"],"owner":"HXjnAvCYJwxW85ahhQZeAdn0G2YDjJ24BiqC4MIu","recycle":true,"locked":false,"
appdata":{"version":1,"data":"0551C14D:BA08000"},"picture":"","lastupdated":"2016-11-
13T18:51:55","version":2,"lightstates":
{"6":{"on":true,"bri":254,"hue":6988,"sat":198,"transitiontime":18000},
"7":{"on":true,"bri":137,"hue":5605,"sat":219,"transitiontime":18000},
"8":{"on":true,"bri":254,"hue":2618,"sat":198,"transitiontime":18000},
"9":{"on":true,"bri":176,"hue":3220,"sat":161,"transitiontime":18000}}}


Das heißt, ich könnte eigentlich einfach die von der App angelegte Szene verwenden. Die bleibt nämlich sogar erhalten (im Gegensatz zur Rule), wenn ich in der App den Timer lösche.
Titel: Antw:HUEDevice/HUEGroup Szene mit Überblendzeit einschalten
Beitrag von: justme1968 am 13 November 2016, 21:53:04
da fehlt irgend eine klammer oder ein komma. lieget vermutlich am copy&paste. du kannst ja mal schauen was an position 172 steht. im zweifel hilft http://jsonlint.com

gefunden: es haben drei dinge gefehlt: name, conditions und actions.
{ "name":"meine regel","conditions": [{ "operator": "eq", "address": "/sensors/1/state/daylight", "value": "false" }, { "operator": "dx", "address": "/sensors/1/state/daylight" }], "actions": [{ "method": "PUT", "body": { "status": 0 }, "address": "/sensors/10/state" }, { "method": "PUT", "body": { "transitiontime": 18000, "scene": "HEzQo6X5S1W9os-" }, "address": "/groups/8/action" }] }

es gibt v1 szenen und v2 szenen. v1 szenen werden in den birnen gespeichert. die bridge weiss danach nichts mehr vom inhalt, v2 szenen werden in der bridge gespeichert und man kann sich den inhalt zeigen lassen. das hat nichts mit der bridge version zu tun.

aber ich würde sagen du kannst einfach die schon angelegte szene verwenden.
Titel: Antw:HUEDevice/HUEGroup Szene mit Überblendzeit einschalten
Beitrag von: chrille76 am 13 November 2016, 22:02:02
Ok, also scheint die Transitiontime in der Rule keine Rolle zu spielen, da direkt in der Szene gesetzt. Ich werde das dann morgen mal probieren, für heute ist Schluss. Und nochmals vielen Dank für deine Hilfe.