Mam przydomowy rozkładany na lato basen. 4,5m średnicy, 12 kubików wody. Woda w nim nie była jednak zbyt ciepła. Kolega poradził mi zakup plastikowego kolektora do grzania wody, o powierzchni 3x1m. ustawiłem go na stelażu, podłączyłem pompę i zaczął grzać wodę. Stwierdziłem jednak, że pompa niepotrzebnie cały czas pracuje. Postanowiłem coś z tym zrobić, więc zakupiłem w Chinach układy SoC (System on Chip) ESP8266, cyfrowe czujniki temperatury DS18B20 i moduł przekaźnika na 220V. Całość wyniosła ok. 10$. Programuje się to ze środowiska Arduino w C++. Czujniki umieściłem:
1. W basenie przy dnie.
2. Na wyjściu kolektora słonecznego
3. Za kolektorem (temperatura powietrza)
ESP w pętli sprawdza temperatury. Ustawiłem załączanie pompy kiedy temperatura na wyjściu kolektora będzie większa o 1,5 st. niż w basenie, a wyłączanie kiedy będzie wyższa juz tylko o 0.2 stopnia.
Ruszyło i zaczęło działać.
Jednak było mi mało. ESP8266 ma obsługę wifi. W oparciu o inny ESP i moduł karty pamieci plus moduł zegara czasu rzeczywistego skonstruowałem drugi układ serwera. Pierwszy ESP łaczył się przez wifi z drugim w domu, ten drugi logował pomiary dokonywane co minute na karcie pamięci a ja przez siec mogłem kontrolowac temperatury.
W miedzyczasie zakupiłem Thin Client HP T520 za 170zł i zainstalowałem na nim Debiana bez srodowiska graficznego. Postawiłem na nim serwer plikow (Sambę), bazę PostrgeSQL. Zaświtało mi, zeby na nim zrobić webservice do gromadzenia danych, więc zainteresowałem sie jezykiem Rust, bo na linuxie kompiluje sie do kodu natywnego. Napisałem w jezyku Rust webservice do gromadzenia danych w bazie PostgreSQL - ruszyło. Zastąpiło to serwer na ESP. Webservice nie tylko zbiera dane, ale rownież udostępnia parametry. Jednakże przeglądanie tych danych klientem bazodanowym nie było zbyt wygodnie, postanowiłem więc napisać aplikacje na Androida do przeglądania danych i ustawiania parametrów sterownika basenu. Tak też zrobiłem. Mogę w aplikacji podglądać bieżace temperatury wody, kolektora słonecznego, powietrza i stan pompy (właczona/wyłaczona). Mogę tez z aplikacja na telefonie ustawiać roznice temperatur przy jakich ma się właczać/wyłaczać pompa, maksymalną temperature wody w basenie i manulanie sterowac pompą.
Mam OpenVPN do domu, więc z kazdego miejsca na swiecie mam do tego dostęp.
Telefon jest mały, wiec postanowiełm do analizy danych napisac aplikacje na PC w C# .NET Core. Aplikacja laczy się bezposrednio juz z bazą PostrgeSQL i wyswietla wykresy. Na razie tylko wykresy, jeszcze bez sterowania parametrami.
Teraz pytanie po co to zrobiłem? Dla własnej satysfakcji i zabawy. Takie hobby. Wiem, istnieją podobne rozwiązania, ale chciałem mieć od podstaw własne.
Następny krok to wstawienie w kuchni wyświetlacza 4x16 znaków, ktory będzie te informacje wyswietlał, bo żona nie zajrzy do telefonu jaka jest temperatura basenu. Łatwiej jej bedzie na wyswietlaczu zobaczyć.
Docelowo zrobię jeszcze kilka czujników temperatury na wifi, porozmieszczam je po domu i aplikacja na linuxie bedzie je analizować i sterować ogrzewaniem w domu. Można do tego dodać czujniki wilgotności, temperatury na zewnątrz, siły wiatru itp. Na pewno jakieś pomysły jeszcze przyjdą do głowy.
Jeżeli ktos jest zainteresowany podzielę się doświadczeniami.