Głowica Tuya - solucja.
Posiadany sprzęt:
- Głowice Tuya typ ZX07 ZX-ZB-HY3X7 HY367 (TuYa TS0601_thermostat_2 control via MQTT | Zigbee2MQTT) (aktualny soft)
- AI-Speaker (HA)
- koordynator ConBee
Zauważone problemy:
- przegrzewanie 1 (zbyt późne zamykanie zaworów)
- przegrzewanie 2 (niedomykanie zaworu w pozycji ZERO)
Zalety:
- dobra cena
- dużo parametrów do ustawienia
- możliwość odczytu pozycji zaworu
Analiza działania głowic:
- samoistna komunikacja z koordynatorem następuje co 15 minut standardowo
- nasłuch jest ciągły co umożliwia zmianę parametrów
- każda komunikacja powoduje przesłanie aktualnych parametrów z głowicy
- zmiana stopnia otwarcia zaworu odbywa się wyłącznie jeśli wystąpi jakaś komunikacja lub co 15 minut
- szumnie nazwany algorytm PID działa tak, że każda zmiana jest o 5%
- algorytm nazwany jako On/Off działa tak, że każda zmiana jest o 25%
Założenia odnośnie wody gorącej:
- kocioł pelletowy
- przeciętne czasy zał/wył to około 2.5h grzania 2-3h przerwy.
Wnioski:
- standardowo zamykanie / otwieranie zaworu trwa 15minut * 60/5 = 15 * 12 = 180 minut!!!
- czasami, po jakimś czasie następuje “rozregulowanie” głowicy co objawia się tym, że nie domykany jest zawór
i w stanie otwarcia 0% przepuszcza, powodując przegrzania. Może to być sprawa rozszerzalności cieplnej elementów albo błędy algorytmu. - podłożenie monety 20gr raczej nic nie daje (założyłem)
- PID to raczej tylko krok ustawień zaworu 5%
- ON/OFF to raczej tylko krok ustawień zaworu 25%
Moje rozwiązanie:
Problem 1 (zbyt wolne zamykanie zaworów)
Co zadany czas (ja ustawiłem 3 minuty) wymusić komunikację z głowicą.
Ustawić jakiś nieistotny parametr. Co kto lubi. Ja ustawiam “away days = 0”.
Wymuszenie komunikacji powoduje “popchnięcie” algorytmu ustawiania pozycji zaworu.
W moim przypadku głowica zamknie się w czasie 3 * 5% = 3 * 60/5 = 3 * 12 = 36 minut.
Tutaj wyznacznikiem jest głownie czas życia baterii.
Można ustawić mniejszy czas, np. 1 minutę i głowica zamknie się w 12 minut.
A można i szybciej. Nie schodziłbym chyba poniżej 10 sekund bo trzeba dać czas na komunikację
i wykonanie polecenia wraz z ustawieniem pozycji zaworu.
Ale hardcorowcy mogą w ten sposób zamknąć zawór w ciągu minuty
Tu byłoby dobrze zrobić jakąś logikę aby robić to tylko w chwili gdy zawór się otwiera czy zamyka, bo szkoda baterii.
Algorytm idealny:
- jeśli pozycja zaworu jest większa od poprzednio odczytanej pozycji to skomunikuj się z głowicą (zawór się otwiera)
- jeśli pozycja zaworu jest mniejsza od poprzednio odczytanej pozycji to skomunikuj się z głowicą (zawór się zamyka)
- jeśli pozycja zaworu jest taka jak poprzednio (czyli 0 lub 100) to nie rób nic.
To dałoby spore zaoszczędzenie baterii i wyłączyłoby niepotrzebną komunikację.
U mnie na razie komunikacja jest wymuszona co 3 minuty na sztywno. Na razie wystarczy.
Problem 2 (niedomykanie zaworów)
Gdy zawór się zamknie (pozycja zaworu spadnie do 0%) wymusić pozycję OFF lub wyłączyć głowicę, a potem,
po jakimś czasie opóźnienia (5-10s) przywrócić stan NORMAL lub załączyć głowicę.
Nastąpi domknięcie zaworu do prawdziwego ZERA
Algorytm idealny:
- jeśli pozycja zaworu osiągnęła 0% i temperatura jest równa lub większa od nastawionej plus histereza to wyłącz/delay/załącz głowicę
Algorytm poprawny:
- jeśli pozycja zaworu osiągnęła 0% to wyłącz/delay/załącz głowicę
Podsumowanie:
Za niewielkie pieniądze mamy poprawnie działającą głowicę z duża ilością możliwości, którą można polecać
P.S.
Celowo zrobiłem to opisowo, bo to można zrobić na różnych platformach, na każdej inaczej.
Zostawiam pole do popisu dla expertów od poszczególnych platform.
Jeśli o czymś zapomniałem, napisałem niejasno itp. to proszę o info.