-
Notifications
You must be signed in to change notification settings - Fork 1
Alerts and Notifications
Automations that tell you when something is wrong with the inverter, and one that tells you when something is right. The integration already puts persistent problems into the Repairs panel; these are for the phone.
| Placeholder | Block | sunspec_key |
Meaning |
|---|---|---|---|
sensor.inverter_operating_state |
103 | St |
OFF, SLEEPING, STARTING, MPPT, THROTTLED, SHUTTING_DOWN, FAULT, STANDBY
|
sensor.inverter_events |
103 | Evt1 |
Active event flags as a comma-separated string, and as a list in the active_flags attribute |
sensor.inverter_ac_power |
103 | W |
AC output, W |
sensor.inverter_cabinet_temperature |
103 | TmpCab |
Cabinet temperature |
sensor.solar_energy_daily |
Today's production, see Energy dashboard and statistics |
notify.mobile_app_your_phone stands for your notification target.
The state and event sensors are tagged Diagnostic, so they sit at
the bottom of the device page.
alias: Inverter fault
triggers:
- trigger: state
entity_id: sensor.inverter_operating_state
to: FAULT
actions:
- action: notify.mobile_app_your_phone
data:
title: Inverter fault
message: >
{{ state_attr('sensor.inverter_events', 'active_flags') | join(', ')
or 'no event flags set' }}The flag names come from the SunSpec definition: GROUND_FAULT,
DC_OVER_VOLT, AC_DISCONNECT, GRID_DISCONNECT, OVER_TEMP,
UNDER_FREQUENCY, BLOWN_STRING_FUSE and so on. The raw attribute
holds the numeric bitfield if the vendor's manual lists codes.
Some inverters keep running in THROTTLED with a flag set. This one
fires when any flag has been set for two minutes, which skips the
momentary ones at startup:
alias: Inverter event flag
triggers:
- trigger: template
value_template: >
{{ (state_attr('sensor.inverter_events', 'active_flags') or []) | length > 0 }}
for: "00:02:00"
actions:
- action: notify.mobile_app_your_phone
data:
title: Inverter event
message: >
{{ states('sensor.inverter_operating_state') }}:
{{ state_attr('sensor.inverter_events', 'active_flags') | join(', ') }}At night the inverter is allowed to disappear. During the day it is not. The sensors go unavailable after about three minutes of failed polls; this waits ten more before it complains:
alias: Inverter unreachable by day
triggers:
- trigger: state
entity_id: sensor.inverter_ac_power
to: unavailable
for: "00:10:00"
conditions:
- condition: state
entity_id: sun.sun
state: above_horizon
- condition: numeric_state
entity_id: sun.sun
attribute: elevation
above: 10
actions:
- action: notify.mobile_app_your_phone
data:
title: Inverter unreachable
message: No data from the inverter for 13 minutes in daylight.The Repairs panel raises "Cannot reach SunSpec inverter" for the same condition; this is the version that reaches you while you are out.
The inverter answers, reports MPPT, and produces nothing. A tripped
DC breaker, a failed string, snow on the roof. Thirty minutes below
50 W with the sun high:
alias: Inverter idle at midday
triggers:
- trigger: numeric_state
entity_id: sensor.inverter_ac_power
below: 50
for: "00:30:00"
conditions:
- condition: numeric_state
entity_id: sun.sun
attribute: elevation
above: 30
- condition: not
conditions:
- condition: state
entity_id: sensor.inverter_operating_state
state: FAULT
actions:
- action: notify.mobile_app_your_phone
data:
title: Inverter idle
message: >
Below 50 W for 30 minutes at {{ state_attr('sun.sun', 'elevation') | round(0) }}°
sun elevation, state {{ states('sensor.inverter_operating_state') }}.Adjust the elevation to your roof. A heavily shaded east roof at 30° in November is normal.
alias: Inverter cabinet hot
triggers:
- trigger: numeric_state
entity_id: sensor.inverter_cabinet_temperature
above: 65
for: "00:10:00"
actions:
- action: notify.mobile_app_your_phone
data:
title: Inverter temperature
message: "Cabinet at {{ states('sensor.inverter_cabinet_temperature') }} °C."The threshold is device-specific. Look at a summer's history first and set it a few degrees above the highest value you see.
Only on devices with block 704, which reports the remaining seconds on
the sensor with sunspec_key WMaxLimPctRvrtRem. If a keepalive
should be running and the counter reaches zero, the keepalive is dead:
alias: Export limit lapsed
triggers:
- trigger: numeric_state
entity_id: sensor.inverter_wmaxlimpctrvrtrem
below: 1
for: "00:01:00"
conditions:
- condition: state
entity_id: input_boolean.export_limit_active
state: "on"
actions:
- action: notify.mobile_app_your_phone
data:
title: Export limit lapsed
message: The inverter dropped the limit. Check the keepalive automation.The helper is the one from Zero export and export limiting.
alias: Solar daily summary
triggers:
- trigger: sun
event: sunset
offset: "00:30:00"
actions:
- action: notify.mobile_app_your_phone
data:
title: Solar today
message: >
{{ (states('sensor.solar_energy_daily') | float(0) / 1000) | round(1) }} kWh produced.Drop the / 1000 if you converted the lifetime counter to kWh.
Recipes
- Energy dashboard and statistics
- Zero export and export limiting
- Battery control
- Alerts and notifications
- Dashboard cards
- n8n workflows
- Node-RED workflows
- Sharing the inverter
Reference
- SunSpec models explained
- Entity names and IDs
- Diagnostics file reference
- Vendor notes
- Hardware reports
- FAQ
Under the hood
In the repository