Inteligentny dom – kontrola rekuperatora

Nie mam co ukrywać, że jestem mocno zainteresowany ideą inteligentnego domu. Chętnie uzyskał bym kontrolę nad różnymi zachodzącymi w domu procesami, sterował zdalnie czym się da i uzyskiwał informacje na temat stanu domu i urządzeń w nim się znajdujących. Na etapie wykańczania nie było już możliwości pociągnąć wszędzie tyle kabli ile bym chciał, muszę więc teraz bazować na tym co jest. Na pierwszy ogień poszedł monitoring temperatur przy rekuperatorze – ciekawiło mnie czy deklarowana sprawność urządzenia ma pokrycie w rzeczywistych pomiarach w warunkach domowych. Kilka lat wcześniej spotkałem się z termometrami cyfrowymi DS1820 (DS18S20) a co za tym idzie – magistralą 1-Wire. Pozwala ona wprawdzie nie tylko na kontrolę temperatury, ale też na sterowanie urządzeniami, odczyty stanów cyfrowych i analogowych, rejestrację przebiegu procesów we własnej pamięci i wiele innych…

O termometrze DS1820 w skrócie można napisać, że pozwala na precyzyjny cyfrowy pomiar temperatury a może być podłączony do układu kontrolującego za pomocą nawet dosyć długich linii (powyżej 100 metrów). Do zbierania danych i wysyłania ich na serwer (gdzieś chciałem je składować) kupiłem płytkę firmowaną przez nestor-electronic – sterownik internetowy na układzie Atmega32. Wraz z programatorem i przykładami programowania. Mając tak ciekawy układ mogłem pokusić się nie tylko o zbieranie danych, ale też o sterowanie pracą rekuperatora (wyborem jednego z trzech biegów) oraz informowaniem czy filtr wymaga czyszczenia (rekuperator ustawia stan wysoki na jednym ze swoich wyjść komunikacyjnych).

Wszystko fajnie, ale powiem wprost – poległem na programowaniu w Bascom. Kiedy uruchamiałem rekuperator, nie miałem zbyt wiele czasu na poszukiwania i dowiedziałem się tyle że wersja demo Bascom jest limitowana co do wielkości wynikowego programu, wersja płatna tania nie jest a programowanie w języku C jest możliwe ale bardziej skomplikowane w sensie konfiguracji środowiska programistycznego i programowania. Dodatkowo, zarówno C jak i Bascom wymaga programowania na dość niskim poziomie (blisko sprzętu) – ustawiania poszczególnych bitów w rejestrach, konfiguracji fusebitów… To wszystko niby niezbyt skomplikowane, ale trzeba się tego nauczyć a na to nie miałem czasu…

W efekcie – żeby uruchomić coś użytecznego jak najszybciej, kupiłem po prostu moduł 1-wire na USB i podpiąłem całość do routera Asus WL-500g z wgranym Linuxem (openwrt). Dzięki temu zamiast zajmować się elektroniką i niskopoziomowym programowaniem, po prostu napisałem odpowiedni program skryptowy w Linuxie który odczytywał wskazania z termometrów i wysyłał je do bazy danych na moim serwerze. Voila – w niecałe kilka godzin (licząc prowadzenie dodatkowych kabli) miałem działające rozwiązanie a płytka sterownika internetowego powędrowała na razie do pudełka. Oznacza to że na dzień dzisiejszy mam wyłącznie informację o temperaturach, bez żadnego sterowania czy informacji o filtrach – ale mam nadzieję że to wkrótce się zmieni (o tym w kolejnych wpisach).

Dla tych którzy zainteresowani są szczegółami implementacji po stronie routera – do OpenWrt doinstalowałem OWFS (One Wire File System) który pozwolił mi za pomocą prostego skryptu pobierać raz na pięć minut temepratury odczytane z czterech termometrów (na czerpni powietrza, na wyrzutni, na nawiewie do domu i na wyciągu z domu). Te cztery temperatury są po prostu wysyłane przez HTTP na stronę na moim serwerze – on zajmuje się resztą: odbiera dane, zapisuje je w bazie, liczy skuteczność pracy rekuperatora na nawiewie i na wywiewie a nawet generuje mi ładne wykresy :)

Może Ci się również spodoba