Wiele tanich gniazdek, przekaźników i włączników Wi-Fi ma w środku układ Espressif i fabryczne oprogramowanie, które łączy się wyłącznie z chmurą producenta. Tasmota zastępuje je otwartym oprogramowaniem działającym w całości w domowej sieci. Dostajesz stronę WWW na samym urządzeniu, konsolę, harmonogramy i reguły wykonywane lokalnie, a do większych zadań MQTT. Poniżej znajdziesz listę potrzebnych rzeczy, bezpieczny sposób wgrywania, pierwszą konfigurację oraz podłączenie do brokera MQTT i Home Assistanta.
Najpierw sprawdź sprzęt
Tasmota działa tylko na układach Espressif: ESP8266, ESP8285, ESP32, ESP32-S i ESP32-C3. Sporo nowszych urządzeń korzysta z innych układów (często są to moduły Tuya z układami Beken albo Realtek) i na nich Tasmota nie ruszy. Zanim cokolwiek rozkręcisz:
- Znajdź dokładny model w społecznościowej bazie Tasmota Supported Devices Repository (templates.blakadder.com). Przy każdym wpisie jest układ, sposób wgrania oprogramowania i szablon, który przyda się później.
- Sprawdź wersję sprzętu. Pod tą samą nazwą handlową w nowszej partii może siedzieć inny układ.
- Poszukaj informacji o wgrywaniu przez sieć (OTA). W dokumentacji Tasmoty sprawa jest postawiona jasno: Tuya-Convert przy obecnym oprogramowaniu fabrycznym nie działa w 99% przypadków, a metoda Sonoff DIY przestała działać. Wyjątkiem są urządzenia Shelly ze starszym oprogramowaniem MgOS, które nadal da się przełączyć przez sieć. W pozostałych przypadkach nastaw się na otwieranie obudowy i konwerter szeregowy.
Co jest potrzebne do wgrania przez port szeregowy
- Konwerter USB-UART z wyjściem 3,3 V. Dokumentacja poleca konwertery na układach CH340G albo CP2102N (na przykład VoltLink). Nigdy nie podawaj na ESP 5 V. Układ potrzebuje też co najmniej 150 mA, a niektóre tanie konwertery tyle nie dają. Jeśli wgrywanie ciągle się przerywa, zasil płytkę z osobnego zasilacza 3,3 V ze wspólną masą.
- Przewody połączeniowe albo szpilki sprężynowe, a czasem lutownica do wlutowania złącza.
- Program do wgrywania. Tasmota Web Installer działa w przeglądarce opartej na Chromium (Chrome albo Edge) i nie wymaga instalowania niczego więcej. Inne możliwości to Tasmotizer (tylko ESP82xx), ESP-Flasher i esptool od Espressif.
Najważniejsza zasada bezpieczeństwa: otwarte urządzenie podłączone do komputera nigdy nie może być jednocześnie podłączone do sieci 230 V. Wgrywaj oprogramowanie przy otwartej obudowie i wyjętej wtyczce, za każdym razem.
Połączenia i tryb programowania
Połącz cztery linie i przygotuj sposób na zwarcie GPIO0 do masy:
| Konwerter | Urządzenie z ESP |
|---|---|
| 3V3 | 3V3 / VCC |
| GND | GND |
| TX | RX |
| RX | TX |
TX łączysz z RX, a RX z TX. Zamienione linie to najczęstsza przyczyna komunikatu o braku danych z portu szeregowego.
Aby wejść w tryb programowania, GPIO0 musi być zwarte z GND w chwili włączania zasilania. W wielu płytkach w stylu Sonoff fizyczny przycisk jest już podłączony do GPIO0: przytrzymaj go, podłącz zasilanie i puść po kilku sekundach. W innych płytkach trzymasz przewód między punktem GPIO0 a GND podczas włączania. Tryb programowania trzeba uruchamiać od nowa przed każdą operacją: kopią, kasowaniem i zapisem.
Kopia, kasowanie, wgrywanie
Zanim cokolwiek zmienisz, zrób kopię oryginalnego oprogramowania. Przy ESP8266 z 1 MB pamięci flash polecenie esptool wygląda tak:
esptool.py --port COM5 read_flash 0x00000 0x100000 fwbackup.bin
Zamiast COM5 podaj swój port (w Linuksie zwykle /dev/ttyUSB0). Potem ponownie wejdź w tryb programowania i wyczyść pamięć:
esptool.py --port COM5 erase_flash
Na koniec jeszcze raz uruchom tryb programowania i wgraj Tasmotę:
esptool.py --port COM5 write_flash -fm dout 0x0 tasmota.bin
Dla urządzeń z ESP32 użyj obrazu tasmota32.factory.bin (albo wariantu dla danego układu). Web Installer sam kasuje i zapisuje pamięć, wystarczy wybrać właściwą wersję i zaznaczyć opcję kasowania.
Pierwsze uruchomienie i konfiguracja Wi-Fi
Odłącz konwerter, porządnie zamknij obudowę i dopiero wtedy podłącz urządzenie do gniazdka. Świeżo wgrana Tasmota uruchamia własny punkt dostępowy o nazwie tasmota_XXXXXX-####. Połącz się z nim z telefonu lub laptopa i otwórz 192.168.4.1, jeśli strona konfiguracji nie pojawi się sama. Wybierz swoją sieć 2,4 GHz i wpisz hasło.
Dwie uwagi z dokumentacji oszczędzą ci nerwów:
- Punkt dostępowy działa przez 3 minuty od uruchomienia. Jeśli nie zdążysz, odłącz i ponownie podłącz zasilanie.
- Tasmota nie przyjmie hasła Wi-Fi o długości 64 znaków lub większej, a znaki specjalne w haśle potrafią sprawiać kłopoty.
Gdy urządzenie połączy się z siecią, znajdź jego adres IP na liście DHCP w routerze i otwórz go w przeglądarce. Od razu zrób trzy rzeczy:
- Ustaw hasło do strony WWW. W menu Configuration > Configure Other wpisz hasło w polu Web Admin Password. Nazwa użytkownika to
admin. Serwer WWW Tasmoty nie obsługuje HTTPS, więc trzymaj urządzenie w sieci lokalnej albo w osobnej sieci VLAN dla IoT i nigdy nie przekierowuj jego portu do internetu. - Przypisz mu stały adres w DHCP na routerze, żeby się nie zmieniał.
- Wpisz w konsoli
SetOption65 1, jeśli zasilanie w domu bywa niestabilne. To polecenie wyłącza wykrywanie szybkich cykli zasilania, które po kilku krótkich zanikach prądu potrafi przywrócić ustawienia fabryczne.
Wczytaj szablon
Ogólna kompilacja Tasmoty nie wie, który pin steruje przekaźnikiem, diodą albo przyciskiem w konkretnym urządzeniu. Za to przypisanie odpowiada szablon, czyli krótki ciąg JSON skopiowany z bazy urządzeń. Wygląda tak:
{"NAME":"Example Template","GPIO":[416,0,418,0,417,2720,0,0,2624,32,2656,224,0,0],"FLAG":0,"BASE":45}
W interfejsie WWW otwórz Configuration > Configure Other, wklej ciąg w pole Template, zaznacz Activate i zapisz. W konsoli zrobisz to samo poleceniami:
Template {"NAME":"Example Template","GPIO":[416,0,418,0,417,2720,0,0,2624,32,2656,224,0,0],"FLAG":0,"BASE":45}
Module 0
Module 0 przełącza Tasmotę na zapisany przed chwilą szablon. Po ponownym uruchomieniu przycisk powinien włączać przekaźnik, a na stronie powinny pojawić się właściwe elementy sterowania. Korzystaj z szablonu z wpisu dla swojego modelu i wersji sprzętu, a nie z przykładu powyżej.
Podłącz urządzenie do MQTT
Do testów wystarczy strona WWW, ale prawdziwe możliwości Tasmoty widać dopiero z MQTT. Wskaż jej broker (na przykład Mosquitto) jedną linijką Backlog w konsoli:
Backlog MqttHost 192.168.10.5; MqttUser tasmota; MqttPassword haslo; Topic plug_desk
Tasmota korzysta z trzech przedrostków tematów, zbudowanych z domyślnego FullTopic %prefix%/%topic%/:
cmnd/plug_desk/...dla wysyłanych poleceń,stat/plug_desk/...dla odpowiedzi i zmian stanu,tele/plug_desk/...dla okresowej telemetrii.
Sprawdź działanie z dowolnego klienta MQTT:
mosquitto_pub -h 192.168.10.5 -u test -P secret -t cmnd/plug_desk/Power -m TOGGLE
mosquitto_sub -h 192.168.10.5 -u test -P secret -t 'stat/plug_desk/#' -v
W odpowiedzi zobaczysz stat/plug_desk/RESULT {"POWER":"ON"}. Urządzenie publikuje też Online albo Offline w temacie tele/plug_desk/LWT, co ułatwia wychwycenie sprzętu, który zgubił Wi-Fi. Dane z czujników i pomiary energii trafiają do tele/plug_desk/SENSOR co TelePeriod sekund (domyślnie co 300).
Kilka słów o bezpieczeństwie. Domyślnie Tasmota używa MQTT 3.1.1. Kompilacje na ESP32 obsługują połączenie z brokerem przez TLS, a w standardowych kompilacjach na ESP8266 tej opcji nie ma. W domu zwykle wystarcza broker wymagający nazwy użytkownika i hasła oraz osobny segment sieci dla IoT, z którego urządzenia nie wyjdą na zewnątrz.
Dodaj urządzenie do Home Assistanta
Home Assistant ma oficjalną integrację Tasmota, która wykrywa urządzenia przez MQTT. Przy skonfigurowanej integracji MQTT dodaj integrację Tasmota, a każde urządzenie z SetOption19 0 (to wartość domyślna) pojawi się z przełącznikami, światłami i czujnikami. W dokumentacji Tasmoty opisano dwie pułapki:
- Zostaw domyślny FullTopic, bo wykrywanie od niego zależy.
- Jeśli korzystasz z aplikacji Mosquitto z plikiem ACL, urządzenia Tasmota potrzebują prawa zapisu do
tasmota/discovery/#.
Nie myl tego z SetOption19 1, które przełącza urządzenie na starsze, ogólne wykrywanie MQTT. Według dokumentacji Tasmoty ten mechanizm usunięto z kompilacji, więc zostaw tę opcję wyłączoną.
Najczęstsze błędy
- Zachowane (retained) komunikaty Power. Jeśli coś publikuje
cmnd/<topic>/Powerz flagą retain, urządzenie wykona to polecenie przy każdym ponownym połączeniu i nadpisze własne ustawieniePowerOnState. Mówi się na to „ghost switching”. Usuń zachowany komunikat z brokera i wysyłaj polecenia bez flagi retain. - Wgrywanie pod napięciem. Warto powtórzyć: otwarte urządzenie nigdy nie jest podłączone do gniazdka.
- Szablon dla innej wersji płytki. Przekaźnik klika, a przycisk nie reaguje? Zwykle szablon pochodzi z innej wersji sprzętu.
- Strona WWW dostępna z internetu. Bez HTTPS hasło leci otwartym tekstem. Trzymaj urządzenie w sieci lokalnej.
- Brak aktualizacji. Tasmotę można zaktualizować przez sieć ze strony Firmware Upgrade. Najpierw przeczytaj informacje o wydaniu, zwłaszcza gdy korzystasz z funkcji, którą autorzy mogą w nowej kompilacji przenieść albo usunąć.