# 🎛️ Das offizielle Smart-Home-Handbuch: Proxmox, HAOS, MQTT, EcoTracker & Noah 2000
## 🚀 TEIL 1: Proxmox VE & Home Assistant OS (HAOS) installieren
### 1. Vorbereitung & Proxmox-Installation
1. Lade das **Proxmox VE ISO-Image** herunter und flashe es mit **BalenaEtcher** oder **Rufus** auf einen USB-Stick (mindestens 8 G

.
2. Schließe deinen Server per **LAN-Kabel** an den Router an. Boote vom USB-Stick (über
F11/
F12).
3. Wähle **"Install Proxmox VE (Graphical)"** und folge dem Setup:
* **Target Harddisk:** Deine primäre Festplatte (SSD/NVMe).
* **Management Network:** Vergib eine **feste IP-Adresse** (z. B.
192.168.178.100).
4. Nach Abschluss startet der Server neu. Ziehe den USB-Stick ab.
### 2. HAOS via automatischer VM einrichten
1. Rufe die Proxmox-Weboberfläche an einem PC im selben Netzwerk auf:
https://DEINE-SERVER-IP:8006 (Ignoriere die SSL-Warnung).
2. Melde dich mit dem Benutzernamen
root und deinem Installationspasswort an.
3. Klicke links ganz oben auf den **Namen deines Servers** und öffne im mittleren Menü die **"Shell"**.
4. Kopiere diesen Befehl, füge ihn ein und drücke **Enter**:
bash
bash -c "$(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/vm/haos-vm.sh)"
5. Bestätige alle Abfragen mit **Ja / Enter** (Standardeinstellungen). Das Skript erstellt die VM vollautomatisch.
6. Klicke links auf die neu erstellte VM (z. B.
100 (haos...)) und wähle oben **"Start"**.
7. Öffne nach wenigen Minuten einen neuen Tab:
http://homeassistant.local:8123 – folge dem Einrichtungsassistenten.
---
## 📡 TEIL 2: Lokalen Mosquitto MQTT Broker einrichten
Der MQTT Broker verarbeitet die lokalen Daten deiner smarten Geräte ohne Umwege.
1. Gehe in Home Assistant auf **Einstellungen** ➔ **Add-ons** ➔ **Add-on Store** (unten rechts).
2. Suche nach **"Mosquitto Broker"**, klicke darauf und wähle **Installieren**.
3. Aktiviere vor dem Start die Optionen **Watchdog** und **Automatisches Update**.
4. Klicke auf **Starten**.
5. Navigiere zu **Einstellungen** ➔ **Geräte & Dienste**. Die **MQTT** Integration wird als neue Kachel entdeckt. Klicke dort auf **Konfigurieren** und bestätige das Fenster.
---
## 🔋 TEIL 3: Growatt Noah 2000 über noah-mqtt einbinden
Dieses Tool holt die Daten deines Akkuspeichers über die Programmschnittstelle ab und übergibt sie an MQTT.
1. Gehe zu **Einstellungen** ➔ **Add-ons** ➔ **Add-on Store**.
2. Klicke oben rechts auf die **drei Punkte** ➔ **Repositorys**.
3. Füge folgende URL hinzu und klicke auf Hinzufügen:
https://github.com/firstusing/hassio-addons
4. Suche im Store nach **"noah-mqtt"** und klicke auf **Installieren**.
5. Aktiviere **Watchdog** und **Automatisches Update**.
6. Wechsle oben auf den Reiter **Konfiguration** und fülle die Felder aus:
* **growatt_username / growatt_password:** Deine Anmeldedaten der ShinePhone-App.
* **mqtt_host:**
localhost (bzw. die IP deines HA-Servers, falls extern).
* **mqtt_port:**
1883
7. Klicke auf **Speichern**, wechsle zurück zu *Informationen* und klicke auf **Starten**.
8. **Ergebnis:** Unter **Einstellungen** ➔ **Geräte & Dienste** ➔ **MQTT** taucht dein **Noah 2000** mit allen Live-Sensoren auf.
---
## 📋 TEIL 4: Profi-YAML-Konfiguration (
configuration.yaml)
Dieses mathematische Filter-Setup fragt den **EcoTracker** lokal über REST-API (alle 5 Sek.) ab und wandelt per Trigger-Template unzuverlässige Watt-Leistungen (
W) fehlerfrei in präzise Energie-Arbeit (
kWh) um. Zudem werden Ausreißer-Schutzfilter für den Wechselrichter (Fritz!Dose) und automatische Euro-Ersparnis-Zähler integriert.
Passe bei Bedarf die IP deines EcoTrackers (
resource:) an!
yaml
# Loads default set of integrations. Do not remove.
default_config:
# Load frontend themes from the themes folder
frontend:
themes: !include_dir_merge_named themes
automation: !include automations.yaml
script: !include scripts.yaml
scene: !include scenes.yaml
# ==========================================
# 📊 UTILITY METER (Langzeit-Statistiken)
# ==========================================
utility_meter:
fritzdose_energie_heute:
source: sensor.solarproduktion_sicher
name: "Fritzdose Energie Heute"
cycle: daily
solar_ersparnis_monat:
source: sensor.solar_ersparnis_heute
name: "Solar Ersparnis Monat"
cycle: monthly
solar_ersparnis_jahr:
source: sensor.solar_ersparnis_heute
name: "Solar Ersparnis Jahr"
cycle: yearly
solar_ersparnis_gesamt:
source: sensor.solar_ersparnis_heute
name: "Solar Ersparnis Gesamt"
solar_produktion_heute:
unique_id: solar_produktion_heute_utility_001
source: sensor.solarproduktion_sicher
name: "Solar Produktion Heute"
cycle: daily
solar_produktion_monat:
unique_id: solar_produktion_monat_utility_001
source: sensor.solarproduktion_sicher
name: "Solar Produktion Monat"
cycle: monthly
solar_produktion_jahr:
unique_id: solar_produktion_jahr_utility_001
source: sensor.solarproduktion_sicher
name: "Solar Produktion Jahr"
cycle: yearly
# ==========================================
# 🌐 REST API INTEGRATION (EcoTracker)
# ==========================================
sensor:
- platform: rest
name: ecotracker
unique_id: ecotracker_rest_base_001
resource: http://deine ecotracker ip/v1/json
scan_interval: 5
value_template: "{{ value_json.power }}"
json_attributes:
- power
- energyCounterIn
- energyCounterOut
# ==========================================
# 🤖 TEMPLATE ENTITIES (Mathematische Filter)
# ==========================================
template:
# Mathematische Integration: Leistung (W) -> Arbeit (kWh) via 1-Minuten-Trigger
- trigger:
- platform: time_pattern
minutes: "/1"
- platform: homeassistant
event: start
sensor:
# Berechnung des Akku-Ladungsvolumens
- name: "Noah Geladen Kwh Helfer 001"
unique_id: noah_geladen_kwh_helfer_001
device_class: energy
state_class: total_increasing
unit_of_measurement: "kWh"
state: >
{% set entity = 'sensor.0pvpqaed268t0002_charging_power' %}
{% set watt = states(entity) | float(0) %}
{% set prev = this.state | float(0) %}
{% if watt > 0 %}
{{ (prev + (watt / 60000.0)) | round(5) }}
{% else %}
{{ prev }}
{% endif %}
# Berechnung des Akku-Entladungsvolumens
- name: "Noah Entladen Kwh Helfer 001"
unique_id: noah_entladen_kwh_helfer_001
device_class: energy
state_class: total_increasing
unit_of_measurement: "kWh"
state: >
{% set entity = 'sensor.0pvpqaed268t0002_discharge_power' %}
{% set watt = states(entity) | float(0) %}
{% set prev = this.state | float(0) %}
{% if watt > 0 %}
{{ (prev + (watt / 60000.0)) | round(5) }}
{% else %}
{{ prev }}
{% endif %}
# Validierte akkumulierte Solarproduktion
- name: "Solarproduktion Sicher"
unique_id: growatt_solar_kwh_sicher_final
device_class: energy
state_class: total_increasing
unit_of_measurement: "kWh"
state: >
{% set entity = 'sensor.solarleistung_aktuell_sicher' %}
{% set watt = states(entity) | float(0) %}
{% set prev = this.state | float(0) %}
{% if watt > 0 %}
{{ (prev + (watt / 60000.0)) | round(5) }}
{% else %}
{{ prev }}
{% endif %}
# State-Transformationen & Mathematische Filter (Echtzeit-Auswertung)
- sensor:
- name: "Noah Batterie Entladen Live Sicher"
unique_id: noah_batterie_entladen_live_sicher
device_class: power
state_class: measurement
unit_of_measurement: "W"
state: >
{% set entity = 'sensor.0pvpqaed268t0002_discharge_power' %}
{% set akku_state = states(entity) %}
{% if akku_state in ['unavailable', 'unknown', 'none'] or akku_state is none %}
0
{% else %}
{% set akku_watt = akku_state | float(-1) %}
{{ akku_watt | round(1) if akku_watt >= 0 else 0 }}
{% endif %}
- name: "Ecotracker Aktueller Verbrauch"
unique_id: ecotracker_power_live_001
device_class: power
state_class: measurement
unit_of_measurement: "W"
state: >
{% set val = state_attr('sensor.ecotracker', 'power'
%}
{{ val if val is not none else this.state }}
# Wh -> kWh Konvertierung für Netzbezug
- name: "Ecotracker Bezug"
unique_id: ecotracker_com_import_001
device_class: energy
state_class: total_increasing
unit_of_measurement: "kWh"
state: >
{% set val = state_attr('sensor.ecotracker', 'energyCounterIn'
%}
{% if val is not none and val | float(0) > 0 %}
{{ (val | float / 1000) | round(3) }}
{% else %}
{{ this.state }}
{% endif %}
# Wh -> kWh Konvertierung für Netzeinspeisung
- name: "Ecotracker Einspeisung"
unique_id: ecotracker_com_export_001
device_class: energy
state_class: total_increasing
unit_of_measurement: "kWh"
state: >
{% set val = state_attr('sensor.ecotracker', 'energyCounterOut'
%}
{% if val is not none and val | float(0) > 0 %}
{{ (val | float / 1000) | round(3) }}
{% else %}
{{ this.state }}
{% endif %}
# Mathematische Isolierung der reinen Einspeiseleistung (Invertierung von Negativwerten)
- name: "Ecotracker Aktuelle Einspeisung"
unique_id: ecotracker_current_export_001
device_class: power
state_class: measurement
unit_of_measurement: "W"
state: >
{% set power = state_attr('sensor.ecotracker', 'power'
%}
{% if power is not none %}
{% set p_float = power | float(0) %}
{{ p_float | abs if p_float < 0 else 0 }}
{% else %}
{{ this.state }}
{% endif %}
# Validierungs-Filter für FRITZ!DECT Leistungsmessung (Ausreißer-Schutz)
- name: "Solarleistung Aktuell Sicher"
unique_id: growatt_solar_watt_sicher_final
device_class: power
state_class: measurement
unit_of_measurement: "W"
availability: >
{{ has_value('sensor.fritz_smart_energy_200_1_leistung'
and states('sensor.fritz_smart_energy_200_1_leistung'
not in ['unknown', 'unavailable'] }}
state: >
{% set val = states('sensor.fritz_smart_energy_200_1_leistung'
%}
{% if val is not none and val | float(-1) >= 0 %}
{{ val | float | round(1) }}
{% else %}
{{ this.state }}
{% endif %}
# Monetäre Echtzeit-Ersparnis (Berechnungsfaktor: 0.2655 €/kWh)
- name: "Solar Ersparnis Heute"
unique_id: solar_ersparnis_heute_euro
unit_of_measurement: "€"
state: >
{% set kwh = states('sensor.fritzdose_energie_heute'
| float(0) %}
{% set preis = 0.2655 %}
{{ (kwh * preis) | round(2) }}
**Aktivierung:** Unter **Entwicklerwerkzeuge** ➔ **YAML** die Konfiguration prüfen und anschließend auf **Template-Entitäten neu laden** sowie **REST-Objekte neu laden** klicken.
---
## 📊 TEIL 5: Das Energie-Dashboard konfigurieren
Binde die erstellten Langzeit-Entitäten im nativen Energie-Dashboard ein, um die vollständige Fluss-Analyse freizuschalten.
1. Navigiere zu **Einstellungen** ➔ **Dashboards** ➔ **Energie**.
2. **Netzverbrauch (Grid Consumption) hinzufügen:**
* Klicke bei Netzverbrauch auf **"Vom Netz hinzugefügt"**.
* Wähle die Entität: sensor.ecotracker_bezug
3. **Zurückgegebenes Netz (Return to Grid) hinzufügen:**
* Klicke auf **"Zum Netz zurückgegeben"**.
* Wähle die Entität: sensor.ecotracker_einspeisung
4. **Solarproduktion (Solar Production) hinzufügen:**
* Klicke unter "Solaranlagen" auf **"Solarproduktion hinzufügen"**.
* Wähle die Entität: sensor.solar_produktion_heute`
⚠️ **Wichtiger System-Hinweis:** Das Energie-Dashboard aktualisiert sich im Hintergrund zyklisch **immer zur vollen Stunde**. Nach dem Speichern bleibt das Diagramm zunächst leer – es dauert **bis zu zwei Stunden**, bis die ersten Balken generiert werden!