Das Konzept: "Private Digital Twin"
Mein Smart Home basiert auf Home Assistant. Der Fokus liegt nicht auf "Spielereien", sondern auf messbarer Energieoptimierung, komplexen Automatisierungslogiken und einer performanten Visualisierung. Es dient mir als Sandbox, um theoretische Konzepte der Gebäudeautomation praktisch umzusetzen und die Möglichkeiten moderner IoT-Vernetzung auszuloten.
Energiemanagement & Sektorenkopplung
Intelligente Verknüpfung von PV-Anlage, Batteriespeicher und Verbrauchern.
- Autarkie-Maximierung: Prognosebasierte Steuerung des Heimspeichers (Solcast API) zur Minimierung des Netzbezugs und effizienten Nutzung des PV-Überschusses.
- EV-Lademanagement: Prioritäre Ladung bei PV-Überschuss. Bei schlechter Ertragsprognose erfolgt eine bedarfsgesteuerte Ladung, um Mobilität sicherzustellen.
Adaptive Gebäudehülle & Visualisierung
Automatisierung für Komfort und Energieeffizienz.
- Kühllast-Reduktion: Verschattungsautomatik basierend auf Sonnenstand und Raumtemperatur. Reduziert aktiv den Wärmeeintrag im Sommer.
- 3D-Visualisierung: Interaktiver "Digitaler Zwilling" des Hauses zur intuitiven Steuerung und Statusüberwachung der Wohnräume.
Der Tech-Stack
| Ebene |
Komponenten & Technologien |
| Core & OS |
Home Assistant OS (Virtualisiert in Serverumgebung), MQTT Broker, ZHA |
| Feldgeräte (IoT) |
Shelly, Philips Hue, Tado, Sonos, uvm. |
| Energie |
Batteriespeicher-Management, Wallbox-Steuerung (OCPP) |
| Logik |
Komplexe YAML-Automationen (>4000 Zeilen Code) |
Einblick in die Logik (YAML)
Beispiel für eine komplexe Automatisierung: Dynamisches EV-Laden mit Priorisierung.
Der Algorithmus prüft PV-Überschuss, Hausbatterie-Ladestand und Solcast-Prognose, um den optimalen Ladestrom (6A - 16A) zu setzen.
alias: Smartes PV-Laden (V2.0)
description: Optimierter Ladevorgang mit PV-Logik, Fahrzeugerkennung und Prognose.
trigger:
- platform: numeric_state
entity_id: sensor.solar_input_power
above: 700
for: "00:03:00"
- platform: state
entity_id:
- binary_sensor.auto1_ladeklappe_zustand
- sensor.auto2_steckerzustand
- input_boolean.ladevorgang_erzwingen
action:
- choose:
# --- SZENARIO 1: ZWANGSLADUNG ---
- alias: Zwangsladung (Manuell oder Batterie kritisch)
conditions:
- condition: or
conditions:
- condition: state
entity_id: input_boolean.ladevorgang_erzwingen
state: "on"
- condition: numeric_state
entity_id: sensor.auto1_batteriestand
below: input_number.mindestladung_auto1
sequence:
- service: number.set_value
target:
entity_id: number.wallbox_maximum_current
data:
value: 16
- service: notify.mobile_app_admin
data:
message: "Zwangsladung gestartet (16A)."
# --- SZENARIO 2: SMARTES PV-LADEN ---
- alias: Smartes PV-Laden
conditions:
- condition: or
conditions:
- condition: numeric_state
entity_id: sensor.solar_input_power
above: 700
- condition: and
conditions:
- condition: numeric_state
entity_id: sensor.solcast_forecast_today
above: 15 # Genug Sonne erwartet?
- condition: numeric_state
entity_id: sensor.home_battery_level
above: 90 # Hausbatterie voll?
sequence:
- variables:
auto_name: Unbekannt
- choose:
# Logik für Auto 1
- alias: Auto 1 erkannt
conditions:
- condition: state
entity_id: binary_sensor.auto1_ladeklappe_zustand
state: "on"
- condition: zone
entity_id: device_tracker.auto1_standort
zone: zone.home
sequence:
- service: number.set_value
target:
entity_id: number.wallbox_maximum_current
data:
value: 6 # Start mit Mindeststrom
- variables:
auto_name: Auto 1
# Logik für Auto 2
- alias: Auto 2 erkannt
conditions:
- condition: state
entity_id: binary_sensor.auto2_stecker
state: "on"
sequence:
- service: number.set_value
target:
entity_id: number.wallbox_maximum_current
data:
value: 10 # Auto 2 benötigt höheren Anlaufstrom
- variables:
auto_name: Auto 2
# Ladung freigeben
- service: switch.turn_on
target:
entity_id: switch.wallbox_charge_control
- service: notify.mobile_app_admin
data:
message: "{{ auto_name }} – Smartes Laden gestartet"
# Standard: Laden stoppen wenn keine Bedingung erfüllt
default:
- service: switch.turn_off
target:
entity_id: switch.wallbox_charge_control
mode: restart