NEWS
IoBroker.scenes
-
Auch ich spiele mit dem scenes adapter herum, zum testen und um die Doku vorzubereiten.
Mein Szenario soll werden:
Film ansehen - Heimkino, bestehend aus:
Auslöser: manuelles herunterfahren der Leinwand
Szene soll (erst einmal) bestehen aus:
-
sofort über Harmony-Hub die activity "Kino-Bluray" starten
-
Rolladen Tür und Fenster sofort schließen
-
Licht (Kranz und Decke) sofort 50%
-
Licht Decke ziemlich bald auf 0 dimmen
-
Licht Kranz etwas später auf 0 dimmen
bei mir sieht das so aus:
Abgesehen von den evtl. vorhandenen Problemen mit den Einheiten beim Level vom Rolladenaktor und Dimmer (0-1 oder 0-100??) habe ich nicht gefunden in welcher Einheit die Ramptime im Dimmer (5 war sofort aus - also nicht Minuten), die Verzögerung der Aktionen (Millisekunden???) einzutragen sind.
Weiterhin finde ich unter Zustände Werte, die anscheinend überhaupt nicht mit dem Zustand korrelieren.
Der harmony-Adapter zeigt nach wie vor als activity TV_Sat an, sowohl asl actual, als auch als Einzeldatenpunkt mit Wert 2
Die Leinwand ist angeblich auf 100, obwohl sie unten ist, in der CCU wird auch 0 angezeigt
und die Rollläden ebenfalls, nur das Licht stimmt:
und das log gefällt mir auch nicht:
scenes-0 2015-09-03 19:35:21 info restartAdapter scenes-0 2015-09-03 19:35:16 info restartAdapter scenes-0 2015-09-03 19:35:15 info restartAdapter scenes-0 2015-09-03 19:35:07 info restartAdapter scenes-0 2015-09-03 19:35:06 info restartAdapter hm-rpc-0 2015-09-03 19:32:38 info setValue ["JEQ0202324:1","LEVEL",{"explicitDouble":0}] FLOAT hm-rpc-0 2015-09-03 19:32:37 info setValue ["JEQ0202324:1","RAMP_TIME",{"explicitDouble":300}] FLOAT hm-rpc-0 2015-09-03 19:32:37 info setValue ["JEQ0201654:1","LEVEL",{"explicitDouble":0}] FLOAT hm-rpc-0 2015-09-03 19:32:37 info setValue ["JEQ0201654:1","RAMP_TIME",{"explicitDouble":300}] FLOAT hm-rpc-0 2015-09-03 19:32:36 info setValue ["JEQ0202324:1","LEVEL",{"explicitDouble":0.5}] FLOAT hm-rpc-0 2015-09-03 19:32:36 info setValue ["JEQ0201654:1","LEVEL",{"explicitDouble":0.5}] FLOAT hm-rpc-0 2015-09-03 19:32:35 info setValue ["JEQ0112564:1","LEVEL",{"explicitDouble":0}] FLOAT hm-rpc-0 2015-09-03 19:32:35 info setValue ["JEQ0112436:1","LEVEL",{"explicitDouble":0}] FLOAT scenes-0 2015-09-03 19:31:49 info restartAdapter scenes-0 2015-09-03 19:31:18 info restartAdapter scenes-0 2015-09-03 19:31:14 info restartAdapter scenes-0 2015-09-03 19:31:13 info restartAdapter scenes-0 2015-09-03 19:31:11 info restartAdapter scenes-0 2015-09-03 19:31:09 info restartAdapter scenes-0 2015-09-03 19:31:06 info restartAdapter scenes-0 2015-09-03 19:31:05 info restartAdapter scenes-0 2015-09-03 19:30:53 info restartAdapter scenes-0 2015-09-03 19:30:51 info restartAdapter scenes-0 2015-09-03 19:30:48 info restartAdapter scenes-0 2015-09-03 19:30:47 info restartAdapter scenes-0 2015-09-03 19:30:47 info restartAdapter scenes-0 2015-09-03 19:30:41 info restartAdapter scenes-0 2015-09-03 19:30:23 info restartAdapter scenes-0 2015-09-03 19:30:16 info restartAdapter scenes-0 2015-09-03 19:30:15 info restartAdapter
Kann mir da jemand helfen?
Gruß
Rainer
PS ich hatte zwischendrin mal die Leinwand wieder hoch und runter gefahren.
-
-
habe es jetzt anscheinend am laufen.
ich hatte beim Dimmer die Ramptime auf 400 statt auf 40 gestellt, dadurch dauerte der Dimmvorgang sehr lange.
Irrtümlich nahm ich erst an, dass die Verzögerung zu spät kommt.
Habe dann meine zweite Szene angefangen.
Nach abschalten des TV sollen die Lampe verzögert ausgehen.
Klappt auch so weit, jedoch ist das Ergebnis wie so oft zwar das, was programmiert ist, aber nicht das was gewollt war.
Kann man den Auslöser für die Szene auch aus verschiedenen Bedingungen zusammensetzen, oder muss sowas wieder über js gemacht werden?
ggf, cron + Bedingung??, so dass die Szene durch die Bedingung nur in einem Zeitfenster z.B. zwischen 22h und 24h ausgelöst wird
Gruß
Rainer
5741_mobile_ui_functions.jpg -
` > Kann man den Auslöser für die Szene auch aus verschiedenen Bedingungen zusammensetzen, oder muss sowas wieder über js gemacht werden?
ggf, cron + Bedingung??, so dass die Szene durch die Bedingung nur in einem Zeitfenster z.B. zwischen 22h und 24h ausgelöst wird `
Momentan nur mit JS möglich. -
Ich habe jetzt Szenen erweitert, so dass man virtuelle Gruppen bilden konnte. Z.B. man hat 3 Thermostaten im Raum.
Man kann jetzt die zu eine virtuelle Gruppe binden und über vis mit einem Widget steuern.
48_img_013.png -
Ich habe ziemlich wenig Feedback über Scenes bekommen. Obwohl ich den Adapter ziemlich wichtig finde.
Ist alles verständlich? Was konnte man besser oder noch machen?
-
Hi Bluefox,
ich nutze den Adapter Scenes gerne und häufig. In der letzten Zeit sind mir keine Fehler aufgefallen, alles funktioniert wie es soll
Er spart einige Javascripte, in denen ich früher halt nacheinander mühselig zeitversetzt einzelne Lampen/Geräte geschaltet habe.
Vielen Dank
Gruss Marco
-
Ich nutze den Adapter auch für einige Funktionen. Oft kann man sich ein Skript dadurch sparen.
Während dem Bearbeiten/Hinzufügen von Szenen stürzt der Adapter allerdings permanent ab:
host-raspberrypi 2015-10-29 14:06:18 error instance system.adapter.scenes.0 terminated with code 6 (uncaught exception) TypeError: 2015-10-29 14:06:18 error at Timer.listOnTimeout (timers.js:92:15) TypeError: 2015-10-29 14:06:18 error at null._onTimeout (/opt/iobroker/node_modules/iobroker.js-controller/lib/adapter.js:367:30) TypeError: 2015-10-29 14:06:18 error at Adapter.emit (events.js:172:7) TypeError: 2015-10-29 14:06:18 error at emitTwo (events.js:87:13) TypeError: 2015-10-29 14:06:18 error at Adapter. (/opt/iobroker/node_modules/iobroker.scenes/main.js:99:13) TypeError: 2015-10-29 14:06:18 error at restartAdapter (/opt/iobroker/node_modules/iobroker.scenes/main.js:113:13) TypeError: 2015-10-29 14:06:18 error at exports.clearTimeout (timers.js:213:42) TypeError: 2015-10-29 14:06:18 error Cannot assign to read only property '_onTimeout' of scene.Harmony_an uncaught 2015-10-29 14:06:18 error exception: Cannot assign to read only property '_onTimeout' of scene.Harmony_an
-
Hier noch eine ausführlicher Beitrag zu dem Adapter:
Das Idee des Adapter finde ich sehr gut, die Wichtigkeit für die Automation von Abläufen ist enorm. Natürlich kann man alles per Skript lösen, aber das ist dank des Scene Adapter in vielen Fällen nicht mehr nötig. Allerdings finde ich, dass man noch an der Bedienbarkeit des Adapter verbessern kann, ich komme trotz intensiver Nutzung oft durcheinander was nun "Setzen" und "Setzen bei false" bedeutet usw., auch fällt es mir schwer komplexe Szene nachträglich zu bearbeiten. Was mir ein paar mal gefehlt hat ist das verknüpfen von Triggern, also Löse Szene aus wenn "x == 1 ODER y == 2 UND z == 0".
Inspiriert durch einige Erfahrung mit dem Harmony System (Activities) habe ich mir ein paar Gedanken zur besseren Bedienung gemacht:
Eine Szene sollte (auch optisch) unterteilt werden in einen Triggerausdruck, eine Startsequenz und eine Endsequenz.
Einen Triggerausdruck ist eine Liste aus Datenpunkten, Vergleichswerten und UND/ODER-Verknüfungen:
hm-rpc.0.XXX.1.STATE == 1 UND hm-rpc.0.YYY.1.STATE == 0
Man könnte nun (ähnlich wie es jetzt schon ist) entweder die Endsequenz starten sobald der gesamte Ausdruck nicht mehr wahr ist, oder aber einen zweiten Triggerausdruck definieren, welcher die Endsequenz auslöst wenn er wahr wird. Das hat aber den Nachteil, dass beide Ausdrücke gleichzeitig wahr sein können. Alternativ sollte eine Szene einfach nach einer definierten Zeit enden.
Start- und Endsequenzen bestehen aus Datenpunkten, Werten welche gesetzt werden sollen sowie Verzögerungen:
Startsequenz: hm-rpc.0.XXX.1.STATE.1 = 1 1000ms Verzögerung hm-rpc.0.YYY.1.STATE.1 = 0 Endsequenz: hm-rpc.0.YYY.1.STATE.1 = 1 1000ms Verzögerung hm-rpc.0.XXX.1.STATE.1 = 0
-
Hallo Bluefox,
ich nutze den Adapter auch sehr gern. Vor allem für die Lichtsteuerung. Der Adapter ersetzt natürlich nicht die Direktverknüpfungen zwischen Homematic Komponenten, aber er spart (wie oben von pman schon gesagt) viel Arbeit in Javascript.
<u>Javascript</u>
Vorteil:
-
Universelles ansprechen von Gruppen ("alle Lampen im Wohnzimmer aus" sind nur wenige Zeilen Code). Aktoren können getauscht werden, ohne den Code zu ändern. Sie müssen nur einem Gewerk zugeordnet werden (zB Licht, Raum Wohnzimmer).
-
Für die Dauer wartungsfreundlicher.
-
Bedingungen sind leichter eingebaut (Systemvariablen)
Nachteil:
-
Kenntnisse nötig
-
Testen nötig
-
genaue Dokumentation im Skript nötig
-
nur mit Workaround (ack oder weitere Variable) aus VIS aufrufbar
<u>Scenes</u>
Vorteil:
-
Einfacheres Setzen der Datenpunkte.
-
Jede Komponente wird direkt angesprochen.
-
unterschiedliche Zeitverzögerungen sind schnell eingebaut.
-
Benennung übersichtlicher als in Javascript.
-
Direktes aufrufen aus VIS
Nachteil:
-
Bei Änderung einer Komponente müssen alle Szenen nach dem Aktor durchsucht werden (Beispiel: Regallicht - alter Schaltaktor wird durch eine neuen Dimmer ersetzt).
-
Bedingungen nicht verfügbar (z.B. "wenn zwischen 20Uhr und 22 Uhr" oder "wenn (Regen == true) && (Temp < 10°C)" )
Ich nutze auch eine Kombination aus beidem. Einige Szenen werden einfach aus Javascript angestossen. Das ist zB in Verbindung mit den Homematic Wandtastern sehr praktisch. Wenn der Datenpunkt (zB Tastendruck oben lang) auf true geht, wird die Funktion aufgerufen
function tv_szene() { log('TV Szene gestartet'); setState('scene.0.tv_ein', true); // TV Licht ein via Szenen Adapter wird gestartet }
Ich wünsche mir noch:
-
Optionaler Logeintrag, wenn Szene gestartet (kann ich zwar mit Javascript machen, ein Haken in den Szeneneinstellungen wär super)
-
Drag and Drop bei der Festlegung der Reihenfolge
Fragen:
Ich habe die Neuerung http://forum.iobroker.net/posting.php?mode=reply&f=23&t=1134#pr13597 nicht verstanden. Kannst du das nochmal erklären?
Was bedeutet "Use trigger for true/false" ?
Kann man eine Szene aus einer anderen Szene starten? (Beispiel: Szene Licht_alles_aus startet Szenen Licht_alles_aus_Wohnzimmer, Licht_alles_aus_Flur, Licht_alles_aus_Küche, etc.) ?
Danke fü die Entwicklung dieses tollen Adapters!
Gruß,
Pix
-
-
Hallo pix
@pix:Fragen:
Ich habe die Neuerung Virtuelle Gruppen nicht verstanden. Kannst du das nochmal erklären?
Was bedeutet "Use trigger for true/false" ? `
@[url=http://www.iobroker.net/?page_id=1950⟨=de:~~Website"]~~Setze Werte bei False: Ist diese Checkbox angehakt, können zu jedem eingebundenen Datenpunkt eine Aktion bei true und eine Aktion bei false eingegeben werden. Letztere Befehle werden abgearbeitet, wenn der Zustand der gesamten Szene false ist. `
Wenn ich das richtig verstanden habe, wird mit diesen "Gruppen" ermöglichst mehrere Dinge aufeinmal zu schalten.
Trigger 1: Taster oben kurz startet die "Szene"
Trigger 2: Taster unten kurz beendet die Szene.
Bei normalen Szenen startet die Szene wenn der Trigger ausgelöst wird und endet eigentlich nie.
Hoffe das stimmt so.
Gruß
Rainer
-
Hallo Homoran,
@Homoran:Wenn ich das richtig verstanden habe, wird mit diesen "Gruppen" ermöglichst mehrere Dinge aufeinmal zu schalten.
Trigger 1: Taster oben kurz startet die "Szene"
Trigger 2: Taster unten kurz beendet die Szene.
Bei normalen Szenen startet die Szene wenn der Trigger ausgelöst wird und endet eigentlich nie. `
so richtig hab ich das noch nicht kapiert. Eine Szene startet, wenn sie getriggert wurde. Also wenn ein Auslöser zB den Datenpunkt scene.0.licht_an auf "true" gesetzt hat. Dann werden die Punkte innerhalb der Szenenkonfiguration abgearbeitet (zB Lampe 1 true, Lampe 2 true; Licht ist an).
Die Szene endet, wenn eine der Lampen wieder ausgeht. Dann ist scene.0.licht_an == "false".
Um die Lampen absichtlich auszuschalten nutze ich ja eine zweite Szene "scene.0.licht_aus".
Welchen Sinn hat es, manuell eine Szene zu beenden?
@[url=http://www.iobroker.net/?page_id=1950⟨=de:~~Website"]~~Setze Werte bei False: Ist diese Checkbox angehakt, können zu jedem eingebundenen Datenpunkt eine Aktion bei true und eine Aktion bei false eingegeben werden. Letztere Befehle werden abgearbeitet, wenn der Zustand der gesamten Szene false ist. `
Aha! Das ist ja wie IF und ELSE, oder?
Damit hat sich die obige Frage fast wieder erledigt. Um beim Licht zu bleiben und wir lassen Direktverknüpfungen mal raus:
Ich habe zwei Lampen mit Aktoren im Raum. Dazu die Szene "scene.0.licht". Wenn ich die Szene starte werden beide Lampen eingeschaltet, die Szene wird "true". Beide Datenpunkte haben "Aktion bei false" angehakt. Wenn eine der Lampen ausgeht und damit die ganze Szene auf "false", kann ich die andere Lampe damit zum Beispiel auch auf "aus" stellen. So wie Master/Slave? Ist das richtig?
Gruß,
-
@pix:Um die Lampen absichtlich auszuschalten nutze ich ja eine zweite Szene "scene.0.licht_aus".
Welchen Sinn hat es, manuell eine Szene zu beenden? `
Das Beispiel von BF auf github zeigt den Grund:
"Lichtschalter" oben an macht alle Lampen im Bad an und der Lichtschalter unten wieder aus und ggf. den Lüfter
…für einfaches Gruppieren von mehreren Aktoren.
Eine zweite Scene ist natürlich auch eine Möglichkeit.
Gruß
Rainer
-
Danke für die tolle Feedbacks, werde morgen die genau durchlesen.
Heute war bei mir ein langen Tag.
-
Hallo,
habe heute mal einen Bewegungsmelder mit einem Funkschaltaktor verknüpft um eine Direktverbindung zu simulieren. Läuft.
Ich finde die Szenen für die Zukunft vor allem auch für die Sprachsteuerung nützlich. Damit lassen sich leicht die Aktionen zusammenfassen und einbinden, die auf Sprachbefehle erfolgen sollen. Es fehlt nur noch der Teil Spracheingabe (offline) :roll:
Gruß,
Pix
-
Hallo,
ich habe noch ein Frage zum Adapter:
Bisher habe ich bei eintretender Nachtruhe meinen Dimmer im Bad über einen Virtuellen Kanal auf max 50% gesetzt. Drückt man nachts auf den Lichttaster an der Wand, wird es nicht so hell. Mit Ende der Nachtruhe wurde der Wert wieder auf 100% gesetzt (natürlich gibt es eine Direktverknüpfung über HM-Webui). Später werden noch mehr Dimmer dazukommen und ggf. einige Schaltaktoren bei Nachtruhe gesperrt werden. Aber erstmal nutze ich nur einen Dimmer.
Ich habe das bisher mit einer Javascript-Funktion gemacht und möchte jetzt Scenes dafür nutzen.
Ich habe zwei Szenen angelegt:
Nachtlicht_aus schaltet den Dimmer auf 50% wenn scene.0.licht_nachtlicht_aus auf true gesetzt wird.
Nachtlicht_ein schaltet den Dimmer auf 100% wenn scene.0.licht_nachtlicht_ein auf true gesetzt wird.
EDIT: Sorry, hatte die Werte im Adapter falschherum gesetzt. hab es korrigiert und jetzt neue Bilder eingepflegt. Die Frage bleibt aber bestehen!
Kann ich das nicht zusammenfassen?
Wenn scene.0.licht_nachtlicht = true dann Dimmer auf 50%
Sonst wenn scene.0.licht_nachtlicht = false dann Dimmer auf 100%
Gruß
Pix
-
Hi zusammen,
aus meiner Sicht könnte man noch verbessern:
Wenn ich eine virtuelle Gruppe aus zB nur Lampen (Dimm-Werte) mache, und diese Gruppe dann in eine andere Scene einbaue, müsste ich hier den %-Wert eingeben können den dann alle Lampen der Gruppe annehmen sollen. Selbes gilt für ON/OFF.
Gut wäre auch, wenn man eine Toggle Schaltung machen könnte: 1. Druck auf den Knopf=AN 2. Druck auf den Knopf=Aus
UND: dass man mehrere Trigger zum auslösen verwenden kann
-
gude, ich hab heute das erste mal den Scene adapter benutzt. nur bis jetzt komm ich noch zu keinem erfollg.
ich habe eine Homematic tasterschnittstelle an nem taster und will damit eine Hue lampe anschalten.
in Vis klappt das einwandfrei die hue lampe anzuschalten. nur über scene bekomm ich zwar den status angezeigt, aber es lässt sich nichts schalten.
könnt ihr mir da mal helfen? hab ich da wo ein fehler gemacht?
-
ok, habs hin bekommen
nicht lachen, aber ichs habs einfach verschlafen den adapter zu aktivieren^^
-
Hallo!
Wie kann ich über einen Knopf in VIS eine Scene starten?
Danke!
Vore
-
Hallo!
Wie kann ich über einen Knopf in VIS eine Scene starten?
Danke!
Vore `
Du musst nicht die Szene starten, sondern trigger Zustand setzten. Falls du kein speziellen Trigger hast, dann erzeuge ein Trigger in javascript adapter oder über admin (Reiter Objekte)
Danach kannst du in vis den Zustand javascript.0.myTriggerSzene1 auf true (z.B. mit jqui-state) setzten.