Reklama

Gama lamp Philips Hue z pewnością nie jest tania (istnieje kilka alternatyw Alternatywy Philips Hue, które są naprawdę tego warteSystem Philips Hue jest liderem jeśli chodzi o inteligentne oświetlenie, ale istnieją pewne godne alternatywy. Wybraliśmy trzy, które oferują ten sam podstawowy zestaw funkcji i możliwości hakowania. Czytaj więcej ), ale jedną rzeczą, którą naprawdę doceniam, jest dobrze udokumentowana API Co to są interfejsy API i jak otwarte interfejsy API zmieniają InternetCzy zastanawiałeś się kiedyś, jak programy na twoim komputerze i odwiedzane strony internetowe „rozmawiają” ze sobą? Czytaj więcej do tworzenia własnych aplikacji Hue. Dzisiaj pokażę ci, jak kontrolować światła Hue z Arduino - a następnie dodając prosty czujnik ruchu.

Dlaczego to robimy? Ponieważ systemy automatyki domowej mogą być dość sztywne i kosztowne. Ucząc się, jak sterować odcieniem z Arduino, otwierasz drzwi do szeregu niestandardowych projektów automatyki domowej, których po prostu nie da się pokonać przy pomocy gotowych komponentów. Jeśli hakowanie rzeczy po prostu nie jest twoją rzeczą, wypróbuj je

instagram viewer
8 wspaniałych aplikacji Hue 7 najlepszych aplikacji Philips Hue na Androida i iPhone'aSzukasz najlepszych aplikacji Philips Hue do użytku z inteligentnymi światłami? Oto kilka świetnych aplikacji na iPhone'a i Androida. Czytaj więcej zamiast.

System Hue

Porozmawiajmy trochę przez chwilę, aby poznać podstawowe systemy, z którymi pracujesz. Światła hue tworzą siatka stacji Mesh Networks: The Future of CommunicationSieci siatkowe są prawie niewrażliwe. W sieci kratowej nie ma dławików, przez które przepływa cały ruch. Zamiast tego informacje są przekazywane z jednego urządzenia do drugiego, aż dotrze do miejsca docelowego. Czytaj więcej , wykorzystując protokół bezprzewodowy krótkiego zasięgu o nazwie ZigBee - w szczególności są Lekki link ZigBee certyfikowany, co oznacza, że ​​inne produkty ZLL powinny również działać obok Hue (teoretycznie).

Chociaż technicznie krótki zasięg, funkcja siatki ZigBee oznacza, że ​​każda nowa żarówka rozszerza sieć, przekazując wiadomości do innych żarówek. Oznacza to, że jeśli masz problemy z kontrolowaniem światła po drugiej stronie domu, spróbuj umieścić inne światło między nimi.

Zigbee to świetny protokół, ale różni się od Wi-Fi lub przewodowej sieci komputerowej, dlatego potrzebujemy mostu Philips Hue, aby połączyć je ze sobą. Mostek Hue obsługuje zmodyfikowane oprogramowanie linuksowe typu open source, które transmituje podstawowy serwer WWW.

To zobaczysz, jeśli po prostu wpiszesz adres IP swojego mostka Hue w przeglądarce. Nie możesz jednak wiele z tego zrobić.
To zobaczysz, jeśli po prostu wpiszesz adres IP swojego mostka Hue w przeglądarce. Nie możesz jednak wiele z tego zrobić.

Poprzez interakcję z tym lokalnym serwerem internetowym możesz dowiedzieć się o bieżącym stanie lamp i kontrolować je.

Jest to pięknie prosty system i gotowy do samodzielnych projektów. Wyrazy uznania dla Philipsa za uczynienie tej rzeczy tak łatwą do zhakowania.

Zaczyna się

Aby uzyskać dostęp do dokumentacji interfejsu API, musisz zarejestruj się jako programista. Jest bezpłatny, ale musisz zaakceptować warunki. Zrób to teraz.

Każdy, kto zna standardowe usługi internetowe lub Javascript, powinien mieć możliwość pracy z Hue: wszystkie dane są przekazywane i odbierane jako Pakiety JSON Co to jest JSON? Przegląd laikaNiezależnie od tego, czy planujesz zostać programistą, czy nie, warto przynajmniej wiedzieć, co to jest JSON, dlaczego jest ważny i dlaczego jest używany w całej sieci. Czytaj więcej .

