NEWS
gelöst: Alexa via Node-Red
-
Ich wollte Alexa via Node-Red einbinden.
(Versionen: iob v5.3.8 / Alexa v3.11.2 / Node-Red v3.3.1)
Dazu habe ich die Palette "node-red-contrib-amazon-echo-oztourer" v0.1.12 installiert.Geräte rein. Die findet Alexa auch. Nach dem ersten schnellen Erfolg aber die Ernüchterung.
Offenbar mache ich aber noch etwas falsch, bei weiterreichen der Befehle. Es kommt nichts nach dem Gerät an.
Ich habe das nun reduziert bis zurück zum Gerät,Beispiel: Ich sage: "Alexa schalte Licht ein/aus".
Dann ist das für Alexa OK und ich erhalte direkt am HUB (Prüfung via Debug) entsprechend "ON" oder "OFF".
ABER am Ausgang des nächsten Schrittes (Node Licht) kommt gar nix an?Ich finde in der Beschreibung nichts, ob ich im Node des Gerätes noch irgendwie einstellen muss, dass er msg.payload durchreichen soll.
Hat jemand eine Idee was ich da übersehe?
-
Its your turn
-
@andreas-s Ich kenne mich mit NodeRed auch noch nicht wirklich aus, doch bei mir sieht das so aus:
Wird in einen Datenpunkt geschrieben und per Blockly-Skript weiterbearbeitet. -
@dr-bakterius
Vielen dank für die Anregung.Rein technisch ist das erstmal kein Problem. Wenn ich das mache, steht im Datenpunkt "on" bzw. "off".
Um das weiter mit einem Script verarbeiten zu können, hätte ich erwartet, dass weitere Informationen, wie zumindest das Gerät das angesteuert werden soll, mitkommen. Alleine mit "on" komme ich doch nicht sehr weit?Ich habe früher mal mit den Vorgänger dieses Adapters, der mittlerweile wohl nicht mehr geht, experimentiert. Da wurde das direkt in Node Red als Flow abgebildet, wie es auch auf der aktuellen Seite dargestellt ist.
https://flows.nodered.org/node/node-red-contrib-amazon-echo-oztourer
Viele Grüße
AS -
@andreas-s Hi, teste doch mal einen anderen Namen für das Gerät (falls nicht schon passiert), nur Licht als Name könnte zu allgemein sein, da will Alexa alle Geräte einschalten die als Lampe gelten.
Edit:
Und stell die Debug Node mal auf komplettes Nachrichten Objekt anzeigen um.Eventuell mal die Issues auf Github durchstöbern, ob du da dein Problem findest. Da gabs z.B. nen Post, das die Ausgabe nicht funktioniert, wenn man die Node in einem Subflow verwendet.
https://github.com/datech/node-red-contrib-amazon-echo/issues?q=is%3Aissue+is%3Aclosed -
@haselchen Ich hab ja keine Alexa.
Aber wenn ich eine hätte, würde ich ja ganz andere Nodes verwenden.
https://flows.nodered.org/node/node-red-contrib-virtual-smart-home
ansonsten bist Du bei NodeRed und Alexa bei @frankyboy73 in besten Händen.
-
@mickym Danke für das Lob, kenne mich zwar mit Node Red und auch mit Alexa aus, aber die Alexa Nodes verwende ich selber auch nicht. Ich hatte sie vor Jahren zwar mal, aber da sich die Ports mit Deconz überschnitten haben (Port 80), bin ich den einfachen Weg gegangen und nutze seit her den IOT Adapter für Alexa.
-
@andreas-s Also bei mir wird z.B. folgendes in den Datenpunkt geschrieben:
{"on":false,"bri":254,"percentage":100,"hue":0,"sat":254,"xy":[0.6484272236872118,0.33085610147277794],"ct":199,"rgb":[254,0,0],"colormode":"ct","meta":{"insert":{"by":"alexa","details":{"ip":"::ffff:192.168.3.153","date":"2022-07-16T13:09:59.365Z"}},"input":{"on":false},"changes":{}},"payload":"off","deviceid":"22719f2860eec3bf","topic":"Arbeitsplatte","_msgid":"4483d5214a4cc8af","_event":"node:bf197a19e5b8dc0d"}
Dabei steht in der Function:
const obj = msg; msg.payload = JSON.stringify(obj); return msg;
Und mein Blockly-Skript dazu sieht so aus:
-
@dr-bakterius
Hi,
vielen dank für deine Ausführung. Bei dir stehen aber auch alle relevanten Informationen im payload.
Ich hatte früher unter einen älteren Version auch mal eine Node-Red Integration.
Da kam bei mir im payload auch alles an wichtigen Informationen, wie bei dir zu sehen, mit. Aktuell steht bei mir leider NUR "on" oder "off" drin.@frankyboy73
Bei Gerät "Licht" habe ich auch schon andere Namen getestet. Nur "Licht" benenne ich das deshalb, weil ich mehrere Alexas habe. In einer älteren Version hatte ich das so gelöst, dass ich sage: Mach das Licht an und dann wurde via Skript herausgesucht von welchem Raum der Befehl kam.Aus irgend einem Grund steht jetzt aber nur "on" oder "off" drin. Keine deviceID oder irgend eine weitere Info.
-
@andreas-s Ok, wie gesagt ich verwende das seit ein paar Jahren nicht mehr. Hast du Node Red, nach dem hinzufügen der Node, eventuell mal neu gestartet, oder eventuell mal nen Full Deploy gemacht.
Hast du noch ne ähnliche Node installiert? Da gibts mehrere die sich ziemlich ähnlich sind, wenn man die gleichzeitig installiert hat, kann das zu Konflikten führen. -
@frankyboy73
Wo kann ich einstellen, dass ich das da komplette Nachrichten Objekt angezeigt bekommen?
Vermutlich liegt es daran, ich finde es aber leider nicht.Vielen Dank schon mal.
-
@frankyboy73
Ich habe das erst komplett neu aufgesetzt.
Node Red wird NUR für Alexa eingesetzt.
Es ist nur diese Palette zugefügt worden.
Full deploy mache ich bei jeder Änderung. Ist aktuell ja nur ein Gerät im Test -
@andreas-s sagte in Alexa via Node-Red:
Wo kann ich einstellen, dass ich das da komplette Nachrichten Objekt angezeigt bekommen?
Klicke auf msg, da hast du dann die Auswahl.
Eventuell noch mal die Geräte die du mit der Node gefunden hast in der Alexa App löschen und dann noch mal neu suchen. Auch mal über die Web App schauen ob da noch Geräte vorhanden sind. Unter dem Punkt Smart Home / Geräte
https://alexa.amazon.de -
@andreas-s sagte in Alexa via Node-Red:
Aktuell steht bei mir leider NUR "on" oder "off" drin.
Hast du auch die Function angepasst (wie oben gezeigt) damit ein JSON übergeben wird?
-
@frankyboy73
Ja die Geräte waren in der APP auch vorhanden. Ich habe die nochmal raus geschmissen und neu suchen lassen. Tatsächlich kommt nun "on" und "off" auch nach dem Device-Node an. Damit kann ich schon was anfangen.@Dr-Bakterius
Leider habe ich nicht gerafft, wo diese Function stehen muss. Am Übergabeobjekt in Node-Red oder im Skript. Sorryconst obj = msg; msg.payload = JSON.stringify(obj); return msg;
Auch der Tipp von @frankyboy73 das Debug Node auf komplettes Nachrichten Objekt anzeigen scheitert an meiner Kenntnis wo ich das tun kann.
-
@andreas-s Hi, in der Debug Node steht doch msg payload, wenn du da auf das msg klickst, geht ne Auswahl auf.
-
@andreas-s Ich kann Dir zwar nicht mit Alexa helfen, aber Du brauchst definitiv ein Javascript Objekt nicht zum JSON String machen, wenn Du das innerhalb eines Flows weitergeben willst.
Das gesamt Message Objekt in einer Debug Node ist die mittlere Option.
-
@andreas-s Wie gesagt ich will mir die Node nicht installieren und aus der Beschreibung kann ich auch nichts entdecken. Wie gesagt ich würde halt ganz andere Nodes nutzen, auch wenn man sich registrieren muss.
Irgendwo lass ich was von einem Objekt in der payload und zum Beispiel on: true oder false. Du musst halt schauen. Dimmen geht glaub mit msg.bri oder msg.percent - keine Ahnung. Entweder steht was in der Hilfe oder halt eine Doku. Wie gesagt ich würde halt eine andere Node nutzen.
Ich schau mal, ob ich noch was finde.
Du kannst ja mal versuchen, ob Du mit einer Change Node dazwischen so ein und ausschalten kannst:
-
@mickym Er bekommt ja jetzt schon mal die msg.payload ( on/off) aus der Node raus, in der Debug Node angezeigt. Wenn auf komplettes Nachrichten Objekt gestellt wurde, sollte auch der Rest angezeigt werden.
@Dr-Bakterius hat ein paar Post weiter oben ja schon geschrieben was da rauskommen sollte. -
@frankyboy73 Ja das habe ich schon verstanden - aber die Device Node - verlangt Objekt in der payload, also wird das nichts helfen.
Ich habe die Node nun doch mal schnell auf einem Testsystem installiert und da ist eigentlich alles beschrieben;
Das heisst wenn on oder off rauskommt, muss er ein Objekt erstellen mit on als Eigenschaft und einem Boolean true oder false, so wie ich das in der Change noc gezeigt habe. Eventuell hast aber Du recht, dass es msg.on = true oder false ist.
Dann muss er halt die Change Node wie folgt abändern:
Das Dimmen geht wahrscheinlich nach der Beschreibung mit Percentage.
percentagenumber
The brightness % level (min 1, max 100)Also msg.percentage = 50
Man muss halt vielleicht bissi rumprobieren - scheint aber nach der Beschreibung nicht soviele Möglichkeiten zu geben.
Ich finde halt die virtual smart home - auch wenn man da Verbindung wohl zum Amazon haben muss, viel intuitiver und vielseitiger.
So weit ich das mit diesen Device Nodes verstanden habe, simulieren die alle irgendwie Lampen.Hier in dieser Beschreibung
https://github.com/datech/node-red-contrib-amazon-echo/wiki/Integration-with-Sonoff-Tasmotaist dieses ON/OFF jedenfalls in ein Objekt der payload übersetzt worden - deswegen bin ich halt drauf gekommen:
Natürlich machen wir so was eben mit einer Change Node und Codieren nicht.