homebridge-pvs6 1.2.0 → 1.3.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.
@@ -17,12 +17,15 @@ export declare class PVS6Platform implements DynamicPlatformPlugin {
17
17
  private pollTimer?;
18
18
  private pollInFlight;
19
19
  private backedOff;
20
+ private consecutiveNetworkErrors;
21
+ private lastNetworkErrorLogTime;
20
22
  private authGeneration;
21
23
  private lastSuccessfulPollTime;
22
24
  private rediscovering;
23
25
  constructor(log: Logger, config: PlatformConfig, api: API);
24
26
  configureAccessory(accessory: PlatformAccessory): void;
25
27
  private resolveConfig;
28
+ private discoverWithCache;
26
29
  private setupAccessories;
27
30
  private getOrCreateAccessory;
28
31
  private get discoveryEnabled();
@@ -31,6 +34,7 @@ export declare class PVS6Platform implements DynamicPlatformPlugin {
31
34
  private stopPolling;
32
35
  private startAuthAndPolling;
33
36
  private startPolling;
37
+ private triggerReauth;
34
38
  private enterBackoff;
35
39
  }
36
40
  //# sourceMappingURL=platform.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"platform.d.ts","sourceRoot":"","sources":["../src/platform.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,GAAG,EACH,cAAc,EACd,qBAAqB,EACrB,MAAM,EACN,iBAAiB,EACjB,cAAc,EACd,OAAO,EACR,MAAM,YAAY,CAAC;AAQpB,OAAO,EAA4B,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAS1E,qBAAa,YAAa,YAAW,qBAAqB;IACxD,SAAgB,OAAO,EAAE,OAAO,OAAO,CAAC;IACxC,SAAgB,cAAc,EAAE,OAAO,cAAc,CAAC;IACtD,SAAgB,GAAG,EAAE,GAAG,CAAC;IACzB,SAAgB,QAAQ,EAAE,QAAQ,CAAC;IACnC,SAAgB,GAAG,EAAE,MAAM,CAAC;IAE5B,SAAgB,WAAW,EAAE,iBAAiB,EAAE,CAAM;IAGtD,OAAO,CAAC,MAAM,CAAc;IAC5B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAa;IACpC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAS;IAExC,OAAO,CAAC,cAAc,CAAC,CAAiB;IACxC,OAAO,CAAC,mBAAmB,CAAC,CAAsB;IAClD,OAAO,CAAC,mBAAmB,CAAC,CAAsB;IAClD,OAAO,CAAC,wBAAwB,CAAC,CAA2B;IAE5D,OAAO,CAAC,SAAS,CAAC,CAAiC;IACnD,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,SAAS,CAAS;IAG1B,OAAO,CAAC,cAAc,CAAK;IAG3B,OAAO,CAAC,sBAAsB,CAAc;IAC5C,OAAO,CAAC,aAAa,CAAS;gBAG5B,GAAG,EAAE,MAAM,EACX,MAAM,EAAE,cAAc,EACtB,GAAG,EAAE,GAAG;IA2CV,kBAAkB,CAAC,SAAS,EAAE,iBAAiB,GAAG,IAAI;YAUxC,aAAa;IAyB3B,OAAO,CAAC,gBAAgB;IAqDxB,OAAO,CAAC,oBAAoB;IAiB5B,OAAO,KAAK,gBAAgB,GAE3B;IAID,OAAO,CAAC,gBAAgB;YAQV,kBAAkB;IAwBhC,OAAO,CAAC,WAAW;IASnB,OAAO,CAAC,mBAAmB;IAsB3B,OAAO,CAAC,YAAY;IAuDpB,OAAO,CAAC,YAAY;CAOrB"}
1
+ {"version":3,"file":"platform.d.ts","sourceRoot":"","sources":["../src/platform.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,GAAG,EACH,cAAc,EACd,qBAAqB,EACrB,MAAM,EACN,iBAAiB,EACjB,cAAc,EACd,OAAO,EACR,MAAM,YAAY,CAAC;AAQpB,OAAO,EAA4B,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAW1E,qBAAa,YAAa,YAAW,qBAAqB;IACxD,SAAgB,OAAO,EAAE,OAAO,OAAO,CAAC;IACxC,SAAgB,cAAc,EAAE,OAAO,cAAc,CAAC;IACtD,SAAgB,GAAG,EAAE,GAAG,CAAC;IACzB,SAAgB,QAAQ,EAAE,QAAQ,CAAC;IACnC,SAAgB,GAAG,EAAE,MAAM,CAAC;IAE5B,SAAgB,WAAW,EAAE,iBAAiB,EAAE,CAAM;IAGtD,OAAO,CAAC,MAAM,CAAc;IAC5B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAa;IACpC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAS;IAExC,OAAO,CAAC,cAAc,CAAC,CAAiB;IACxC,OAAO,CAAC,mBAAmB,CAAC,CAAsB;IAClD,OAAO,CAAC,mBAAmB,CAAC,CAAsB;IAClD,OAAO,CAAC,wBAAwB,CAAC,CAA2B;IAE5D,OAAO,CAAC,SAAS,CAAC,CAAiC;IACnD,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,wBAAwB,CAAK;IACrC,OAAO,CAAC,uBAAuB,CAAK;IAGpC,OAAO,CAAC,cAAc,CAAK;IAG3B,OAAO,CAAC,sBAAsB,CAAc;IAC5C,OAAO,CAAC,aAAa,CAAS;gBAG5B,GAAG,EAAE,MAAM,EACX,MAAM,EAAE,cAAc,EACtB,GAAG,EAAE,GAAG;IA2CV,kBAAkB,CAAC,SAAS,EAAE,iBAAiB,GAAG,IAAI;YAexC,aAAa;YA0Bb,iBAAiB;IAW/B,OAAO,CAAC,gBAAgB;IAqDxB,OAAO,CAAC,oBAAoB;IAiB5B,OAAO,KAAK,gBAAgB,GAE3B;IAID,OAAO,CAAC,gBAAgB;YAQV,kBAAkB;IA0BhC,OAAO,CAAC,WAAW;IASnB,OAAO,CAAC,mBAAmB;IAsB3B,OAAO,CAAC,YAAY;IA4DpB,OAAO,CAAC,aAAa;IAYrB,OAAO,CAAC,YAAY;CASrB"}
package/dist/platform.js CHANGED
@@ -9,16 +9,20 @@ const gridExportAccessory_1 = require("./gridExportAccessory");
9
9
  const homeConsumptionAccessory_1 = require("./homeConsumptionAccessory");
10
10
  const eveCharacteristics_1 = require("./eveCharacteristics");
11
11
  const pvs6Discovery_1 = require("./pvs6Discovery");
12
+ const pvs6DiscoveryCache_1 = require("./pvs6DiscoveryCache");
12
13
  const MIN_POLL_INTERVAL = 5;
13
14
  const AUTH_RETRY_MS = 30000;
14
15
  const AUTH_BACKOFF_MS = 60000;
15
16
  const OVERLOAD_BACKOFF_MS = 15000;
16
17
  const REDISCOVERY_THRESHOLD_MS = 2 * 60 * 60 * 1000; // 2 hours
18
+ const NETWORK_ERROR_LOG_INTERVAL_MS = 5 * 60 * 1000; // suppress repeat network error logs within 5 min
17
19
  class PVS6Platform {
18
20
  constructor(log, config, api) {
19
21
  this.accessories = [];
20
22
  this.pollInFlight = false;
21
23
  this.backedOff = false;
24
+ this.consecutiveNetworkErrors = 0;
25
+ this.lastNetworkErrorLogTime = 0;
22
26
  // Incremented when re-discovery fires so stale auth-retry timeouts know to abort.
23
27
  this.authGeneration = 0;
24
28
  // Tracks when the last successful poll data was received, for re-discovery gating.
@@ -68,6 +72,11 @@ class PVS6Platform {
68
72
  // autoDiscover: true → always run mDNS discovery; host/serialNumber in config are ignored.
69
73
  // autoDiscover: false → must supply both host and serialNumber manually; no mDNS.
70
74
  // autoDiscover: unset → use config values if both are present, otherwise discover what's missing.
75
+ //
76
+ // Discovery results are cached to disk: once mDNS finds the PVS6, subsequent startups reuse
77
+ // the cached host/serialNumber and skip mDNS entirely. If the cached IP turns out to be stale
78
+ // (device unreachable), the existing re-discovery flow (checkRediscovery/triggerRediscovery)
79
+ // takes over and refreshes the cache once mDNS finds it again.
71
80
  async resolveConfig() {
72
81
  const { host, serialNumber, autoDiscover } = this.config;
73
82
  if (autoDiscover === false) {
@@ -77,18 +86,29 @@ class PVS6Platform {
77
86
  return { host, serialNumber };
78
87
  }
79
88
  if (autoDiscover === true) {
80
- return (0, pvs6Discovery_1.discoverPVS6)(this.log);
89
+ return this.discoverWithCache();
81
90
  }
82
91
  // autoDiscover not set: use config if complete, otherwise discover what's missing.
83
92
  if (host && serialNumber) {
84
93
  return { host, serialNumber };
85
94
  }
86
- const discovered = await (0, pvs6Discovery_1.discoverPVS6)(this.log);
95
+ const discovered = await this.discoverWithCache();
87
96
  return {
88
97
  host: host ?? discovered.host,
89
98
  serialNumber: serialNumber ?? discovered.serialNumber,
90
99
  };
91
100
  }
101
+ // Returns the cached discovery result if one exists, otherwise runs mDNS discovery and caches it.
102
+ async discoverWithCache() {
103
+ const cached = (0, pvs6DiscoveryCache_1.loadDiscoveryCache)(this.api, this.log);
104
+ if (cached) {
105
+ this.log.info(`Using cached PVS6 location: ${cached.host} (serial: ${cached.serialNumber}) — skipping mDNS discovery`);
106
+ return cached;
107
+ }
108
+ const discovered = await (0, pvs6Discovery_1.discoverPVS6)(this.log);
109
+ (0, pvs6DiscoveryCache_1.saveDiscoveryCache)(this.api, this.log, discovered);
110
+ return discovered;
111
+ }
92
112
  setupAccessories(
93
113
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
94
114
  FakeGatoHistoryService, serialNumber) {
@@ -149,6 +169,8 @@ class PVS6Platform {
149
169
  try {
150
170
  const { host, serialNumber } = await (0, pvs6Discovery_1.discoverPVS6)(this.log);
151
171
  this.log.info(`Re-discovery found PVS6 at ${host} (serial: ${serialNumber}) — reconnecting`);
172
+ // Refresh the cache so the next startup picks up the new address directly.
173
+ (0, pvs6DiscoveryCache_1.saveDiscoveryCache)(this.api, this.log, { host, serialNumber });
152
174
  // Increment generation to cancel any pending auth-retry timeouts.
153
175
  this.authGeneration++;
154
176
  this.stopPolling();
@@ -213,6 +235,7 @@ class PVS6Platform {
213
235
  try {
214
236
  const reading = await this.client.poll();
215
237
  this.lastSuccessfulPollTime = Date.now();
238
+ this.consecutiveNetworkErrors = 0;
216
239
  this.solarAccessory?.updateValues(reading);
217
240
  this.gridImportAccessory?.updateValues(reading);
218
241
  this.gridExportAccessory?.updateValues(reading);
@@ -222,18 +245,12 @@ class PVS6Platform {
222
245
  if (err instanceof pvs6Client_1.HttpError) {
223
246
  if (err.statusCode === 401) {
224
247
  this.log.warn('HTTP 401 — session expired, re-authenticating...');
225
- this.enterBackoff(AUTH_BACKOFF_MS);
226
- this.client.authenticate()
227
- .then(() => {
228
- this.log.info('Re-authenticated — resuming polls');
229
- this.backedOff = false;
230
- })
231
- .catch((authErr) => {
232
- this.log.error(`Re-auth failed: ${authErr.message}. Backing off ${AUTH_BACKOFF_MS / 1000}s`);
233
- });
248
+ this.consecutiveNetworkErrors = 0;
249
+ this.triggerReauth();
234
250
  }
235
251
  else if (err.statusCode >= 500) {
236
252
  this.log.warn(`HTTP ${err.statusCode} from PVS6 — device may be overloaded. Backing off ${OVERLOAD_BACKOFF_MS / 1000}s`);
253
+ this.consecutiveNetworkErrors = 0;
237
254
  this.enterBackoff(OVERLOAD_BACKOFF_MS);
238
255
  }
239
256
  else {
@@ -241,8 +258,18 @@ class PVS6Platform {
241
258
  }
242
259
  }
243
260
  else if (err instanceof Error) {
244
- if (err.message.includes('timeout')) {
245
- this.log.warn('Poll timed out — skipping cycle');
261
+ if (err.message.includes('timeout') || err.message.includes('socket hang up') || err.message.includes('ECONNRESET')) {
262
+ this.consecutiveNetworkErrors++;
263
+ const now = Date.now();
264
+ if (now - this.lastNetworkErrorLogTime > NETWORK_ERROR_LOG_INTERVAL_MS) {
265
+ this.log.warn(`Poll network error: ${err.message}`);
266
+ this.lastNetworkErrorLogTime = now;
267
+ }
268
+ if (this.consecutiveNetworkErrors >= 3) {
269
+ this.log.warn(`${this.consecutiveNetworkErrors} consecutive network errors — re-authenticating...`);
270
+ this.consecutiveNetworkErrors = 0;
271
+ this.triggerReauth();
272
+ }
246
273
  }
247
274
  else if (err.message.includes('JSON parse')) {
248
275
  this.log.warn(`${err.message}`);
@@ -257,11 +284,24 @@ class PVS6Platform {
257
284
  }
258
285
  }, this.pollIntervalMs);
259
286
  }
287
+ triggerReauth() {
288
+ this.enterBackoff(AUTH_BACKOFF_MS);
289
+ this.client.authenticate()
290
+ .then(() => {
291
+ this.log.info('Re-authenticated — resuming polls');
292
+ this.backedOff = false;
293
+ })
294
+ .catch((authErr) => {
295
+ this.log.error(`Re-auth failed: ${authErr.message}. Backing off ${AUTH_BACKOFF_MS / 1000}s`);
296
+ });
297
+ }
260
298
  enterBackoff(durationMs) {
261
299
  this.backedOff = true;
262
300
  setTimeout(() => {
301
+ if (this.backedOff) {
302
+ this.log.info('Backoff period ended — resuming polls');
303
+ }
263
304
  this.backedOff = false;
264
- this.log.info('Backoff period ended — resuming polls');
265
305
  }, durationMs);
266
306
  }
267
307
  }
@@ -1 +1 @@
1
- {"version":3,"file":"platform.js","sourceRoot":"","sources":["../src/platform.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"platform.js","sourceRoot":"","sources":["../src/platform.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ import { API, Logger } from 'homebridge';
2
+ import { PVS6DiscoveryResult } from './pvs6Discovery';
3
+ export declare function loadDiscoveryCache(api: API, log: Logger): PVS6DiscoveryResult | undefined;
4
+ export declare function saveDiscoveryCache(api: API, log: Logger, result: PVS6DiscoveryResult): void;
5
+ //# sourceMappingURL=pvs6DiscoveryCache.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pvs6DiscoveryCache.d.ts","sourceRoot":"","sources":["../src/pvs6DiscoveryCache.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AACzC,OAAO,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAUtD,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,GAAG,mBAAmB,GAAG,SAAS,CAezF;AAGD,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,mBAAmB,GAAG,IAAI,CAO3F"}
@@ -0,0 +1,73 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.loadDiscoveryCache = loadDiscoveryCache;
37
+ exports.saveDiscoveryCache = saveDiscoveryCache;
38
+ const fs = __importStar(require("fs"));
39
+ const path = __importStar(require("path"));
40
+ const CACHE_FILE_NAME = '.pvs6-discovery-cache.json';
41
+ function cachePath(api) {
42
+ return path.join(api.user.storagePath(), CACHE_FILE_NAME);
43
+ }
44
+ // Reads a previously-cached mDNS discovery result, if any.
45
+ // Returns undefined on first run (no cache yet) or if the cache file is unreadable/malformed.
46
+ function loadDiscoveryCache(api, log) {
47
+ try {
48
+ const raw = fs.readFileSync(cachePath(api), 'utf8');
49
+ const data = JSON.parse(raw);
50
+ if (data.host && data.serialNumber) {
51
+ return { host: data.host, serialNumber: data.serialNumber };
52
+ }
53
+ log.debug('Discovery cache file is malformed — ignoring');
54
+ }
55
+ catch (err) {
56
+ // ENOENT just means there's no cache yet (first run); anything else is worth a debug log.
57
+ if (err.code !== 'ENOENT') {
58
+ log.debug(`Failed to read discovery cache: ${err}`);
59
+ }
60
+ }
61
+ return undefined;
62
+ }
63
+ // Persists a successful mDNS discovery so subsequent startups can skip discovery entirely.
64
+ function saveDiscoveryCache(api, log, result) {
65
+ try {
66
+ fs.writeFileSync(cachePath(api), JSON.stringify(result), 'utf8');
67
+ log.debug(`Cached PVS6 location: ${result.host} (serial: ${result.serialNumber})`);
68
+ }
69
+ catch (err) {
70
+ log.warn(`Failed to write discovery cache: ${err}`);
71
+ }
72
+ }
73
+ //# sourceMappingURL=pvs6DiscoveryCache.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pvs6DiscoveryCache.js","sourceRoot":"","sources":["../src/pvs6DiscoveryCache.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAaA,gDAeC;AAGD,gDAOC;AAtCD,uCAAyB;AACzB,2CAA6B;AAI7B,MAAM,eAAe,GAAG,4BAA4B,CAAC;AAErD,SAAS,SAAS,CAAC,GAAQ;IACzB,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,eAAe,CAAC,CAAC;AAC5D,CAAC;AAED,2DAA2D;AAC3D,8FAA8F;AAC9F,SAAgB,kBAAkB,CAAC,GAAQ,EAAE,GAAW;IACtD,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,EAAE,CAAC,YAAY,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,CAAC;QACpD,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAiC,CAAC;QAC7D,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;YACnC,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,YAAY,EAAE,IAAI,CAAC,YAAY,EAAE,CAAC;QAC9D,CAAC;QACD,GAAG,CAAC,KAAK,CAAC,8CAA8C,CAAC,CAAC;IAC5D,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,0FAA0F;QAC1F,IAAK,GAA6B,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YACrD,GAAG,CAAC,KAAK,CAAC,mCAAmC,GAAG,EAAE,CAAC,CAAC;QACtD,CAAC;IACH,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,2FAA2F;AAC3F,SAAgB,kBAAkB,CAAC,GAAQ,EAAE,GAAW,EAAE,MAA2B;IACnF,IAAI,CAAC;QACH,EAAE,CAAC,aAAa,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,CAAC;QACjE,GAAG,CAAC,KAAK,CAAC,yBAAyB,MAAM,CAAC,IAAI,aAAa,MAAM,CAAC,YAAY,GAAG,CAAC,CAAC;IACrF,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,GAAG,CAAC,IAAI,CAAC,oCAAoC,GAAG,EAAE,CAAC,CAAC;IACtD,CAAC;AACH,CAAC"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "homebridge-pvs6",
3
3
  "displayName": "PVS6 Solar",
4
- "version": "1.2.0",
4
+ "version": "1.3.0",
5
5
  "description": "Homebridge plugin for SunStrong PVS6 solar monitoring — Eve Energy accessories with fakegato history.",
6
6
  "author": {
7
7
  "name": "David Carson",