NEWS
Temperaturen über Node RED und Alexa abfragen!
-
@LaBamba sagte in Temperaturen über Node RED und Alexa abfragen!:
@Fenian
Hallo,
danke für die Arbeit. Vor einigen Tagen hatte ich dieses Thema begonnen.
Ich habe jetzt deinen Flow eingefügt.
Ich bekomme immer von Alexa die Antwort ECHO2 Schlafzimmer unterstützt das nicht!
An was könnte dies liegen?
Ich nehme an du hast einen der ECHO3???Zudem bekomme ich folgende Fehlermeldung!
Ich schätze mal du sagst "Alexa, Temperatur Schlafzimmer". Versuche es mal mit "Alexa, schalte Temperatur Schlafzimmer an" oder "Alexa, Temperatur Schlafzimmer an"
Alexa muss wissen, was du tun möchtest. Da hier eine Lampe emuliert wird eben an oder aus.
Eleganter ist es natürlich, sich in der Alexa-App eine Routine anzulegen die "Temperatur Schlafzimmer" schaltet, so dass du dann z.B. "Alexa, wie ist die Temperatur im Schlafzimmer" sagen kannst.Ich habe es mit Echo dot 2. und 3. Generation, Echo 2.Generation, Echo Plus 1. Generation und einem Echo Show 5 probiert. Der Flow funktioniert auf allen Geräten.
Und was dein Problem mit dem Port angeht.
Irgendetwas blockiert den Port 1880.
Zuerst würde ich mal den Adapter neu starten.Wenn das nicht hilft, per ssh auf den Host zugreifen und mal
sudo netstat -tulpen
aufrufen. Dann kannst du sehen, welcher Prozess den Port belegt und dann entsprechend handeln.
Sollte da node-red stehen, prüfe mal ob du evtl. mehrere node-red Instanzen laufen hast -
@Fenian
Super mit der Verzögerung klappte es. Danke. -
@Fenian
Ich habe die Eingabe so gemacht wie du beschrieben hast.
Jedoch ist immer die Antwort ECHO2 Schlafzimmer unterstützt das nicht!
Mit der Verzögerung habe ich auch einmal experimentiert.
Das mit dem Port 1880 schein tatsächlich durch zwei offene Node-Red Fenster entstanden zu sein.
Die Fehlermeldung ist jetzt jedenfalls weg.Ich habe momentan zwei Echo Dot2 und zwei Echo (2. Generation) im Einsatz.
Kann es sein, das nur ein neuerer Echo im System eingebunden sein muss? -
@ostseereiter
Welche Geräte hast du im System? -
@LaBamba
Ich habe xiaomi Sensoren wenn Du das meinst -
@ostseereiter
Meinte welche Alexa Modelle? -
@LaBamba
3 Echo Dot 2 Generation, 1einen echo Spot einen Echo Show 5 und in meinem Auto einen echo input. -
@LaBamba
Das mit dem neueren Gerät glaube ich eher nicht.
Hast du auf allen 4 Geräten das Problem?ECHO2 Schlafzimmer ist der Name des Echo Dot?
Funktioniert das Gerät "Temperatur Schlafzimmer" wenn du die Alexa-App nutzt?
-
@Fenian
Jetzt bekomme ich "Provider hat momentan leider Schwierigkeiten!"
Ich habe es an unterschiedlichen Geräten probiert und immer die gleiche Antwort erhalten.Update nach einer halben Stunde!
Ich bekomme übrigen 2 Geräte in Alexa angezeigt.
Jetzt akzeptiert der Provider meine Anfrage. Jedoch bekomme ich nur den Ton des Schaltens ausgegeben.
In Node-RED wird aber jetzt alles schon einmal richtig angezeigt. Unter speak steht auch z.B. Es sind 25 Grad im Wohnzimmer. Nur die Sprachausgabe fehlt jetzt noch!
Habe ich hier noch eine falsche Einstellung?
Eine Vermutung habe ich noch. Es könnte an den Einstellungen des Alexa 2.0 Adapter liegen. Welche Einstellungen habt ihr hier vorgenommen?
Danke im voraus! -
@LaBamba sagte in Temperaturen über Node RED und Alexa abfragen!:
Eine Vermutung habe ich noch. Es könnte an den Einstellungen des Alexa 2.0 Adapter liegen. Welche Einstellungen habt ihr hier vorgenommen?
Danke im voraus!Naja, ich hatte mal das Problem, dass ein Gerät immer nur sehr leise geantwortet hat.
Damals hatte ich eine sehr niedrige Lautstärke im Adapter eingetragen- Ich bin von 1 bis 10 ausgegangen, die Angabe im Adapter ist allerdings in %.
Nachdem ich da nichts mehr drin stehen hatte, war die Ansage laut und deutlich.Aber ob das gleich bei allen 4 Geräten der Fall ist?
Ansonsten hänge mal ein Debug-Element hinter "Temperatur auslesen" und stelle "complete msg object" ein. Unter topic soltte so etwas wie: "alexa2.0.Echo-Devices.XXXXXXX.Commands.speak" stehen.
-
@Fenian
Vielen, Vielen danke, es funktioniert! Für das xxxxxxx in alexa2.0.Echo-Devices.XXXXXXX.Commands.speak habe ich die Alexa ID Nummer eingesetzt.
Jetzt habe ich nur noch eine Frage. Gibt es eine Möglichkeit sich nur von der angesprochenen Alexa die Antwort nach der Temperatur geben zu lassen? -
@LaBamba Den Flow dafür hatte ostseereiter oben schon gepostet
-
@Apropo
Denn habe ich ja verwendet. Jedoch spricht immer nur eine Alexa zu mir. Also immer die Gleiche. Egal wo ich es abfrage. -
@Fenian
Wie kann ich in deiner Programmierung
var device = msg.payload[0]
var str = msg.payload[1];
var res = str.substr(0,5);
msg.payload = Math.round(res);
msg.payload = "Es sind " + msg.payload + " Grad in der Küche";
msg.url = "";
var command = "alexa2.0.Echo-Devices." + device + ".Commands.speak"
msg.topic = command;
return msg;Die Genauigkeit mit einer Nachkommastelle aufrufen?
-
@LaBamba Bei mir antwortet damit die Alexa die ich auch anspreche. Habe eine Verzögerung von 1000 eingestellt.
-
@Apropo
Ich habe es schon mit verschiedenen Verzögerungen probiert. Jedoch antwortet immer nur eine Alexa. -
@LaBamba
Nachkommastellen: Die Zeile mit Math.round löschen und mit "msg.payload = msg.payload.replace('.', ',');" ersetzen. -
Wenn du wirklich die ID fest eingetragen hast, kann ja auch nur dieses Gerät antworten.
Vielen, Vielen danke, es funktioniert! Für das xxxxxxx in alexa2.0.Echo-Devices.XXXXXXX.Commands.speak habe ich die Alexa ID Nummer eingesetzt.
@TorbenNW sagte in Temperaturen über Node RED und Alexa abfragen!:
@LaBamba
Nachkommastellen: Die Zeile mit Math.round löschen und mit "msg.payload = msg.payload.replace('.', ',');" ersetzen.@LaBamba sagte in Temperaturen über Node RED und Alexa abfragen!:
Die Genauigkeit mit einer Nachkommastelle aufrufen?
Ich verstehe das eher so, dass er nur eine Nachkommastelle möchte.
Hier ist ein aktualisierter Flow, die Temperatur wird auf eine Nachkommastelle gerundet, In der Funktion "Temperatur auslesen" kannst die Nachkommastellen ändern, in dem du den Wert in den Klammern von "toFixed" änderst.
[ { "id": "ec7f4314.1eedc8", "type": "tab", "label": "Temperaturansagen", "disabled": false, "info": "" }, { "id": "65deed5.6cc5594", "type": "amazon-echo-hub", "z": "ec7f4314.1eedc8", "port": "80", "enableinput": false, "x": 101, "y": 32, "wires": [ [ "80bb9b8e.7a2f" ] ] }, { "id": "80bb9b8e.7a2f", "type": "amazon-echo-device", "z": "ec7f4314.1eedc8", "name": "Temperatur Schlafzimmer", "topic": "", "x": 317, "y": 32, "wires": [ [ "bdf3fc4.797e08" ] ] }, { "id": "bdf3fc4.797e08", "type": "delay", "z": "ec7f4314.1eedc8", "name": "", "pauseType": "delay", "timeout": "1000", "timeoutUnits": "milliseconds", "rate": "1", "nbRateUnits": "1", "rateUnits": "second", "randomFirst": "1", "randomLast": "5", "randomUnits": "seconds", "drop": false, "x": 544, "y": 32, "wires": [ [ "d2824f5f.c71228", "6c8128bc.8f56f" ] ] }, { "id": "d2824f5f.c71228", "type": "ioBroker get", "z": "ec7f4314.1eedc8", "name": "serialNumber", "topic": "alexa2.0.History.serialNumber", "attrname": "payload", "payloadType": "value", "x": 765, "y": 33, "wires": [ [ "e6f6d7b0.3c86d8" ] ] }, { "id": "6c8128bc.8f56f", "type": "ioBroker get", "z": "ec7f4314.1eedc8", "name": "temperature", "topic": "deconz.0.Sensors.39.temperature", "attrname": "payload", "payloadType": "value", "x": 753.5, "y": 80, "wires": [ [ "e6f6d7b0.3c86d8" ] ] }, { "id": "e6f6d7b0.3c86d8", "type": "join", "z": "ec7f4314.1eedc8", "name": "", "mode": "custom", "build": "array", "property": "payload", "propertyType": "msg", "key": "topic", "joiner": "\\n", "joinerType": "str", "accumulate": false, "timeout": "", "count": "2", "reduceRight": false, "reduceExp": "", "reduceInit": "", "reduceInitType": "", "reduceFixup": "", "x": 1097, "y": 34, "wires": [ [ "dcda6519.e5d8" ] ] }, { "id": "dcda6519.e5d8", "type": "function", "z": "ec7f4314.1eedc8", "name": "Temperatur auslesen", "func": "var device = msg.payload[0]\nvar str = msg.payload[1];\ntemperature = parseFloat(str).toFixed(1);\nmsg.payload = \"Es sind \" + temperature + \" Grad im Schlafzimmer\";\nmsg.url = \"\";\nvar command = \"alexa2.0.Echo-Devices.\" + device + \".Commands.speak\"\nmsg.topic = command;\nreturn msg;\n", "outputs": 1, "noerr": 0, "x": 1270, "y": 34, "wires": [ [ "e004e70b.81ef58", "3618a2a9.f1e2a6" ] ] }, { "id": "e004e70b.81ef58", "type": "ioBroker out", "z": "ec7f4314.1eedc8", "name": "speak", "topic": "", "ack": "false", "autoCreate": "false", "x": 1441.5, "y": 34, "wires": [] }, { "id": "3618a2a9.f1e2a6", "type": "debug", "z": "ec7f4314.1eedc8", "name": "", "active": true, "tosidebar": true, "console": false, "tostatus": false, "complete": "false", "x": 1425, "y": 138, "wires": [] } ]
-
Danke, es hat ein paar Tage gedauert aber nun läuft es. Irgendwie habe ich aber anscheinend immer wieder Aussetzer mit der DB Verbindung bei Node-Red.
Darf ich dich mal Fragen wie du deine Schaltvorgänge in Node RED verknüpfst.
Ich hatte ca. 250 mit Alexa Local Node gemacht.
Es funktioniert generell. Jedoch seit einiger Zeit findet die Gerätesuche auf Alexa keine neuen Geräte mehr. Das ist echt nervig! -
@LaBamba
Wenn du in Node Red was an Alexa übergeben willst am besten erst den Adapter neu starten und dann die Geräte suchen lassen.