Blog (30)
Komentarze (1.1k)
Recenzje (0)

Hack na HR20, czyli ulepszanie domowych termostatów

@KaworuHack na HR20, czyli ulepszanie domowych termostatów27.10.2017 12:31

Jakiś czas temu wpadłem na genialny pomysł sprawienia sobie elektronicznych termostatów, sterujących zaworami centralnego ogrzewania. Bo można je ustawić, aby same wyłączały ogrzewanie na noc albo na okres czasu, który normalnie spędzamy w pracy. Zdejmują z nas czynność, o której i tak nie bardzo się pamięta, a przy okazji pozwalają zaoszczędzić trochę funduszy (a poza tym są fajne). Padło na model HR20 (albo HR20E, albo HR20 Style, to samo urządzenie) od Honeywell. Tym bardziej, że jakimś cudem, udało mi się je dostać kilka lat temu nówki za 64 zł. W robieniu tego, co powinny robić, sprawiają się bardzo dobrze. No ok, raz na jakiś czas (raz czy dwa w sezonie) zdarza im się zgubić kalibrację i odkręcić zawory tak, że nie są wcale odkręcone. A że już dawno są po gwarancji, a domowa stacja meteo podaje jedną interesującą je informację... Po rozebraniu okazało się, że pracują na ATmega169PV. Czyli w sumie, coś w czym grzebaniu mam trochę doświadczenia. Tym bardziej, że program daje się wgrywać na nie, nawet kiedy włączona jest ochrona pamięci. Co prawda, jest to wtedy operacja nieodwracalna, bo wgranie nowego software kasuje istniejący, ale oj tam. Google poszły w ruch i okazało się, że nie jestem pierwszy, który wpadł na ten pomysł. Ba, istnieje nawet coś zwanego OpenHR20, czyli alternatywny soft napisany przez niemieckiego programistę. Do dzieła zatem.

W najprostszej opcji, wystarczy wyjąć baterię, wypchnąć jakimś płaskim narzędziem zaślepkę z lewej strony urządzenia, podłączyć JTAG, skasować pamięć i umieścić w niej nowy wsad, którego gotowe wersje dostępne są w repozytorium.

[1/2]
[2/2]

Po tej operacji trzeba tylko ponownie skonfigurować strefy grzania w ciągu doby i temperatury docelowe. Prawda jakie to proste? Haha, nie. To by było za proste - znaczy, to może być tak proste - ale nie jak się jest mną. Raz, że nie mam nic, co by potrafiło w JTAG (SWD, TPI, PDI, ISP, owszem, ale nie JTAG). A dwa, w związku z tym, że jakiś geniusz wpadł na pomysł opisania tych wsadów jakoś tak "original_* - honeywell HW without modification" - więc... oryginalny firmware bez modyfikacji, tak? No jak tak i to nie jest wersja z modułem radiowym RFM12, zostaje firmware "thermotronic". Iiiii nie. Thermotronic to, w ogóle nie wiem do czego jest, ale akurat nie do HR20. Na ekranie są śmieci, nic nie działa, a czujnik zdjęcia głowicy działa jako przycisk "menu". Po krótkim "reserczu" okazało się, że ten "original" to właśnie to o co mi chodziło, bo oznacza to, w tym wypadku, "wersja bez RFM". No ale ok, wgrałem ten, mogę wgrać inny. I jakby mi się programator nie odłączył, to pewnie nawet by się to udało i wszyscy żyli by długo i szczęśliwie. Niestety programator odłączył się w trakcie programowania i skończyło się to na tym, że MCU przestał odpowiadać na cokolwiek. Najpewniej przy odłączaniu się, zdołał przeprogramować fuse-bity i odłączyć pin reset. =_= No nic, trzeba wymienić CPU, szczęśliwie jest w jakiejś rozsądnej cenie, 25 zł.

A gdyby kogoś interesowało, jak to cudo zaprogramować używając ISP (czyli na przykład usbasp), to trzeba teraz wypchnąć te dwa zatrzaski:

To uwolni ekran, piny ISP dostępne są pod przyciskami. I mamy w zasadzie dwie opcje, albo coś przylutujemy do nich i te kabelki podłączymy do programatora, albo znajdziemy inną, mniej inwazyjną metodę, taką jak ta:

Czyli potrzeba trzech rezystorów 0,125 W o rozsądnej wartości. W moim wypadku rozsądne 10k. Wpychamy je w trzy przelotki prowadzące na drugą stronę płytki, o te:

I podłączamy do programatora. A skoro już mamy podpięty programator, a nie mamy JTAGa, to może by sobie ułatwić życie bootloaderem. W odmętach oryginalnego repozytorium znajduje się universal avr bootloader, pozwalający na wgranie programu przez port szeregowy (wyprowadzony na złączu z boku). Trzeba tylko skasować pamięć, zaprogramować fuse bity i wgrać bootloader, można jednym poleceniem, wydanym z folderu z bootloaderem:


avrdude -c usbasp -p m169 -e -U flash:w:bootldr.hex -U lfuse:w:0xe2:m -U hfuse:w:0x90:m -U efuse:w:0xfd:m 

Po tej operacji trzeba zaprogramować jeszcze eeprom. Sam główny flash można albo z bootloadera, albo programatorem, ale eeprom niestety tylko z programatora. Jeśli nie zaprogramujemy nowego eepromu, to program główny podczas uruchamiania zasygnalizuje błąd i nie da się uruchomić. Zatem przechodzimy do folderu "original_sww", wydajemy polecenie:


avrdude -c usbasp -p m169 -D -U flash:w:hr20.hex -U eeprom:w:hr20.eep

Przy programowaniu pamięci flash, avrdude będzie chciał ją skasować, włącznie z bootladerem, który właśnie został zaprogramowany, a chcielibyśmy tego uniknąć, stąd "-D".

I zakładając, że nic nie umarło po tej operacji, odłączeniu programatora, ponownym przymocowaniu wyświetlacza i włączeniu, powinien zadziałać po paru sekundach od przywrócenia zasilania. Od teraz mamy dodatkowe strefy włączenia/wyłączenia, detekcję otwartego okna i możliwość komunikowania się z termostatem przez port szeregowy, co może być przydatne. W moim wypadku jest, bo samo zaprogramowanie alternatywnego firmware to stanowczo za mało.Gdyż niedaleko termostatu bytuje sobie taki oto wyświetlacz, który przypadkiem używa kompatybilnych poziomów napięcia:

Mierzy kilka parametrów wnętrza, a poza tym rozmawia sobie z innymi czujnikami, podaje zewnętrzną temperaturę, ciśnienie, zapylenie, temperaturę wnętrza i aktualny pobór pradu w całym mieszkaniu (czy tam cokolwiek co jest dostepne na czujnikach, a jest ustawione aby się pokazywało). A skoro już rozmawia ze stacją meteo, to ma dostępną jedną dlań przydatną informację - temperaturę jaka panuje na zewnątrz. Otoż w tej lokalizacji jest tak, że nie opłaca się włączać ogrzewania jeśli temperatura za dnia oscyluje w okolicy 5 stopni lub więcej. Ot, magicznie w mieszkaniu jest wtedy >= 21 stopni. Okna na zachód czy coś. Termostat jest umieszczony blisko kaloryfera, czyli całkowicie klasycznie dla tego typu urządzeń. A to się łaczy z tym, że gdy kaloryfery są włączone, to jest mu nieco cieplej, z uwagi na bliskość źródła ciepła, niż faktycznie w pomieszczeniu jest. Dlatego jest ustawiony na utrzymywanie 24 stopni. No ale przy ustawionych 24 włączałby się nawet, gdy w pomieszczeniu są całkiem przyjemne, "naturalne" 22 stopnie. Stąd pomysł aby podłaczyć go do tego wyświetlacza przez port szeregowy, co by po pierwsze monitorować co robi i czy działa poprawnie. A po drugie, aby automatycznie przełączał głowicę na "auto", kiedy na zewnątrz jest odpowiednio chłodno, a gdy nie jest, trzymał termostat w trybie "manual"/"off". I to działa. Zawsze jedna operacja mniej do zapamiętania. I co prawda, nie ma to większego znaczenia przy tym, że się zaczyna robić zimno, bo zimno to ja szybko zauważę, ale ma kiedy zrobi się ciepło, a kaloryfer jest dalej włączony niepotrzebnie, bo zapomniałem wyłączyć. I tak oto termostat robi to co umie najlepiej - reguluje temperaturę wnętrza i w sensowności podejmowania decyzji pomaga mu stacja meteo. A gdyby jeszcze zastąpic te dwa paluszki co zasilają głowicę, czterema superkondensatorami ~22F, to można by zrezygnować z wymiany (raz na dwa lata :D) baterii i zasilać z "nadzorcy".

Są też inne skutki uboczne. Aplikacja do monitorowania tego wszystkiego, dostała opcję zdalnego sterowania termostatami. Co oznacza, że można nimi sterowac zdalnie, przez WiFi (a gdyby się uprzeć, nawet przez internet, ale jakoś wcale nie chcę się upierać). Znaczy, kiedy trzeba rano wstać, a już się obudziliśmy (mamy parę minut do wstania), to można właczyć sobie ogrzewanie, nie ruszając się spod kołdry. ;)

[1/2]
[2/2]

A gdyby kogoś to interesowało, to repozytorium z firmware, które jest mniej zaśmiecone niż oryginalne: OpenHR20. A na koniec, zdjęcia "w trakcie", jakby kogoś interesowało jak to w środku wygląda:

[1/2]
[2/2]

[join][image=IMG_0359][join][image=IMG_0361]

Szanowna Użytkowniczko! Szanowny Użytkowniku!
×
Aby dalej móc dostarczać coraz lepsze materiały redakcyjne i udostępniać coraz lepsze usługi, potrzebujemy zgody na dopasowanie treści marketingowych do Twojego zachowania. Twoje dane są u nas bezpieczne, a zgodę możesz wycofać w każdej chwili na podstronie polityka prywatności.

Kliknij "PRZECHODZĘ DO SERWISU" lub na symbol "X" w górnym rogu tej planszy, jeżeli zgadzasz się na przetwarzanie przez Wirtualną Polskę i naszych Zaufanych Partnerów Twoich danych osobowych, zbieranych w ramach korzystania przez Ciebie z usług, portali i serwisów internetowych Wirtualnej Polski (w tym danych zapisywanych w plikach cookies) w celach marketingowych realizowanych na zlecenie naszych Zaufanych Partnerów. Jeśli nie zgadzasz się na przetwarzanie Twoich danych osobowych skorzystaj z ustawień w polityce prywatności. Zgoda jest dobrowolna i możesz ją w dowolnym momencie wycofać zmieniając ustawienia w polityce prywatności (w której znajdziesz odpowiedzi na wszystkie pytania związane z przetwarzaniem Twoich danych osobowych).

Od 25 maja 2018 roku obowiązuje Rozporządzenie Parlamentu Europejskiego i Rady (UE) 2016/679 (określane jako "RODO"). W związku z tym chcielibyśmy poinformować o przetwarzaniu Twoich danych oraz zasadach, na jakich odbywa się to po dniu 25 maja 2018 roku.

Kto będzie administratorem Twoich danych?

Administratorami Twoich danych będzie Wirtualna Polska Media Spółka Akcyjna z siedzibą w Warszawie, oraz pozostałe spółki z grupy Wirtualna Polska, jak również nasi Zaufani Partnerzy, z którymi stale współpracujemy. Szczegółowe informacje dotyczące administratorów znajdują się w polityce prywatności.

O jakich danych mówimy?

Chodzi o dane osobowe, które są zbierane w ramach korzystania przez Ciebie z naszych usług, portali i serwisów internetowych udostępnianych przez Wirtualną Polskę, w tym zapisywanych w plikach cookies, które są instalowane na naszych stronach przez Wirtualną Polskę oraz naszych Zaufanych Partnerów.

Dlaczego chcemy przetwarzać Twoje dane?

Przetwarzamy je dostarczać coraz lepsze materiały redakcyjne, dopasować ich tematykę do Twoich zainteresowań, tworzyć portale i serwisy internetowe, z których będziesz korzystać z przyjemnością, zapewniać większe bezpieczeństwo usług, udoskonalać nasze usługi i maksymalnie dopasować je do Twoich zainteresowań, pokazywać reklamy dopasowane do Twoich potrzeb. Szczegółowe informacje dotyczące celów przetwarzania Twoich danych znajdują się w polityce prywatności.

Komu możemy przekazać dane?

Twoje dane możemy przekazywać podmiotom przetwarzającym je na nasze zlecenie oraz podmiotom uprawnionym do uzyskania danych na podstawie obowiązującego prawa – oczywiście tylko, gdy wystąpią z żądaniem w oparciu o stosowną podstawę prawną.

Jakie masz prawa w stosunku do Twoich danych?

Masz prawo żądania dostępu, sprostowania, usunięcia lub ograniczenia przetwarzania danych. Możesz wycofać zgodę na przetwarzanie, zgłosić sprzeciw oraz skorzystać z innych praw wymienionych szczegółowo w polityce prywatności.

Jakie są podstawy prawne przetwarzania Twoich danych?

Podstawą prawną przetwarzania Twoich danych w celu świadczenia usług jest niezbędność do wykonania umów o ich świadczenie (tymi umowami są zazwyczaj regulaminy). Podstawą prawną przetwarzania danych w celu pomiarów statystycznych i marketingu własnego administratorów jest tzw. uzasadniony interes administratora. Przetwarzanie Twoich danych w celach marketingowych realizowanych przez Wirtualną Polskę na zlecenie Zaufanych Partnerów i bezpośrednio przez Zaufanych Partnerów będzie odbywać się na podstawie Twojej dobrowolnej zgody.