@pellebot/homebridge-fritz-platform-hb2 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (49) hide show
  1. package/CHANGELOG.md +712 -0
  2. package/CONTRIBUTING.md +83 -0
  3. package/DEBUG.md +72 -0
  4. package/LICENSE +22 -0
  5. package/README.md +240 -0
  6. package/branding/Icon.png +0 -0
  7. package/config.schema.json +943 -0
  8. package/index.mjs +19 -0
  9. package/package.json +69 -0
  10. package/src/accessories/extras/extras.accessory.js +73 -0
  11. package/src/accessories/extras/extras.config.js +43 -0
  12. package/src/accessories/extras/extras.handler.js +799 -0
  13. package/src/accessories/extras/extras.js +8 -0
  14. package/src/accessories/extras/extras.setup.js +93 -0
  15. package/src/accessories/router/router.accessory.js +583 -0
  16. package/src/accessories/router/router.config.js +51 -0
  17. package/src/accessories/router/router.handler.js +1024 -0
  18. package/src/accessories/router/router.js +9 -0
  19. package/src/accessories/router/router.setup.js +73 -0
  20. package/src/accessories/router/router.utils.js +22 -0
  21. package/src/accessories/smarthome/blind/blind.accessory.js +40 -0
  22. package/src/accessories/smarthome/button/button.accessory.js +89 -0
  23. package/src/accessories/smarthome/contact/contact.accessory.js +120 -0
  24. package/src/accessories/smarthome/energy-meter/energy-meter.accessory.js +75 -0
  25. package/src/accessories/smarthome/energy-temperature/energy-temperature.accessory.js +68 -0
  26. package/src/accessories/smarthome/humidity/humidity.accessory.js +90 -0
  27. package/src/accessories/smarthome/lightbulb/lightbulb.accessory.js +112 -0
  28. package/src/accessories/smarthome/outlet/outlet.accessory.js +117 -0
  29. package/src/accessories/smarthome/outlet-lightbulb/outlet-lightbulb.accessory.js +233 -0
  30. package/src/accessories/smarthome/smarthome-button.handler.js +316 -0
  31. package/src/accessories/smarthome/smarthome.config.js +35 -0
  32. package/src/accessories/smarthome/smarthome.handler.js +1981 -0
  33. package/src/accessories/smarthome/smarthome.js +24 -0
  34. package/src/accessories/smarthome/smarthome.setup.js +160 -0
  35. package/src/accessories/smarthome/smarthome.utils.js +40 -0
  36. package/src/accessories/smarthome/smoke/smoke.accessory.js +85 -0
  37. package/src/accessories/smarthome/switch/switch.accessory.js +56 -0
  38. package/src/accessories/smarthome/switch-lightbulb/switch-lightbulb.accessory.js +172 -0
  39. package/src/accessories/smarthome/temperature/temperature.accessory.js +111 -0
  40. package/src/accessories/smarthome/thermostat/thermostat.accessory.js +186 -0
  41. package/src/accessories/smarthome/window/window.accessory.js +120 -0
  42. package/src/accessories/smarthome/window-switch/window-switch.accessory.js +38 -0
  43. package/src/lib/telegram.js +80 -0
  44. package/src/package.json +4 -0
  45. package/src/platform.js +241 -0
  46. package/src/types/custom.types.js +132 -0
  47. package/src/types/eve.types.js +112 -0
  48. package/src/utils/logger.js +68 -0
  49. package/src/utils/utils.js +132 -0
@@ -0,0 +1,83 @@
1
+ # Contributing
2
+
3
+ Vielen Dank dass du zu `@pellebot/homebridge-fritz-platform-hb2` beitragen willst. Dieser Fork wird **LLM-unterstützt** gepflegt (siehe [`CONCEPT.md`](./CONCEPT.md)) — die Workflow-Erwartungen sind dadurch etwas anders als bei klassischen Open-Source-Projekten.
4
+
5
+ ## Issues melden
6
+
7
+ Bevor du ein Issue öffnest, **bitte prüfe**:
8
+
9
+ 1. **Ist das Issue schon offen oder gelöst?** Suche in [bestehenden Issues](https://github.com/PelleBot/homebridge-fritz-platform-ng/issues?q=is%3Aissue).
10
+ 2. **Ist dein Anliegen im Scope?** Wenn es um Callmonitor, Presence, Network-Watcher, WoL, Childlock oder Telegram-Notifications geht — diese Subsysteme sind aus diesem Fork entfernt (siehe README). Issues dazu werden geschlossen mit Verweis auf den Original-Repo oder alternative Plugins.
11
+ 3. **Hast du minimale Infos?** Ein Issue ohne Versions-Angaben + Logs + Config-Auszug ist schwer zu beantworten. Bitte das Issue-Template nutzen.
12
+
13
+ ### Was ein guter Bug-Report enthält
14
+
15
+ - **Homebridge-Version**: `homebridge --version`
16
+ - **Node-Version**: `node --version`
17
+ - **Plugin-Version**: `npm ls -g @pellebot/homebridge-fritz-platform-hb2`
18
+ - **FritzBox-Modell** + **FRITZ!OS-Version** (siehe FritzBox-UI → System → Übersicht)
19
+ - **Konkretes Verhalten**: was hast du erwartet, was passiert stattdessen?
20
+ - **Reproduktionsschritte**: wie kann ich (oder ein anderer Tester) das Problem nachstellen?
21
+ - **Logs**: idealerweise mit `"debug": true` in der Plugin-Config, der relevante Ausschnitt (nicht 10.000 Zeilen)
22
+ - **Config-Auszug**: nur die relevante Plugin-Sektion, **ohne Passwort!**
23
+
24
+ ## Pull Requests
25
+
26
+ **Vor dem PR**: bitte ein Issue öffnen (oder kommentieren), das die Änderung beschreibt. So vermeidest du Aufwand für Patches, die nicht in den Scope passen oder anders gelöst werden sollten.
27
+
28
+ ### PR-Checkliste
29
+
30
+ - [ ] Eine Sache pro PR (kleine, fokussierte Änderungen)
31
+ - [ ] Commit-Messages folgen [Conventional Commits](https://www.conventionalcommits.org/): `feat:`, `fix:`, `docs:`, `refactor:`, `chore:`
32
+ - [ ] Beschreibung im PR: Was ändert sich, warum, wie getestet
33
+ - [ ] Tests (falls anwendbar) — siehe `__tests__/` Verzeichnis
34
+ - [ ] Lint passt (`npm run lint`)
35
+ - [ ] `node --check` auf allen geänderten Dateien
36
+ - [ ] Bei Code-Änderungen am Plugin: idealerweise mit einer echten FritzBox getestet (oder gegen die Mocks falls vorhanden)
37
+ - [ ] CHANGELOG.md-Entry nicht selbst hinzufügen — das macht der Maintainer beim Release
38
+
39
+ ### Was wir gerne hätten
40
+
41
+ Hohe Priorität (siehe [`ROADMAP.md`](./ROADMAP.md)):
42
+
43
+ - Test-Suite ausbauen (Mock-Layer für AHA-API)
44
+ - FRITZ!Smart Energy 250 OBIS-Reader-Verbesserungen (Phase 2.3)
45
+ - `config.schema.json` Field-Hilfetexte verbessern (Phase 2.1 noch nicht ganz fertig)
46
+ - energy-meter accType ins Schema aufnehmen (Phase 2.1)
47
+ - Doku-Verbesserungen, vor allem zur Migration vom Original
48
+ - Sauberere Logging-Strukturen
49
+
50
+ Niedrige Priorität / wahrscheinlich abgelehnt:
51
+
52
+ - Wiederherstellung der entfernten Subsysteme (Callmonitor, Presence, etc.) — siehe README
53
+ - Große Refactors ohne klaren Mehrwert (CommonJS → ESM im src/-Tree)
54
+ - Features für Geräte die der Maintainer nicht im Testbestand hat (z.B. Rollläden) — können angenommen werden, aber langsamere Iteration
55
+
56
+ ## Code-Konventionen
57
+
58
+ - **CommonJS** im `src/`-Baum (intentional, minimal-patch-Prinzip)
59
+ - **ESM** nur im `index.mjs`-Entrypoint (HB 2.0 Anforderung)
60
+ - **HAP-Charakteristiken** über String-Literale (`'uint32'`, `'pr'`, etc.), nicht über `Characteristic.Formats.X`-Statics (siehe Eve-Types-Port)
61
+ - **ES6-Klassen** für neue Custom-Characteristics (siehe `eve.types.js` als Vorlage)
62
+ - **Keine** direkte Veränderung der HAP-Standard-Services (kein `Service.X = function() {...}`)
63
+
64
+ ## Maintenance-Workflow
65
+
66
+ Wenn du ein PR öffnest:
67
+
68
+ 1. CI läuft automatisch (Lint + Build + Tests).
69
+ 2. Der Maintainer reviewed in den nächsten 1-7 Tagen.
70
+ 3. Bei Bedarf wird der Maintainer den Patch in einer LLM-Session diskutieren (das ist intern, du siehst nur das Review-Ergebnis).
71
+ 4. Bei Approval: Merge in `main`, Aufnahme in den nächsten Release.
72
+
73
+ **Du wirst niemals automatische Bot-Antworten von uns bekommen.** Wenn 7 Tage keine Reaktion kommt, gerne nachfragen — manchmal ist Realität schneller als Github-Notifications.
74
+
75
+ ## Credits
76
+
77
+ Dieser Fork baut auf der jahrelangen Arbeit von **Seyit Bayraktar (SeydX)** auf — siehe Original [`SeydX/homebridge-fritz-platform`](https://github.com/SeydX/homebridge-fritz-platform). Weitere Credits:
78
+
79
+ - [@ulfalfa](https://github.com/ulfalfa) für das modifizierte **TR064**-Modul
80
+ - [@simont77](https://github.com/simont77/fakegato-history) für **FakeGato** (im Fork als No-Op gestubbt)
81
+ - [@tbasse](https://github.com/tbasse/fritzbox-callmonitor) für die ursprüngliche **Callmonitor**-Implementierung (im Fork nicht enthalten)
82
+ - AVM für DECT-Hardware + AHA-HTTP-Interface-Doku
83
+ - Alle Beta-Tester und Issue-Reporter aus dem Original-Repo
package/DEBUG.md ADDED
@@ -0,0 +1,72 @@
1
+ # Debugging
2
+
3
+ Wenn das Plugin sich nicht so verhält wie erwartet, gibt es zwei nützliche Debug-Mechanismen.
4
+
5
+ ## 1. Plugin-Debug-Mode
6
+
7
+ In deiner `config.json` im FritzPlatform-Block:
8
+
9
+ ```json
10
+ {
11
+ "platform": "FritzPlatform",
12
+ "debug": true,
13
+ ...
14
+ }
15
+ ```
16
+
17
+ Anschließend Homebridge neu starten. Die Logs zeigen jetzt detaillierte Informationen zu jedem Polling-Zyklus, AHA-API-Antworten, und Accessory-State-Übergängen.
18
+
19
+ **Wichtig beim Posten von Debug-Logs in Issues:**
20
+ - FritzBox-Passwort entfernen (steht zwar nicht direkt im Log, aber sicherheitshalber prüfen)
21
+ - FritzBox-IP entfernen (z.B. `192.168.x.x` ersetzen durch `192.168.X.X`)
22
+ - AINs können stehen bleiben (sind nicht sensibel)
23
+ - Bridge-PIN nicht mitposten
24
+
25
+ ## 2. VS Code Debugger
26
+
27
+ Wenn du den Plugin-Code lokal weiterentwickelst:
28
+
29
+ `.vscode/launch.json` im Repo-Root anlegen:
30
+
31
+ ```json
32
+ {
33
+ "version": "0.2.0",
34
+ "configurations": [
35
+ {
36
+ "name": "Launch Homebridge with Plugin",
37
+ "program": "${env:HOME}/homebridge-test/node_modules/homebridge/bin/homebridge",
38
+ "args": [
39
+ "-U", "${env:HOME}/homebridge-test",
40
+ "--plugin-path", "${env:HOME}/homebridge-test/node_modules"
41
+ ],
42
+ "request": "launch",
43
+ "skipFiles": ["<node_internals>/**"],
44
+ "type": "pwa-node"
45
+ }
46
+ ]
47
+ }
48
+ ```
49
+
50
+ Vorausgesetzt du hast ein Test-Homebridge-Setup unter `~/homebridge-test/` und das Plugin per `npm link` reingezogen.
51
+
52
+ ## 3. Plugin-Files direkt anschauen
53
+
54
+ Logs-Pfad bei einem hb-service-Setup (Homebridge UI X):
55
+
56
+ - macOS: `~/Library/Logs/homebridge/`
57
+ - Linux: `/var/log/homebridge/`
58
+ - Via CLI: `hb-service logs`
59
+
60
+ Häufige Fehlerbilder:
61
+
62
+ | Symptom | Wahrscheinliche Ursache |
63
+ |---|---|
64
+ | `Can not find switch data` | Gerät hat keinen schaltbaren Relais-Ausgang (z.B. Energy 250) — falscher `accType` in Config |
65
+ | `Can not find device with AIN: ...` | AIN-Tippfehler in Config, oder Gerät ist beim Plugin-Start offline an der FritzBox |
66
+ | `TypeError: Cannot read properties of undefined (reading 'UUID')` | Custom-Characteristic nicht registriert — sollte mit v6.1.0-hb2patch.1+ nicht mehr auftreten. Falls doch: Plugin-Version prüfen (`npm ls -g @pellebot/homebridge-fritz-platform-hb2`), ggf. neu installieren |
67
+ | `ECONNREFUSED` / TLS-Fehler beim Start | FritzBox-IP, Port (49443 für TR-064 SSL), oder TR-064-Zugriff in FritzBox-UI nicht aktiviert |
68
+ | Polling läuft, aber Werte aktualisieren nicht | FritzBox-User hat keine "Smart Home"-Berechtigung → in FritzBox-UI prüfen |
69
+
70
+ ## Issues mit reproduzierbarem Debug-Output melden
71
+
72
+ Wenn du nach diesen Schritten weiter Probleme hast, [öffne ein Issue](https://github.com/PelleBot/homebridge-fritz-platform-ng/issues/new/choose) und füge den relevanten Debug-Log-Auszug an. Bitte das Issue-Template nutzen — es führt durch alle nötigen Informationen.
package/LICENSE ADDED
@@ -0,0 +1,22 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2020 Seyit Bayraktar <seydx@outlook.de>
4
+ Copyright (c) 2026 PelleBot <pelle-bot@we-success.de>
5
+
6
+ Permission is hereby granted, free of charge, to any person obtaining a copy
7
+ of this software and associated documentation files (the "Software"), to deal
8
+ in the Software without restriction, including without limitation the rights
9
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
10
+ copies of the Software, and to permit persons to whom the Software is
11
+ furnished to do so, subject to the following conditions:
12
+
13
+ The above copyright notice and this permission notice shall be included in all
14
+ copies or substantial portions of the Software.
15
+
16
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
21
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
22
+ SOFTWARE.
package/README.md ADDED
@@ -0,0 +1,240 @@
1
+ # @pellebot/homebridge-fritz-platform-hb2
2
+
3
+ <p align="center">
4
+ <img src="branding/Icon.png" alt="Plugin Logo" width="160">
5
+ </p>
6
+
7
+ > Homebridge 2.0 plugin für AVM FRITZ!DECT Geräte und FRITZ!Box Router-Switches. Fokus: produktiver Betrieb auf Homebridge 2.0 mit Node 22 / 24.
8
+
9
+ [![npm version](https://img.shields.io/npm/v/@pellebot/homebridge-fritz-platform-hb2.svg?style=flat-square)](https://www.npmjs.com/package/@pellebot/homebridge-fritz-platform-hb2)
10
+ [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg?style=flat-square)](https://opensource.org/licenses/MIT)
11
+ [![Homebridge](https://img.shields.io/badge/homebridge-2.0%20%7C%201.8%2B-purple?style=flat-square)](https://github.com/homebridge/homebridge)
12
+ [![Node](https://img.shields.io/badge/node-22%20%7C%2024-green?style=flat-square)](https://nodejs.org/)
13
+
14
+ ## Status
15
+
16
+ Production: läuft produktiv beim Maintainer mit 12 DECT-Thermostaten, 1 DECT-Lampe, 2 Temperatursensoren, einem FRITZ!Smart Energy 250 OBIS-Reader an einem ISKRA-Stromzähler, sowie aktiven Router-Switches für Gast-WLAN und WPS — alles auf Homebridge 2.0.2 + Node 24 + FRITZ!OS 8.x.
17
+
18
+ ## Unterstützte Geräte
19
+
20
+ | Gerätetyp | accType | Was wird in HomeKit angezeigt |
21
+ |---|---|---|
22
+ | FRITZ!DECT 301 / Comet DECT (Heizkörper-Thermostat) | `thermostat` | Soll-/Ist-Temperatur, Batterie, Fenster-offen-Erkennung |
23
+ | FRITZ!Smart Light 500 / FRITZ!DECT 500 (DECT-Lampe) | `lightbulb` | An/Aus, Helligkeit, Farbe |
24
+ | FRITZ!Smart Control 440 (Temperatursensor) | `temperature` | Temperatur, Batterie |
25
+ | FRITZ!DECT 200 / 210 (schaltbare Steckdose) | `switch` | An/Aus + optional Energiemessung |
26
+ | FRITZ!Smart Energy 250 (OBIS-Reader, an ISKRA o.ä.) | `energy-temperature` | Aktuelle Leistung in W, kumulierte Energie in kWh — als TemperatureSensor exposed, von Apple Home nativ als Zahlen-Tile dargestellt |
27
+ | FRITZ!Box Router (Master) | (via `options`) | Gast-WLAN-Switch, WPS-Switch, optional weitere Toggles |
28
+
29
+ ## Architektur
30
+
31
+ Das Plugin nutzt zwei AVM-Schnittstellen:
32
+
33
+ - **TR-064** initialisiert die FritzBox-Verbindung (für AHA-API-Authentifizierung und Router-Steuerung). Konfiguration über `devices[]` mit `master: true`.
34
+ - **AHA-HTTP-API** liest und steuert DECT-Geräte. Konfiguration über `smarthome[]` mit jeweils einer AIN pro Gerät.
35
+
36
+ Das **Router-Accessory** (Master FritzBox) wird per default mit `hide: true` ausgeblendet. Wer Gast-WLAN und WPS als HomeKit-Tile haben will, konfiguriert das über das `options`-Objekt des Master-Devices (`wifi_guest: 'switch'`, `wps: 'switch'`).
37
+
38
+ ## Scope-Grenzen
39
+
40
+ Aus dem ursprünglichen Code-Baum entfernt oder nicht migriert — wer eine dieser Funktionen braucht, ist hier nicht richtig:
41
+
42
+ - **Callmonitor** (Anrufüberwachung)
43
+ - **Presence** (WLAN-Anwesenheit)
44
+ - **Network-Watcher**
45
+ - **Wake-on-LAN**
46
+ - **Child Lock** (Internet-Sperren)
47
+ - **Extras-Subsysteme** (DNS-Switch, Fallback-Internet, Phonebook, Telegram-Notifications) — die WiFi/WPS-Switches der Extras-Datei sind ausgenommen und voll funktional
48
+ - **`fakegato-history`** (Eve-App History-Graphen — als No-Op gestubbt weil HAP-v2-inkompatibel)
49
+
50
+ ## Voraussetzungen
51
+
52
+ - **Homebridge** ≥ 1.8.5 oder ≥ 2.0.0
53
+ - **Node.js** ≥ 22.12.0 oder ≥ 24.0.0
54
+ - **FRITZ!Box** mit aktiviertem **TR-064-Zugriff** + dediziertem User mit "Smart Home"-Berechtigung (FRITZ!OS 7.x oder neuer)
55
+ - Optional: **homebridge-config-ui-x** für die Web-UI-Konfiguration
56
+
57
+ ## Installation
58
+
59
+ ```bash
60
+ npm install -g @pellebot/homebridge-fritz-platform-hb2
61
+ ```
62
+
63
+ Vor der Veröffentlichung auf npm — direkt aus dem Git-Repo:
64
+
65
+ ```bash
66
+ git clone https://github.com/PelleBot/homebridge-fritz-platform-ng.git
67
+ cd homebridge-fritz-platform-ng
68
+ npm pack
69
+ sudo npm install -g ./pellebot-homebridge-fritz-platform-hb2-1.0.0.tgz
70
+ ```
71
+
72
+ Anschließend Homebridge neu starten (z.B. via Config UI X "Restart"-Button oder `sudo hb-service restart`).
73
+
74
+ ## Konfiguration
75
+
76
+ Minimal-Config (`~/.homebridge/config.json`):
77
+
78
+ ```json
79
+ {
80
+ "platforms": [
81
+ {
82
+ "platform": "FritzPlatform",
83
+ "name": "FritzBox",
84
+ "devices": [
85
+ {
86
+ "active": true,
87
+ "name": "FritzBox",
88
+ "host": "192.168.178.1",
89
+ "username": "homebridge-user",
90
+ "password": "DEIN_TR064_PASSWORT",
91
+ "ssl": true,
92
+ "tr064": true,
93
+ "master": true,
94
+ "hide": true,
95
+ "options": {
96
+ "wifi_guest": "switch",
97
+ "wps": "switch"
98
+ }
99
+ }
100
+ ],
101
+ "smarthome": [
102
+ {
103
+ "active": true,
104
+ "name": "Bad-Thermostat",
105
+ "ain": "099950870710",
106
+ "accType": "thermostat",
107
+ "temperature": true,
108
+ "window": true,
109
+ "battery": true
110
+ }
111
+ ],
112
+ "options": {
113
+ "polling": {
114
+ "timer": 30
115
+ }
116
+ }
117
+ }
118
+ ]
119
+ }
120
+ ```
121
+
122
+ Vollständige Optionen über das **Homebridge Config UI X** Plugin grafisch unterstützt.
123
+
124
+ ### Router-Switches (Gast-WLAN + WPS)
125
+
126
+ Im Master-Device-Block die `options` ergänzen:
127
+
128
+ ```json
129
+ {
130
+ "options": {
131
+ "wifi_guest": "switch",
132
+ "wps": "switch"
133
+ }
134
+ }
135
+ ```
136
+
137
+ Damit erscheinen zwei zusätzliche Tiles in HomeKit. Empfehlung: in der Home-App umbenennen ("Gast-WLAN", "WPS") für klarere Beschriftung als der vom Plugin generierte Default `<Master-Name> Wifi guest` / `<Master-Name> Wps`.
138
+
139
+ ### FRITZ!Smart Energy 250 (OBIS-Reader)
140
+
141
+ Die Smart Energy 250 ist ein HAN-FUN-Gateway, der einen externen Stromzähler (ISKRA o.ä.) per OBIS-Reader anbindet. AVM stellt zwei Sub-AINs bereit:
142
+
143
+ - `<base-AIN>-1` → OBIS 1.8 (Verbrauch / Bezug)
144
+ - `<base-AIN>-2` → OBIS 2.8 (Einspeisung)
145
+
146
+ Für ein typisches PV-Setup mit Bezug + Einspeisung legst du **vier `smarthome[]`-Einträge** an — je AIN ein aktueller Watt-Wert und ein kumulierter kWh-Wert:
147
+
148
+ ```json
149
+ {
150
+ "smarthome": [
151
+ {
152
+ "active": true,
153
+ "name": "Aktueller Verbrauch",
154
+ "ain": "152820924403-1",
155
+ "accType": "energy-temperature",
156
+ "obisChannel": "current_power"
157
+ },
158
+ {
159
+ "active": true,
160
+ "name": "Gesamt Verbrauch",
161
+ "ain": "152820924403-1",
162
+ "accType": "energy-temperature",
163
+ "obisChannel": "total_energy"
164
+ },
165
+ {
166
+ "active": true,
167
+ "name": "Aktuelle Einspeisung",
168
+ "ain": "152820924403-2",
169
+ "accType": "energy-temperature",
170
+ "obisChannel": "current_power"
171
+ },
172
+ {
173
+ "active": true,
174
+ "name": "Gesamt Einspeisung",
175
+ "ain": "152820924403-2",
176
+ "accType": "energy-temperature",
177
+ "obisChannel": "total_energy"
178
+ }
179
+ ]
180
+ }
181
+ ```
182
+
183
+ **Wieso TemperatureSensor?** HomeKit hat keinen nativen Service für Leistung oder Energie. TemperatureSensor wird hier als Anzeige-Vehikel "missbraucht": Apple Home rendert den Wert nativ als Zahl, plottet Verlaufsgraphen, und ist auf allen HomeKit-Clients ohne Eve-App-Abhängigkeit sichtbar. **Trade-off:** die Einheit zeigt `°C` an, gemeint sind aber `W` oder `kWh`. In der Home-App das Tile umbenennen ("Aktueller Verbrauch (W)", "Gesamt Einspeisung (kWh)") macht's eindeutig.
184
+
185
+ **Richtungs-Trennung:** AVM spiegelt den NET-Power-Wert auf beiden Sub-AINs (gleiche Zahl mit Vorzeichen). Das Plugin trennt das anhand des AIN-Suffixes — `-1` zeigt den Wert nur wenn `power > 0` (Bezug), `-2` zeigt `|power|` nur wenn `power < 0` (Einspeisung). Im Ruhe-/Inverse-Zustand zeigt die jeweils andere Kachel `0`.
186
+
187
+ ## Migration vom Original-Plugin
188
+
189
+ Wenn du bisher das unmaintained Original `homebridge-fritz-platform@6.0.19` eingesetzt hast:
190
+
191
+ 1. **Backup** dein `~/.homebridge/` Verzeichnis: `cp -R ~/.homebridge ~/.homebridge.backup`
192
+ 2. **Update Homebridge auf 2.x**: `sudo npm install -g homebridge@latest`
193
+ 3. **Original-Plugin entfernen**: `sudo npm uninstall -g homebridge-fritz-platform`
194
+ 4. **Dieses Plugin installieren**: `sudo npm install -g @pellebot/homebridge-fritz-platform-hb2`
195
+ 5. **Config anpassen**: nicht-mehr-unterstützte Subsysteme aus der Config entfernen (`presence`, `callmonitor`, `wol`, `childLock`, `network`, `extras`, `telegram` — werden eh ignoriert, aber sauberer wenn weg).
196
+ 6. **Homebridge neu starten**
197
+
198
+ Accessory-UUIDs basieren auf AIN + Name. Wer Device-Namen unverändert lässt, behält das HomeKit-Pairing bei und muss nichts in der Home-App neu zuordnen.
199
+
200
+ ## Troubleshooting
201
+
202
+ Siehe [`DEBUG.md`](./DEBUG.md) für:
203
+ - Plugin-Debug-Mode aktivieren
204
+ - VS Code Debugger Setup
205
+ - Häufige Fehlerbilder + Lösungen
206
+ - Log-Pfade auf macOS / Linux
207
+
208
+ ## Issues melden
209
+
210
+ Bevor du ein Issue öffnest, bitte zusammenstellen:
211
+
212
+ - Homebridge-Version (`homebridge --version`)
213
+ - Node-Version (`node --version`)
214
+ - Plugin-Version (`npm ls -g @pellebot/homebridge-fritz-platform-hb2`)
215
+ - FritzBox-Modell + FRITZ!OS-Version
216
+ - Relevante Log-Auszüge (idealerweise mit `"debug": true` in der Plugin-Config)
217
+ - Config-Auszug (ohne Passwort!)
218
+
219
+ Issue-Template im Repo führt durch alle Punkte.
220
+
221
+ ## Maintenance-Modell
222
+
223
+ Dieser Plugin wird **LLM-unterstützt** gepflegt (siehe [`CONCEPT.md`](./CONCEPT.md)):
224
+
225
+ - PelleBot ist menschlicher Maintainer, Repo-Owner, Final-Reviewer
226
+ - Code-Patches, Doc-Updates und Issue-Antworten werden mit Hilfe eines LLM (Claude) entworfen
227
+ - Jede Änderung wird vom menschlichen Maintainer geprüft, bevor sie committed wird
228
+ - Es gibt **keine automatischen Bot-Antworten** auf Issues — Reaktionszeit kann daher etwas länger sein, dafür ist Qualität konsistent
229
+
230
+ Pull Requests willkommen. Issues mit Label `discussion` für offene Architektur-Themen.
231
+
232
+ ## Lineage
233
+
234
+ Dieses Plugin baut auf der Code-Basis des [`homebridge-fritz-platform`](https://github.com/SeydX/homebridge-fritz-platform) Projekts von Seyit Bayraktar (SeydX) auf. Ohne seine jahrelange Vorarbeit (2020-2022) wäre die HB-2.0-Migration nicht in dieser Zeit machbar gewesen.
235
+
236
+ Lizenz: MIT — siehe [`LICENSE`](./LICENSE), Copyright-Halter sind dort beide aufgeführt.
237
+
238
+ ## Disclaimer
239
+
240
+ Alle Produkt- und Firmennamen (FRITZ!Box®, AVM®, HomeKit™, etc.) sind Marken ihrer jeweiligen Eigentümer. Die Verwendung impliziert keine Affiliation oder Empfehlung. Dieses Plugin ist **kein offizielles AVM- oder Apple-Produkt**.
Binary file