Indholdsfortegnelse:

IoT -skoleprojekt Philips Hue: 19 trin
IoT -skoleprojekt Philips Hue: 19 trin

Video: IoT -skoleprojekt Philips Hue: 19 trin

Video: IoT -skoleprojekt Philips Hue: 19 trin
Video: 3 Easy Ways to Factory Reset Philips Hue Bulbs without a Bridge (No Dimmer!) 2024, Juli
Anonim
IoT -skoleprojekt Philips Hue
IoT -skoleprojekt Philips Hue

Dette er en manual, jeg skulle skrive til skolen. Det er ikke komplet, og jeg er ikke sikker på, om du overhovedet kan bruge det. Min viden om API'er er det minimale. Vi ville lave et interaktivt spejl med lys på bagsiden, der reagerede på vejret, lys udefra osv.

Jeg kiggede på, hvordan jeg kunne programmere en Philips Hue -lampe med en Arduino. I dette forklarer jeg alle mine trin, og hvor langt jeg er nået. Det er ikke lykkedes mig at programmere Hue med Arduino, men jeg synes, det er en god start.

Jeg har haft brug for dette: en Arduino a hue lampe en bridge Philips Hue udviklerkonto

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-…

Trin 1: Kom godt i gang

Før du kan få adgang til API -dokumentationen, skal du registrere dig som udvikler. Det er gratis, men du skal acceptere vilkårene og betingelserne. Du kan lave en her>

Trin 2: Hue App

Download den officielle Philips Hue -app. Tilslut din telefon til det netværk, du vil have Hue -broen på.

Trin 3: Tilslut broen

Forbind din bro med dit netværk og fungerer korrekt. Test, at smartphone -appen kan styre lysene på det samme netværk. Det skal være på det samme Wi-Fi-netværk.

Trin 4: IP -adresse

Derefter skal du opdage IP -adressen på broen på dit netværk. Tryk på linket for at oprette forbindelse til broen i appen, og prøv at kontrollere lys.

Trin 5:

Hvis det hele fungerer, skal du gå til indstillingsmenuen i appen. Gå derefter til "Min bro", gå til "Netværksindstillinger". Sluk for DHCP -skifteren, og du ser broens IP -adresse. Bemærk IP -adressen, og tænd derefter DHCP igen.

Trin 6: Debug din nuance

Debug din nuance
Debug din nuance

Når du skrev det ned, skal du fejlsøge din nuance. Du har brug for IP-adressen til dette trin. Du skal besøge det næste websted.

/debug/clip.html

Grænsefladen vil se sådan ud på billedet. Dette er grundlaget for al webtrafik og for farvetonen RESTful interface.

Jeg fik disse oplysninger om den afslappende grænseflade på Philips Hue -webstedet.

URL: dette er faktisk den lokale adresse for en bestemt ressource (ting) inde i farvesystemet. Det kan være lys, en gruppe lys eller mange flere ting. Dette er det objekt, du vil interagere inden for denne kommando.

En krop: dette er den del af meddelelsen, der beskriver, hvad du vil ændre, og hvordan. Her indtaster du i JSON -format det ressourcenavn og den værdi, du gerne vil ændre/tilføje.

En metode: her har du mulighed for at vælge mellem de 4 HTTP -metoder, hue -opkaldet kan bruge.

GET: dette er kommandoen til at hente alle oplysninger om den adresserede ressource

PUT: dette er kommandoen til at ændre en adresseret ressource

POST: dette er kommandoen til at oprette en ny ressource inde i den adresserede ressource

SLET: dette er kommandoen for at slette den adresserede ressource Svar: I dette område ser du svaret på din kommando. Også i JSON -format.

Trin 7: Lad os komme i gang

Lad os komme igang
Lad os komme igang

Nu har vi brug for et tilfældigt genereret brugernavn, som broen skaber til dig. Du får en ved at udfylde denne.

Indsæt URL'en:

/api/

Læg KROPPEN i:

og tryk på GET

Denne kommando siger dybest set "opret en ny ressource inde /api" (hvor brugernavne sidder) med følgende egenskaber. Først får du en fejl, og det er fordi det er Philips Hues sikkerhedstrin. Ved at trykke på knappen beviser de, at du har fysisk adgang til broen.

Trin 8:

Billede
Billede

Tryk nu på knappen på broen, og klik på POST igen.

Nu får du et brugernavn, som broen har lavet til dig.

Trin 9: Lad os gøre noget med lysene

Lad os gøre noget med lyset
Lad os gøre noget med lyset

Kopiér dit brugernavn og sæt det i følgende linje.

Indsæt dette i din URL

/api//lights

Tryk på GET

Du bør få et JSON -svar med alle lysene i dit system og deres navne.

Trin 10:

Billede
Billede

Jeg lånte nogle Hue Lights fra skolen, den jeg bruger er den med id 3. Jeg vil have specifikke oplysninger om dette lys.

Sæt dette ud for den URL, du allerede havde:

/api//lights/3

Tryk på GET

Nu får du al information om Led 3 (hvis du har et andet nummer som 1, vil du se oplysninger om det ene).

Trin 11: Lad os kontrollere lyset

Lad os kontrollere lyset
Lad os kontrollere lyset

Du ser i "tilstand", at min LED er "tændt". Vi vil kontrollere lyset i "tilstand".

Sæt dette ved siden af den URL, du allerede havde: https:/// api// lights/ 3/ state

Sæt den næste linje i KROPPEN

Tryk på PUT

Nu slukker dit lys! Skift værdien i kroppen til sand, og lyset tændes igen.

Trin 12:

Nu fungerer alt. Jeg vil gøre dette med min Arduino. Jeg kiggede på linket Philips Hue gav for at ændre lysfarven. Men du har brug for Python til dette, jeg har aldrig arbejdet med Python, så jeg ledte efter noget andet.

Hvis du kan lide at se på denne kode, har jeg Github -linket her:

github.com/bsalinas/ArduinoHue

Trin 13:

Jeg kiggede på, hvordan jeg kunne få oplysninger fra dette udviklerwebsted til min arduino. For det meste forstod jeg ikke sproget. Men jeg fandt noget kode på et websted fra James Bruce.

Dette er linket til webstedet.

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

Trin 14:

Først så jeg, at han brugte et Ethernet -kabel. Jeg havde kun en Hue pære og Bridge en Arduino, og lidt forståelse for kode. Det tog et stykke tid for mig at forstå hans kode, men jeg forstår det stadig ikke rigtigt.

Jeg tilføjede først dette bibliotek til internettet.

#omfatte

Dette er for dit netværk (det skal være det samme som Hue -pæren)

const char* ssid = ""; // læg her dit WiFi -netværk SSIDconst char* password = ""; // sæt her din WiFi -netværksadgangskode

Disse er din bros id og brugernavnet, din bro gav dig. (Jeg ved ikke, hvor de 80 står for, men da jeg lavede nogle undersøgelser, så jeg, at den blev brugt til netværk).

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

// Hue -variabler bool hueOn; // on/off int hueBri; // lysstyrkeværdi lang hueHue; // farvetone værdi String hueCmd; // Hue -kommando

usigneret lang buffer = 0; // buffer for modtaget datalagring usigneret lang addr;

Trin 15:

For tomrumsopsætningen gjorde jeg mest for internetforbindelsen. I denne kode leder Arduino efter, om han kan oprette forbindelse til netværket.

ugyldig opsætning () {Serial.begin (9600);

Serial.println ();

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

WiFi.begin (ssid, adgangskode);

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

forsinkelse (500);

Serial.print ("."); }

Serial.println ("tilsluttet"); }

Trin 16:

I James loop så jeg, at han havde en If and else -erklæring. Men det var til ethernet -kablet, så jeg forsøgte at lade dette være. Jeg forsøgte også nogle gange at justere det, men jeg vidste ikke endnu med en masse data. Nogle ting i koden forstod jeg, i strengen er de data, der gives til Hue -lyset.

void loop () {

// En serie på fire prøvekommandoer, hvilken farve falmer to lys mellem rødt og pink. Læs mere om Hue API // dokumentation for flere detaljer om de nøjagtige kommandoer, der skal bruges, men bemærk, at citatmærker skal undgås.

Stringkommando = "{" on / ": true, \" hue / ": 50100, \" sat / ": 255, \" bri / ": 255, \" overgangstid ":"+streng (tilfældig (15, 25))+"}"; setHue (1, kommando);

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

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

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

}

Trin 17:

Den næste kode var en boolsk, men i Arduino skal du skrive bool. Først fik jeg mange fejl på grund af ordet klient. Så jeg slog det op og så, at en kode brugte linjen "WifiClient -klient;". Så jeg brugte det til og det virkede.

I if -sætningen ser du ofte client.print. Hvis du kigger på koden, vil du se, at den webadresse, du indtastede tidligere, er delt i stykker. Indtast nu din egen kode. Jeg var nødt til at vælge mit 3. LED -lys.

/ * setHue () er vores hovedkommandofunktion, som skal sendes et lysnummer og en * korrekt formateret kommandostreng i JSON -format (grundlæggende et Javascript -stil array af variabler * og værdier. Det sender derefter en simpel HTTP PUT -anmodning til broen ved den IP, der blev angivet i starten. */

bool setHue (int lightNum, strengkommando) {

WiFiClient -klient;

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

mens (client.connected ()) {

client.print ("PUT /api /"); client.print (hueUsername); client.print ("/lights/"); client.print (lightNum); // hueLight zero based, tilføj 1 client.println ("3/state"); // her ændrede jeg nuancenavnet og stateclient.print ("Host:"); client.println (hueHubIP); client.print ("Indholdslængde:"); client.println (command.length ()); client.println ("Indholdstype: tekst/almindelig; charset = UTF-8"); client.println (); // tom linje før body client.println (kommando); // Hue -kommando

} client.stop (); vende tilbage sandt; // kommando udført}

ellers returner falsk; // kommando mislykkedes}

Trin 18:

Ved den anden boolske gjorde jeg det samme med at ændre nogle ord. Jeg uploadede det for at se om det fungerede.

/* En hjælperfunktion, hvis din logik afhænger af lysets aktuelle tilstand. * Dette angiver en række globale variabler, som du kan kontrollere for at finde ud af, om et lys i øjeblikket er tændt eller ej * og farvetonen osv. Ikke nødvendig bare for at sende kommandoer */

bool getHue (int lightNum) {

WiFiClient -klient;

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

client.print ("GET /api /"); client.print (hueUsername); client.print ("/lights/"); client.print (lightNum); client.println ("3/tilstand"); client.print ("Host:"); client.println (hueHubIP); client.println ("Indholdstype: applikation/json"); client.println ("hold dig i live"); client.println ();

mens (client.connected ()) {if (client.available ()) {client.findUntil ("\" on / ":", "\ 0"); hueOn = (client.readStringUntil (',') == "true"); // hvis lyset er tændt, indstil variabel til true client.findUntil ("\" bri / ":", "\ 0"); hueBri = client.readStringUntil (',').toInt (); // sæt variabel til lysstyrkeværdi client.findUntil ("\" hue / ":", "\ 0"); hueHue = client.readStringUntil (',').toInt (); // indstil variabel til farvetoneværdi; // fanger endnu ikke andre lysattributter}} client.stop (); vende tilbage sandt; // fanget på, bri, hue} else return false; // fejl ved læsning på, bri, hue}

Trin 19:

Billede
Billede

Jeg tror, jeg kunne oprette forbindelse til Philips Hue. Jeg modtager information, men den skal stadig bruges.

Desværre går dette ud over, hvad jeg kan kode. Hvis du kender svaret, eller hvis der er reelle fejl, der skal rettes, hører jeg det gerne.:-)

Anbefalede: