NEWS
Weiteres Vorgehen Alexa-Adapter
-
@stefan-wilke
Das funktioniert auch bei mir noch super. DANKE für den Tipp. -
Mit Node-Red kenne ich mich nicht aus.
Meine Lösung war folgende:
1.) Datenpunkt erzeugen
var alexaIobrokerUpdate = "0_userdata.0.alexaIobrokerUpdate"; createState(alexaIobrokerUpdate, false, { name: alexaIobrokerUpdate, desc: alexaIobrokerUpdate, type: 'boolean', read: true, write: true });
2.) Diesen Datenpunkt (virtuelles Device) im iot-Adapter hinzufügen:
3.) In der Alexa App neues Gerät hinzufügen bzw. darauf achten, dass es vorhanden ist:
4.) In der jeweiligen Alexa-Leerroutine (eine pro Raum/Device existierte eh schon) dieses virtuelle Device mit aufnehmen:
5.) Auf Änderungen reagieren und die Alexa Summary aktualisieren (per Pull abholen)
on({id: [].concat(['iot.0.smart.lastObjectID']), change: "any"}, async function (obj) { let value = obj.state.val; let oldValue = obj.oldState.val; getState("alexa2.0.History.#trigger", function (err, state) { setState("alexa2.0.History.#trigger"/*Trigger/Rescan*/, state ? !state.val : true); }); });
Das war es schon. Aufwand hält sich in Grenzen.
-
Was du mit dem iot Adapter machst ist ja vom Prinzip her das Gleiche was ich mit dem Node-Red Flow mache.
In den Alexa Routinen wird ein virtuelles Gerät angelegt was auf An steht.
Wird die Routine über Alexa aufgerufen setzt sie den Userdata Datenpunkt auf true. Dieser Userdata Datenpunkt triggert letztendlich den Datenpunkt History #trigger.
In meinen Blockly Script wird der Userdata Datenpunkt auf true abgefragt und wenn der true ist, dann wird der Datenpunkt History #trigger auf true gesetzt.
Anschließend noch den selbst erstellten Datenpunkt wieder auf false setzten damit es nicht zu Phantomauslösungen kommt.Die meiste Zeit geht drauf, in allen Alexa Routinen ein neues Gerät so wie du es auch beschrieben hast anzulegen.
Den Datenpunkt, den Node Red Flow und das Blockly Script zu erstellen dauert keine 10 Minuten. Meine gut 80 Routinen zu ändern und das neue Gerät einzufügen hat deutlich länger gedauert.
Ich habe selber keine Ahnung von Node-Red aber das war ganz schnell zusammengeklickt. Auf Wunsch kann ich gerne den Flow und das Blockly Script hier als Export zur Verfügung stellen.
Gruß Stefan
-
Hi, @stefan-wilke,
erst mal danke für deinen Lösungsvorschlag.
Leider klappt das bei mir nicht.
Bei mir sieht node-red so aus:
Ich sehe den Zustand von "Alexa FIX" nicht. Bei mir steht nur connected.
Auch sehe ich im ioBroker keine Änderung beim Objekt "Alexa FIX"
Hast du eine Idee, wo ich suchen soll?Gruß
Dirk
-
@dirkm
Gib mir bitte eine Stunde, es ist gerade Formel1 drin. -
@dirkm
Bin leider auch nicht der Node Red Freak aber ich könnte mir vorstellen, dass das virtuelle Gerät (Alexafix) noch nicht in deinen Alexa Geräten erkannt worden ist.Ich bin auf die Web Seite von Alexa gegangen (https://alexa.amazon.de/spa/index.html#appliances) und habe dort nach neuen Geräten suchen lassen und das virtuelle Gerät (Alexafix) ist dann dort als AlexafixRoyal Philips Electronics intelligentes Gerät erkannt worden. Ob das auch in der Alexa App geht kann ich nicht sagen.
Wenn das Gerät Alexafix erkannt worden ist musst du natürlich auch in deinen Routinen das neue Gerät hinzufügen.
Kleiner Nachtrag, bei mir sieht das genau wie auf deinem Screenshot wenn ich den Flow ändere und dann oben auf Übernahme gehe.
Erst wenn ich einen Alexa Sprachbefehl gebe der die Routine mit dem neuen virtuellen Gerät Alexafix aufruft ändert sich auch der Flow von connected zu 0.userdata.........In meinem Flow ein Debug eingebaut und es sieht so aus wie bei dir
Jetzt das virtuelle Gerät (alexafix) eingeschaltet bzw. die Routine per Sprache ausgelöst.
Und nun einmal das virtuelle Gerät (alexafix) ausgeschaltet.
-
Hi @stefan-wilke,
erst einmal danke (-:
Ich werde mich die Tage weiter damit beschäftigen. Dein Ansatz wird mir bestimmt weiterhelfen.Ich melde mich wieder.
Gruß
Dirk
-
@stefan-wilke Grundsatzfrage: Warum überhaupt "Node Red"? Weil es kostenlos ist? Mich würde es nur interessieren. Über den iot-Adapter ist es ja wirklich ein Thema von einer Minute, siehe oben.
-
@uwe72
Ich habe mich mit dem iot-Adapter noch nicht beschäftigt und kann dazu nichts sagen.Als das Problem mit dem History #trigger vor ein paar Wochen zum ersten Mal aufkam habe ich mir Gedanken dazu gemacht. Das Erste was mir in den Sinn kam war, in Alexa ein Gerät anzulegen was als Trigger für einen Datenpunkt herhalten kann.
Ich wollte schon eine meiner Steckdosen dafür nehmen und dann bin ich beim lesen des lange Github Thread über das History #trigger Problem auf den Beitrag von rsl99de gestoßen (Das ganze geht auch ohne den Iot-Adapter, wenn man per Node-Red ein gerät erzeugt, welches Alexa dann erkennt. Über dieser "virtuelle" Gerät kann man dann triggern).
Das habe ich dann ausprobiert und keine 10 Minuten später hatte ich dann mein virtuelles Gerät.
Wenn ich das mit dem iot Adapter richtig verstehe, wird doch auch dort ein virtuelles Gerät angelegt und in jeder Alexa Routine muss dann dieses Gerät wie auch bei meiner Node Red Lösung hinzugefügt werden was ja die meiste Arbeit ist.
Gruß Stefan
-
Hi, @uwe72,
richtig, weil es mit node-red kostenlos ist.
Es scheint ja auch mit node-red zu funktionieren.Gruß
Dirk
-
Hi @stefan-wilke,
bei mir wird leider nichts bei der Gerätesuche gefunden. Weder unter deinem Link noch in der App. Hast du evtl. noch einen besonderen Skill installiert?
Gruß
Dirk
-
@dirkm ich hatte schon mal den fall, dass ich ein älteres gerät ansprechen mußte, um die geräte suche zu aktivieren - erst dann kam das gerät - echo show 15 fand das gerät nicht - aber ein echo 3 schon - warum das so war - keine ahnung - probiere es mal
-
Hi @liv-in-sky,
danke für den Hinweis. Die Gerätesuche ist ja nicht Echo abhängig, deshalb weiß ich nicht so genau was du meinst.
Ich habe mal alte Geräte ein/aus geschaltet. Es wird weiterhin nichts neues Gefunden. Lösche ich ein vorhandenes Gerät, wird dieses bei einer neuen Suche wieder gefunden.Gruß
Dirk
-
@dirkm sagte in Weiteres Vorgehen Alexa-Adapter:
Die Gerätesuche ist ja nicht Echo abhängig, deshalb weiß ich nicht so genau was du meinst.
genau das dachte ich auch - war aber bei einem gerät, welches über tasmota software integriert worden ist, anders ! das hat nur ein alter echo gefunden. in tasmota wird auch ein hue philps hue gerät simuliert
-
Hi,
als das History Problem vor ein paar wochen aufkam, gab es den workaround auf das "..Player.volume" zu reagieren und darüber festzustellen mit welcher Alexa gesprochen wurde. Das fand ich super weil man nicht auf die Kommunikation von Alexa warten musste (um die History zu aktualisieren) sondern die Trigger-Alexa sofort ermittelt werden konnte. Das lief ausgesprochen zuverlässig und schnell.
Nach dem Fix wurde der Volume-State aber nicht mehr geändert und dieser Weg funktionierte nicht mehr.
Ich würde es sehr gut finden wenn soetwas wieder zur Verfügung stehen würde. Ich denke dem Großteil der Leute mit dem History-Problem würde das helfen.
Gruß,
Bob -
Trigger Punkte Reihenfolge:
Vorhandene iot Geräte:
iot.0.smart.lastObjectID = Das letzte Gerät was geschaltet wurde, was in der iot existiert. Bei Aktualisierung alexa2.0.History.#trigger antriggernWecker:
Alexa2 Handyapp - Geräte - Echo und Alexa - Wecker und Timer - Unten Einstellung - xxGerät Wecklicht -> Trigger Datenpunkt auswählen zum TriggernRest:
Trigger Datenpunkt erstellen für Routinen in der alexa Handyapp -
@onkel-bob sagte in Weiteres Vorgehen Alexa-Adapter:
Nach dem Fix wurde der Volume-State aber nicht mehr geändert und dieser Weg funktionierte nicht mehr.
Das hat aber doch nix mit dem Fix zu tun.
Das liegt an Amazons weiteren Änderungen... -
on({id: [].concat(['iot.0.smart.lastObjectID']), change: "any"}, async function (obj) { let value = obj.state.val; let oldValue = obj.oldState.val; getState("alexa2.0.History.#trigger", function (err, state) { setState("alexa2.0.History.#trigger"/*Trigger/Rescan*/, state ? !state.val : true); }); });
Hi! Du holst da ja "nur" das "summary" ab, könnte man da auch "name" aktualisieren?
EDIT: Hat sich erledigt.... der NAME wird auch perfekt getriggert also alles OK!
-
Hi @dirkm
als den Beitrag von @liv-in-sky gelesen habe der zwei verschiedene Echo Geräte hat und auch ich habe zwei verschiedene Echos (einen Echo Dot 3. Generation und einen Echo, die große Kugel) st mir die Idee gekommen, das es etwas mit den Echo Geräten zu tun haben könnte.
Mein virtuelles Gerät Alexafix ist mit meinem Echo Dot verbunden.
Dann habe ich gegoogelt und die Node Red Palette (node-red-contrib-amazon-echo) unterstützt nur diese Geräte:
Amazon Echo 2nd generation
Amazon Echo Plus 2nd generation
Amazon Echo Dot 1st, 2nd and 3rd generationsDas könnte die Lösung sein warum der Flow bei dir nicht geht.
Gruß Stefan
-
@stefan-wilke sagte in Weiteres Vorgehen Alexa-Adapter:
Dann habe ich gegoogelt und die Node Red Palette (node-red-contrib-amazon-echo) unterstützt nur diese Geräte
Na ist ja auch nicht verwunderlich - siehe wann die Nodes zuletzt bearbeitet wurden
node-red-contrib-alexa-local No extra Alexa Skills required. Works directly with Alexa in local network. 0.3.24 vor 5 Jahr(en), 5 Monat(en)
&
node-red-contrib-amazon-echo Alexa controlled Node-Red nodes supporting latest Amazon Echo devices 0.1.10 vor 3 Jahr(en), 9 Monat(en)
Deine Lösung ist gut aber dann doch eher suboptimal wenn man Devices > 3 besitzt
Man (also nicht ich) könnte es mal mit folgender Node probieren:
https://flows.nodered.org/node/node-red-contrib-amazon-echo-oztourer
Zwar steht in der Doku auch nur:
Supported devices Amazon Echo 2nd generation Amazon Echo Plus 2nd generation Amazon Echo Dot 1st, 2nd and 3rd generations
allerdings ist das mit Dokus ja so ne Sache