Werbung
Die Philips Hue-Leuchten sind sicherlich nicht billig (Es gibt einige Alternativen Philips Hue-Alternativen, die sich wirklich lohnenDas Philips Hue-System ist führend in Bezug auf intelligente Beleuchtung, aber es gibt einige würdige Alternativen. Wir haben drei ausgewählt, die alle die gleichen grundlegenden Funktionen und die gleiche Hackbarkeit bieten. Weiterlesen ), aber eine Sache, die ich sehr schätze, ist die gut dokumentierte API Was sind APIs und wie verändern offene APIs das Internet?Haben Sie sich jemals gefragt, wie Programme auf Ihrem Computer und die von Ihnen besuchten Websites miteinander "sprechen"? Weiterlesen zum Erstellen eigener Hue-Apps. Heute zeige ich Ihnen, wie Sie Ihre Hue-Lichter von einem Arduino aus steuern und dann einen einfachen Bewegungssensor hinzufügen.
Warum machen wir das? Weil Hausautomationssysteme ziemlich starr und teuer sein können. Indem Sie lernen, wie Sie den Farbton von Arduino aus steuern, öffnen Sie die Türen zu einer Vielzahl von maßgeschneiderten Hausautomationsprojekten, die von Standardkomponenten einfach nicht zu übertreffen sind. Wenn es Ihnen nicht gefällt, Dinge zusammen zu hacken, probieren Sie diese aus
8 fabelhafte Hue-Apps Die 7 besten Philips Hue Apps für Android und iPhoneSuchen Sie nach den besten Philips Hue-Apps für Ihre Smart Lights? Hier sind einige großartige Apps für iPhone und Android. Weiterlesen stattdessen.Das Farbton-System
Lassen Sie uns ein wenig technisch werden, damit Sie die zugrunde liegenden Systeme kennen, mit denen Sie arbeiten. Farbton Lichter erzeugen eine Mesh-Netzwerk Mesh Networks: Die Zukunft der KommunikationMesh-Netzwerke sind nahezu unverwundbar. In einem Mesh-Netzwerk gibt es keine Drosselstellen, durch die der gesamte Verkehr geleitet wird. Stattdessen werden Informationen von einem Gerät zum nächsten weitergegeben, bis sie ihr Ziel erreichen. Weiterlesen mit einem drahtlosen Kurzstreckenprotokoll namens ZigBee - speziell ZigBee Light Link zertifiziert, was bedeutet, dass andere ZLL-Produkte neben dem Farbton funktionieren sollten (theoretisch).
Obwohl die Reichweite technisch gering ist, bedeutet die Mesh-Netzwerkfunktion von ZigBee, dass jede neue Glühbirne das Netzwerk erweitert und Nachrichten an andere Glühbirnen weiterleitet. Dies bedeutet, dass Sie, wenn Sie Probleme haben, ein Licht auf der anderen Seite des Hauses zu steuern, versuchen, ein anderes Licht zwischen die beiden zu setzen.
Zigbee ist ein großartiges Protokoll, aber es unterscheidet sich erheblich von Wi-Fi oder einem kabelgebundenen Computernetzwerk. Daher benötigen wir die Philips Hue Bridge, um die beiden miteinander zu verbinden. Auf der Hue-Bridge wird eine modifizierte Open Source-Linux-Firmware ausgeführt, die einen einfachen Webserver sendet.
Durch die Interaktion mit diesem lokalen Webserver können Sie den aktuellen Status der Lichter ermitteln und steuern.
Es ist ein wunderschön einfaches System und reif für DIY-Projekte. Ein großes Lob an Philips, dass er dieses Ding so hackbar gemacht hat.
Anfangen
Bevor Sie auf die API-Dokumentation zugreifen können, müssen Sie Registrieren Sie sich als Entwickler. Es ist kostenlos, aber Sie müssen die Allgemeinen Geschäftsbedingungen akzeptieren. Mach das jetzt.
Jeder, der mit Standard-Webdiensten oder Javascript vertraut ist, sollte mit dem Farbton arbeiten können: Alle Daten werden als übergeben und empfangen JSON-Pakete Was ist JSON? Ein LaienüberblickUnabhängig davon, ob Sie Webentwickler werden möchten oder nicht, ist es eine gute Idee, zumindest zu wissen, was JSON ist, warum es wichtig ist und warum es im gesamten Web verwendet wird. Weiterlesen .
Um dies in Aktion zu sehen, müssen Sie die IP-Adresse Ihrer Hue-Bridge kennen. Es gibt einige Möglichkeiten, dies zu tun:
- Sehen Sie sich die DHCP-Adresszuweisungstabelle in der Administrationsoberfläche Ihres Routers an
- Führen Sie ein Netzwerkzuordnungsprogramm wie aus IP-Scanner-Startseite
- Probieren Sie die Philips UPnP-Broker-Tool
- Ping "philips-hue.home"
Wenn Sie fertig sind, geben Sie es mit in die Adressleiste Ihres Browsers ein debug / clip.html an die URL angehängt. In meinem Fall war dies:
http://192.168.1.216/debug/clip.html
Dies ist ein Debugging-Tool, mit dem Sie die JSON-Pakete über eine einfache Weboberfläche senden und empfangen können. Der erste Schritt besteht darin, das Entwicklerprofil auf der Hue Bridge selbst zu aktivieren, das aus Sicherheitsgründen standardmäßig deaktiviert ist. Fügen Sie Folgendes in das Feld KÖRPER ein und belassen Sie die URL als /api/und senden Sie eine POST-Anfrage, indem Sie auf klicken Post-Button:
{"devicetype": "test user", "username": "newdeveloper"}
Wenn Sie dies zum ersten Mal tun, wird irgendwo in der Antwort eine "Link-Taste nicht gedrückt" angezeigt. Dies ist eine Sicherheitsfunktion, für die jede neue Anwendung, die Sie verwenden, physisch autorisiert sein muss. Suchen Sie Ihre Bridge, drücken Sie die Taste und senden Sie dieselbe Anfrage erneut innerhalb von 30 Sekunden. Dieses Mal erhalten Sie eine andere Antwort und der Benutzer wird autorisiert. Wenn Sie einen anderen Benutzernamen verwenden möchten, lesen Sie die API-Dokumente zu Benutzer erstellen. Fürs Erste wird dies ausreichen.
Sobald Ihr Benutzer eingerichtet ist, wird die Basis-URL, mit der Sie interagieren sollten, zu /api/newdeveloper/. Sie können eine GET-Anfrage senden, um alles zu erfahren, was Ihre Bridge derzeit über verbundene Lichter, Alarme, Szenen und ein kurzes Protokoll der verwendeten Apps weiß. Hier finden Sie ein Beispiel einiger Statusinformationen, die für eine einzelne Glühbirne enthalten sind.
"state": {"on": true, "bri": 254, "hue": 14910, "sat": 144, "effect": "none", "xy": [0.4596, 0.4105], "ct": 369, "alert": "none", "colormode": "ct", "erreichbar": false}, "type": "Erweitertes Farblicht", "name": "Schlafzimmer 1", "modelid": "LCT001",
Notiere dass der "Ein": wahr Der Status zeigt Ihnen nicht an, ob die Glühbirne eingeschaltet ist oder nicht. nur das nach den Bridge-Einstellungen, es sollte auf sein. "Erreichbar": falsch kann sowohl eine zu weit entfernte Glühbirne anzeigen als auch einfach am Netzschalter ausgeschaltet werden.
Ein letztes Beispiel, bevor wir dies in das Arduino integrieren: Stellen Sie sicher, dass eines Ihrer Lichter sichtbar und eingeschaltet ist und dass Sie wissen, um welche Nummer es sich handelt. Ändern Sie die URL in /api/newdevelopers/lights/1/state (Ändern Sie die Nummer in Ihr Licht) und senden Sie eine PUT-Anfrage mit den folgenden Daten:
{"Farbton": 50100, "Sat": 255, "Bri": 255}
Sie sollten sehen, wie Ihr Licht so reagiert:
Was Sie getan haben, ist, einen neuen Zustand in die Glühbirne zu bringen. Sie können auch "Übergangszeit" hinzufügen, eine primitive Animationsmethode, die angibt, wie viele Sekunden die Statusänderung dauern soll.
Die Farbe kann eingestellt werden verschiedene MöglichkeitenLeider gibt es keine einfache Möglichkeit, einen RGB-Wert zu senden. Im obigen Beispiel haben wir gesendet Farbton, saßuration und briGhtness. Versuchen Sie, den Farbtonwert zu ändern und die PUT-Anforderung erneut zu senden.
Arbeiten von Arduino
Es gibt eine vorhandene Hue / Arduino-Bibliothek namens ArduinoHue auf die Philips selbst in der API-Dokumentation verweist, aber das Problem mit dieser Bibliothek ist, dass es kommuniziert über die USB-Verbindung mit Ihrem PC, auf dem auch eine Python-Anwendung ausgeführt werden muss ständig. Eugh. Sie können auch Ihren Computer das ganze Ding an diesem Punkt laufen lassen und das Arduino vollständig ausschneiden.
Stattdessen zeige ich Ihnen, wie Sie den Farbton vom Arduino aus steuern können mit einem Ethernet-Shield. Ihr Arduino muss nicht an einen Computer angeschlossen sein, sodass er überall dort unabhängig arbeiten kann, wo Sie ein Ethernet-Kabel anschließen können. Eigentlich sollte es auch mit einem Wi-Fi-Schild funktionieren, aber ich habe kein Schild zum Spielen.
Wenn Sie weitermachen möchten, ist der vollständige Beispielcode unten eingebettet hier verfügbar. Ich habe es anhand eines Beispiels angepasst von Gilson Oguime. Wenn Sie noch nie mit Ihrem Ethernet-Shield gespielt haben, möchten Sie vielleicht einen kurzen Überblick über das Web-Client-Tutorial - Ich gehe davon aus, dass Sie damit vertraut sind, und werde nicht den Code behandeln, der zum Einrichten einer Netzwerk-IP usw. verwendet wird. Wir haben es Ihnen auch gezeigt So erstellen Sie einen Mini-Webserver mit dem Ethernet-Shield Geben Sie Ihrem Arduino-Projekt einen eigenen Mini-Webserver mit Ethernet-SchutzVor einiger Zeit habe ich Ihnen gezeigt, wie Sie ein Internet-Steuerungssystem für Ihr Arduino einrichten - aber es musste über USB mit einem Computer verbunden bleiben, um die Internetverbindung aufrechtzuerhalten ... Weiterlesen .
Statusänderungen erstellen
Das Erstellen eines neuen Zustands zum Drücken auf die Glühbirnen ist ein einfacher Fall des Erstellens eines neuen String variabel, und alle doppelten Anführungszeichen entkommen. Ich habe eine hinzugefügt zufällig() Funktion dort auch, um eine etwas dynamische Animation zu erstellen. Versuchen Sie, die Farbtonvariable auch für verschiedene Farben zufällig zu machen.
String command = "{" on ": true," hue ": 50100," sat ": 255," bri ": 255," Transitiontime ":" + String (random (15, 25)) + "}";
Senden des Befehls
Um den Befehl tatsächlich zu senden, haben Sie eine Hilfsfunktion namens setHue (), die die Lichtnummer und die Befehlszeichenfolge wie folgt als Argument verwendet:
setHue (1, Befehl);
Alles, was es dann tut, ist, eine Verbindung zur Bridge herzustellen, den Befehl als PUT-Anforderung auszuspucken, zusammen mit all dem anderen Unsinn, den das Erstellen einer HTTP-Anforderung mit sich bringt.
client.print ("PUT / api /"); client.print (hueUsername); client.print ("/ light /"); client.print (lightNum); client.println ("/ state HTTP / 1.1"); client.println ("Keep-Alive"); client.print ("Host:"); client.println (hueHubIP); client.print ("Content-Length:"); client.println (command.length ()); client.println ("Inhaltstyp: text / plain; Zeichensatz = UTF-8 "); client.println (); // leere Zeile vor dem Körper. client.println (Befehl); // Farbtonbefehl.
Bewegungssensor hinzufügen
Zum Schluss habe ich eine einfache verkabelt Bewegungssensor HC-SR501 an digitalen E / A-Pin 2. Wenn eine Bewegung erkannt wird, wird eine Reihe von Zuständen für 2 Lampen auf die Brücke gedrückt, um eine langsame, dynamische Animation zu erstellen. Wenn der Bewegungssensor deaktiviert wird, wird ein einzelner Ausschaltbefehl an beide gesendet. Im Idealfall werden sie in den Zustand zurückversetzt, in dem sie sich befanden, bevor eine Bewegung erkannt wurde, aber die Logik ist nicht so klug - wir werden sie nur ein- und ausschalten.
Einschränkungen
Obwohl zugegebenermaßen nicht optimierter Code, dauert es fast eine Sekunde, bis die Netzwerkschnittstelle des Arduino eine einzelne Befehlsanforderung sendet. Ich habe denselben Befehl von einem Mac mit derselben Ethernet-Verbindung getestet und er war zehn- bis zwanzigmal so schnell (Hier ist das AppleScript falls Sie testen möchten). Folglich ist eine schnelle Animation (ich habe versucht, einen flackernden Kerzeneffekt zu erzeugen) mit einem Arduino einfach nicht möglich. Dies sollte für die meisten Projekte kein Problem sein, nur für Hochgeschwindigkeitslichtanimationen, aber es ist gut, sich der Einschränkung bewusst zu sein.
Es ist auch schwierig, JSON-Antworten, die Sie von der Bridge erhalten, vollständig zu analysieren. Auf dem Arduino ist einfach nicht genügend RAM vorhanden, um alle Rohdaten zu speichern. Aus diesem Grund möchten Sie sich möglicherweise hauptsächlich auf das Senden beschränken.
Hack the Hue
Jetzt, da Sie mit dem Wissen ausgestattet sind, wie Sie Hue völlig unabhängig steuern können, eröffnet sich eine Welt von Hue-Hacks für die Hausautomation. Die eigentliche Frage ist: was wirst du machen
James hat einen BSc in künstlicher Intelligenz und ist CompTIA A + und Network + zertifiziert. Er ist der Hauptentwickler von MakeUseOf und verbringt seine Freizeit mit VR-Paintball und Brettspielen. Er baut seit seiner Kindheit PCs.