
Witajcie moi drodzy.
Pokażę tutaj nieco mniej typowy rodzaj przekaźnika z WiFi, który pozwala wykorzystać posiadany przez nas wcześniej przycisk bistabilny do sterowania urządzenia.
Klasyczne przekaźniki IoT typu "sonoff" posiadają tylko mały przycisk chwilowy (monostabilny) na obudowie, więc jak mamy np. lampkę z przyciskiem bistabilnym to musimy z niego zrezygnować. Oczywiście pozostawienie jej włącznika przed inteligentnym przekaźnikiem nic nam nie da, bo w razie wyłączenia jej na jej przycisku przekaźnik i tak by nie działał.
Dla jasności - przycisk bistabilny ma dwa stany w których zostaje jak go przełączymy (zostaje na "On" lub "Off"), a monostabilny ma jeden stały stan, gdy go wciśniemy to puszczeniu zawsze wraca do pierwszego stanu.
Jest jednak dobre rozwiązanie tego problemu - wystarczy podłączyć do naszego inteligentnego przekaźnika wspomniany wcześniej przycisk bistabilny i tak go obsłużyć w kodzie programu, by zmiana jego stanu skutkowała zmianą stanu przekaźnika. Jest to o tyle wygodne, że równie dobrze wtedy możemy zmieniać stan przekaźnika poprzez WiFi. Jedyne, co wtedy się zmieni to to, że pozycje "On" i "Off" na przycisku bistabilnym stracą wtedy na znaczeniu, bo jego rzeczywista pozycja nie będzie miała znaczenia dla sterownika, tylko sam akt jego przełączenia.
Oczywiście są do tego gotowe rozwiązania działające wraz z aplikacją Tuya, ale tutaj przedstawię użycie takiego przekaźnika wraz z moim otwartym firwmare dla układów z rodziny Beken. Zapewni to nam niezależność od serwerów producenta, bezpieczeństwo i anonimowość (chmura nie zacznie zbierać danych jak korzystamy z urządzeń). W temacie też załączę kilka szczegółów na temat implementacji obsługi takiego przełącznika.
Dodatkowo znów omówię tu wgrywanie OpenBeken, gdyż w tym konkretnym przypadku przekaźnika występuje z tym pewien problem - trzeba będzie przeciąć jedną ścieżkę.
UWAGA
Opisane tu przekaźniki operują na śmiertelnie niebezpiecznym potencjale sieciowym. Ponadto większość przekaźników tego typu odcina tylko jedną żyłę (jest tam pojedynczy przekaźnik), i to od użytkownika zależy jaką, więc możliwe jest, że niefortunnie będziemy odcinać zero a faza zostanie na stałe podłączona do sterowanego urządzenia... zakładam, że czytelnik o tym wszystkim wie i jest świadom jak podłączyć wszystko elektrycznie zgodnie ze sztuką. Tutaj skupię się na programowaniu smart switchy.
Dodatkowo też warto pamiętać, że często zasilacze z takich gadżetów też nie mają separacji (i np. na GND podpiętym do WB2S może być potencjał fazy).
Zakup i wnętrze ZN268131
ZN268131 kupiłem w jednym z serwisów ze sprzedażą internetową. Jest to dość popularny produkt. Można go znaleźć nawet po 20-30zł z darmową wysyłką. Nie zawsze jest podpisany symbolem, który tu podaję.
ZN268131 wyróżnia obecność terminalu śrubowego dla przełącznika - oznaczenia S1 i S2.
Przychodzi w takim pudełeczku:




Aby wgrać wsad, zdejmujemy plastikową pokrywę:


Od spodu widzimy układ zasilacza beztransformatorowego 5V (AP8506), za nim jest regulator LDO 3.3V zapewniający stabilne 3.3V dla modułu WiFi, dalej przycisk (KEY1) , przyłącze płytki z modułem WiFi (tylko 5 sygnałów tam idzie, a właściwie to 3.3V, GND, wyjście do przekaźnika (poprzez tranzystor Q1) i dwa wejścia - jedno na duży przycisk bistabilny, drugie na ten mały na obudowie.
Po wyjęciu widać już moduł WiFI (WB2S czyli BK7231T, nie wiem czemu bez ekranu tym razem), są też widoczne tu pewne zabezpieczenia (rezystor bezpiecznikowy F2, niebieski warystor) oraz filtr na wejściu (dwa kondensatory elektrolityczne, EC1 i EC2 a między nimi dławik):





Programowanie ZN268131
Absolutnie nie można zasilać jednocześnie układu z sieci i go programować przez UART. Zasilimy go osobno, poprzez 5V podpięte przed AMS1117:

Oprócz tego trzeba podpiąć tylko RX i TX do nóżek WB2S:

Początkowo próbowałem zrobić tak...:

Niestety to nie przeszło. Szybko okazało się, że pin od RX jest używany tutaj też jako przycisk i rezystor pull up na tym sygnale zakłóca programowanie.
Rozwiązaniem jest tymczasowe przecięcie ścieżki tak, by dało się ją łatwo naprawić i wpięcie się po stronie WB2S:

Te 4 kabelki starczą.
Reszta programatora to konwerter USB na UART w trybie 3.3V oraz osobne wejście zasilania (nie mogę brać 5V z USB, bo aby wykonać reboot urządzenia muszę podłączyć i odpiąć zasilanie, a gdy użyję do tego USB to przekaźnik pobierze z USB za duży prąd i USB się zresetuje i konwerter USB na UART się "zgubi" i programowanie się nie powiedzie):

Procedura programowania:
1. w bkWriter 1.60 wybrać wsad, rozpocząć programowanie
2. w trakcie oczekiwania odpiąć i podpiąć 5V zasilanie by wykonać reboot
3. moduł się powinien zaprogramować bez błędów
To jest dla BK7231T - dla BK7231N używamy programatora napisanego w Pythonie.
Po programowaniu naprawiamy przeciętą ścieżkę:

Konfiguracja OpenBeken dla ZN268131
Całą procedurą konfiguracji OpenBK7231T opisywałem już kilka razy. Tutaj jedynie pokażę, jak skonfigurować "magiczny" pin od przycisku bistabilnego:

Tylko tyle - ustawiamy rolę ToggleChannelOnToggle. Rola "Button" jest dla chwilowych przycisków.
Dla ciekawskich - w kodzie programu ToggleChannelOnToggle jest zorganizowane bardzo prosto, korzysta z tego samego timera co zwykłe przyciski, jak również eliminuje problem debouncingu (drgania styków):
Code: c
Wywołanie funkcji CHANNEL_Toggle przełącza wartość kanału (tutaj: przekaźnika). W OpenBK możliwe jest mapowanie wielu wyjść na jeden kanał.
Testowy układ
Od teraz możemy kontrolować przekaźnik dowolnym klasycznym włącznikiem bistabilnym, chociażby takim z puszki:



Wszystko działa, trzeba jedynie się przyzwyczaić, że od teraz stan tego włącznika ("wciśnięty w dół/w górę") nie określa stanu przekaźnika, bo zawsze możemy zewnętrznie przełączyć też z poziomu Home Assistant.
Praktyczny przykład użycia
Tym razem już bez większego komentarza. Na próbę podłączyłem moduł dla pewnej dość starej i popękanej lampki, którą uratowałem z elektrośmieci:





A czy można przerobić zwykły Smart Switch na taki z tematu?
W przypadku Tuya nie byłoby to możliwe, bo nie mamy dostępu do wsadu. Ale w sytuacji gdy korzystamy z OpenBeken, jest to bardzo proste.
Wystarczy wziąć dowolny klon Sonoffa z moim OpenBK, przykładowo:

Zrealizowany jest on na WB2S:

Quote:
Pin No. Symbol I/O type Function 1 VBAT P Power supply pin (3.3 V), which is connected to the VBAT pin on the internal IC 2 PWM2 I/O Common GPIO, which is connected to the P8 pin on the internal IC 3 GND P Power supply reference ground pin 4 PWM1 I/O Common GPIO, which is connected to the P7 pin on the internal IC 5 1RX I/O UART1_RXD, which is used as a user-side serial interface pin and is connected to the P10 pin on the internal IC 6 PWM0 I/O Common GPIO, which is connected to the P6 pin on the internal IC 7 1TX I/O UART1_TXD, which is used as a user-side serial interface pin and is connected to the P11 pin on the internal IC 8 AD AI ADC pin, which is connected to the P23 pin on the internal IC 9 PWM4 I/O Common GPIO, which is connected to the P24 pin on the internal IC 10 CEN I Low-level reset, high-level active (internally pulled high) Docking IC-CEN 11 PWM5 I/O Common GPIO, which is connected to the P26 pin on the internal IC
Łatwo jest znaleźć wolne wyprowadzenie. Widać, że jest ich kilka:


Doprowadzić do niego przewód, drugi przewód do masy. Nie trzeba rezystora pull-up, bo BK7231N i T mają wbudowane, konfigurowalne pull-upy.

Wyprowadzić przewody z obudowy (na nich będzie tylko 3.3V, nie muszą być grube):

I zasadniczo gotowe - jeszcze trzeba skonfigurować role wyprowadzonego pinu na panelu WWW OpenBK i podłączyć przycisk bistabilny.
UWAGA - w zależności od użytego modelu przekaźnika i podłączenia, na wyprowadzonych przewodach może być potencjał fazowy z sieci!!
Przykładowo można przerobić lampkę (tak, też odratowana z elektrośmieci):

Wykorzystamy oryginalny przełącznik:



Połączenia, dodatkowo włącznik na kostce by pociągnięcie go za przewód go nie wyrwało:



Gotowe:

Od teraz lampka wciąż wspiera swój stary przycisk, ale też jest smart. Można np. z poziomu Home Assistant zgasić wszystkie światła (z tą lampką włącznie) w momencie wyjścia z domu.
Do czego można jeszcze wykorzystać dodatkowy przycisk?
Możliwości są bardzo duże. Można na przykład przerobić prosty kontroler paska LED, taki opisywany tutaj:
WiFi SmartLife ściemniacz jednokolorowego paska LED - test, wnętrze, schemat
tak, aby posiadał dwa przyciski (jeden do zwiększania jasności, drugi do ściemniania) oraz można też dodatkowo dodać mu diodę LED informującą o stanie WiFi.
Przyciski zwiększające/zmniejszające jasność kanału PWM w OpenBeken wymagają już prostego skryptowania, które też moje firmware wspiera:
Code:
AddEventHandler OnClick 0 addChannel 1 -10 0 100
AddEventHandler OnClick 1 addChannel 1 10 0 100
AddEventHandler OnDblClick 0 setChannel 1 0
AddEventHandler OnDblClick 1 setChannel 1 100
Składnia komendy jest prosta. Po "AddEventHandler" mamy nazwę zdarzenia (OnClick, OnDblClick, OnHold lub inne), potem indeks pinu (na którym jest przycisk) a potem komendę do wykonania.
"addChannel" dodaje do kanału o danym indeksie daną wartość (może być ujemna), dwa ostatnie argumenty to zakres do którego może zmieniać się wartość kanału (PWM mamy od 0 do 100).
"setChannel" po prostu ustawia kanał.
Naprawdę proste, wystarczy tylko przylutować dwa przyciski (nawet bez rezystorów pull-up gdyż one są konfigurowalne automatycznie w OpenBeken) i diodę LED z rezystorem, nadać im role Button/WiFi_LED i dopisać powyższy skrypt do autorun.bat w systemie plików LittleFS w OpenBeken.
Dla wygody użyłem obudowy po filtrze telefonicznym:





Taka modyfikacja znacznie usprawnia użycie paska LED, który mam w warsztacie. Oryginalne firmware Tuya wspierało tylko włączenie i wyłączenie go poprzez pojedynczy przycisk na obudowie, a po mojej modyfikacji mam już pełną kontrolę nad jasnością.
Podsumowanie
ZN268131 wydaje się być bardzo pomysłowym i wygodnym gadżetem, ale użycie otwartego oprogramowania (OpenBeken, chyba, że ktoś zna alternatywę dla stosowanych teraz układów BK? ESP8266 coraz trudniej znaleźć w urządzeniach IoT) sprawia, że równie dobrze można wziąć dowolny "zwykły" przekaźnik sterowany przez WiFi i przerobić go tak, by działał jak ZN268131.
ZN268131 można też używać z oryginalnym oprogramowaniem Tuya, ale to było już nie raz omawiane.
Oczywiście, gdy zamiast ZN268131 zamówicie Sonoff to można wgrać Tasmotę - ale czy na pewno? Sonoff S40 już zrobił "niespodziankę" użytkownikom i zamiast ESP8266 ma w środku BL602 - który swoją drogą ja też wspieram w swoim firmware...
PS: A jeśli chodzi o moje uratowane z elektrośmieci i przerobione lampki, to obie mają już swoje miejsca w warsztacie i służą wyłącznie do długoterminowych testów mojego wsadu OpenBK (weryfikuję stabilność oprogramowania, funkcjonalność ponownego dołączenia do WiFi w razie zaniku sygnału, długotrwałe działanie modułu bez jego restartowania, itp).
Cool? Ranking DIY