Prepare Home Assistant weather export to InfluxDB
Prepare Home Assistant weather export to InfluxDB
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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.
|
||||
|
||||
@@ -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
|
||||
@@ -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.
|
||||
|
||||
---
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -0,0 +1 @@
|
||||
INFLUXDB_BIND_IP=127.0.0.1
|
||||
Reference in New Issue
Block a user