ha-smoke-detection-notify/README.md

216 lines
7.0 KiB
Markdown

# Rauchmelder-Benachrichtigungen für Home Assistant
**Node-RED Lösung mit Multi-Gruppen-Support**
## Features
- **Gruppen-System** - Mehrere Häuser/Bereiche komplett isoliert (z.B. Haus 1, Haus 2)
- **Alarm nur für betroffene Gruppe** - Rauchmelder in Gruppe A benachrichtigt nur Geräte in Gruppe A
- **STOPP pro Gruppe** - Benachrichtigungen und Sirenen separat pro Gruppe stoppen
- **Settings-Seite** - Alles zentral konfigurieren (auch als Dashboard-Karte)
- **KEIN Helper nötig** - Kein YAML editieren, keine Entities erstellen
- **Sirene pro Rauchmelder** - Jeder Rauchmelder kann seine eigene Sirene haben
- **Dropdown-Auswahl** - Entities werden automatisch aus Home Assistant geladen
- **iOS Critical Alerts** - Laute Benachrichtigungen auch bei Stumm-Modus
- **Android TTS** - Sprachausgabe über Alarm-Stream
- **Visuelles Debugging** - Node-RED Debug-Panel
---
## Voraussetzungen
- Home Assistant
- Node-RED Add-on
- Mobile App auf allen Geräten (iOS & Android)
---
## Installation
### 1. Settings-Seite in Home Assistant ablegen
Kopiere `node-red/settings.html` nach `/config/www/settings.html`
Die Datei ist dann erreichbar unter:
```
http://homeassistant.local:8123/local/settings.html
```
### 2. Node-RED Flow importieren
1. Öffne **Node-RED**
2. **Menü** (☰) → **Import**
3. Kopiere Inhalt von `node-red/flows/smoke_detector.json`
4. **Importieren****Deploy**
### 3. Long-Lived Token erstellen
1. Home Assistant → **Profil** (unten links) → **Sicherheit**
2. Runterscrollen zu **"Langlebige Zugriffstokens"**
3. **Token erstellen** → Name: `Rauchmelder Settings`
4. Token kopieren (sieht so aus: `eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3Mi...`)
### 4. Home Assistant Server verbinden
**Einmalig Token einrichten:**
1. Doppelklick auf **einen** blauen Node
2. **Stift-Symbol** neben Server
3. **Base URL:** `http://homeassistant.local:8123`
4. **Access Token:** Den eben erstellten Token einfügen
5. **Update****Done**
**Alle blauen Nodes konfigurieren:**
Danach musst du **jeden blauen Node** einzeln durchgehen und den Server auswählen:
1. Doppelklick auf den blauen Node
2. Bei **Server**: Wähle den **zweiten Eintrag** in der Liste (der mit deiner URL)
3. **Done**
4. Wiederhole für alle blauen Nodes
> **Hinweis:** Den Token musst du nur einmal eingeben. Aber jeder blaue Node muss manuell auf den Server verweisen.
Wenn alle Nodes konfiguriert sind: **Deploy**
### 5. Settings-Seite öffnen
**Option A: Direkt im Browser**
```
http://homeassistant.local:8123/local/settings.html?token=DEIN_TOKEN
```
**Option B: Als Dashboard-Karte (iframe)** - Empfohlen!
Dashboard bearbeiten → Karte hinzufügen → Webpage:
```yaml
type: iframe
url: /local/settings.html?token=DEIN_TOKEN
aspect_ratio: 100%
```
**Option C: Als Seitenleisten-Panel**
> **Hinweis:** Seit Home Assistant 2024.4.0 ist `panel_iframe` über YAML deprecated. Nutze stattdessen Option B (Dashboard-Karte) oder erstelle ein eigenes Dashboard:
1. **Einstellungen****Dashboards****Dashboard hinzufügen**
2. Name: `Rauchmelder`, Icon: `mdi:fire`
3. **In Seitenleiste anzeigen** aktivieren
4. Dashboard öffnen → **Dashboard bearbeiten** → Karte hinzufügen → **Webpage**
5. URL: `/local/settings.html?token=DEIN_TOKEN`
### 6. Konfigurieren & Testen
1. Konfiguriere alles in der Settings-Seite:
- Benachrichtigungstext
- TTS Intervall & Sprache
- Rauchmelder (aus Dropdown wählen)
- Sirene pro Rauchmelder (optional)
- Anzeigenamen (optional)
- Geräte (iOS/Android)
2. Klicke **"Speichern"**
3. Die Config wird automatisch an Node-RED gesendet
4. Nutze den **Test-Button** oder setze einen Rauchmelder auf `on`
---
## Settings-Seite
Die Settings-Seite bietet **Gruppen** - jede Gruppe enthält:
| Bereich | Optionen |
|---------|----------|
| **Gruppen-Header** | Name der Gruppe (z.B. "Haus 1", "Ferienhaus"), Umbenennen, Löschen |
| **Benachrichtigungen** | Text mit `{detector}` Platzhalter, TTS Intervall (5-60s), Sprache |
| **Rauchmelder** | Dropdown-Auswahl der Rauchmelder-Sensoren aus HA |
| **Sirene** | Pro Rauchmelder optional eine Sirene/Switch zuweisen |
| **Namen** | Optionaler Anzeigename für jeden Rauchmelder |
| **Geräte** | Android (Name + ID + TTS) oder iOS (Name + ID + Critical Alert) |
| **Notfall-Buttons** | Benachrichtigungen stoppen / Sirenen ausschalten - **nur für diese Gruppe** |
### Gruppen-Konzept
- **Gruppe "Haus 1"**: Rauchmelder Küche, Flur → benachrichtigt Stefan, Maria
- **Gruppe "Ferienhaus"**: Rauchmelder Wohnzimmer → benachrichtigt nur Stefan
Wenn der Rauchmelder im Ferienhaus auslöst:
- Nur Stefan bekommt Benachrichtigungen (nicht Maria)
- Nur die Sirene im Ferienhaus geht an
- Der STOPP-Button stoppt nur die Ferienhaus-Benachrichtigungen
---
## iOS Setup (Critical Alerts)
Für iOS-Geräte werden **Critical Alerts** verwendet. Diese sind laute Benachrichtigungen die auch bei stummgeschaltetem Gerät durchkommen.
### Critical Alerts aktivieren
1. **Home Assistant Companion App** öffnen
2. **Einstellungen****Companion App****Benachrichtigungen**
3. **Critical Alerts erlauben** aktivieren
### iOS Einstellungen prüfen
1. **iOS Einstellungen****Mitteilungen****Home Assistant**
2. Prüfe ob **Kritische Hinweise** aktiviert ist
### Wie es funktioniert
- Bei Rauchmelder-Alarm bekommt das iOS-Gerät einen **Critical Alert**
- Der Alert spielt einen lauten Sound ab (auch bei Stumm-Modus!)
- Die Nachricht zeigt an welcher Rauchmelder ausgelöst hat
- Der Alert wiederholt sich alle X Sekunden bis STOPP gedrückt wird
### Wichtig
- Critical Alerts umgehen den Stumm-Modus und "Nicht Stören"
- Der Sound ist laut - perfekt für Notfälle
- Funktioniert auch im Hintergrund und bei gesperrtem Gerät
---
## So funktioniert's
1. **Trigger:** Rauchmelder geht auf `on`
2. **Gruppen-Filter:** In welcher Gruppe ist dieser Rauchmelder?
3. **Sirene:** Die zugehörige Sirene des Rauchmelders wird aktiviert (nur in dieser Gruppe)
4. **Benachrichtigungen:** Nur Geräte **dieser Gruppe** bekommen:
- Text-Notification mit STOPP-Button
- TTS-Loop / Critical Alert (alle X Sekunden)
5. **STOPP:** User drückt Button → TTS stoppt für dieses Gerät in dieser Gruppe
6. **Rauch weg:** Nur Sirenen dieser Gruppe werden ausgeschaltet
**Die Config wird als JSON-Datei gespeichert (`/config/www/smoke_config.json`) und bleibt auch nach Neustarts erhalten.**
---
## Troubleshooting
| Problem | Lösung |
|---------|--------|
| Config nicht geladen | Öffne Settings-Seite und klicke "Speichern" |
| Keine Rauchmelder im Dropdown | Klicke "Entities laden" - prüfe ob Sensoren device_class "smoke" haben |
| Benachrichtigung kommt nicht | Prüfe Gerätename (muss mit Mobile App übereinstimmen) |
| TTS stoppt nicht | Prüfe ob STOPP-Event ankommt (Debug-Panel) |
| Settings-Seite zeigt Fehler | Prüfe Token in der URL |
| Sirene geht nicht an | Prüfe ob die richtige Switch-Entity zugewiesen ist |
---
## Dateien
```
node-red/
├── flows/
│ └── smoke_detector.json # Node-RED Flow
└── settings.html # Einstellungsseite (→ nach /config/www/ kopieren)
```
---
## Lizenz
MIT