Witajcie moi drodzy.
Przedstawię tu czujnik wody (zalania) Tuya z WiFi zrealizowany w oparciu o moduł XR809 a następnie pokażę moje alternatywne firmware przeznaczone właśnie dla tego typu czujników. Będzie to kolejny już port mojego OpenBeken, który na ten moment wspiera aż cztery różne platformy (BK7231T, BK7231N, XR809 i BL602).
Z XR809 spotkałem się pierwszy raz w tym temacie:
Czujnik otwarcia drzwi/okna WiFi - test, wnętrze, integracja z resztą urządzeń
Wtedy jeszcze nie wiedziałem, że można go w ogóle programować (że jest dostępne pełne SDK i wszystkie potrzebne narzędzia).
Nieco później omawiałem go tutaj:
Własny otwarty firmware dla XR809 kompatybilny z Tasmota HTTP/Home Assistant
ale omówiony wyżej temat nie zawierał wsparcia MQTT oraz uniwersalnego konfiguratora pozwalającego wspierać dowolny typ urządzenia. Był zasadniczo tutorialem podstaw dla początkujących.
Kilka słów o optymalizacji pracy z XR809 napisałem tutaj:
Automatyzacja środowiska pracy (kompilacja, wgrywanie wsadu) XR809/XR3
Ale wciąż było to tym samym, niewydajnym rozwiązaniem, wymagającym przerabiania wsadu pod każde kolejne urządzenie z XR809.
Przełom nastąpił, gdy napisałem od 0 swój system działający analogicznie do Tasmoty, pozwalający użytkownikowi dowolnie wybrać role pinów przez panel WWW, co opisałem tutaj:
[BK7231T] Mój serwer HTTP, konfigurator, wsparcie MQTT z Home Assistant
I na tym będę teraz bazować.
Zakup czujnika zalania
Produkt znalazłem pod hasłem "Tuya Smart WiFi Water Leak Sensor Flood Leakage Level Alarm Overflow Detector". Kupowałem go z pół roku temu, nie pamiętam za ile, ale widzę, że teraz kosztuje około 13$.
Charakterystyczna obudowa mówi nam, że produkt jest pewnie na XR809. Identyczną obudowę mają czujniki otwarcia drzwi/okna, też na tym układzie.
Zestaw wymaga dwóch baterii AA do pracy, których nie załącza w nim sprzedawca. Należy je kupić osobno.
Normalnie czujnik współpracuje z aplikacją Tuya, co testowałem już wcześniej.
Wnętrze czujnika zalania
Ten czujnik zalania wygląda identycznie jak omawiany wcześniej czujnik drzwi. Nawet płytka jest identyczna. Łatwo jest dostać się do środka:
Najwyraźniej w ramach optymalizacji kosztów obie wersje czujnika produkowane są wspólnie aż do momentu kiedy trzeba przylutować sensor.
Wgrywanie wsadu na XR809
Identycznie jak w przytoczonych na początku tematch.
Tu jest instrukcja krok po kroku.
Zdjęcia z lutowania i programowania (LDO TC1264-3.3V zapewnia zasilanie, USB na UART jest w trybie 3.3V):
Najnowszą wersję wsadu umieszczam tutaj:
https://github.com/openshwprojects/OpenBK7231T_App/releases
Sukces:
Konfiguracja OpenXR809
Prezentowane tu firmware (OpenXR809) to port mojego OpenBeken, którego konfigurację omawiałem tutaj:
'Żarówka' LED WiFi RGBCW Tuya - wnętrze, programowanie, BK7231N
Ogrodowy podwójny przekaźnik Tuya CCWFIO232PK - BK7231T - programowanie
Polecam się z nią zapoznać, tutaj będzie analogicznie.
Podłączenie do otwartej sieci WiFi:
Swoją drogą, jak dalej mamy podłączony UART, to widzimy na nim informacje o połączeniu:
Strona konfiguracyjna o IP 192.168.4.1 (tam ustawiamy w Options np. namiary na nasz router; jak IP nie odpowiada to ustawić należy ręcznie sobie adres komputera typu 192.168.4.25, bo pewnie po prostu DHCP nie działa):
Ustawiamy tam też role pinów - przykładowo dla diody LED:
Po ustawieniu tego możemy ją kontrolować przez przycisk (oraz przez MQTT, jak je skonfigurujemy):
Ale najważniejszy dla nas jest detektor wody. Jest on na tym samym pinie gdzie czujnik otwarcia drzwi/okna miał czujnik magnetyczny.
Dla niego musimy wybrać rolę pinu "DigitalInput_NoPullUp", czyli wejście cyfrowe bez rezystorów pull up czy tam pull down:
W drugiej kolumnie, tam gdzie są 0, jest nazwa sprzężonego kanału z danym pinem. Możemy mieć wiele kanałów, wtedy kontrolujemy osobno np. wiele przekaźników. Pary przekaźnik/LED/przycisk o wspólnym kanale działają razem.
Tutaj na próbę połączyłem LED i czujnik poprzez kanał 0.
Sprawdźmy, czy to działa:
Działa! Oczywiście, jak chcemy zamienić stany na odwrotne (np. diody LED lub czujnika) to mamy dostępny odwrócone role pinów, z sufiksem "_n".
Ale tą diodę LED podpiąłem tylko na próbę. Docelowo nadamy jej rolę WiFi - będzie nas informować o tym, czy urządzenie w danym momencie ma dostęp do sieci WiFi:
Parowanie z Home Assistant poprzez MQTT
Teraz musimy jakoś odczytać stan tego czujnika w HA.
Służy do tego MQTT.
Zgodnie z poprzednimi tematami z serii, konfigurujemy MQTT w Options->Configure MQTT.
Restartujemy urządzenie.
Kopiujemy nazwę urządzenia z "Generate Home Assistant config", będzie to przykładowo oxr6173F032. Następnie wypełniamy ręcznie configuration.yaml w HA:
Kod: YAML
Normalnie w konfiguracji dołączam jeszcze:
Kod: YAML
czyli sekcję odpowiedzialną za badanie czy urządzenie jest online, ale tutaj nie jest ona niezbędna. To nie jest żarówka, którą chcemy kontrolować, to jest sensor wilgotności, który raportuje nam gdy zmieni się stan czujnika.
Następnie restartujemy Home Assistant.
Sensor pojawia się na panelu:
Reaguje na dotyk:
UWAGA: Jeśli mamy odwrócone "On" i "Off", to możemy zmienić to zarówno w rolach pinów (rolę pinu na wersję z _n lub bez _n), jak i w configuration.yaml (zamienić payload_on z payload_off).
Inne produkty z XR809/XR3
Z tej serii jest jeszcze kilka innych produktów. Postępujemy z nimi analogicznie.
Czujnik drzwi:
Czujnik zalania-kapsel:
Są też inne produkty z XR809, przykładowo czujnik ruchu bądź zegarek LCD, ale nimi dopiero się zajmę.
Podsumowanie
Przedstawione tu rozwiązanie dla układów XR809 jest w pełni konfigurowalne i uniwersalne, działa analogicznie do Tasmoty. Jest to znacznie lepszy sposób niż to co opisywałem około rok temu, czyli "na sztywno" napisana aplikacja dla danego jednego sensora, wymagająca rekompilacji w celu zmiany np. pinu na którym jest czujnik lub hasła MQTT.
W kolejności do testów z XR809 mam jeszcze kilka urządzeń, m. in:
- czujnik drzwi XR809 (powinien bez problemów zadziałać tutaj)
- czujnik ruchu XR809 (jak wyżej)
- kalendarzyk/termometr/higrometr z XR809 (oparty o TuyaMCU - będzie troszkę zabawy, ale na szczęście, większość tego mam zaimplementowaną już w repozytorium)
Potencjalnie też będę zamierzał się zainteresować innym rodzajem czujników, które korzystają z osobnego mikrokontrolera (też TuyaMCU), który kontroluje zasilanie XR809 lub innego modułu i włącza go tylko wtedy, gdy trzeba zaraportować zmianę stanu (np. otwarcie drzwi). Jest to co innego niż to, co opisałem w tym temacie. Takie podejście pozwala przedłużyć życie baterii, bo tylko MCU ciągle pracuje. Więcej o tym poczytacie na stronie Tuya pod zakładką "Wi-Fi for Low-Power --> Serial Port Protocol".
Na razie to tyle - jeśli znacie jakieś inne urządzenie z XR809 to dajcie znać. Jak ktoś jest zainteresowany testami mojego firwmare, to też zapraszam - pomogę rozwiązywać problemy.
Fajne? Ranking DIY Pomogłem? Kup mi kawę.
