Fronius Integration einrichten
Die Fronius-Integration ist nativ in HA enthalten – kein HACS nötig.
Einstellungen → Geräte & Dienste → Integration hinzufügen → Fronius
IP-Adresse des Wechselrichters eingeben. HA erkennt automatisch Smart Meter, Wechselrichter und Batterie.
Wichtig: Deaktivierte Entitäten aktivieren
Fronius deaktiviert viele Entitäten standardmäßig (Phasenwerte, Zählerwerte). Sie sind trotzdem vorhanden – nur versteckt.
Einstellungen → Geräte & Dienste → Fronius → Entitäten → Filter "deaktiviert"
Für dieses Setup mindestens diese Entitäten aktivieren:
| Entity | Beschreibung |
|---|---|
| sensor.solarnet_pv_leistung | PV-Erzeugung in Watt |
| sensor.solarnet_leistung_verbrauch | Hausverbrauch in Watt |
| sensor.solarnet_leistung_netzeinspeisung | Einspeisung (W) – negativ = Netzbezug |
| sensor.solarnet_ladeleistung | Batterie wird geladen (W) |
| sensor.solarnet_entladeleistung | Batterie entlädt (W) |
| sensor.solarnet_relativer_eigenverbrauch | Eigenverbrauchsquote (%) |
Hinweis: Entity-Namen können je nach Installationssprache leicht abweichen.
Im Zweifel unter Entwicklertools → Zustände nach solarnet suchen.
Template-Sensoren für Batterie-Tracking
Fronius-Power-Werte (Watt) sind Momentaufnahmen. Für die Energiebilanz in kWh brauchen wir
total_increasing-Sensoren, die HA für die Energieverbrauchsstatistik versteht.
In configuration.yaml einfügen
template:
- sensor:
- name: "Batterie Energie geladen"
unique_id: battery_energy_charged
unit_of_measurement: "kWh"
device_class: energy
state_class: total_increasing
state: >
{% set power = states('sensor.solarnet_ladeleistung') | float(0) %}
{% if power > 0 %}
{{ (power * 0.00027777) | round(3) }}
{% else %}
0
{% endif %}
- name: "Batterie Energie entladen"
unique_id: battery_energy_discharged
unit_of_measurement: "kWh"
device_class: energy
state_class: total_increasing
state: >
{% set power = states('sensor.solarnet_entladeleistung') | float(0) %}
{% if power > 0 %}
{{ (power * 0.00027777) | round(3) }}
{% else %}
{{ states('sensor.batterie_energie_entladen') | float(0) }}
{% endif %} Warum gibt der Entlade-Sensor den letzten bekannten Wert zurück?
total_increasing-Sensoren dürfen niemals kleiner werden –
sonst schreibt HA einen Reset-Event in die Langzeitstatistik und die Kurven machen Sprünge.
Bei Entladeleistung = 0 wird einfach der letzte Wert gehalten.
Der Faktor 0.00027777 ist 1/3600 –
Watt-Sekunden werden in kWh umgerechnet.
InfluxDB-Logging für Langzeit-Daten
Für Grafana-Dashboards und historische Analysen werden ausgewählte Sensoren in InfluxDB geloggt. Gezielt nur die relevanten Entitäten – das hält die Datenbank klein.
influxdb:
host: 192.168.0.202 # eure InfluxDB-IP
port: 8086
database: homeassistant
username: !secret influxdb_user
password: !secret influxdb_password
max_retries: 3
measurement_attr: unit_of_measurement
default_measurement: state
include:
entities:
- sensor.solarnet_leistung_netzeinspeisung
- sensor.solarnet_leistung_verbrauch
- sensor.solarnet_pv_leistung
- sensor.solarnet_relativer_eigenverbrauch
- sensor.solarnet_ladeleistung
- sensor.solarnet_entladeleistung
tags:
instance: prod
source: hass
tags_attributes:
- friendly_name Danach lassen sich in Grafana z. B. tägliche Eigenverbrauchsquoten als Histogramm oder PV-Leistung vs. Verbrauch übereinanderlegen.
Klimaanlage bei PV-Überschuss
Das Killer-Feature: Wenn die Sonne mehr produziert als verbraucht wird (Netzeinspeisung > 0), läuft die Klimaanlage auf PV-Strom statt auf teurem Netzbezug.
Hilfsobjekte anlegen
input_number:
schwelle_einspeisung:
name: "AC: Einspeisung-Schwelle"
min: 0
max: 5000
step: 100
unit_of_measurement: W
initial: 1500 # AC geht erst ab 1,5 kW Überschuss ein
temperatur_ein:
name: "AC: Temperatur EIN"
min: 15
max: 40
step: 1
unit_of_measurement: "°C"
initial: 26
temperatur_aus:
name: "AC: Temperatur AUS"
min: 15
max: 40
step: 1
unit_of_measurement: "°C"
initial: 22
input_boolean:
ac_automatik_aktiv:
name: "AC Automatik aktiv"
icon: mdi:robot Automation: AC EIN / AUS
# AC EIN bei PV-Überschuss + Hitze
- alias: AC EIN bei PV-Überschuss und Hitze
trigger:
- platform: numeric_state
entity_id: sensor.solarnet_leistung_netzeinspeisung
above: input_number.schwelle_einspeisung
for:
minutes: 5 # Kein Schalten bei kurzen Wolken
condition:
- condition: time
after: "10:00:00"
before: "18:00:00"
- condition: state
entity_id: input_boolean.ac_automatik_aktiv
state: "on"
- condition: numeric_state
entity_id: sensor.aussentemperatur
above: input_number.temperatur_ein
- condition: state
entity_id: climate.eure_klimaanlage
state: 'off'
action:
- service: climate.set_hvac_mode
data:
entity_id: climate.eure_klimaanlage
hvac_mode: cool
mode: single
# AC AUS bei zu wenig PV oder zu kühler Temperatur
- alias: AC AUS bei PV-Mangel oder Abkühlung
trigger:
- platform: numeric_state
entity_id: sensor.solarnet_leistung_netzeinspeisung
below: input_number.schwelle_einspeisung
for:
minutes: 5
- platform: numeric_state
entity_id: sensor.aussentemperatur
below: input_number.temperatur_aus
for:
minutes: 5
condition:
- condition: state
entity_id: input_boolean.ac_automatik_aktiv
state: "on"
action:
- service: climate.set_hvac_mode
data:
entity_id: climate.eure_klimaanlage
hvac_mode: 'off'
mode: single Warum 5 Minuten Verzögerung?
Ohne for: minutes: 5 würde die AC bei jeder vorbeiziehenden Wolke ein- und ausschalten. Das schont den Kompressor und verhindert nervöses Schalten. Die 5-Minuten-Bedingung gilt symmetrisch für beide Trigger.
Status-Template für das Dashboard
Dieser Binary Sensor zeigt an, ob alle Bedingungen erfüllt sind und die AC als nächstes einschalten würde – perfekt als Statusanzeige im Dashboard.
template:
- binary_sensor:
- name: "AC Automatik bereit"
unique_id: ac_automatik_ready
device_class: connectivity
state: >
{{
is_state('input_boolean.ac_automatik_aktiv', 'on') and
(states('sensor.solarnet_leistung_netzeinspeisung') | float(0) >
states('input_number.schwelle_einspeisung') | float(0)) and
(states('sensor.aussentemperatur') | float(0) >
states('input_number.temperatur_ein') | float(0)) and
now().hour >= 10 and now().hour < 18 and
is_state('climate.eure_klimaanlage', 'off')
}} Dashboard & Energie-Dashboard
apexcharts-card HACS Leistungsgraphen mit Farbflächen – PV, Verbrauch und Einspeisung übereinander
mushroom HACS Kompakte Statuskacheln für Übersicht und Schnellzugriff
ApexCharts-Card: PV-Leistungsgraph
type: custom:apexcharts-card
graph_span: 24h
header:
show: true
title: PV heute
series:
- entity: sensor.solarnet_pv_leistung
name: Erzeugung
color: "#f59e0b"
type: area
opacity: 0.3
- entity: sensor.solarnet_leistung_verbrauch
name: Verbrauch
color: "#3b82f6"
type: line
- entity: sensor.solarnet_leistung_netzeinspeisung
name: Einspeisung
color: "#10b981"
type: line HA Energie-Dashboard einrichten
HA berechnet automatisch Eigenverbrauchsquote, Autarkie und tägliche kWh-Bilanzen – ohne InfluxDB oder Grafana.
Einstellungen → Energie → Konfigurieren
- Solar-Produktion:
sensor.solarnet_pv_leistung - Netz-Rückgabe:
sensor.solarnet_leistung_netzeinspeisung (positive Werte) - Batterie laden:
sensor.batterie_energie_geladen - Batterie entladen:
sensor.batterie_energie_entladen
Fazit
Mit diesem Setup läuft die Klimaanlage im Sommer quasi kostenlos –
der PV-Überschuss der sonst ins Netz gehen würde, kühlt stattdessen das Haus.
Die input_number-Helfer für Schwellwerte erlauben es,
das Verhalten komfortabel über das Dashboard anzupassen, ohne an den Automationen herumzuschrauben.
Der gesamte Code läuft auf einem produktiven System: