Annonse

Philips Hue-lysutvalget er absolutt ikke billig (det er noen alternativer Philips Hue-alternativer som faktisk er verdt detPhilips Hue-systemet leder ladingen når det gjelder smart belysning, men det er noen verdige alternativer. Vi har valgt tre som alle tilbyr samme grunnleggende funksjonssett og hackbarhet. Les mer ), men en ting som jeg virkelig setter pris på er vel dokumentert API Hva er API-er, og hvordan endrer åpne API-er InternettHar du noen gang lurt på hvordan programmer på datamaskinen din og nettstedene du besøker "snakker" med hverandre? Les mer for å lage dine egne Hue-apper. I dag skal jeg vise deg hvordan du styrer Hue-lysene fra en Arduino - og deretter legger til en enkel bevegelsessensor.

Hvorfor gjør vi dette? Fordi hjemmeautomatiseringssystemer kan være ganske stive og dyre. Ved å lære hvordan du styrer fargetone fra Arduino, åpner du dørene for en rekke spesiallagde hjemmeautomatiseringsprosjekter som rett og slett ikke kan slås av hyllekomponenter. Hvis det ikke er noe å hacking med ting, kan du prøve disse

8 fantastiske Hue-apper De 7 beste Philips Hue-appene for Android og iPhoneSer du etter de beste Philips Hue-appene du kan bruke med smarte lysene? Her er flere gode apper for iPhone og Android. Les mer i stedet.

Hue-systemet

La oss bli tekniske for litt, så du kjenner de underliggende systemene du jobber med. Nyanser lys skaper en nettverk Mesh Networks: The Future of CommunicationMesh-nettverk er nesten sårbare. I et nettverk er det ingen choke-punkter som all trafikk passerer gjennom. I stedet overføres informasjon fra den ene enheten til den neste til den når sin destinasjon. Les mer , ved hjelp av en kort rekkevidde trådløs protokoll kalt ZigBee - det er de spesielt ZigBee Light Link sertifisert, noe som betyr at andre ZLL-produkter også skal fungere ved siden av Hue (i teorien).

Selv om det er teknisk kort rekkevidde, betyr nettverksfunksjonen til ZigBee at hver nye pære utvider nettverket og videresender meldinger til andre pærer. Dette betyr at hvis du har problemer med å kontrollere et lys på den andre siden av huset, kan du prøve å plassere et annet lys mellom de to.

Zigbee er en flott protokoll, men den er ganske annerledes enn Wi-Fi eller et kablet datanettverk, så vi trenger Philips Hue Bridge for å slå sammen de to. Hue-broen kjører en modifisert open source linux firmware, som kringkaster en grunnleggende webserver.

Dette er hva du vil se hvis du bare skriver inn IP-adressen til din Hue bridge i nettleseren din. Du kan ikke gjøre mye herfra.
Dette er hva du vil se hvis du bare skriver inn IP-adressen til din Hue bridge i nettleseren din. Du kan ikke gjøre mye herfra.

Det er ved å samhandle med denne lokale webserveren at du kan finne ut statusen til lysene og kontrollere dem.

Det er et vakkert enkelt system, og moden for DIY-prosjekter. Kudos til Philips for å gjøre denne tingen så hackbar.

Starter med

Før du får tilgang til API-dokumentasjonen, må du gjøre det registrere deg som utvikler. Det er gratis, men du må godta vilkårene og betingelsene. Gjør dette nå.

Alle som er kjent med standard webtjenester eller Javascript skal kunne jobbe med fargetone: all data sendes og mottas som JSON-pakker Hva er JSON? En lekmanns oversiktEnten du planlegger å være en webutvikler eller ikke, er det en god idé å i det minste vite hva som er JSON, hvorfor det er viktig og hvorfor det brukes rundt hele nettet. Les mer .

For å se på dette i handling, må du vite IP-adressen til Hue-broen din. Det er noen måter å gjøre dette på:

  • Se på DHCP-adressetildelingstabellen i ruterenes administratorgrensesnitt
  • Kjør et nettverkskartleggingsprogram som IP-skanner Hjem
  • Prøv Philips UPnP meglerverktøy
  • Ping “philips-hue.home”
nettverkskartlegging for å finne bridge

Når du er ferdig, fortsett og skriv den inn i nettleserens adressefelt med debug / clip.html lagt til URL-en. I mitt tilfelle var dette:

http://192.168.1.216/debug/clip.html

Dette er et feilsøkingsverktøy som lar deg sende og motta JSON-pakker gjennom et enkelt webgrensesnitt. Det første trinnet er å aktivere utviklerprofilen på selve Hue Bridge - som er deaktivert som standard av sikkerhetsmessige årsaker. Lim inn følgende i BODY-feltet, la URL være /api/, og send en POST-forespørsel ved å klikke på innleggsknapp:

{"devicetype": "testbruker", "brukernavn": "nyutvikler"}

Første gang du gjør dette, vil du se en "lenkknapp ikke trykket på" et sted i svaret. Dette er en sikkerhetsfunksjon som krever at hver nye applikasjon du bruker skal være fysisk autorisert. Gå og finn Bridge, trykk på knappen og send den samme forespørselen igjen innen 30 sekunder. Denne gangen får du et annet svar, og brukeren blir autorisert. Hvis du vil bruke et annet brukernavn, kan du lese API-dokumentene om skape brukere. Foreløpig vil dette være nok.

Når brukeren er konfigurert, blir basis-URL-en du skal samhandle med /api/newdeveloper/. Du kan sende en GET-forespørsel for å finne ut alt hva Bridge for øyeblikket vet om tilkoblede lys, alarmer, scener og en kort logg over apper som er brukt. Her er et eksempel på noen av statusinformasjonen for en enkelt pære.


"tilstand": {"på": sant, "bri": 254, "fargetone": 14910, "lørdag": 144, "effekt": "ingen", "xy": [0.4596, 0.4105], "ct": 369, "alert": "none", "colormode": "ct", "nås": falsk}, "type": "Utvidet fargelys", "name": "Soverom 1", "modelid": "LCT001", 

Merk at “På”: true tilstand viser deg faktisk ikke om pæren er på eller ikke; bare det i henhold til Bridge-innstillingene, det bør være på. “Tilgjengelig”: false kan indikere både en pære som er for langt unna, eller ganske enkelt slått av ved strømbryteren.

Et siste eksempel før vi integrerer dette i Arduino: sørg for at et av lysene dine er synlige og på, og at du vet hvilket nummer det er. Endre URL til /api/newdevelopers/lights/1/state (endre nummeret til ditt lys), og send en PUT-forespørsel med følgende data:

{"fargetone": 50100, "lør": 255, "bri": 255}

Du bør se lyset ditt reagere slik:

fargete demo

Det du har gjort er å skyve en ny tilstand til pæren. Du kan også legge til "overgangstid", som er en primitiv animasjonsmetode som indikerer hvor mange sekunder du ønsker at endringen av staten skal ta.

Fargen kan settes inn en rekke forskjellige måter, men dessverre er det ingen enkel måte å sende en RGB-verdi på. I eksemplet over sendte vi hue, Lørurasjon, og brightness. Forsøk å endre nyanseverdien og sende PUT-forespørselen på nytt.

Jobber fra Arduino

Det er et eksisterende Hue / Arduino-bibliotek som heter ArduinoHue som Philips selv lenker til i API-dokumentasjonen, men problemet med dette biblioteket er at det kommuniserer via USB-tilkoblingen til PC-en din, som også må ha et Python-program stadig. eugh. Du kan like gjerne la datamaskinen kjøre hele saken på det tidspunktet, og kutte ut Arduino helt.

I stedet skal jeg vise deg hvordan du styrer fargetone fra Arduino ved hjelp av et Ethernet-skjold. Arduino trenger ikke være koblet til en datamaskin, så den kan fungere uavhengig hvor som helst du kan plassere en Ethernet-kabel. Det skal faktisk også fungere med et Wi-Fi-skjold, men jeg har ikke en å leke med.

ehternet speilene-box

Hvis du ønsker å hoppe videre, er hele prøven koden innebygd nedenfor, eller tilgjengelig her. Jeg har tilpasset det fra et eksempel av Gilson Oguime. Hvis du aldri har spilt med Ethernet-skjoldet ditt før, kan det være lurt å ta en rask gjennomgang av opplæring for nettklient - Jeg vil anta et visst nivå av fortrolighet med dette, og vil ikke dekke koden som brukes til å etablere en nettverks-IP osv. Vi har også vist deg hvordan lage en mini-webserver med Ethernet-skjoldet Gi ditt Arduino-prosjekt sin egen mini-webserver, med et Ethernet-skjoldFor en stund siden viste jeg deg hvordan du konfigurerer et internettkontrollsystem for Arduino - men det måtte holde kontakten til en datamaskin via USB for å opprettholde internettforbindelsen ... Les mer .

Opprette tilstandsendringer

Å opprette en ny tilstand for å presse til pærene er en enkel sak å opprette en ny string variabel, og unnslipper alle dobbelt sitatene. Jeg har lagt til en tilfeldig() funksjon der inne også for å lage en noe dynamisk animasjon. Prøv å gjøre fargestoffvariabelen tilfeldig også for forskjellige farger.

Stringkommando = "{\" på ": true, \" hue \ ": 50100, \" sat \ ": 255, \" bri \ ": 255, \" overgangstid \ ":" + Streng (tilfeldig (15, 25)) + "}";

Sende kommandoen

For å sende kommandoen faktisk har du en hjelperfunksjon kalt setHue () som tar lysnummeret og kommandostrengen som et argument, slik:

setHue (1, kommando);

Alt det gjør da er at den kobles til broen, spytter ut kommandoen som en PUT-forespørsel, sammen med alt annet tull som det å lage en HTTP-forespørsel innebærer.


client.print ("PUT / api /"); client.print (hueUsername); client.print ( "/ lys /"); client.print (lightNum); client.println ("/ tilstand HTTP / 1.1"); client.println ( "keep-alive"); client.print ("Vert:"); client.println (hueHubIP); client.print ("Innholdslengde:"); client.println (command.length ()); client.println ("Innholdstype: tekst / vanlig; charset = UTF-8" ); client.println (); // blank linje før kroppen. client.println (kommando); // Hue-kommando. 

Legge til en bevegelsessensor

Til slutt kablet jeg en enkel HC-SR501 bevegelsessensor til digital I / O-pinne 2. Når bevegelse blir oppdaget, skyves en serie tilstander til broen for 2 pærer for å lage en langsom, dynamisk animasjon. Når bevegelsessensoren deaktiveres, sendes en enkelt av-kommando til begge. Helst ville de bli tilbakeført til staten de var i før bevegelse ble oppdaget, men logikken er ikke så smart - vi vil bare slå dem av og på.

begrensninger

Selv om det riktignok er unoptimert kode, tar det nesten et sekund for nettverksgrensesnittet til Arduino å sende en enkelt kommandoforespørsel. Jeg testet den samme kommandoen fra en Mac ved å bruke den samme Ethernet-tilkoblingen, og den var i stand til ti til tjue ganger så hastighet (her er AppleScript i tilfelle du vil teste). Følgelig er ikke noen form for rask animasjon (jeg forsøkte å skape en flimrende lyseffekt) bare mulig fra en Arduino. Dette skal ikke være et problem for de fleste prosjekter, bare for animasjoner med høy hastighet, men det er godt å være klar over begrensningen.

Det er også vanskelig å analysere JSON-svarene du kommer tilbake fra broen fullt ut. det er ikke nok RAM på Arduino til å lagre all rå data. Av denne grunn kan det være lurt å begrense deg til sending.

Hack the Hue

Nå som du er bevæpnet med kunnskapen om hvordan du kan kontrollere Hue helt uavhengig, åpner det for en verden med Hue-hjemmeautomatisering. Det virkelige spørsmålet er: hva vil du lage?

James har en BSc i kunstig intelligens, og er CompTIA A + og Network + sertifisert. Han er hovedutvikler av MakeUseOf, og bruker fritiden sin på å spille VR paintball og brettspill. Han har bygd pc-er siden han var liten.