NEWS
Alexa Anbindung ohne Cloud und Skill
-
Hallo Bbtown, Alexa-local wird doch gerade hier zum Aktivieren /Schalten von Abläufen genutzt. Das Problem ist doch nur, dass ohne Cloud keine Rückmeldung gelingt.
Wird das Internet nutzen möchte: der Hui-Bewegungsmeldern kann die Temperatur ausgeben. Mit diesem Node: https://flows.nodered.org/node/node-red … ure-sensor
-
Hallo Bbtown, Alexa-local wird doch gerade hier zum Aktivieren /Schalten von Abläufen genutzt. Das Problem ist doch nur, dass ohne Cloud keine Rückmeldung gelingt. ` Alexa versteht ohne Internetzugang kein Wort. Jedes gesprochene Kommando muss auf Amazon Server hochgeladen werden um dort analysiert/ausgewertet und interpretiert zu werden. Es gibt auf dem Geräten selbst keinerlei entsprechend Intelligenz/Rechenpower. Wenn jemand also sagt er würde node-red einsetzen um ohne cloud/internet Alexa-Sprachkommandos ausführen zu lassen, so ist das nach meinem Kenntnisstand schlichtweg unmöglich.
Wird das Internet nutzen möchte: der Hui-Bewegungsmeldern kann die Temperatur ausgeben. Mit diesem Node: https://flows.nodered.org/node/node-red … ure-sensor ` Ja, eine Temperatur kann womöglich aus dem HUE Bewegungsmelder ausgelesen werden (ich selbst habe keinen), das hat jedoch mit einer Temperatur/Heizungssteuerung nicht viel gemein.
-
Du hast vollkommen Recht. Alexa ohne Internet geht nicht. Der Unterschied ist nur:
NO Alexa Skills required.
NO account linking required.
NO complicated parameters, it just work
-
Du hast vollkommen Recht. Alexa ohne Internet geht nicht. Der Unterschied ist nur:
NO Alexa Skills required.
NO account linking required.
NO complicated parameters, it just work ` das ist einfach nicht wahr!!
Keine Heizungsteuerung
Keine Temperaturansagen (außer Hue Motion)
Keine Rückmeldung bzw. Darstellung der korrekten Siati in der App
[EDIT] auch nicht ganz unwichtig:
nur für bestimmte Nutzer, da keine Unterstützung für Echo Gen.2 (Echo Show?)
keine Unterscheidung der Geräte (alles "Light")
Über den Cloud Adapter kann darüber hinaus ein Startwert (Helligkeit/Lautsttärke) individuell eingestellt
vlt. ein wichtiger Hinweis … ich will mich ja überhaupt nicht streiten 8-)
Die Ansteuerung über node-red ist klasse als zusätzlicher Baustein/Möglichkeit und ich nutze diese ebenfalls
Aber mehr ist es eben nicht ... eine Ergänzung!
Kein Ersatz!!
Das versuche ich die ganze Zeit zu relativieren.
Wer bisher mit dem Möglichkeiten des Cloud-Adapters Probleme hatte, und diese nun durch die Verwendung von node-red behoben sind, der hat alles richtig gemacht, Wenn der aber glaubt es sei nun von Internet und Cloud unabhängig, da kann ich nur sagen - weit gefehlt.
-
Hi,
jetzt muss ich auch mal ne Frage zu diesem Adapter stellen. Ich ging bis gerade eben davon aus, dass der Adapter und Alexa, also mein Echo Dot rein im lokalen Netz miteinander agieren, von der Amazon-Cloud abgesehen. Also Anfrage an Alexa geht zu Amazon raus, Antwort von da kommt, welches lokale Gerät ich steuern möchte, und der Echo gibt das dann an den Node-Red-Adapter weiter, der ausführt. Dieser hat keine Verbindung nach "draussen" sondern macht das lokal.
Nun habe ich eben mal wieder mit der Reverb-App (Alexa für Android) gespielt und dabei das Handy auch mal testweise ohne WLAN betrieben, weil ich wissen wollte, was dann passiert. Und anders als erwartet hat das Handy die Geräte exakt so steuern können, als wenn ich es den Echo, der im selben Netz hängt, machen würde. Kann mir das einer erklären, wie die App auf dem Handy, welches nicht im lokalen Netz hängt und nur via Mobilfunk kommunizieren kann Geräte steuert, die nur lokal per Node-Red-Adapter erreichbar sind? :shock: :shock:
Einzig mögliche Erklärung wäre für mich momentan, dass Anfragen an den Amazon-Server an alle Alexa-Geräte von diesem Account zurückgehen, egal welches die Anfrage gestellt hat. Und dass mein lokaler Echo dann diese Anfrage eben an iobroker weitergeleitet hat, der ansonsten von außen nicht erreichbar ist. Kann das sein, aber, macht das auch Sinn? :?
Gruss, Jürgen
-
Kann mir das einer erklären, wie die App auf dem Handy, welches nicht im lokalen Netz hängt und nur via Mobilfunk kommunizieren kann Geräte steuert, die nur lokal per Node-Red-Adapter erreichbar sind? :shock: :shock: ` Am Ende des Tages liegen alle Smart-Geräte (bzw. die Informationen über selbige) auf einem Amazon Server. Also weder in/auf einem Echo, noch in der der Reverb-App.
Ein Echo ist nur ein "Mikrofon", so wie "Reverb" auch.
Also wird zum jedes Kommando ebenfalls zu Amazon geschickt und interpretiert.
Und je nach Kommando (Schalte, Setze) wird nachgeschaut ob es Smart-Home Geräte oder Skills gibt die diese Verarbeiten können und falls ja wird das entsprechende Kommando zurückgegeben (und landet dann womöglich irgendwann wieder im lokalen Netz).
Es ist also völlig egal ob das ursprüngliche Kommando an ein lokales Echo im W-Lan oder über GSM per Handy (Reverb) iiniziiert wurde.
-
Hi,
soweit ist es mir klar, dass das alles über den Amazon-Server läuft. Aber da ich keinerlei Ports geöffnet habe und auch im iobroker die Cloud deaktiviert und nur den Node-Red-Adapter aktiviert habe muss ja irgendein Gerät im lokalen Netz etwas von den Amazon-Servern empfangen um zu reagieren und das an iobroker weiterzuleiten. Der Node-Red ist ja nicht mit dem Amazon-Server verbunden sondern simuliert nur Hue-Geräte, die lokal von "Alexa" gefunden werden.
Also ist es so, wie ich schon geschrieben habe, dass mein Echo im lokalen Netz dann auf die Befehle vom Amazon-Server reagiert und diese an den Node-Red-Adapter sendet?
Was im Übrigen cool an der Sache ist, ist die Tatsache, dass sich iobroker-Geräte damit aus der Ferne aus steuern lassen, ohne dass ein Cloud-Adapter oder VPN nötig wäre. 8-)
Gruss, Jürgen
-
Dort sieht man, dass 49% immer die Grundeinstellung auf der App ist. `
edit:
Hallo,
die Rückmeldung der Werte an die App habe ich erfolgreich für Heizungen getestet.
Bei der Alexa local (/opt/iobroker/iobroker-data/node-red/node_modules/node-red-contrib-alexa-local/index.js):
edit: Datei weiter unten angehängt.
Bei Alexa Home (/opt/iobroker/iobroker-data/node-red/node_modules/node-red-contrib-alexa-home/alexa/alexa-home.js):
Zeile 19 hinzu:````
node.aktWert = 0;Zeile 155 hinzu:```` console.log("aktWert_out:" + node.aktWert);
Zeile 157 geändert:````
'{"on": ' + state + ', "bri": ' + node.aktWert + ',' +Zeilen 218+219 hinzu:```` node.aktWert = Math.round(briInput * 2.55); console.log("aktWert_in:" + node.aktWert);
Davor, wie immer, ein Backup der Dateien machen. Änderungen mit einem Linux-fähigen Editor wie z.B. Notepad++
Das Skript Node testet auf Heizung höher oder niedriger. (Alexa, erhöhe Heizung)
if (msg.change_direction === 0){ msg.payload = msg.bri; }else{ msg.payload = 49 + msg.change_direction; } return msg;
Das Java-Script dazu sieht dann so aus:
var logOn = false; // Skript Logausgabe ein- (true) / ausschalten (false). Fehler werden immer ausgegeben. var forecreation = false; // Default: false. true: Datenpunkte werden überschrieben (wenn z.B. Bezeichnungen geändert wurden) var http = require('http'); // Node Module http verwenden // Datenpunkte anlegen: // ----------------------------------------------------------------------------- var idDatenpunkt = "alexa.wohnung.heizungbad"; // Pfad und Name, unter dem in der Javascript-Instanz der Datenpunkte angelegt wird createState(idDatenpunkt, 0, forecreation, { // Datenpunkt wird angelegt name: 'Bad Heizung', desc: 'Heizung einstellen', type: 'number', unit: '%', min: 0, max: 100, read: false, write: true, role: 'value' }); // Level Einstellen // ----------------------------------------------------------------------------- function leveldef(dp) { dpWert = dp.state.val; var dpBez="hm-rpc.2.xxxx.1.SET_POINT_TEMPERATURE"; // Badezimmer var aktWert = getState(dpBez).val; var MinWert=6; var MaxWert=24; var GrundWert=18; var sName="Badezimmer"; if (dpWert > MaxWert){ if (dpWert < 49){ if (aktWert > GrundWert){ dpWert=aktWert-1; } }else{ if (aktWert < MaxWert){ dpWert=aktWert+1; }else{ dpWert=aktWert; } } }else if (dpWert < MinWert ) { dpWert=GrundWert; } if (dpWert !== aktWert){ log('Hzg ' + sName + ' von ' +aktWert + ' auf '+dpWert); setState(dpBez, dpWert ); }else{ log('Hzg ' + sName + ' war schon auf ' +aktWert); } } // Abfrage des Datenpunkts // ----------------------------------------------------------------------------- on({id: "javascript.0." + idDatenpunkt, change:'any'}, function (dp) { leveldef(dp); });
-
Hallo Leute,
erst einmal vielen Dank für die tolle Anleitung und die Idee dahinter.
Ich hab nun all meine Geräte von der Cloud in node-red verschoben. Das funktioniert grundsätzlich auch super!
Ein Problem habe ich, wie das halt immer ist, doch noch. Ich habe 3 Geräte (einfache, selbst in iobroker angelegte true/false states) die einfach nicht gesteuert werden.
Alexa bestätigt mir das Ausführen mit OK und auch in der node-red Oberfläche sehe ich, dass sich der Status des Obejekts geändert hat. In iobroker selbst wird allerdings nichts geschaltet.
Ich habe es bereits mit alexa-local und wemo-emu versucht, ohne Erfolg. Andere Objekte die ich in iobroker genauso angelegt habe funktionieren ohne Probleme.
Das soll mal einer verstehen :?
Hat vll jemand eine Lösung zu diesem Problem?
Gruß
Chris
-
Ich kenne das verhalten vereinzelt von manchem Broadlink Datenpunkt
-
Ich habe nun mal folgendes getestet:
Das nicht funktionierende iobroker Objekt gelöscht und mit leicht verändertem Namen wieder angelegt.
Schwupps funktioniert das Ganz. Nicht die eleganteste Lösung, aber bei 3 Geräten zu verschmerzen.
Gleich noch vorweg. Das Objekt mit dem selben Namen wieder anlegen funktioniert nicht.
-
Hallo,
ich bin gestern und heute auch noch auf Probleme gestossen. Die Erkennung durch Echos der 2. Generation klappt ja bekanntlich nicht. Also habe ich mir andere Projekte angesehen. Da wurde von kritischen Timings gesprochen. Also vor dem Senden der Erkennung mal eine Pause von 1,5 Sekunden eingebaut, was in dem anderen Projekt geholfen haben soll. >> Hat nix gebracht. Dann unterschiedliche Seriennummern vergeben. Hat auch nichts gebracht. Dann die setup.xml an die anderer Projekte angepasst >> hat auch nix gebracht. Immer sagte Alexa, dass keine neuen Geräte gefunden wurden.
Dann wollte ich aufräumen und was entdecke ich da auf der Alexa Website? - Das Gerät wurde irgendwann hinzugefügt. Also wieder gelöscht und nochmal probiert. >> nix
Dann das Backup von gestern auf den Raspi und nur ein Home-Gerät hinzugefügt: >> Nicht gefunden…
Im Quellcode sind auch noch eine Menge FIXXMEs drin. Daher am besten, wenn was funktioniert, nicht für Tests entfernen.
Blöd ist aktuell noch, dass die WEMO Dinger keine Rückmeldung haben. Die Geräte sind in der Alexa App immer ausgeschaltet.
-
Hallo,
Bei Alexa-home funktioniert die Rückgabe an Alexa. Bei Alexa-local wirft er aktuell noch die Werte durcheinander. Komischerweise wird Node Red mit 1 beendet und gleich wieder gestartet, wenn ich wie bei Alexa-home vorgehe. Also thisNode.aktWert nutze.
Nun suche ich nach der Möglichkeit, eine Variable für den gesamten Node zu haben. Alternativ müsste ich den aktWert durch die ganzen Funktionen mitschleppen. In die Persistent Storage wollte ich den Wert nun nicht mit ablegen. RAM sollte reichen.
Die Sachen mit context und flow werden nur angemeckert.
> xxx is not defined at handleInputMessage
edit:
OK, mit thisNode durchschleifen klappt es jetzt.
ToDo sind dann noch die Schaltbefehle. Aktuell wird immer der Status ON gesendet.
Anbei mein aktueller Stand der local-Version. (opt\iobroker\iobroker-data\node-red\node_modules\node-red-contrib-alexa-local)
5023_index.js -
Bei mir funtioniert es Alexa-Loal leider nicht! Wer kann mir weiterhelfen? Anbei zwei Bilder die das Problem beschreiben.
5246_alexa-local.jpg
5246_fehlermeldung.jpg -
Hallo,
was steht in True / False drin? Evtl. aus einem Texteditor eingefügt und falsche (Zeilenende-)Zeichen mit kopiert?
-
Kleines Update:
die Alexa-home Nodes werfen noch Fehlermeldungen aus. Da diese eh ,trotz gleicher Vorgehensweise, nicht erkannt werden, widme ich mich den Alexa-local Nodes.
Leider hatte ich noch keinen Erfolg mit der Erkennung per Alexa der 2. Generation. Alle Anpassungen, welche die Ausgabe so nah wie möglich an einen Original-Hue Hub bringen, waren erfolglos (12 Stellige Seriennummer, Seriennummer kommt in der UUID vor, IP Adresse in Klammern hinter dem Namen, usw).
Aktuell habe ich die Ist-Werte in der App. Aus-Zustand wird auch korrekt angezeigt. Der Original-Code schreibt allerdings bei jeder Änderung am Eingang was in den permanenten Speicher. Dieses habe ich schon geändert. Die Änderung der Seriennummern auf 12 habe ich drin gelassen. Die InputTrigger Option will ich für digitale Geräte (nur an/aus) mißbrauchen.
Der Umbau des Codes ist jetzt schon relativ umfangreich. Auch bin ich über doppelte, identische Funktionen (setLightBriForLightId und Co) gestolpert. Ob diese schon vorher doppelt drin waren, oder mir ein Copy/Paste passiert ist, habe ich noch nicht nachgeprüft.
edit: Nachgeprüft, die Funktionen sind im Original doppelt drin.
anbei mein aktueller Stand. Da die Seriennummer und Gerätenummer auf 12 Stellen geändert ist, läuft der Code nicht mit bereits erstellten Nodes. Am besten die Nodes löschen, Code austauschen, node-red neu starten und Nodes neu erstellen.
Im Storage wird nur abgelegt, wenn der Wert sich geändert hat und größer 0 ist. Ein Einschalten setzt dann den letzten Wert.
5023_node-red-contrib-alexa-local.zip -
Hallo,
ich habe mich jetzt den ganzen tag mit der Umstellung auf node red befasst und umgesetzt, nur ich habe wie viele das Problem das alexa irgendwann die geräte nicht mehr erkennt weil im eintrag "online" oder "discovery" steht und nicht "lights".
Hat schon irgendwer eine lösung zu diesen Problem??
mfg denjo
-
Hallo,
wie bist Du genau vorgegangen / welche Nodes nutzt Du?
Anbei die geänderten Dateien, damit man per Wemo-Emulator Rückmeldungen zur App bekommt.
Als Eingang entweder true / false, on / off oder einen bri-Wert. Alles größer 0 ist an.
5023_node-red-contrib-wemo-emulator.zip
5023_wemo.png -
ich geh so vor
was ist denn der wemo Emu??
3445_04-03-_2018_20-28-48.png -
Hallo,
der wemo-emu sollte hier im Thema mit behandelt sein. Die digitale (an/aus) Alternative zur analogen (an/aus, Dimm-Wert 0 bis 100) Alexa-home / Alexa-local Lösung.
Sieht auf den ersten Blick gut aus.
Ich kann leider nicht erkennen, welche Nodes Du nutzt. (Home (wohl nicht, wegen unterschiedlicher Ports), local oder meine geänderte Version hier). Die erneute Erkennung von Geräten klappt am besten, wenn man die per Homepage / App löscht, dann Node-Red neustartet und neu suchen lässt.
Welche Konfiguration hast Du im Switch und den Funktionen?