homebridge-gira-client
Version:
Homebridge Plugin für Gira Homeserver 4 mit automatischer Geräteerkennung über IoT REST API
321 lines (251 loc) • 11.3 kB
Markdown
# Homebridge Gira Client Plugin
Ein vollständiges Homebridge Plugin für die Integration des Gira Homeserver 4 in Apple HomeKit über die Gira IoT REST API.
## Features
- **Gira IoT REST API Integration**: Automatische Verbindung und Authentifizierung mit dem Gira Homeserver 4
- **Automatische Geräteerkennung**: Alle kompatiblen Geräte werden automatisch erkannt und in HomeKit integriert
- **Gebäudestruktur-Unterstützung**: Erkennt und nutzt die Gira Gebäudehierarchie (Gebäude → Stockwerke → Räume)
- **Umfassende Geräteunterstützung**:
- Schalter und Dimmer
- Jalousien und Rollläden
- Temperatur- und Feuchtigkeitssensoren
- Heizungssteuerung/Thermostate
- Szenen und weitere Sensoren
- **Statusaktualisierungen**: Regelmäßige Abfrage der Gerätestatus über REST API
- **Robuste Verbindung**: Automatische Wiederverbindung bei Verbindungsabbrüchen
- **Umfangreiche Konfiguration**: Detaillierte Filteroptionen für Räume und Gerätetypen
- **Debug-Modus**: Erweiterte Logging-Funktionen für Troubleshooting
## Voraussetzungen
Bevor Sie das Plugin verwenden können:
1. **Gira Homeserver 4** mit Firmware 4.10 oder höher
2. **Gira IoT REST API Lizenz** und Aktivierung:
- Lizenz "IoT REST API" im Gira Project Assistant unter "System" → "Lizenzen"
- Aktivierung unter "Einstellungen" → "IoT REST API"
3. **Homebridge** Installation
4. **Netzwerkzugang** zum Homeserver (Port 80 oder 443)
5. **Gültige Anmeldedaten** für den Homeserver
## Installation
### Über Homebridge UI
1. Öffnen Sie die Homebridge Web UI
2. Navigieren Sie zu "Plugins"
3. Suchen Sie nach "homebridge-gira-client"
4. Klicken Sie auf "Install"
### Über npm (empfohlen)
```bash
npm install -g homebridge-gira-client
```
### Lokal installieren
```bash
npm install homebridge-gira-client
```
## Konfiguration
### Grundkonfiguration
```json
{
"platforms": [
{
"platform": "GiraHomeserver",
"name": "Gira Homeserver",
"host": "192.168.1.100",
"username": "ihr-benutzername",
"password": "ihr-passwort"
}
]
}
```
### Erweiterte Konfiguration
```json
{
"platforms": [
{
"platform": "GiraHomeserver",
"name": "Gira Homeserver",
"host": "192.168.1.100",
"port": 80,
"username": "ihr-benutzername",
"password": "ihr-passwort",
"pollingInterval": 30000,
"debugMode": false,
"buildingStructure": {
"useLocationHierarchy": true,
"groupByFloor": true,
"groupByBuilding": false,
"customRoomMappings": {
"Hauptgebäude_EG_Wohnzimmer": "Wohnzimmer",
"Hauptgebäude_OG_Schlafzimmer": "Schlafzimmer"
}
},
"deviceFilters": {
"includeRooms": ["Wohnzimmer", "Schlafzimmer", "Küche"],
"excludeRooms": ["Keller", "Technikraum"],
"includeTypes": ["switching", "dimming", "blinds"],
"excludeTypes": ["scene"],
"includeTrades": ["Beleuchtung", "Beschattung"],
"excludeTrades": ["Heizung"]
}
}
]
}
```
## Konfigurationsoptionen
### Pflichtfelder
| Option | Typ | Beschreibung |
|--------|-----|--------------|
| `platform` | string | Muss "GiraHomeserver" sein |
| `name` | string | Name der Plattform in HomeKit |
| `host` | string | IP-Adresse oder Hostname des Gira Homeserver 4 |
| `username` | string | Benutzername für die Authentifizierung |
| `password` | string | Passwort für die Authentifizierung |
### Optionale Felder
| Option | Typ | Standard | Beschreibung |
|--------|-----|----------|--------------|
| `port` | number | 80 | Port-Nummer des Homeservers (80 für HTTP, 443 für HTTPS) |
| `pollingInterval` | number | 30000 | Intervall für Statusabfragen in ms |
| `debugMode` | boolean | false | Aktiviert erweiterte Debug-Logs |
### Gebäudestruktur
| Option | Typ | Standard | Beschreibung |
|--------|-----|----------|--------------|
| `buildingStructure.useLocationHierarchy` | boolean | false | Raumnamen in Gerätenamen einbeziehen |
| `buildingStructure.groupByFloor` | boolean | false | Stockwerk-Information in Gerätenamen |
| `buildingStructure.groupByBuilding` | boolean | false | Gebäude-Information in Gerätenamen |
| `buildingStructure.customRoomMappings` | object | {} | Individuelle Raum-Namens-Zuordnungen |
### Gerätefilter
| Option | Typ | Beschreibung |
|--------|-----|--------------|
| `deviceFilters.includeRooms` | string[] | Nur Geräte aus diesen Räumen einbeziehen |
| `deviceFilters.excludeRooms` | string[] | Geräte aus diesen Räumen ausschließen |
| `deviceFilters.includeTypes` | string[] | Nur diese Gerätetypen einbeziehen |
| `deviceFilters.excludeTypes` | string[] | Diese Gerätetypen ausschließen |
| `deviceFilters.includeTrades` | string[] | Nur Geräte aus diesen Gewerken einbeziehen |
| `deviceFilters.excludeTrades` | string[] | Geräte aus diesen Gewerken ausschließen |
## Unterstützte Gerätetypen
| Gira Gerätetyp | HomeKit Service | Unterstützte Eigenschaften |
|----------------|----------------|----------------------------|
| Schalter (`switching`) | Switch | Ein/Aus |
| Dimmer (`dimming`) | Lightbulb | Ein/Aus, Helligkeit |
| Jalousie (`blinds`) | WindowCovering | Position, Bewegungsstatus |
| Temperatursensor (`temperature`) | TemperatureSensor | Aktuelle Temperatur |
| Feuchtigkeitssensor (`humidity`) | HumiditySensor | Aktuelle Luftfeuchtigkeit |
| Heizung (`heating`) | Thermostat | Temperatur, Heiz-/Kühlmodus |
| Sensor (`sensor`) | Verschiedene | Je nach Sensortyp |
## Troubleshooting
### Verbindungsprobleme
1. **Überprüfen Sie die Netzwerkverbindung**: Stellen Sie sicher, dass der Homebridge-Server den Gira Homeserver erreichen kann
2. **Firewall-Einstellungen**: Überprüfen Sie, ob der Port (Standard: 80) nicht blockiert ist
3. **Anmeldedaten**: Stellen Sie sicher, dass Benutzername und Passwort korrekt sind
### Debug-Modus aktivieren
Setzen Sie `debugMode: true` in der Konfiguration, um detaillierte Logs zu erhalten:
```json
{
"debugMode": true
}
```
### Häufige Probleme
#### "Unexpected server response: 404"
- **REST API nicht aktiviert**: Die Gira IoT REST API muss am Homeserver aktiviert werden
- Gehen Sie ins Gira Project Assistant (GPA)
- Unter "System" → "Lizenzen" prüfen Sie ob "IoT REST API" lizenziert ist
- Unter "Einstellungen" → "IoT REST API" aktivieren Sie diese
- Versuchen Sie Port 80 (HTTP) statt 443 (HTTPS)
- Prüfen Sie die Firmware-Version des Homeservers (mind. 4.10 erforderlich)
- Testen Sie manuell: `http://IP-ADRESSE/api/v2/` im Browser
#### "SSL/TLS Fehler (wrong version number)"
- Verwenden Sie Port 80 für HTTP statt 443 für HTTPS
- Viele Gira Homeserver verwenden HTTP für die REST API
- Stellen Sie den Port in der Konfiguration auf 80
#### "Connection timeout"
- Überprüfen Sie die Netzwerkverbindung zum Homeserver
- Versuchen Sie sowohl Port 80 (HTTP) als auch Port 443 (HTTPS)
- Überprüfen Sie die Firewall-Einstellungen
#### "Authentication failed"
- Überprüfen Sie Benutzername und Passwort
- Stellen Sie sicher, dass der Benutzer die erforderlichen Berechtigungen hat
- Prüfen Sie, ob der Benutzer für die IoT API freigegeben ist
#### "Certificate errors"
- Verwenden Sie HTTP (Port 80) um SSL-Probleme zu vermeiden
- Falls HTTPS erforderlich: Das Plugin ignoriert SSL-Zertifikatsfehler automatisch
## Entwicklung
### Build
```bash
npm run build
```
### Watch Mode
```bash
npm run watch
```
### Linting
```bash
npm run lint
```
## Changelog
### Version 1.2.0
- **Umfassende Geräteerkennung**: Erweiterte Suche nach allen verfügbaren Gerätetypen im System
- **Multi-Source Discovery**: Nutzt verschiedene API-Endpunkte und Konfigurationsvarianten
- **Vollständige Erfassung**: Standardmäßig werden ALLE Geräte inkludiert (keine Filterung)
- **Verbesserte Diagnose**: Automatischer Export von Analyse-Dateien für alle gefundenen Geräte
- **Erweiterte Logs**: Detaillierte Informationen über jeden Erkennungsschritt
- **Alle Funktionstypen**: Unterstützung für sämtliche in der Gira-Konfiguration verfügbare Gerätetypen
### Version 1.1.0
- **Updated API Implementation**: Complete alignment with Gira IoT REST API v2 specification
- **Enhanced Authentication**: Proper Basic Auth for client registration as per API docs
- **HTTPS Enforcement**: Uses HTTPS by default as required by API specification
- **Extended Function Support**: Added support for all function types from API documentation including:
- Colored Light and Tunable White functions
- Audio and Sonos control
- Camera and IP Link functions
- All status and value transmitter types
- **Improved Error Handling**: Better error messages with API error codes
- **API Compliance**: Exact endpoint usage and parameter formats as documented
### Version 1.0.3
- **Vollständige Geräteerkennung**: Alle Gira Geräte werden automatisch abgerufen und eingebunden
- **Intelligente Typerkennung**: Erweiterte Erkennung aller Gira Funktionstypen
- **Generische Mappings**: Unbekannte Gerätetypen werden automatisch als passende HomeKit-Geräte eingebunden
- **Gebäudestruktur-Support**: Vollständige Unterstützung für Gira Gebäudehierarchie
- **Erweiterte Filter**: Flexible Ein-/Ausschlussmöglichkeiten nach Räumen, Typen und Gewerken
### Version 1.0.2
- HTTP/HTTPS Fallback-Logik für bessere Verbindungskompatibilität
- Erweiterte Diagnose-Funktionen
- Mehrere API-Pfad Tests
### Version 1.0.0
- Initiale Veröffentlichung
- Gira IoT REST API Integration
- Grundlegende Gerätetyp-Unterstützung
- Automatische Geräteerkennung
- Regelmäßige Statusaktualisierungen
- Robuste Fehlerbehandlung und Wiederverbindung
## Beispiel-Konfiguration für Ihr Smart Home
Basierend auf Ihrer Gebäudestruktur siehe `example-config.json`:
### **Was das Plugin automatisch macht:**
🏠 **Alle Räume werden erkannt:**
- ✅ Erdgeschoss: Küche, Wohnzimmer, Arbeitszimmer, Bad EG, Esszimmer, etc.
- ✅ Obergeschoss: Schlafzimmer, Martin, Henri, Bäder, Ankleide
- ✅ Dachgeschoss: Gästezimmer
- ✅ Außenanlage: Beleuchtung, Garage, Freisitz
- ✅ Keller: Sauna
⚡ **Alle Gerätetypen werden automatisch integriert:**
- 💡 Beleuchtung (Schalter, Dimmer, RGB)
- 🏠 Jalousien und Rollläden
- 🌡️ Heizung und Thermostate
- 📡 Sensoren (Temperatur, Feuchtigkeit)
- 🎬 Szenen
- 🔊 Audio-Systeme
- 🚨 Sicherheitstechnik (nach Bedarf)
📱 **Intelligente HomeKit-Namen:**
- "Küche Licht" statt nur "Licht"
- "Martin Jalousie" statt nur "Jalousie"
- "EG Treppenhaus Bewegungsmelder"
Das Plugin erkennt automatisch **alle verfügbaren Geräte** aus Ihrer umfangreichen Gira-Installation und organisiert sie sinnvoll in HomeKit!
## Lizenz
MIT License - siehe LICENSE Datei für Details.
## Support
Bei Problemen oder Fragen:
1. Aktivieren Sie den Debug-Modus und überprüfen Sie die Logs
2. Erstellen Sie ein Issue auf GitHub mit:
- Homebridge Version
- Plugin Version
- Gira Homeserver Version
- Relevante Log-Ausgaben
- Konfiguration (ohne Passwörter!)
## Credits
Entwickelt für die Integration von Gira Homeserver 4 Systemen in Apple HomeKit über Homebridge.
---
**Hinweis**: Dieses Plugin ist nicht offiziell von Gira entwickelt oder unterstützt. Es handelt sich um ein Community-Projekt.