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.
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ę.
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
Czy po flashowaniu możliwe jest podłączenie gniazdka do aplikacji Smart Life?
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ą
Mogę potwierdzić, że metoda działa z gniazdkiem z biedronki Hykker: https://www.hykker.com/akcesoria/gniazdo-wi-fi-z-licznikiem-energii/
Dzięki ~loksejuk!
Na przełączniku ściennym Gosund SW9 też działa… 🙂
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!
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
Dla pewności obwody świetlne odłączone.
Wgrywanie do gosund sp111 oraz sp211 zakończony sukcesem.
Dobrego dnia!
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
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
Z tego producenta raczej nie, ale możliwe, że to kolejne wcielenie 'itinftek/avatto’, czyli tanich gniazdek na module thingsturn w miejsce esp. Opisałem je tutaj:
https://lukasz.oksejuk.pl/2020/11/08/gniazdka-itinftek-avatto-z-aliexpress/
a ich integrację z homeassistantem tu:
https://lukasz.oksejuk.pl/2020/10/28/dodawanie-urzadzen-tuya-do-home-assistant-za-pomoca-integracji/
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ć?
Dawno nie flashowałem żadnego gniazdka tą metodą, ale z tego co czytałem jakiś czas temu to tuya-convert do wgrania oprogramowania wykorzystywało lukę w firmware, która gdzieś na początku tego roku została załatana. Jako alternatywę możesz spróbować wgrać oprogramowanie przez konwerter usb-ttl:
https://lukasz.oksejuk.pl/2020/11/05/sonoff-b1-r2-flashowanie-usb2ttl/
Cześć
Dzięki za fajny artykuł.
Potwierdzam, że działa z SmartDGM PP-W162
Sprawdziłem że działa również na Aoycocr EU5 16A Plug https://templates.blakadder.com/aoycocr_EU5-16A.html
Pozdro
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?
Tak. U mnie było tak przed chwilą. Pomogła zmiana w konfiguracji GPIO 13 z „LED” na „LED_i”.
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}
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?
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)
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
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