homebridge-viessmann-vicare 2.0.6 → 2.0.8

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
@@ -142,7 +142,7 @@ src/
142
142
  **API Errors** → Debug `viessmann-api-endpoints.ts` parsing
143
143
  **Network Issues** → Examine `network-utils.ts` detection
144
144
 
145
- For detailed architecture documentation, see [ARCHITECTURE.md](ARCHITECTURE.md).
145
+ For detailed architecture documentation, see the [Plugin Architecture](#%EF%B8%8F-plugin-architecture-v20) section above.
146
146
 
147
147
  ## 🆕 What's New in v2.0
148
148
 
@@ -263,7 +263,7 @@ npm install -g homebridge-viessmann-vicare
263
263
  "maxDelay": 300000,
264
264
  "maxConsecutiveErrors": 5,
265
265
  "deviceUpdateDelay": 1000,
266
- "userAgent": "homebridge-viessmann-vicare/2.0.4"
266
+ "userAgent": "homebridge-viessmann-vicare/2.0.8"
267
267
  },
268
268
  "debug": false
269
269
  }
@@ -810,7 +810,7 @@ Contributions are welcome! Please:
810
810
  ## 📋 Compatibility
811
811
 
812
812
  - **Homebridge**: >= 1.8.0 or >= 2.0.0-beta.0
813
- - **Node.js**: >= 18.15.0
813
+ - **Node.js**: >= 20.0.0
814
814
  - **Viessmann API**: v1 and v2
815
815
  - **iOS**: All HomeKit-supported devices
816
816
  - **Languages**: All languages supported via custom names
@@ -841,6 +841,27 @@ For issues and questions:
841
841
 
842
842
  ## 📈 Changelog
843
843
 
844
+ ### [2.0.8] - 2026-02-26
845
+ **Fixed**
846
+ - 🐛 Token storage now uses `api.user.storagePath()` (Homebridge storage directory) instead of `process.cwd()`, as required by Homebridge plugin verification guidelines.
847
+ - 🐛 Early config validation in `ViessmannPlatform` constructor: plugin exits cleanly if `clientId` or `username` are missing, instead of crashing on first API call.
848
+ **Changed**
849
+ - 🔧 `PLUGIN_VERSION` updated to `2.0.8` in `settings.ts` (User-Agent and logs now reflect the correct version).
850
+ - 🔧 `ViessmannAPI` constructor now accepts optional `storagePath` parameter passed from Homebridge.
851
+ - 🔧 `AuthManager` constructor accepts optional `storagePath` parameter (fallback to `.homebridge` in cwd for backward compatibility).
852
+
853
+ ### [2.0.7] - 2025-10-07
854
+ **Fixed**
855
+ - 🐛 Minor stability improvements and internal code cleanup.
856
+
857
+ ### [2.0.6] - 2025-10-07
858
+ **Fixed**
859
+ - 🐛 Improved error handling for edge cases in token refresh flow.
860
+
861
+ ### [2.0.5] - 2025-10-07
862
+ **Fixed**
863
+ - 🐛 Additional resilience improvements for authentication on headless systems.
864
+
844
865
  ### [2.0.4] - 2025-10-06
845
866
  **Added**
846
867
  - ✨ `logEnvDiagnostics()` for better detection of graphical environment (X11, Wayland, systemd, headless).
@@ -1 +1 @@
1
- {"version":3,"file":"boiler-accessory.d.ts","sourceRoot":"","sources":["../../src/accessories/boiler-accessory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAW,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAC7E,OAAO,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,eAAe,EAA2B,MAAM,aAAa,CAAC;AAEnI,qBAAa,wBAAwB;IA2CjC,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;IA9CzB,OAAO,CAAC,mBAAmB,CAAU;IACrC,OAAO,CAAC,kBAAkB,CAAU;IACpC,OAAO,CAAC,iBAAiB,CAAC,CAAU;IACpC,OAAO,CAAC,aAAa,CAAC,CAAU;IAGhC,OAAO,CAAC,yBAAyB,CAAC,CAAU;IAC5C,OAAO,CAAC,qBAAqB,CAAC,CAAU;IACxC,OAAO,CAAC,uBAAuB,CAAC,CAAU;IAC1C,OAAO,CAAC,uBAAuB,CAAC,CAAU;IAC1C,OAAO,CAAC,qBAAqB,CAAC,CAAU;IACxC,OAAO,CAAC,uBAAuB,CAAC,CAAU;IAC1C,OAAO,CAAC,oBAAoB,CAAC,CAAU;IAEvC,OAAO,CAAC,0BAA0B,CAAS;IAC3C,OAAO,CAAC,sBAAsB,CAAwB;IACtD,OAAO,CAAC,kBAAkB,CAAS;IACnC,OAAO,CAAC,iBAAiB,CAAK;IAE9B,OAAO,CAAC,MAAM,CAoBZ;gBAGiB,QAAQ,EAAE,iBAAiB,EAC3B,SAAS,EAAE,iBAAiB,EAC5B,YAAY,EAAE,qBAAqB,EACnC,OAAO,EAAE,gBAAgB,EACzB,MAAM,EAAE,eAAe;YAuB5B,sBAAsB;IAmBpC,OAAO,CAAC,mBAAmB;IA2E3B,OAAO,CAAC,oBAAoB;IAiB5B,OAAO,CAAC,yBAAyB;IAoBjC,OAAO,CAAC,wBAAwB;IAoEhC,OAAO,CAAC,kBAAkB;IAwD1B,OAAO,CAAC,sBAAsB;IAyE9B,OAAO,CAAC,uBAAuB;IAmO/B,OAAO,CAAC,gCAAgC;IAqCxC,OAAO,CAAC,2BAA2B;IAInC,OAAO,CAAC,iBAAiB;IAIzB,OAAO,CAAC,mBAAmB;IAI3B,OAAO,CAAC,gBAAgB;IAIlB,qBAAqB,IAAI,OAAO,CAAC,mBAAmB,CAAC;IAIrD,8BAA8B,IAAI,OAAO,CAAC,mBAAmB,CAAC;IAI9D,8BAA8B,CAAC,KAAK,EAAE,mBAAmB;YAoCjD,YAAY;YAQZ,kBAAkB;IA+SzB,oBAAoB,IAAI;QAC7B,WAAW,EAAE,MAAM,CAAC;QACpB,YAAY,EAAE,MAAM,CAAC;QACrB,aAAa,EAAE,MAAM,CAAC;QACtB,UAAU,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC;QACxC,mBAAmB,EAAE,MAAM,CAAC;QAC5B,sBAAsB,EAAE,MAAM,CAAC;QAC/B,qBAAqB,EAAE,MAAM,CAAC;QAC9B,wBAAwB,EAAE,MAAM,CAAC;QACjC,kBAAkB,EAAE,MAAM,CAAC;QAC3B,aAAa,EAAE,MAAM,CAAC;QACtB,YAAY,EAAE,MAAM,CAAC;KACtB;CAsBF"}
1
+ {"version":3,"file":"boiler-accessory.d.ts","sourceRoot":"","sources":["../../src/accessories/boiler-accessory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAW,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAC7E,OAAO,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,eAAe,EAA2B,MAAM,aAAa,CAAC;AAEnI,qBAAa,wBAAwB;IA2CjC,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;IA9CzB,OAAO,CAAC,mBAAmB,CAAU;IACrC,OAAO,CAAC,kBAAkB,CAAU;IACpC,OAAO,CAAC,iBAAiB,CAAC,CAAU;IACpC,OAAO,CAAC,aAAa,CAAC,CAAU;IAGhC,OAAO,CAAC,yBAAyB,CAAC,CAAU;IAC5C,OAAO,CAAC,qBAAqB,CAAC,CAAU;IACxC,OAAO,CAAC,uBAAuB,CAAC,CAAU;IAC1C,OAAO,CAAC,uBAAuB,CAAC,CAAU;IAC1C,OAAO,CAAC,qBAAqB,CAAC,CAAU;IACxC,OAAO,CAAC,uBAAuB,CAAC,CAAU;IAC1C,OAAO,CAAC,oBAAoB,CAAC,CAAU;IAEvC,OAAO,CAAC,0BAA0B,CAAS;IAC3C,OAAO,CAAC,sBAAsB,CAAwB;IACtD,OAAO,CAAC,kBAAkB,CAAS;IACnC,OAAO,CAAC,iBAAiB,CAAK;IAE9B,OAAO,CAAC,MAAM,CAoBZ;gBAGiB,QAAQ,EAAE,iBAAiB,EAC3B,SAAS,EAAE,iBAAiB,EAC5B,YAAY,EAAE,qBAAqB,EACnC,OAAO,EAAE,gBAAgB,EACzB,MAAM,EAAE,eAAe;YAuB5B,sBAAsB;IAmBpC,OAAO,CAAC,mBAAmB;IA2E3B,OAAO,CAAC,oBAAoB;IAiB5B,OAAO,CAAC,yBAAyB;IAoBjC,OAAO,CAAC,wBAAwB;IAoEhC,OAAO,CAAC,kBAAkB;IAwD1B,OAAO,CAAC,sBAAsB;IAyE9B,OAAO,CAAC,uBAAuB;IAmO/B,OAAO,CAAC,gCAAgC;IAqCxC,OAAO,CAAC,2BAA2B;IAInC,OAAO,CAAC,iBAAiB;IAIzB,OAAO,CAAC,mBAAmB;IAI3B,OAAO,CAAC,gBAAgB;IAIlB,qBAAqB,IAAI,OAAO,CAAC,mBAAmB,CAAC;IAIrD,8BAA8B,IAAI,OAAO,CAAC,mBAAmB,CAAC;IAI9D,8BAA8B,CAAC,KAAK,EAAE,mBAAmB;YAoCjD,YAAY;YAYZ,kBAAkB;IAoTzB,oBAAoB,IAAI;QAC7B,WAAW,EAAE,MAAM,CAAC;QACpB,YAAY,EAAE,MAAM,CAAC;QACrB,aAAa,EAAE,MAAM,CAAC;QACtB,UAAU,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC;QACxC,mBAAmB,EAAE,MAAM,CAAC;QAC5B,sBAAsB,EAAE,MAAM,CAAC;QAC/B,qBAAqB,EAAE,MAAM,CAAC;QAC9B,wBAAwB,EAAE,MAAM,CAAC;QACjC,kBAAkB,EAAE,MAAM,CAAC;QAC3B,aAAa,EAAE,MAAM,CAAC;QACtB,YAAY,EAAE,MAAM,CAAC;KACtB;CAsBF"}
@@ -562,11 +562,15 @@ class ViessmannBoilerAccessory {
562
562
  }
563
563
  }
564
564
  async handleUpdate(features) {
565
+ const t0 = Date.now();
565
566
  try {
566
567
  await this.updateFromFeatures(features);
568
+ this.platform.log.debug(`🔥 Caldaia handleUpdate OK in ${Date.now() - t0}ms`);
567
569
  }
568
570
  catch (error) {
569
- this.platform.log.error('Error handling boiler update:', error);
571
+ const msg = error instanceof Error ? error.message : String(error);
572
+ this.platform.log.error(`❌ Caldaia handleUpdate failed after ${Date.now() - t0}ms: ${msg}`);
573
+ this.platform.log.error(` State at failure: burner=${this.states.BurnerActive}, temp=${this.states.CurrentTemperature}°C, mod=${this.states.Modulation}%`);
570
574
  }
571
575
  }
572
576
  async updateFromFeatures(features) {
@@ -798,8 +802,15 @@ class ViessmannBoilerAccessory {
798
802
  const efficiency = parseFloat(startsPerHour) < 2 ? 'Good' : 'Poor';
799
803
  diagnosticInfo.push(`Efficiency: ${startsPerHour}starts/h(${efficiency})`);
800
804
  }
801
- const diagnosticStr = diagnosticInfo.length > 0 ? `, ${diagnosticInfo.join(', ')}` : '';
802
- this.platform.log.debug(`Boiler Status - Temp: ${this.states.CurrentTemperature}°C ${this.states.HeatingThresholdTemperature}°C, Burner: ${this.states.BurnerActive ? 'ON' : 'OFF'}, Modulation: ${this.states.Modulation}%${diagnosticStr}`);
805
+ const diagnosticStr = diagnosticInfo.length > 0 ? ` | ${diagnosticInfo.join(' | ')}` : '';
806
+ // Log sempre a debug; se il bruciatore è attivo logga anche a info per visibilità
807
+ const statusLine = `🔥 Caldaia — burner=${this.states.BurnerActive ? 'ON 🔥' : 'OFF'} | mod=${this.states.Modulation}% | temp=${this.states.CurrentTemperature}°C→${this.states.HeatingThresholdTemperature}°C${diagnosticStr}`;
808
+ if (this.states.BurnerActive) {
809
+ this.platform.log.info(statusLine);
810
+ }
811
+ else {
812
+ this.platform.log.debug(statusLine);
813
+ }
803
814
  }
804
815
  // 🆕 NEW: Public method to get diagnostic summary for platform health reports
805
816
  getDiagnosticSummary() {
@@ -1 +1 @@
1
- {"version":3,"file":"dhw-accessory.d.ts","sourceRoot":"","sources":["../../src/accessories/dhw-accessory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAW,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAC7E,OAAO,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,eAAe,EAA2B,MAAM,aAAa,CAAC;AAGnI,qBAAa,qBAAqB;IAsB9B,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;IAzBzB,OAAO,CAAC,mBAAmB,CAAU;IACrC,OAAO,CAAC,kBAAkB,CAAU;IACpC,OAAO,CAAC,cAAc,CAAC,CAAU;IACjC,OAAO,CAAC,UAAU,CAAC,CAAU;IAC7B,OAAO,CAAC,UAAU,CAAC,CAAU;IAE7B,OAAO,CAAC,cAAc,CAAgB;IACtC,OAAO,CAAC,0BAA0B,CAAS;IAC3C,OAAO,CAAC,sBAAsB,CAAwB;IACtD,OAAO,CAAC,WAAW,CAAS;IAE5B,OAAO,CAAC,MAAM,CAOZ;gBAGiB,QAAQ,EAAE,iBAAiB,EAC3B,SAAS,EAAE,iBAAiB,EAC5B,YAAY,EAAE,qBAAqB,EACnC,OAAO,EAAE,gBAAgB,EACzB,MAAM,EAAE,eAAe;YAuB5B,sBAAsB;IAmBpC,OAAO,CAAC,mBAAmB;IAmE7B,OAAO,CAAC,oBAAoB;IAW1B,OAAO,CAAC,yBAAyB;IAqBjC,OAAO,CAAC,wBAAwB;IAsFhC,OAAO,CAAC,iBAAiB;IAgGzB,OAAO,CAAC,qBAAqB;IAqBzB,SAAS,CAAC,KAAK,EAAE,mBAAmB;IAoBlC,cAAc,CAAC,KAAK,EAAE,mBAAmB;IAsBzC,UAAU,CAAC,KAAK,EAAE,mBAAmB;IAsBrC,UAAU,CAAC,KAAK,EAAE,mBAAmB;YAsB7B,OAAO;IA0CrB,OAAO,CAAC,wBAAwB;YA8BlB,iBAAiB;IAqBzB,qBAAqB,IAAI,OAAO,CAAC,mBAAmB,CAAC;IAIrD,8BAA8B,IAAI,OAAO,CAAC,mBAAmB,CAAC;IAK9D,8BAA8B,CAAC,KAAK,EAAE,mBAAmB;YA8CjD,YAAY;YAQZ,kBAAkB;IAqCzB,2BAA2B,CAAC,YAAY,EAAE,GAAG,GAAG,IAAI;IA2DpD,kBAAkB,IAAI;QAC3B,cAAc,EAAE,MAAM,EAAE,CAAC;QACzB,0BAA0B,EAAE,OAAO,CAAC;QACpC,gBAAgB,EAAE;YAAE,GAAG,EAAE,MAAM,CAAC;YAAC,GAAG,EAAE,MAAM,CAAA;SAAE,CAAC;QAC/C,WAAW,EAAE,MAAM,CAAC;QACpB,cAAc,EAAE,OAAO,CAAC;QACxB,UAAU,EAAE,OAAO,CAAC;QACpB,UAAU,EAAE,OAAO,CAAC;KACrB;IAaM,YAAY,IAAI;QACrB,QAAQ,EAAE,OAAO,CAAC;QAClB,WAAW,EAAE,MAAM,CAAC;QACpB,kBAAkB,EAAE,MAAM,CAAC;QAC3B,iBAAiB,EAAE,MAAM,CAAC;QAC1B,kBAAkB,EAAE,OAAO,CAAC;QAC5B,cAAc,EAAE,MAAM,CAAC;QACvB,cAAc,CAAC,EAAE,MAAM,CAAC;KACzB;IAgBY,aAAa,IAAI,OAAO,CAAC,OAAO,CAAC;IA+B9C,OAAO,CAAC,8BAA8B;IAwBzB,cAAc,IAAI,OAAO,CAAC,OAAO,CAAC;IA4BxC,OAAO,IAAI,IAAI;CASvB"}
1
+ {"version":3,"file":"dhw-accessory.d.ts","sourceRoot":"","sources":["../../src/accessories/dhw-accessory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAW,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAC7E,OAAO,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,eAAe,EAA2B,MAAM,aAAa,CAAC;AAGnI,qBAAa,qBAAqB;IAsB9B,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;IAzBzB,OAAO,CAAC,mBAAmB,CAAU;IACrC,OAAO,CAAC,kBAAkB,CAAU;IACpC,OAAO,CAAC,cAAc,CAAC,CAAU;IACjC,OAAO,CAAC,UAAU,CAAC,CAAU;IAC7B,OAAO,CAAC,UAAU,CAAC,CAAU;IAE7B,OAAO,CAAC,cAAc,CAAgB;IACtC,OAAO,CAAC,0BAA0B,CAAS;IAC3C,OAAO,CAAC,sBAAsB,CAAwB;IACtD,OAAO,CAAC,WAAW,CAAS;IAE5B,OAAO,CAAC,MAAM,CAOZ;gBAGiB,QAAQ,EAAE,iBAAiB,EAC3B,SAAS,EAAE,iBAAiB,EAC5B,YAAY,EAAE,qBAAqB,EACnC,OAAO,EAAE,gBAAgB,EACzB,MAAM,EAAE,eAAe;YAuB5B,sBAAsB;IAmBpC,OAAO,CAAC,mBAAmB;IAmE7B,OAAO,CAAC,oBAAoB;IAW1B,OAAO,CAAC,yBAAyB;IAqBjC,OAAO,CAAC,wBAAwB;IAsFhC,OAAO,CAAC,iBAAiB;IAgGzB,OAAO,CAAC,qBAAqB;IAqBzB,SAAS,CAAC,KAAK,EAAE,mBAAmB;IAoBlC,cAAc,CAAC,KAAK,EAAE,mBAAmB;IAsBzC,UAAU,CAAC,KAAK,EAAE,mBAAmB;IAsBrC,UAAU,CAAC,KAAK,EAAE,mBAAmB;YAsB7B,OAAO;IA0CrB,OAAO,CAAC,wBAAwB;YA8BlB,iBAAiB;IAqBzB,qBAAqB,IAAI,OAAO,CAAC,mBAAmB,CAAC;IAIrD,8BAA8B,IAAI,OAAO,CAAC,mBAAmB,CAAC;IAK9D,8BAA8B,CAAC,KAAK,EAAE,mBAAmB;YA8CjD,YAAY;YAcZ,kBAAkB;IA+DzB,2BAA2B,CAAC,YAAY,EAAE,GAAG,GAAG,IAAI;IA2DpD,kBAAkB,IAAI;QAC3B,cAAc,EAAE,MAAM,EAAE,CAAC;QACzB,0BAA0B,EAAE,OAAO,CAAC;QACpC,gBAAgB,EAAE;YAAE,GAAG,EAAE,MAAM,CAAC;YAAC,GAAG,EAAE,MAAM,CAAA;SAAE,CAAC;QAC/C,WAAW,EAAE,MAAM,CAAC;QACpB,cAAc,EAAE,OAAO,CAAC;QACxB,UAAU,EAAE,OAAO,CAAC;QACpB,UAAU,EAAE,OAAO,CAAC;KACrB;IAaM,YAAY,IAAI;QACrB,QAAQ,EAAE,OAAO,CAAC;QAClB,WAAW,EAAE,MAAM,CAAC;QACpB,kBAAkB,EAAE,MAAM,CAAC;QAC3B,iBAAiB,EAAE,MAAM,CAAC;QAC1B,kBAAkB,EAAE,OAAO,CAAC;QAC5B,cAAc,EAAE,MAAM,CAAC;QACvB,cAAc,CAAC,EAAE,MAAM,CAAC;KACzB;IAgBY,aAAa,IAAI,OAAO,CAAC,OAAO,CAAC;IA+B9C,OAAO,CAAC,8BAA8B;IAwBzB,cAAc,IAAI,OAAO,CAAC,OAAO,CAAC;IA4BxC,OAAO,IAAI,IAAI;CASvB"}
@@ -495,42 +495,78 @@ class ViessmannDHWAccessory {
495
495
  }
496
496
  }
497
497
  async handleUpdate(features) {
498
+ // FIX#6: log entry/exit with timing so stale states are immediately visible in logs
499
+ const t0 = Date.now();
498
500
  try {
499
501
  await this.updateFromFeatures(features);
502
+ this.platform.log.debug(`🚿 ACS handleUpdate OK in ${Date.now() - t0}ms`);
500
503
  }
501
504
  catch (error) {
502
- this.platform.log.error('Error handling DHW update:', error);
505
+ // FIX#6: was silently swallowing errors — now logs full context so stale state is diagnosable
506
+ const msg = error instanceof Error ? error.message : String(error);
507
+ this.platform.log.error(`❌ ACS handleUpdate failed after ${Date.now() - t0}ms: ${msg}`);
508
+ this.platform.log.error(` State at failure: mode=${this.currentMode}, temp=${this.states.CurrentTemperature}°C, target=${this.states.HeatingThresholdTemperature}°C`);
503
509
  }
504
510
  }
505
511
  async updateFromFeatures(features) {
512
+ let changed = false;
506
513
  // Update DHW current temperature
507
514
  const dhwTempFeature = features.find(f => f.feature === 'heating.dhw.sensors.temperature.dhwCylinder' ||
508
515
  f.feature === 'heating.dhw.sensors.temperature.hotWaterStorage' ||
509
516
  f.feature === 'heating.dhw.sensors.temperature.outlet');
510
517
  if (dhwTempFeature?.properties?.value?.value !== undefined) {
511
- this.states.CurrentTemperature = dhwTempFeature.properties.value.value;
518
+ const newTemp = dhwTempFeature.properties.value.value;
519
+ if (newTemp !== this.states.CurrentTemperature) {
520
+ this.platform.log.debug(`🌡️ ACS current temp: ${this.states.CurrentTemperature}°C → ${newTemp}°C`);
521
+ this.states.CurrentTemperature = newTemp;
522
+ changed = true;
523
+ }
512
524
  this.heaterCoolerService.updateCharacteristic(this.platform.Characteristic.CurrentTemperature, this.states.CurrentTemperature);
513
525
  }
526
+ else {
527
+ this.platform.log.debug(`🌡️ ACS current temp: no sensor feature found (checked dhwCylinder/hotWaterStorage/outlet)`);
528
+ }
514
529
  // Update DHW target temperature
515
530
  const dhwTargetTempFeature = features.find(f => f.feature === 'heating.dhw.temperature.main');
516
531
  if (dhwTargetTempFeature?.properties?.value?.value !== undefined && this.supportsTemperatureControl) {
517
532
  const targetTemp = dhwTargetTempFeature.properties.value.value;
518
533
  if (targetTemp >= this.temperatureConstraints.min && targetTemp <= this.temperatureConstraints.max) {
519
- this.states.HeatingThresholdTemperature = targetTemp;
534
+ if (targetTemp !== this.states.HeatingThresholdTemperature) {
535
+ this.platform.log.debug(`🎯 ACS target temp: ${this.states.HeatingThresholdTemperature}°C → ${targetTemp}°C`);
536
+ this.states.HeatingThresholdTemperature = targetTemp;
537
+ changed = true;
538
+ }
520
539
  this.heaterCoolerService.updateCharacteristic(this.platform.Characteristic.HeatingThresholdTemperature, targetTemp);
521
540
  }
541
+ else {
542
+ this.platform.log.warn(`🎯 ACS target temp ${targetTemp}°C out of range ${this.temperatureConstraints.min}-${this.temperatureConstraints.max}°C — ignored`);
543
+ }
522
544
  }
523
- // Update DHW operating mode
545
+ // Update DHW operating mode — THE MOST CRITICAL UPDATE
524
546
  const dhwOperatingModeFeature = features.find(f => f.feature === 'heating.dhw.operating.modes.active');
525
547
  if (dhwOperatingModeFeature?.properties?.value?.value !== undefined) {
526
548
  const newMode = dhwOperatingModeFeature.properties.value.value;
527
549
  if (newMode !== this.currentMode) {
528
- this.platform.log.debug(`DHW mode updated: ${this.currentMode.toUpperCase()} → ${newMode.toUpperCase()}`);
550
+ this.platform.log.info(`🚿 ACS mode changed: ${this.currentMode.toUpperCase()} → ${newMode.toUpperCase()}`);
529
551
  this.currentMode = newMode;
530
552
  this.updateAllCharacteristics();
553
+ changed = true;
531
554
  }
555
+ else {
556
+ this.platform.log.debug(`🚿 ACS mode unchanged: ${this.currentMode.toUpperCase()}`);
557
+ }
558
+ }
559
+ else {
560
+ this.platform.log.warn(`🚿 ACS mode: feature 'heating.dhw.operating.modes.active' not found in ${features.length} features — state NOT updated`);
561
+ }
562
+ // Summary log — always visible at debug, visible at info only when something changed
563
+ const summary = `mode=${this.currentMode.toUpperCase()} | temp=${this.states.CurrentTemperature}°C | target=${this.states.HeatingThresholdTemperature}°C`;
564
+ if (changed) {
565
+ this.platform.log.info(`🚿 ACS state updated: ${summary}`);
566
+ }
567
+ else {
568
+ this.platform.log.debug(`🚿 ACS state unchanged: ${summary}`);
532
569
  }
533
- this.platform.log.debug(`DHW Status - Mode: ${this.currentMode.toUpperCase()}, Temp: ${this.states.CurrentTemperature}°C → ${this.states.HeatingThresholdTemperature}°C`);
534
570
  }
535
571
  // 🆕 NEW: Handle immediate burner status updates from platform
536
572
  handleImmediateBurnerUpdate(burnerStatus) {
@@ -1 +1 @@
1
- {"version":3,"file":"heating-circuit-accessory.d.ts","sourceRoot":"","sources":["../../src/accessories/heating-circuit-accessory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAW,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAC7E,OAAO,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,eAAe,EAA2B,MAAM,aAAa,CAAC;AAInI,qBAAa,gCAAgC;IA8CzC,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;IACvB,OAAO,CAAC,QAAQ,CAAC,aAAa;IAlDhC,OAAO,CAAC,mBAAmB,CAAU;IACrC,OAAO,CAAC,kBAAkB,CAAU;IAGpC,OAAO,CAAC,cAAc,CAAC,CAAU;IACjC,OAAO,CAAC,oBAAoB,CAAC,CAAU;IACvC,OAAO,CAAC,sBAAsB,CAAC,CAAU;IAGzC,OAAO,CAAC,cAAc,CAAC,CAAU;IACjC,OAAO,CAAC,cAAc,CAAC,CAAU;IACjC,OAAO,CAAC,cAAc,CAAC,CAAU;IAEjC,OAAO,CAAC,cAAc,CAAgB;IACtC,OAAO,CAAC,iBAAiB,CAAgB;IACzC,OAAO,CAAC,wBAAwB,CAAgB;IAChD,OAAO,CAAC,0BAA0B,CAAS;IAC3C,OAAO,CAAC,sBAAsB,CAAuB;IACrD,OAAO,CAAC,gBAAgB,CAAS;IACjC,OAAO,CAAC,WAAW,CAAa;IAChC,OAAO,CAAC,cAAc,CAAY;IAElC,OAAO,CAAC,MAAM,CAaZ;IAGF,OAAO,CAAC,mBAAmB,CAIzB;gBAGiB,QAAQ,EAAE,iBAAiB,EAC3B,SAAS,EAAE,iBAAiB,EAC5B,YAAY,EAAE,qBAAqB,EACnC,OAAO,EAAE,gBAAgB,EACzB,MAAM,EAAE,eAAe,EACvB,aAAa,EAAE,MAAM;YAuB1B,sBAAsB;IAyBpC,OAAO,CAAC,mBAAmB;IAuJ3B,OAAO,CAAC,oBAAoB;IAoB5B,OAAO,CAAC,yBAAyB;IAqBjC,OAAO,CAAC,wBAAwB;IA4DlC,OAAO,CAAC,+BAA+B;IA8FrC,OAAO,CAAC,2BAA2B;IAqFnC,OAAO,CAAC,mCAAmC;IA0B3C,OAAO,CAAC,+BAA+B;YA2BzB,iBAAiB;YAejB,gBAAgB;YAehB,iBAAiB;YAejB,wBAAwB;IA2CtC,OAAO,CAAC,gCAAgC;IAqBlC,SAAS,CAAC,KAAK,EAAE,mBAAmB;IAgBpC,0BAA0B,CAAC,KAAK,EAAE,mBAAmB;YAa7C,cAAc;YA+Dd,oBAAoB;YA4DpB,sBAAsB;YAqGtB,6BAA6B;YAsH7B,qBAAqB;IAsBnC,OAAO,CAAC,4BAA4B;IAyCpC,OAAO,CAAC,2BAA2B;IAMnC;;OAEG;YACW,oCAAoC;IAiDlD;;OAEG;YACW,6BAA6B;IAyB3C;;OAEG;YACW,+BAA+B;IAsB7C;;OAEG;IACH,OAAO,CAAC,+BAA+B;YAyBzB,OAAO;IAqCrB,OAAO,CAAC,wBAAwB;IAa1B,qBAAqB,IAAI,OAAO,CAAC,mBAAmB,CAAC;IAIrD,8BAA8B,IAAI,OAAO,CAAC,mBAAmB,CAAC;IAI9D,8BAA8B,CAAC,KAAK,EAAE,mBAAmB;IAgD/D,OAAO,CAAC,kBAAkB;IA4BpB,0BAA0B,IAAI,OAAO,CAAC,mBAAmB,CAAC;YAIlD,YAAY;YAQZ,kBAAkB;CA6IjC"}
1
+ {"version":3,"file":"heating-circuit-accessory.d.ts","sourceRoot":"","sources":["../../src/accessories/heating-circuit-accessory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAW,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAC7E,OAAO,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,eAAe,EAA2B,MAAM,aAAa,CAAC;AAInI,qBAAa,gCAAgC;IA8CzC,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;IACvB,OAAO,CAAC,QAAQ,CAAC,aAAa;IAlDhC,OAAO,CAAC,mBAAmB,CAAU;IACrC,OAAO,CAAC,kBAAkB,CAAU;IAGpC,OAAO,CAAC,cAAc,CAAC,CAAU;IACjC,OAAO,CAAC,oBAAoB,CAAC,CAAU;IACvC,OAAO,CAAC,sBAAsB,CAAC,CAAU;IAGzC,OAAO,CAAC,cAAc,CAAC,CAAU;IACjC,OAAO,CAAC,cAAc,CAAC,CAAU;IACjC,OAAO,CAAC,cAAc,CAAC,CAAU;IAEjC,OAAO,CAAC,cAAc,CAAgB;IACtC,OAAO,CAAC,iBAAiB,CAAgB;IACzC,OAAO,CAAC,wBAAwB,CAAgB;IAChD,OAAO,CAAC,0BAA0B,CAAS;IAC3C,OAAO,CAAC,sBAAsB,CAAuB;IACrD,OAAO,CAAC,gBAAgB,CAAS;IACjC,OAAO,CAAC,WAAW,CAAa;IAChC,OAAO,CAAC,cAAc,CAAY;IAElC,OAAO,CAAC,MAAM,CAaZ;IAGF,OAAO,CAAC,mBAAmB,CAIzB;gBAGiB,QAAQ,EAAE,iBAAiB,EAC3B,SAAS,EAAE,iBAAiB,EAC5B,YAAY,EAAE,qBAAqB,EACnC,OAAO,EAAE,gBAAgB,EACzB,MAAM,EAAE,eAAe,EACvB,aAAa,EAAE,MAAM;YAuB1B,sBAAsB;IAyBpC,OAAO,CAAC,mBAAmB;IAuJ3B,OAAO,CAAC,oBAAoB;IAoB5B,OAAO,CAAC,yBAAyB;IAqBjC,OAAO,CAAC,wBAAwB;IA4DlC,OAAO,CAAC,+BAA+B;IA8FrC,OAAO,CAAC,2BAA2B;IAqFnC,OAAO,CAAC,mCAAmC;IA0B3C,OAAO,CAAC,+BAA+B;YA2BzB,iBAAiB;YAejB,gBAAgB;YAehB,iBAAiB;YAejB,wBAAwB;IA2CtC,OAAO,CAAC,gCAAgC;IAqBlC,SAAS,CAAC,KAAK,EAAE,mBAAmB;IAgBpC,0BAA0B,CAAC,KAAK,EAAE,mBAAmB;YAa7C,cAAc;YA+Dd,oBAAoB;YA4DpB,sBAAsB;YAqGtB,6BAA6B;YAsH7B,qBAAqB;IAsBnC,OAAO,CAAC,4BAA4B;IAyCpC,OAAO,CAAC,2BAA2B;IAMnC;;OAEG;YACW,oCAAoC;IAiDlD;;OAEG;YACW,6BAA6B;IAyB3C;;OAEG;YACW,+BAA+B;IAsB7C;;OAEG;IACH,OAAO,CAAC,+BAA+B;YAyBzB,OAAO;IAqCrB,OAAO,CAAC,wBAAwB;IAa1B,qBAAqB,IAAI,OAAO,CAAC,mBAAmB,CAAC;IAIrD,8BAA8B,IAAI,OAAO,CAAC,mBAAmB,CAAC;IAI9D,8BAA8B,CAAC,KAAK,EAAE,mBAAmB;IAgD/D,OAAO,CAAC,kBAAkB;IA4BpB,0BAA0B,IAAI,OAAO,CAAC,mBAAmB,CAAC;YAIlD,YAAY;YAYZ,kBAAkB;CAwJjC"}
@@ -1072,11 +1072,15 @@ class ViessmannHeatingCircuitAccessory {
1072
1072
  return this.states.CurrentRelativeHumidity;
1073
1073
  }
1074
1074
  async handleUpdate(features) {
1075
+ const t0 = Date.now();
1075
1076
  try {
1076
1077
  await this.updateFromFeatures(features);
1078
+ this.platform.log.debug(`🌡️ Riscaldamento ${this.circuitNumber} handleUpdate OK in ${Date.now() - t0}ms`);
1077
1079
  }
1078
1080
  catch (error) {
1079
- this.platform.log.error(`Error handling heating circuit ${this.circuitNumber} update:`, error);
1081
+ const msg = error instanceof Error ? error.message : String(error);
1082
+ this.platform.log.error(`❌ Riscaldamento ${this.circuitNumber} handleUpdate failed after ${Date.now() - t0}ms: ${msg}`);
1083
+ this.platform.log.error(` State at failure: mode=${this.currentMode}, program=${this.currentProgram}, temp=${this.states.CurrentTemperature}°C`);
1080
1084
  }
1081
1085
  }
1082
1086
  async updateFromFeatures(features) {
@@ -1190,17 +1194,31 @@ class ViessmannHeatingCircuitAccessory {
1190
1194
  if (operatingModeFeature?.properties?.value?.value !== undefined) {
1191
1195
  const newMode = operatingModeFeature.properties.value.value;
1192
1196
  if (newMode !== this.currentMode) {
1193
- this.platform.log.debug(`Heating circuit ${this.circuitNumber} mode updated: ${this.currentMode.toUpperCase()} → ${newMode.toUpperCase()}`);
1197
+ this.platform.log.info(`🌡️ Riscaldamento ${this.circuitNumber} mode changed: ${this.currentMode.toUpperCase()} → ${newMode.toUpperCase()}`);
1194
1198
  this.currentMode = newMode;
1195
1199
  this.updateAllCharacteristics();
1200
+ anyProgramStateChanged = true;
1201
+ }
1202
+ else {
1203
+ this.platform.log.debug(`🌡️ Riscaldamento ${this.circuitNumber} mode unchanged: ${this.currentMode.toUpperCase()}`);
1196
1204
  }
1197
1205
  }
1206
+ else {
1207
+ this.platform.log.warn(`🌡️ Riscaldamento ${this.circuitNumber}: feature '${circuitPrefix}.operating.modes.active' not found — mode NOT updated`);
1208
+ }
1198
1209
  // Update humidity if available
1199
1210
  const humidityFeature = features.find(f => f.feature.includes('sensors.humidity'));
1200
1211
  if (humidityFeature?.properties?.value?.value !== undefined) {
1201
1212
  this.states.CurrentRelativeHumidity = humidityFeature.properties.value.value;
1202
1213
  }
1203
- this.platform.log.debug(`Heating Circuit ${this.circuitNumber} Status - Mode: ${this.currentMode.toUpperCase()}, Room Temp: ${this.states.CurrentTemperature}°C, Target: ${this.states.HeatingThresholdTemperature}°C, Program: ${this.currentProgram.toUpperCase()}`);
1214
+ // Summary: log at info when mode or program changed, debug otherwise
1215
+ const summaryLine = `🌡️ Riscaldamento ${this.circuitNumber} — mode=${this.currentMode.toUpperCase()} | prog=${this.currentProgram.toUpperCase()} | room=${this.states.CurrentTemperature}°C | target=${this.states.HeatingThresholdTemperature}°C`;
1216
+ if (anyProgramStateChanged || anyTemperatureChanged) {
1217
+ this.platform.log.info(summaryLine);
1218
+ }
1219
+ else {
1220
+ this.platform.log.debug(summaryLine);
1221
+ }
1204
1222
  }
1205
1223
  }
1206
1224
  exports.ViessmannHeatingCircuitAccessory = ViessmannHeatingCircuitAccessory;
@@ -36,7 +36,8 @@ export declare class AuthManager {
36
36
  private authServer?;
37
37
  private authTimeout?;
38
38
  private tokenRefreshTimer?;
39
- constructor(log: Logger, config: AuthConfig, httpClient: AxiosInstance, hostIp: string);
39
+ private envDiagnosticsLogged;
40
+ constructor(log: Logger, config: AuthConfig, httpClient: AxiosInstance, hostIp: string, storagePath?: string);
40
41
  private validateAuthConfiguration;
41
42
  private generatePKCECodes;
42
43
  private initializeTokens;
@@ -114,86 +115,10 @@ export declare class AuthManager {
114
115
  }
115
116
  }
116
117
 
117
- private openBrowser(url: string): void {
118
- const { execFile, exec } = require('child_process');
119
118
 
120
- const tryExecFile = (cmd: string, args: string[], env: NodeJS.ProcessEnv) =>
121
- new Promise<void>((resolve, reject) => {
122
- execFile(cmd, args, { env }, (err: any) => err ? reject(err) : resolve());
123
- });
124
-
125
- const tryExec = (command: string, env: NodeJS.ProcessEnv) =>
126
- new Promise<void>((resolve, reject) => {
127
- exec(command, { env }, (err: any) => err ? reject(err) : resolve());
128
- });
129
-
130
- // Copia pulita dell'ambiente
131
- const env: NodeJS.ProcessEnv = { ...process.env };
132
-
133
- // Migliora compatibilità Linux (X/Wayland) senza toccare il servizio
134
- if (process.platform === 'linux') {
135
- if (!env.DISPLAY) {
136
- // fallback tipico X11
137
- env.DISPLAY = ':0';
138
- }
139
- if (!env.XDG_RUNTIME_DIR && typeof process.getuid === 'function') {
140
- env.XDG_RUNTIME_DIR = `/run/user/${process.getuid()}`;
141
- }
142
- }
143
-
144
-
145
- const tryLinux = async () => {
146
- // 1) Standard freedesktop
147
- try { await tryExecFile('xdg-open', [url], env); this.log.debug('🌐 xdg-open OK'); return; } catch {}
148
-
149
- // 2) Gio / GVFS
150
- try { await tryExec(`gio open "${url}"`, env); this.log.debug('🌐 gio open OK'); return; } catch {}
151
-
152
- // 3) Debian-like helpers
153
- try { await tryExecFile('sensible-browser', [url], env); this.log.debug('🌐 sensible-browser OK'); return; } catch {}
154
- try { await tryExecFile('x-www-browser', [url], env); this.log.debug('🌐 x-www-browser OK'); return; } catch {}
155
-
156
- // 4) xdg-desktop-portal (DBus OpenURI) — compatibile Wayland/X
157
- try {
158
- await tryExec(
159
- `gdbus call --session ` +
160
- `--dest org.freedesktop.portal.Desktop ` +
161
- `--object-path /org/freedesktop/portal/desktop ` +
162
- `--method org.freedesktop.portal.OpenURI.OpenURI "" "${url}" "{}"`,
163
- env
164
- );
165
- this.log.debug('🌐 xdg-desktop-portal OpenURI OK');
166
- return;
167
- } catch {}
168
-
169
- // 5) backend specifici (best-effort, non bloccanti)
170
- try { await tryExecFile('kde-open5', [url], env); this.log.debug('🌐 kde-open5 OK'); return; } catch {}
171
- try { await tryExecFile('gnome-open', [url], env); this.log.debug('🌐 gnome-open OK'); return; } catch {}
172
-
173
- // Nessun metodo disponibile/riuscito
174
- throw new Error('No Linux opener succeeded');
175
- };
176
-
177
- (async () => {
178
- try {
179
- switch (process.platform) {
180
- case 'darwin':
181
- await tryExec(`open "${url}"`, env);
182
- break;
183
- case 'win32':
184
- await tryExec(`start "" "${url}"`, env);
185
- break;
186
- default:
187
- await tryLinux();
188
- }
189
- this.log.info('✅ Tentativo di apertura browser completato');
190
- } catch (e: any) {
191
- this.log.warn(`⚠️ Impossibile aprire automaticamente il browser (${e?.message || e}). Apri l’URL manualmente.`);
192
- }
193
- })();
194
- }
195
119
  **/
196
120
  private openBrowser;
121
+ private tryOpenBrowserDirect;
197
122
  private exchangeCodeForTokens;
198
123
  refreshAccessToken(): Promise<void>;
199
124
  private setTokens;
@@ -1 +1 @@
1
- {"version":3,"file":"auth-manager.d.ts","sourceRoot":"","sources":["../src/auth-manager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"auth-manager.d.ts","sourceRoot":"","sources":["../src/auth-manager.ts"],"names":[],"mappings":"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"}