
Witajcie moi drodzy
Zapraszam na moją recenzję 'inteligentnego' włącznika WiFi światła Smart Life. Sprawdzę czy jest on kompatybilny z aplikacją BlitzWolfa, przetestuję go z aplikacją Smart Life, pokażę jego wnętrze a na koniec przedstawię jak można samodzielnie napisać dla niego firmware pozwalające sterować nim przez WiFi w środowisku Arduino IDE.
Powiązane tematy
Na temat produktów z WiFi opartych na ESP napisałem już kilka tematów. Głównie pokazuję tam wnętrza, lista poniżej:
- BW-LT30 czyli adapter WiFi na żarówkę - test, teardown i wgrywanie firmware ESP
- Gniazdo elektryczne sterowane przez WiFi - BW-SHP8 - uruchomienie i testy
- Test i wnętrze BW-SS3, czyli włącznika światła na WiFi od Blitzwolfa
- Gniazdo/wtyk z WiFi PS-16-M i aplikacja eWeLink/Coolkit - test i teardown
Zakup włącznika SmartLife Switch
Włącznik znalazłem w internecie pod hasłem Smart WIFI Light Switch Wall Panel Tuya App Remote For Alexa Google Home IFTTT za około 15$ (55 zł), tutaj:

Jego parametry wedle sprzedającego:
Quote:
Condition: New: A brand-new, unused, unopened, undamaged item in its original packaging (where packaging is ... Read more
Brand: Unbranded
Features: Glass Panel, Waterproof, Wireless, Voice Control, Timer
Installation Area: Indoor
Style: Modern
Smart Home Compatibility: Amazon Alexa, Google Assistant, IFTTT Voltage: AC100-250V, 50 / 60Hz
Support System: Android and iOS
Country/Region of Manufacture: China
Power Consumption: <0.3W
Current Type: AC
Rated Power: 2200W
Lighting Technology: LED
Wifi frequency: 2.4GHz, IEEE 802.11 b/g/n
Smart Home Protocol: Wi-Fi
Security mechanism: WPA-PSK/WPA2-PSK
Year Manufactured: 2020
APP Control: Tuya APP / Smart Life APP
Type: Smart Touch Switch
Plz Kindly Note: Need Neutral Wire and Live Wire
Amperage: 10A
Switch Size: 86mm x 86mm
Material: PC V0 fireproof + Tempered Glass Panel
Włącznik dostępny jest w trzech kolorach:

Włącznik dostępny jest w pojedynczej, podwójnej i potrójnej wersji:

Wymiary:

Schemat podłączenia:

Otrzymana paczka
Zakupu dokonałem 18 października, paczka przyszła 13 listopada. Prawie miesiąc czekania. Co ciekawe, paczka została wysłana z Niemiec, Niederaula:


W środku było dość dobrze zapakowane pudełeczko:

Na opakowaniu jest tylko nazwa Smart Switch, nie ma konkretnego modelu:

Specyfikacja:


Kod QR:

Otwieramy:

Zawartość to włącznik, dwie dodatkowe śrubki do mocowania (nie wiem do końca czemu je dają), i instrukcja w języku angielskim i niemieckim:

Włącznik:


Instrukcja angielska:









Podłączenie i pierwszy test bez WiFi
Standardowo podłączyłem włącznik do żarówki w oprawce (tym razem innej niż zazwyczaj) i sieci poza puszką, tak by móc przetestować jak wszystko działa:


Włącznik (tak jak chyba wszystkie podobne) działa już bez sieci WiFi, ale oczywiście tylko dotykowo:

Dodatkowo włącznik pamięta swój poprzedni stan po zaniku energii (jeśli nie będzie prądu, to nawet bez skonfigurowanego WiFi włącznik pamięta w jakim był stanie).
Kompatybilność z aplikacją Blitzwolfa
To jest włącznik SmartLife, ale z czystej ciekawości sprawdziłem, czy wykryje je aplikacja Blitzwolfa:

Wybrałem tam Dodawanie Ręczne -> Przełącznik WiFi (z kategorii Switch), tutaj:

W celu zresetowania wcisnąłem jedyny przycisk włącznika na dłużej niż 5 sekund.
Zgodnie z instrukcją (tak jak w przypadku BW-SS3) rozpocząłem wyszukiwanie:

O dziwo - sukces!

Blitzwolf wykrywa włącznik od SmartLife i w pełni go obsługuje:

I można nim sterować przez telefon przez aplikację Blitzwolfa:


Po dodaniu włącznik jest dostępny na liście urządzeń Blitzwolf jako SWITCH1:

Aplikacja od producenta - SmartLife
Wychodzi na to, że aplikacja SmartLife jest zbędna - ale mimo to ją sprawdzimy.
Zaczniemy od zeskanowania kodu QR z opakowania switcha:

Link prowadzi do
http://app.yimusmart.com/smartlife
Nie jest to link do Google Play. Aplikacja pobierana jest z zewnątrz jako APK:

To zły znak. Google Play mniej więcej sprawdza aplikacje i usuwa te szkodliwe, a tak luzem na swój serwer chińczyk może wrzucić co tylko zechce. Telefon też przed tym ostrzega:

Zaczyna się wtedy festiwal uprawnień. Nie widziałem jeszcze by aplikacja wymagała aż tylu pozwoleń:








Oczywiście odradzam Wam wchodzenie w to, ale ja mam do tych celów specjalny stary telefon, więc zdecydowałem się iść dalej:

Zainstalowane:




Mamy już aplikacją na pulpicie:

Zaglądamy do środka - na powitanie Privacy Policy:


Potem możliwość utworzenia konta, lub zalogowania się lub 'Try now' (testowanie bez zalogowania).

Spróbujmy bez logowania:

Aplikacja wygląda znajomo i sugeruje nam dodanie urządzenia:

Aplikacja wygląda bardzo znajomo - jest to niemalże identyczna kopia aplikacji Blitzwolfa. Ikony, nazwy, listy urządzeń są takie same:

Spróbowałem dodać tutaj ten włącznik.

Procedura dodawania jest standardowa, tak jak w Blitzwolf:


(tu widać drobne różnice między aplikacją SmartLife a Blitzwolf, inna kolorystyka).
Niestety w tym przypadku proces się nie powiódł. EZ Mode nie działało, musiałem użyć drugiego sposobu, AP mode, czyli sposobu w którym dwa razy długo wciskamy przycisk na włączniku a potem ręcznie podłączamy się telefonem do jego sieci WiFi (utworzonej przez włącznik).
Instrukcja AP mode:


Widoczna sieć włącznika:

Tutaj to ja nie wiem co się stało, ale instrukcja pojawiła się w języku (chyba) arabskim:

Po chwili - sukces dodawania:

W ten sposób włącznik jest w pełni dodany w aplikacji Smart Life i można nim tam sterować:


Niestety włącznik został też automatycznie usunięty z aplikacji Blitzwolfa:

więc nie można go dzielić między aplikacjami.
Zużycie energii
Do zużycia energii włącznika użyłem chińskiego mierniczka opartego o układ V9261F.
Pomiary zrobiłem już po teardownie, z tego powodu włącznik wygląda jak wygląda.
Wyłączony przekaźnik - 0.6W:

Włączony przekaźnik - 1.2W:

Wszystko w normie, w przypadku produktów Blitzwolfa miałem podobne pomiary.
Wnętrze włącznika
Po wyglądzie samej obudowy można mieć wrażenie, że włącznik ten jest po prostu przemalowanym na czarno BW-SS3:

Ale jednak okazało się, że jest nieco inne. Więc warto było zajrzeć do środka, ale od początku.
Obudowa założona jest na ścisk. Trzeba podważyć ją lekko śrubokrętem (tam, gdzie jest zaczep):

Tak dostajemy się do środka. Widać, że tu też jest przewidziane wsparcie do 3 przełączników w jednej obudowie, tak jak w BW-SS3:

Od razu rzuca się w oczy kilka rzeczy. Przede wszystkim moduł WiFi, zaraz się przekonamy jaki. Oprócz tego pięć pinów łączących płytkę widoczną na zdjęciu z modułem zasilacza który jest głębiej. Dodatkowo widać 8-pinowy układ scalony który obsługuje przycisk dotykowy (jest tam też miejsce na 16-pinową jego wersję, pewnie dla wersji z większą ilością przycisków).

Z zasilacza idzie 5V, masa oraz K1, K2 i K3 (sygnały do sterowania przekaźnikami). Obok na płytce jest regulator napięcia 3.3V (dla modułu WiFi):

Użyty regulator LDO to A1117B 3.3V:

Ten tranzystor obok, oznaczony J3Y, to S8050:

Jego zadaniem jest włączania przekaźnika. Na PCB są miejsca na dwa dodatkowe tranzystory (Q3 i Q2) dla pozostałych dwóch przekaźników.
Moduł WiFi ma na sobie jakiś niepokojący osad:

Układ obsługujący dotyk nie jest podpisany:

Choć wiem, że w BW-SS3 na tym miejscu był BS813A.
Na PCB jest też miejsce na dodatkowe diody LED:

Opisaną teraz płytkę się ściąga, ale o dziwo tutaj jest ona przyklejona do plastiku obudowy. Trzeba ją podważyć:

Po zdjęciu:


Na spodzie płytki nic już nie ma. Widzimy jednak nazwę użytego modułu WiFi, to TYWE3S:

Czyli to samo, co siedzi w BW-SS3. Czyli ESP8266.

Nota katalogowa TYWE3S:
Można zatem łatwo zmienić wsad.
Teraz przyjrzymy się drugiej płytce, tej z przekaźnikami i zasilaczem. Przykręcona jest do obudowy trzema śrubkami:

Po wyjęciu:


Dużo na tej płytce nie ma. Mały zasilacz impulsowy i przekaźnik (oraz miejsce na dwa dodatkowe). Przekaźnik to Y32F-SS-105HM.
Ciekawy jest sposób zamontowania kondensatora łączącego stronę pierwotną z wtórną układu (przeciwzakłóceniowego) CY1:

Ten kondenator to JNC JN102M, Safety Y Capacitor:

Widać też układ przetwornicy:

Oznaczenie: 1510-05 2012109 UB2011. Po krótkim wyszukaniu uznałem, że jest to CR1510 (Off-Line Digital Green-Mode PWM Controller with Integrated Power BJT), kontroler flybacka już z tranzystorem wbudowanym:

Nota katalogowa:
W rogu PCB widzimy też diodę która podłączona jest do uzwojenia od przekaźnika (i miejsce na dwie pozostałe), która przyjmuje na siebie przepięcia tworzące się w trakcie przełączania:

To jest chyba zwykła 1N4148 w SOD523 (kod T4).
W rogu tutaj widać diody prostownicze A7 (1N4007) prostujące napięcie sieciowe, duży rezystor, który mam nadzieję, że jest bezpiecznikowy oraz VR1 czyli warystor:


Ten warystor to 7Q 561K:

Widoczne są też dwa dławiki (L1 i L2), które kojarzę już z podobnych produktów.
Programowanie TYWE3S (ESP8266) przez UART
Programowanie ESP8266 może się wydawać czymś prostym, lecz tutaj niestety tak nie jest.
Nie dość, że nie ma wyprowadzonych pinów RX/TX to jeszcze (jak się okazuje po dłuższej inspekcji płytki) są one używane do komunikacji z układem od wykrywania dotyku.
Uniemożliwia to komunikację programatora z ESPem.
W celu naprawienia tego trzeba odlutować rezystor 10k blokujący linię RXD0, ten:


Usunięty rezystor jest rezystorem pull-up do 3.3V, gdyż tutaj akurat na pinie RXD0 jest wyjście kontrolera przycisku dotykowego, ale o tym później.
Potem można już skomunikować się z ESPem. Użyłem do tego przejściówki USB TO TTL HW-597:


Przejściówkę ustawiłem na poziom 3.3V na liniach RX/TX za pomocą zworki.
Rozpiska połączeń:
- GND do GND (wspólna masa)
- RX przejściówki do TX TYWE3S
- TX przejściówki do RX TYWE3S
- 5V z przejściówki do 5V od płytki (na niej jest regulator 3.3V i zapewni on 3.3V dla TYWE3S)
- GPIO0 do masy tak by się dało odłączyć łatwo (GPIO0 do masy włącza tryb programowania)
- RST do masy tak by się dało odłączyć łatwo (RST do masy resetuje ESP)
Kilku kabelków do przylutowania:

Gotowa konfiguracja:

Po stronie komputera użyłem tym razem esptool.py zainstalowanego wraz z wsparciem ESP8266 dla Arduino.
https://github.com/esp8266/Arduino
Instaluje się je poprzez Board Manager, szczegóły w repo.
Esptool wtedy dostępne jest w naszym katalogu AppData/Local/Arduino15, u mnie to było:
C:\Users\Tst\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.7.4\tools\esptool
Aby jego użyć otwieramy wiersz poleceń:

Przechodzimy do jego folderu:

A potem możemy wpisywać już komendy, np.
esptool.py chip_id
by sprawdzić połączenie z programatorem i ESP8266.
Rezultat esptool.py chip_id:

Na czas programowania GPIO0 powinno być zwarte do masy. Przed programowaniem RST powinniśmy zewrzeć na kilka sekund do masy, a potem odłączyć.
Potem jeśli program nie startuje to odłączamy GPIO0 i możemy spróbować zresetować dając na chwilę RST do masy.
TYWE3S własny program - przekaźnikowy blink
Teraz już użyjemy normalne Arduino IDE i zrealizujemy na nim blink który przełącza co sekundę przekaźnik.
UWAGA!!! Pod żadnym pozorem nie próbujcie mieć jednocześnie podłączonego urządzenia smart do sieci i do programatora! Układy zasilania są różne, chińczycy mają swoje 'standardy jakości' a potencjał sieciowy na programatorze i komputerze może się bardzo źle skończyć!
Program pisze się w Arduino IDE normalnie jak pod Arduino. Wybieramy Generic ESP8266 module:

Na tej płytce przekaźnik jest na GPIO13:
Code: c
Wgrywanie:

Rezultat (na filmiku słychać pracę przekaźnika co sekundę):
TYWE3S własny program - zwykły blink
To samo można zrealizować na diodzie LED od podświetlenia przycisku. Jest ona niezależna od przekaźnika i znajduje się na GPIO14.
Code: c
Rezultat:
TYWE3S własny program - podłączamy się do WiFi z WPA2 i tworzymy serwer HTTP
Teraz pora na coś bardziej zaawansowanego.
Ten przykład będzie opierać się na przykładzie serwera HTTP z paczki ESP8266 Arduino IDE.
Pokażę tutaj, jak sterować włącznikiem światła bezpośrednio przez nasze WiFi za pomocą naszego własnego softu.
Pełny kod:
Code: c
Powyższy kod łączy się za WiFi o danym SSID, a potem pobiera od niego automatycznie przypisane IP przez DHCP. W trakcie tego wypisuje na UART informacje wraz z tym IP.
Rezultat na UART:

Teraz możemy użyć przeglądarki internetowej by zajrzeć co powstało na podanym IP:

Kliknięcie linku przełącza stan przekaźnika.
Filmik z działania już na 230V (ekran monitora i cały układ wzięty jednocześnie w kadr by też pokazać, że działa responsywnie i nie gubi kliknięć):
Teraz zostało jeszcze dodać obsługę przycisku, ona wbrew pozorom nie jest trudna, okazało się, że układ scalony od obsługi touch po prostu daje stany logiczne na wyjście podłączone do RXD0, ale o tym już w akapicie poniżej.
Obsługa przycisku dotykowego
(akapit dodałem nieco później)
Zostaje jeszcze kwestia obsługi przycisku dotykowego. Touch obsługuje ten niepodpisany układ scalony:

Nie potrafię go rozpoznać, ale wiem, że w BW-SS3 siedzi BS813A:

Nie jest to na pewno BS813A gdyż nie zgadza się jego układ pinów (masa/VDD w innych miejscach), ale już możemy założyć, że jest to prosty układ kontroli przycisku dotykowego który na wyjściach daje 0V lub 3.3V w zależności od tego czy dotyk jest wciśnięty.
Można łatwo sprawdzić czy tak jest - wystarczy przecież multimetr (no i palec):
Jak widać stan na RXD0 zmienia się wraz z wciskaniem przycisku dotykowego.
Czyli w tym układzie pin RXD0 z TYWE3S pełni rolę wejścia cyfrowego dla przycisku dotykowego a usunięty rezystor przeszkadzający w programowaniu był rezystorem pull-up do zasilania. To potwierdza też test połączenia:

Zatem obsługa tego przycisku w kodzie nie powinna być żadnym problemem, to prosty digitalRead(PIN), być może nawet z debouncingiem nie ma problemu bo może układ scalony odpowiedzialny za dotyk już się tym zajmuje.
Podsumowanie
Przetestowałem tutaj kolejny 'inteligentny' włącznik dla Smart Home z WiFi. Udało mi się też go zaprogramować i przedstawić jak można zrobić dla niego własny wsad. Ubolewam nad tym, że nie ma on dobrze wyszukującego się modelu/nazwy, ale i tak mam kilka ciekawych wniosków:
- włącznik ten, choć bardzo podobny do BW-SS3, to nie jest przemalowanym BW-SS3 tylko ma inne wnętrze
- włącznik ten, choć oficjalnie należy do SmartLife i ma własną apkę, to jest kompatybilny też z aplikacją BlitzWolfa
- aplikacja SmartLife jest kopią aplikacji BlitzWolfa (nawet ikony są identyczne)
- aplikacje od Chińczyków (a zwłaszcza SmartLife) wymagają od nas podejrzanie dużo uprawnień na Androidzie
- nie jest możliwe posiadania tego włącznika w obu aplikacjach jednocześnie (po podłączeniu do SmartLife odłączyło się od Blitzwolfa)
- włącznik ten zrealizowany jest (standardowo) na TYWE3S, czyli można wgrać własny soft, ale trzeba użyć lutownicy by się wpiąć z pinami
- TYWE3S można łatwo programować i zrobić dla niego swój soft, ale trzeba sprawdzić czy coś nie zajmuje linii RX/TX i w razie czego to tymczasowo odlutować (lub przeciąć ścieżkę, dać zworkę, itp)
- ośmiopinowy układ scalony obsługujący przycisk/przyciski dotykowe tutaj nie jest podpisany, ale moje testy pokazują, że on po prostu w zależności od tego czy przycisk jest wciśnięty daje stan wysoki lub niski na swoich pinach (które też mają pull-upy do zasilania) i jedyny problem z nim jest taki, że wyjście dotyku jest podłączone do.... RXD0 z TYWE3S co utrudnia programowanie
PS: Oczywiście w ten sam sposób jak pokazałem możecie wgrać gotowe firmware Tasmoty/Domoticz i mieć programowanie z głowy, ale to opiszę w innym temacie. Wkrótce zamierzam też opisać drugi sposób programowania, czyli OTA - Over The Air - wgrywanie wsadu przez WiFi.
Cool? Ranking DIY