Spisu treści:

Projekt szkoły IoT Philips Hue: 19 kroków
Projekt szkoły IoT Philips Hue: 19 kroków

Wideo: Projekt szkoły IoT Philips Hue: 19 kroków

Wideo: Projekt szkoły IoT Philips Hue: 19 kroków
Wideo: Jak zbudować TANI smart home? Inteligentny dom za MNIEJ niż 800 zł! 💸*KONKURS* 2024, Lipiec
Anonim
Projekt szkoły IoT Philips Hue
Projekt szkoły IoT Philips Hue

To jest podręcznik, który musiałem napisać do szkoły. Nie jest kompletny i nie jestem pewien, czy możesz z niego korzystać. Moja wiedza na temat API to absolutne minimum. Chcieliśmy stworzyć interaktywne lustro ze światłami z tyłu, które reagowałyby na pogodę, światło z zewnątrz itp.

Przyjrzałem się, jak mogę zaprogramować lampę Philips Hue za pomocą Arduino. W tym wyjaśniam wszystkie moje kroki i jak daleko zaszedłem. Nie udało mi się zaprogramować Hue za pomocą Arduino, ale myślę, że to dobry początek.

Potrzebowałem tego: Arduino lampa odcień mostek konto programisty Philips Hue

Źródła: 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-…

Krok 1: Rozpocznij

Aby uzyskać dostęp do dokumentacji interfejsu API, musisz zarejestrować się jako programista. To nic nie kosztuje, ale musisz zaakceptować regulamin. Możesz to zrobić tutaj >

Krok 2: Aplikacja Hue

Pobierz oficjalną aplikację Philips Hue. Podłącz telefon do sieci, w której ma być włączony mostek Hue.

Krok 3: Podłącz mostek

Połącz swój most z siecią i działa poprawnie. Sprawdź, czy aplikacja na smartfona może sterować światłami w tej samej sieci. Musi być w tej samej sieci Wi-Fi.

Krok 4: Adres IP

Następnie musisz odkryć adres IP mostka w swojej sieci. Naciśnij link, aby połączyć się z mostkiem w aplikacji i spróbuj sterować światłami.

Krok 5:

Jeśli wszystko działa, przejdź do menu ustawień w aplikacji. Następnie przejdź do „Mój most”, przejdź do „Ustawienia sieci”. Wyłącz przełącznik DHCP, a zobaczysz adres IP mostu. Zanotuj adres IP, a następnie włącz ponownie DHCP.

Krok 6: Debuguj swój odcień

Debuguj swój odcień
Debuguj swój odcień

Kiedy to zapisałeś, musisz debugować swój Hue. Do tego kroku potrzebny jest adres IP. Musisz odwiedzić następną stronę.

/debug/clip.html

Interfejs będzie wyglądał tak na obrazku. Jest to podstawa całego ruchu internetowego i interfejsu Hue RESTful.

Otrzymałem te informacje o interfejsie Restful witryny Philips Hue.

URL: jest to w rzeczywistości lokalny adres określonego zasobu (rzeczy) w systemie hue. Może to być światło, grupa świateł lub wiele innych rzeczy. To jest obiekt, z którym będziesz wchodzić w interakcję w ramach tego polecenia.

Ciało: to ta część wiadomości, która opisuje, co i jak chcesz zmienić. Tutaj wpisujesz w formacie JSON nazwę zasobu i wartość, którą chcesz zmienić/dodać.

Metoda: tutaj masz do wyboru 4 metody HTTP, których może użyć wywołanie hue.

GET: jest to polecenie do pobrania wszystkich informacji o adresowanym zasobie

PUT: jest to polecenie modyfikacji zaadresowanego zasobu

POST: jest to polecenie utworzenia nowego zasobu wewnątrz zaadresowanego zasobu

DELETE: jest to polecenie usunięcia zaadresowanego zasobu Odpowiedź: W tym obszarze zobaczysz odpowiedź na swoje polecenie. Również w formacie JSON.

Krok 7: Zacznijmy

Zacznijmy
Zacznijmy

Teraz potrzebujemy losowo wygenerowanej nazwy użytkownika, którą tworzy dla Ciebie most. Otrzymasz jeden, wypełniając to.

Wpisz adres URL:

/api/

Włóż do CIAŁA:

i naciśnij GET

To polecenie zasadniczo mówi „proszę, utwórz nowy zasób w /api” (gdzie znajdują się nazwy użytkowników) z następującymi właściwościami. Na początku pojawi się błąd, a to dlatego, że jest to krok bezpieczeństwa Philips Hue. Wciskając przycisk udowadniają, że masz fizyczny dostęp do mostu.

Krok 8:

Obraz
Obraz

Teraz naciśnij przycisk na mostku i ponownie kliknij POST.

Teraz otrzymasz nazwę użytkownika, którą stworzył dla Ciebie most.

Krok 9: Zróbmy coś ze światłami

Zróbmy coś ze światłami
Zróbmy coś ze światłami

Skopiuj swoją nazwę użytkownika i umieść ją w następującej linii.

Umieść to w swoim adresie URL

/api//światła

Naciśnij POBIERZ

Powinieneś otrzymać odpowiedź JSON ze wszystkimi światłami w twoim systemie i ich nazwami.

Krok 10:

Obraz
Obraz

Pożyczyłem trochę świateł Hue ze szkoły, używam tej o id 3. Chcę uzyskać szczegółowe informacje o tym świetle.

Umieść to obok adresu URL, który już masz:

/api//światła/3

Naciśnij POBIERZ

Teraz otrzymasz wszystkie informacje o Led 3 (jeśli masz inny numer, taki jak 1, zobaczysz informacje o tym).

Krok 11: Kontrolujmy światło

Kontrolujmy światło
Kontrolujmy światło

Widzisz w "stanie", że moja dioda jest "włączona". Chcemy sterować światłem w „stanie”.

Umieść to obok adresu URL, który już masz: https:// /api/ /lights/ 3/ state

Umieść następną linię w BODY

Naciśnij

Teraz twoje światło zgaśnie! Zmień wartość w body na true, a światło ponownie się włączy.

Krok 12:

Teraz wszystko działa, chcę to zrobić z moim Arduino. Spojrzałem na link, który podał Philips Hue, aby zmienić kolor światła. Ale potrzebujesz do tego Pythona, nigdy nie pracowałem z Pythonem, więc szukałem czegoś innego.

Jeśli chcesz spojrzeć na ten kod, mam link do Github tutaj:

github.com/bsalinas/ArduinoHue

Krok 13:

Sprawdziłem, jak mogę uzyskać informacje z tej strony programisty na moje arduino. Przez większość czasu nie rozumiałem języka. Ale znalazłem kod na stronie Jamesa Bruce'a.

To jest link do strony.

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

Krok 14:

Najpierw zobaczyłem, że używa kabla Ethernet. Miałem tylko żarówkę Hue Light i mostek Arduino oraz niewielkie zrozumienie kodu. Trochę mi zajęło zrozumienie jego kodu, ale nadal go nie rozumiem.

Najpierw dodałem tę bibliotekę do internetu.

#włączać

To jest dla Twojej sieci (musi być taka sama jak żarówka Hue Light)

const char* ssid = " "; // podaj tutaj swoją sieć Wi-Fi SSIDconst char* password = " "; // wpisz tutaj swoje hasło do sieci Wi-Fi

Są to identyfikator Twojego Bridge i nazwa użytkownika, którą Ci nadał. (Nie wiem, gdzie oznacza 80, ale kiedy zrobiłem trochę badań, zobaczyłem, że jest używany w sieciach).

// Stałe barwy const char hueHubIP = ""; // IP koncentratora Hue const char hueUsername = ""; // Nazwa użytkownika barwy const int hueHubPort = 80;

// Zmienne barwy bool hueOn; // wł./wył. int hueBri; // wartość jasności long hueHue; // wartość barwy String hueCmd; // Odcień, polecenie

długi bufor bez znaku=0; //bufor do przechowywania odebranych danych unsigned long addr;

Krok 15:

W przypadku konfiguracji void zrobiłem najwięcej dla połączenia internetowego. W tym kodzie Arduino szuka czy może połączyć się z siecią.

void setup(){ Serial.begin(9600);

Serial.println();

Serial.printf("Łączenie z %s", ssid);

WiFi.begin(SSid, hasło);

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

opóźnienie (500);

Serial.print("."); }

Serial.println("podłączony"); }

Krok 16:

W pętli Jamesa zobaczyłem, że miał oświadczenie If i else. Ale to dotyczyło kabla Ethernet, więc próbowałem to pominąć. Próbowałem też czasem to dostosować, ale nie wiedziałem jeszcze z dużą ilością danych. Niektóre rzeczy w kodzie, które zrozumiałem, w ciągu są dane, które są przekazywane do światła Hue.

