homebridge-viessmann-vicare 2.0.39 β†’ 2.0.40

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
@@ -1033,6 +1033,18 @@ For issues and questions:
1033
1033
 
1034
1034
  ## πŸ“ˆ Changelog
1035
1035
 
1036
+ ### [2.0.40] - 2026-03-15
1037
+ #### Fixed
1038
+ - **Critical: Accessories not updating after Homebridge restart** β€” when restoring accessories from cache, `device`, `installation`, and `gateway` were not written to `accessory.context`. The update loop silently skipped all accessories on every subsequent restart, showing `0 device(s) fetched, 0/0 accessories updated`. All four restore-from-cache paths (Boiler, DHW, Heating Circuit, Energy/Heat Pump) are now fixed.
1039
+
1040
+ #### Changed
1041
+ - **Full feature dump** β€” moved from `INFO` to `DEBUG` level; only visible when `debug: true` is set in plugin config.
1042
+ - **Capability detail log** β€” resolved HP paths and capability breakdown moved to `DEBUG`; single compact `INFO` line now summarises detected capabilities (e.g. `Capabilities detected: HeatPump`).
1043
+ - **`updateHandler not set` warning** β€” downgraded from `WARN` to `DEBUG`. Per-device spam eliminated; update cycle summary still shows the count when non-zero.
1044
+
1045
+ #### Notes
1046
+ - Users upgrading from ≀ v2.0.38 with a heat pump may see ghost "Heat Pump" accessories in Homebridge cache. Remove via Homebridge UI β†’ Settings β†’ Remove Single Accessory.
1047
+
1036
1048
  ### [2.0.39] - 2026-03-11
1037
1049
  #### Fixed
1038
1050
  - **Critical: Heat pump device detection** β€” `isHeatPumpDevice()` was incorrectly matching ALL Viessmann gen3 devices because `type:E3` is a gen3 architecture marker present on every device (TCU gateway, TRVs, room sensors, repeaters, VitoCharge, HEMS, wallbox, etc.). Detection now requires `type:heatpump` (exact role) or modelId containing `vitocal`. This was causing spurious "Adding new energy accessory: … Heat Pump" log entries for every device.
package/SETUP-GUIDE.md CHANGED
@@ -1,8 +1,8 @@
1
- # Complete Setup Guide - v2.0.39
1
+ # Complete Setup Guide - v2.0.40
2
2
 
3
3
  ## Overview
4
4
 
5
- This guide will walk you through setting up the Viessmann ViCare plugin v2.0.39 for Homebridge, including all the advanced features like intelligent caching, rate limiting protection, comprehensive configuration options, **complete localization support with custom names**, **CSV history logging**, **HTML diagnostic reports**, **energy system monitoring** (PV, battery, wallbox), and **heating schedule awareness** with visual bands in the HTML report, and **heat pump (WΓ€rmepumpe) support** with automatic device detection.
5
+ This guide will walk you through setting up the Viessmann ViCare plugin v2.0.40 for Homebridge, including all the advanced features like intelligent caching, rate limiting protection, comprehensive configuration options, **complete localization support with custom names**, **CSV history logging**, **HTML diagnostic reports**, **energy system monitoring** (PV, battery, wallbox), and **heating schedule awareness** with visual bands in the HTML report, and **heat pump (WΓ€rmepumpe) support** with automatic device detection.
6
6
 
7
7
  ## Prerequisites
8
8
 
@@ -1157,7 +1157,7 @@ When reporting issues, include:
1157
1157
 
