Innholdsfortegnelse:

IoT -skoleprosjekt Philips Hue: 19 trinn
IoT -skoleprosjekt Philips Hue: 19 trinn

Video: IoT -skoleprosjekt Philips Hue: 19 trinn

Video: IoT -skoleprosjekt Philips Hue: 19 trinn
Video: Denmark official faints during Covid-19 conference 2024, November
Anonim
IoT -skoleprosjekt Philips Hue
IoT -skoleprosjekt Philips Hue

Dette er en manual jeg måtte skrive for skolen. Det er ikke komplett, og jeg er ikke sikker på om du kan bruke det. Min kunnskap om API -er er et minimum. Vi ønsket å lage et interaktivt speil med lys på baksiden som reagerte på været, lys utenfra osv.

Jeg så på hvordan jeg kunne programmere en Philips Hue -lampe med en Arduino. I dette forklarer jeg alle trinnene mine og hvor langt jeg har kommet. Jeg har ikke lyktes med å programmere Hue med Arduino, men jeg synes det er en god start.

Jeg har trengt dette: en Arduino en hue lampe en Philips Hue utviklerkonto

Kilder: https://www.developers.meethue.com/documentation/g…https://github.com/bsalinas/ArduinoHuehttps://arduino-esp8266.readthedocs.io/en/latest/e…https:// www.makeuseof.com/tag/control-philips-hue-…

Trinn 1: Kom i gang

Før du får tilgang til API -dokumentasjonen, må du registrere deg som utvikler. Det er gratis, men du må godta vilkårene. Du kan lage en her>

Trinn 2: Hue App

Last ned den offisielle Philips Hue -appen. Koble telefonen til nettverket du vil at Hue -broen er på.

Trinn 3: Koble til broen

Koble broen din til nettverket ditt og fungerer som det skal. Test at smarttelefonappen kan kontrollere lysene på det samme nettverket. Den må være på samme Wi-Fi-nettverk.

Trinn 4: IP -adresse

Deretter må du finne IP -adressen til broen på nettverket ditt. Trykk på lenken for å koble til broen i appen og prøv å kontrollere lysene.

Trinn 5:

Hvis alt fungerer, går du til innstillingsmenyen i appen. Gå til "Min bro", gå til "Nettverksinnstillinger". Slå av DHCP -bryteren og du ser IP -adressen til broen. Legg merke til IP -adressen, og slå deretter på DHCP igjen.

Trinn 6: Debug din nyanse

Feilsøk din nyanse
Feilsøk din nyanse

Når du skrev det ned må du feilsøke nyansen din. Du trenger IP-adressen for dette trinnet. Du må besøke det neste stedet.

/debug/clip.html

Grensesnittet vil se slik ut på bildet. Dette er grunnlaget for all webtrafikk og for hue RESTful -grensesnittet.

Jeg fikk denne informasjonen om det avslappende grensesnittet på Philips Hue -nettstedet.

URL: dette er faktisk den lokale adressen til en bestemt ressurs (ting) inne i fargesystemet. Det kan være lys, en gruppe lys eller mange flere ting. Dette er objektet du vil samhandle med i denne kommandoen.

En kropp: dette er delen av meldingen som beskriver hva du vil endre og hvordan. Her angir du, i JSON -format, ressursnavnet og verdien du vil endre/legge til.

En metode: her har du et valg mellom de 4 HTTP -metodene fargetonen kan bruke.

GET: dette er kommandoen for å hente all informasjon om den adresserte ressursen

PUT: dette er kommandoen for å endre en adressert ressurs

POST: dette er kommandoen for å opprette en ny ressurs inne i den adresserte ressursen

SLETT: dette er kommandoen for å slette den adresserte ressursen Svar: I dette området ser du svaret på kommandoen din. Også i JSON -format.

Trinn 7: La oss komme i gang

La oss komme i gang
La oss komme i gang

Nå trenger vi et tilfeldig generert brukernavn som broen lager for deg. Du får en ved å fylle denne.

Legg inn nettadressen:

/api/

Sett i KROPPEN:

og trykk på GET

Denne kommandoen sier i utgangspunktet "vennligst opprett en ny ressurs inne /api" (der brukernavnene sitter) med følgende egenskaper. Først får du en feil, og det er fordi det er sikkerhetstrinnet til Philips Hue. Ved å trykke på knappen beviser de at du har fysisk tilgang til broen.

Trinn 8:

Bilde
Bilde

Trykk nå på knappen på broen og klikk på POST igjen.

Nå får du et brukernavn som broen laget for deg.

Trinn 9: La oss gjøre noe med lysene

La oss gjøre noe med lysene
La oss gjøre noe med lysene

Kopier brukernavnet ditt og sett det på følgende linje.

Legg dette inn i nettadressen din

/api//lights

Trykk på GET

Du bør få et JSON -svar med alle lampene i systemet og navnene deres.

Trinn 10:

Bilde
Bilde

Jeg lånte noen Hue Lights fra skolen, den jeg bruker er den med ID 3. Jeg vil ha spesifikk informasjon om dette lyset.

Sett dette ved siden av nettadressen du allerede hadde:

/api//lights/3

Trykk på GET

Nå får du all informasjon om Led 3 (hvis du har et annet nummer som 1, vil du se informasjon om det).

Trinn 11: La oss kontrollere lyset

La oss kontrollere lyset
La oss kontrollere lyset

Du ser i "tilstand" at lysdioden min er "på". Vi ønsker å kontrollere lyset i "tilstand".

Sett dette ved siden av nettadressen du allerede hadde: https:/// api// lights/ 3/ state

Sett neste linje i KROPPEN

Trykk på PUT

Nå vil lyset ditt slukke! Endre verdien i kroppen til sann, og lyset tennes igjen.

Trinn 12:

Nå fungerer alt. Jeg vil gjøre dette med min Arduino. Jeg så på lenken Philips Hue ga for å gjøre lysfargen endret. Men du trenger Python for dette, jeg har aldri jobbet med Python, så jeg lette etter noe annet.

Hvis du liker å se på denne koden, har jeg Github -lenken her:

github.com/bsalinas/ArduinoHue

Trinn 13:

Jeg så hvordan jeg kunne få informasjon fra dette utviklernettstedet til min arduino. Mesteparten av tiden forsto jeg ikke språket. Men jeg fant noen kode på et nettsted fra James Bruce.

Dette er lenken til nettstedet.

www.makeuseof.com/tag/control-philips-hue-lights-arduino-and-motion-sensor/

Trinn 14:

Først så jeg at han brukte en Ethernet -kabel. Jeg hadde bare en Hue lyspære og Bridge en Arduino, og liten forståelse av kode. Det tok litt tid før jeg forsto koden hans, men jeg forstår det fortsatt ikke.

Jeg la først til dette biblioteket for internett.

#inkludere

Dette er for nettverket ditt (det må være det samme som Hue -lyspæren)

const char* ssid = ""; // legg her WiFi -nettverket ditt SSIDconst char* password = ""; // legg her ditt WiFi -nettverkspassord

Dette er ID -en til din Bridge og brukernavnet din bridge ga deg. (Jeg vet ikke hvor 80 står for, men da jeg gjorde noen undersøkelser så jeg at den ble brukt til nettverk).

// Hue -konstanter const char hueHubIP = ""; // Hue hub IP const char hueUsername = ""; // Hue brukernavn const int hueHubPort = 80;

// Hue -variabler bool hueOn; // av/på int hueBri; // lysstyrkeverdi long hueHue; // nyanseverdi String hueCmd; // Hue -kommando

usignert langbuffer = 0; // buffer for mottatt datalagring usignert lang addr;

Trinn 15:

For tomromsoppsettet gjorde jeg mest for internettforbindelsen. I denne koden ser Arduino om han kan koble seg til nettverket.

ugyldig oppsett () {Serial.begin (9600);

Serial.println ();

Serial.printf ("Koble til %s", ssid);

WiFi.begin (ssid, passord);

mens (WiFi.status ()! = WL_CONNECTED) {

forsinkelse (500);

Serial.print ("."); }

Serial.println ("tilkoblet"); }

Trinn 16:

I sløyfen til James så jeg at han hadde en If and else -uttalelse. Men det var for ethernet -kabelen, så jeg prøvde å utelate dette. Jeg prøvde også noen ganger å justere det, men jeg visste ikke enda med mye data. Noen ting i koden forsto jeg, i strengen er dataene som blir gitt til Hue -lyset.

void loop () {

// En serie på fire prøvekommandoer, som fargen falmer to lys mellom rødt og rosa. Les om Hue API // -dokumentasjonen for mer informasjon om de eksakte kommandoene som skal brukes, men vær oppmerksom på at anførselstegn må slippe unna.

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

command = "{" on / ": true, \" hue / ": 65280, \" sat / ": 255, \" bri / ": 255, \" overgangstid / ":"+streng (tilfeldig (15, 25))+"}"; setHue (2, kommando);

command = "{" hue / ": 65280, \" sat / ": 255, \" bri / ": 255, \" overgangstid / ":"+streng (tilfeldig (15, 25))+"}"; setHue (1, kommando);

command = "{" hue / ": 50100, \" sat / ": 255, \" bri / ": 255, \" overgangstid / ":"+streng (tilfeldig (15, 25))+"}"; setHue (2, kommando);

}

Trinn 17:

Den neste koden var en boolsk, men i Arduino må du skrive Bool. Først fikk jeg mange feil på grunn av ordet klient. Så jeg så det opp og så at noen kode brukte linjen "WifiClient -klient;". Så jeg brukte det til og det fungerte.

I if -setningen ser du ofte client.print. Hvis du ser på koden, vil du se at nettadressen du skrev inn tidligere er delt i stykker. Skriv inn din egen kode. Jeg måtte velge mitt tredje LED -lys.

/ * setHue () er vår hovedkommandofunksjon, som må sendes til et lett tall og en * riktig formatert kommandostreng i JSON -format (i utgangspunktet en Javascript -stil med variabler * og verdier. Den sender deretter en enkel HTTP PUT -forespørsel til broen på IP -adressen som ble angitt i begynnelsen. */

bool setHue (int lightNum, String -kommando) {

WiFiClient -klient;

if (client.connect (hueHubIP, hueHubPort)) {

mens (client.connected ()) {

client.print ("PUT /api /"); client.print (hueUsername); client.print ("/lights/"); client.print (lightNum); // hueLight zero based, legg til 1 client.println ("3/state"); // her endret jeg fargenavnet og stateclient.print ("Host:"); client.println (hueHubIP); client.print ("Content-Length:"); client.println (command.length ()); client.println ("Innholdstype: tekst/vanlig; charset = UTF-8"); client.println (); // tom linje før body client.println (kommando); // Hue -kommando

} client.stop (); returner sant; // kommando utført}

ellers returner usann; // kommando mislyktes}

Trinn 18:

På den andre boolske, gjorde jeg det samme med å endre noen ord. Jeg lastet den opp for å se om den fungerte.

/* En hjelperfunksjon i tilfelle logikken din avhenger av lysets nåværende tilstand. * Dette angir en rekke globale variabler som du kan sjekke for å finne ut om et lys er på for øyeblikket eller ikke * og fargetonen osv. Ikke nødvendig bare for å sende ut kommandoer */

bool getHue (int lightNum) {

WiFiClient -klient;

if (client.connect (hueHubIP, hueHubPort)) {

client.print ("GET /api /"); client.print (hueUsername); client.print ("/lights/"); client.print (lightNum); client.println ("3/state"); client.print ("Host:"); client.println (hueHubIP); client.println ("Innholdstype: applikasjon/json"); client.println ("hold deg i live"); client.println ();

mens (client.connected ()) {if (client.available ()) {client.findUntil ("\" on / ":", "\ 0"); hueOn = (client.readStringUntil (',') == "true"); // hvis lyset er på, sett variabelen til true client.findUntil ("\" bri / ":", "\ 0"); hueBri = client.readStringUntil (',').toInt (); // sett variabel til lysstyrkeverdi client.findUntil ("\" hue / ":", "\ 0"); hueHue = client.readStringUntil (',').toInt (); // sett variabel til fargetoneverdi; // fanger ikke andre lysattributter ennå}} client.stop (); returner sant; // fanget på, bri, hue} else return false; // feil ved lesing på, bri, hue}

Trinn 19:

Bilde
Bilde

Jeg tror jeg kunne opprette en forbindelse med Philips Hue. Jeg mottar informasjon, men den må fortsatt brukes.

Dessverre går dette utover det jeg kan kode. Hvis du vet svaret, eller hvis det er virkelige feil som må rettes, vil jeg gjerne høre det.:-)

Anbefalt: