Home assistant supported inverters

Greetings,

Brand new and still getting acquainted with all the terms and uses. In regards to automation using Home assistant which type of inverters are all supported? I see a lot of Victron but does anyone know of other brands like Sunsynk etc?
I’m currently using a growatt which I believe can’t be managed by HA so I want to find out which inverters can be automated when I upgrade. Thank you.

Welcome Gerrit!

I think I have seen Sunsynk modbus, it doesn’t look straight forward though.

Would love one day to maybe setup what you want Victron to export and it just does (I know there are sooooo many different types of system however a config page you setup and then it auto mqtt discoveries the rest)

IMHO, the Goodwe experimental integration from HACS is the best. Check out the awesome setup @tinuva has here: GitHub - tinuva/home-assistant-config

Victron you use the modbus integration I believe, never used it myself.

The sunsynk I think there are 2 options.
a. some ESP option where you build it yourself, not really sure
b. There is some module you buy and it sends everything to HA over mqtt. Also a very decent setup. I believe this option uses SolarAssistant integration with Home Assistant

Then yes I have a goodwe where the integration works amazing. I would still go the sunsynk route now if I did it over.

Btw, many brands supported with solar-assistant: Real-time solar monitoring from a Raspberry Pi | SolarAssistant Software

1 Like

This is awesome! Wish I knew about this 2 years ago. Thank you

Victron can do MQTT or modbus. I use modbus and it is really the smoothest sailing for me, even though I have very little programming experience and find very little time for HA automation in general.

I’ve added to my holiday list to find time for the loadshedding automation. Looking forward to it!

I have a Deye 8KW and I am running a little RaspPi Zero with a USB to RS485 comms with some NodeRed to perform all the modbus functions. All the inverter data is sent back to home assistant running inside a KVM on my server via MQTT.
I have a DIY Lithium Battery with a Daly BMS so I also fetch the BMS values from the PiZero over bluetooth (GitHub - tomatensaus/python-daly-bms: Python module for Daly BMS devices) I had to panelbeat the code a bit to work for my Daly BMS.
I have home assistant automations to limit the charge current on my inverter as the battery approaches 100% charge. This avoids the poor BMS needing to shut down a 60A charge current vs 22A (with the automations). In theory those mosfets should last longer
I also have automations to prioritise the charge of the battery on rainy days, inverter setting “charge priority” (I refuse to charge from the grid). My inverter switches over to grid if the battery is below a defined value.
I also switch on my heatpump automatically when the battery is close to full so that some excess power can be stored as heat.
Oh by the way Deye and Sunsync is identical the hardware and firmware works exactly the same, the only difference is the sunsync has a different screen.

Sounds like a great setup. So just to clarify you are able to adjust the invertors mode settings (timer) on the fly with HA and NodeRed?
This is the type of automation I want to invest in to allow the system to adjust itself when I’m not around…and later on, be able to import my area’s Load Shedding schedule and adjust around that as well.

Yes those are only registers on the Sunsync/Deye. You simply write to them.
The code to write to the first SOC box on the time of use schedules

msg.payload = { 
    value: [45],
    'fc': 16,
    'unitid': 1,
    'address': 268,
    'quantity': 1 };
return msg;

This is node red modbus write

I have a “blue” GF1000 inverter and kind of reverse engineered the modbus by looking at the windows
app(horrible horrible software) that came with the CD. I prefer using an ESP32 conected to it. Here is
Not worth the money buying them anymore but here it is anyway.

My YAML file if anyone wants to use it change it etc:

esphome:
  name: solar1

esp32:
  board: esp32dev
  framework:
    type: arduino
    
preferences:
  flash_write_interval: 60min
  


# Enable logging
logger:

# Enable Home Assistant API
api:
  encryption:
    key: "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"

ota:
  password: "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"

wifi:
  ssid: !secret wifi_ssid
  password: !secret wifi_password

  # Enable fallback hotspot (captive portal) in case wifi connection fails
  ap:
    ssid: "Solar1 Fallback Hotspot"
    password: "xxxxxxxxxxxxxxxxx"

captive_portal:
    
uart:
  id: mod_bus
  tx_pin: 17
  rx_pin: 16
  baud_rate: 2400
  stop_bits: 1
  


modbus:
  send_wait_time: 300ms
  id: modbus1

modbus_controller:
  - id: GF1000
    ## the Modbus device addr
    address: 0x1
    modbus_id: modbus1
    setup_priority: -10
    update_interval: 5s
    