1158
1158
  ```json
1159
1159
  {
1160
- "plugin_version": "2.0.39",
1160
+ "plugin_version": "2.0.40",
1161
1161
  "homebridge_version": "1.8.x",
1162
1162
  "node_version": "18.x.x",
1163
1163
  "heating_system": "Viessmann Model",
@@ -1228,6 +1228,14 @@ sudo systemctl restart homebridge
1228
1228
 
1229
1229
  ## Changelog
1230
1230
 
1231
+ ### v2.0.40 (2026-03-15)
1232
+ **Critical bug fix + log noise reduction:**
1233
+ - **Fixed: accessories not updating after restart** β€” all four restore-from-cache paths (Boiler, DHW, HC, Energy) were missing `context.device/installation/gateway` assignment. This caused `updateAllDevices` to skip every accessory silently on every restart after the first, showing `0 device(s) fetched`. Affected all users.
1234
+ - Full feature dump moved to `DEBUG` level (only shown when `debug: true`).
1235
+ - Capability detail and resolved HP paths moved to `DEBUG`; single compact `INFO` line shows detected capabilities.
1236
+ - `updateHandler not set` per-device warning downgraded to `DEBUG`; update cycle summary count retained.
1237
+ - **Note:** Users upgrading from ≀v2.0.38 with a heat pump may have ghost "Heat Pump" accessories in cache β€” remove via Homebridge UI β†’ Settings β†’ Remove Single Accessory.
1238
+
1231
1239
  ### v2.0.39 (2026-03-11)
1232
1240
  **Critical fix** β€” Heat pump device detection overhaul:
1233
1241
  - Fixed `isHeatPumpDevice()`: removed `type:E3` which matched ALL gen3 devices. Now requires `type:heatpump` (exact) or Vitocal modelId.
@@ -1 +1 @@
1
- {"version":3,"file":"energy-accessory.d.ts","sourceRoot":"","sources":["../../src/accessories/energy-accessory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAW,iBAAiB,EAAuB,MAAM,YAAY,CAAC;AAC7E,OAAO,EACL,iBAAiB,EACjB,qBAAqB,EACrB,gBAAgB,EAChB,eAAe,EAChB,MAAM,aAAa,CAAC;AAErB;;;;;;;;;;;;;;;;;GAiBG;AACH,qBAAa,wBAAwB;IAwFjC,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,SAAS;IAC1B,OAAO,CAAC,QAAQ,CAAC,YAAY;IAC7B,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,MAAM;IAxFzB,OAAO,CAAC,kBAAkB,CAAU;IAGpC,OAAO,CAAC,eAAe,CAAC,CAAU;IAClC,OAAO,CAAC,kBAAkB,CAAC,CAAU;IAGrC,OAAO,CAAC,mBAAmB,CAAC,CAAU;IACtC,OAAO,CAAC,eAAe,CAAC,CAAU;IAGlC,OAAO,CAAC,cAAc,CAAC,CAAU;IACjC,OAAO,CAAC,mBAAmB,CAAC,CAAU;IAGtC,OAAO,CAAC,cAAc,CAAC,CAAU;IACjC,OAAO,CAAC,oBAAoB,CAAC,CAAU;IAGvC,OAAO,CAAC,kBAAkB,CAAC,CAAU;IAIrC,OAAO,CAAC,UAAU,CAAc;IAChC,OAAO,CAAC,KAAK,CAAmB;IAChC,OAAO,CAAC,UAAU,CAAc;IAChC,OAAO,CAAC,UAAU,CAAc;IAChC,OAAO,CAAC,cAAc,CAAU;IAIhC,OAAO,CAAC,OAAO,CAOb;IAGF,OAAO,CAAC,MAAM,CAwCZ;gBAGiB,QAAQ,EAAE,iBAAiB,EAC3B,SAAS,EAAE,iBAAiB,EAC5B,YAAY,EAAE,qBAAqB,EACnC,OAAO,EAAE,gBAAgB,EACzB,MAAM,EAAE,eAAe;IAoB1C,OAAO,CAAC,gBAAgB;YAUV,sBAAsB;IAuBpC,OAAO,CAAC,cAAc;IAmCtB,OAAO,CAAC,kBAAkB;IAkD1B;;;;OAIG;IACH,OAAO,CAAC,oBAAoB;IAqD5B,OAAO,CAAC,aAAa;IAoBrB,OAAO,CAAC,qBAAqB;IAwF7B,OAAO,CAAC,eAAe;IAkCvB,OAAO,CAAC,oBAAoB;IAgE5B,OAAO,CAAC,oBAAoB;IAwC5B,OAAO,CAAC,uBAAuB;IAwDlB,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC;YAa5B,kBAAkB;YAalB,cAAc;YA2Hd,mBAAmB;YAuInB,kBAAkB;YAmBlB,oBAAoB;YAmBpB,yBAAyB;CAgBxC"}
1
+ {"version":3,"file":"energy-accessory.d.ts","sourceRoot":"","sources":["../../src/accessories/energy-accessory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAW,iBAAiB,EAAuB,MAAM,YAAY,CAAC;AAC7E,OAAO,EACL,iBAAiB,EACjB,qBAAqB,EACrB,gBAAgB,EAChB,eAAe,EAChB,MAAM,aAAa,CAAC;AAErB;;;;;;;;;;;;;;;;;GAiBG;AACH,qBAAa,wBAAwB;IAwFjC,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,SAAS;IAC1B,OAAO,CAAC,QAAQ,CAAC,YAAY;IAC7B,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,MAAM;IAxFzB,OAAO,CAAC,kBAAkB,CAAU;IAGpC,OAAO,CAAC,eAAe,CAAC,CAAU;IAClC,OAAO,CAAC,kBAAkB,CAAC,CAAU;IAGrC,OAAO,CAAC,mBAAmB,CAAC,CAAU;IACtC,OAAO,CAAC,eAAe,CAAC,CAAU;IAGlC,OAAO,CAAC,cAAc,CAAC,CAAU;IACjC,OAAO,CAAC,mBAAmB,CAAC,CAAU;IAGtC,OAAO,CAAC,cAAc,CAAC,CAAU;IACjC,OAAO,CAAC,oBAAoB,CAAC,CAAU;IAGvC,OAAO,CAAC,kBAAkB,CAAC,CAAU;IAIrC,OAAO,CAAC,UAAU,CAAc;IAChC,OAAO,CAAC,KAAK,CAAmB;IAChC,OAAO,CAAC,UAAU,CAAc;IAChC,OAAO,CAAC,UAAU,CAAc;IAChC,OAAO,CAAC,cAAc,CAAU;IAIhC,OAAO,CAAC,OAAO,CAOb;IAGF,OAAO,CAAC,MAAM,CAwCZ;gBAGiB,QAAQ,EAAE,iBAAiB,EAC3B,SAAS,EAAE,iBAAiB,EAC5B,YAAY,EAAE,qBAAqB,EACnC,OAAO,EAAE,gBAAgB,EACzB,MAAM,EAAE,eAAe;IAoB1C,OAAO,CAAC,gBAAgB;YAUV,sBAAsB;IAuBpC,OAAO,CAAC,cAAc;IAoCtB,OAAO,CAAC,kBAAkB;IAyD1B;;;;OAIG;IACH,OAAO,CAAC,oBAAoB;IAqD5B,OAAO,CAAC,aAAa;IAoBrB,OAAO,CAAC,qBAAqB;IAwF7B,OAAO,CAAC,eAAe;IAkCvB,OAAO,CAAC,oBAAoB;IAgE5B,OAAO,CAAC,oBAAoB;IAwC5B,OAAO,CAAC,uBAAuB;IAwDlB,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC;YAa5B,kBAAkB;YAalB,cAAc;YA2Hd,mBAAmB;YAuInB,kBAAkB;YAmBlB,oBAAoB;YAmBpB,yBAAyB;CAgBxC"}
@@ -134,14 +134,16 @@ class ViessmannEnergyAccessory {
134
134
  this.setupServices();
135
135
  }
136
136
  }
137
- // ── Full feature dump (always logged at INFO) ─────────────────────────────
137
+ // ── Full feature dump (debug only) ────────────────────────────────────────
138
138
  logAllFeatures(features) {
139
+ if (!this.platform.config.debug)
140
+ return;
139
141
  const tag = '[EnergyAccessory]';
140
142
  const deviceLabel = `device=${this.device.id} model=${this.device.modelId ?? '?'} roles=${JSON.stringify(this.device.roles ?? [])}`;
141
- this.platform.log.info(`${tag} ════════════════════════════════════════════════`);
142
- this.platform.log.info(`${tag} FULL FEATURE DUMP β€” ${deviceLabel}`);
143
- this.platform.log.info(`${tag} Total features: ${features.length}`);
144
- this.platform.log.info(`${tag} ────────────────────────────────────────────────`);
143
+ this.platform.log.debug(`${tag} ════════════════════════════════════════════════`);
144
+ this.platform.log.debug(`${tag} FULL FEATURE DUMP β€” ${deviceLabel}`);
145
+ this.platform.log.debug(`${tag} Total features: ${features.length}`);
146
+ this.platform.log.debug(`${tag} ────────────────────────────────────────────────`);
145
147
  // Sort features alphabetically for readability
146
148
  const sorted = [...features].sort((a, b) => a.feature.localeCompare(b.feature));
147
149
  for (const f of sorted) {
@@ -150,13 +152,13 @@ class ViessmannEnergyAccessory {
150
152
  const enabled = f.isEnabled ? 'βœ“' : 'βœ—';
151
153
  const ready = f.isReady ? 'βœ“' : 'βœ—';
152
154
  const propVals = JSON.stringify(f.properties ?? {});
153
- this.platform.log.info(`${tag} [${enabled}${ready}] ${f.feature}`);
154
- this.platform.log.info(`${tag} props=(${propKeys}) values=${propVals.substring(0, 120)}`);
155
+ this.platform.log.debug(`${tag} [${enabled}${ready}] ${f.feature}`);
156
+ this.platform.log.debug(`${tag} props=(${propKeys}) values=${propVals.substring(0, 120)}`);
155
157
  if (cmdKeys !== 'β€”') {
156
- this.platform.log.info(`${tag} commands=(${cmdKeys})`);
158
+ this.platform.log.debug(`${tag} commands=(${cmdKeys})`);
157
159
  }
158
160
  }
159
- this.platform.log.info(`${tag} ════════════════════════════════════════════════`);
161
+ this.platform.log.debug(`${tag} ════════════════════════════════════════════════`);
160
162
  }
161
163
  // ── Capability detection ──────────────────────────────────────────────────
162
164
  detectCapabilities(features) {
@@ -196,12 +198,19 @@ class ViessmannEnergyAccessory {
196
198
  names.some(n => n.startsWith('heating.dhw.pumps.primary')) ||
197
199
  names.some(n => n === 'heating.dhw.operating.modes.electricBoost');
198
200
  }
199
- this.platform.log.info(`${tag} ── Capability result:`);
200
- this.platform.log.info(`${tag} isHeatPump : ${this.isHeatPump}`);
201
- this.platform.log.info(`${tag} PV/Solar : ${this.hasPV}`);
202
- this.platform.log.info(`${tag} Battery : ${this.hasBattery}`);
203
- this.platform.log.info(`${tag} Wallbox/EV : ${this.hasWallbox}`);
204
- this.platform.log.info(`${tag} Electric DHW : ${this.hasElectricDHW}`);
201
+ const caps = [
202
+ this.isHeatPump ? 'HeatPump' : null,
203
+ this.hasPV ? 'PV' : null,
204
+ this.hasBattery ? 'Battery' : null,
205
+ this.hasWallbox ? 'Wallbox' : null,
206
+ this.hasElectricDHW ? 'ElecDHW' : null,
207
+ ].filter(Boolean).join(', ') || 'none';
208
+ this.platform.log.info(`${tag} Capabilities detected: ${caps}`);
209
+ this.platform.log.debug(`${tag} isHeatPump : ${this.isHeatPump}`);
210
+ this.platform.log.debug(`${tag} PV/Solar : ${this.hasPV}`);
211
+ this.platform.log.debug(`${tag} Battery : ${this.hasBattery}`);
212
+ this.platform.log.debug(`${tag} Wallbox/EV : ${this.hasWallbox}`);
213
+ this.platform.log.debug(`${tag} Electric DHW : ${this.hasElectricDHW}`);
205
214
  }
206
215
  /**
207
216
  * Tries multiple known path variants for heat pump features.
@@ -217,10 +226,10 @@ class ViessmannEnergyAccessory {
217
226
  this.hpPaths.supplyTemp = pick('heating.circuits.0.sensors.temperature.supply', 'heating.primaryCircuit.sensors.temperature.supply', 'heating.heatpump.sensors.temperature.flow');
218
227
  this.hpPaths.returnTemp = pick('heating.sensors.temperature.return', 'heating.secondaryCircuit.sensors.temperature.return', 'heating.primaryCircuit.sensors.temperature.return', 'heating.heatpump.sensors.temperature.return', 'heating.circuits.0.sensors.temperature.return');
219
228
  this.hpPaths.cop = pick('heating.scop.heating', 'heating.spf.heating', 'heating.scop.total', 'heating.heatpump.cop', 'heating.compressor.0.cop');
220
- this.platform.log.info(`${tag} Resolved paths:`);
229
+ this.platform.log.debug(`${tag} Resolved paths:`);
221
230
  for (const [key, val] of Object.entries(this.hpPaths)) {
222
- const status = val ? `βœ“ ${val}` : 'βœ— not found (will log raw features above)';
223
- this.platform.log.info(`${tag} ${key.padEnd(18)}: ${status}`);
231
+ const status = val ? `βœ“ ${val}` : 'βœ— not found';
232
+ this.platform.log.debug(`${tag} ${key.padEnd(18)}: ${status}`);
224
233
  }
225
234
  }
226
235
  // ── Service creation ───────────────────────────────────────────────────────
@@ -1 +1 @@
1
- {"version":3,"file":"platform.d.ts","sourceRoot":"","sources":["../src/platform.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,GAAG,EAGH,qBAAqB,EACrB,MAAM,EACN,iBAAiB,EACjB,cAAc,EACd,OAAO,EACP,cAAc,EACf,MAAM,YAAY,CAAC;AAGpB,OAAO,EAAE,YAAY,EAAE,uBAAuB,EAAE,MAAM,iBAAiB,CAAC;AAExE,OAAO,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACrI,OAAO,EAAE,uBAAuB,EAAE,MAAM,iBAAiB,CAAC;AAC1D,OAAO,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,eAAe,EAAgB,MAAM,2BAA2B,CAAC;AAOrI,qBAAa,iBAAkB,YAAW,qBAAqB;aA2B3C,GAAG,EAAE,MAAM;aACX,MAAM,EAAE,uBAAuB,GAAG,cAAc;aAChD,GAAG,EAAE,GAAG;IA5B1B,SAAgB,OAAO,EAAE,OAAO,OAAO,CAAC;IACxC,SAAgB,cAAc,EAAE,OAAO,cAAc,CAAC;IAEtD,SAAgB,WAAW,EAAE,iBAAiB,EAAE,CAAM;IACtD,SAAgB,YAAY,EAAG,YAAY,CAAC;IAC5C,OAAO,CAAC,WAAW,CAAS;IAE5B,OAAO,CAAC,aAAa,CAA+B;IACpD,OAAO,CAAC,YAAY,CAAC,CAAiB;IACtC,OAAO,CAAC,qBAAqB,CAAC,CAAiB;IAC/C,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,iBAAiB,CAAK;IAC9B,OAAO,CAAC,oBAAoB,CAAK;IACjC,OAAO,CAAC,iBAAiB,CAAK;IAG9B,OAAO,CAAC,oBAAoB,CAA0C;IACtE,OAAO,CAAC,iBAAiB,CAMvB;gBAGgB,GAAG,EAAE,MAAM,EACX,MAAM,EAAE,uBAAuB,GAAG,cAAc,EAChD,GAAG,EAAE,GAAG;IAqD1B,OAAO,CAAC,cAAc;IAmCtB,OAAO,CAAC,uBAAuB;YAQjB,wBAAwB;YA8CxB,iCAAiC;YA+CjC,iCAAiC;YAoHjC,8BAA8B;YA2D9B,yCAAyC;IA4BhD,4BAA4B,CACjC,cAAc,EAAE,MAAM,EACtB,aAAa,EAAE,MAAM,EACrB,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,EACd,OAAO,GAAE,MAAkD,GAC1D,IAAI;IAgBP,OAAO,CAAC,yBAAyB;IAW1B,oBAAoB,IAAI;QAC7B,YAAY,EAAE,MAAM,CAAC;QACrB,iBAAiB,EAAE,MAAM,CAAC;QAC1B,aAAa,EAAE,MAAM,CAAC;QACtB,WAAW,EAAE,MAAM,CAAC;QACpB,cAAc,EAAE,MAAM,CAAC;QACvB,cAAc,EAAE,MAAM,CAAC;QACvB,aAAa,EAAE,MAAM,CAAC;KACvB;IAWD,kBAAkB,CAAC,SAAS,EAAE,iBAAiB;IAKzC,eAAe;IAuDrB,OAAO,CAAC,oBAAoB;IA8B5B,OAAO,CAAC,sBAAsB;IAO9B,OAAO,CAAC,iBAAiB;IAiBzB;;OAEG;IACH,OAAO,CAAC,mBAAmB;IA+CrB,sBAAsB,CAAC,YAAY,EAAE,qBAAqB,EAAE,OAAO,EAAE,gBAAgB,EAAE,MAAM,EAAE,eAAe;IAyB9G,oBAAoB,CACxB,YAAY,EAAE,qBAAqB,EACnC,OAAO,EAAE,gBAAgB,EACzB,MAAM,EAAE,eAAe,EACvB,QAAQ,EAAE,gBAAgB,EAAE;IAiCxB,iBAAiB,CACrB,YAAY,EAAE,qBAAqB,EACnC,OAAO,EAAE,gBAAgB,EACzB,MAAM,EAAE,eAAe,EACvB,QAAQ,EAAE,gBAAgB,EAAE;IAgCxB,8BAA8B,CAClC,YAAY,EAAE,qBAAqB,EACnC,OAAO,EAAE,gBAAgB,EACzB,MAAM,EAAE,eAAe,EACvB,QAAQ,EAAE,gBAAgB,EAAE;IAuCxB,oBAAoB,CACxB,YAAY,EAAE,qBAAqB,EACnC,OAAO,EAAE,gBAAgB,EACzB,MAAM,EAAE,eAAe,EACvB,QAAQ,EAAE,gBAAgB,EAAE;IAiExB,gBAAgB;IAuHtB,OAAO,CAAC,mBAAmB;IAqC3B,OAAO,CAAC,qBAAqB;IA2B7B,OAAO,CAAC,KAAK;IAKb,OAAO,CAAC,qBAAqB;IAgB7B,OAAO,CAAC,eAAe;IAiFhB,kBAAkB;;;;;;;;;IAKlB,iBAAiB;;;;;;;;;0BA1qBR,MAAM;+BACD,MAAM;2BACV,MAAM;yBACR,MAAM;4BACH,MAAM;4BACN,MAAM;2BACP,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA2rBxB"}
1
+ {"version":3,"file":"platform.d.ts","sourceRoot":"","sources":["../src/platform.ts"],"names":[],"mappings":"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"}
package/dist/platform.js CHANGED
@@ -523,6 +523,9 @@ class ViessmannPlatform {
523
523
  const existingAccessory = this.accessories.find(accessory => accessory.UUID === uuid);
524
524
  if (existingAccessory) {
525
525
  this.log.info('Restoring existing accessory from cache:', existingAccessory.displayName);
526
+ existingAccessory.context.device = device;
527
+ existingAccessory.context.installation = installation;
528
+ existingAccessory.context.gateway = gateway;
526
529
  new boiler_accessory_1.ViessmannBoilerAccessory(this, existingAccessory, installation, gateway, device);
527
530
  }
528
531
  else {
@@ -548,6 +551,9 @@ class ViessmannPlatform {
548
551
  const existingAccessory = this.accessories.find(accessory => accessory.UUID === uuid);
549
552
  if (existingAccessory) {
550
553
  this.log.info('Restoring existing accessory from cache:', existingAccessory.displayName);
554
+ existingAccessory.context.device = device;
555
+ existingAccessory.context.installation = installation;
556
+ existingAccessory.context.gateway = gateway;
551
557
  new dhw_accessory_1.ViessmannDHWAccessory(this, existingAccessory, installation, gateway, device);
552
558
  }
553
559
  else {
@@ -577,6 +583,9 @@ class ViessmannPlatform {
577
583
  const existingAccessory = this.accessories.find(accessory => accessory.UUID === uuid);
578
584
  if (existingAccessory) {
579
585
  this.log.info('Restoring existing accessory from cache:', existingAccessory.displayName);
586
+ existingAccessory.context.device = device;
587
+ existingAccessory.context.installation = installation;
588
+ existingAccessory.context.gateway = gateway;
580
589
  new heating_circuit_accessory_1.ViessmannHeatingCircuitAccessory(this, existingAccessory, installation, gateway, device, circuitNumber);
581
590
  }
582
591
  else {
@@ -628,6 +637,9 @@ class ViessmannPlatform {
628
637
  const existingAccessory = this.accessories.find(a => a.UUID === uuid);
629
638
  if (existingAccessory) {
630
639
  this.log.info('Restoring existing energy accessory from cache:', existingAccessory.displayName);
640
+ existingAccessory.context.device = device;
641
+ existingAccessory.context.installation = installation;
642
+ existingAccessory.context.gateway = gateway;
631
643
  new energy_accessory_1.ViessmannEnergyAccessory(this, existingAccessory, installation, gateway, device);
632
644
  }
633
645
  else {
@@ -714,7 +726,7 @@ class ViessmannPlatform {
714
726
  }
715
727
  else {
716
728
  handlersSkipped++;
717
- this.log.warn(`⚠️ "${accessory.displayName}" β€” updateHandler not set (accessory still initializing?)`);
729
+ this.log.debug(`βš™οΈ "${accessory.displayName}" β€” updateHandler not set, skipping`);
718
730
  }
719
731
  }
720
732
  catch (error) {
@@ -9,7 +9,7 @@ export declare const PLUGIN_NAME = "homebridge-viessmann-vicare";
9
9
  /**
10
10
  * Plugin version for User-Agent and logging
11
11
  */
12
- export declare const PLUGIN_VERSION = "2.0.39";
12
+ export declare const PLUGIN_VERSION = "2.0.40";
13
13
  /**
14
14
  * Default configuration values
15
15
  */
package/dist/settings.js CHANGED
@@ -12,7 +12,7 @@ exports.PLUGIN_NAME = 'homebridge-viessmann-vicare';
12
12
  /**
13
13
  * Plugin version for User-Agent and logging
14
14
  */
15
- exports.PLUGIN_VERSION = '2.0.39';
15
+ exports.PLUGIN_VERSION = '2.0.40';
16
16
  /**
17
17
  * Default configuration values
18
18
  */
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "homebridge-viessmann-vicare",
3
- "version": "2.0.39",
3
+ "version": "2.0.40",
4
4
  "description": "Complete Homebridge plugin for Viessmann ViCare heating systems with full control capabilities, advanced rate limiting protection, and intelligent cache management",
5
5
  "main": "dist/index.js",
6
6
  "scripts": {
@@ -59,4 +59,4 @@
59
59
  "optionalDependencies": {
60
60
  "fakegato-history": "^0.6.7"
61
61
  }
62
- }
62
+ }