HaierPi to otwartoźródłowy projekt pozwalający na sterowanie pompami ciepła Haier które w standarcie nie mają za wiele możliwości. Projekt został napisany w Pythonie i cały czas jest rozwijany.
HaierPi powstał z potrzeby chwili. Producent nie dał możliwości na sensowne sterowanie pompą więc trzeba było zrobić to samemu. I tutaj zaczyna się cała historia.
Na wstępie coś o mnie:
Na co dzień zajmuje się IT, a z wykształcenia jestem elektronikiem, więc było trochę łatwiej... ale tylko trochę. W swoim zawodzie nigdy nie pracowałem, od początku zajmowałem się IT. Jednak moja praca w IT to nie programowanie, a administracja systemami, więc w programowaniu musiałem się ostro doszkolić. Z tego też powodu mój wybór padł na Python bo próg wejścia jest mały i można by powiedzieć że jest idioto odporny.
Zanim powstała pierwsza linia kodu, trzeba było w ogóle dowiedzieć się jak to w ogóle działa.
Pierwszy pomysł - pilot od sterowania pompą. Szybki przegląd jak ten pilot jest podłączony, i według oznaczeń powinno być to RS485. Szybkie podłączenie pod linie A B potwierdziły, że to RS485, i lata po nim MODBUS. Teraz pozostało dowiedzieć się jak wygląda struktura danych w rejestrach. I tutaj zaczyna się cała zabawa, o ile niektóre parametry w miarę łatwo można było wyłapać, to inne do tej pory są zagadką.
Pierwsze kroki w pisaniu oprogramowania to pojedyncze komendy czytające lub zapisujące rejestry pompy. Wszystko to z laptopem na kolanach w kotłowni, i tygodnie spędzona na rozszyfrowywaniu co jest do czego.
Kiedy już mniej więcej ogarąłem podstawowe funkcję, zacząłem sklejać to w całość, ale na wszelki wypadek nie chciałem rezygnować z fabrycznego pilota, więc wpiąłem się pomiędzy pompę a pilota, tak aby w razie awarii mojego oprogramowania pompa działała nadal. I tak powstała pierwsza wersja oprogramowania która umożliwiała sterowanie temperaturą CO, CWU i przestawianie trybów.
Teraz potrzebny było coś, co zastąpi podłączonego laptopa. Powstał więc prototyp sterownika, gdzie sercem było raspberry pi zero W (akurat miałem tylko to pod ręką). Wtedy też wpadł mi do głowy pomysł aby sterownik skomercjalizować, powstał więc projekt elektroniki i własnego PCB. PCB zaprojektowałem oczywiście tak aby współpracowały z raspberry pi zero i tutaj powstał pierwszy problem, projekt zaczynałem w czasach COVID-19 i zaburzonymi dostawami. Dostęp do Raspberry Pi był ograniczony, a raczej wręcz był on nie do kupienia, chyba że w zaporowych cenach. Musiałem więc znaleźć alternatywne rozwiązanie. Wybór padł na w miarę dostępny w tamtym czasie NanoPi NEO. I znowu trzeba było zaprojektować nowe PCB która obsłuży zarówno raspberrypi jak i NanoPi NEO. i tak powstała druga wersja sterownika (aktualnie wykorzystywana).
Teraz było już prawie wszystko. Jako że w końcu zdecydowałem się nie komercjalizować projektu, stwierdziłem że w sumie można by po prostu udostępnić kod dla wszystkich, niech inni też skorzystają. I wtedy popatrzyłem na swój kod i stwierdziłem że wstyd komukolwiek to pokazać. Postanowiłem więc na początku udostępnić wszystkim prostą bibliotekę w Pythonie która tylko i wyłącznie tłumaczy ramki modbusowe na informacje, i tworzy ramki na podstawie przekazanych danych. Tak powstała biblioteka PyHaier. Powoli też postanowiłem przepisać swój pierwszy kod, na coś co da się komukolwiek pokazać. Powoli powstał zalążek tego co jest dostępne w tej chwili jako projekt HaierPi. Powstał też kanał Discord aby stworzyć jakiś kanał komunikacji i wsparcia dla osób chcących skorzystać z projektu. Od tamtej pory projekt rozrósł się na tyle mocno że w tej chwili możliwości tej pompy nie odbiegają od tych jakie dają dużo droższe pompy. Ale jako że apetyt rośnie w miarę jedzenia, pomysłów na dalsze udoskonalenia cały czas przybywa. Chciałbym cały czas dynamicznie rozwijać ten projekt i wprowadzać coraz to ciekawsze rozwiązania, może dodatkowa komunikacja z ATW, może współpraca ze sterownikiem zaworów od ogrzewania podłogowego, a może współpraca z zaworami mieszającymi i sterowanie kilkoma niezależnymi strefami grzewczymi. Pomysłów jest dużo i mam nadziej że będzie coraz więcej.