Jeśli w naszym domu jest stary system ogrzewania, ze zwykłym termostatem na pokrętło - takim jak pokazany na zdjęciu - możemy spróbować go unowocześnić. Autor tego projektu mieszka w domu mającym około 30 lat i tyle samo lat ma instalacja sterująca temperaturą w pomieszczeniach. O ile trzydzieści lat dla budynku to nie tak dużo, to dla technologii sterowania temperaturą w budynku to cała epoka.
Obecnie oferowane rozwiązania komercyjne mają dwie istotne wady:
* Wysoka cena,
* Produkt jako usługa.
Zwłaszcza to drugie jest problematyczne, ponieważ oznacza to, że wyłączenie serwerów czyni nasze urządzenie niesprawnym. W przypadku systemu ogrzewania jest to o tyle istotne, że nie chcielibyśmy, aby w środku zimy nasze ogrzewanie przestało pracować. Możliwe jest lepsze rozwiązanie - stworzenie własnego systemu sterowania ogrzewaniem w oparciu o proste i łatwo dostępne moduły automatyki domowej.
Zaprezentowany moduł nie wygląda może najlepiej, jednakże spełnia on swoje zadanie. Jego główne cechy to:
* Możliwość używania klasycznego pokrętła termostatu;
* Zdalny dostęp do termostatu;
* Tryb AWAY;
* Wskaźnik optymalnej temperatury;
* Współpraca z asystentem domowym Alexa.
Krok 1: Jak działa termostat
Termostat jest prawdopodobnie podłączony do napięcia sieciowego! Nie próbuj manipulować w obwodzie, dopóki nie upewnisz się, że system jest odłączony. Możesz zrobić sobie krzywdę i uszkodzić podłączony sprzęt. Rozważ skonsultowanie się z wykwalifikowanym elektrykiem, aby zapewnić sobie bezpieczeństwo podczas instalacji systemu.
Termostat Honeywell, jaki posiada autor poradnika, to jednostka naścienna zasilana z sieci (moduł Sonoff potrzebują do działania co najmniej 90 V, w sieci znajdziemy 230 V). Skrzynia podłączona jest do głównej jednostki sterującej. To samo najprawdopodobniej jest takie samo. Jeśli masz 3 przewody, nie ma połączenia między urządzeniem naściennym.
Do termostatu podłączone są cztery przewody: trzy przewody sterujące i czwarty - uziemienie. Jako że do termostatu podłączone jest napięcie sieciowe, do sterowania można wykorzystać moduł Sonoff Basic. Przyjrzyjmy się sygnałom:
Niebieski - ziemia;
Żółty - sygnał sterujący - gdy podamy tutaj fazę, ogrzewanie jest załączone;
Czerwony - napięcie fazowe służące do zasilania termostatu.
Sterowanie jest bardzo proste - wystarczy, że nasz moduł będzie zwierał czerwony z żółtym za każdym razem, gdy będziemy chcieli załączyć piec. Wszystko wydaje się bardzo proste, co nie zmienia faktu, iż musimy dokładnie uważać, co robimy podczas podłączania kabli, bo niepoprawne ich połączenie może doprowadzić do uszkodzenia sterownika czy chociażby uruchomić bezpiecznik. Do sterowania takim termostatem wystarczy nam Sonoff Basic.
Krok 2: Przygotowywanie modułu Sonoff Basic
Zanim zaczniemy podłączać kable do modułu sterującego, musimy podpiąć do niego sensor temperatury. W tej roli wykorzystano moduł z układem DHT11. Na Sonoffa wgrywamy firmware Tasmotai, konfigurujemy go do współpracy z tym termometrem.
Termometr podłączamy w następujący sposób:
VCC - 3,3 V
GND - masa
Sygnał - GPIO14.
Teraz, po podłączeniu wszystkiego w całość, możemy Sonoffa podpiąć do termostatu. Autor po prostu wykonał otwór w obudowie starego urządzenia, by możliwe było podpięć kabli = póki co to tylko prototyp i sprawdzenie pewnej koncepcji. Docelowo planuje wydrukować obudowę dla całego systemu, by móc estetycznie opakować stary termostat i moduł Sonoff w całość.
Podłączając moduł do termostatu zachowajmy szczególną ostrożność, by nie zewrzeć ze sobą kabli. Podłączamy je w następujący sposób:
Sonoff -> Termostat
INPUT Live - czwarty terminal (czerwony);
INPUT GND - pierwszy neutralny (niebieski);
OUTPUT Signal - drugi terminal (żółty).
Krok 3: NodeRED
Na pokazanym powyżej filmie autor prezentuje swoją konstrukcję. Pokazana tam wersja NodeRED jest starsza niż obecna, ponieważ program jest ciągle udoskonalany. W artykule (patrz: źródło) dostępna powinna być aktualna wersja opisu jego działania, gdyż jest on aktualizowany wraz ze zmianami w samym NodeRED.
Strumień danych o temperaturze
DHT11 wysyła do serwera NodeRED informacje o temperaturze co X sekund, gdzie liczba ta może być konfigurowana przez konsolę Tasmota. Wystarczy wpisać komendę z odpowiednim okresem pomiaru w sekundach (od 10 do 3600 sekund):
Obecnie autor wykorzystuje możliwie najszybszy pomiar, z okresem co dziesięć sekund, jednakże wynika to głównie z faktu, że układ jest w fazie testów i tak krótki okres odświeżania danych o temperaturze ułatwia debugging. W realnym użytkowaniu wysyłanie danych o temperaturze co 10 sekund nie ma najmniejszego sensu w takim zastosowaniu.
Węzeł MQTT pobiera dane z adresu:
I najważniejsze dane zapisuje w następujących obiektach:
Aby ograniczyć liczbę błędów temperatury, do systemu dodano węzeł uśredniający, który przekazuje wyliczone średnie dalej i aktualizuje w ten sposób zmienną flow w NodeRED:
Aktualizowanie widgetu
Autor zdecydował się na aktualizację widgetu co pięć sekund, więc z taką częstotliwością wysyłane są dane do niego. Oczywiście regulacja temperatury monitorowana jest w czasie rzeczywistym i reaguje natychmiastowo.
Każdy węzeł przesyła dane z określonym topiciem do widgetów podobnych do tych w NESTcie:
* colour (heating|cooling*|off & hvac_state)
* leaf (true|false & has_leaf)
* away (true|false & away)
* Ambient temp (number & ambient_temperature)
* Target temp (number & target_temperature)
* - nie jest obecnie w użyciu
NodeRED: funkcje węzłów do aktualizacji widgetów
colour:
leaf:
Nadpisanie colour w trybie away:
Tryb away:
Docelowa temperatura:
Jak widzicie, autor zrezygnował ze zmiennych flow tak, aby mócodczytywać wartości poszczególnych parametrów w każdym dowolnym momencie. Poszczególne parametry to:
?TempAmbient? ? Przechowuje obecną temperaturę.
?TempTarget? ? Przechowuje zadaną temperaturę.
?leaf? ? Wyświetla liść.
?away? ? Wyświetla status w trybie away.
?heatingState? ? Zmienia kolor wyświetlacza.
?heatingSwitch? ? Kontroluje stan przekaźnika w Sonoffie.
Największym wyzwaniem było sprawienie, że informacje aktualizowały się we wszystkich elementach system w odpowiednim momencie i wtedy, gdy inne urządzenia (np. Alexa) chcą je pobrać lub aktualizować. Dlatego też w różnych miejscach zapisane są różne warunki w JavaScripcie - za każdym razem, gdy wartości są aktualizowane, zmienna typu flow jest przesyłana, a widget odświeżany.
[u]Pokrętło[/b]
Sterujący temperaturą suwak-pokrętło w widgecie potrzebuje dodatkowej aktualizacji danych. Wysyła on dane (liczbę) z topiciem "slider", za każdym razem, gdy się nim poruszy. Dodatkowo, autor chciał, by w wielu miejscach w interfejsach webowych, zmieniał on swoją pozycję na nastawioną. Aby to osiągnąć, co pięć sekund jego pozycja jest aktualizowana do obecnie ustawionej temperatury.
Kontrola przekaźnika
Kontrola przekaźnika jest bardzo prosta, zajmuje (obecnie) jedynie dwa wejścia. Jednym z nich jest zmienna logiczna z Alexy, a drugim zmienna "heating Switch". Nie ma tutaj konieczności natychmiastowego uruchamiania przekaźnika, więc jego stan aktualizowany jest raz na pięć sekund, tak jak pozostałe elementy w systemie.
Przekaźnik podłączony jest poprzez MQTT. Węzeł wydaje komendy ON i OFF poprzez:
Funkcja w węźle przyjmuje zmienne logiczne z Alexy i zmienia stan wejścia w zależności od zmiennej heatingSwitch:
Integracja z Alexą
W urządzeniu tym wyłączona jest opcja automatycznej odpowiedzi. Zamiast tego, odpowiedź jest generowana przez specjalnie do tego celu stworzony skrypt, który jest w stanie odesłać do Alexy m.in. zadaną temperaturę. W dużym skrócie, zmienna msg.payload mówi o tym, czy zapytanie zakończyło się sukcesem (true), czy nie (false).
Jakkolwiek nie jest to najlepszy sposób, autor zdecydował się na potwierdzenie wysyłane w osobnej wiadomości tak, aby móc trochę lepiej wszystko kontrolować. W typowym przypadku na końcu każdego łańcucha kolumn powinno zostać wysłane tego rodzaju potwierdzenie. W zaimplementowanym podejściu istnieje ryzyko, że system nie zwróci błędów, jeżeli te wystąpią. Aby zachować spójność, zmienne aktualizowane są tylko w momencie, gdy pętla odświeża dane w widgecie.
Podsumowanie
W ten sposób możemy sterować poprzez telefon komórkowy naszym termostatem. Takich modułów możemy dopiąć wiele, jeśli w naszym mieszkaniu mamy więcej niż jeden termostat kontrolujący temperaturę.
Jeśli nasz dashboard NodeRED będzie wyeksponowany do sieci zewnętrznej, to cały nasz system ogrzewania w domu może być kontrolowany zdalnie. W takiej sytuacji jednak warto zaznajomić się z informacjami zawartymi tutaj, które dotyczą bezpieczeństwa w tego rodzaju rozwiązaniach. Nie chcemy przecież, by ktoś niepowołany bawił się naszym termostatem.
Źródło: https://www.instructables.com/id/NEST-Your-Old-Thermostat/
Obecnie oferowane rozwiązania komercyjne mają dwie istotne wady:
* Wysoka cena,
* Produkt jako usługa.
Zwłaszcza to drugie jest problematyczne, ponieważ oznacza to, że wyłączenie serwerów czyni nasze urządzenie niesprawnym. W przypadku systemu ogrzewania jest to o tyle istotne, że nie chcielibyśmy, aby w środku zimy nasze ogrzewanie przestało pracować. Możliwe jest lepsze rozwiązanie - stworzenie własnego systemu sterowania ogrzewaniem w oparciu o proste i łatwo dostępne moduły automatyki domowej.
Zaprezentowany moduł nie wygląda może najlepiej, jednakże spełnia on swoje zadanie. Jego główne cechy to:
* Możliwość używania klasycznego pokrętła termostatu;
* Zdalny dostęp do termostatu;
* Tryb AWAY;
* Wskaźnik optymalnej temperatury;
* Współpraca z asystentem domowym Alexa.
Krok 1: Jak działa termostat
Termostat jest prawdopodobnie podłączony do napięcia sieciowego! Nie próbuj manipulować w obwodzie, dopóki nie upewnisz się, że system jest odłączony. Możesz zrobić sobie krzywdę i uszkodzić podłączony sprzęt. Rozważ skonsultowanie się z wykwalifikowanym elektrykiem, aby zapewnić sobie bezpieczeństwo podczas instalacji systemu.
Termostat Honeywell, jaki posiada autor poradnika, to jednostka naścienna zasilana z sieci (moduł Sonoff potrzebują do działania co najmniej 90 V, w sieci znajdziemy 230 V). Skrzynia podłączona jest do głównej jednostki sterującej. To samo najprawdopodobniej jest takie samo. Jeśli masz 3 przewody, nie ma połączenia między urządzeniem naściennym.
Do termostatu podłączone są cztery przewody: trzy przewody sterujące i czwarty - uziemienie. Jako że do termostatu podłączone jest napięcie sieciowe, do sterowania można wykorzystać moduł Sonoff Basic. Przyjrzyjmy się sygnałom:
Niebieski - ziemia;
Żółty - sygnał sterujący - gdy podamy tutaj fazę, ogrzewanie jest załączone;
Czerwony - napięcie fazowe służące do zasilania termostatu.
Sterowanie jest bardzo proste - wystarczy, że nasz moduł będzie zwierał czerwony z żółtym za każdym razem, gdy będziemy chcieli załączyć piec. Wszystko wydaje się bardzo proste, co nie zmienia faktu, iż musimy dokładnie uważać, co robimy podczas podłączania kabli, bo niepoprawne ich połączenie może doprowadzić do uszkodzenia sterownika czy chociażby uruchomić bezpiecznik. Do sterowania takim termostatem wystarczy nam Sonoff Basic.
Krok 2: Przygotowywanie modułu Sonoff Basic
Zanim zaczniemy podłączać kable do modułu sterującego, musimy podpiąć do niego sensor temperatury. W tej roli wykorzystano moduł z układem DHT11. Na Sonoffa wgrywamy firmware Tasmotai, konfigurujemy go do współpracy z tym termometrem.
Termometr podłączamy w następujący sposób:
VCC - 3,3 V
GND - masa
Sygnał - GPIO14.
Teraz, po podłączeniu wszystkiego w całość, możemy Sonoffa podpiąć do termostatu. Autor po prostu wykonał otwór w obudowie starego urządzenia, by możliwe było podpięć kabli = póki co to tylko prototyp i sprawdzenie pewnej koncepcji. Docelowo planuje wydrukować obudowę dla całego systemu, by móc estetycznie opakować stary termostat i moduł Sonoff w całość.
Podłączając moduł do termostatu zachowajmy szczególną ostrożność, by nie zewrzeć ze sobą kabli. Podłączamy je w następujący sposób:
Sonoff -> Termostat
INPUT Live - czwarty terminal (czerwony);
INPUT GND - pierwszy neutralny (niebieski);
OUTPUT Signal - drugi terminal (żółty).
Krok 3: NodeRED
Na pokazanym powyżej filmie autor prezentuje swoją konstrukcję. Pokazana tam wersja NodeRED jest starsza niż obecna, ponieważ program jest ciągle udoskonalany. W artykule (patrz: źródło) dostępna powinna być aktualna wersja opisu jego działania, gdyż jest on aktualizowany wraz ze zmianami w samym NodeRED.
Strumień danych o temperaturze
DHT11 wysyła do serwera NodeRED informacje o temperaturze co X sekund, gdzie liczba ta może być konfigurowana przez konsolę Tasmota. Wystarczy wpisać komendę z odpowiednim okresem pomiaru w sekundach (od 10 do 3600 sekund):
Code: bash
Obecnie autor wykorzystuje możliwie najszybszy pomiar, z okresem co dziesięć sekund, jednakże wynika to głównie z faktu, że układ jest w fazie testów i tak krótki okres odświeżania danych o temperaturze ułatwia debugging. W realnym użytkowaniu wysyłanie danych o temperaturze co 10 sekund nie ma najmniejszego sensu w takim zastosowaniu.
Węzeł MQTT pobiera dane z adresu:
sonoff/tele/SENSOR
I najważniejsze dane zapisuje w następujących obiektach:
msg.payload.DHT11.Temperature
msg.payload.DHT11.Humidity
Aby ograniczyć liczbę błędów temperatury, do systemu dodano węzeł uśredniający, który przekazuje wyliczone średnie dalej i aktualizuje w ten sposób zmienną flow w NodeRED:
Code: c
Aktualizowanie widgetu
Autor zdecydował się na aktualizację widgetu co pięć sekund, więc z taką częstotliwością wysyłane są dane do niego. Oczywiście regulacja temperatury monitorowana jest w czasie rzeczywistym i reaguje natychmiastowo.
Każdy węzeł przesyła dane z określonym topiciem do widgetów podobnych do tych w NESTcie:
* colour (heating|cooling*|off & hvac_state)
* leaf (true|false & has_leaf)
* away (true|false & away)
* Ambient temp (number & ambient_temperature)
* Target temp (number & target_temperature)
* - nie jest obecnie w użyciu
NodeRED: funkcje węzłów do aktualizacji widgetów
colour:
Code: c
leaf:
Code: c
Nadpisanie colour w trybie away:
Code: c
Tryb away:
Code: c
Docelowa temperatura:
Code: c
Jak widzicie, autor zrezygnował ze zmiennych flow tak, aby mócodczytywać wartości poszczególnych parametrów w każdym dowolnym momencie. Poszczególne parametry to:
?TempAmbient? ? Przechowuje obecną temperaturę.
?TempTarget? ? Przechowuje zadaną temperaturę.
?leaf? ? Wyświetla liść.
?away? ? Wyświetla status w trybie away.
?heatingState? ? Zmienia kolor wyświetlacza.
?heatingSwitch? ? Kontroluje stan przekaźnika w Sonoffie.
Największym wyzwaniem było sprawienie, że informacje aktualizowały się we wszystkich elementach system w odpowiednim momencie i wtedy, gdy inne urządzenia (np. Alexa) chcą je pobrać lub aktualizować. Dlatego też w różnych miejscach zapisane są różne warunki w JavaScripcie - za każdym razem, gdy wartości są aktualizowane, zmienna typu flow jest przesyłana, a widget odświeżany.
[u]Pokrętło[/b]
Sterujący temperaturą suwak-pokrętło w widgecie potrzebuje dodatkowej aktualizacji danych. Wysyła on dane (liczbę) z topiciem "slider", za każdym razem, gdy się nim poruszy. Dodatkowo, autor chciał, by w wielu miejscach w interfejsach webowych, zmieniał on swoją pozycję na nastawioną. Aby to osiągnąć, co pięć sekund jego pozycja jest aktualizowana do obecnie ustawionej temperatury.
Code: c
Kontrola przekaźnika
Kontrola przekaźnika jest bardzo prosta, zajmuje (obecnie) jedynie dwa wejścia. Jednym z nich jest zmienna logiczna z Alexy, a drugim zmienna "heating Switch". Nie ma tutaj konieczności natychmiastowego uruchamiania przekaźnika, więc jego stan aktualizowany jest raz na pięć sekund, tak jak pozostałe elementy w systemie.
Przekaźnik podłączony jest poprzez MQTT. Węzeł wydaje komendy ON i OFF poprzez:
sonoff/cmnd/POWER1
Funkcja w węźle przyjmuje zmienne logiczne z Alexy i zmienia stan wejścia w zależności od zmiennej heatingSwitch:
Code: c
Integracja z Alexą
W urządzeniu tym wyłączona jest opcja automatycznej odpowiedzi. Zamiast tego, odpowiedź jest generowana przez specjalnie do tego celu stworzony skrypt, który jest w stanie odesłać do Alexy m.in. zadaną temperaturę. W dużym skrócie, zmienna msg.payload mówi o tym, czy zapytanie zakończyło się sukcesem (true), czy nie (false).
Jakkolwiek nie jest to najlepszy sposób, autor zdecydował się na potwierdzenie wysyłane w osobnej wiadomości tak, aby móc trochę lepiej wszystko kontrolować. W typowym przypadku na końcu każdego łańcucha kolumn powinno zostać wysłane tego rodzaju potwierdzenie. W zaimplementowanym podejściu istnieje ryzyko, że system nie zwróci błędów, jeżeli te wystąpią. Aby zachować spójność, zmienne aktualizowane są tylko w momencie, gdy pętla odświeża dane w widgecie.
Code: c
Podsumowanie
W ten sposób możemy sterować poprzez telefon komórkowy naszym termostatem. Takich modułów możemy dopiąć wiele, jeśli w naszym mieszkaniu mamy więcej niż jeden termostat kontrolujący temperaturę.
Jeśli nasz dashboard NodeRED będzie wyeksponowany do sieci zewnętrznej, to cały nasz system ogrzewania w domu może być kontrolowany zdalnie. W takiej sytuacji jednak warto zaznajomić się z informacjami zawartymi tutaj, które dotyczą bezpieczeństwa w tego rodzaju rozwiązaniach. Nie chcemy przecież, by ktoś niepowołany bawił się naszym termostatem.
Źródło: https://www.instructables.com/id/NEST-Your-Old-Thermostat/
Cool? Ranking DIY