NEWS
Weiteres Vorgehen Alexa-Adapter
-
Ich habe sehr viele Alexa Routinen, die ich bisher in Blockly über den Datenpunkt summary abgefragt und verarbeitet habe. Das geht ja zur Zeit nicht mehr, da der Datenpunkt ja nicht mehr automatisch aktualisiert wird.
Meine Vorgehensweise für das summary Problem ist folgende:
Ich habe einen neuen Datenpunkt (Alexa FIX) angelegt.
Den node red Adapter installiert und einen kleinen Flow gemacht aber vorher habe ich dort unter Palette verwalten die beiden Paletten installiert.
Hier mein Flow mit den Einstellungen
Auf die Web Seite von Alexa gehen (https://alexa.amazon.de/spa/index.html#appliances) und dort nach neuen Geräten suchen lassen. Das virtuelle Gerät (Alexafix) sollte dann dort als AlexafixRoyal Philips Electronics intelligentes Gerät erkannt worden sein. Ob das auch in der Alexa App geht kann ich nicht sagen.
Dann noch ein kleines Blockly Script das meinen zuvor erstellten Datenpunkt Alexa FIX abfragt und den Alexa Datenpunkt History #trigger auslöst.
So wird nur einmal der Alexa Datenpunkt History #trigger beim Aufruf der Alexa Routine ausgelöst und der Alexa Datenpunkt summary gefüllt.
Richtig viel Arbeit war es, in jeder meiner Alexa Routine eine neue Aktion hinzuzufügen.
In jeder Routine einen neue Aktion hinzufügen, dann Smart Home auswählen, anschließend unter Lampen die Alexfix (Lampe, die habe ich ja so in meinem node red Flow benannt. Diese Alexafix Lampe ist praktisch nur ein Schalter der immer auf An steht und somit meinen Datenpunkt Alexa FIX auf true stellt) auf An gestellt.Es gibt bestimmt elegantere Lösungen für das summary Problem aber so wird der History #trigger nur dann ausgelöst, wenn er durch eine Routine ausgelöst wird.
Ich habe so gut wie keinen zeitlichen Unterschied zu vorher (als der summary Datenpunkt noch automatisch gefüllt wurde) feststellen können.
Für mich ist der minimale Zeitunterschied eher nebensächlich.
Wichtig ist mir, dass meine Alexa Routinen und die Blockly Scripts wieder funktionieren und das tun sie zum Glück wieder.
Gruß Stefan
P.S. Im 30. Post hier habe ich noch eine Lösung mit dem Wemo Emulatar beschieben.
-
@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