NEWS
Script "LichtAn": Erkennt von welchem Echo-Gerät Befehl kommt
-
Hört sich nach einen hübschen Zoo an
Für die TV-Anbindung musst Du in der Tat das Script entsprechend anpassen, so dass je nach Echo, die Aktivitäten in der Harmony oder in Broadlink gestartet werden.
Solltest Du dann aber mit IT-Kenntnissen hinbekommen.
Grundlegend ist es so im JS-Module verwaltest Du die Scripte, also Anlegen, Editieren, Löschen. Du kannst die Scripte in Ordner strukturieren und vieles mehr.
Zusätzlich fungiert die Oberfläche aber auch als Operationsbasis für die Scripte. Du kannst sie starten und stoppen und das Log einsehen, wenn sie laufen.
In ioBroker ist der Objekt-Reiter die zentrale Anlaufstelle für die Kommunikation von Daten zwischen zwei Scripen bzw. zwischen IoT-Gerät und Scripten.
Ergo, kannst Du in einem Script Datenpunkte im Objektreiter anlegen (siehe LichtAn-Script im Konfigurationsteil).
Diese Datenpunkte werden dort normalerweise unter dem Eintrag "javascript…" erzeugt. Im Script-Code kann darauf mit setState() und getState() zugegriffen werden.
Außerdem können Scripte auch auf Änderungen von Datenpunkte lauschen und bei einer Änderung Code ausführen.
Das können sowohl Statusänderungen von IoT-Geräten sein (Licht an/aus) oder durch Scripte generierte Änderungen.
-
Krass.
kurz und knapp.
Habe nach deiner Beschreibung mal das AlexaLogOn-Script eingebaut, konfiguriert, gestartet ==> läuft
Vielen Dank.
Jetzt bin ich schon wieder einen großen Schritt weiter gekommen… und mus erst mal verstehen, was hier passiert ist
[Nachtrag]: Unglaublich. Auch das Licht-An-Skript läuft (nach dem zweiten Versuch) einwandfrei
Auch wenn ich es zunächst mal nur mit Lampen ausprobiert habe
Riesiges DANKE!
-
-
könnte man das ganze spektakel nicht auch mit in den Cloud adapter paken ? wäre doch schön wenn man es für alle einfacher macht
-
könnte man das ganze spektakel nicht auch mit in den Cloud adapter paken ? wäre doch schön wenn man es für alle einfacher macht `
Da musst Du die Entwickler des Cloud-Adapters fragen, ob sie das wollen, ob das technisch überhaupt möglich/sinnvoll ist. Keine Ahnung…
Ich stimme Dir aber zu, dass ein Adapter (muss ja nicht im Cloud-Adapter sein) es für Anfänger zunächst einmal einfacher machen würde.
Auf der anderen Seite ist das schöne an einem Script, dass jeder, der ein bisschen Coding-Erfahrung hat, hier ganz einfach seine Sonderlogik hinzucoden kann (wie bei Maggi vorhin z.B.).
-
Hallo zusammen,
herzlichen Dank für die sehr guten Scripts von Stefan!
Habe Alexa erst seit Weihnachten und bin leider noch ein Newcomer.
Meine Frage: wie / was muß ich in iobroker tun, damit Alexa Licht an triggert.
Mit cloud kann ich das Licht über Alexa schalten, aber nicht mit dem Skript.
cloud möchte ich aber nicht weiter nutzen.
Cookie ist vorhanden und gültig. Aber in Alexa bekomme ich kein Gerät und somit auch keinen Trigger um das Skript Alexa_Licht_ein (main) zu starten.
Vielleicht kann mir jemand den entscheidenden Tip geben, wie ich das in Alexa hin bekomme!?
Besten Dank im Voraus.
-
Meine Frage: wie / was muß ich in iobroker tun, damit Alexa Licht an triggert.
Mit cloud kann ich das Licht über Alexa schalten, aber nicht mit dem Skript.
cloud möchte ich aber nicht weiter nutzen. `
Bin mir jetzt nicht ganz sicher, was Du mit cloud meinst.
Geht es um den cloud-Adapter in iobroker? -> für das Script unbedingt erforderlich, weil er dafür sorgt, dass der Trigger für das Script befüllt wird.
Oder meinst Du, dass Du die Gruppenzuordnung in der Alexa App nicht nutzen willst? -> Dafür kann das Script als Ersatz dienen
Generell sollte aber klar sein, dass die Spracherkennung und Verteilung an den ensprechenden Skill (hier ioBroker Skill) immer in der Cloud bei Amazon passiert.
Du kannst Dir zum Beispiel mein Script zum Löschen der Sprachbefehle aus der Cloud ansehen: http://forum.iobroker.net/viewtopic.php?f=37&t=9770
-
Tag und Nacht andere Level zu haben, kann ich nachvollziehen. ` Moin Dirk,
ich bin gerade über diese Anforderung gestolpert.
Du könntest dass Umsetzen in dem Du separate Scripte anlegst, die das Einschalten der Lampe beobachten und dann bei bestimmten Uhrzeiten entweder sofort dimmen, oder anders herum - den abgedimmten Wert als Standard ganze nicht an und zu bestimmten Uhrzeiten hellt das Script dann auf (ähnlich eines Softstarts).
Dann muss das nicht über die Alexa Steuerung abgebildet werden.
-
Hallo Stefan,
danke für die rasche Antwort.
Ja, ich meinte den cloud-Adapter in Biobroker. Auf den ich gerne ganz verzichten würde, so wie ich aus Deinem Script 'Lichtein' interpretiert habe.
Scheinbar geht das aber Doch nur mit dem cloud-Adapter um den Trigger zu bekommen. Damit hatte ich auch schon Erfolg.
Der cloud-Adapter ist bei mir sehr instabil und die Verbindung mal da und mal nicht.
Besten Dank nochmals für Deine Erläuterung.
-
Tag und Nacht andere Level zu haben, kann ich nachvollziehen. ` Moin Dirk,
ich bin gerade über diese Anforderung gestolpert.
Du könntest dass Umsetzen in dem Du separate Scripte anlegst, die das Einschalten der Lampe beobachten und dann bei bestimmten Uhrzeiten entweder sofort dimmen, oder anders herum - den abgedimmten Wert als Standard ganze nicht an und zu bestimmten Uhrzeiten hellt das Script dann auf (ähnlich eines Softstarts).
Dann muss das nicht über die Alexa Steuerung abgebildet werden. ` Hallo BBTown, das ist auch eine gute Idee. Ich probiere das mal aus.
Danke für die Anregungen
Dirk
Gesendet von meinem SM-G920F mit Tapatalk
-
Tag und Nacht andere Level zu haben, kann ich nachvollziehen. ` Moin Dirk,
ich bin gerade über diese Anforderung gestolpert.
Du könntest dass Umsetzen in dem Du separate Scripte anlegst, die das Einschalten der Lampe beobachten und dann bei bestimmten Uhrzeiten entweder sofort dimmen, oder anders herum - den abgedimmten Wert als Standard ganze nicht an und zu bestimmten Uhrzeiten hellt das Script dann auf (ähnlich eines Softstarts).
Dann muss das nicht über die Alexa Steuerung abgebildet werden. `
Stimmt, das macht es wirklich einfacher. So muss man nicht alles in ein Script packen und ist flexibler. Und es würde auch für Schaltungen unabhängig von Alexa funktionieren.
-
Der cloud-Adapter ist bei mir sehr instabil und die Verbindung mal da und mal nicht. `
Das Problem habe ich in letzter Zeit leider auch. Zusätzlich gibt es jetzt auch noch die Probleme mit geblockten Accounts.
Bin ich auch betroffen, ohne zu wissen warum…
Insofern kann ich nachvollziehen, dass Du da eine andere Lösung haben möchtest.
Aber im Moment ist der Adapter die einzige mir bekannte Möglichkeit.
-
ich spiele gerade noch an der Möglichkeit, dem Skript eine Erkennungsfunktion zu spendieren, die erkennt, welcher Befehl gesprochen wurde.
Leider ist mir bis jetzt nicht ganz klar, was die Rückgabewerte im body aussagen.
Der text in der Summary listet zwar den erkannten Text auf, allerdings der gesprochene Text und nicht der SmartName.
Und dann manchmal mit und manchmal ohne "alexa"
Und dann gibt es noch den Parameter "firstUtteranceId" der schein immer konstant zu sein. Damit schon einmal ein Kandidat. Aber was bedeutet er?
Eine Idee?
[Edit]
ich habe gerade gesehen, dass ich vielleicht gar nicht den Body dafür brauche. Der Body ist vielleicht wirklich nur wichtig, woher der Request kam.
Im Objekt cloud.0.smart.last*** steht alles, was von Alexa zurück kam. Also auch welches Script/Device angesprochen wurde, der Wert und das Ergebnis.
Seltsamerweise gibt es dort auch ein lastRoom. Nur steht da nix drin.
Mit diesen Informationen kann ich aber vielleicht schon weiter arbeiten
[Edit 2]
Leider erkennt das Skript nur den letzten Smart-Namen. Warum?
cloud.0 bekommt alle Befehle korrekt zurück geliefert. und Alexa meldet auch OK
-
Im Objekt cloud.0.smart.last*** steht alles, was von Alexa zurück kam. Also auch welches Script/Device angesprochen wurde, der Wert und das Ergebnis.
Seltsamerweise gibt es dort auch ein lastRoom. Nur steht da nix drin. `
Bei mir sind alle diese Einträge leer.
Vielleicht ist hier für die Zunkunft eine Funktion vorgesehen… frag am besten bei den Entwicklern dieses Adapters nach
-
ich glaube, ich habe jetzt eine Lösung gefunden….
Teil 1: Dei Skript stekkt einen universellen Connector zur Verfügung. Der heißt dann vielleicht nicht "Licht" sondern "universal"
Das bedeutet, dass nur ein neues Objekt angelegt wird.
Im Cloud-Adapter wird dann dieser Universaladapter ausgewählt, ihm aber alle Gerätenamen/Sender oder was auch immer als Komma-separierte Liste eingetragen. (Apfel, Birne, Licht, TV....)
Teil2: Dei Skript empfängt wie vorher beim Licht im Body der Antwort von Alexa den Namen des Echo-Gerätes.
Jetzt aber wird nicht geschaut, was in deinem Skript als Funktion hinterlegt wird, sondern in cloud.o.lastObjektID geprüft, ob im Cloud-Adapter ein Kommando erkannt wurde.
Wenn ja, steht das Bezugsgerät in lastResponse und der Wert in lastCommand
Aus diesem Informationsmix kann man nun beliebige Dinge tun.....
-
Teil 1: Dei Skript stekkt einen universellen Connector zur Verfügung. Der heißt dann vielleicht nicht "Licht" sondern "universal"
Im Cloud-Adapter wird dann dieser Universaladapter ausgewählt, ihm aber alle Gerätenamen/Sender oder was auch immer als Komma-separierte Liste eingetragen. (Apfel, Birne, Licht, TV….) `
Das kannst Du jetzt schon machen. Halt nur manuell.
Dann im Script den zurückgegebenen Text nach den Schlüsselworten durchsuchen und je Schlüsselwort und Raum eine Funktion starten.
-
Teil 1: Dei Skript stekkt einen universellen Connector zur Verfügung. Der heißt dann vielleicht nicht "Licht" sondern "universal" `
Das Problem daran ist, dass "Licht" das Schlüsselwort für Alexa ist. Wenn Du das auf "universal" änderst, dann reagiert Alexa auch nur auf dieses Wort.
Man muss also schon wissen (und es Alexa über den Namen der SmartGeräte "mitteilen"), bei welchen Dingen Alexa das Ergebnis an ioBroker schicken soll. `
ne, das funktioniert soweit eigentlich ganz gut. Ich gebe bei dem Eintrag im Cloud-Adapter ja an, auf welche Worte Alexa reagieren soll.
javascript.0 2018-01-17 20:21:56.030 info script.js.common.Universaltrigger: New Value: 100 javascript.0 2018-01-17 20:21:56.030 info script.js.common.Universaltrigger: Old Value: true javascript.0 2018-01-17 20:21:56.030 info script.js.common.Universaltrigger: Set new value for device sonoff.0.DVES_8E0651.POWER javascript.0 2018-01-17 20:21:56.029 info script.js.common.Universaltrigger: Banane ist eingeschaltet! javascript.0 2018-01-17 20:21:55.870 info script.js.common.Universaltrigger: Alexa Trigger changed: 100 javascript.0 2018-01-17 20:21:49.169 info script.js.common.Universaltrigger: New Value: 0 javascript.0 2018-01-17 20:21:49.168 info script.js.common.Universaltrigger: Old Value: true javascript.0 2018-01-17 20:21:49.168 info script.js.common.Universaltrigger: Set new value for device sonoff.0.DVES_8E0651.POWER javascript.0 2018-01-17 20:21:49.167 info script.js.common.Universaltrigger: Apfel ist ausgeschaltet! javascript.0 2018-01-17 20:21:49.006 info script.js.common.Universaltrigger: Alexa Trigger changed: 0 javascript.0 2018-01-17 20:21:41.684 info script.js.common.Universaltrigger: New Value: 100 javascript.0 2018-01-17 20:21:41.683 info script.js.common.Universaltrigger: Old Value: true javascript.0 2018-01-17 20:21:41.683 info script.js.common.Universaltrigger: Set new value for device sonoff.0.DVES_8E0651.POWER javascript.0 2018-01-17 20:21:41.682 info script.js.common.Universaltrigger: Apfel ist eingeschaltet! javascript.0 2018-01-17 20:21:41.191 info script.js.common.Universaltrigger: Alexa Trigger changed: 100
Zur Zeit ist das allerdings noch nicht mit einer Auswertung versehen. Aber du siehst damit, dass er auf alle Begriffe reagiert
-
Tag und Nacht andere Level zu haben, kann ich nachvollziehen. ` Moin Dirk,
ich bin gerade über diese Anforderung gestolpert.
Du könntest dass Umsetzen in dem Du separate Scripte anlegst, die das Einschalten der Lampe beobachten und dann bei bestimmten Uhrzeiten entweder sofort dimmen, oder anders herum - den abgedimmten Wert als Standard ganze nicht an und zu bestimmten Uhrzeiten hellt das Script dann auf (ähnlich eines Softstarts).
Dann muss das nicht über die Alexa Steuerung abgebildet werden. `
Stimmt, das macht es wirklich einfacher. So muss man nicht alles in ein Script packen und ist flexibler. Und es würde auch für Schaltungen unabhängig von Alexa funktionieren. `
Habe gerade mal überlegt wie so ein Script aussehen könnte.
In dem Cloudadapter würde ich 10% einstellen.
Dann ein Script nehmen welches als Trigger z.B. das Licht hat.
Wenn dann der Wert des Trigger 10% ist und eine entsprechende Uhrzeit (Bsp. 22 -06 Uhr) -
dann setze den Wert auf 30% -
Sonst auf 100%
Warum Coudadapter auf 10% - ich möchte immer noch die Möglichkeit haben die Helligkeit zu steuern (Bsp. setze Licht auf 50%).
Eure Meinung? ist das eine Idee oder Quatsch.
Gruß
Dirk
-
[In dem Cloudadapter würde ich 10% einstellen.
Dann ein Script nehmen welches als Trigger z.B. das Licht hat.
Wenn dann der Wert des Trigger 10% ist und eine entsprechende Uhrzeit (Bsp. 22 -06 Uhr) -
dann setze den Wert auf 30% -
Sonst auf 100%
Warum Coudadapter auf 10% - ich möchte immer noch die Möglichkeit haben die Helligkeit zu steuern (Bsp. setze Licht auf 50%).
Eure Meinung? ist das eine Idee oder Quatsch.
Gruß
Dirk ` Ich tendiere zu quatsch
Warum willst Du als Standard einen Wert nehmen der wahrscheinlich nie gebraucht/zum tragen kommt?
Nimm doch 30% (Deine Vorgabe für Nachts) als Standard und greife nur ein Wenn Du es heller haben willst.
Du kannst Ja immer noch einen individuellen Wert (50%) bei Bedarf ansagen
-
Teil 1: Dei Skript stekkt einen universellen Connector zur Verfügung. Der heißt dann vielleicht nicht "Licht" sondern "universal" `
Das Problem daran ist, dass "Licht" das Schlüsselwort für Alexa ist. Wenn Du das auf "universal" änderst, dann reagiert Alexa auch nur auf dieses Wort.
Man muss also schon wissen (und es Alexa über den Namen der SmartGeräte "mitteilen"), bei welchen Dingen Alexa das Ergebnis an ioBroker schicken soll. `
ne, das funktioniert soweit eigentlich ganz gut. Ich gebe bei dem Eintrag im Cloud-Adapter ja an, auf welche Worte Alexa reagieren soll.
javascript.0 2018-01-17 20:21:56.030 info script.js.common.Universaltrigger: New Value: 100 javascript.0 2018-01-17 20:21:56.030 info script.js.common.Universaltrigger: Old Value: true javascript.0 2018-01-17 20:21:56.030 info script.js.common.Universaltrigger: Set new value for device sonoff.0.DVES_8E0651.POWER javascript.0 2018-01-17 20:21:56.029 info script.js.common.Universaltrigger: Banane ist eingeschaltet! javascript.0 2018-01-17 20:21:55.870 info script.js.common.Universaltrigger: Alexa Trigger changed: 100 javascript.0 2018-01-17 20:21:49.169 info script.js.common.Universaltrigger: New Value: 0 javascript.0 2018-01-17 20:21:49.168 info script.js.common.Universaltrigger: Old Value: true javascript.0 2018-01-17 20:21:49.168 info script.js.common.Universaltrigger: Set new value for device sonoff.0.DVES_8E0651.POWER javascript.0 2018-01-17 20:21:49.167 info script.js.common.Universaltrigger: Apfel ist ausgeschaltet! javascript.0 2018-01-17 20:21:49.006 info script.js.common.Universaltrigger: Alexa Trigger changed: 0 javascript.0 2018-01-17 20:21:41.684 info script.js.common.Universaltrigger: New Value: 100 javascript.0 2018-01-17 20:21:41.683 info script.js.common.Universaltrigger: Old Value: true javascript.0 2018-01-17 20:21:41.683 info script.js.common.Universaltrigger: Set new value for device sonoff.0.DVES_8E0651.POWER javascript.0 2018-01-17 20:21:41.682 info script.js.common.Universaltrigger: Apfel ist eingeschaltet! javascript.0 2018-01-17 20:21:41.191 info script.js.common.Universaltrigger: Alexa Trigger changed: 100
Zur Zeit ist das allerdings noch nicht mit einer Auswertung versehen. Aber du siehst damit, dass er auf alle Begriffe reagiert `
Ja, ist mir direkt nach dem Absenden auch aufgefallen, dass Du das so gemeint hast. Das geht natürlich.