This component simplifies the integration of a Fronius inverter and optional PowerFlow/SmartMeter:
If you have a SmartMeter installed this component:
All energy and power sensors provide required attributes to allow long term statistics to be recorded which enables support for the new Energy dashboard introduced in HA 2021.8.
Unfortunately HA 2021.9 breaks energy sensors in earlier releases of this component. To upgrade to HA 2021.9.x, ensure you update to this release immediately afterwards.
2021.8.x can be made compatible by using customize.yaml to override the required entities as follows. These entries are not required if running 2021.9.x or later.
If it doesn't already exist, add the following into configuration.yaml:
homeassistant:
customize: !include customize.yaml
If it doesn't already exist, create a "customize.yaml" file in the same directory as configuration.yaml and add the following:
sensor.fronius_total_energy:
state_class: measurement
last_reset: 1970-01-01T00:00:00+00:00
sensor.fronius_smartmeter_energy_ac_consumed:
state_class: measurement
last_reset: 1970-01-01T00:00:00+00:00
sensor.fronius_smartmeter_energy_ac_sold:
state_class: measurement
last_reset: 1970-01-01T00:00:00+00:00
Where "fronius" in the sensor name needs to match the name of the integration. Once upgraded to HA 2021.9.x the above entries may be safely removed.
The following "lifetime" sensors can be added to the energy configuration:
total_energy
smartmeter_energy_ac_consumed
(smartmeter required)smartmeter_energy_ac_sold
(smartmeter required)NOTE: The Energy dashboard expects units to be expressed in kWh otherwise they will not be available to add to the configuration. To resolve this, you must include the following in the Fronius component configuration.yaml entry to ensure units are converted appropriately:
units: kWh
The Default URL called is http://ip_address/GetInverterRealtimeData.cgi?Scope=Device&DeviceId=1&DataCollection=CommonInverterData
The optional PowerFlow URL is http://ip_address/solar_api/v1/GetPowerFlowRealtimeData.fcgi
The optional SmartMeter URL is http://ip_address/solar_api/v1/GetMeterRealtimeData.cgi?Scope=Device&DeviceId=1
Copy the fronius_inverter
folder in the custom_components directory into your own custom_components directory in your config directory of Home Assistant.
E.g.:
../config/custom_components/fronius_inverter/__init__.py
../config/custom_components/fronius_inverter/manifest.json
../config/custom_components/fronius_inverter/sensor.py
Be sure to pull raw data from GitHub or use HACS
# Minimal configuration.yaml entry:
sensor:
- platform: fronius_inverter
ip_address: LOCAL_IP_FOR_FRONIUS
# Example configuration.yaml entry where you can specify the sensors you want:
sensor:
- platform: fronius_inverter
ip_address: LOCAL_IP_FOR_FRONIUS
monitored_conditions:
- ac_power
- day_energy
- year_energy
- total_energy
# Example configuration.yaml entry where you have more than one inverter:
sensor:
- platform: fronius_inverter
ip_address: LOCAL_IP_FOR_FRONIUS
scope: System
# Example configuration.yaml entry where you have a SmartMeter device and add PowerFlow sensors:
sensor:
- platform: fronius_inverter
ip_address: LOCAL_IP_FOR_FRONIUS
powerflow: True
power_units: kW
# Example configuration.yaml entry where you have a SmartMeter device and add SmartMeter sensors:
sensor:
- platform: fronius_inverter
ip_address: LOCAL_IP_FOR_FRONIUS
smartmeter: True
variable | required | type | default | description |
---|---|---|---|---|
ip_address |
yes | string | The local IP address of your Fronius Inverter. | |
name | no | string | Fronius |
The preferred name of your Fronius Inverter. | |||
model | no | string | symo | Type of inverter from gen24, symo |
||||
always_log | no | boolean | True | Set to False if your Fronius Inverter shuts down when the sun goes down. |
||||
scan_interval |
no | string | 60 | The interval to query the Fronius Inverter for data. |
powerflow | no | boolean | False | Set to True if you have a PowerFlow meter (SmartMeter) to add grid_usage , house_load , panel_status , rel_autonomy and rel_selfconsumption sensors. |
||||
smartmeter | no | boolean | False | Set to True if you have a SmartMeter to add smartmeter_current_ac_phase_one , smartmeter_current_ac_phase_two , smartmeter_current_ac_phase_three , smartmeter_voltage_ac_phase_one , smartmeter_voltage_ac_phase_two , smartmeter_voltage_ac_phase_three , smartmeter_energy_ac_consumed and smartmeter_energy_ac_sold sensors. |
||||
smartmeter_device_id | no | string | 0 |
The Device ID of your Fronius SmartMeter. | |||
units | no | string | MWh | The preferred units for Year and Total Energy from Wh, kWh, MWh . |
||||
power_units | no | string | W | The preferred PowerFlow units from W, kW, MW . |
||||
device_id | no | string | 1 |
The Device ID of your Fronius Inverter. | |||
scope | no | string | Device | Set to System if you have multiple inverters. This will return ac_power, day_energy, year_energy and, total_energy only. Case-sensitive. |
||||
monitored_conditions | no | list | All | List of monitored conditions from: ac_power , ac_current , ac_voltage , ac_frequency , dc_current , dc_voltage , day_energy , year_energy , total_energy , grid_usage , house_load , panel_status , rel_autonomy , rel_selfconsumption , smartmeter_current_ac_phase_one , smartmeter_current_ac_phase_two , smartmeter_current_ac_phase_three , smartmeter_voltage_ac_phase_one , smartmeter_voltage_ac_phase_two , smartmeter_voltage_ac_phase_three , smartmeter_energy_ac_consumed , smartmeter_energy_ac_sold |
Follow the instructions for installation on Github
Add the following to the Lovelace resource config in the Raw Config Editor:
resources:
- type: module
url: /local/custom_ui/power-wheel-card.js?v=1
Then add and configure a basic custom card for displaying the power view:
type: 'custom:power-wheel-card'
title: Solar Power
production_is_positive: false
solar_power_entity: sensor.fronius_panel_status
grid_power_entity: sensor.fronius_grid_usage
If you also want to have an energy view in the Power Wheel you need three more sensors. And these sensors will be different depending on if your smart meter is installed in the feed-in-path or consumption-path.
This is the configuration you need to add to your Power Wheel config in Lovelace. This will be the same regardless of where your smart meter is installed.
solar_energy_entity: sensor.fronius_day_energy
grid_energy_consumption_entity: sensor.grid_consumed_energy_day
grid_energy_production_entity: sensor.grid_sold_energy_day
Next you need to create two new sensors for grid energy consumption and production. And this is what will differ depending on your smart meter installation.
Create the two sensors for daily consumption and production. Note: if smart meter energy sensors are not in kWh you need to convert those two to kWh using template sensors.
utility_meter:
# calculate daily energy consumed from grid (input must be in kWh)
grid_consumed_energy_day:
source: sensor.fronius_smartmeter_energy_ac_consumed
cycle: daily
# calculate daily energy sold to grid (input must be in kWh)
grid_sold_energy_day:
source: sensor.fronius_smartmeter_energy_ac_sold
cycle: daily
utility_meter:
# convert consumed energy to daily energy (this is what the house consumes)
house_energy_day:
source: sensor.fronius_smartmeter_energy_ac_consumed
cycle: daily
sensor:
- platform: template
sensors:
# calculate grid energy (negative will be to grid, positive from grid)
grid_energy_day:
friendly_name: 'Grid energy'
unit_of_measurement: 'kWh'
value_template: '{{ (states("sensor.fronius_day_energy") | float - states("sensor.house_energy_day") | float) * -1 }}'
# calculate energy consumed from grid
grid_consumed_energy_day:
unit_of_measurement: 'kWh'
value_template: >
{% if states("sensor.grid_energy_day") | float > 0 -%}
{{ states("sensor.grid_energy_day") | float }}
{%- else -%}
{{ 0 | float }}
{%- endif %}
# calculate energy produced to grid
grid_sold_energy_day:
unit_of_measurement: 'kWh'
value_template: >
{% if states("sensor.grid_energy_day") | float < 0 -%}
{{ states("sensor.grid_energy_day") | float * -1 }}
{%- else -%}
{{ 0 | float }}
{%- endif %}