HUEDevice/HUEGroup Szene mit Überblendzeit einschalten

Begonnen von chrille76, 12 November 2016, 16:34:30

Vorheriges Thema - Nächstes Thema

chrille76

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ß

justme1968

das war bis jetzt noch nicht vorgesehen. hab es eben eingebaut. geht ab dem
update morgen.

gruss
  andre
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968


chrille76

#3
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ß

justme1968

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
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

justme1968

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.
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

chrille76

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.

chrille76

#7
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?

justme1968

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.
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

chrille76


chrille76

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?

justme1968

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- 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
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

chrille76

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- 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.

justme1968

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.
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

chrille76

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.