Tasmota – flashowanie za pomocą tuya-convert

Kompletując urządzenia do swojego smarthome zauważyłem, że wiele z nich wymaga do sterowania oddzielnego oprogramowania na telefonie. Jest to o tyle kłopotliwe, że powoduje niepotrzebne rozdrobnienie teoretycznie scentralizowanych systemów. Drążąc temat dokopałem się do informacji, że większość urządzeń smarthome jest pierwotnie produkowana w ramach platformy Tuya, w oparciu o uniwersalny moduł ESP (np.: ESP8266) oraz że na tę rodzinę modułów udało się stworzyć alternatywne oprogramowanie o nazwie Tasmota.

SmartDGM PP-W162, tanie gniazdko z biedronki

Większość urządzeń smarthome jest dość zwartej konstrukcji przez co utrudnione jest wgrywanie do nich oprogramowania z użyciem konwertera USB-TTL. Jako obejście tego problemu stworzono oprogramowanie tuya-convert, które emuluje chmurę Tuya i wgrywa do urządzeń alternatywne oprogramowanie metodą OTA jako aktualizację.

Gosund SP111 – jedno z najmniejszych gniazdek dostępnych na rynku

Po wgraniu alternatywnego oprogramowania możliwe jest spinanie urządzeń z użyciem MQTT z innymi platformami – jak Domoticz czy Home Assistant – lub zwyczajne sterowanie ich funkcjami z użyciem zwykłej przeglądarki www.

Aby wgrać oprogramowanie do urządzenia, potrzebujemy:
1. Kabel LAN 🙂
2. Raspberry Pi – najlepiej 3B lub 3B+, prawdopodobnie zadziała też 2B z kartą wifi na usb lub ZeroW z kartą LAN
3. putty w przypadku korzystania z komputera z windows lub komputer z linuksem i dowolny terminal zdolny do nawiązania połączenia z raspberry z użyciem protokołu SSH

Ewentualnie wystarczyć może komputer z WiFi i systemem Linux (może być też VM) lub cokolwiek co jest wyposażone w WiFi zdatne do postawienia AP oraz może uruchamiać skrypty SH oraz Python. Osobiście dysponowałem Raspberry Pi 3B+ i procedurę wgrywania opiszę przez pryzmat wykorzystania tego urządzenia.

Przygotowujemy też urządzenie które będziemy podpinać do hotspotu postawionego na raspberry; w moim przypadku był to telefon komórkowy. Nie mam pojęcia do czego jest to wymagane, ale sprawdziłem, że metoda bez wypełnienia tego podpunktu nie działa. Przed rozpoczęciem procedury upewniamy też się, że tylko jedno urządzenie które chcemy flashować jest aktualnie włączone – ich większa ilość uruchomiona jednocześnie zakończy się niepowodzeniem. Staramy się też, aby raspberry znajdowało się w miarę blisko flashowanego urządzenia gdyż poprawi to stabilność połączenia.

Aby rozpocząć procedurę, wgrywamy na nasze raspberry najnowszego Raspbiana (lub RaspberryPi OS) pobranego z oficjalnej strony projektu na kartę SD.
Na karcie SD na partycji boot (która pojawi się na komputerze z systemem Windows po wgraniu systemu) tworzymy plik SSH.txt w celu odblokowania połączeń SSH z RaspberryPi i zdalnego połączenia się z urządzeniem.

Podpinamy urządzenie przez sieć LAN do routera i znajdujemy na nim jego adres IP. Łączymy się z nim z użyciem putty (domyślnie w chwili pisania tego tekstu danymi do logowania były login:pi, hasło:raspberry).
Następnie wywołujemy następujące polecenia w celu przygotowania systemu:

apt-get update
apt-get upgrade
apt-get install git

A następnie wywołujemy sekwencję

 git clone https://github.com/ct-Open-Source/tuya-convert
 cd tuya-convert
 ./install_prereq.sh

Po zakończonej sukcesem instalacji, uruchamiamy flashowanie poleceniem:

./start_flash.sh

System wyświetli nam następujące komunikaty:

Checking TCP port 8886... Available.
sudo: ufw: command not found
======================================================
  Starting AP in a screen
  Starting web server in a screen
  Starting Mosquitto in a screen
  Starting PSK frontend in a screen
  Starting Tuya Discovery in a screen

======================================================

IMPORTANT
1. Connect any other device (a smartphone or something) to the WIFI vtrust-flash
   This step is IMPORTANT otherwise the smartconfig may not work!
2. Put your IoT device in autoconfig/smartconfig/pairing mode (LED will blink fast). This is usually done by pressing and holding the primary button of the device
   Make sure nothing else is plugged into your IoT device while attempting to flash.
3. Press ENTER to continue

Jest to moment w którym mamy za zadanie podpiąć do nowoutworzonej sieci vtrust-flash dowolne urządzenie. Ja zazwyczaj korzystałem z wolnego telefonu komórkowego. Sieć najczęściej nie domaga się hasła, ale gdyby jednak o nie poprosiła, to domyślnym hasłem jest flashmeifyoucan. Po podłączeniu do sieci wciskamy ENTER i pilnujemy, żeby telefon nie próbował się przełączać na inne wifi (może tak czasami robić, gdyż sieć vtrust-flash nie ma dostępu do internetu)

======================================================
Starting smart config pairing procedure
Waiting for the device to install the intermediate firmware
Put device in EZ config mode (blinking fast)
Sending SSID                  vtrust-flash
Sending wifiPassword
Sending token                 00000000
Sending secret                0101
.................
SmartConfig complete.
Resending SmartConfig Packets
....................................................................................................
IoT-device is online with ip 10.42.42.42
Fetching firmware backup
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100 1024k  100 1024k    0     0  63719      0  0:00:16  0:00:16 --:--:-- 28872
curl: Saved to filename 'firmware-xxxxxx.bin'
======================================================
Getting Info from IoT-device
VTRUST-FLASH 1.5
(c) VTRUST GMBH https://www.vtrust.de/35c3/
READ FLASH: http://10.42.42.42/backup
ChipID: xxxxxx
MAC: xx:xx:xx:xx:xx:xx
BootVersion: 7
BootMode: normal
FlashMode: 1M DOUT @ 40MHz
FlashChipId: xxxxxx
FlashChipRealSize: 1024K
Active Userspace: user2 0x8x000
======================================================
Ready to flash third party firmware!

For your convenience, the following firmware images are already included in this repository:
  Tasmota v8.1.0.2 (wifiman)
  ESPurna 1.13.5 (base)

You can also provide your own image by placing it in the /files directory
Please ensure the firmware fits the device and includes the bootloader
MAXIMUM SIZE IS 512KB

Available options:
  0) return to stock
  1) flash espurna.bin
  2) flash tasmota.bin
  q) quit; do nothing
Please select 0-2:

W polu wybieramy 2 aby do urządzenia wgrać oprogramowanie tasmota.

Are you sure you want to flash tasmota.bin? This is the point of no return [y/N] y
Attempting to flash tasmota.bin, this may take a few seconds...
Flashed http://10.42.42.1/files/tasmota.bin successfully in 16214ms, rebooting...
Look for a tasmota-xxxx SSID to which you can connect and configure
Be sure to configure your device for proper function!

HAVE FUN!
======================================================
Do you want to flash another device? [y/N] N
======================================================
Cleaning up...
Closing AP
Exiting...


Czasem może się zdarzyć sytuacja w której pojawił się następujący komunikat błędu.

SIOCSIFFLAGS: Operation not possible due to RF-kill

Poradziłem sobie z nim wywołując następujące polecenia.

rfkill unblock all
ifconfig wlan0 up

Po przeprowadzeniu flashowania, urządzenie się zrestartuje. Po chwili w naszej okolicy powinna pojawić się nowa sieć wifi o nazwie tasmota-xxxx. Podpinamy się do niej (np telefonem komórkowym z poprzednich podpunktów) i w oknie które wyświetli się na ekranie podajemy konfigurację naszej sieci wifi 2.4GHz (moduły ESP nie obsługują wifi 5GHz).

Aby wgrać konfigurację dedykowaną naszemu urządzeniu, wchodzimy do menu
Configuration -> Configure other. Listę template możemy znaleźć na stronie Tasmota Device Templates Repository

Póki co udało mi się wgrać oprogramowanie metodą tuya-convert na następujące urządzenia:
Gniazdko Gosund SP111
Gniazdko SmartDGM PP-W162
Żarówka SmartDGM L-WT9W1

Natomiast nie udało się (co opiszę w innym wpisie) wgrać do urządzeń:
Gniazdko ITINFTEK/AVATTO z Aliexpress
Gniazdko LSC Smart PowerPlug
Żarówka LSC SmartLED A60
Żarówka LSC SmartLED RGB

UPDATE 2022-04-27

Przy poniższym komunikacie pojawiającym się przy uruchamianiu skryptu:

E: Repository 'http://raspbian.raspberrypi.org/raspbian buster InRelease' changed its 'Suite' value from 'stable' to 'oldstable'N: This must be accepted explicitly before updates for this repository can be applied. See apt-secure(8) manpage for details.

Wywołujemy następujące polecenia:

apt-get update --allow-releaseinfo-change
apt-get upgrade

Pobierze nam się miliard różnych aktualizacji, ale skrypt instalacyjny powinien się wykonywać poprawnie

20 myśli na “Tasmota – flashowanie za pomocą tuya-convert”

    1. nie sprawdzałem jeszcze, ale wydaje mi się, że nie – tasmota działa na zupełnie innej zasadzie niż aplikacje tuya przez co te oprogramowania raczej się ze sobą nie dogadają

  1. Czołem Łukasz! Kopę lat!
    Twój blog to dla mnie bardzo pozytywne odkrycie 🙂
    Kwestia pozostawienia pozostałych urządzeń wyłączonych – trochę problematyczna jeśli chodzi np o włączniki świateł – trzeba by było odpalać świeczki na czas flashowania 🙂
    A tak na poważnie, nie wystarczy że to jedno, docelowe urządzenie będzie w trybie parowania? czy mimo tego że pozostałe w zwykłym trybie – to i tak skrypt będzie próbował inne flashować?

    Pozdrowionka!

    1. tbh nie pamiętam jak było z parowaniem; z pewnością natomiast do ap tuya-convert będą próbowały się podpinać wyłącznie urządzenia z sw tuya

      1. Dla pewności obwody świetlne odłączone.
        Wgrywanie do gosund sp111 oraz sp211 zakończony sukcesem.
        Dobrego dnia!

  2. Witam
    Próbuję wykonać uruchomić tuya-convert na rasberry Pi 3B+
    Oprogramowanie startuje bez problemu ale nie tworzy mi sieci Wi-fi „Vtrust-flash”.
    Czy może ktoś podpowiedzieć jak zeryfikować roblem.
    Zrobiłem to na czystym nowo zainstalowanym systemie.

    Pozdrawiam

  3. Witam ponownie.
    Po restarcie tworzy mi się sieć ale nie mogę zakupionego gniazdka z aliexpress „VIKEFON” wprowadzić w tryb programowania.
    Miał ktoś odczynienia z gniazdkiem tego producenta.

    Pozdrawiam

  4. Cześć,
    super artykuł ! Od paru godzin walczę ze swoim gniazdkiem (też sp111), niestety bezowocnie..:( Przy próbie parowania converter zapętla mi się na „SmartConfig complete.
    Resending SmartConfig Packets
    …………..
    Device did not appear with the intermediate firmware”
    Gniazdko wchodzi w tryb parowania (miga), telefon podłączony do sieci (vtrust-flash), lecz po paru chwilach gniazdko przestaje migać i już nic dalej się nie dzieje.
    Może masz jakaś radę jak temu zaradzić?

    1. Przy okazji, macie też tak przy tasmota-mini że dioda SmartDGM PP-W162 działa na odwrót? Czyli świeci się jak gniazdko wyłącozne i gaśnie jak włączone?

        1. Działa! 🙂
          To przy okazji podrzucam poprawiony Template do zastosowania dla SmartDGM PP-W162:
          {„NAME”:”SmartDGM Plug”,”GPIO”:[0,0,0,32,2720,2656,0,0,2624,320,224,0,0,0],”FLAG”:0,”BASE”:18}

  5. Witam, nie wiem czy dobrze rozumiem? Mam kilka gniazdek SmartDGM i działają w appce SmartDGM a chciałbym je używać w aplikacji oryginalnej Tuya wraz z innymi urządzeniami.
    Czy da się te gniazdka przeprogramować tak aby je Tuya „widziała i obsługiwała” za pomocą powyżej opisanego sposobu, sprzętu???
    Czy może istnieje jakiś inny sposób by „zmusić” gniazdka SmartDGM do współpracy z Tuya?

    1. W skrócie: nie. Ta metoda pozwala na wgranie w gniazdka zupełnie innego oprogramowania i łączenie ich z opensource’owymi systemami, jak Supla czy HomeAssistant. Gniazdka SmartDGM są (były) gniazdkami kompatybilnymi z systemami Tuya (bo dawały się przeflashować tą metodą), więc z aplikacją Tuya/SmartLife powinny się łączyć na oryginalnym oprogramowaniu. Istnieje jednak prawdopodobieństwo tego, że coś w software/hardware SmartDGM się zmieniło i już ich się pod tą aplikację podpiąć nie da (lub nigdy nie dało – osobiście SmartDGM z Tuyą nigdy nie łączyłem, ale chińskie gniazdka z Aliexpress, urządzenia marki LSC z sieci sklepów Action czy – bodajże – Gosund SP111 działały bezproblemowo więc i SmartDGM powinno teoretycznie działać bez kapryszenia)

  6. Witam super poradnik czy mógłby ktoś podpowiedzieć jak laikowi jak zrobić z rasbery punkt dostepu bo w terminalu wywala mi blad i kończy pracę a pasuje mi wrzucić tasmote do trzech gniazdek dzięki pozdrawiam

    1. punkt dostępu tworzy się automatycznie w ramach uruchomionego skryptu, pamiętaj tylko o tym, by podczas wykonywania owego skryptu łączyć się z raspberry po kablu

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *