NEWS
Alexa Temperaturabfrage mit Node Red
-
Hallo,
ich möchte gerne die Temperatur eines Homematic IP Temperatursensors mit Alexa abfragen.
Dazu habe ich in Node Red den Alexa Home Skill Bridge installiert. Das Gerät sieht so aus:
Dann habe ich in Node Red einen Flow angelegt der momentan so aussieht:
Das Gerät wird von Alexa gefunden und im ioBroker folgende Datenpunkte erzeugt:
Leider bleibt der Datenpunkt leer bzw. beträgt (null)
Kann mir da jemand auf die Sprünge helfen? Ich beschäftige mich erst seit gestern mit Node Red, habe auch schon viel gesucht aber komme in diesem Fall momentan nicht weiter.Viele Grüße
Kimchi -
@kymchy Hi, so wie du das aufgebaut hast. Gibst du mit der Alexa Node einen Befehl raus, liest danach mit der Iobroker get Node den Außenfühler Datenpunkt aus und schreibst das dann wieder mit der Iobroker Out Node in den gleichen Außenfühler Datenpunkt. Du solltest eigentlich nicht in den Außenfühler Datenpunkt schreiben, das macht Homematic IP, du kannst ja nicht selber die AUßentemperatur bestimmen, sondern nur auslesen.
Du müsstest über die Get Node den Datenpunkt auslesen und das dann eigentlich auf die Alexa Resp Node schicken damit Alexa das ausgeben kann. Aber so wie ich das in der Doko gelesen habe, ist das nur in US und UK verfügbar.
https://alexa-node-red.bm.hardill.me.uk/docs -
@frankyboy73 OK, vielen Dank! Scheint also nicht ganz so einfach zu sein, wie ich mir das gedacht hatte...
-
@kymchy Hast du dir schon mal den Alexa 2 Adapter angesehen?
-
@frankyboy73 ja, was meinst du?
-
@kymchy Damit kannst du doch Ausgaben auf deine Echos machen.
Da gibts verschieden Ansätze, du könntest z.B. mit der Alexa Home node die du schon hast den Flow zu Abfrage triggern, dann die Temperatur abfragen und über die Alexa2 History abfragen am welchen Echo du die Abfrage gestartet hast und das dann an dem entsprechenden Echo wieder ausgeben.
Oder du liest in Alexa2 in History summary aus was du gesagt hast und wenn der entsprechende Satz z.B. "wie ist die außentemperatur" gesagt wurde löst du den Flow zur Temperaturabfrage, welcher Echo und Ausgabe auf entsprechenden Echo aus.
Bei der Variante die summary auszulesen, müsstest du dir in der Alexa App noch ne Routine erstellen,wenn folgendes passiert, mit dem gleichen Satz den du sagen willst z.B. "wie ist die außentemperatur" und als Action "Warten" 5 Sekunden oder so, sonst Quatsch Alexa bei deiner Anfrage irgendeinen Quatsch, wie das Wetter ist, oder das sie das nicht weiß. -
@kymchy Hi, hab mich mal etwas umgeschaut, sonst gibt es noch diese Nodes. Damit soll wohl die Temperaturabfrage möglich sein. Daür musst du natürlich auch die Temperatur an die entsprechende Node senden. Da werden auch viele Beispiele gezeigt und die wird momentan auch aktuell gehalten.
https://flows.nodered.org/node/node-red-contrib-virtual-smart-home
Da müsstest du dann wohl nur deine Außentempertatur über Iobroker Input Node auf die Alexa Node senden. -
@frankyboy73 OK, ich guck mir das mal an, danke! Zu deinen ersten Beispielen, das geht dann über Funktionen? Ich kann ja nicht ein Speak Command auf einen ioBroker out legen, oder doch?
-
@kymchy Geht auch per Change Node. Ne einfache Sprachausgabe auf einen bestimmten Echo, würde dann so aussehen.
Oder so wenn man es mit ner Funktion macht.
-
@kymchy Wenn du die Außentemperatur mit rein haben willst, musst du die mit ner get Node Abfragen und die msg. mit in den Text reinbringen.
In diesem Fall frage ich auch noch den letzten angesprochenen Echo habe und gebe den Text dort aus. Dafür muss dann in der Output Node das Topic leer bleiben, das wird von der Change Node geschrieben.
Geht auch mit Funktion Nodes
Edit: Habe den Code mit den Funktion Nodes noch mal angepasst, da hatte ich nen Fehler
In der Funktion Node (speak) Runde ich übrigens die Temperatur noch auf eine Stelle nach dem Komma. -
Danke für deine ganze Mühe! Ich wollte jetzt mal diese Geschichte mit den virtuellen Geräten ausprobieren. Das ganze soll recht gut funktionieren. Aber ich glaube, für die Abfrage muss der Wortlaut haargenau stimmen, das fände ich persönlich nicht so toll. Mal sehen...
-
Im Moment sieht das erstmal so aus:
Ich habe keine Ahnung, wo ich da jetzt mein ioBroker in anschließen soll. -
@kymchy Hi, genau weiß ich das auch nicht, da ich die Node selber nicht verwende.
Die iobroker in kommt auf jeden Fall anstatt der Injekt Node. Wenn ich das richtig gesehen habe musst du die Temperatur als msg.payload.temperature übergeben und mit msg.payload.scale noch CELSIUS für die Scalierung. Das geht mit ner Change Node.
Edit: In diesem Fall würde ich bei der In Node die Einstellung "send Message at start wählen" damit du bei Deploy bzw. bei Node Red Neustart sofort nen Temperaturwert bekommst.
Als Tipp noch: Du solltest in den Adaptereinstellungen von Node Red, den Punkt "iobroker Werte in Zeichenkette konvertieren" deaktivieren (ist Standartmäßig leider immer aktiviert), da sonst die iobroker in und get Nodes nur Strings (Zeichenketten) ausgeben. Wenn man das deaktiviert kommen Boolean (true / false) bzw. Nummern aus den Nodes, damit lässt sich besser arbeiten.
-
@frankyboy73 Jo in dem anderen Projekt klappen die anderen Nodes super inkl. Temperaturabfrage. Insofern wenn ich Alexa nutzen würde, kann ich die Nodes nur empfehlen.
@Kymchy @frankyboy73 hat Dir ja gezeigt wie man die Alexa Node füttert. Du findest übrigens über die Import Funktion - und Beispiele - falls Du Dir diese NOdes installiert hast - welche Parameter gefüllt werden müssen.
![0_1637443942187_264d2e94-83ac-4f12-bf52-b863ca1d3688-image.png](Lade 100% hoch)
-
@mickym @frankyboy73 Vielen Dank für die Tipps. Habs so gemacht, funktioniert aber leider nicht. Bekomme keine Werte in den DPs...
-
@kymchy Hast Du Dir denn diese Nodes installiert? - Das Beispiel muss doch funktionieren, da nimmst Du doch eine Inject node als Input.
Wo möchtest Du den Werte haben? Du willst doch Temperaturen auslesen und nicht setzen?
-
@mickym ich habs so gemacht, wie frankyboy es beschrieben hatte, also den Inject Node ersetzt durch den ioBroker in Node. Und den Change Node noch dazwischen.
-
@kymchy Und in dem DP den Du in der iobroker-In Node zeigt auf eine Punkt der die Temperatur anzeigt? Ich weiss wo der Fehler liegt - Du bekommst wahrscheinlich eine Fehlermeldung im Log.
-
@mickym ja genau:
Unter dem ioBroker Node wird die Temperatur ja auch angezeigt. -
@mickym Cannot set property of non-object type: payload.scale
meinst du den?