UNPKG

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
# 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.