Aby na to spojrzeć, musisz znać adres IP swojego mostka Hue. Można to zrobić na kilka sposobów:

  • Spójrz na tabelę przypisywania adresów DHCP w interfejsie administratora routera
  • Uruchom program do mapowania sieci, taki jak Strona główna skanera IP
  • Spróbuj Narzędzie brokera UPnP firmy Philips
  • Ping „philips-hue.home”
mapowanie sieci w celu znalezienia mostu

Po zakończeniu idź dalej i wpisz go w pasku adresu przeglądarki za pomocą debug / clip.html dołączony do adresu URL. W moim przypadku było to:

http://192.168.1.216/debug/clip.html

To narzędzie do debugowania, które umożliwia wysyłanie i odbieranie pakietów JSON za pośrednictwem prostego interfejsu internetowego. Pierwszym krokiem jest włączenie profilu programisty na samym Hue Bridge - który jest domyślnie wyłączony ze względów bezpieczeństwa. Wklej poniższe w polu BODY, pozostaw adres URL jako /api/i wyślij żądanie POST, klikając przycisk przycisk wysyłania:

{„devicetype”: „użytkownik testowy”, „nazwa użytkownika”: „newdeveloper”}

Gdy to zrobisz po raz pierwszy, gdzieś w odpowiedzi zobaczysz „nie wciśnięty przycisk linku”. Jest to funkcja bezpieczeństwa, która wymaga fizycznej autoryzacji każdej nowej aplikacji. Idź i znajdź swój Bridge, naciśnij przycisk i ponownie wyślij tę samą prośbę w ciągu 30 sekund. Tym razem otrzymasz inną odpowiedź, a użytkownik zostanie autoryzowany. Jeśli chcesz użyć innej nazwy użytkownika, przeczytaj dokumentację interfejsu API tworzenie użytkowników. Na razie to wystarczy.

Po skonfigurowaniu użytkownika podstawowy adres URL, z którym należy się komunikować, staje się /api/newdeveloper/. Możesz wysłać żądanie GET, aby dowiedzieć się wszystkiego, co Twój most obecnie wie o połączonych światłach, alarmach, scenach i krótkim dzienniku używanych aplikacji. Oto próbka niektórych informacji o stanie zawartych dla pojedynczej żarówki.


„state”: {„on”: true, „bri”: 254, „hue”: 14910, „sat”: 144, „efekt”: „none”, „xy”: [0.4596, 0.4105], „ct”: 369, „alert”: „none”, „colormode”: „ct”, „osiągalny”: false}, „type”: „Extended color light light”, „name”: „Bedroom 1”, „modelid”: „LCT001”, 

Zauważ, że „On”: prawda stan tak naprawdę nie pokazuje, czy żarówka jest włączona, czy nie; tyle, że zgodnie z ustawieniami Bridge, to powinien być włączony. „Osiągalny”: fałsz może wskazywać zarówno żarówkę, która znajduje się zbyt daleko, lub po prostu wyłącza się za pomocą przełącznika zasilania.

Ostatni przykład, zanim zintegrujemy to z Arduino: upewnij się, że jedno z twoich świateł jest widoczne i włączone oraz że wiesz, który to numer. Zmień adres URL na /api/newdevelopers/lights/1/state (zmieniając numer na swój) i wyślij zapytanie PUT z następującymi danymi:

{„hue”: 50100, „sat”: 255, „bri”: 255}

Powinieneś zobaczyć, jak twoje światło reaguje w ten sposób:

demo barwy

To, co zrobiłeś, to pchnąć nowy stan do żarówki. Możesz także dodać „czas przejścia”, który jest prymitywną metodą animacji wskazującą, ile sekund zajmie zmiana stanu.

Kolor można ustawić na wiele różnych sposobów, ale niestety nie ma prostego sposobu na przesłanie wartości RGB. W powyższym przykładzie wysłaliśmy odcień, soboddawanie moczu i brghtness. Spróbuj zmienić wartość odcienia i ponownie wysłać żądanie PUT.

Praca z Arduino

Istnieje już biblioteka Hue / Arduino ArduinoHue do których Philips sam się odwołuje w dokumentacji API, ale problem z tą biblioteką jest taki komunikuje się przez połączenie USB z komputerem, na którym również musi być uruchomiona aplikacja Python stale. Eugh. Równie dobrze możesz pozwolić swojemu komputerowi uruchomić całą rzecz w tym momencie i całkowicie odciąć Arduino.

Zamiast tego pokażę ci, jak kontrolować Odcień z Arduino za pomocą osłony Ethernet. Twoje Arduino nie musi być podłączone do komputera, więc może działać niezależnie, gdziekolwiek możesz podłączyć kabel Ethernet. W rzeczywistości powinien on również działać z tarczą Wi-Fi, ale nie mam takiej do zabawy.

ehternet-sheild-box

Jeśli chcesz przejść dalej, pełny przykładowy kod znajduje się poniżej lub dostępny tutaj. Zaadaptowałem to z opublikowanego przykładu autor: Gilson Oguime. Jeśli nigdy wcześniej nie grałeś z osłoną Ethernet, możesz szybko przejść przez samouczek klienta WWW - Przyjmuję pewien poziom znajomości i nie będę obejmował kodu używanego do ustanowienia adresu IP sieci itp. Pokazaliśmy ci również jak stworzyć mini serwer WWW z osłoną Ethernet Nadaj projektowi Arduino własny mini-serwer z osłoną EthernetJakiś czas temu pokazałem ci, jak skonfigurować system kontroli Internetu dla twojego Arduino - ale musiał pozostać podłączony do komputera przez USB, aby utrzymać połączenie internetowe ... Czytaj więcej .

Tworzenie zmian stanu

Utworzenie nowego stanu w celu pchnięcia do żarówek jest prostym przypadkiem utworzenia nowego Strunowy zmienna i unikanie wszystkich podwójnych cudzysłowów. Dodałem losowy() tam również, aby stworzyć nieco dynamiczną animację. Spróbuj również ustawić losową zmienną odcienia dla różnych kolorów.

Polecenie łańcuchowe = "{\" on ": true, \" hue \ ": 50100, \" sat \ ": 255, \" bri \ ": 255, \" transittime \ ":" + String (random (15, 25)) + „}”;

Wysłanie polecenia

Aby faktycznie wysłać polecenie, masz funkcję pomocniczą o nazwie setHue (), która bierze za argument lekką liczbę i ciąg polecenia, podobnie jak:

setHue (1, polecenie);

Następnie łączy się z mostem, wypluwa polecenie jako żądanie PUT wraz z wszystkimi innymi nonsensami, które wiążą się z tworzeniem żądania HTTP.


client.print („PUT / api /”); client.print (hueUsername); client.print („/ lights /”); client.print (lightNum); client.println („/ state HTTP / 1.1”); client.println („keep-alive”); client.print („Host:”); client.println (hueHubIP); client.print („Content-Length:”); client.println (command.length ()); client.println ("Content-Type: text / plain; charset = UTF-8 ”); client.println (); // pusta linia przed ciałem. client.println (polecenie); // Odcień. 

Dodawanie czujnika ruchu

W końcu podłączyłem prosty Czujnik ruchu HC-SR501 do cyfrowego wejścia / wyjścia pin 2. Po wykryciu ruchu seria mostów zostaje popchnięta na mostek dla 2 żarówek, aby utworzyć powolną, dynamiczną animację. Gdy czujnik ruchu dezaktywuje się, jedno i drugie polecenie jest wysyłane do obu. Idealnie byłyby przywrócone do stanu, w jakim były przed wykryciem ruchu, ale logika nie jest taka mądra - po prostu je włączamy i wyłączamy.

Ograniczenia

Mimo, że kod nie został zoptymalizowany, przesłanie pojedynczego polecenia polecenia zajmuje prawie sekundę. Przetestowałem to samo polecenie na komputerze Mac, używając tego samego połączenia Ethernet, i było w stanie dziesięć do dwudziestokrotnie większej prędkości (oto AppleScript na wypadek gdybyś chciał przetestować). W związku z tym jakakolwiek szybka animacja (próbowałem stworzyć efekt migotania świec) po prostu nie jest możliwa z Arduino. Nie powinno to stanowić problemu w przypadku większości projektów, tylko w przypadku szybkich animacji światła, ale dobrze jest pamiętać o ograniczeniach.

Trudno jest także w pełni przeanalizować odpowiedź JSON otrzymaną z mostu; po prostu nie ma wystarczającej ilości pamięci RAM w Arduino, aby zapisać wszystkie nieprzetworzone dane. Z tego powodu możesz ograniczyć się do wysyłania.

Hack the Hue

Teraz, gdy masz już wiedzę na temat tego, jak kontrolować Hue całkowicie niezależnie, otwiera świat hacków automatyki domowej Hue. Prawdziwe pytanie brzmi: co zrobisz

James ma licencjat z zakresu sztucznej inteligencji i jest certyfikowany przez CompTIA A + i Network +. Jest głównym programistą MakeUseOf i spędza wolny czas grając w paintball VR i gry planszowe. Buduje komputery od dziecka.