NEWS
Alexa - NodeRed -> Python Script
-
Hallo zusammen.
Ich habe mir vor einiger Zeit ein eigenes Smart Home gebastelt. Mit Raspberry Pi und Arduino. Die eigentliche Anwendung ist in Python umgesetzt.
Nun habe ich mich endlich mal an Alexa rangetraut und bin ziemlich begeistert von der Technik. Der Hauptgrund war natürlich mit Alexa das Smart Home - per Sprache - zu steuern. Immer die Webapp aufzurufen ist zeitintensiv und natürlich nicht so cool
Die meisten Lösungen unterstützen nur An und Aus. Ich habe aber auch RGB Lichter (die auch Dimmbar sind) und ein paar andere Spielerein dabei. So bin ich dann jetzt bei ioBroker mit NodeRed und dem node-red-contrib-alexa-local Plugin gelandet. Das habe ich jetzt auch - mit einer ersten Lampe - zum laufen bekommen.
Dabei habe ich es sehr simpel gehalten. Ein 'Alexa Local' als Lampe deklariert und den Input möchte ich einfach an ein Python Skript übergeben (per Advanced -> exec). Das soll dann den Rest machen. An und Aus übergibt er auch brav. Nur wie zum Geier bekomme ich weitere Daten an das Python Skript geschickt? Wenn ich z.B. sage 'Alexa, dimme Licht am Bett auf 50%' bekomme ich trotzdem nur ein 'on' an mein Python Script übergeben.
Im NodeRed sehe ich unter dem 'Alexa local' einen kleinen Punkt mit 'bri: 50'. Also empfangen tut er es. Nur wo und was gebe ich im 'exec' ein, damit er es an Python weiter gibt?
Kann mir da jemand helfen?
-
Hallo HeAdLeSs,
der Alexa Local Node kann mehrere Payloads ausgeben. Du schaust dir in deinem Flow wahrscheinlich nur den msg.payload an. Der msg.payload ist bei bei einer Brightness höher 1 (bri: 1) bis 100 (bri: 100) immer "on".
Du musst dem Flow nun beibringen, dass er zunächst prüft ob "on/off" oder halt eine Brightness genannt wird. Das machst du mit einem Switch der wie folgt konfiguriert wird:
In meinem Flow geht es nun "oben" weiter, weil ein "on/off" genannt wurde. Wurde ein Brightness Befehl genannt, geht es "unten" weiter. Ich muss zusätzlich noch eine "dimm" Funktion einbinden, dass ist bei deinem Python Script wahrscheinlich nicht notwendig. Einfach mal testen.
Viel Spaß weiterhin.
Grüße
Übrigens:
-
Hallo Hc-Yami.
Danke für deine Hilfe. Hatte zwischenzeitlich auch schon gelesen das es mit NodeRed doch nicht soo einfach ist.
Variablen werden nicht einfach so durchgeschleift. Bei mir brauchte es allerdings wirklich nur ein function node um die Variable msg.bri weiterzugeben. Den Rest mache ich im Python Skript.