Flash OpenDTU to an ESP32 Wroom
A few month ago I installed a small solar panel on my balcony which is attached to a Hoymiles inverter. To read out data from the inverter I use OpenDTU. For this I bought a kit from blinkyparts which is really easy to assemble and came with an already flashed ESP32 which was ready to use. This setup run fine till today my vaccum robot 🤖💥 decided to eat the cable of the ESP32 and in the process the USB connector was ripped of the board. So I had to replace the ESP32 and this time I had to flash and install OpenDTU myself. This process is documented below for my future self and others.
Flash OpenDTU to ESP Wroom-32
- Install esptool:
pip install esptool
- Download OpenDTU release from: https://github.com/tbnobody/OpenDTU/releases - for the ESP Wroom-32 use
opendtu-generic_esp32.bin
- Attach ESP32 via USB cable to your computer
-
Find port used by the ESP32
- run
ls -l /dev/tty*
and look at the date e.g.18 Nov 15:24
to find the most recent attached device - use this port in the following command, in my case
/dev/tty.usbserial-0001
- run
- Press hardware "Boot"-button on ESP32 before running following command. otherwise you get error
A fatal error occurred: Failed to connect to ESP32: Wrong boot mode detected (0x13)! The chip needs to be in download mode.
- Flash the ESP32 by running:
esptool.py --port /dev/tty.usbserial-0001 --chip esp32 --before default_reset --after hard_reset \
write_flash --flash_mode dout --flash_freq 40m --flash_size detect \
0x0 opendtu-generic_esp32.factory.bin
Configuration
- Connect to Access Point "OpenDTU-*"
-
Under
Settings > Config Management
restore ...-
Main Config
- if you have a backup of your previous config. Main Config contains Wifi SSID & Password, Inverter Setup, mqtt-config, ...
- I did not have a backup and therefore had to configure wifi, inverter and mqtt again.
-
Pin mapping
- I used the pin mapping for the blinkyparts kit see https://github.com/tbnobody/OpenDTU/blob/master/docs/DeviceProfiles/blinkyparts_esp32.json
- After restoring the pin mapping the LEDs and the display worked. Under
Settings > Device-Manager
I selected the profileNRF, Display
to turn off the LEDs because the annoyed me during night. To use the LEDs I could useNRF, LEDs, Display
-
Create backup
I hope I wont need to set up my OpenDTU in the forseeable future, but I don't know what my vaccum robot has in mind so as a final step I created a backup under Settings > Config management
for the Main Config (config.json). Be careful to place it at a secure location because it contains the secrets in plain text e.g. the wifi password.
Helpful resources
- Documentation of OpenDTU https://github.com/tbnobody/OpenDTU
- Blinkyparts instruction for OpenDTU Breakout Board: https://binary-kitchen.github.io/SolderingTutorial/OpenDTU_Breakout/manual/OpenDTU_Breakout_en.pdf