Prepare Home Assistant weather export to InfluxDB

Prepare Home Assistant weather export to InfluxDB
This commit is contained in:
2026-05-04 13:29:06 +02:00
parent 4e1d608949
commit 2f7b1a0aa2
7 changed files with 129 additions and 13 deletions
+4 -4
View File
@@ -290,8 +290,8 @@ Legende Status:
| `glances` | ✅ | `frontend_net` | Traefik + Middleware | aktiv via `glances.kaleschke.info` | — |
| `scrutiny` | ✅ | `frontend_net` | Traefik + Middleware | aktiv via `scrutiny.kaleschke.info`, Git-Stack | `privileged` später prüfen |
| `speedtest-tracker` | ✅ | `frontend_net` | Traefik + Middleware | aktiv via `speedtest.kaleschke.info` | — |
| `grafana` | ✅ vorbereitet | `frontend_net`, `grafana_influx_internal` | Traefik + Middleware | vorbereitet via `grafana.kaleschke.info`, InfluxDB-Datenquelle provisioniert | Secrets anlegen, Deploy offen |
| `influxdb3-core` | ✅ vorbereitet | `grafana_influx_internal` | intern | InfluxDB 3 Core fuer Metriken; keine direkte Host-/Traefik-Freigabe | Token und Datenbank `homelab` anlegen, Deploy offen |
| `grafana` | ✅ | `frontend_net`, `grafana_influx_internal` | Traefik + Middleware | aktiv via `grafana.kaleschke.info`, InfluxDB-Datenquelle provisioniert | Wetter-/HA-Dashboard aufbauen |
| `influxdb3-core` | ✅ | `grafana_influx_internal` + optional LAN-Bind | LAN-Port nur fuer interne Writer | InfluxDB 3 Core fuer Metriken; keine Traefik-/Public-Freigabe | HA-Write-Token und Sensor-Export finalisieren |
### 7.7 Noch offene Sonderfälle
@@ -528,8 +528,8 @@ Mutable Tags wie `latest`, `stable`, `release` oder reine Major-Tags wurden auf
### BentoPDF und Grafana/InfluxDB vorbereitet (2026-04-30)
- `bentopdf` ersetzt repo-seitig `stirling-pdf` auf der bestehenden Domain `pdf.kaleschke.info`, bleibt aber bis zum bewussten Komodo-Deploy nur vorbereitet.
- BentoPDF benoetigt fuer Office-Konvertierung die Cross-Origin-Isolation-Header `Cross-Origin-Opener-Policy: same-origin` und `Cross-Origin-Embedder-Policy: require-corp`; diese werden per Traefik-Docker-Middleware gesetzt.
- `grafana` wird als geschuetztes Monitoring-UI unter `grafana.kaleschke.info` vorbereitet.
- `influxdb3-core` bleibt als interne Datenbank ohne direkten Host-Port im Compose-internen Netz `grafana_influx_internal`.
- `grafana` wird als geschuetztes Monitoring-UI unter `grafana.kaleschke.info` betrieben.
- `influxdb3-core` bleibt ohne Traefik-/Public-Route; fuer interne Writer wie Home Assistant kann Port `8181` per `INFLUXDB_BIND_IP` auf eine LAN-Adresse gebunden werden.
- InfluxDB 3 Core nutzt einen festen Versionstag statt `latest`, weil der InfluxDB-`latest`-Tag versionsstrategisch im Umbruch ist.
### ddns-updater — Netz-Ausnahme
+1 -1
View File
@@ -64,4 +64,4 @@ Bei Restore-, Host-Ausfall- oder Wiederanlauf-Fragen zusaetzlich:
- Mutable Image-Tags sind auf die aktuell laufenden Digests eingefroren; echte Versions-Upgrades erfolgen bewusst separat.
- Disaster-Recovery und dienstspezifische Restore-Quellen sind in `docs/DISASTER_RECOVERY.md` und `docs/RESTORE_MATRIX.md` beschrieben.
- Der verbindliche Detailablauf steht in `docs/WORKFLOW.md`.
- `nextcloud`, `bentopdf` und `grafana-influxdb` sind repo-seitig vorbereitet und folgen dem dokumentierten Netz-/Secret-/Traefik-Modell.
- `nextcloud`, `bentopdf` und `grafana-influxdb` folgen dem dokumentierten Netz-/Secret-/Traefik-Modell; Grafana/InfluxDB ist fuer Home-Assistant-Wetterdaten vorbereitet.
+112
View File
@@ -0,0 +1,112 @@
# Home Assistant -> InfluxDB 3 -> Grafana
Ziel: Home Assistant schreibt ausgewaehlte Ecowitt- und Energiesensoren nach InfluxDB 3 Core. Grafana bleibt das Langzeit-Dashboard, Home Assistant bleibt die Automationszentrale.
## 1. InfluxDB fuer Home Assistant erreichbar machen
Der Stack haelt InfluxDB bewusst ohne Traefik-Route. Fuer Home Assistant wird nur der HTTP-Port `8181` auf einer internen LAN-Adresse veroeffentlicht.
In Komodo/Stack-Environment fuer `ops/grafana-influxdb` setzen:
```env
INFLUXDB_BIND_IP=192.168.178.X
```
`192.168.178.X` ist die LAN-IP des Docker-Hosts, auf dem `influxdb3-core` laeuft. Nicht `0.0.0.0` verwenden, wenn es nicht notwendig ist.
Danach den Stack neu deployen und von Home Assistant aus pruefen:
```bash
curl -I http://192.168.178.X:8181/health
```
## 2. Token fuer Home Assistant
Am besten einen eigenen Write-Token fuer Home Assistant verwenden. Fuer den ersten Test kann der bestehende Admin-Token funktionieren; langfristig sollte der HA-Token nur in die Datenbank `homelab` schreiben duerfen.
Den Token in Home Assistant eintragen:
```yaml
# /homeassistant/secrets.yaml
influxdb3_homeassistant_token: "apiv3_REPLACE_WITH_WRITE_TOKEN"
```
## 3. Home Assistant konfigurieren
Minimaler Startblock fuer `/homeassistant/configuration.yaml`:
```yaml
influxdb:
api_version: 2
ssl: false
host: 192.168.178.X
port: 8181
token: !secret influxdb3_homeassistant_token
organization: homelab
bucket: homelab
max_retries: 3
default_measurement: state
include:
entity_globs:
- sensor.*ecowitt*
- sensor.*gw*
- sensor.netzbezug_live
- sensor.ins_netz_live
- sensor.ins_haus_live
- sensor.pv_ueberschuss_live
- sensor.batterie_soc_live
- sensor.wallbox_leistung_live
- sensor.pv_produktion_heute
- sensor.wallbox_energie_heute
```
Die `sensor.*gw*`-Regel ist nur ein Startpunkt, weil Ecowitt-Gateways haeufig `gw...` im Entity-Namen haben. Nach dem ersten Export in Grafana pruefen und die Liste enger machen.
Nach dem Edit:
```bash
ha core check
ha core restart
```
## 4. Grafana Smoke-Test
In Grafana mit der bestehenden Datenquelle `InfluxDB 3 Core` eine SQL-Abfrage testen:
```sql
SHOW TABLES
```
Danach eine konkrete Tabelle pruefen. Home Assistant schreibt Measurements je nach Konfiguration und Entity-Typ; typische Tabellen sind `state`, `degC`, `%`, `W`, `kWh` oder aehnliche Measurement-Namen.
Beispiel fuer die ersten Werte:
```sql
SELECT *
FROM state
ORDER BY time DESC
LIMIT 20
```
## 5. Dashboard-Kandidaten
Sinnvolle Panels fuer das erste Wetter-Dashboard:
- Aussentemperatur und Luftfeuchte
- Luftdruck
- Windgeschwindigkeit und Boeen
- Regenrate und Regen heute
- UV und Solarstrahlung
- Batterielevel der Ecowitt-Sensoren
- PV-Ueberschuss vs. Wetter
- Wallbox-Leistung vs. PV-Ueberschuss
## 6. Erste Automationen
Home Assistant bleibt fuer Reaktionen zustaendig:
- Regen startet -> Dachfenster/Fenster pruefen
- Windboee ueber Grenzwert -> Markise/Rolllaeden schuetzen
- Frostwarnung -> Garten/Wasser/Auto-Hinweis
- Genug Regen heute -> Bewaesserung ueberspringen
- Ecowitt-Batterie niedrig -> ntfy/HA-Benachrichtigung
+4 -4
View File
@@ -71,10 +71,10 @@ Dieses Dokument ist nur noch ein historischer Verlauf. Der aktuelle operative Ab
- `stirling-pdf` repo-seitig durch `bentopdf` ersetzt; Domain `pdf.kaleschke.info` bleibt erhalten.
- BentoPDF laeuft als geschuetztes browserseitiges PDF-Tool hinter `authelia@file,secure-headers@file` und setzt zusaetzlich COOP/COEP-Header fuer SharedArrayBuffer-basierte Office-Konvertierung.
- `ops/grafana-influxdb` als neuer Monitoring-Stack vorbereitet, aber noch nicht deployed.
- Grafana wird hinter Traefik + Authelia unter `grafana.kaleschke.info` geplant.
- InfluxDB 3 Core bleibt intern im Compose-Netz und wird ueber eine provisionierte Grafana-Datenquelle angebunden.
- Secrets fuer Grafana-Admin-Passwort, InfluxDB-Admin-Token und Grafana-Datasource-Token sind als Host-Dateien unter `/mnt/user/appdata/secrets/` dokumentiert und muessen vor dem ersten Deploy angelegt werden.
- `ops/grafana-influxdb` als neuer Monitoring-Stack vorbereitet und spaeter in Betrieb genommen.
- Grafana laeuft hinter Traefik + Authelia unter `grafana.kaleschke.info`.
- InfluxDB 3 Core bleibt ohne Public Route und wird ueber eine provisionierte Grafana-Datenquelle angebunden.
- Secrets fuer Grafana-Admin-Passwort, InfluxDB-Admin-Token und Grafana-Datasource-Token sind als Host-Dateien unter `/mnt/user/appdata/secrets/` dokumentiert.
---
+5 -4
View File
@@ -1,17 +1,18 @@
# Grafana + InfluxDB 3 Core
Vorbereiteter Monitoring-Stack. Noch nicht deployen, bis die Secrets und der erste InfluxDB-Token sauber angelegt sind.
Monitoring-Stack fuer Grafana + InfluxDB 3 Core. InfluxDB bleibt ohne Public Route; interne Writer wie Home Assistant koennen ueber einen gezielt gebundenen LAN-Port schreiben.
## Quellen / Entscheidungen
- Grafana nutzt das offizielle OSS-Image `grafana/grafana:12.4.3`.
- InfluxDB nutzt `influxdb:3.9.1-core`, nicht `latest`, weil `latest` bei InfluxDB aktiv in Richtung InfluxDB 3 umgestellt wird.
- Grafana wird ueber Traefik + `authelia@file,secure-headers@file` unter `grafana.kaleschke.info` veroeffentlicht.
- InfluxDB bleibt ohne direkten Host-Port und ohne Traefik-Route im internen Compose-Netz `grafana_influx_internal`.
- InfluxDB bleibt ohne Traefik-Route. Der HTTP-Port `8181` kann fuer interne Writer wie Home Assistant ueber `INFLUXDB_BIND_IP` auf eine LAN-Adresse gebunden werden; Default ist `127.0.0.1`.
- Grafana provisioning legt eine SQL-Datenquelle fuer InfluxDB 3 Core mit der Datenbank `homelab` an.
- Der Grafana-Datasource-Token liegt als Secret-Datei auf dem Host und wird beim Containerstart nur containerintern in die fuer Grafana-Provisioning noetige Environment-Variable geladen.
- Home Assistant schreibt mit der InfluxDB-v2-API-Kompatibilitaet nach InfluxDB 3; Details: `docs/HOME_ASSISTANT_INFLUXDB_ECOWITT.md`.
## Vor dem ersten Deploy
## Initiale Einrichtung
1. Secret fuer Grafana anlegen:
@@ -55,7 +56,7 @@ Vorbereiteter Monitoring-Stack. Noch nicht deployen, bis die Secrets und der ers
- `https://grafana.kaleschke.info` oeffnet nach Authelia die Grafana-Loginseite.
- Grafana `Connections -> Data sources -> InfluxDB 3 Core -> Save & test` ist erfolgreich.
- InfluxDB bleibt von aussen nicht direkt erreichbar.
- InfluxDB bleibt ohne Public Route. Falls `INFLUXDB_BIND_IP` auf die LAN-IP gesetzt ist, ist Port `8181` nur im internen Netz fuer Writer wie Home Assistant erreichbar.
## Rollback
+2
View File
@@ -47,6 +47,8 @@ services:
container_name: influxdb3-core
restart: unless-stopped
user: "0"
ports:
- "${INFLUXDB_BIND_IP:-127.0.0.1}:8181:8181"
command:
- influxdb3
- serve
+1
View File
@@ -0,0 +1 @@
INFLUXDB_BIND_IP=127.0.0.1