This script allows you to receive and control commands and data from your Hoymiles inverter with RaspberryPi
WORK IN PROGRESS
- Get RaspberryPi with nRF24L01+ board
- pip3 install circuitpython-nrf24l01 Adafruit-Blinka crcmod
- Modify inverter_ser to your inverters serial number
- Optional: modify nrf.channel to one of [3,23,40,61,75] if you dont get a response to the time package
- Receive Packages from Hoymiles
- Send Control Packages
- Power Limit (non + persistent)
- On/OFF
- Send request data packages
- Assemble multiple packages into one data package
- Re-request missing packages
- Check CRC's
- Currently you can send/receive just to/from one inverter at a time
- Data received back from the inverter is checked and assembled but not really parsed yet
setPowerLimit(inverter_serial, 50) -> limit power to 50 watt non-persistently
setPowerLimit(inverter_serial, 50, True) -> limit power to 50% of max power non-persistently
setPowerLimit(inverter_serial, 50, True, True) -> limit power to 50% of max power persistently
sendControl(inverter_serial, CMD.OFF) -> inverter turns off
sendControl(inverter_serial, CMD.ON) -> inverter turns on
sendTime(inverter_ser) -> inverter responds with a complete data package
All inverters of the HM-* series should be supported
- HM-1500
- HM-1200
- HM-800
- HM-600
- HM-300 ?
For this script to work you need a RaspberryPi with nRF24L01+ board attached to pins 15-24
The Board design can be found here https://oshwlab.com/kned/nrf24l01 you can Order it here for 2$ or use your own manufacturer with gerber files in the repo
Additionally you need a nRF24L01+ SMD board (Ebay, Aliexpress...) and one 100uF 16V Capacitor
For the pinout see https://circuitpython-nrf24l01.readthedocs.io/en/latest/#pinout (SpiDev mode is used)
https://github.com/lumapu/ahoy