Custom Component: ABB/Power-One/FIMER PV Inverters - SunSpec Modbus TCP

hacs_badge

# ha-abb-powerone-pvi-sunspec

HA Custom Component to integrate data from ABB/Power-One/FIMER PV mono-phase and three-phase inverters that support SunSpec Modbus (Sunspec M1, M103, M160), natively or through the VSNx00 wifi logger card. The VSNx00 provides a SunSpec to Aurora protocol adapter so that all modbus commands are translated to the proprietary Aurora protocol.

The component has been originally developed by @binsentsu for SolarEdge inverters, I adapted it, adding some features, rewriting all the registers’ mapping, for my Power-One Aurora PVI-10.0-OUTD 3-phase inverter to which I added a VSN300 card. It has also been tested with an ABB TRIO-8.5-TL-OUTD-S through a VSN300 and REACT2-3.6-TL through a VSN700 datalogger.

Register address map has been implemented following the vendor’s specification documentation listed here:

# Installation through HACS

Install it through HACS adding this as a custom repository: https://github.com/alexdelprete/ha-abb-powerone-pvi-sunspec then go to the integrations page in your configuration and click on new integration → ABB Power-One PVI SunSpec.

# Manual Installation

Copy contents of custom_components folder to your home-assistant config/custom_components folder. Restart Home Assistant, and then the integration can be added and configured through the native integration setup UI. If you don’t see it in the native integrations list, press ctrl-F5 to refresh the browser while you’re on that page and retry.

# Enabling Modbus TCP on the inverter

Enable Modbus TCP client on the VSN300, take note of the Unit ID (aka Slave ID) of the inverter (depends on the model, default on some models is 2 on others is 247) and during the configuration of the component, use the appropriate Slave address.

# Configuration Parameters Explained

  • custom name: name for the inverter, that will be used as prefix for sensors created by the component

  • ip/hostname: IP or hostname of the inverter

  • tcp port: tcp port of the datalogger

  • slave id: it’s the unit id of the inverter in the chain (you can have multiple inverters in one chain, default is 254 usually, but on some it’s 2)

  • register map base address: it’s the base address from where the register map starts, usually it’s 40000, but for VSN300 datalogger it’s 0

  • polling period: frequency, in seconds, to read the registers and update the sensors

Config

Coffee

If you like this integration, I’ll gladly accept some quality coffee, but please don’t feel obliged. :slight_smile:

Buy Me A Coffee

I’d like to thank @CJNE for the great help he’s given me when I got stuck with a couple of issues.
I also thank @binsentsu for his SolarEdge component, from which this component has been started.

Thanks also to my first beta-tester: @supernial. :slight_smile:

1 Like

:wink: Glad I could be of assistance for this excellent product

Thank you. Let me know if v1.1.0 is working for you, I have only been able to test it myself. :slight_smile:

Noup , that one doesnt work anymore

did you install it from scratch? because the new version asks for the Slave ID when you configure it the first time. If you just upgrade the old version you’re using it wouldn’t work. The version you tested tried Slave ID=2 and Slave ID=247 in the code.

If the Slave ID is wrong, the component logs an error. Please check the Core logs for errors and in case please report them here so I can understand what’s happening.

I suggest to delete everything, and reinstall v1.1.0 from scratch. Let me know…

I did an upgrade from hacks. Probably should have installed it from scratch.

Logger: homeassistant.components.sensor
Source: custom_components/abb_powerone_pvi_sunspec/init.py:256
Integration: Sensor (documentation, issues)
First occurred: 9:50:00 (2 occurrences)
Last logged: 9:51:02

Error while setting up abb_powerone_pvi_sunspec platform for sensor
Traceback (most recent call last):
File “/usr/src/homeassistant/homeassistant/helpers/entity_platform.py”, line 250, in _async_setup_platform
await asyncio.shield(task)
File “/config/custom_components/abb_powerone_pvi_sunspec/sensor.py”, line 21, in async_setup_entry
hub.read_modbus_data_inverter()
File “/config/custom_components/abb_powerone_pvi_sunspec/init.py”, line 256, in read_modbus_data_inverter
self.data[“comm_model”] = DEVICE_MODEL[comm_options]
KeyError: 82

this happens reinstalling from scratch? did you manage to configure it at the beginning selecting the slave address? you input 247 right?

It seems like the slave id is not configured. I’d likt to solve this, unless it’s a configuration issue.

Yep. This is from scratch. I did pass it a value of 2 first. Then the error was that it cant recognize slave. So i tried with 247 and then this error appeared

Please make sure you delete the old integration from the integrations page, then remove the repository from HACS and eventually restart HA just to be safe.

Once you have a clean state, readd the repository in HACS and reinstall the component, making sure you use last version (v1.2.0).

Then follow these configuration steps:

  1. After you add the component, go to HA integrations, and add ABB integration, this should come up, and you have to fill it based on your configuration: your inverter’s slave address is 247, not 2, so you should input 247 in the appropriate field.

image

  1. After you do that step, the component should validate the configuration and show you this, that means the inverter was found:

image

  1. After you click finish, you should see this in the list of integrations, with the indication of the device and the entities. If you see no indication of the number of devices/entities, something’s wrong.

image

Let me know how it goes and at which step you have problems. Thanks a lot for the help.

Hi, Im pretty sure I have done those steps exactly same , last time . But now I see new version. Let me try it one more time just to be sure

Thanks, I want to be sure the code works also for others. I only tested it with you, but before I introduced the configurable Slave address. The rest should be the same, so if it worked before, it should also work now.

One thing: the default TCP port is 502 for me, I don’t know for you, please make sure that everything is set properly. I know for sure your slave address is 247, but I don’t know about your tcp port, I guess it’s the same… :slight_smile:

Even though now its in repo of HACS. Its not visible in integrations of HA anymore. So can’t add it

Did you install v1.2 in HACS? After you install it there, you have a red-box around the component that says you need to restart HA.

After you restart HA, you go in HA integrations, and add it. If you don’t see it, you simply have to refresh the browser. It’s a common issue for HACS components.

Well. Im afraid I can’t make it to work anymore. I have reinstalled it in Hacs, did a reboot. It finalky appeared in HA Integrations. I have added IP. port ia same 502, slave is 247. And got same error as pasted before

Found the problem: some ABB models were not in the list that the code uses for detection. When you used the first version of the component, I ignored the model, that’s why it worked before and not now.

I released v1.2.1. If you go in HACS, you should see an update on the component, if you don’t, click on the 3 dots on the lower right and select “Update Information”, so HACS will detect the new version, then do the usual process: first delete the integration from HA, then update the component in HACS to v1.2.1, then restart HA, then readd it in HA integration list and configure it.

Hope it works this time. Thanks for your help.

Yes. And I didn’t even had to reset anything. Just upgraded to the fixed version and it worked. Everything is fine now ! Good job !

Glad it’s now working fine for you, sorry for that problem. Unfortunately ABB and Power-One firmwares are a little different in some details and I don’t have an ABB one to test. :slight_smile:

Can I ask you to show me the Device Info and the information sensors? Need it to verify some things in the specs document. Thanks a lot.

image
image

I forgot…please show me also the two temperature sensors, since I had to modify the scale factor for one of them on my inverter, I want to see if there’s the same problem for ABB:

image

Ok. Let see. Here are some screenshots.