pusta pętla () {

// Seria czterech przykładowych poleceń, których kolor powoduje przyciemnienie dwóch świateł między czerwonym a różowym. Przeczytaj dokumentację interfejsu API Hue //, aby uzyskać więcej informacji na temat dokładnych poleceń, których należy użyć, ale pamiętaj, że znaki cudzysłowu muszą być zmienione.

String command = "{"on\": true, \"hue\": 50100, \"sat\":255, \"bri\":255, \"transitiontime\":"+String(random(15), 25))+"}";setHue(1, polecenie);

command = "{"on\": true, \"hue\": 65280, \"sat\":255, \"bri\":255, \"transitiontime\":"+String(random(15, 25))+"}"; setHue(2, polecenie);

command = "{"hue\": 65280, \"sat\":255, \"bri\":255, \"transitiontime\":"+String(random(15, 25))+"}"; setHue(1, polecenie);

command = "{"hue\": 50100, \"sat\":255, \"bri\":255, \"transitiontime\":"+String(random(15, 25))+"}"; setHue(2, polecenie);

}

Krok 17:

Następny kod był Boolean, ale w Arduino trzeba napisać Bool. Na początku dostałem dużo błędów z powodu słowa klient. Więc sprawdziłem to i zobaczyłem, że jakiś kod używa linii "WifiClient client;". Więc przywykłem i zadziałało.

W instrukcji if często widzisz client.print. Jeśli zajrzysz do kodu, zobaczysz, że wprowadzony wcześniej adres URL jest podzielony na części. Teraz wprowadź swój własny kod. Musiałem wybrać moje trzecie światło LED.

/* setHue() to nasza główna funkcja polecenia, do której należy przekazać lekki numer i * poprawnie sformatowany ciąg polecenia w formacie JSON (w zasadzie tablica zmiennych * i wartości w stylu JavaScript. Następnie wykonuje proste żądanie HTTP PUT do Bridge pod adresem IP podanym na początku. */

bool setHue(int lightNum, polecenie String) {

Klient WiFiClient;

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

while (klient.podłączony()){

klient.print("PUT /api/"); klient.print(hueNazwa użytkownika); klient.print("/światła/"); klient.print(lightNum); // hueLight bazuje na zero, dodaj 1 client.println("3/stan"); // tutaj zmieniłem nazwę barwy i stateclient.print("Host: "); klient.println(hueHubIP); client.print("Długość-treści: "); klient.println(polecenie.length()); client.println("Typ treści: text/plain;charset=UTF-8"); klient.println(); // pusta linia przed treścią client.println(polecenie); // Odcień, polecenie

} klient.stop(); zwróć prawdę; // polecenie wykonane }

w przeciwnym razie zwróć false; // polecenie nie powiodło się }

Krok 18:

Na drugim Boolean zrobiłem to samo, zmieniając niektóre słowa. Przesłałem go, aby sprawdzić, czy działa.

/* Funkcja pomocnicza w przypadku, gdy logika zależy od aktualnego stanu światła. * To ustawia liczbę zmiennych globalnych, które możesz sprawdzić, aby dowiedzieć się, czy światło jest włączone, czy nie * oraz odcień itp. Nie jest potrzebne tylko do wysyłania poleceń */

bool getHue(int lightNum) {

Klient WiFiClient;

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

klient.print("POBIERZ /api/"); klient.print(hueNazwa użytkownika); klient.print("/światła/"); klient.print(lightNum); klient.println("3/stan"); klient.print("Host: "); klient.println(hueHubIP); client.println("Typ treści: aplikacja/json"); klient.println("utrzymuj przy życiu"); klient.println();

while (client.connected()) { if (client.available()) { client.findUntil("\"on\":", "\0"); hueOn = (client.readStringUntil(', ') == "prawda"); // jeśli światło jest włączone, ustaw zmienną na true client.findUntil("\"bri\":", "\0"); hueBri = klient.odczytajStringUntil(', ').toInt(); // ustaw zmienną na wartość jasności client.findUntil("\"hue\":", "\0"); hueHue = client.readStringUntil(', ').toInt(); // ustaw zmienną na wartość barwy break; // nie przechwytuje jeszcze innych atrybutów światła } } client.stop(); zwróć prawdę; // przechwycone na, bri, hue } else return false; // błąd odczytu włączony, bri, hue }

Krok 19:

Obraz
Obraz

Myślę, że mógłbym nawiązać połączenie z Philips Hue. Otrzymuję informacje, ale nadal muszę je wykorzystać.

Niestety wykracza to poza to, co potrafię zakodować. Jeśli znasz odpowiedź lub jeśli istnieją prawdziwe błędy, które należy poprawić, bardzo chciałbym to usłyszeć.:-)

Zalecana: