tl;drThis process failed!
I recently got a WiFi LED smart bulb from China, called the "Fcmila Smart Bulb." It's a nice bulb, but it looks like it can only be controlled through their TechLife app, which uses the internet. That won't work for me, I need to connect it to my openHAB home automation network!
After a little research, it turns out there's a custom firmware called Tasmota which can be flashed onto a lot of these WiFi devices. Tasmota provides an MQTT interface, which is usable via openHAB, so this is perfect.
Flashing over the air
There's also open-source software called Tuya-Convert, which is a script that can flash new firmware to Tuya-compatible devices over the air. Even better! The docs say it's been tested on a Raspberry Pi 3B, and I luckily have one of those laying around, so that is what I'll use.
I've now downloaded Raspbian Buster Lite from the Raspberry Pi website, and flashed it onto a memory card. I've also logged in (default username
pi and password
raspberry), and used
sudo raspi-config to set it up on my WiFi network.
Next to update all software, I ran
sudo apt update and
sudo apt upgrade. This took a while, and is probably not even necessary… but I just like to have things up-to-date.
Now for the fun part, using Tuya-Convert to flash the bulb over the air! So according to their readme, we can install with just these commands:
git clone https://github.com/ct-Open-Source/tuya-convert cd tuya-convert ./install_prereq.sh
Fails on the first command with
bash: git: command not found. Ok, so we can install git with
sudo apt install git. And now it works, everything looks like it installed correctly.
Onto the next command,
./start_flash.sh… and I can't find the WiFi network it's creating. I have a feeling that since I'm connected to WiFi already, this script isn't able to use it. After googling for a bit, it turns out we can enter
wpa_cli terminate to disable the WiFi device and allow it to be used by the script. And it works! I can now connect to it with my phone.
Now for the part about flashing the bulb. I try, and wait, and try again… and it doesn't work. It seems that this script creates a network (
vtrust-flash) and then waits for the bulb to connect to it? I don't really understand that… But either way, the bulb is not connecting to it. Time to try something else…
Next time maybe we'll try scanning the bulb's WiFi and see what it has to offer us.