iobroker.homewizard 0.8.0 → 0.8.2

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.
package/README.md CHANGED
@@ -37,12 +37,12 @@ Real-time energy monitoring for [HomeWizard](https://www.homewizard.com) Energy
37
37
 
38
38
  ## Supported Devices
39
39
 
40
- | Device | Product Type |
41
- |--------|--------------|
42
- | P1 Meter | HWE-P1 |
40
+ | Device | Product Type |
41
+ | ----------------- | ------------------------------ |
42
+ | P1 Meter | HWE-P1 |
43
43
  | kWh Meter 1-Phase | HWE-KWH1 (also sold as SDM230) |
44
44
  | kWh Meter 3-Phase | HWE-KWH3 (also sold as SDM630) |
45
- | Plug-In Battery | HWE-BAT |
45
+ | Plug-In Battery | HWE-BAT |
46
46
 
47
47
  The Plug-In Battery is paired separately and shows up as its own device. To control charge/discharge mode and grid-feed permissions, you write to the `battery.*` data points of the P1 or kWh meter — that's where HomeWizard exposes the battery commands.
48
48
 
@@ -150,26 +150,38 @@ homewizard.0.
150
150
  ## Troubleshooting
151
151
 
152
152
  ### Device not found during pairing
153
+
153
154
  - Make sure the device is on the same network/VLAN as the ioBroker server
154
155
  - Verify that **local API** is enabled in the HomeWizard app (Settings > Meters > your device > Local API)
155
156
  - Check that multicast/mDNS traffic is not blocked by your router/firewall
156
157
 
157
158
  ### WebSocket keeps disconnecting
159
+
158
160
  - Check `info.wifi_rssi_db` — above -75 dBm is comfortable, weaker than -85 dBm explains frequent drops
159
161
  - For devices with weak WiFi the adapter switches to a faster reconnect interval (60 s instead of 5 min) and keeps REST polling in the background so you don't lose data
160
162
  - A WebSocket-layer ping/pong heartbeat (~30 s ping, 10 s pong window) catches half-dead links where the TCP stream is buffered but the device has stopped responding. Such links are torn down and reconnected automatically — you no longer end up with a stale "connected" status while measurement values stop updating.
161
163
  - IP changes are picked up via mDNS — no manual reconfiguration needed
162
164
 
163
165
  ### Token invalid after factory reset
166
+
164
167
  - Set the device's `remove` data point to `true`, then pair again
165
168
 
166
169
  ---
167
170
 
168
171
  ## Changelog
172
+
169
173
  <!--
170
174
  Placeholder for the next version (at the beginning of the line):
171
175
  ### **WORK IN PROGRESS**
172
176
  -->
177
+ ### 0.8.2 (2026-05-19)
178
+
179
+ - Code quality enforced with standard formatting.
180
+
181
+ ### 0.8.1 (2026-05-17)
182
+
183
+ - Internal cleanup. No user-facing changes.
184
+
173
185
  ### 0.8.0 (2026-05-17)
174
186
 
175
187
  - Internal modernization. No user-facing changes. Requires Node.js 22+.
@@ -183,20 +195,6 @@ homewizard.0.
183
195
  - Devices with chronically bad WiFi no longer flood the log: max one warn per hour when the device drops out, one info when it comes back. Full timeline stays at debug level.
184
196
  - Internal reconnect-strategy adjustments (unstable / normal mode switches) moved from info to debug — not user-actionable.
185
197
 
186
- ### 0.7.6 (2026-05-12)
187
-
188
- - The battery mode dropdown and the tariff state no longer crash the admin with "Error in GUI" when opened.
189
-
190
- ### 0.7.5 (2026-05-10)
191
- - Half-dead connections are now detected and torn down — fixes cases where the device stopped responding but the adapter still showed "connected" with stale measurement values.
192
- - The auth handshake now has a 45-second timeout — devices that accept the TCP connection but never reply to the auth protocol no longer hang forever.
193
- - IP recovery and manual re-pair after factory reset no longer leave a dangling connection from before — switching to a new IP just works.
194
- - Battery endpoint errors are no longer fully swallowed: 404 stays silent (device has no battery), other errors are visible in the debug log instead of being silently dropped.
195
- - Manual pairing IP is validated as IPv4 up front — invalid input fails fast with a warning instead of a silent 60-second pairing timeout.
196
- - A single corrupted device token can no longer take down the whole adapter — affected device is skipped with a re-pair hint, the others come up normally.
197
- - Pairing supports multiple devices in one 60-second window: button-press additional devices and they are added one after the other instead of the session ending after the first.
198
- - Various behind-the-scenes hardening — invisible if everything was already running fine, robustness if something is unstable.
199
-
200
198
  ### Support Development
201
199
 
202
200
  This adapter is free and open source. If you find it useful, consider buying me a coffee:
@@ -10,7 +10,11 @@
10
10
  "_prerequisitesInfo": {
11
11
  "type": "staticText",
12
12
  "text": "prerequisitesInfo",
13
- "xs": 12, "sm": 12, "md": 12, "lg": 12, "xl": 12,
13
+ "xs": 12,
14
+ "sm": 12,
15
+ "md": 12,
16
+ "lg": 12,
17
+ "xl": 12,
14
18
  "style": { "fontSize": 14, "marginBottom": 16 }
15
19
  },
16
20
  "_headerPairing": {
@@ -26,7 +30,11 @@
26
30
  "_pairingAutoInfo": {
27
31
  "type": "staticText",
28
32
  "text": "pairingAutoInfo",
29
- "xs": 12, "sm": 12, "md": 12, "lg": 12, "xl": 12,
33
+ "xs": 12,
34
+ "sm": 12,
35
+ "md": 12,
36
+ "lg": 12,
37
+ "xl": 12,
30
38
  "style": { "fontSize": 14, "marginBottom": 16, "whiteSpace": "pre-line" }
31
39
  },
32
40
  "_pairingManualHeader": {
@@ -37,7 +45,11 @@
37
45
  "_pairingManualInfo": {
38
46
  "type": "staticText",
39
47
  "text": "pairingManualInfo",
40
- "xs": 12, "sm": 12, "md": 12, "lg": 12, "xl": 12,
48
+ "xs": 12,
49
+ "sm": 12,
50
+ "md": 12,
51
+ "lg": 12,
52
+ "xl": 12,
41
53
  "style": { "fontSize": 14, "marginBottom": 16, "whiteSpace": "pre-line" }
42
54
  },
43
55
  "_headerDevices": {
@@ -48,7 +60,11 @@
48
60
  "_devicesInfo": {
49
61
  "type": "staticText",
50
62
  "text": "devicesInfo",
51
- "xs": 12, "sm": 12, "md": 12, "lg": 12, "xl": 12,
63
+ "xs": 12,
64
+ "sm": 12,
65
+ "md": 12,
66
+ "lg": 12,
67
+ "xl": 12,
52
68
  "style": { "fontSize": 14, "marginBottom": 16, "whiteSpace": "pre-line" }
53
69
  },
54
70
  "_supportHeader": {
@@ -60,7 +76,11 @@
60
76
  "_aboutInfo": {
61
77
  "type": "staticText",
62
78
  "text": "aboutInfo",
63
- "xs": 12, "sm": 12, "md": 12, "lg": 12, "xl": 12,
79
+ "xs": 12,
80
+ "sm": 12,
81
+ "md": 12,
82
+ "lg": 12,
83
+ "xl": 12,
64
84
  "style": { "fontSize": 14, "marginBottom": 16 }
65
85
  },
66
86
  "_kofiLink": {
@@ -70,7 +90,11 @@
70
90
  "button": true,
71
91
  "variant": "outlined",
72
92
  "color": "primary",
73
- "xs": 12, "sm": 6, "md": 4, "lg": 4, "xl": 4
93
+ "xs": 12,
94
+ "sm": 6,
95
+ "md": 4,
96
+ "lg": 4,
97
+ "xl": 4
74
98
  },
75
99
  "_paypalLink": {
76
100
  "type": "staticLink",
@@ -79,7 +103,11 @@
79
103
  "button": true,
80
104
  "variant": "outlined",
81
105
  "color": "primary",
82
- "xs": 12, "sm": 6, "md": 4, "lg": 4, "xl": 4
106
+ "xs": 12,
107
+ "sm": 6,
108
+ "md": 4,
109
+ "lg": 4,
110
+ "xl": 4
83
111
  }
84
112
  }
85
113
  }
package/io-package.json CHANGED
@@ -1,8 +1,34 @@
1
1
  {
2
2
  "common": {
3
3
  "name": "homewizard",
4
- "version": "0.8.0",
4
+ "version": "0.8.2",
5
5
  "news": {
6
+ "0.8.2": {
7
+ "en": "Code quality enforced with standard formatting.",
8
+ "de": "Codequalität durch einheitliche Formatierung sichergestellt.",
9
+ "ru": "Качество кода обеспечено стандартным форматированием.",
10
+ "pt": "Qualidade do código garantida com formatação padrão.",
11
+ "nl": "Codekwaliteit afgedwongen met standaardopmaak.",
12
+ "fr": "Qualité du code assurée avec un formatage standard.",
13
+ "it": "Qualità del codice garantita con formattazione standard.",
14
+ "es": "Calidad del código garantizada con formato estándar.",
15
+ "pl": "Jakość kodu zapewniona przez standardowe formatowanie.",
16
+ "uk": "Якість коду забезпечена стандартним форматуванням.",
17
+ "zh-cn": "通过标准格式化确保代码质量。"
18
+ },
19
+ "0.8.1": {
20
+ "en": "Internal cleanup. No user-facing changes.",
21
+ "de": "Interne Bereinigung. Keine sichtbaren Änderungen.",
22
+ "ru": "Внутренняя очистка. Нет видимых изменений для пользователей.",
23
+ "pt": "Limpeza interna. Sem alterações visíveis para o utilizador.",
24
+ "nl": "Interne opruiming. Geen zichtbare wijzigingen voor gebruikers.",
25
+ "fr": "Nettoyage interne. Aucun changement visible pour l'utilisateur.",
26
+ "it": "Pulizia interna. Nessuna modifica visibile per l'utente.",
27
+ "es": "Limpieza interna. Sin cambios visibles para el usuario.",
28
+ "pl": "Wewnętrzne porządki. Brak widocznych zmian dla użytkownika.",
29
+ "uk": "Внутрішнє прибирання. Без видимих змін для користувача.",
30
+ "zh-cn": "内部清理。无用户可见的更改。"
31
+ },
6
32
  "0.8.0": {
7
33
  "en": "Internal modernization. No user-facing changes.",
8
34
  "de": "Interne Modernisierung. Keine nutzersichtbaren Änderungen.",
@@ -67,32 +93,6 @@
67
93
  "pl": "Stabilność: heartbeat WebSocket wykrywa półmartwe połączenia, limit auth 45 s, odzyskiwanie IP i ponowne parowanie bez wycieków, uszkodzony token nie blokuje już adaptera.",
68
94
  "uk": "Надійність: heartbeat WebSocket бачить напівмертві з'єднання, тайм-аут авторизації 45 с, відновлення IP та повторне сполучення без витоків, поганий токен не блокує адаптер.",
69
95
  "zh-cn": "稳健性:WebSocket 心跳识别半死链接,认证握手 45 秒超时,IP 恢复与重新配对不再泄漏 socket,单个损坏令牌不再阻塞整个适配器。"
70
- },
71
- "0.7.4": {
72
- "en": "Adapter log messages are now English only, in line with the ioBroker community standard. Localized state names, descriptions and dropdown labels (11 languages) remain unchanged.",
73
- "de": "Adapter-Logs sind jetzt nur noch auf Englisch, gemäß ioBroker-Community-Standard. Lokalisierte Datenpunkt-Namen, Beschreibungen und Dropdown-Labels (11 Sprachen) bleiben erhalten.",
74
- "ru": "Сообщения журнала теперь только на английском, согласно стандарту сообщества ioBroker. Локализованные имена состояний, описания и подписи (11 языков) сохраняются.",
75
- "pt": "As mensagens de log do adaptador agora são apenas em inglês, conforme o padrão da comunidade ioBroker. Nomes de estados, descrições e rótulos localizados (11 idiomas) permanecem inalterados.",
76
- "nl": "Adapter-logberichten zijn nu alleen Engels, conform de ioBroker-communitystandaard. Gelokaliseerde statusnamen, beschrijvingen en dropdown-labels (11 talen) blijven ongewijzigd.",
77
- "fr": "Les messages de log de l'adaptateur sont désormais uniquement en anglais, conformément au standard de la communauté ioBroker. Les noms d'états, descriptions et libellés localisés (11 langues) restent inchangés.",
78
- "it": "I messaggi di log dell'adattatore sono ora solo in inglese, secondo lo standard della community ioBroker. I nomi degli stati, descrizioni ed etichette localizzati (11 lingue) rimangono invariati.",
79
- "es": "Los mensajes de registro del adaptador ahora son solo en inglés, conforme al estándar de la comunidad ioBroker. Los nombres de estados, descripciones y etiquetas localizados (11 idiomas) permanecen sin cambios.",
80
- "pl": "Komunikaty dziennika adaptera są teraz wyłącznie po angielsku, zgodnie ze standardem społeczności ioBroker. Zlokalizowane nazwy stanów, opisy i etykiety (11 języków) pozostają bez zmian.",
81
- "uk": "Повідомлення журналу адаптера тепер лише англійською, відповідно до стандарту спільноти ioBroker. Локалізовані назви станів, описи та мітки (11 мов) залишаються без змін.",
82
- "zh-cn": "适配器日志消息现在仅为英文,符合 ioBroker 社区标准。本地化的数据点名称、描述和下拉标签(11 种语言)保持不变。"
83
- },
84
- "0.7.3": {
85
- "en": "Less log spam for devices that stay offline for longer periods. The initial unreachable warning is enough; hourly mDNS recovery attempts and offline-retry status now log at debug level only.",
86
- "de": "Weniger Log-Spam für Geräte mit längerem Ausfall. Der erste Unerreichbarkeits-Warnhinweis reicht; stündliche mDNS-Recovery-Versuche und Offline-Retry-Status erscheinen jetzt nur noch im Debug-Log.",
87
- "ru": "Меньше спама в логе при длительном отсутствии устройства. Первого предупреждения о недоступности достаточно; ежечасные попытки mDNS-восстановления и статусы повторных попыток теперь только в debug.",
88
- "pt": "Menos spam no log quando um dispositivo permanece offline. O aviso inicial de inacessibilidade é suficiente; tentativas horárias de recuperação por mDNS e status de retry passam agora a debug.",
89
- "nl": "Minder log-spam voor apparaten die langer offline blijven. De eerste onbereikbaarheidswaarschuwing volstaat; uurlijkse mDNS-recovery-pogingen en offline-retry-status nu alleen op debug.",
90
- "fr": "Moins de spam dans les logs pour les appareils restant hors-ligne. Le premier avertissement suffit ; les tentatives mDNS horaires et le statut de réessai passent en debug.",
91
- "it": "Meno spam nel log per dispositivi a lungo offline. Il primo avviso di non raggiungibilità è sufficiente; i tentativi orari di recovery mDNS e lo stato di retry passano a debug.",
92
- "es": "Menos spam en el log para dispositivos que permanecen offline mucho tiempo. La advertencia inicial de inalcanzable es suficiente; los intentos horarios de mDNS y el estado de reintentos pasan a debug.",
93
- "pl": "Mniej spamu w logu dla urządzeń długo offline. Pierwsze ostrzeżenie o niedostępności wystarczy; cogodzinne próby odzyskiwania mDNS i status ponawiania trafiają teraz do debug.",
94
- "uk": "Менше спаму в журналі для пристроїв, що тривалий час офлайн. Першого попередження про недоступність достатньо; погодинні спроби mDNS-відновлення та статус повторних спроб тепер у debug.",
95
- "zh-cn": "对长时间离线的设备减少日志噪音。首次「不可达」告警已足够;每小时的 mDNS 恢复尝试与离线重试状态现仅记录在 debug 级别。"
96
96
  }
97
97
  },
98
98
  "titleLang": {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "iobroker.homewizard",
3
- "version": "0.8.0",
3
+ "version": "0.8.2",
4
4
  "description": "ioBroker adapter for HomeWizard Energy devices with API v2",
5
5
  "author": {
6
6
  "name": "krobi",