Wpis ten dedykuję osobom, które poznały w stopniu podstawowym Arduino z wykorzystaniem Arduino IDE (język zbliżony do C). A skoro tutaj trafiłeś – mogłeś zaszłyszeć czym jest Domoticz, ale o nim za chwilę. O ile proste podłączanie czujników i odczyty wartości nie są mi straszne, tak oprogramowanie całej automatyki domowej z wykorzystaniem samego Arduino wydało mi się przerażające Rzeczy, które należałoby oprogramować m.in.:
- czas rzeczywisty
- system zdarzeń
- ładny interfejs www
- może jakaś aplikacja na androida?
- i wiele innych mechanizmów, które zapewniałyby stabilność systemu
Szukałem dość długo optymalngo rozwiązania, żeby było stosunkowo łatwe, ale i funkcjonalne.
Trafiłem w ten sposób na projekt Domoticz.
Domoticz
Jest to system, który potrafi zintegrować wiele rozwiązań różnych producentów sprzetu do automatyki inteligentnej. Ponadto wygląda ładnie na pececie jak i komórce oraz umożliwia pobranie aplikacji do sterowania ze sklepu Google Play(dla Android).
Z najważniejszych warto wymienić integrację z :
- centralą alarmową Satel Integra
- weather underground
- urządzeniami w standardzie X10
- urządzeniami bezprzewodowymi pracującymi w paśmie 433mhz
- Z urządzeniami Z-Wave
- Fibaro
i cała masa innych!
Posiada także API,z którego można korzystać poprzez interfejs JSON (czyli wywołania http). I właśnie ta funkcja pozwoli nam na dwustronną komunikację z Arduino. Tutorial podzielony jest na 2 części – budowa i konfiguracja po stronie arduino oraz konfiguracja Domoticz. Po wszystkim zepniemy te 2 “konstrukcje” ethernetem i voila
Domoticz może być zainstalowany na dowolnej maszynie z systemem linux/windows lub na malince (de facto linux). Ja po testach na pececie oraz debianie, finalnie wybrałem malinkę. Fakt – generuje to nam startowy koszt rzędu ok 180 zł, ale mamy ciszę i – z tego co słychać w eterze – stabilne działanie. Co więcej – Domoticz na linuxie potrafi sam się aktualizować. Wersja Windows’owa tego nie potrafi .
Arduino
Na początek wystarczy najtańszy klon np. UNO R3
do kupienia na popularnym portalu aukcyjnym.
Do tego płytka stykowa (taka za 6 zł) oraz ethernet shield W5100:
Dla początkujących polecam świetny i krótki kurs rozpoczęcia zabawy z Arduino z Forbot:
http://forbot.pl/blog/artykuly/programowanie/kurs-arduino-w-robotyce-1-wstep-id936
Najprościej mówiąc: na Arduino zakładamy ethernet shield’a i z shielda wyprowadzamy przewody do diody jak na rysunku poniżej:
Przełączniki fizyczne na ścianę – koniecznie dzwonkowe! np. http://legrand-sklep.pl/664507-665001
Idea działania
Idea jest taka – z jednej strony Arduino musi być serwerem WWW, żeby odbierać polecenia od Domoticza via http. Przykładowe wywołanie http mogłoby wyglądać tak:
http://192.168.1.20/index.html?wlaczSwiatlo
gdzie 192.168.1.20 to dowolny adres IP w sieci ethernet (oczywiście adres Arduino). Zadaniem Arduino jest odebranie polecenia i odpowiednia interpretacja.
Z drugiej strony Arduino musi być klientem www i wysyłać wywołania do serwera Domoticz np. po wciśnięciu dzwonka do drzwi czy włączeniu światła.
W tym celu Arduino zwrotnie komunikuje się z Domoticzem np. tak:
http://192.168.1.30/zapaliłemŚwiatlo
a w domoticzu ikonka światła zmienia się na „włączoną żaróweczkę” .
Komunikacja dwustronna – schemat
Tak naprawdę polecenie JSON switchlight obsłuży nam 90% naszych potrzeb. Przydatne będą jeszcze te uruchamiające scenę, wysyłające LOG do Domoticza i w przyszłości kilka innych.
Aby zapoznać się ze sposobem wywoływania akcji w Domoticzu z wykorzystaniem JSON URL najłatwiej będzie obejrzeć API DOMOTICZ.
A tutaj kilka screenów z mojego działającego systemu: