NEWS
Alexa Anbindung ohne Cloud und Skill
-
Hallo Zusammen,
in den letzten Wochen gab es ja immer mal wieder ausfälle der ioBroker Cloud (Free-Version). Aus meiner Vergangenheit mit einer anderen Heimautomatisierungszentrale (Domoticz) war mir bekannt, das man die Alexa-Anbindung auch ohne zusätzliches Modul verwirklichen kann sofern eine Node-Red Instanz läuft.
Mit der hier vorgestellten Lösung lassen sich alle ioBroker-Objekte mit Alexa steuern, ohne das eine Cloud Anbindung notwendig ist. Die Verbindung zwischen Alexa und ioBroker funktioniert direkt über das lokale Netzwerk per UPNP. Per Node-Red lassen sich damit beliebig viele Phillips Hue Geräte emulieren, die direkt mit eurem Echo kommunizieren können. Ihr könnt mit dieser Lösung jedoch keine Heizung regulieren und auch nicht die Farben der Lampen ändern.
Als erstes muss über den üblichen Weg (ioBroker-> Adapter -> Instanz hinzufügen) der Adapter "node-red" installiert und anschließend gestartet werden. An der Konfiguration des Adapters muss nichts angepasst werden. Nachdem der Adapter gestartet wurde, ist die Node-Red Oberfläche unter der URL: http://[IOBrokerIP]:1880 erreichbar. Das kann allerdings ab Start der Node-Red Instanz 1-2 Minuten dauern (einmalig).
Als nächstes muss das passende Alexa-Modul in Node-Red übernommen werden. Das geht entweder über die Konsole direkt auf eurem ioBroker Server per:
npm install node-red-contrib-alexa-local
… oder über die Node-Red Oberfläche. Dort im Menü (rechts oben) auf den Manage Palette gehen.
Dort dann im Reiter "Install" nach node-red-contrib-alexa-local suchen und das Plugin installieren.
~~![](</s><URL url=)http://i.epvpimg.com/hg2Acab.png" />
Damit haben wir alle notwendigen Voraussetzungen geschaffen um Alexa mit ioBroker-Objekten verbinden zu können. In dem Beispiel hier gehen wir davon aus, das wir eine dimmbare Lampe steuern wollen ( Funktionen: An, Aus, Dimme, Dimme auf X%)
Nun wird eine neuer Flow erstellt (Oben das +) und umbenannt. Um Alexa ein bekannt zu machen benötigt man ein Alexa-Local Input Node. Das befindet sich auf der linken Seite in der Kategorie "Input".
~~![](</s><URL url=)http://epvpimg.com/QoTRfab.png" />
Nachdem der Node auf das Zeichenbrett gezogen wurde muss hier nur noch in den Eigenschaften unter "Device Name" der Name angegeben werden, den Alexa dann erkennen soll.
~~![](</s><URL url=)http://epvpimg.com/2GAugab.png" />
Wenn man nun oben rechts auf "Deploy" drücken würde und Alexa nach Geräten suchen lassen würde, dann würde Alexa das Gerät auch schon finden, ioBroker würde allerdings nichts tun, da die Verbindung zu dem entsprechenden ioBroker Objekt noch nicht definiert wurde.
Dafür ziehen wir uns als erstes ein ioBroker Output-Node auf unseren Desk.
~~![](</s><URL url=)http://epvpimg.com/yYCRaab.png" />
In den Eigenschaften dieses Nodes muss lediglich als "Topic" die Objekt ID eingetragen werden, die gesteuert werden soll. In diesem Fall handelt es sich um eine Yeelight Deckenlampe. Diese kann über das „power“-Objekt mit den Werten „On“ und „Off“ geschalten werden.
~~![](</s><URL url=)http://epvpimg.com/eh1vgab.png" />
Das ist an der Stelle praktisch, da das Alexa-local Node als Payload „On“ bzw. „Off“ liefert.
Um Alexa mit ioBroker zu verbinden müssen in diesem Fall nur die 2 Nodes miteinander verbunden werden.
~~![](</s><URL url=)http://epvpimg.com/Q60vdab.png" />
Nach einem Klick auf „Deploy“ könnt ihr in der Alexa App nach neuen Geräten suchen und fertig! Das Bad-Licht lässt sich nun An und Aus schalten.
Als nächstes implementieren wir noch die „Dimmen“-Funktion. Dazu gibt es bei der Yeelight Lampe ein Objekt „bright“. Dieses Objekt muss wiederum in ein ioBroker Output Node gepackt werden.
Die Helligkeit übermittelt das Alexa-local Node über das Objekt „msg.bri“ das ioBroker-Node braucht die Information allerdings im Objekt „msg.payload“. Zum Umwandeln benötigen wir eine kleine Funktion.
Dazu einfach ein „function“ – Node aus der rechten Seite ziehen und bearbeiten.
~~![](</s><URL url=)http://epvpimg.com/OyIteab.png" />
Als Function wird der folgende Code eingetragen:
var newMsg = { payload: msg.bri } ; return newMsg;local
~~![](</s><URL url=)http://epvpimg.com/Cpeobab.png" />
Anschließend müssen die Nodes nur noch miteinander verbunden werden und das Ganze mit „Deploy“ veröffentlicht werden.
~~![](</s><URL url=)http://epvpimg.com/LTW9bab.png" />
Das war auch schon! Die Lampe lässt sich nun auch per Alexa dimmen.
Falls euer zu steuerndes ioBroker-Objekt kein „on“ / „off“ versteht, sondern nur „true“ und „false“, so muss der Flow noch leicht verändert werden:
~~![](</s><URL url=)http://epvpimg.com/Qyrtfab.png" />
An das Alexa-Node muss ein „Switch“ angeschlossen werden. In diesem Switch wird an 2 Ausgängen zwischen „on“ und „off“ unterschieden:
~~![](</s><URL url=)http://epvpimg.com/E4K9bab.png" />
Wenn eine der beiden Bedingungen zutrifft liegt an dem entsprechenden Ausgang ein „true“ an. Für den Fall dass das Objekt eingeschalten werden soll ist das OK. Für den „Aus“-Fall muss noch eine kleine Function „False“ zwischen dem Switch und dem ioBroker Node geklemmt werden:
~~![](</s><URL url=)http://epvpimg.com/AXqtaab.png" />
Als Function muss der folgende Code eingetragen werden:
msg.payload = false; return msg;
Dann einfach noch die Nodes wie im Screenshot oben miteinander verbinden, auf Deploy drücken und fertig!
In diesen Flow ließe sich noch genauso die Dim-Funktion mit realisieren. Das DIM-Function Node müsste zwischen dem „On“-Ausgang des Switch und dem Brightness-ioBrokerNode der Lampe geklemmt werden.
Hier noch ein weiteres Beispiel für Lampen die ein einzelne On bzw. Off-Objekte haben:
~~![](</s><URL url=)http://epvpimg.com/8SBZeab.png" />
Ich hoffe das Ganze ist einigermaßen verständlich. Bei Fragen helfe ich gerne weiter!~~~~~~~~~~~~~~~~~~~~~~~~~~
-
woow, das hört sich gut an.
Kannst Du mir mal sagen ob man damit auch die Sonoff Geräte schalten kann?
Was ist mit Homematic Schaltern? Geht es auch?
Ich nutze die Alexa selten, meistens aber um die Fenster Rollos zu bewegen oder halt ein paar Lampen über Sonoff bzw. über Homematic Schaltaktoren zu schalten.
Kannst Du mal grob aufschreiben welche Geräte man schalten kann?
Was ist mit Fenster Rollos von der Homematic?
Lassen sich Sonoff Geräte EIN/AUS schalten?
-
Man kann damit ALLE Geräte schalten, die sich An/Aus schalten oder eben dimmen lassen…
-
Satan :mrgreen:
das muß ich doch glatt ausprobieren in der nächsten Zeit.
Node Red Adapter muß installiert sein. o.k
Was ist mit UNPN ???
Du schreibst dass
Die Verbindung zwischen Alexa und ioBroker funktioniert direkt über das lokale Netzwerk per UPNP
-
Satan :mrgreen:
das muß ich doch glatt ausprobieren in der nächsten Zeit.
Node Red Adapter muß installiert sein. o.k
Was ist mit UNPN ???
Du schreibst dass
Die Verbindung zwischen Alexa und ioBroker funktioniert direkt über das lokale Netzwerk per UPNP ```` `
upnp ist eine Sammlung von Netzwerkprotokollen mit denen Sich Geräte im Netzwerk steuern lassen. Bekannt ist vorallem im Medienbereich (Videostreaming z.B.)
-
Danke,
ich hatte gedacht dass man noch beim IOBroker den UNPN Adapter installieren müsste…
Demnach ist es aber nicht so...
Ich gehe davon aus, dass der Router noch passend eingestell werden sollte. Richtig?
1526_unbenannt.png -
Nein, den Haken musst du dafür nicht setzen. Du musst nichts weiter tun.
-
im iobroker gibt es einen node-red-Adapter. Brauche ich den?
Ich hatte gerade versucht, dsen zu installieren, bekomme aber einige warnings (deprecated) und errors.
-
ja, den brauchst Du…
ich habe auch gerade eben den Noder Read Adapter installiert und hatte ein paar Warnungen auch.
Zum Schluss aber, bekamm ich noch die Oberfläche zum konfigurieren.
Weiter mit:
npm install node-red-contrib-alexa-local
-
Hi,
funktioniert ausgezeichnet, auch bei Geräten die kein On/Off sondern nur True/False verstehen (Sonoff, Tradfrie, FHEM-Schalter). Ich habe allerdings ein kleines Problem. Wenn ich einen Triggerdatenpunkt unter Javascript.0 schalten will, der eine Szene steuert, so kommt bei diesem anstatt "True" dennoch "On" an und die Szene startet nicht. "False" funktioniert anstandslos. Ich habe mir nun beholfen, indem ich einen zweiten Fuction-Node analog zu dem mit False nur eben mit True erstellt habe. Damit kommt nun auch im Datenpunkt True an. Nicht dramatisch und es funktioniert ja nun, aber verstehen würde ich es dennoch gerne… :lol:
Ach ja, wenn ich den Szenenpunkt direkt ansteuere dann geht es ohne den zweiten Function-Node, aber ich brauche den Triggerpunkt noch für etwas anderes...
Gruss, Jürgen
-
Cool. NAch etwas probieren funktioniert es wunderbar
Es gibt da auch ein projekt, dassn man erkennen kann, welchee Echo das Kommando gehört hat.
Lässt sich das auch hier erkennen?
Und: In dem o. Projekt muss ein Alexa-Token generiert werden.
Scheint so, als ob ich das mit Node red nicht brauche. Richtig?
Was jetzt der Knaller wäre, wenn ich sogar noch Geräte steuern könnte, die Alexa kennt (aber nicht ioBroker)
-
Vielleicht blöde Frage. Kann ein Flow (also eine leere Seite, die ich mit dem + oben rechts erstellen kann) immer nur den Ablauf für ein Gerät enthalten? Also muss ich für 20 Geräte dann 20 Flow-Seiten erstellen? Oder kann ich hier z.B. jeweils einen Flowfür Wohnzimmer, Schlafzimmer usw. erstellen und darin untereinander Abläufe für verschiedene darin enthaltene Geräte?
Gruss, Jürgen
-
GENIAL, Bei mir geht es auch. Ich habe testweise alles auf dem kleinen RPI 1 mit 512 MB installiert.
Die Einrichtung ist sehr einfach. Laut Beschreibung muß man hier für Geräte die mit false und true gesteuert werden, etwas anpassen.
Die Sonoff Geräte scheinen wohl das ON OFF zu verstehen, somit ist eine Anpassung am Floh nicht notwendig.
Das ganze sieht simpel aus und ist auch so umzusetzen.
Vielen Dank nochmal an den Kollegen thps
1526_unbenannt.png -
weß denn jemand, wie das technisch funktioniert?
Denn wie greift der Adapter, ohne den Zugang zu Alexa zu kennen, auf das gesprochene Kommando zu?
Für Alexa selbst gibt es ja auch einen Node red Adapter. den habe ich aber gar nicht installiert
-
Hi,
ganz sicher bin ich nicht, aber ungefähr so: Alexa kann ja auf Geräte diverser Hersteller z.B. Hue direkt zugreifen und findet diese automatisch. Ist mir mit den Sonoffs passiert, als ich dort testweise mal die Hue-Emulation aktivierte, dann waren sie plötzlich zweimal in Alexa, einmal per ioBroker und einmal als Hue gefunden. Der Alxea-Node-red macht nun vermutlich nichts anderes, als auch so einen Gateway/Bridge zu emulieren, den Alexa dann findet und nach angemeldeten Geräten durchsucht. Man möge mich aber berichtigen, falls das Blödsinn sein sollte.
Meine Frage oben habe ich übrigens per trail and error selbst beantwortet. Ich habe nun für jeden Raum einen Tab und darin diverse Flows. Alexa findet alles und es läuft. :mrgreen: Ich meine sogar, die Reaktionszeit vom Befehl geben bis zum Schalten ist etwas schneller geworden.
Da ich nun allerdings den Cloud-Adapter eigentlich nicht mehr brauche, da ich ihn nur wegen Alexa aktiviert hatte (Fernzugriff geht bei Bedarf auch per VPN) sehe ich nun keinen Grund mehr, die Pro-Cloud zu kaufen. Hatte das eigentlich vor, nachdem die letzten Wochen mit den free-Accounts doch einiges im Argen lag. Alternativ wird es nun auf eine Spende rauslaufen, hoffentlich finde ich hier einige Nachahmer…
Gruss, Jürgen
-
die Idee mit der Spende ist eigentlich gut.
Potentiell finde ich es besser, wenn möglichst wenig Cloud im Spiel ist. Also selbst, wenn man der Lösung Sicherheit zutraut, so ist jede zusätzliche Komponente ein Ausfallrisiko
Deie Alexa-Theorie hat mich noch nicht ganz überzeugt.
Irgendwie ist mir das noch nicht rund.
Ich vermute, der Adapter greift das Kommando-Protokoll der Alexa ab und erkennt daraus den Befehl. Aber auch hier ist noch nicht klar, wie der Adapter eine gültige Verbindung zu Alexa aufbauen kann.
Streng genommen könnte ich ja so jede fremde Alexa kapern
-
Hi,
Nein, ich denke andersrum. Der Adapter greift nicht auf Alexa zu, sondern Alexa greift auf den Adapter zu, so wie sie es ja bei Hue-Geräten z.B. auch kann. Der Adapter stellt ja ein Webinterface bereit welches Alexa eben bei der Suche nach Geräten als kompatibel erkennt und daraus die Informationen über die verbundenen Geräte zieht. Gibt man Alexa dann einen Befehl, gibt si den an den Adapter und der führt aus. Der Adapter selbst macht ohne Alexa in dem Fall nix und wartet eben nur, bis über das Webinterface was reinkommt.
Also nix mit fremden Alexas kapern. Eher Kapern der ioBroker-Geräte, wenn es eine fremde Alexa in Dein Netzwerk schafft. :lol:
Und ja, mir gefällt der Gedanke hier nun ohne Cloud (wobei Alexa im Prinzip ja auch eine ist) auszukommen. Ohne Internet läuft es ja dennoch nicht, da Alexa ja alles erstmal zu den Amazon-Servern schickt um hier die Sprachebefehle auszuwerten. Aber ioBroker ist nun wenigstens nicht mehr per Cloud erreichbar, was ja zumindest etwas mehr Sicherheit gibt. Wobei ich hier nichts unterstellen will und denke, dass die Cloud auch immer sicher war. Aber 98% sind eben weniger als 99% Sicherheit.
Gruss, Jürgen
-
Hi,
Nein, ich denke andersrum. Der Adapter greift nicht auf Alexa zu, sondern Alexa greift auf den Adapter zu, so wie sie es ja bei Hue-Geräten z.B. auch kann. Der Adapter stellt ja ein Webinterface bereit welches Alexa eben bei der Suche nach Geräten als kompatibel erkennt und daraus die Informationen über die verbundenen Geräte zieht. Gibt man Alexa dann einen Befehl, gibt si den an den Adapter und der führt aus. Der Adapter selbst macht ohne Alexa in dem Fall nix und wartet eben nur, bis über das Webinterface was reinkommt.
Also nix mit fremden Alexas kapern. Eher Kapern der ioBroker-Geräte, wenn es eine fremde Alexa in Dein Netzwerk schafft. :lol:
Und ja, mir gefällt der Gedanke hier nun ohne Cloud (wobei Alexa im Prinzip ja auch eine ist) auszukommen. Ohne Internet läuft es ja dennoch nicht, da Alexa ja alles erstmal zu den Amazon-Servern schickt um hier die Sprachebefehle auszuwerten. Aber ioBroker ist nun wenigstens nicht mehr per Cloud erreichbar, was ja zumindest etwas mehr Sicherheit gibt. Wobei ich hier nichts unterstellen will und denke, dass die Cloud auch immer sicher war. Aber 98% sind eben weniger als 99% Sicherheit.
Gruss, Jürgen `
Genauso ist es. Soweit ich weiss meldet Nodered damit steuerbare upnp-Geräte im Netzwerk an. Dabei läuft jedes Gerät über einen eigenen Port. Alexa sucht im Netzwerk nach diesen Geräten und bindet sie ein.
Upnp funktioniert übrigens nur im LAN. Daher ist das mit den Kapern nicht so einfach
-
Genauso ist es. Soweit ich weiss meldet Nodered damit steuerbare upnp-Geräte im Netzwerk an. Dabei läuft jedes Gerät über einen eigenen Port. Alexa sucht im Netzwerk nach diesen Geräten und bindet sie ein.
Upnp funktioniert übrigens nur im LAN. Daher ist das mit den Kapern nicht so einfach `
Ah. Ich fange an, zu verstehen.
Dann bedeutet das aber auch, dass man trotzdem nicht auf die Geräte des Alexa-Hub zugreifen kann.
Schade
Trotzdem ist mir node red im Moment sympatisch.
Auch was die Visualisierung der Schnittstellen angeht
-
Das mit dem "nur im LAN" musste ich heute schon selbst erfahren. Bislang war Alexa/Echo in meinem regulären VLAN, in dem auch meine Rechner u.dgl. mit Internetzugang stehen. Zugriff auf und für ioBroker hatte ich manuell freigegeben und bislang lief der Rest ja über die Cloud. Nur die Geräte von node-red konnte sie nicht finden. Erst als ich Alexa nun auch ins VLAN für die Smart-Home-Geräte gebracht habe, waren die Geräte sofort sichtbar.
Ach ja, und mir fiel gerade beim Lesen noch was auf. Wir sind mittlerweile so "bescheuert" dass wir nicht über die Amazon-Echo-"Geräte" reden, sondern über Alexa und sie mit "sie" wie eine Person bezeichnen. Noch ein Kopf und ein paar Arme und Beine dran und wir sind da gelandet, was man vor Jahren noch im Kino bestaunen konnte… :mrgreen:
Gruss, Jürgen
EDIT: Zeitgleich abgesendet aber hier noch für Dich: Es gibt hier im Forum noch einen Threat zum Thema Zugriff von ioBroker auf Alexa:
http://forum.iobroker.net/viewtopic.php?f=20&t=10876
Vielleicht wirst Du da ja fündig?