/OpenDTU

Software for ESP32 to talk to Hoymiles Inverters

Primary LanguageC++GNU General Public License v2.0GPL-2.0

OpenDTU

OpenDTU Build cpplint Yarn Linting

!! IMPORTANT UPGRADE NOTES !!

If you are upgrading from a version before 15.03.2023 you have to upgrade the partition table of the ESP32. Please follow the this documentation!

Background

This project was started from this discussion (Mikrocontroller.net). It was the goal to replace the original Hoymiles DTU (Telemetry Gateway) with their cloud access. With a lot of reverse engineering the Hoymiles protocol was decrypted and analyzed.

Documentation

The documentation can be found here. Please feel free to support and create a PR in this repository to make the documentation even better.

Breaking changes

Generated using: git log --date=short --pretty=format:"* %h%x09%ad%x09%s" | grep BREAKING

* 71d1b3b       2023-11-07      BREAKING CHANGE: Home Assistant Auto Discovery to new naming scheme
* 04f62e0       2023-04-20      BREAKING CHANGE: Web API Endpoint /api/eventlog/status no nested serial object
* 59f43a8       2023-04-17      BREAKING CHANGE: Web API Endpoint /api/devinfo/status requires GET parameter inv=
* 318136d       2023-03-15      BREAKING CHANGE: Updated partition table: Make sure you have a configuration backup and completly reflash the device!
* 3b7aef6       2023-02-13      BREAKING CHANGE: Web API!
* d4c838a       2023-02-06      BREAKING CHANGE: Prometheus API!
* daf847e       2022-11-14      BREAKING CHANGE: Removed deprecated config parsing method
* 69b675b       2022-11-01      BREAKING CHANGE: Structure WebAPI /api/livedata/status changed
* 27ed4e3       2022-10-31      BREAKING: Change power factor from percent value to value between 0 and 1

Currently supported Inverters

Model Required RF Module DC Inputs MPP-Tracker AC Phases
Hoymiles HM-300-1T NRF24L01+ 1 1 1
Hoymiles HM-350-1T NRF24L01+ 1 1 1
Hoymiles HM-400-1T NRF24L01+ 1 1 1
Hoymiles HM-600-2T NRF24L01+ 2 2 1
Hoymiles HM-700-2T NRF24L01+ 2 2 1
Hoymiles HM-800-2T NRF24L01+ 2 2 1
Hoymiles HM-1000-4T NRF24L01+ 4 2 1
Hoymiles HM-1200-4T NRF24L01+ 4 2 1
Hoymiles HM-1500-4T NRF24L01+ 4 2 1
Hoymiles HMS-300-1T CMT2300A 1 1 1
Hoymiles HMS-350-1T CMT2300A 1 1 1
Hoymiles HMS-400-1T CMT2300A 1 1 1
Hoymiles HMS-450-1T CMT2300A 1 1 1
Hoymiles HMS-500-1T CMT2300A 1 1 1
Hoymiles HMS-600-2T CMT2300A 2 2 1
Hoymiles HMS-700-2T CMT2300A 2 2 1
Hoymiles HMS-800-2T CMT2300A 2 2 1
Hoymiles HMS-900-2T CMT2300A 2 2 1
Hoymiles HMS-1000-2T CMT2300A 2 2 1
Hoymiles HMS-1600-4T CMT2300A 4 4 1
Hoymiles HMS-1800-4T CMT2300A 4 4 1
Hoymiles HMS-2000-4T CMT2300A 4 4 1
Hoymiles HMT-1600-4T CMT2300A 4 2 3
Hoymiles HMT-1800-4T CMT2300A 4 2 3
Hoymiles HMT-2000-4T CMT2300A 4 2 3
Hoymiles HMT-1800-6T CMT2300A 6 3 3
Hoymiles HMT-2250-6T CMT2300A 6 3 3
Solenso SOL-H350 NRF24L01+ 1 1 1
Solenso SOL-H400 NRF24L01+ 1 1 1
Solenso SOL-H800 NRF24L01+ 2 2 1
TSUN TSOL-M350 NRF24L01+ 1 1 1
TSUN TSOL-M800 NRF24L01+ 2 2 1
TSUN TSOL-M1600 NRF24L01+ 4 2 1

Hardware you need

ESP32 board

For ease of use, buy a "ESP32 DEVKIT DOIT" or "ESP32 NodeMCU Development Board" with an ESP32-S3 or ESP-WROOM-32 chipset on it.

Sample Picture:

NodeMCU-ESP32

Also supported: Board with Ethernet-Connector and Power-over-Ethernet Olimex ESP32-POE

Change pin assignment

Its possible to change all the pins of the NRF24L01+ module, the Display, the LED etc. The recommend way to change the pin assignment is by creating a custom device profile. It is also possible to create a custom environment and compile the source yourself. This can be achieved by copying one of the [env:....] sections from 'platformio.ini' to 'platformio_override.ini' and editing the 'platformio_override.ini' file and add/change one or more of the following lines to the 'build_flags' parameter:

-DHOYMILES_PIN_MISO=19
-DHOYMILES_PIN_MOSI=23
-DHOYMILES_PIN_SCLK=18
-DHOYMILES_PIN_IRQ=16
-DHOYMILES_PIN_CE=4
-DHOYMILES_PIN_CS=5

It is recommended to make all changes only in the 'platformio_override.ini', this is your personal copy.