Zitat von Hightech
Beitrag anzeigen
ich bin der Meinung dass das Echo alles mitbringt um die aktuellen Funktionen auch ohne Lambda, externe Freischaltung und ähnliches abzuwickeln. Die beste, derzeit verfügbare, Lösung ist die Ha-Bridge. Dies ist eine Software die Separat installiert werden muss und eine Hue Bridge emuliert, sprich das Discovery im internen Netzwerk abwickelt und die Requests die vom Echo kommen so übersetzt das hinten raus irgendwas anderes gesprochen werden kann. Nun kommt mein (ziemlich verdorrtes) Admin und Entwicklerherz zum Vorschein das mir sagt "Irgendwie ist es doof dinge an mehreren Stellen konfigurieren zu müssen".
Da kommt nun der neue Logikbaustein in Spiel. Aktuell bin ich in einer Proof Of Concept phase bei der ich eine proxylösung baue (in Java) die die Konfiguration aus dem aktuellen Logikbaustein ausliest und so aufbereitet das Echo damit was anfangen kann (mehr dazu später). Wenn ich das irgendwann vollständig am laufen habe möchte ich mich mit Werner zusammensetzen und schauen ob wir die notwendigen Abläufe direkt in den Logikbaustein integrieren können um somit komplett auf externe Software verzichten zu können.
Disclaimer: Nach bisherigem Kenntnisstand unterstützt das Echo nur Steckdosen und Lampen. Es gibt zwar auch Raumthemostate von Nest die angeblich kompatibel sind, ich weiss aber noch nicht wie diese dinger discovered oder angesprochen werden.
Nun zum bisherigen Arbeitsstand:
Ich habe es heute das erste mal geschafft das mein Echo ein von mir definiertes Gerät gefunden und angesprochen hat (wie gesagt, ohne lamba, externe portfreischaltung oder ähnliches!). *freu*
Ablauf bisher ist wie folge:
Kommando: "Alexa, finde Geräte"
Das Echo sendet einen UDP Broadcast an 239.255.255.250:1900 mit folgendem Inhalt:
Code:
M-SEARCH * HTTP/1.1 HOST: 239.255.255.250:1900 MAN: "ssdp:discover" MX: 15 ST: urn:schemas-upnp-org:device:basic:1 xml OPT: "http://schemas.upnp.org/upnp/1/0/"; ns=01 01-NLS: d87ea11e-1dd1-11b2-8504-89dd041dbb93 NT: urn:microsoft.com:service:X_MS_MediaReceiverRegistrar:1 NTS: ssdp:alive SERVER: Linux/3.2.40, UPnP/1.0, Portable SDK for UPnP devices/1.6.18 X-User-Agent: redsonic USN: uuid:0011322a-f9ad-0011-adf9-adf92a321100::urn:microsoft.com:service:X_MS_MediaReceiverRegistrar:1
Code:
HTTP/1.1 200 OK CACHE-CONTROL: max-age=100 EXT: LOCATION: http://10.18.91.73:4711/description.xml SERVER: Linux/3.14.0 UPnP/1.0 IpBridge/1.15.0 hue-bridgeid: 20CF30FFFE19ADE2 ST: urn:schemas-upnp-org:device:basic:1 USN: uuid:2f402f80-da50-11e1-9b23-20cf3019ade2
Request vom Echo:
Code:
GET /description.xml HTTP/1.1 Host: 10.18.91.73:4711 Accept: */*
Code:
HTTP/1.1 200 OK CONTENT-LENGTH: 469 CONTENT-TYPE: text/xml; charset="utf-8" DATE: Tue Feb 14 22:55:58 CET 2017 EXT: SERVER: Unspecified, UPnP/1.0, Unspecified X-User-Agent: redsonic <?xml version="1.0"?> <root xmlns="urn:schemas-upnp-org:device-1-0"> <URLBase>http://10.18.91.73:4711</URLBase> <device> <deviceType>urn:schemas-upnp-org:device:DimmableLight:1</deviceType> <friendlyName>wurstblinker</friendlyName> <manufacturer>Royal Philips Electronics</manufacturer> <modelName>Philips hue bridge 2012</modelName> <modelNumber>929000226503</modelNumber> <UDN>uuid:2f402f80-da50-11e1-9b23-20cf3019ade2</UDN> </device> </root>
Request vom Echo:
Code:
GET /api/WArFWYfmKONr23IFa1Kf9MZbzBmMJtZaPR0NiTiA/lights HTTP/1.1 Host: 10.18.91.73:4711 Accept: */*
Code:
HTTP/1.1 200 OK CONTENT-LENGTH: 513 CONTENT-TYPE: text/xml; charset="utf-8" DATE: Tue Feb 14 22:55:59 CET 2017 EXT: SERVER: Unspecified, UPnP/1.0, Unspecified X-User-Agent: redsonic { "1": { "state": { "on": false, "bri": 0, "hue": 0, "sat": 0, "xy": [0,0], "ct": 0, "alert": "none", "effect": "none", "colormode": "hs", "reachable": true }, "type": "Extended color light", "name": "Wurstblinker", "uniqueid": "726abc7f-27db-4936-abd2-505830a73b31", "modelid": "LCT001", "swversion": "65003148", "pointsymbol": { "1": "none", "2": "none", "3": "none", "4": "none", "5": "none", "6": "none", "7": "none", "8": "none" } }}
Nach ablauf der Suchzeit (20 sekunden) meldet Alexa "Ich habe ein Smarthomegerät gefunden" und das gefundene Gerät wird in der Alexa App dargestellt.
Nun kann ich meinem Echo den Befehl geben "Alexa, schalte Wurstblinker ein" woraufhin der folgende Request abgesetzt (aber aktuell von mir noch nicht beantwortet) wird:
Code:
PUT /api/WArFWYfmKONr23IFa1Kf9MZbzBmMJtZaPR0NiTiA/lights/1/state HTTP/1.1 Host: 10.18.91.73:4711 Accept: */* Content-type: application/x-www-form-urlencoded Content-Length: 12 {"on": true}
Ich hatte eben noch einen zweiten Request erwähnt, den ich im Moment nicht verarbeite. Dabei handelt es sich um einen Request zum vollständigen Abruf eines Hue Datastores siehe auch -> https://www.developers.meethue.com/d...tate_datastore
Ausblick:
Die Hue API ist mächtiger als ich bisher dachte. Ich weiß nicht was Echo alles integriert hat, aber abgesehen von Dimmen sollten grundsätzlich auch Farbänderungen möglich sein (ich habe tatsächlich einige RGB LED Stripes im Einsatz). Hierbei wäre allerdings einiges an Umrechnung erforderlich, da im KNX die RGB Ansteuerung über 3 Gruppenadressen erfolgt, hue aber nur einen Integer sendet. Mehr infos -> https://www.developers.meethue.com/d...et_light_state
Ich werde die Software erstmal soweit bringen das die wirklich als vollfunktionsfähiger Proxy agiert und dann mal mit Werner sprechen ob die wir Logik etwas weiter aufbohren können. Ich bin im moment skeptisch ob das ganze UDP/TCP Handling wirklich in den Logikbaustein integriert werden kann/sollte.
Gruß
Frank
Kommentar