Inhoudsopgave:
- Stap 1: Aan de slag
- Stap 2: Hue-app
- Stap 3: Verbind de brug
- Stap 4: IP-adres
- Stap 5:
- Stap 6: Debug je tint
- Stap 7: Laten we beginnen
- Stap 8:
- Stap 9: Laten we iets doen met de lichten
- Stap 10:
- Stap 11: Laten we het licht regelen
- Stap 12:
- Stap 13:
- Stap 14:
- Stap 15:
- Stap 16:
- Stap 17:
- Stap 18:
- Stap 19:
Video: IoT-schoolproject Philips Hue - Ajarnpa
2024 Auteur: John Day | [email protected]. Laatst gewijzigd: 2024-01-30 11:16
Dit is een handleiding die ik voor school moest schrijven. Het is niet compleet en ik weet niet zeker of je het wel kunt gebruiken. Mijn kennis van API's is het absolute minimum. We wilden een interactieve spiegel maken met lampjes aan de achterkant die reageerden op het weer, licht van buiten, etc.
Ik heb gekeken hoe ik een Philips Hue lamp kon programmeren met een Arduino. Hierin leg ik al mijn stappen uit en hoe ver ik ben gekomen. Het is mij niet gelukt om de Hue te programmeren met de Arduino maar ik denk dat het een goed begin is.
Ik had dit nodig: een Arduino een hue-lamp een bridge Philips Hue-ontwikkelaarsaccount
Bronnen: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-…
Stap 1: Aan de slag
Voordat u toegang krijgt tot de API-documentatie, moet u zich registreren als ontwikkelaar. Het is gratis, maar u moet de algemene voorwaarden accepteren. Je kunt er hier een maken >
Stap 2: Hue-app
Download de officiële Philips Hue-app. Verbind je telefoon met het netwerk waarop je de Hue bridge wilt hebben.
Stap 3: Verbind de brug
Verbind je bridge met je netwerk en werkt naar behoren. Test of de smartphone-app de lampen op hetzelfde netwerk kan bedienen. Het moet op hetzelfde wifi-netwerk zijn.
Stap 4: IP-adres
Vervolgens moet u het IP-adres van de bridge op uw netwerk achterhalen. Druk op de link om verbinding te maken met de bridge in de app en probeer de verlichting te bedienen.
Stap 5:
Als het allemaal werkt, ga dan naar het instellingenmenu in de app. Ga dan naar “Mijn Bridge”, ga naar “Netwerkinstellingen”. Schakel de DHCP-toggle uit en je ziet het IP-adres van de bridge. Noteer het IP-adres en schakel vervolgens DHCP weer in.
Stap 6: Debug je tint
Als je dat hebt opgeschreven, moet je je Hue debuggen. Voor deze stap heeft u het IP-adres nodig. Je moet de volgende site bezoeken.
/debug/clip.html
De interface ziet er zo uit in de afbeelding. Dit is de basis van al het webverkeer en van de hue RESTful interface.
Ik kreeg deze informatie over de Restful-interface van de Philips Hue-site.
URL: dit is eigenlijk het lokale adres van een specifieke bron (ding) binnen het hue-systeem. Het kan licht zijn, een groep lichten of nog veel meer dingen. Dit is het object dat u binnen deze opdracht zult gebruiken.
Een body: dit is het deel van het bericht dat beschrijft wat je wilt veranderen en hoe. Hier voert u, in JSON-indeling, de resourcenaam en waarde in die u wilt wijzigen/toevoegen.
Een methode: hier heb je de keuze uit de 4 HTTP-methoden die de hue-aanroep kan gebruiken.
GET: dit is de opdracht om alle informatie over de geadresseerde bron op te halen
PUT: dit is de opdracht om een geadresseerde bron te wijzigen
POST: dit is de opdracht om een nieuwe bron aan te maken binnen de geadresseerde bron
VERWIJDEREN: dit is de opdracht om de geadresseerde bron te verwijderen. Reactie: In dit gebied ziet u de reactie op uw opdracht. Ook in JSON-formaat.
Stap 7: Laten we beginnen
Nu hebben we een willekeurig gegenereerde gebruikersnaam nodig die de bridge voor u maakt. Je krijgt er een door deze in te vullen.
Zet in de url:
/api/
Zet in het LICHAAM:
en druk op GET
Dit commando zegt in feite "maak een nieuwe bron aan in /api" (waar de gebruikersnamen staan) met de volgende eigenschappen. In eerste instantie krijg je een foutmelding, en dat komt omdat dit de beveiligingsstap van Philips Hue is. Door op de knop te drukken bewijzen ze dat je fysiek toegang hebt tot de brug.
Stap 8:
Druk nu op de knop op de Bridge en klik nogmaals op POST.
Nu krijg je een gebruikersnaam die de bridge voor je heeft gemaakt.
Stap 9: Laten we iets doen met de lichten
Kopieer uw gebruikersnaam en plaats deze in de volgende regel.
Zet dit in je URL
/api/ /lichten
Druk op GET
U zou een JSON-antwoord moeten krijgen met alle lampjes in uw systeem en hun namen.
Stap 10:
Ik heb wat Hue Lights geleend van school, degene die ik gebruik is degene met id 3. Ik wil specifieke informatie over deze lamp.
Zet dit naast de URL die je al had:
/api/ /lights/3
Druk op GET
Nu krijg je alle informatie over Led 3 (als je een ander nummer zoals 1 hebt, zie je informatie over dat nummer).
Stap 11: Laten we het licht regelen
Je ziet in "staat" dat mijn led "aan" is. We willen het licht in "staat" regelen.
Zet dit naast de URL die je al had:https:// /api/ /lights/ 3/ state
Zet de volgende regel in de BODY
Druk op PUT
Nu gaat je licht uit! Verander de waarde in het lichaam naar waar en het licht gaat weer aan.
Stap 12:
Nu alles werkt wil ik dit doen met mijn Arduino. Ik keek naar de link die Philips Hue gaf om de lichtkleur te laten veranderen. Maar daar heb je Python voor nodig, ik heb nooit met Python gewerkt dus zocht ik iets anders.
Als je deze code wilt bekijken, heb ik hier de Github-link:
github.com/bsalinas/ArduinoHue
Stap 13:
Ik heb gekeken hoe ik informatie van deze ontwikkelaarssite naar mijn arduino kon krijgen. Meestal verstond ik de taal niet. Maar ik vond wat code op een website van James Bruce.
Dit is de link naar de website.
www.makeuseof.com/tag/control-philips-hue-lights-arduino-and-motion-sensor/
Stap 14:
Eerst zag ik dat hij een Ethernet-kabel gebruikte. Ik had alleen een Hue Light-lamp en Bridge een Arduino, en weinig begrip van code. Het duurde even voordat ik zijn code begreep, maar ik begrijp het nog steeds niet echt.
Ik heb deze bibliotheek voor het eerst toegevoegd voor internet.
#erbij betrekken
Dit is voor je netwerk (het moet hetzelfde zijn als de Hue Light bulb)
const char* ssid = " "; // plaats hier uw WiFi-netwerk SSIDconst char* wachtwoord = " "; // plaats hier uw wifi-netwerkwachtwoord
Dit zijn de ID van uw Bridge en de gebruikersnaam die uw bridge u heeft gegeven. (Ik weet niet waar de 80 voor staat, maar toen ik wat onderzoek deed, zag ik dat het voor netwerken werd gebruikt).
// Tintconstanten const char hueHubIP = ""; // Hue hub IP const char hueUsername = ""; // Hue gebruikersnaam const int hueHubPort = 80;
// Tintvariabelen bool hueOn; // aan/uit int hueBri; // helderheidswaarde lange hueHue; // tintwaarde String hueCmd; // Hue-opdracht
niet-ondertekende lange buffer=0; //buffer voor ontvangen gegevensopslag unsigned long addr;
Stap 15:
Voor de lege setup heb ik het meeste gedaan voor de internetverbinding. In deze code zoekt de Arduino of hij verbinding kan maken met het netwerk.
void setup(){ Serial.begin(9600);
Serieel.println();
Serial.printf("Verbinding maken met %s", ssid);
WiFi.begin(ssid, wachtwoord);
while (WiFi.status() != WL_CONNECTED) {
vertraging (500);
Serieel.print("."); }
Serial.println ("verbonden"); }
Stap 16:
In de loop van James zag ik dat hij een If and else-statement had. Maar dat was voor de ethernetkabel, dus ik heb geprobeerd dit weg te laten. Ik heb het ook wel eens geprobeerd aan te passen, maar met veel data wist ik het nog niet. Sommige dingen in de code heb ik wel begrepen, in de string staan de gegevens die aan het Hue-licht worden gegeven.
lege lus(){
// Een reeks van vier voorbeeldopdrachten, waarbij de kleur twee lichten tussen rood en roze vervaagt. Lees de Hue API //-documentatie voor meer details over de exacte commando's die moeten worden gebruikt, maar houd er rekening mee dat aanhalingstekens moeten worden ontsnapt.
String command = "{"on\": true, \"hue\": 50100, \"sat\":255, \"bri\":255, \"transitiontime\":"+String(random(15, 25))+"}";setHue(1, commando);
command = "{"on\": true, \"hue\": 65280, \"sat\":255, \"bri\":255, \"transitiontime\":"+String(random(15, 25))+"}"; setHue(2, commando);
command = "{"hue\": 65280, \"sat\":255, \"bri\":255, \"transitiontime\":"+String(random(15, 25))+"}"; setHue(1, opdracht);
command = "{"hue\": 50100, \"sat\":255, \"bri\":255, \"transitiontime\":"+String(random(15, 25))+"}"; setHue(2, commando);
}
Stap 17:
De volgende code was een Boolean, maar in Arduino moet je Bool schrijven. In het begin kreeg ik veel fouten vanwege het woord client. Dus ik zocht het op en zag dat sommige code de regel "WifiClient-client;" gebruikte. Dus ik gebruikte het en het werkte.
In het if-statement zie je vaak client.print staan. Als je in de code kijkt, zie je dat de URL die je eerder hebt ingevoerd in stukjes is opgedeeld. Voer nu uw eigen code in. Ik moest mijn 3e LED-lamp kiezen.
/* setHue() is onze belangrijkste opdrachtfunctie, waaraan een licht getal en een * correct opgemaakte opdrachtreeks in JSON-indeling moet worden doorgegeven (in feite een array van variabelen in Javascript-stijl * en waarden). Vervolgens wordt een eenvoudig HTTP PUT-verzoek gedaan aan de Bridge op het IP opgegeven aan het begin. */
bool setHue(int lightNum, String-opdracht) {
WiFiClient-client;
if (client.connect(hueHubIP, hueHubPort)){
while (client.verbonden()){
client.print("PUT /api/"); client.print(hueGebruikersnaam); client.print("/lights/"); client.print(lightNum); // hueLight op nul gebaseerd, voeg 1 client.println toe ("3/state"); // hier heb ik de tintnaam en stateclient.print ("Host: "); cliënt.println(hueHubIP); client.print ("Inhoudslengte: "); cliënt.println(opdracht.lengte()); client.println("Content-Type: text/plain;charset=UTF-8"); klant.println(); // lege regel voor body client.println (opdracht); // Hue-opdracht
} klant.stop(); retourneer waar; // opdracht uitgevoerd }
anders vals retourneren; // opdracht mislukt}
Stap 18:
Bij de tweede Boolean deed ik hetzelfde met het veranderen van enkele woorden. Ik heb het geüpload om te kijken of het werkte.
/* Een hulpfunctie voor het geval uw logica afhangt van de huidige staat van het licht. * Dit stelt een aantal globale variabelen in die u kunt controleren om erachter te komen of een lamp momenteel aan is of niet * en de tint enz. Niet alleen nodig om commando's te verzenden */
bool getHue(int lightNum) {
WiFiClient-client;
if (client.connect(hueHubIP, hueHubPort)) {
client.print("GET /api/"); client.print(hueGebruikersnaam); client.print("/lights/"); cliënt.print(lightNum); cliënt.println("3/staat"); client.print("Host: "); cliënt.println(hueHubIP); client.println ("Inhoudstype: applicatie/json"); client.println ("keep-alive"); klant.println();
while (client.connected()) { if (client.available()) { client.findUntil("\"on\":", "\0"); hueOn = (client.readStringUntil(', ') == "true"); // als het lampje brandt, stel variabele in op true client.findUntil("\"bri\":", "\0"); hueBri = client.readStringUntil(', ').toInt(); // stel variabele in op helderheidswaarde client.findUntil("\"hue\":", "\0"); hueHue = client.readStringUntil(', ').toInt(); // stel variabele in op tintwaarde-onderbreking; // nog geen andere lichtattributen vastgelegd } } client.stop(); retourneer waar; // vastgelegd op, bri, hue } else return false; // foutlezing op, bri, hue}
Stap 19:
Ik denk dat ik een connectie zou kunnen maken met de Philips Hue. Ik ontvang informatie, maar deze moet nog worden gebruikt.
Helaas gaat dit verder dan wat ik kan coderen. Als je het antwoord weet, of als er echte fouten zijn die gecorrigeerd moeten worden, hoor ik het graag.:-)
Aanbevolen:
Hue & Me: 7 stappen
Tint & Ik: Tint & me is een Ambilight die reageert op video. Dit project wordt aangeleverd door de Hogeschool van de Kunsten Utrecht. Een werkend tastbaar prototype die gebruikt maakt van Arduino en een interactie tussen gebruikers of een interactie een
IoT Power Module: een functie voor het meten van IoT-vermogen toevoegen aan My Solar Charge Controller: 19 stappen (met afbeeldingen)
IoT Power Module: een functie voor het meten van IoT-vermogen toevoegen aan My Solar Charge Controller: Hallo allemaal, ik hoop dat jullie allemaal geweldig zijn! In deze instructable ga ik je laten zien hoe ik een IoT Power Measurement-module heb gemaakt die de hoeveelheid stroom berekent die wordt gegenereerd door mijn zonnepanelen, die wordt gebruikt door mijn zonnelaadcontroller t
IoT Basics: uw IoT verbinden met de cloud met behulp van Mongoose OS: 5 stappen
IoT Basics: uw IoT verbinden met de cloud met behulp van Mongoose OS: als u een persoon bent die van knutselen en elektronica houdt, komt u vaker wel dan niet de term Internet of Things tegen, meestal afgekort als IoT, en dat het verwijst naar een reeks apparaten die verbinding kunnen maken met internet! Zo iemand zijn
Philips OneBlade USB-oplader: 3 stappen
Philips OneBlade USB-oplader: het Philips OneBlade-scheermes is geweldig, maar de meegeleverde oplader is vervelend om mee te nemen tijdens het reizen, omdat het relatief omvangrijk is en de tanden niet intrekken. Aangezien de AC-adapter op degene die ik heb (QP2520) een nominale waarde heeft van 4,3 V bij 70 mA, was het wi
Hue Magic: 4 stappen (met afbeeldingen)
Hue Magic: Welkom tovenaars! Een paar maanden geleden heb ik een kleine magische doos met toverstaf gemaakt voor mijn 3-jarige zoon. Wanneer hij de doos met de toverstok aanraakt, begint er een veranderend gekleurd licht uit de doos te stralen. Als hij een kleur ziet die hij bijzonder mooi vindt, kan hij