NEWS
Wie funktioniert der Input Kanal zu Alexa
-
Da dies mein erster Beitrag ist, möchte ich mich kurz vorstellen. Mein Smarthome läuft seid ca. 1 Jahr mit Blockly Scripte und einigen Adaptern. Ich bin von Iobroker begeistert und versuche nun auf meine Scripte auf Node Red umzustellen.
Ich versuche gerade in Node Red eine einfache Lampe mit Alexa und einen Button auf dem Dashboard zu steuern. Die Verbindung zu Alexa funktioniert. Ich kann sowohl mit Alexa als auch mit dem Button am Dashboard die Lampe steuern. Wenn ich mit Alexa die Lampe an oder aussschalte, bekomme ich den Zustand in der Alexa App angezeigt. Wenn ich dies aber mit dem Dashboard Button mache, bekomme ich nicht den richtigen Zustand in der Alexa App angezeigt.
Ich habe mich durch einige Internetseiten durchgekämpft, aber ich bekomme es nicht zusammen.
Ich benutze die Pallette node-red-contrib-amazon-echo. Ich habe zwei Debug eingefügt. der eine überprüft den Ausgang von der Alexa, der andere den Eingang. Ich glaube das ich hier das gleiche in die Alexa schicke, wie ich auch herausbekomme.
Vielleicht habe ich aber auch den Retourkanal nicht verstanden. Darum hoffe ich auf eure Erfahrung.Das wäre mein Flow.
-
@reini_t sagte in Wie funktioniert der Input Kanal zu Alexa:
Das wäre mein Flow.
bitte als Screenshot zeigen da man nicht unbedingt jeden Flow importieren mag
-
Ich hoffe das reicht so?
-
@reini_t
Meine Rückmeldungen an die App erledige ich per Function_Nodes:var nodeid = "6df04e96.e4c63"; var ison=false; if (msg.payload > 0){ ison=true; } var newMsg={ payload: '' } newMsg.payload= { nodeid: nodeid, on: ison, } node.status({text:"on: "+ison}); return newMsg;
-
@reini_t Nun dann hättest Du ja auch trotz Umstellung Deiner Logikmaschine auf NodeRed Deinen Adapter weiter behalten können.
Falls man wirklich die node.id der Amazon Node benötigt - dann erstellst einfach das Objekt- du kannst aber auch mal weglassen.
Wenn Du als ein aus true/false hast - kannst Du das direkt über eine Change Node machen, in dem Du das Objekt einfach so einstellst wie Du es brauchst.
Merke: NodeRed hat gerade seine Vorteile, in dem man keinen Javascript Code schreibt - das ist wirklich nur in einigen Ausnahmefällen (z. Bsp bei externen Bibliotheken oder wenn man eine Node braucht um was zu speichern und man das nicht im flow-Kontext machen will).
Du schreibst einfach in Deine Change Node - das Objekt was Du haben willst, in ein JSONATA Feld und gut ist.
{ "nodeid": "6df04e96.e4c63", "on": payload }
Diese ganze Codiererei ist einfach unnötig.
Falls Du als Input nicht true oder false, sonder ON/OFF oder 0/1 hast, dann kannst Du das in der Change node mit 2 zusätzlichen Regeln ändern oder einfach im JSONATA Objekt.
Hier mit zusätzlichen Regeln in der Change Node:
oder nur im Objekt:
Deinen Flow kann man nicht interpretieren, wenn Du den nicht in CodeTag setzt, da sonst der Browser hier Formatsteuerzeichen interpretiert. Also jeden Export bin in CodeTags (so wie im Blockly Export auch).
Du kannst ja mal versuchen Deinen Flow so wie er ist zu reimportieren - Du wirst scheitern.
Also nur in CodeTags - sonst macht das keinen Sinn.
Wenn da übrigens solche Objekte rauskommen ....
{ "nodeid": "6df04e96.e4c63", "on": true }
(Ich habe die Node selbst nicht, da keine Alexa).
... dann kannst Du das ganze vereinfachen - indem Du nur den Wert selektierst über den Pfad:
Das heißt Du kannst alles mit EINER Node umwandeln, um ein Attribut eines Objektes in einen Datenpunkt im iobroker zu schreiben.