Mit Alexa Licht schalten, eine Alternative
Verfasst: Sa Jan 02, 2021 11:54 pm
Guten Abend zusammen,
hier hatte ich ja so ein bissel gefrustet berichtet Alexa via NodeRed an den KNX zu bringen.
KNX binde ich über den KNX-Ultimate Node an, der hat ja hier im Forum als auch im KNX-UF einen guten Support.
Den Hinweis von Robert schaue ich mir auch nochmal an.
Nach ein wenig suchen und probieren habe ich dann mal im NR Repository nach einem der aktuellsten (zuletzt aktualisierten Alexa-Nodes gesucht).
Bin dann auf den Node node-red-contrib-virtual-smart-home gestoßen.
der Ist ja wirklich sehr leicht bei Alexa als Skill zu registrieren. Und im NR ergibt das ein einfaches Node-Element.
Auch beim KNX-Ultimate node gibt es in den Anleitungen einen verweis auf einen Alexa node. Aber da scheitere ich dann bei der Aktivierung des Alexa Accounts in dem Node. Der Node den Robert gefunden hat scheint auch eine recht einfache Verbindung zu ermöglichen.
Der von mir verwende war aber wirklich in zwei Klicks und einer Code Eingabe aktiviert.
Das angenehme ist, wenn man ein neues Alexa Element in den Flow einhängt und in den Eigenschaften einen Namen gibt, meldet sich nach ein paar Sekunden nach dem deploy direkt der echo hier im Zimmer und berichtet das ein neues Gerät verfügbar ist.
Dann gab es zwar auch nen kleinen Frustmoment bei direkter Verbindung von dem Alexa Node mit dem KNX-Node. Die haben sich natürlich beim simplen Schalten nicht verstanden, weil der eine ein umfangreiches JSON Objekt sendet der andere da aber einfach true/false im payload erwartet.
Um das zu erkennen, habe ich da mal so einen debug-node aus der Standardpalette eingefügt.
Nach gut 2h googeln (wie man was in NR convertieren kann, Grundlagen der Javascript Syntax) habe ich mir dann noch einen Converter aus dem Standard-node "function" gebaut, der mir den JSON vom Alexa node auswertet und an zwei der KNX-nodes verteilt. Dabei wird in einem keinen Codeschnipsel dann auch passend konvertiert (true false bei eingehendem Schaltbefehl und dem Dimmwert bei absoluten Dimmbefehl).
Das schaut dann da gerade so aus.
Der ganze Flow für eine Lampe dimmbar ist dann sowas hier.
So für heute reicht mir das soweit.
PS:
Eine Frage an die Vielnutzer von NR unter euch.
Macht Ihr für jedes solches Element einen Flow (als Reiter in NR) oder zeichnet Ihr mehrere solcher Lampensteuerungen in einen "Flow"?
hier hatte ich ja so ein bissel gefrustet berichtet Alexa via NodeRed an den KNX zu bringen.
KNX binde ich über den KNX-Ultimate Node an, der hat ja hier im Forum als auch im KNX-UF einen guten Support.
Den Hinweis von Robert schaue ich mir auch nochmal an.
Nach ein wenig suchen und probieren habe ich dann mal im NR Repository nach einem der aktuellsten (zuletzt aktualisierten Alexa-Nodes gesucht).
Bin dann auf den Node node-red-contrib-virtual-smart-home gestoßen.
der Ist ja wirklich sehr leicht bei Alexa als Skill zu registrieren. Und im NR ergibt das ein einfaches Node-Element.
Auch beim KNX-Ultimate node gibt es in den Anleitungen einen verweis auf einen Alexa node. Aber da scheitere ich dann bei der Aktivierung des Alexa Accounts in dem Node. Der Node den Robert gefunden hat scheint auch eine recht einfache Verbindung zu ermöglichen.
Der von mir verwende war aber wirklich in zwei Klicks und einer Code Eingabe aktiviert.
Das angenehme ist, wenn man ein neues Alexa Element in den Flow einhängt und in den Eigenschaften einen Namen gibt, meldet sich nach ein paar Sekunden nach dem deploy direkt der echo hier im Zimmer und berichtet das ein neues Gerät verfügbar ist.
Off Topic
Das ist natürlich ultra bequem, möchte aber wahrscheinlich besser nicht wissen was da permanent für Daten ausgetauscht werden. Wer Idee wie man das ein wenig als Netzwerk unwissender bewerten kann?
Um das zu erkennen, habe ich da mal so einen debug-node aus der Standardpalette eingefügt.
Nach gut 2h googeln (wie man was in NR convertieren kann, Grundlagen der Javascript Syntax) habe ich mir dann noch einen Converter aus dem Standard-node "function" gebaut, der mir den JSON vom Alexa node auswertet und an zwei der KNX-nodes verteilt. Dabei wird in einem keinen Codeschnipsel dann auch passend konvertiert (true false bei eingehendem Schaltbefehl und dem Dimmwert bei absoluten Dimmbefehl).
Das schaut dann da gerade so aus.
Code: Alles auswählen
var dimmlevel = {payload: msg.payload.brightness}
if(msg.payload.directive === "TurnOn" && msg.payload.powerState === "ON")
{msg.payload = true; return [msg,null]}
else if(msg.payload.directive === "TurnOff" && msg.payload.powerState === "OFF")
{msg.payload = false; return [msg,null]}
else if(msg.payload.directive === "SetBrightness")
{return [null,dimmlevel]}
else
{return null,null}
So für heute reicht mir das soweit.
PS:
Eine Frage an die Vielnutzer von NR unter euch.
Macht Ihr für jedes solches Element einen Flow (als Reiter in NR) oder zeichnet Ihr mehrere solcher Lampensteuerungen in einen "Flow"?