I have enabled a TCP Client on my WiFi VSN300 wifi logger card that runs on ABB Solar Inverter(Trio) . As far as I understand its supposed to run on SunSpec but no matter what config I try it still doesn’t want to connect to the card. Has anyone in this community have any experience with SunSpec or ABB?
This is now resolved. The solution was in the UNITID which in HA MODBUS plugin translates to Slave parameter. In configuration you need to provide connections params as follows.
modbus:
- type: tcp
host: 10.0.0.2
port: 502
name: abb
In sensors you need to add a sensor with proper slave id . example :
-
name: abb-fgrid-hertz
hub: abb
register: 86
slave: 247
scale: 0.01
precision: 1
data_type: int
unit_of_measurement: "Hz"
This will allow to access 0x003 function and read holding registers. Would be good to get specifications for the ABB inverters to write up a nice card
HI would you be able to provide some more details of how you were able to get the data polling into Home Assistant. Ive got the same vsn300 card on my solar inverter but just a bit confused as to how to configure it properly. I am not able to see the sensor in lovelace.
I presume you didn’t configure config yet.
I get this message once I try and add in the sensor.
“This entity does not have a unique ID, therefore its settings cannot be managed from the UI”
I have tried to configure config with the following settings:
modbus:
- type: tcp
host: 192.168.1.5
port: 502
name: abb`
and this I put under sensor:
- platform: modbus
registers:
- name: abb-fgrid-hertz
hub: abb
register: 1
slave: 247
scale: 0.01
precision: 1
data_type: int
unit_of_measurement: "Hz"`
I would like to retrieve at least two values.
- Current Power
- Total Power Today
Well , first thing first is that Register : 1 is not Hz. Its something else.
And for power you have to use
- name: abb-current-power-out
hub: abb
unit_of_measurement: "kW"
register: 84
scale: 0.001
precision: 1
data_type: int
slave: 247
- name: abb-lifetime-power
hub: abb
unit_of_measurement: "kW"
register: 94
count: 2
scale: 0.001
precision: 1
data_type: int
slave: 247
I presume that bullshit values simply dont register in HA as entitites.
In Lovelace UI you can use following configuration
entity: sensor.abb_current_power_out
graph: line
icon: 'mdi:transmission-tower'
name: Power Out
type: sensor
unit: kW
Hi,
So i tried doing it the way that you advised but the sensors are still coming up as unavailable. Could you post a screenshot of what comes up on your end and how it responds in your Home Assistant lovelace UI. How do we know which register values to pull?
Sorry to hear that. I don’t think screen shots will help you in any way. Snippets I have sent are working with that card. I suppose you already went through steps of checking HA logs to see the modbus plugin errors and also used a Modbus client to try and read holding registers of AbB wifi logger card to eleminate the possibility that it doesnt work at all
Try using 247 as slave id
Also I suggest to use software that you could atleast begin to understand. Obviously you didn’t pay attention to the thread above. Heres a simple version for you
As you can see register 94 gives me 66492D which in DEC world means 6703405 and that is exactly reflects my lifetime timer. So first learn to use windows software then try making the HomeAssistant module work
thanks mate, it’s working. For me, it was not on slave id 247, it was on slave id 2. Do you know where I can find any data on the register numbers? I’m looking to track power generation over the course of the day aswell. Current Specs look like this:
- platform: modbus
registers:
- name: abb-current-power-out
hub: abb
unit_of_measurement: "kW"
register: 84
scale: 0.001
precision: 1
data_type: int
slave: 2
- name: abb-lifetime-power
hub: abb
unit_of_measurement: "kW"
register: 94
count: 2
scale: 0.001
precision: 1
data_type: int
slave: 2
So now you paid attention The information about our data logger cards is not so good. I actually use the power of data aggregation of Home Assistant itself and therefore I know exactly how much does it make through the day.
Heres my part of config, hope it helps
- name: abb-fgrid-hertz
hub: abb
register: 86
slave: 247
scale: 0.01
precision: 1
data_type: int
unit_of_measurement: "Hz"
- name: abb-inverter-status
hub: abb
register: 108
slave: 247
data_type: int
- name: abb-ambient-temperature
hub: abb
unit_of_measurement: "°C"
device_class: temperature
register: 103
scale: 0.1
precision: 1
data_type: int
slave: 247
- name: abb-Lin1-Amp
hub: abb
unit_of_measurement: "A"
register: 141
scale: 0.01
precision: 1
data_type: int
slave: 247
- name: abb-Vin1-Volt
hub: abb
unit_of_measurement: "V"
register: 142
scale: 0.1
precision: 1
data_type: int
slave: 247
- name: abb-Lin2-Amp
hub: abb
unit_of_measurement: "A"
register: 161
scale: 0.01
precision: 1
data_type: int
slave: 247
- name: abb-Vin2-Volt
hub: abb
unit_of_measurement: "V"
register: 162
scale: 0.1
precision: 1
data_type: int
slave: 247
- name: abb-current-power-out
hub: abb
unit_of_measurement: "kW"
register: 84
scale: 0.001
precision: 1
data_type: int
slave: 247
- name: abb-lifetime-power
hub: abb
unit_of_measurement: "kW"
register: 94
count: 2
scale: 0.001
precision: 1
data_type: int
slave: 247
scan_interval: 10
- platform: template
sensors:
abb_inverter_status_friendly:
friendly_name: "Inverter Status"
value_template: >
{% if is_state("sensor.abb_inverter_status", "4") -%}
Active
{% elif is_state("sensor.abb_inverter_status", "8") -%}
Standby
{% elif is_state("sensor.abb_inverter_status", "2") -%}
Sleeping
{% elif is_state("sensor.abb_inverter_status", "3") -%}
Starting
{% elif is_state("sensor.abb_inverter_status", "5") -%}
Throttled
{% elif is_state("sensor.abb_inverter_status", "6") -%}
Shutting down
{% elif is_state("sensor.abb_inverter_status", "7") -%}
Fault
{% elif is_state("sensor.abb_inverter_status", "1") -%}
Off
{% else -%}
Figure out what state {{ states("sensor.abb_inverter_status") }} means
{%- endif %}
In case you still need it, I’m almost finished with this custom component, I need to fix the documentation and fix some cosmetic issue, but it works fine. It’s based on the work of @binsentsu and his SolarEdge custom component.
This is a very good addition if you can share it
What inverter do you have? Mono or 3-phase? Because I’m curious to see what happens on mono phase inverters, I don’t know if it works ok on those, since I used the SunSpec 103 and 160 map, and those are for the 3-phase inverters. But I need to test it…if you want to help me as beta tester, I’ll write you in private.
I have Trio 8.5 TL unfortunatelly.
I wrote you privately.
Hello. Found this looking for VSN300 + “PVI-3.0-TL-OUTD-S”, and after unknownly half-redoing @alexdelprete 's work I found his repo with his custom component, which seems to work absolutely perfect. GitHub - alexdelprete/ha-abb-powerone-pvi-sunspec: HA Custom Component to integrate data from ABB/Power-One/FIMER PV Inverters that support SunSpec Modbus (Sunspec M1, M101, M103, M160), natively or through the VSN300 wifi logger card. Thank you @alexdelprete !!!
Thanks for the kind words. You can find the discussion for that component here: Custom Component: ABB/Power-One/FIMER PV Inverters - SunSpec Modbus TCP