NEWS
Temperaturen über Node RED und Alexa abfragen!
-
@frankyboy73 Dankeschön
Und zwar wenn ich in der Alexa App den "Schalter einschalte dann bekomme ich etwas zurück" Wenn ich es aber sage sagt sie zurück "da bin ich mir leider nicht sicher". Und der Datenpunkt wird nicht ausgelöst. -
@mickym Die Idee ist das gesagte als true in einem Datenpunkt zu schreiben. Das funktioniert aber nicht bzw Alexa will das nicht verstehen.
-
@basti97 Trotzdem - Dich interessiert nicht, was rauskommt aus der Alexa Node sondern nur, dass etwas rauskommt.
Deswegen kannst Du Dir die switch Node komplett sparen und auch die function Node.Du hängst einfach eine Change Node zwischen die Alexa Node und die iobroker out NOde und setzt die payload auf true.
Dann wird der Datenpunkt auf true gesetzt sobald etwas aus der Alexa Node rauskommt.
Hat zwar mit Deinem Alexa Problem nichts zu tun - aber schalte in der Adapter Konfig zum NodeRed Adapter die Umwandlung in Strings aus. Je früher Du das machst, desto weniger Umstellungsaufwand hast Du später.
Bei Alexa ist @frankyboy73 sicher der bessere Ansprechpartner - da ich keine Alexa habe.
Weiß also nichts von Regeln etc.Nun solltest Du aber zumindest mit der Alexa App und der Change Node - Deinen Datenpunkt auf true stellen können.
Bei der Beschreibung zu den Alex Nodes kann ichhalt nur erkennen, dass die folgende Befehle kennt.
https://flows.nodered.org/node/node-red-contrib-amazon-echo
Example Alexa commands
Alexa, turn on/off {device}
Alexa, switch on/off {device}
Alexa, set {device} to 50%
Alexa, turn my {device} light green
Alexa, set the {device} light to orange
Alexa, make the {device} warmer
Alexa, brighten {device} to 60 percent
Alexa, dim the {device} lightsAber wie gesagt @frankyboy73 kann Dir zu der Alexa-Nodes sicher mehr sagen als ich.
-
@basti97 sagte in Temperaturen über Node RED und Alexa abfragen!:
@mickym Die Idee ist das gesagte als true in einem Datenpunkt zu schreiben. Das funktioniert aber nicht bzw Alexa will das nicht verstehen.
Hi, wenn du das was du sagen willst in der Alexa App in einer Routine benutzt sollte sie eigentlich nicht meckern.
Du gehst in der Alexa App auf Routinen, dann oben rechts auf +. Dann auf wenn folgendes passiert, dann auf Stimme. Da gibst du ein "Temperatur Aquarium" auf Weiter klicken, dann auf Aktion hinzufügen. Dann Smart Home auswählen, dann alle Geräte, dann das Gerät, sollte ja bei dir "Temperatur Aquarium" heißen, auswählen. An/Aus auswählen und An auswählen. Weiter, dann speichern.
Dann sollte beim nächsten mal wenn du sagst "Alexa, Tempertur Aqurium" sie nicht mehr meckern und du solltest ein true aus der Alexa Node in Node Red rausbekommen.
Edit: Du kannst auch "wie ist die Temperatur im Aqurium" oder alles mögliche eingeben, es muss aber genau der Text sein den du sagst. -
@basti97 Im Prinzip könntest du dir das hier direkt hinter deine Alexa Node (Temperatur Aqurium) hängen. Wie @mickym schrieb wird dann sobald was aus der Node kommt der Text mit der Temperatur ausgegeben. Du musst nur in der Get Node deinen Temperaturwert vom Aquarium auswählen und in der Output Node den Speak Datenpunkt deines Echos.
Ich habe das mit ner Funktion Node gelöst, mickym kann dir aber auch zeigen wie das ohne geht.
[ { "id": "fdfe16b2.b1b668", "type": "ioBroker get", "z": "9e1c0edb.e6d2d", "name": "TemperaturAquarium", "topic": "", "attrname": "payload", "payloadType": "value", "x": 310, "y": 2200, "wires": [ [ "730ebb37.76f514" ] ] }, { "id": "730ebb37.76f514", "type": "function", "z": "9e1c0edb.e6d2d", "name": "speak", "func": "msg.payload = Math.round(msg.payload * 10) / 10;\nmsg.payload = ' die Temperatur im Aquarium beträgt ' + msg.payload + ' Grad';\nreturn msg;", "outputs": 1, "noerr": 0, "initialize": "", "finalize": "", "x": 530, "y": 2200, "wires": [ [ "b245d505.7ee648" ] ] }, { "id": "b245d505.7ee648", "type": "ioBroker out", "z": "9e1c0edb.e6d2d", "name": "speak", "topic": "alexa2.0.Echo-Devices.G2A0U204933506NS.Commands.speak", "ack": "false", "autoCreate": "false", "stateName": "", "role": "", "payloadType": "", "readonly": "", "stateUnit": "", "stateMin": "", "stateMax": "", "x": 720, "y": 2200, "wires": [] } ]
Wenn du allerdings nur auf das true der Alexa Node reagieren willst, müsstest du noch einen switch davor hängen wo du das msg.on auf true abfragst.
Edit:
Erklärung: Kommt aus der Alexa Node eine Message (msg) raus, durchläuft die die Get Node, hier liest du deine Temperatur aus, in der Funktion Node wird der Text erstellt und die Temperatur (msg.payload) eingefügt (ich runde hier auf eine Kommastelle) und das ganze wird dann in die Output Node geschrieben ( command.speak)
Edit2: Sorry der Code war falsch kopiert, jetzt sollte es passen. -
@mickym Vielen Dank ich habe es den change eingebaut und das andere gelöscht. Und auch eine Alexa routine eingefügt. Wie es aussieht wird nun der Datenpunkt geschaltet. Nun muss ich nur noch eine Zeitverzögerung einfügen. Das der Datenpunkt wieder auf false zurück geht.
Wenn dann das funktoniert werde ich das Thema Dimmen mal in Angriff nehmen.
-
@basti97 Wieso willst du den Datenpunkt auf false zurücksetzen? Ist doch nicht nötig, denke ich. Wie verarbeitest du den weiter?
-
@basti97 Dann nimmst Du statt dem Change Node eine trigger Node. Die macht das alles in einem Die Zeitspanne kannst Du natürlich setzen wie Du willst.
Ausser @frankyboy73 hat eine andere Idee. Versuche gerade die Function Node - ohne zu function node zu zeigen.
-
@frankyboy73 Hey super für deine Idee das Probiere ich morgen mal aus. Jetzt heißt es TV gucken
Die Alexa Routinen habe ich gefunden und auch ausprobiert das funktioniert schon sehr gut. Das habe ich bis jetzt noch gar nicht gekannt da ich eigentlich alles im iob machen wollte. Ich werde in anderen Bereichen nun auch mal mit den Routinen experimentieren z.b wenn man ins Bett geht usw.Mit den Baustein von @mickym hat sich der Datenpunkt geändert. Nun muss ich nur noch ein false wieder hinbekommen. Und dein Text morgen mit einfügen. Dann sollte es klappen.
Denke ich -
@mickym Wow danke Nodered ist ja relativ einfach wenn man sich erst eiingearbeitet hat . Da gibt es ja für fasst alles ein Baustein wie bei Blockly. )
Dir noch einen schön Abend. Bis später
-
@mickym Ich meinte nur man braucht ja eigentlich gar nich auf false zurücksetzen, wenn man das als trigger nutzen will, wovon ich hier ausgehe, kann man ja in Node Red auf "send all events" stellen oder wenn das mit Blockly weiterverarbeitet wird, dort auf "wurde aktualisiert", daher meine Frage wie der Datenpunkt weiter verarbeitet wird.
-
@basti97 sagte in Temperaturen über Node RED und Alexa abfragen!:
@mickym Wow danke Nodered ist ja relativ einfach wenn man sich erst eiingearbeitet hat . Da gibt es ja für fasst alles ein Baustein wie bei Blockly. )
Dir noch einen schön Abend. Bis später
in Node Red gibt es nicht nur für fast alles einen Baustein, sondern für alles
Schönen Abend noch -
@frankyboy73 Ja da hast Du mehr Erfahrung. Klar wenn die Alexa Node automatisch falsch setzt, dann braucht man das natürlich nicht. Aber da bist Du halt der Fachmann.
Im Prinzip braucht er dann ja wenn die Alexa Node true und false direkt ausgibt, gar keine Node dazwischenschalten.So wie ich @Basti97 verstanden habe, ist er ja mit Node Red noch nicht so vertraut, vielleicht will er deshalb erst mal Datenpunkte schalten und dann mit Blockly weiterverarbeiten bevor er sich mit Node Red beschäftigt.
Hier noch die beiden Nodes, die Deine function Node ersetzen könnte.
[ { "id": "3b56537b.010d7c", "type": "change", "z": "6e170384.60c96c", "name": "", "rules": [ { "t": "set", "p": "payload", "pt": "msg", "to": "$round(payload, 1)\t", "tot": "jsonata" } ], "action": "", "property": "", "from": "", "to": "", "reg": false, "x": 2730, "y": 4420, "wires": [ [ "18872696.11d2c9" ] ] }, { "id": "18872696.11d2c9", "type": "template", "z": "6e170384.60c96c", "name": "", "field": "payload", "fieldType": "msg", "format": "handlebars", "syntax": "mustache", "template": "Die Temperatur im Aquarium beträgt {{payload}} Grad", "output": "str", "x": 2920, "y": 4420, "wires": [ [ "2c44d313.889e6c" ] ] } ]
-
@mickym Ne, da habe ich mich wohl falsch ausgedrück, die Alexa Node gibt nicht automatisch false raus, nur wenn man Alexa das sagt oder über die App ausschaltet oder das mit Routinen macht. Ich meine das man als Trigger ja keine Änderung nutzen muss sondern auch mit Aktualisierungen arbeiten kann, also wenn wieder ein true bzw. ne msg mit dem gleichen Inhalt kommt.
-
@frankyboy73 Achso klar - aber das ist ja das was ich gesagt habe. Im Prinzip ist es doch egal was aus der Alexa Node rauskommt - ob true/false on/off hallo oder sonst was. Es geht ja nur darum, DASS was rauskommt um den Flow zu triggern, der dann die Temperatur ausliest und den Text in so eine Speach-Node schickt.
In einem Parallelflow - wurde halt zur Sicherheit 1 Minute geschaltet, dass habe ich auch mit einer Trigger Node gemacht, damit der Text zu Ende gesagt wird und nicht gleich eine neue Nachricht rauskommt.
So einen Flow mit Sprachausgabe habe ich ja hier schon mal für jemand gemacht. Da habe ich ja ein ganzes Blockly in einen Flow umgesetzt
EDIT: Da ging es ja auch um ein Aquarium. Irgendwie scheinen Aquariumliebhaber auch der Alexa sehr zugeneigt zu sein.
-
@mickym Ja, richtig, hast du gesagt und so kann / sollte man das auch in diesem Fall verarbeiten.
Nur wenn ich das richtig verstanden habe setzt er ja dadurch über die Output Node nen selbst erstellten Datenpunkt auf true, wofür er den auch immer nutzt. Den will er nach ner Zeit wieder auf false setzen, aber warum sollte man den auf false setzen? Bei dem Datenpunkt kann man ja auch mit Aktualisierung arbeiten oder Ihn ganz weglassen und den Text direkt in den Alexa2 Adapter Datenpunkt command.speak schreiben.Ich habe kein Aquarium.
-
-
@frankyboy73 sagte in Temperaturen über Node RED und Alexa abfragen!:
und den Text direkt in den Alexa2 Adapter Datenpunkt command.speak schreiben.
vielleicht will er das ja noch nicht, sondern liest die Temperatur über ein Blockly aus und gibt den Text dann selbst aus.
... -
@mickym Das ist auch meine Befürchtung, deshalb mein kurzer Flow mit 3 Nodes (ok, mit Hub und Alexa Node sind es 5) oder deine Lösung ohne Funktion Node, damit er sieht das man sich das Blockly sehr einfach sparen kann und es durch die Nutzung von nur einem System für diese Aufgabe sehr viel übersichtlicher wird.
-
@frankyboy73 sagte in Temperaturen über Node RED und Alexa abfragen!:
@mickym Das ist auch meine Befürchtung, deshalb mein kurzer Flow mit 3 Nodes (ok, mit Hub und Alexa Node sind es 5) oder deine Lösung ohne Funktion Node, damit er sieht das man sich das Blockly sehr einfach sparen kann und es durch die Nutzung von nur einem System für diese Aufgabe sehr viel übersichtlicher wird.
Da gebe ich Dir zu 100% Recht. Aber wenn Du Dir dieses Posting anschaust, dann will ggf. @Basti97 NodeRed nur als Notlösung gewählt, weil er das ursprünglich auch über Blockly machen wollte. Sowie ich das nun sehe, wäre es vielleicht auch eine Lösung, diese Regeln oder was auch immer Du ihm erklärt hast, was er in der Alexa App machen muss.
Die Fehlermeldung dass Alexa sagt das weiß ich leider nicht". - schaut ja ziemlich ähnlich aus.
Und auch wenn ich Dir zu 100% Recht gebe, alles mit NodeRed zu machen, so wollen wir ja niemand dazu zwingen. Im Gegenteil ich sage immer, dass es einer der Riesenvorteile vom iobroker ist, dass er verschiedene Systeme, Logikmaschinen miteinander verbinden kann. Deswegen habe ich ja auch vorgeschlagen, dass er den Output der Alexa Node 1:1 in einen Datenpunkt schreiben kann und mit Blockly weiterverarbeiten kann.
Es gibt einige Nodes in Node-Red, die man nutzen kann, wofür es kein Adapter im iobroker gibt. Diese kann man dann verwenden. muss sich aber nicht tiefer mit Node Red beschäftigen. Genau dies habe ich @Basti97 ja auch hier vorgeschlagen.
Deswegen find ich es durchaus OK - jedem nur soviel NodeRed zuzumuten, wie er/sie verträgt.
Sind ja auch nicht alle so wie Du, die von blockly nun auf NodeRed umgestiegen sind, sondern sie wollen bei dem bleiben, was man kennt. Ehrlich gesagt, habe ich dafür vollstes Verständnis, da ich merke, dass mir umgekehrt der Einstieg in Blockly auch eher schwer fällt und ich eigentlich mehr Nachteile, als Vorteile sehe, wenn ich umsteigen würde. Ich habe ja schon manchmal auf die Vorteile - gerade der leichteren Fehlersuche bei komplexen Flows - bei Node Red hingewiesen habe, aber ich habe das Gefühl, dass diese Art der Argumentation dann doch von vielen als subjektiv wahrgenommen wird.
Wenn ich mich aber im Blockly gut auskenne, dem geht es dann mit Node Red wahrscheinlich ähnlich und bin deshalb nicht bereit das System zu wechseln.
Ich hatteja diesem Thread Unterschied zwischen NodeRed und Blockly? mal den Vorschlag gemacht - die gleiche Aufgabenstellung in beiden System umzusetzen, um zu sehen, wo die Vor- und Nachteile sind. Aber das ist dann schnell in der Versenkung verschwunden, da man sich dann doch nicht die Mühe macht.