Reklame

Philips Hue-lyssortimentet er bestemt ikke billigt (der er nogle alternativer Philips Hue-alternativer, der faktisk er det værdPhilips Hue-systemet fører opladningen, når det kommer til smart belysning, men der er nogle værdige alternativer. Vi har valgt tre, der alle tilbyder det samme grundlæggende funktioner og hackbarhed. Læs mere ), men en ting, som jeg virkelig sætter pris på, er den veldokumenterede API Hvad er API'er, og hvordan ændrer åbne API'er InternettetHar du nogensinde undret dig over, hvordan programmer på din computer og de websteder, du besøger, "taler" med hinanden? Læs mere til at lave dine egne Hue-apps. I dag viser jeg dig, hvordan du styrer dine Hue-lys fra en Arduino - og derefter tilføjer en simpel bevægelsessensor.

Hvorfor laver vi dette? Fordi hjemmeautomatiseringssystemer kan være ret stive og dyre. Ved at lære at styre nuance fra Arduino åbner du dørene til en række specialfremstillede hjemmeautomatiseringsprojekter, der simpelthen ikke kan slås af hyldekomponenter. Hvis det ikke bare er din ting at hacking sammen, kan du prøve disse

8 fantastiske Hue-apps De 7 bedste Philips Hue-apps til Android og iPhoneLeder du efter de bedste Philips Hue-apps, du kan bruge til dine smarte lys? Her er flere fantastiske apps til iPhone og Android. Læs mere i stedet.

Nuance-systemet

Lad os blive tekniske lidt, så du kender de underliggende systemer, du arbejder med. Nuance lys skaber en mesh-netværk Mesh Networks: Kommunikationens fremtidMesh-netværk er næsten sårbare. I et maskenetværk er der ingen chokepunkter, gennem hvilke al trafik passerer. I stedet overføres information fra den ene enhed til den næste, indtil den når sin destination. Læs mere , ved hjælp af en kort rækkevidde trådløs protokol kaldet ZigBee - specifikt er de det ZigBee Light Link certificeret, hvilket betyder, at andre ZLL-produkter også skal fungere ved siden af ​​Hue (i teorien).

Selv om det er teknisk kort rækkevidde, betyder netværksfunktionen i ZigBee, at hver nye pære udvider netværket og videresender beskeder til andre pærer. Det betyder, at hvis du har problemer med at kontrollere et lys på den anden side af huset, kan du prøve at placere et andet lys ind imellem.

Zigbee er en fantastisk protokol, men den er ganske anderledes end Wi-Fi eller et kablet computernetværk, så vi har brug for Philips Hue Bridge for at forbinde de to sammen. Hue bridge kører en modificeret open source linux firmware, der sender en grundlæggende webserver.

Dette er, hvad du vil se, hvis du bare indtaster IP-adressen på din Hue-bro i din browser. Du kan dog ikke gøre meget herfra.
Dette er, hvad du kan se, hvis du bare indtaster IP-adressen på din Hue bridge i din browser. Du kan dog ikke gøre meget herfra.

Det er ved at interagere med denne lokale webserver, at du kan finde ud af lysets aktuelle status og kontrollere dem.

Det er et smukt simpelt system og moden til DIY-projekter. Kudos til Philips for at gøre denne ting så hackelig.

Til at begynde med

Før du får adgang til API-dokumentationen, skal du gøre det registrer dig som udvikler. Det er gratis, men du skal acceptere betingelserne og betingelserne. Gør dette nu.

Enhver, der er bekendt med standardwebtjenester eller Javascript, skal kunne arbejde med nuance: alle data videregives og modtages som JSON-pakker Hvad er JSON? En lægmandsoversigtUanset om du planlægger at være en webudvikler eller ej, er det en god ide at i det mindste vide, hvad der er JSON, hvorfor det er vigtigt, og hvorfor det bruges rundt omkring på nettet. Læs mere .

For at se på dette i handling skal du kende IP-adressen på din Hue-bro. Der er nogle få måder at gøre dette på:

  • Se på DHCP-adressetildelingstabellen i din routers administratorgrænseflade
  • Kør et netværkskortprogram som IP Scanner Hjem
  • Prøv Philips UPnP mæglerværktøj
  • Ping “philips-hue.home”
netværkskortlægning for at finde bro

Når du er færdig, skal du gå videre og indtaste den i din browseradresselinje med debug / clip.html føjet til URL'en. I mit tilfælde var dette:

http://192.168.1.216/debug/clip.html

Dette er et fejlfindingsværktøj, så du kan sende og modtage JSON-pakkerne gennem en simpel webgrænseflade. Det første trin er at aktivere udviklerprofilen på selve Hue Bridge - som som standard er deaktiveret af sikkerhedsmæssige årsager. Indsæt følgende i feltet Krop, lad URL'en være som /api/, og send en POST-anmodning ved at klikke på postknap:

{"devicetype": "testbruger", "username": "newdeveloper"}

Første gang du gør dette, ser du en "linkknap ikke trykket på" et sted i svaret. Dette er en sikkerhedsfunktion, der kræver, at alle nye applikationer, du bruger, er fysisk godkendt. Gå og find din Bridge, tryk på knappen, og send den samme anmodning igen inden for 30 sekunder. Denne gang får du et andet svar, og brugeren bliver autoriseret. Hvis du gerne vil bruge et andet brugernavn, skal du læse API-dokumenterne om oprette brugere. For tiden er dette tilstrækkeligt.

Når din bruger er konfigureret, bliver den grundlæggende URL, du skal interagere med /api/newdeveloper/. Du kan sende en GET-anmodning for at finde ud af alt, hvad din Bridge i øjeblikket ved om tilsluttede lys, alarmer, scener og en kort log over apps, der er blevet brugt. Her er en prøve af nogle af de statusoplysninger, der findes i en enkelt pære.


"tilstand": {"på": sand, "bri": 254, "nuance": 14910, "sad": 144, "effekt": "ingen", "xy": [0.4596, 0.4105], "ct": 369, "alarm": "none", "colormode": "ct", "nås": false}, "type": "Udvidet farvelys", "name": "Soveværelse 1", "modelid": "LCT001", 

Bemærk, at ”On”: true tilstand viser dig faktisk ikke, om pæren er tændt eller ej; kun det i henhold til Bridge-indstillingerne, det skulle gerne være på. ”Nås”: falsk kan indikere både en pære, der er for langt væk, eller simpelthen slukket ved afbryderen.

Et sidste eksempel, før vi integrerer dette i Arduino: Sørg for, at et af dine lys er synligt og tændt, og at du ved, hvilket nummer det er. Skift URL til /api/newdevelopers/lights/1/state (ændre nummeret til dit lys), og send en PUT-anmodning med følgende data:

{"nuance": 50100, "sad": 255, "bri": 255}

Du skal se dit lys reagere sådan:

nuance demo

Hvad du har gjort er at skubbe en ny tilstand til pæren. Du kan også tilføje "overgangstid", som er en primitiv animationsmetode, der angiver, hvor mange sekunder du vil have, at tilstandsændringen skal tage.

Farven kan indstilles i en række forskellige måder, men desværre er der ingen enkel måde at sende en RGB-værdi på. I eksemplet ovenfor sendte vi nuance, saturation, og brightness. Prøv at ændre nuanceværdien og sende PUT-anmodningen igen.

Arbejder fra Arduino

Der er et eksisterende Hue / Arduino-bibliotek kaldet ArduinoHue som Philips selv linker til i API-dokumentationen, men problemet med dette bibliotek er, at det kommunikerer via USB-forbindelsen til din pc, som også skal køre et Python-program konstant. eugh. Du kan lige så godt lade din computer køre det hele på det tidspunkt og skære Arduino helt ud.

I stedet vil jeg vise dig, hvordan du styrer nuance fra Arduino ved hjælp af et Ethernet-skjold. Din Arduino behøver ikke være tilsluttet en computer, så den kan fungere uafhængigt overalt, hvor du kan placere et Ethernet-kabel. Faktisk skulle det også fungere med et Wi-Fi-skjold, men jeg har ikke en at lege med.

ehternet-skjold-box

Hvis du gerne vil springe videre, er den fulde prøvekode indlejret nedenfor, eller tilgængelig her. Jeg har tilpasset det fra et eksempel, der blev sendt af Gilson Oguime. Hvis du aldrig har spillet med dit Ethernet-skjold før, vil du måske have et hurtigt løb gennem Webklientvejledning - Jeg antager et vist niveau af fortrolighed med dette og dækker ikke koden, der bruges til at etablere et netværks-IP osv. Vi har også vist dig hvordan man opretter en mini-webserver med Ethernet-skjoldet Giv dit Arduino-projekt sit eget mini-webserver med et Ethernet-skjoldFor et stykke tid siden viste jeg dig, hvordan du opsætter et internetkontrolsystem til din Arduino - men det måtte forblive tilsluttet en computer via USB for at opretholde internetforbindelsen ... Læs mere .

Oprettelse af ændringer i staten

Oprettelse af en ny tilstand for at skubbe til pærerne er en simpel sag om at oprette en ny Snor variabel, og undslipper alle dobbeltcitater. Jeg har tilføjet en tilfældig() funktion derinde også for at skabe en noget dynamisk animation. Prøv at gøre farvetonevariablen også tilfældig for forskellige farver.

String-kommando = "{\" på ": true, \" nuance \ ": 50100, \" sat \ ": 255, \" bri \ ": 255, \" transittime \ ":" + String (tilfældig (15, 25)) + "}";

Afsendelse af kommandoen

For faktisk at sende kommandoen har du en hjælperfunktion kaldet setHue (), der tager lysnummeret og kommandostrengen som et argument, som sådan:

setHue (1, kommando);

Alt, hvad det gør, er, at det forbindes til broen, spytter kommandoen ud som en PUT-anmodning sammen med al den anden vrøvl, som oprettelse af en HTTP-anmodning involverer.


client.print ("PUT / api /"); client.print (hueUsnavn); client.print ( "/ lys /"); client.print (lightNum); client.println ("/ tilstand HTTP / 1.1"); client.println ( "keep-alive"); client.print ("Host:"); client.println (hueHubIP); client.print ("Indholdslængde:"); client.println (command.length ()); client.println ("Indholdstype: tekst / almindelig; charset = UTF-8" ); client.println (); // blank linje før kroppen. client.println (kommando); // Nuance-kommando. 

Tilføjelse af en bevægelsessensor

Endelig tilsluttede jeg en simpel HC-SR501 bevægelsessensor til digital I / O-pin 2. Når der registreres bevægelse, skubbes en række tilstande til broen for 2 pærer for at skabe en langsom, dynamisk animation. Når bevægelsesføleren deaktiveres, sendes en enkelt off-kommando til begge. Ideelt set ville de blive vendt tilbage til den tilstand, de var i, før bevægelse blev opdaget, men logikken er ikke så smart - vi vil bare tænde og slukke dem.

Begrænsninger

Selvom det ganske vist er unoptimeret kode, tager det næsten et sekund for Arduinos netværksgrænseflade at sende en enkelt kommandoanmodning. Jeg testede den samme kommando fra en Mac ved hjælp af den samme Ethernet-forbindelse, og den var i stand til ti til tyve gange den hastighed (her er AppleScript i tilfælde af at du gerne vil teste). Derfor er enhver form for hurtig animation (jeg forsøgte at skabe en flimrende lyseffekt) bare ikke mulig fra en Arduino. Dette bør ikke være et problem for de fleste projekter, bare for animationer med høj hastighed, men det er godt at være opmærksom på begrænsningen.

Det er også svært at fuldstændigt analysere ethvert JSON-svar, du kommer tilbage fra broen; der er bare ikke nok RAM på Arduino til at gemme alle rå data. Af denne grund kan det være en god ide at for det meste begrænse sig til at sende.

Hack the Hue

Nu hvor du er bevæbnet med viden om, hvordan du styrer Hue helt uafhængigt, åbner det en verden af ​​Hue-hjemmeautomatiseringshacks. Det egentlige spørgsmål er: hvad vil du lave?

James har en BSc i kunstig intelligens og er CompTIA A + og Network + certificeret. Han er hovedudvikler af MakeUseOf og bruger sin fritid på at spille VR paintball og brætspil. Han har bygget pc'er siden han var barn.