Pokażę tu konfigurację i działanie czujnika otwarcia/drzwi okna w OpenBeken, zrealizowanego bez TuyaMCU, czyli w oparciu o głęboki sen modułu WiFi. Tak zrealizowany czujnik łączy się z WiFi tylko gdy trzeba wysłać zmianę stanu do serwera MQTT, w przeciwnym razie "zasypia" i odłącza się od sieci, wchodząc w stan bardzo małego poboru energii. Z tego stanu dopiero jest w stanie wybudzić go zdarzenia na pinach, czyli wciśnięcie przycisku od konfiguracji albo zmiana stanu drzwi/okna.
Konfiguracja w OpenBeken
Konfiguracja tu przeznaczona jest dla czujników tego typu (zdjęcie od użytkownika):
miroww1 napisał:
Wszystko jest uruchamia się automatycznie, użytkownik musi tylko ustawić rolę pinu czujnika na DoorSensorWithDeepSleep. Dodatkowo dla przycisku konfiguracyjnego ustawiamy rolę Button. Dla sensora drzwi ustawiamy kanał np. pierwszy, dla przycisku kanał drugi.
Nic więcej nie trzeba.
Po restarcie zobaczymy:
Czujnik "zaśnie" po upływie tego czasu:
Door: time until deep sleep: 11
Zmiana stanu drzwi resetuje ten czas, odliczanie rozpoczyna się od nowa.
Czujnik może wybudzić zarówno zmiana stanu drzwi, jak i wciśnięcie przycisku.
Rozpoczęcie OTA (aktualizacji WiFi) również blokuje sen.
Brak połączenia z MQTT też blokuje sen, ale tylko na 300 sekund (wartość będzie do zmiany w konfiguracji):
Opóźnienie ma na celu upewnienie się, że czujnik zdąży zgłosić swój stan do MQTT przed snem.
Pobór prądu w trakcie pracy WiFi (sporadycznie waha się od 50mA do 150mA):
Pobór prądu w trakcie snu:
Prezentacja działania na video
Nie posiadam takiego typu czujnika, więc zasymulowałem go poprzez podłączenie włącznika.
Video pokazuje moduł WiFi, włącznik (symulujący czujnik otwarcia drzwi), amperomierz oraz telefon, gdzie widać jak strona odlicza czas do włączenia snu.
Wybudzenie działa w obu przypadkach - zarówno gdy "drzwi są zamknięte", oraz gdy "drzwi są otwarte".
Na filmie też widać jak zmienia się pobór prądu, polecam powiększyć video.
A jak wygląda czujnik oparty o TuyaMCU?
Warto zaznaczyć, że czujnik oparty o TuyaMCU już opisywałem. Opis znajduje się tutaj:
https://www.elektroda.com/rtvforum/topic3914412.html (English)
https://www.elektroda.pl/rtvforum/topic3914412.html (Polski)
Taki czujnik charakteryzuje obecność MCU na PCB:
W jego przypadku to TuyaMCU (mikrokontroler) obsługuje zasilanie modułu WiFi i calkiem moduł WiFi wyłącza poprzez tranzystor. Odcina mu zasilanie. To co innego niż czujnik z tematu. Widzimy tu dwa różne podejścia Tuya do oszczędzania energii. Jedno wykorzystuje low power MCU a drugie głęboki sen na samym module WiFi.
Oba podejścia są wspierane przez OpenBeken.
Konfiguracja Home Assistant
Upewnij się, że ta flaga jest zaznaczona:
Ustaw dane MQTT w Config:
Jeśli urządzenie chce się wyłączyć w trakcie ustawiania, to albo wyłącz sterownik drzwi komendą stopDriver DoorSensor albo zasymuluj otwarcie/zamknięcie drzwi.
Wykonaj tu Discovery:
Urządzenie samo się doda do Home Assistant, o ile już jest połączenie MQTT.
Streszczenie konfiguracji
Podsumowując, aby skonfigurować taki czujnik należy:
1. Wgrać mu OpenBeken
https://github.com/openshwprojects/BK7231GUIFlashTool
2. Skonfigurować WiFi i dane MQTT
3. Ustawić rolę Button dla przycisku konfiguracyjnego, kanał 1, oraz rolę DoorSensor dla czujnika drzwi, kanał 0 (można też spróbować wersję nPup, czyli bez rezystora pull up)
4. Wykonać MQTT discovery:
https://www.youtube.com/watch?v=pkcspey25V4&ab_channel=Elektrodacom
Gotowe! Teraz należy tylko pamiętać, że jak nie chcemy by czujnik nam zasnął w trakcie konfiguracji to musimy albo zmieniać stan drzwi, albo wciskać przycisk, albo wysłać mu komendę "stopDriver DoorSensor".
Podsumowanie
Tryb głębokiego snu wraz z wybudzaniem poprzez zmianę stanu pinu jest niezbędny w czujnikach otwarcia/drzwi okna zrealizowanych bez TuyaMCU. Bez tego trybu bateria wyładowałaby się pewnie w niecały dzień, może tryb dynamicznego oszczędzia energii (komenda PowerSave 1) by trochę pomógł, ale też pewnie nie dużo.
Pewnym minusem głębokiego snu jest to, że czujnik drzwi musi najpierw nawiązać połączenie z WiFi i z MQTT zanim zaraportuje się swój stan, ale na to już nie wiem co poradzić. Opóźnienie jest akceptowalne.
Konfiguracja takiego czujnika w OpenBeken jest bardzo prosta, nie trzeba pisać żadnych skryptów, a Home Assistant Discovery pomaga go równie prosto połączyć z Home Assistant.
PS: Temat powstał m. in. na prośby użytkowników z tych tematów:
https://www.elektroda.com/rtvforum/topic3959677.html
https://www.elektroda.com/rtvforum/topic3914412-30.html#20450113
Fajne? Ranking DIY Pomogłem? Kup mi kawę.