NEWS
Script "LichtAn": Erkennt von welchem Echo-Gerät Befehl kommt
-
hallo zusammen,
habe mal eine frage zum thema alexa und history.
es gibt im netz eine software, welche auf dem pc läuft und anhand der alexa history verschiedene programme aufruft. man sagt z.b alexa, internet. daraufhin untersucht die software die history von alexa und reagiert auf auf das wort "internet". alexa wird kurz blau und "blubbt". hinterlegt man bei dem wort "internet" im programm mit chrome browser öffnen - passiert das auf dem pc. ist also so eine art pc-fernsteuerung.
kann ich so etwas mit iobroker nachbauen - also das auslesen der history für einen bestimmten echo und darauf reagieren. ich verstehe leider nur die hälfte von dem, was hier über die scripte geschrieben wird und benutze die scripts von stefan.franke und ruhr70 zur echo radio steuerung und bin begeistert. falls das gehen sollte mußte die history eines echos dauernd überwacht werden - ist das möglich bzw. zu sehr resourcen fressend.
würde mich über eine antwort freuen `
Du bist in jedem Fall im richtigen Thread, denn das Script hier zum Lichtschalten, macht genau das. Es liest die History aus, um herauszufinden, welcher Echo angesprochen wurde. Aber eben nur, wenn das Schlüsselwort Licht verwendet wurde.
Prinzipiell kannst Du die History-API in kurzen Zeiträumen aufrufen, und darauf eine solche Funktion aufbauen. Es könnte dann aber auch schnell sein, dass Amazon den Zugriff auf die API in irgendeiner Form beschränkt, ähnlich wie es Google bei vielen APIs macht. Aber wer weiß, wenn es schon ein Programm gibt für den PC, das das macht…
Auf der ioBroker-Seite würde ich da jetzt keine Probleme sehen.
Aber in den meisten Fällen reicht eigentlich das Script in diesem Thread anzupassen: Dazu änderst Du den im Konfigurationsteil den Smartname von "Licht" auf zum Beispiel "Internet". Dann musst Du noch in der Mappingtabelle die zu steuernden Geräte eintragen. Sagst Du jetzt Internet in einem Raum, wird die Funktion, die mit dem Echo verknüft ist, gestartet. Natürlich würde man in diesem Szenario für jedes Schlüsselwort ein Script haben. Es gibt dann noch weiterführende Möglichkeiten, aber da müsste man genau wissen, was Du machen willst. `
ich bin mir nicht sicher, ob ihr beide das Gleiche meint.
Auf der einen Seite verstehe ich, dass es ein Skript gibt, das ständig die History eines Alexa ausliest (oder aber nur, wenn Alexa einen neuen Eintrag in die History geschrieben hat).
Ist dieser Eintrag gleich einem bestimmten Begriff, passiert etwas im Programm.
Damit kann ich also sagen, "Alexa, schnurzelpurtz"
Alexa weiß nix damit anzufangen und pupt. Aber das Programm findet den Begriff in der History und reagiert entsprechend.
Was du aber mit LichtAn realisiert hast, dass Alexa auf einen vorgegebenen Begriff reagiert und ihn als gültig erkennt, weil du ihn vorher bei Alexa angemeldet hast.
Das Skript wird dann getriggert und diu kannst entsprechend reagieren.
Damit brauchst du für jeden Begriff ein Skript.
Im obigen Fall brauchst du ein Skript, das dann aber die Auswertung der erkannten Worte selbst übernimmt.
Richtig verstanden?
-
möchtest du ein Danke für die erinnerung ? ` nein, natürlich nicht
und mein Hinweis kam auch im nachgang "schärfer" rüber als er tatsächlich gemeint war!!
-
bin wieder einen schritt weitergekommen - habe das script von stefan einigermaßen verstanden und zum laufen gebracht
stefan hatte recht - wahrscheinlich würde ein dauerndes abfragen der api amazon "aufschrecken". eigentlich wollte ich text-passagen von alexa in iobroker bekommen. leider geht das ja nicht (nur ein, aus und prozent)
die erwähnte software fragt nicht die api sondern lauscht auf den browser - d.h. auf dem pc läuft immer ein browser mit der alexa seite. dort wird dann nach dem triggerwort gefahndet. könnte man wahrscheinlich auch auf dem raspi (debian) einrichten - ich nicht - ist eh zu aufwendig. bevor ich auf alexa/amazon umgestiegen bin, konnte ich mit "ok google" und tasker eigene listen erzeugen, welche an bestimten orten auf dem handy als popup aufklappten (ok google, notiere …). das wollte ich gerne mit alexa umsetzen und iobroker als zentrale benutzen - wird wohl leider nix!
aber immerhin kann ich jetzt dein script anwenden.
<size size="85">für bbtown: danke für deinen letzten kommentar - alles gut!!</size>
-
Auf der einen Seite verstehe ich, dass es ein Skript gibt, das ständig die History eines Alexa ausliest (oder aber nur, wenn Alexa einen neuen Eintrag in die History geschrieben hat).
Ist dieser Eintrag gleich einem bestimmten Begriff, passiert etwas im Programm.
Damit kann ich also sagen, "Alexa, schnurzelpurtz"
Alexa weiß nix damit anzufangen und pupt. Aber das Programm findet den Begriff in der History und reagiert entsprechend. `
Genau das hatte ich mit meinem zweiten Absatz gemeint. Hatte ich auch schon mal überlegt, aber aus den genannten Gründen bisher nicht angegangen.
Was du aber mit LichtAn realisiert hast, dass Alexa auf einen vorgegebenen Begriff reagiert und ihn als gültig erkennt, weil du ihn vorher bei Alexa angemeldet hast.
Das Skript wird dann getriggert und diu kannst entsprechend reagieren.
Damit brauchst du für jeden Begriff ein Skript. `
Das ist die Aussage meines dritten Absatzes. sehr treffend
-
die erwähnte software fragt nicht die api sondern lauscht auf den browser - d.h. auf dem pc läuft immer ein browser mit der alexa seite. dort wird dann nach dem triggerwort gefahndet. könnte man wahrscheinlich auch auf dem raspi (debian) einrichten - ich nicht - ist eh zu aufwendig. bevor ich auf alexa/amazon umgestiegen bin, konnte ich mit "ok google" und tasker eigene listen erzeugen, welche an bestimten orten auf dem handy als popup aufklappten (ok google, notiere …). das wollte ich gerne mit alexa umsetzen und iobroker als zentrale benutzen - wird wohl leider nix! `
Das würde schon funktionieren, da Du ja ein Schlüsselwort hast "notiere" (weiß jetzt nicht, ob das schon belegt ist). Das Script bzw. die History-API gibt Dir dann den gesamten Text, der erkannt wurde, zurück. Dann kannst Du mit dem Text machen, was Du willst. Du müsstest dann irgendeine API aufrufen, die das Ergebnis auf Dein Handy schicken kann.
-
Hier eine Frage. Du schreibst im ersten Beitrag:
@Stefan.Franke:Update
Mittlerweile hat es Amazon hinbekommen, dass das Licht je Raum (bzw. Echo-Gerät) gesteuert werden kann. Dazu muss man in der App Gruppen anlegen und dann die Echo-Geräte und Lampen in die Gruppe einfügen, die zusammen geschaltet werden sollen. Insofern ist das untenaufgeführte Script für das Thema Licht schalten nur noch in Randfällen nötig (z.B. Schalter, die Alexa nicht als Lampe gemeldet werden), oder wenn man das Lichtschalten um eigene Funktionen erweitern möchte.(…) `
Ich weiß nicht, ob ich alles verstanden habe, oder etwas übersehen habe, ABER…
Das Skript ist doch dazu da, mit einem (gleichen) Begriff, unterschiedliche Geräte zu schalten, je nachdem, von welchem Echo dieser Befehl empfangen wurde, oder?!
Beispiel: Ich sage im Schlafzimmer "Licht an" und es geht im Schlafzimmer (und nur dort) das Licht an. Ich sage im Esszimmer "Licht an" und es geht im Esszimmer (und nur dort) das Licht an.
Wie soll ich das über Gruppen in der Alexa-App realisieren? Hier kann ich zwar Gruppen definieren und dieser einen Echo zuordnen, aber ich kann nicht zwei oder mehrere Gruppen mit dem gleichen Namen erstellen. :oops:
Wäre daher über eine weitere Hilfestellung sehr dankbar!
-
Du brauchst bei den Gruppen nicht das Wort Licht einbinden !
Ergo du nennst eine Gruppe Schlafzimmer z.B.
Dann packst du in diese Gruppe das Echo aus dem Schlafzimmer, sowie alle Lichter die du dort mit dem Licht an Befehl
schalten willst, rein.
Wichtig hierbei ist nur das in der Gruppe die Lichter auch als Lampe in der App dargestellt sind und nicht als custom Device.
fertig.
Nun gehst du ins Schlafzimmer und sagst Licht an, den Rest macht Alexa.
Wichtig wäre nur das du KEIN Gerät hast, das "Licht" heißt.
Grüße
-
Vielen Dank für Deine Antwort!
(…)
Wichtig hierbei ist nur das in der Gruppe die Lichter auch als Lampe in der App dargestellt sind und nicht als custom Device.
(...) `
Wie sieht den das Symbol für Lampe bzw. custom Device aus? :oops:
Bei mir ist es bei allen Geräten so ein Haus mit Funksymbol darin. Dieses stellt wohl eher nicht "Licht" dar!? :?
Muss ich, damit Alexa erkennt, dass es sich um Licht handelt, noch eine Angabe im Datenpunkt von ioBroker machen? Meine Datenpunkte sehen z.B. so aus:
{ "common": { "name": "Schlafzimmer Stehlampe", "desc": "Stehlampe im Schlafzimmer", "type": "number", "unit": "%", "def": 0, "min": 0, "max": 100, "role": "value", "smartName": { "de": "Stehlampe" } }, "native": {}, "type": "state", "_id": "javascript.0.alexa.schlafzimmer.stehlampe", "acl": { "object": 1638, "state": 1638 } }
Nochmals vielen Dank im Voraus!
-
Dann sind es Custom Devices. Lampen sind Lampen-Symbole z.B.
Da hilft nur Alle Geräte aus Alexa löschen und nochmal suchen lassen…
-
Dann sind es Custom Devices. Lampen sind Lampen-Symbole z.B.
Da hilft nur Alle Geräte aus Alexa löschen und nochmal suchen lassen… `
schon gemacht, bleiben aber Custom Devices… :shock:
Könnte ich mal bitte einen Datenpunkt von einer richtigen Lampe sehen? Der Fehler dürfte ja auf dem (mit dem Cloud-Adapter verknüpften) Datenpunkt bzw. dessen Angaben liegen, oder?
-
im Iobroker Cloud-Adapter unter Smart-Geräte kannst du doch bei "Typen" wählen ob es eine Lampe sein soll.
Wenn bei mir dort LIGHT gewählt ist, ist es bei Alexa eine Lampe.
-
im Iobroker Cloud-Adapter unter Smart-Geräte kannst du doch bei "Typen" wählen ob es eine Lampe sein soll.
Wenn bei mir dort LIGHT gewählt ist, ist es bei Alexa eine Lampe. `
Hat super geklappt, vielen Dank!Und bitte verzeih meine Unwissenheit. :oops:
-
Hallo ihr lieben ich stehe vor einem Problem unzwar bekomme ich im LOG Fehler.
Und somit kann ich es nicht nutzen das Problem hatte ich schonmal, da half dann einfach die Javainstanz neustarten, doch dass hilft nun nicht mehr.
Hier mal der Logfile
Caught 2018-04-14 17:58:52.715 error by controller[0]: at process._tickCallback (internal/process/next_tick.js:104:9) Caught 2018-04-14 17:58:52.715 error by controller[0]: at _combinedTickCallback (internal/process/next_tick.js:80:11) Caught 2018-04-14 17:58:52.714 error by controller[0]: at endReadableNT (_stream_readable.js:974:12) Caught 2018-04-14 17:58:52.714 error by controller[0]: at IncomingMessage.emit (events.js:185:7) Caught 2018-04-14 17:58:52.714 error by controller[0]: at emitNone (events.js:91:20) Caught 2018-04-14 17:58:52.714 error by controller[0]: at IncomingMessage. (script.js.Automation.Alexa-Control:1478:81) Caught 2018-04-14 17:58:52.714 error by controller[0]: at script.js.Automation.Alexa-Control:1011:38 Caught 2018-04-14 17:58:52.712 error by controller[0]: at Object.parse (native) Caught 2018-04-14 17:58:52.711 error by controller[0]: SyntaxError: Unexpected end of JSON input
Also schaute ich hier nochmal in das Forum und fand den Eintrag hier mit den Gruppen in Alexa.
Doch einfach ein Gruppe mit Raumnamen erstellen und dann die Lichter rein und fertig, klappt leider nicht.
Also das erstellen schon aber wenn ich dann in dem Raum sage "Licht An" sagt Alexa Licht reagiert nicht, wenn ich aber den Raumnamen sage geht das Licht an dass ist aber nicht im Sinne des ganzen.
Hoffe auf eure Hilfe.
MFG Maggi
-
Doch einfach ein Gruppe mit Raumnamen erstellen und dann die Lichter rein und fertig, klappt leider nicht.
Also das erstellen schon aber wenn ich dann in dem Raum sage "Licht An" sagt Alexa Licht reagiert nicht, wenn ich aber den Raumnamen sage geht das Licht an dass ist aber nicht im Sinne des ganzen. ` Wie die Gruppe in der Alexa App heißt ist zunächst einmal unwichtig … du könntest diese z.B. auch "Mettwurstbrot" nennen 8-)
Diese Gruppe dient einzig und allein dazu eine "Zusammengehörigkeit" von Smart-Geräten herzustellen.
Als erstes gehört in diese Gruppe das entsprechende Alexa Gerät .... also bspw. ein echo.DOT der im Wohnzimmer steht.
Danach packst Du in diese Gruppe alle die Lampen, die mit DIESEM echo.DOT beim Befehl "Alexa, Licht an" auch angeschaltet werden sollen.
Wichtig ist hierbei nur, dass diese Lampen (vor allem wenn diese aus dem cloud-Adapter kommen) auch von Typ "LIGHT" sind, damit sie als Lampe erkannt werden.
Das war es schon.
Wenn Du Deine Familie Terrorisieren willst, dann kannst Du z-B. auch einen Rolladen einklinken dem Du zuvor als "LIGHT" definiert hast, dann fahren die bei "Alexa, Licht an (aus)" schön hoch und runter
Prinzip verstanden??
-
@BBTown said in Script "LichtAn": Erkennt von welchem Echo-Gerät Befehl kommt:
pe erkannt werden.
Hi
ich weiß nicht mehr weiter, ich habe mir eine Gruppe erstellt in dieser habe ich einen Echo Dot und eine Lampe eingebunden.
Die Lampe über den Cloud Adapter, bei Typen auf Light gestellt.
Nun ist mir bei jemand anderes aufgefallen damit er seine Lampen mittels eines Button steuern kann, zu finden ist dieser in der Gruppe und rechts neben Lampen (an oder aus) und dadrunter wo seine Lampe angezeigt wird z.B. Wohnzimmerlampe rechts daneben ist auch ein Button mit an oder aus. Dieser Button fehlt mir leider und ich vermute, dass ich deshalb nicht die Funktion: "Alexa, schalte das Licht an" (wenn ich in diesen Raum bin) nutzen kann. Sie Antwortet mir zwar mit ok aber das Licht bleibt dennoch aus.
Ich habe bereits mehrfach die Lampe aus Alexa und dem Cloud Adapter gelöscht und neu eingebunden.
Hat jemand ein Lösungsansatz für mein Problem?
Ach so "Alexa, mach das Lich im xxx-zimmer aus" funktionert. -
@AresMars hab zwar hier nichts weiter verfolgt, aber vllt hilft dir sowas weiter
https://youtu.be/Mm_wotgylbI -
@AresMars zeige doch mal den RAW Bereich des Datenpunktes
-
@BBTown Ich bin mir nicht ganz sicher was du jetzt sehen möchtest.
-
@BBTown
https://www.directupload.net/file/d/5508/cjmx4zcf_jpg.htm
https://www.directupload.net/file/d/5508/5tglgy24_jpg.htm
https://www.directupload.net/file/d/5508/qp64z7rn_jpg.htm{ "from": "system.adapter.admin.0", "ts": 1555940444048, "user": "system.user.admin", "common": { "name": "Arbeitszimmerlicht_", "role": "", "type": "boolean", "desc": "Manuell erzeugt", "read": true, "write": true, "def": false, "smartName": { "de": "Arbeitszimmerlicht", "smartType": "LIGHT" } }, "native": {}, "acl": { "object": 1636, "owner": "system.user.admin", "ownerGroup": "system.group.administrator", "state": 1636 }, "_id": "Meine_Geärte.0.Arbeitszimmerlicht", "type": "state" }
sorry ich war schon ewig nicht mehr in ein Forum unterwegs und tue mich deshalb schwer ein Bild einzufügen.
-
@AresMars sagte in Script "LichtAn": Erkennt von welchem Echo-Gerät Befehl kommt:
tue mich deshalb schwer ein Bild einzufügen.
einfach per drag`n drop hier reinziehen.
Sofern der Name nicht bereits anders vergeben wurde, versuche es mal mit dem smartName "Arbeitszimmer" anstelle von "Arbeitszimmerlicht".
Dann lösche "Arbeitszimmerlicht" aus der Alexa APP und lasse die APP nach neuen Geräten suchen. Anschließend versuche mal das Licht per "Alexa, schalte das Licht im Arbeitszimmer ein" zu steuern.
Wenn das funktioniert kannst Du in der Alexa App eine Gruppe anlegen (z.B. "Arbeit") in der Du sowohl den Echo aus dem Arbeitszimmer als auch die Lampe "Arbeitszimmer" hinein tust.
Anschließend sollte sich das Licht im Arbeitszimmer auch per "Alexa, Licht an" oder "Alexa, schalte das Licht aus" steuern lassen.Wie die Gruppe genannt wird, ist hierbei völlig egal. Du kannst Du Gruppe auch "VanilleEis" oder "Pudelmütze" nennen - es geht nur darum, dass sowohl Echo als auch die zu schaltende Lampe sich in der gleichen Gruppe befinden, damit der Echo weiß wer mit "Lampe" gemeint ist