sensor:

  - platform: modbus_controller
    modbus_controller_id: GF1000
    name: "AC volt in 1"
    id: ac_volt_in
    register_type: read
    address: 1
    unit_of_measurement: "Vac"
    value_type: U_WORD

  - platform: modbus_controller
    modbus_controller_id: GF1000
    name: "AC volt out 1"
    id: ac_volt_out
    register_type: read
    address: 2
    unit_of_measurement: "Vac"
    value_type: U_WORD

  - platform: total_daily_energy
    name: "Inverter Daily Power 1"
    power_id: inverter_watt_out

  - platform: modbus_controller
    modbus_controller_id: GF1000
    name: "Inverter power 1"
    id: inverter_watt_out
    register_type: read
    address: 4
    unit_of_measurement: "kW"
    value_type: U_WORD
    accuracy_decimals: 3
    filters:
      - multiply: 0.01
      
  - platform: modbus_controller
    modbus_controller_id: GF1000
    name: "Inverter Celcius 1"
    id: inverter_Celcius
    register_type: read
    address: 5
    unit_of_measurement: "C"
    value_type: U_WORD
      
  - platform: modbus_controller
    modbus_controller_id: GF1000
    name: "PV Volt 1"
    id: pv_volt
    register_type: read
    address: 6
    unit_of_measurement: "V"
    value_type: U_WORD
    
  - platform: modbus_controller
    modbus_controller_id: GF1000
    name: "Battery Charge Amp 1"
    id: bat_charge_amp
    register_type: read
    address: 7
    unit_of_measurement: "A"
    value_type: U_WORD
    accuracy_decimals: 1
    filters:
      - multiply: 0.1
          
  - platform: modbus_controller
    modbus_controller_id: GF1000
    name: "Battery Volt 1"
    id: bat_volt
    register_type: read
    address: 8
    unit_of_measurement: "V"
    value_type: U_WORD
    accuracy_decimals: 1
    filters:
      - multiply: 0.1
    
  - platform: total_daily_energy
    name: "Solar1 Daily Power 1"
    power_id: pv_watt
    
  - platform: modbus_controller
    modbus_controller_id: GF1000
    name: "PV power 1"
    id: pv_watt
    register_type: read
    address: 10
    unit_of_measurement: "kW"
    value_type: U_WORD
    accuracy_decimals: 3
    filters:
      - multiply: 0.001

  - platform: modbus_controller
    modbus_controller_id: GF1000
    name: "PV Kwh Generated 1"
    id: pv_Generated_total
    register_type: read
    address: 13
    unit_of_measurement: "kWh"
    value_type: U_WORD
    accuracy_decimals: 3
    filters:
      - multiply: 0.001

time:
  - platform: sntp
    id: my_time

2 Likes

Sunsynk, Deye, Turbo-E & Sol-Ark can integrate into Home Assistant with kellerza/sunsynk: Sunsynk Inverter Python library and Home Assistant OS Addon (github.com) (disclaimer: I’m the author)

@Gerrit. You can set the mode settings through the user interface or normal automations.

The only automation I use is “Load Limit” to Essentials only during the evening. This prevents the battery to be used if the geyser/pool switches on (not the norm)

4 Likes

I have a SunSynk inverter that I connect to HA (running on an RPi4B) using SolarAssistant (https://solar-assistant.io/) running on an RPi Zero 2 W. I get the load shedding info into HA using this integration (ha.integration.load_shedding/README.md at master · wernerhp/ha.integration.load_shedding · GitHub) and then the magic starts: run the geysers an hour before loadshedding starts. Turn off geysers/pool pump/etc when the power drawn from the inverter is too high or the batteries get too low.

I can also recommend quality of the Victron Modbus integration – you can really get a good grip of things without any other components necessary.

The community has managed to:

  • Get current PV production
  • Get current grid usage
  • Get current battery SOC and power in/out
  • Get essential/non-essential usage
  • Get grid voltage / amps (useful to know if the grid is available)
  • Get inverter state, inverter errors
  • Get and set ESS state, modes
  • Get and set minimum SOC (useful to limit battery usage while still getting PV)
  • Get and set grid setpoint (useful to force-charge)
  • Get and set inverter max power output (useful to limit battery use at night and blend grid + inverter)

and many more. There’s an Excel file which shows all the modbus registers you can access (you just need to punch in your email before you can download it, that’s why I won’t share it here).

@Gerrit / all, I recently updated the Sunsynk Addon / Deye Addon’s docs with some examples of automations/HA cards etc

1 Like

@kellerza this looks good.

Any idea if/how your integration can be used for inverters in parallel

@Vassen - there is a long discussion here: SunSynk Double Inverters · Issue #39 · kellerza/sunsynk · GitHub

In summary:

  • you need a USB - RS485 for each inverter
  • today you need multiple copies of the addon running (you can make local copies or use dev/the original one if that works for you)

The intention (and the MULTI addon supports the configuration for this today) is to allow reading multiple ports/USB devices in the future… but no specific timeframe on this yet. Most of the building blocks are in place with multi. But I don’t really have a test environment to do this on.

I have spent about 2 months building a module that is pretty much plug and play into home-assistant (Micro-controller) and your inverter shows up as a device that allows you to change almost all settings on a Sunsynk/Deye. The idea is to share a fully set-up home assistant backup so that anyone can restore it, and instantly have a fully functional solar monitoring system, complete with dashboards, graphs, and config screens and sample automations. A sort of bootstrap to get your solar onto home-assistant and get you started.

Now you could use any of the existing methods like https://github.com/kellerza/sunsynk plugin, or https://github.com/StephanJoubert/home_assistant_solarman but you will have to rename some entities and figure out how the fields map to each other and some things will not be available at all but there are multiple options.

I am still busy with some final testing, so I am aiming to start selling small batches in about 2 months. Just wanted to put it out there that there will be another option soon.

Nice!

What micro-controller do you refer to, ESP32?

Should be useful for new users, but I have 6+ years of vested HASS setup :wink: Half my house does not have normal light switches.:grin:

The addon/MQTT magic gives you the same, but it’s a nicer interface to setup something like System settings card | Deye/Sunsynk