iTechArt logo

IoT: Jak zautomatyzowałem swój dom

Development & QA

Zazwyczaj kiedy rozmawiamy o IoT wszystko brzmi skomplikowanie, czasochłonnie, krótko mówiąc – jak bardzo zaawansowane zagadnienie. Czy w dzisiejszych czasach na pewno tak jest? W tym krótkim artykule postaram się opisać moją przygodę z IoT w pigułce.

Emil_Szczepaniak_DotNet_cr.jpg

Emil Szczepaniak

Software Engineer

Wszystko zaczęło się od potrzeby zaprzestania włączania ręcznie ogrzewania, włączania pomp wody przed kąpielą i sterowania światłami zewnętrznymi wtedy, kiedy jest to potrzebne. Na wstępie warto zaznaczyć, że całe okablowanie i instalacja elektryczna w domu miała 20 lat w momencie rozpoczęcia tego projektu, więc tylko bezprzewodowe rozwiązanie wchodziło w grę z racji braku dodatkowej skrętki, która mogłaby służyć do sterowania.

Miałem jeden cel: zautomatyzować najważniejsze wówczas dla mnie rzeczy bez potrzeby korzystania z publicznych chmur IoT (wszystko miało działać tylko w sieci lokalnej ze względów bezpieczeństwa), przy wykorzystaniu jak najmniejszych nakładów finansowych.

Serce systemu

To małe urządzenie powyżej, czyli Raspberry Pi 4B zostało wytypowane przeze mnie do zostania „sercem” całego systemu (nie musiało to być koniecznie 4B, wystarczyłoby słabsze Raspberry, ale akurat takie było dostępne). Uruchomiłem malinkę, skonfigurowałem tak, aby była widoczna w sieci lokalnej, zamówiłem czujniki temperatury, przekaźniki, mikrokontrolery (ESP8266 i kilka gotowych Sonoff Basic i Sonoff Mini) i mogłem zaczynać zabawę!

Jako że na co dzień programuję w C# - pomyślałem, że najlepszym pomysłem będzie…Użycie C#! Deadline miałem dość sztywny, ponieważ wyznaczał mi go start „sezonu grzewczego” (dla mieszkańców domków jednorodzinnych – pewnie wiecie o co chodzi!). Miałem 2 tygodnie na przygotowanie działającej aplikacji. 

Dlaczego po prostu nie użyłem gotowego rozwiązania takiego jak Homekit lub Google Home? Odpowiedź jest prosta – potrzebowałem rozwiązania skrojonego specjalnie pod moje wymagania, głównie do sterowania piecem grzewczym, aby zużywać jak najmniej „paliwa”, jednocześnie dostarczając jak największą wydajność grzewczą. Aby to osiągnąć, potrzebowałem ręcznego sterowania histerezą dla temperatury zadanej na każdym piętrze domu oraz obsługi wielu czujników temperatury, by ewentualnie zamykać zawory w określonych pomieszczeniach, chroniąc je przed przegrzaniem. W tamtym czasie długo bawiłem się Homekitem i nie było tam kluczowej dla mnie funkcji, czyli…funkcji Timera! (z tego co wiem, do dzisiaj natywnie jej nie obsługuje).

W aplikacji zdecydowałem się na użycie Reacta na frontendzie, C# na backendzie (WebApi oraz 2 mikroserwisy – jeden do monitorowania stanu wszystkich urządzeń oraz drugi do sterowania piecem grzewczym). Po niemal 2 tygodniach miałem to:

Aplikacja (napisana przy użyciu .NET Core 3.0) była hostowana na moim Raspberry Pi. Każdy mikroserwis oraz WebApi działały jako serwisy, więc niestraszne mi były wyłączenia prądu, które skutkować mogły restartem Raspberry. Po restarcie wszystkie serwisy automatycznie startowały na malince jednocześnie, uruchamiając całe moje „centrum dowodzenia”.

To było naprawdę świetne uczucie, kiedy pierwszy raz uruchomiłem aplikację, podłączyłem mikrokontroler i ujrzałem…TO!

Mikrokontrolery

Wszystkie “smart” urządzenia miały być dostępne tylko w lokalnej sieci, więc dla kilku z ESP8266 przygotowałem swoje oprogramowanie używając Arduino IDE (do wyświetlania temperatury przez HTTP) i musiałem opakować to w coś przypominającego „półprofesjonalny prototyp, który jednocześnie nie zrobi nikomu krzywdy”, więc wyglądało to głównie w ten sposób:

(To urządzenie mierzyło temperaturę oraz posiadało wbudowany przekaźnik, który sterował pompą grzewczą. Wszystkim mogłem sterować za pomocą aplikacji napisanej w C#).

Do niektórych urządzeń takich jak lampy czy na przykład pompy wody użyłem Sonoff Basic, co okazało się świetnym rozwiązaniem. Sonoff Basic to urządzenie, które działa na wysokim napięciu, a sama płytka w środku to wciąż ESP8266, więc mogłem sflashować każde oprogramowanie jakie tylko chciałem. W moim przypadku świetnie sprawdziła się open-sourcowa Tasmota (jeśli używasz Homekita i szukasz rozwiązania, które pozwoli Ci na sparowanie Twojego ESP8266 z Homekitem – koniecznie sprawdź HAA. Testowałem i działa!).

(Sonoff Basic)

(w taki prosty sposób odbywa się flashowanie oprogramowania na Sonoff Basic „na stole”)

Poniżej zdjęcie z kotłowni, gdzie znajdował się Sonoff Basic z oprogramowaniem Tasmota wraz z dodatkowym przekaźnikiem. Urządzenie to sterowało pompą wody oraz podlewaniem w ogrodzie (standardowo w bardzo profesjonalnym „opakowaniu”, jak widać po ilości kleju na gorąco, którego użyłem – potrzeba matką wynalazków!). 

Poniżej można zobaczyć jak wyglądało to w akcji. Jedno z pierwszych odpaleń podlewania po uszczelnieniu oraz skręceniu całej hydrauliki:

Do większości moich urządzeń, które budowałem od zera używałem płytek ESP8266 od Wemosa – głównie dlatego, że mogą być zasilane przez kabel micro-usb i są naprawdę niewielkich rozmiarów, więc można umieścić całe urządzenie w małej puszce bez potrzeby zajmowania dużej ilości miejsca.

Automatyzacja

Kiedy miałem już działający system, który wstępnie przetestowałem, stwierdziłem, że „wisienką na torcie” będzie wykonanie automatyzacji. W moim przypadku zastosowałem „skróty”, używając iOS. Tym sposobem używałem Siri aby przełączać światła, pompy wody, zmieniać zadaną temperaturę, sprawdzać temperaturę w pomieszczeniach czy na przykład przełączać sceny.

Moją ulubioną automatyzacją było to, że w momencie powrotu do domu po pracy, kiedy to mój telefon wykrył domową sieć Wifi (co działo się w momencie podjechania pod bramę) – automatycznie włączane było światło przed garażem, w garażu, lampa w holu oraz pompa wody w kotłowni, która wpuszczała w obieg ciepłą wodę, abym mógł się wykąpać.

Poniżej krótki filmik z tego, jak wszystko świetnie zintergowało się z Siri!

Podsumowanie

Starałem się nie zanudzić technikaliami tworzenia własnych rozwiązań IoT, ale wierzę, że pokazałem, (nawet w niewielkim stopniu!), że to wszystko nie jest wcale nie takie trudne, na jakie wygląda. To, co mogę zagwarantować, to że zabawa z IoT dostarcza masę rozrywki i satysfakcji, kiedy widzisz swoje działające rozwiązania, które przyczyniają się do ułatwienia codziennego życia.

Pamiętaj, że praca z wysokim napięciem (230V) jest bardzo niebezpieczna, jeśli nie do końca wiesz co robisz! Jeżeli nie wiesz jak działa prąd, co to napięcie i nie jesteś świadomy zagrożeń, jakie niesie ze sobą taka zabawa – zacznij od mrugania niskonapięciowymi LEDami za pomocą mikrokontrolera i upewnij się, że doświadczony elektryk pomoże Ci złożyć oraz podłączyć Twoje wysokonapięciowe urządzenie.