homebridge-pvs6 1.0.0 → 1.2.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.
package/README.md CHANGED
@@ -1,16 +1,30 @@
1
1
  # homebridge-pvs6
2
2
 
3
- A [Homebridge](https://homebridge.io) plugin for the [SunStrong PVS6](https://sunstrong.com) solar monitoring system. Exposes solar production and grid metering as **Eve Energy** accessories in Apple HomeKit, with real-time power, cumulative energy, voltage, and native Eve app history.
3
+ A [Homebridge](https://homebridge.io) plugin for the [SunStrong PVS6](https://sunstrong.com) solar monitoring system. Exposes solar production and grid metering as **Eve Energy** accessories in Apple HomeKit, with real-time power, cumulative energy, and native Eve app history.
4
+
5
+ <table>
6
+ <tr>
7
+ <td align="center" valign="middle">
8
+ <img width="300" alt="Eve Energy view" src="https://github.com/user-attachments/assets/f85d2e28-b419-4c41-a651-cbb88c011c79" />
9
+ <br><sub>Eve Energy view</sub>
10
+ </td>
11
+ <td align="center" valign="middle">
12
+ <img width="600" alt="Total Consumption landscape" src="https://github.com/user-attachments/assets/76332baa-e1a2-45dd-a4ee-4dffac008ab8" />
13
+ <br><sub>Total Consumption landscape</sub>
14
+ </td>
15
+ </tr>
16
+ </table>
4
17
 
5
18
  ---
6
-
7
19
  ## Features
8
20
 
9
- - **Solar Production** accessory — always registered; real-time PV output (W), lifetime generation (kWh), line voltage (V)
21
+ - **Solar Production** accessory — always registered; real-time PV output (W), lifetime generation (kWh)
10
22
  - **Grid Import + Grid Export** accessory pair — optional (default enabled); each shows non-negative watts and its own Eve app history
23
+ - **Home Consumption** accessory — optional (default disabled); real-time site load (W) and derived lifetime consumption (kWh)
11
24
  - Import and Export accessories are always registered together as a pair, making import/export history immediately readable as separate graphs
12
25
  - Up to 7 days of native power history in the Eve app via [fakegato-history](https://github.com/simont77/fakegato-history)
13
26
  - Polls the PVS6 **local** FCGI API — no SunStrong Connect, no cloud dependency
27
+ - **Auto-discovers** the PVS6 on your local network via mDNS — no IP address or serial number required in config
14
28
  - Automatically identifies production and consumption CT meters from the PVS6 device list
15
29
  - Designed to complement [homebridge-rainforest-eagle3](https://github.com/dacarson/homebridge-rainforest-eagle3) for a complete solar + grid picture in Apple Home
16
30
 
@@ -31,7 +45,7 @@ A [Homebridge](https://homebridge.io) plugin for the [SunStrong PVS6](https://su
31
45
  The PVS6 exposes a local HTTPS varserver API that this plugin polls on a configurable interval. It reads two data streams:
32
46
 
33
47
  - **Livedata** — aggregate solar production and net grid power computed by the PVS6
34
- - **Meter data** — per-phase detail from the CT meters (voltage, cumulative energy)
48
+ - **Meter data** — per-phase detail from the CT meters (cumulative energy)
35
49
 
36
50
  The plugin automatically identifies the production meter (model suffix `p`, e.g. `PVS6M0400p`) and consumption meter (model suffix `c`, e.g. `PVS6M0400c`) from the device list.
37
51
 
@@ -40,17 +54,17 @@ All accessories render as **smart plugs** in Apple Home:
40
54
  - **Solar Production** — always registered; `On` when the panels are producing power
41
55
  - **Grid Import** — `On` when importing from the grid; zero watts when net-exporting
42
56
  - **Grid Export** — `On` when net-exporting solar to the grid; zero watts when importing
57
+ - **Home Consumption** — optional; `On` when the house is drawing power (always true in practice); shows total site load and derived lifetime consumption energy
43
58
 
44
- Grid Import and Grid Export are always registered together — enabling `accessories.grid` creates both.
59
+ Grid Import and Grid Export are always registered together — enabling `accessories.grid` creates both. Home Consumption is opt-in via `accessories.homeConsumption: true`.
45
60
 
46
61
  ---
47
62
 
48
63
  ## Requirements
49
64
 
50
- - [Homebridge](https://homebridge.io) v1.6 or later
65
+ - [Homebridge](https://homebridge.io) v2.0 or later
51
66
  - Node.js 18 or later
52
67
  - SunStrong PVS6 on the same local network as your Homebridge host
53
- - The PVS6's **full serial number** (printed on the unit label)
54
68
 
55
69
  ---
56
70
 
@@ -66,9 +80,11 @@ npm install -g homebridge-pvs6
66
80
 
67
81
  ## Configuration
68
82
 
69
- Add a platform entry to your Homebridge `config.json`:
83
+ The Homebridge UI exposes an **Auto Discover** checkbox (on by default). When checked, the plugin finds the PVS6 on your local network automatically via mDNS — Host and Serial Number fields are ignored even if filled in. When unchecked, Host and Serial Number are used directly. Either way, both fields are always visible and their values are preserved in `config.json`.
84
+
85
+ ### Auto Discover (default)
70
86
 
71
- Minimal config (solar only — grid disabled):
87
+ The checkbox is on by default. No other fields are required:
72
88
 
73
89
  ```json
74
90
  {
@@ -76,15 +92,35 @@ Minimal config (solar only — grid disabled):
76
92
  {
77
93
  "platform": "PVS6",
78
94
  "name": "PVS6",
79
- "host": "192.168.1.x",
80
- "serialNumber": "ZT231385000549A1234",
81
- "accessories": { "grid": false }
95
+ "autoDiscover": true
96
+ }
97
+ ]
98
+ }
99
+ ```
100
+
101
+ At startup the plugin scans for `_pvs6._tcp` on the local network. The PVS6 broadcasts its hostname (`pvs.local`) and serial number via mDNS, so both are discovered automatically. Discovery times out after 30 seconds with an actionable error if no device is found.
102
+
103
+ If the device becomes unreachable for 2 hours (e.g. the router assigned it a new IP), the plugin runs mDNS discovery again automatically and reconnects.
104
+
105
+ ### Manual config
106
+
107
+ Uncheck **Auto Discover** and supply the host and serial number directly. This skips mDNS entirely and is useful if you assign the PVS6 a static IP or DHCP reservation:
108
+
109
+ ```json
110
+ {
111
+ "platforms": [
112
+ {
113
+ "platform": "PVS6",
114
+ "name": "PVS6",
115
+ "autoDiscover": false,
116
+ "host": "pvs.local",
117
+ "serialNumber": "ZT231385000549A1234"
82
118
  }
83
119
  ]
84
120
  }
85
121
  ```
86
122
 
87
- Standard config (solar + grid import/export pair):
123
+ ### Full config (all options)
88
124
 
89
125
  ```json
90
126
  {
@@ -92,12 +128,18 @@ Standard config (solar + grid import/export pair):
92
128
  {
93
129
  "platform": "PVS6",
94
130
  "name": "PVS6",
95
- "host": "192.168.1.x",
131
+ "autoDiscover": true,
132
+ "host": "pvs.local",
96
133
  "serialNumber": "ZT231385000549A1234",
97
134
  "pollInterval": 10,
135
+ "accessories": {
136
+ "grid": true,
137
+ "homeConsumption": true
138
+ },
98
139
  "solarName": "Solar Production",
99
140
  "gridName": "Grid Meter - Import",
100
- "gridExportName": "Grid Meter - Export"
141
+ "gridExportName": "Grid Meter - Export",
142
+ "homeConsumptionName": "Home Consumption"
101
143
  }
102
144
  ]
103
145
  }
@@ -108,17 +150,22 @@ Standard config (solar + grid import/export pair):
108
150
  | Field | Type | Required | Default | Description |
109
151
  |---|---|---|---|---|
110
152
  | `platform` | string | yes | — | Must be `PVS6` |
111
- | `host` | string | yes | — | IP address or hostname of the PVS6 on your local network |
112
- | `serialNumber` | string | yes | — | Full PVS6 serial number. The last 5 characters are used as the API password |
153
+ | `autoDiscover` | boolean | no | `true` | When `true`, find the PVS6 via mDNS — `host` and `serialNumber` are ignored. Re-discovers automatically after 2 hours of unreachability |
154
+ | `host` | string | no* | — | IP address or hostname of the PVS6. Used only when `autoDiscover` is `false` |
155
+ | `serialNumber` | string | no* | — | Full PVS6 serial number. The last 5 characters are used as the API password. Used only when `autoDiscover` is `false` |
113
156
  | `pollInterval` | integer | no | `10` | Seconds between polls. Minimum enforced: `5` |
114
157
  | `accessories.grid` | boolean | no | `true` | Enable the Grid Import + Grid Export accessory pair. Set `false` to disable both |
158
+ | `accessories.homeConsumption` | boolean | no | `false` | Enable the Home Consumption accessory. Opt-in; off by default |
115
159
  | `solarName` | string | no | `"Solar Production"` | HomeKit display name for the Solar Production accessory |
116
160
  | `gridName` | string | no | `"Grid Meter - Import"` | HomeKit display name for the Grid Import accessory |
117
161
  | `gridExportName` | string | no | `"Grid Meter - Export"` | HomeKit display name for the Grid Export accessory |
162
+ | `homeConsumptionName` | string | no | `"Home Consumption"` | HomeKit display name for the Home Consumption accessory |
163
+
164
+ \* Required when `autoDiscover` is `false`.
118
165
 
119
166
  ### Finding Your Serial Number
120
167
 
121
- The serial number is printed on the label on the PVS6 unit (format: `ZT...`). It is also visible in the SunStrong Connect app. The last 5 characters of the serial number are used as the local API login password — no separate password configuration is required.
168
+ The serial number is printed on the label on the PVS6 unit (format: `ZT...`). It is also visible in the SunStrong Connect app and is broadcast by the PVS6 itself via mDNS (which is how Auto Discover retrieves it). The last 5 characters are used as the local API login password — no separate password configuration is required.
122
169
 
123
170
  ---
124
171
 
@@ -132,7 +179,6 @@ The serial number is printed on the label on the PVS6 unit (format: `ZT...`). It
132
179
  | OutletInUse | Always `true` | Required by Eve Energy |
133
180
  | Eve Watts | `pv_p × 1000` | Real-time solar output in Watts |
134
181
  | Eve kWh | `pv_en` | Lifetime generation in kWh |
135
- | Eve Voltage | Production meter `v12V` | AC line voltage |
136
182
 
137
183
  ### Grid Import
138
184
 
@@ -142,9 +188,8 @@ The serial number is printed on the label on the PVS6 unit (format: `ZT...`). It
142
188
  | OutletInUse | Always `true` | Required by Eve Energy |
143
189
  | Eve Watts | `max(0, net_p) × 1000` | Import watts; zero when net-exporting |
144
190
  | Eve kWh | `posLtea3phsumKwh` | Lifetime imported energy from consumption CT meter |
145
- | Eve Voltage | Consumption meter `v12V` | AC line voltage |
146
191
 
147
- ### Grid Export *(optional — enabled with `showGridExport: true`)*
192
+ ### Grid Export *(optional — enabled with `accessories.grid: true`)*
148
193
 
149
194
  | Characteristic | Source | Notes |
150
195
  |---|---|---|
@@ -152,7 +197,19 @@ The serial number is printed on the label on the PVS6 unit (format: `ZT...`). It
152
197
  | OutletInUse | Always `true` | Required by Eve Energy |
153
198
  | Eve Watts | `max(0, −net_p) × 1000` | Export watts; zero when importing |
154
199
  | Eve kWh | `negLtea3phsumKwh` | Lifetime exported energy from consumption CT meter |
155
- | Eve Voltage | Consumption meter `v12V` | AC line voltage |
200
+
201
+ ### Home Consumption *(optional — enable with `accessories.homeConsumption: true`)*
202
+
203
+ Shows the total real-time load of the home and a derived lifetime consumption figure. Enable via `accessories.homeConsumption: true` in config.
204
+
205
+ | Characteristic | Source | Notes |
206
+ |---|---|---|
207
+ | On | `site_load_p > 0` | True when the house is drawing power (always true in practice) |
208
+ | OutletInUse | Always `true` | Required by Eve Energy |
209
+ | Eve Watts | `site_load_p × 1000` | Real-time site load in Watts |
210
+ | Eve kWh | `pv_en + posLtea3phsumKwh − negLtea3phsumKwh` | Derived lifetime consumption — all solar generated, plus grid imported, minus grid exported |
211
+
212
+ The derived kWh formula is exact without a battery: solar energy either goes to the home or the grid, so `pv_en − negLtea3phsumKwh` is the on-site solar consumed and `posLtea3phsumKwh` is the grid energy consumed. All three values already come from the existing livedata and meter caches — no additional API calls are required.
156
213
 
157
214
  ---
158
215
 
@@ -161,6 +218,8 @@ The serial number is printed on the label on the PVS6 unit (format: `ZT...`). It
161
218
  The plugin is designed to be resilient to transient PVS6 failures:
162
219
 
163
220
  - If the PVS6 is unreachable at startup, authentication retries every 30 seconds
221
+ - If mDNS discovery times out (30 s) at startup, the platform logs an error and does not start — set `host` and `serialNumber` with `autoDiscover: false` to bypass discovery
222
+ - If the device is unreachable for 2 hours and `autoDiscover` is not `false`, mDNS re-discovery runs automatically to pick up a changed IP or serial
164
223
  - Overlapping poll cycles are skipped — only one request is in flight at a time
165
224
  - Poll cycles are skipped (not fatal) on timeout (>10 s), JSON parse errors, or HTTP 5xx responses
166
225
  - HTTP 5xx triggers a short backoff to avoid overwhelming the PVS6's embedded HTTP server
@@ -10,17 +10,23 @@
10
10
  "type": "string",
11
11
  "default": "PVS6"
12
12
  },
13
+ "autoDiscover": {
14
+ "title": "Auto Discover",
15
+ "type": "boolean",
16
+ "default": true,
17
+ "description": "Automatically find the PVS6 on your local network via mDNS. When enabled, Host and Serial Number are ignored. If the device becomes unreachable for 2 hours, discovery runs again automatically."
18
+ },
13
19
  "host": {
14
20
  "title": "Host",
15
21
  "type": "string",
16
- "placeholder": "192.168.1.x",
17
- "description": "IP address or hostname of the PVS6 on your local network."
22
+ "placeholder": "pvs.local",
23
+ "description": "IP address or hostname of the PVS6. Ignored when Auto Discover is enabled."
18
24
  },
19
25
  "serialNumber": {
20
26
  "title": "Serial Number",
21
27
  "type": "string",
22
28
  "placeholder": "ZT231385000549F1084",
23
- "description": "Full PVS6 serial number. The last 5 characters are used as the login password."
29
+ "description": "Full PVS6 serial number. The last 5 characters are used as the login password. Ignored when Auto Discover is enabled."
24
30
  },
25
31
  "pollInterval": {
26
32
  "title": "Poll Interval (seconds)",
@@ -37,6 +43,12 @@
37
43
  "title": "Enable Grid Meter accessories (Import + Export pair)",
38
44
  "type": "boolean",
39
45
  "default": true
46
+ },
47
+ "homeConsumption": {
48
+ "title": "Enable Home Consumption accessory",
49
+ "type": "boolean",
50
+ "default": false,
51
+ "description": "Shows real-time site load and derived lifetime consumption energy."
40
52
  }
41
53
  }
42
54
  },
@@ -57,8 +69,14 @@
57
69
  "type": "string",
58
70
  "default": "Grid Meter - Export",
59
71
  "description": "HomeKit display name for the Grid Export accessory."
72
+ },
73
+ "homeConsumptionName": {
74
+ "title": "Home Consumption Accessory Display Name",
75
+ "type": "string",
76
+ "default": "Home Consumption",
77
+ "description": "HomeKit display name for the Home Consumption accessory."
60
78
  }
61
79
  },
62
- "required": ["host", "serialNumber"]
80
+ "required": []
63
81
  }
64
82
  }
@@ -0,0 +1,13 @@
1
+ import { PlatformAccessory } from 'homebridge';
2
+ import { PVS6Platform } from './platform';
3
+ import { PVS6Reading } from './pvs6Client';
4
+ export declare class HomeConsumptionAccessory {
5
+ private readonly platform;
6
+ private readonly service;
7
+ private readonly historyService;
8
+ private lastPowerW;
9
+ private lastEnergyKWh;
10
+ constructor(platform: PVS6Platform, accessory: PlatformAccessory, FakeGatoHistoryService: any, displayName: string, serialNumber: string);
11
+ updateValues(reading: PVS6Reading): void;
12
+ }
13
+ //# sourceMappingURL=homeConsumptionAccessory.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"homeConsumptionAccessory.d.ts","sourceRoot":"","sources":["../src/homeConsumptionAccessory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAW,MAAM,YAAY,CAAC;AACxD,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC1C,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAG3C,qBAAa,wBAAwB;IASjC,OAAO,CAAC,QAAQ,CAAC,QAAQ;IAR3B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAU;IAElC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAM;IAErC,OAAO,CAAC,UAAU,CAAK;IACvB,OAAO,CAAC,aAAa,CAAK;gBAGP,QAAQ,EAAE,YAAY,EACvC,SAAS,EAAE,iBAAiB,EAE5B,sBAAsB,EAAE,GAAG,EAC3B,WAAW,EAAE,MAAM,EACnB,YAAY,EAAE,MAAM;IA2CtB,YAAY,CAAC,OAAO,EAAE,WAAW,GAAG,IAAI;CAmBzC"}
@@ -0,0 +1,59 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.HomeConsumptionAccessory = void 0;
4
+ const eveCharacteristics_1 = require("./eveCharacteristics");
5
+ class HomeConsumptionAccessory {
6
+ constructor(platform, accessory,
7
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
8
+ FakeGatoHistoryService, displayName, serialNumber) {
9
+ this.platform = platform;
10
+ this.lastPowerW = 0;
11
+ this.lastEnergyKWh = 0;
12
+ const { Characteristic } = platform;
13
+ const { EveWatts, EveKWh } = platform.eveChars;
14
+ const infoService = accessory.getService(platform.Service.AccessoryInformation) ??
15
+ accessory.addService(platform.Service.AccessoryInformation);
16
+ infoService
17
+ .setCharacteristic(Characteristic.Manufacturer, 'SunStrong')
18
+ .setCharacteristic(Characteristic.Model, 'PVS6')
19
+ .setCharacteristic(Characteristic.SerialNumber, `${serialNumber}-home`);
20
+ const existingService = accessory.services.find(s => s.UUID === eveCharacteristics_1.EVE_ENERGY_SERVICE_UUID);
21
+ this.service = existingService ??
22
+ accessory.addService(new platform.api.hap.Service(displayName, eveCharacteristics_1.EVE_ENERGY_SERVICE_UUID));
23
+ this.service.setCharacteristic(Characteristic.Name, displayName);
24
+ // On = true when site is drawing power (always true in practice).
25
+ this.service
26
+ .getCharacteristic(Characteristic.On)
27
+ .onGet(() => this.lastPowerW > 0)
28
+ .onSet(async () => {
29
+ this.service.updateCharacteristic(Characteristic.On, this.lastPowerW > 0);
30
+ });
31
+ this.service
32
+ .getCharacteristic(Characteristic.OutletInUse)
33
+ .onGet(() => true);
34
+ this.service
35
+ .getCharacteristic(EveWatts)
36
+ .onGet(() => this.lastPowerW);
37
+ this.service
38
+ .getCharacteristic(EveKWh)
39
+ .onGet(() => this.lastEnergyKWh);
40
+ this.historyService = new FakeGatoHistoryService('energy', accessory, { storage: 'fs' });
41
+ }
42
+ updateValues(reading) {
43
+ const { Characteristic } = this.platform;
44
+ const { EveWatts, EveKWh } = this.platform.eveChars;
45
+ this.lastPowerW = reading.siteLoadPowerW;
46
+ this.lastEnergyKWh = reading.homeConsumptionKWh;
47
+ this.service.updateCharacteristic(Characteristic.On, this.lastPowerW > 0);
48
+ this.service.updateCharacteristic(Characteristic.OutletInUse, true);
49
+ this.service.updateCharacteristic(EveWatts, this.lastPowerW);
50
+ this.service.updateCharacteristic(EveKWh, this.lastEnergyKWh);
51
+ this.historyService.addEntry({
52
+ time: Math.round(Date.now() / 1000),
53
+ power: this.lastPowerW,
54
+ });
55
+ this.platform.log.debug(`Home Consumption: ${this.lastPowerW}W ${this.lastEnergyKWh.toFixed(3)}kWh`);
56
+ }
57
+ }
58
+ exports.HomeConsumptionAccessory = HomeConsumptionAccessory;
59
+ //# sourceMappingURL=homeConsumptionAccessory.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"homeConsumptionAccessory.js","sourceRoot":"","sources":["../src/homeConsumptionAccessory.ts"],"names":[],"mappings":"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"}
@@ -7,19 +7,28 @@ export declare class PVS6Platform implements DynamicPlatformPlugin {
7
7
  readonly eveChars: EveChars;
8
8
  readonly log: Logger;
9
9
  readonly accessories: PlatformAccessory[];
10
- private readonly client;
10
+ private client;
11
11
  private readonly config;
12
12
  private readonly pollIntervalMs;
13
13
  private solarAccessory?;
14
14
  private gridImportAccessory?;
15
15
  private gridExportAccessory?;
16
+ private homeConsumptionAccessory?;
16
17
  private pollTimer?;
17
18
  private pollInFlight;
18
19
  private backedOff;
20
+ private authGeneration;
21
+ private lastSuccessfulPollTime;
22
+ private rediscovering;
19
23
  constructor(log: Logger, config: PlatformConfig, api: API);
20
24
  configureAccessory(accessory: PlatformAccessory): void;
25
+ private resolveConfig;
21
26
  private setupAccessories;
22
27
  private getOrCreateAccessory;
28
+ private get discoveryEnabled();
29
+ private checkRediscovery;
30
+ private triggerRediscovery;
31
+ private stopPolling;
23
32
  private startAuthAndPolling;
24
33
  private startPolling;
25
34
  private enterBackoff;
@@ -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;AAOpB,OAAO,EAA4B,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAO1E,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;IAEtD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAa;IACpC,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;IAElD,OAAO,CAAC,SAAS,CAAC,CAAiC;IACnD,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,SAAS,CAAS;gBAGxB,GAAG,EAAE,MAAM,EACX,MAAM,EAAE,cAAc,EACtB,GAAG,EAAE,GAAG;IA8CV,kBAAkB,CAAC,SAAS,EAAE,iBAAiB,GAAG,IAAI;IAKtD,OAAO,CAAC,gBAAgB;IAyCxB,OAAO,CAAC,oBAAoB;IAgB5B,OAAO,CAAC,mBAAmB;IAa3B,OAAO,CAAC,YAAY;IAmDpB,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;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"}
package/dist/platform.js CHANGED
@@ -6,16 +6,24 @@ const pvs6Client_1 = require("./pvs6Client");
6
6
  const solarAccessory_1 = require("./solarAccessory");
7
7
  const gridImportAccessory_1 = require("./gridImportAccessory");
8
8
  const gridExportAccessory_1 = require("./gridExportAccessory");
9
+ const homeConsumptionAccessory_1 = require("./homeConsumptionAccessory");
9
10
  const eveCharacteristics_1 = require("./eveCharacteristics");
11
+ const pvs6Discovery_1 = require("./pvs6Discovery");
10
12
  const MIN_POLL_INTERVAL = 5;
11
13
  const AUTH_RETRY_MS = 30000;
12
14
  const AUTH_BACKOFF_MS = 60000;
13
15
  const OVERLOAD_BACKOFF_MS = 15000;
16
+ const REDISCOVERY_THRESHOLD_MS = 2 * 60 * 60 * 1000; // 2 hours
14
17
  class PVS6Platform {
15
18
  constructor(log, config, api) {
16
19
  this.accessories = [];
17
20
  this.pollInFlight = false;
18
21
  this.backedOff = false;
22
+ // Incremented when re-discovery fires so stale auth-retry timeouts know to abort.
23
+ this.authGeneration = 0;
24
+ // Tracks when the last successful poll data was received, for re-discovery gating.
25
+ this.lastSuccessfulPollTime = Date.now();
26
+ this.rediscovering = false;
19
27
  this.log = log;
20
28
  this.api = api;
21
29
  this.Service = api.hap.Service;
@@ -23,27 +31,26 @@ class PVS6Platform {
23
31
  this.eveChars = (0, eveCharacteristics_1.createEveCharacteristics)(api);
24
32
  const pvs6Config = config;
25
33
  this.config = pvs6Config;
26
- if (!pvs6Config.host || !pvs6Config.serialNumber) {
27
- this.log.error('Missing required config: host and serialNumber are required.');
28
- this.client = new pvs6Client_1.PVS6Client('', '', log);
29
- this.pollIntervalMs = MIN_POLL_INTERVAL * 1000;
30
- return;
31
- }
32
34
  let pollInterval = pvs6Config.pollInterval ?? 10;
33
35
  if (pollInterval < MIN_POLL_INTERVAL) {
34
36
  this.log.warn(`pollInterval ${pollInterval}s is below minimum; clamping to ${MIN_POLL_INTERVAL}s`);
35
37
  pollInterval = MIN_POLL_INTERVAL;
36
38
  }
37
39
  this.pollIntervalMs = pollInterval * 1000;
38
- this.client = new pvs6Client_1.PVS6Client(pvs6Config.host, pvs6Config.serialNumber, log);
39
40
  this.log.info('Finished initializing platform:', config.name ?? settings_1.PLATFORM_NAME);
40
41
  this.api.on('didFinishLaunching', () => {
41
- this.log.debug('didFinishLaunching — setting up accessories and authenticating');
42
- // fakegato-history must be loaded after the api is fully initialised
42
+ this.log.debug('didFinishLaunching — resolving config, setting up accessories');
43
43
  // eslint-disable-next-line @typescript-eslint/no-require-imports
44
44
  const FakeGatoHistoryService = require('fakegato-history')(this.api);
45
- this.setupAccessories(FakeGatoHistoryService);
46
- this.startAuthAndPolling();
45
+ this.resolveConfig()
46
+ .then(({ host, serialNumber }) => {
47
+ this.client = new pvs6Client_1.PVS6Client(host, serialNumber, this.log);
48
+ this.setupAccessories(FakeGatoHistoryService, serialNumber);
49
+ this.startAuthAndPolling();
50
+ })
51
+ .catch((err) => {
52
+ this.log.error(`Cannot start PVS6 platform: ${err.message}`);
53
+ });
47
54
  });
48
55
  this.api.on('shutdown', () => {
49
56
  if (this.pollTimer) {
@@ -56,10 +63,35 @@ class PVS6Platform {
56
63
  this.log.info('Loading accessory from cache:', accessory.displayName);
57
64
  this.accessories.push(accessory);
58
65
  }
66
+ // Determines host + serialNumber from config or mDNS discovery.
67
+ //
68
+ // autoDiscover: true → always run mDNS discovery; host/serialNumber in config are ignored.
69
+ // autoDiscover: false → must supply both host and serialNumber manually; no mDNS.
70
+ // autoDiscover: unset → use config values if both are present, otherwise discover what's missing.
71
+ async resolveConfig() {
72
+ const { host, serialNumber, autoDiscover } = this.config;
73
+ if (autoDiscover === false) {
74
+ if (!host || !serialNumber) {
75
+ throw new Error('host and serialNumber are required when Auto Discover is disabled');
76
+ }
77
+ return { host, serialNumber };
78
+ }
79
+ if (autoDiscover === true) {
80
+ return (0, pvs6Discovery_1.discoverPVS6)(this.log);
81
+ }
82
+ // autoDiscover not set: use config if complete, otherwise discover what's missing.
83
+ if (host && serialNumber) {
84
+ return { host, serialNumber };
85
+ }
86
+ const discovered = await (0, pvs6Discovery_1.discoverPVS6)(this.log);
87
+ return {
88
+ host: host ?? discovered.host,
89
+ serialNumber: serialNumber ?? discovered.serialNumber,
90
+ };
91
+ }
59
92
  setupAccessories(
60
93
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
61
- FakeGatoHistoryService) {
62
- const { serialNumber } = this.config;
94
+ FakeGatoHistoryService, serialNumber) {
63
95
  // Solar Production is always registered.
64
96
  const solarName = this.config.solarName ?? 'Solar Production';
65
97
  const solarUuid = this.api.hap.uuid.generate(`${serialNumber}-solar`);
@@ -73,6 +105,12 @@ class PVS6Platform {
73
105
  const exportUuid = this.api.hap.uuid.generate(`${serialNumber}-grid-export`);
74
106
  this.gridExportAccessory = new gridExportAccessory_1.GridExportAccessory(this, this.getOrCreateAccessory(exportUuid, exportName), FakeGatoHistoryService, exportName, serialNumber);
75
107
  }
108
+ // Home Consumption is optional (default: disabled).
109
+ if (this.config.accessories?.homeConsumption === true) {
110
+ const homeName = this.config.homeConsumptionName ?? 'Home Consumption';
111
+ const homeUuid = this.api.hap.uuid.generate(`${serialNumber}-home`);
112
+ this.homeConsumptionAccessory = new homeConsumptionAccessory_1.HomeConsumptionAccessory(this, this.getOrCreateAccessory(homeUuid, homeName), FakeGatoHistoryService, homeName, serialNumber);
113
+ }
76
114
  }
77
115
  getOrCreateAccessory(uuid, displayName) {
78
116
  const existing = this.accessories.find(a => a.UUID === uuid);
@@ -88,20 +126,81 @@ class PVS6Platform {
88
126
  this.accessories.push(accessory);
89
127
  return accessory;
90
128
  }
129
+ // autoDiscover === false means the user pinned specific host/serial — never re-discover.
130
+ get discoveryEnabled() {
131
+ return this.config.autoDiscover !== false;
132
+ }
133
+ // If the device has been unreachable for 2 hours, attempt mDNS re-discovery.
134
+ // Not triggered when autoDiscover is explicitly false.
135
+ checkRediscovery() {
136
+ if (!this.discoveryEnabled)
137
+ return;
138
+ if (this.rediscovering)
139
+ return;
140
+ if (Date.now() - this.lastSuccessfulPollTime > REDISCOVERY_THRESHOLD_MS) {
141
+ void this.triggerRediscovery();
142
+ }
143
+ }
144
+ async triggerRediscovery() {
145
+ if (this.rediscovering)
146
+ return;
147
+ this.rediscovering = true;
148
+ this.log.warn('PVS6 unreachable for 2+ hours — attempting mDNS re-discovery...');
149
+ try {
150
+ const { host, serialNumber } = await (0, pvs6Discovery_1.discoverPVS6)(this.log);
151
+ this.log.info(`Re-discovery found PVS6 at ${host} (serial: ${serialNumber}) — reconnecting`);
152
+ // Increment generation to cancel any pending auth-retry timeouts.
153
+ this.authGeneration++;
154
+ this.stopPolling();
155
+ this.client = new pvs6Client_1.PVS6Client(host, serialNumber, this.log);
156
+ this.lastSuccessfulPollTime = Date.now();
157
+ this.startAuthAndPolling();
158
+ }
159
+ catch (err) {
160
+ const msg = err instanceof Error ? err.message : String(err);
161
+ this.log.warn(`mDNS re-discovery failed: ${msg} — will try again in 2 hours`);
162
+ // Reset the clock so the next attempt is 2 hours from now, not immediately.
163
+ this.lastSuccessfulPollTime = Date.now();
164
+ }
165
+ finally {
166
+ this.rediscovering = false;
167
+ }
168
+ }
169
+ stopPolling() {
170
+ if (this.pollTimer) {
171
+ clearInterval(this.pollTimer);
172
+ this.pollTimer = undefined;
173
+ }
174
+ this.pollInFlight = false;
175
+ this.backedOff = false;
176
+ }
91
177
  startAuthAndPolling() {
178
+ if (this.rediscovering)
179
+ return;
180
+ const generation = this.authGeneration;
92
181
  this.client
93
182
  .authenticate()
94
183
  .then(() => {
184
+ if (generation !== this.authGeneration)
185
+ return;
95
186
  this.log.info('Authenticated with PVS6 — starting polling');
96
187
  this.startPolling();
97
188
  })
98
189
  .catch((err) => {
190
+ if (generation !== this.authGeneration)
191
+ return;
192
+ this.checkRediscovery();
99
193
  this.log.error(`Authentication failed: ${err.message}. Retrying in ${AUTH_RETRY_MS / 1000}s`);
100
- setTimeout(() => this.startAuthAndPolling(), AUTH_RETRY_MS);
194
+ setTimeout(() => {
195
+ if (generation !== this.authGeneration)
196
+ return;
197
+ this.startAuthAndPolling();
198
+ }, AUTH_RETRY_MS);
101
199
  });
102
200
  }
103
201
  startPolling() {
104
202
  this.pollTimer = setInterval(async () => {
203
+ this.checkRediscovery();
105
204
  if (this.pollInFlight) {
106
205
  this.log.debug('Poll skipped — previous request still in flight');
107
206
  return;
@@ -113,9 +212,11 @@ class PVS6Platform {
113
212
  this.pollInFlight = true;
114
213
  try {
115
214
  const reading = await this.client.poll();
215
+ this.lastSuccessfulPollTime = Date.now();
116
216
  this.solarAccessory?.updateValues(reading);
117
217
  this.gridImportAccessory?.updateValues(reading);
118
218
  this.gridExportAccessory?.updateValues(reading);
219
+ this.homeConsumptionAccessory?.updateValues(reading);
119
220
  }
120
221
  catch (err) {
121
222
  if (err instanceof pvs6Client_1.HttpError) {
@@ -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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"}
@@ -5,6 +5,8 @@ export interface PVS6Reading {
5
5
  netPowerW: number;
6
6
  gridImportKWh: number;
7
7
  gridExportKWh: number;
8
+ siteLoadPowerW: number;
9
+ homeConsumptionKWh: number;
8
10
  }
9
11
  export declare class HttpError extends Error {
10
12
  readonly statusCode: number;
@@ -1 +1 @@
1
- {"version":3,"file":"pvs6Client.d.ts","sourceRoot":"","sources":["../src/pvs6Client.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AAEpC,MAAM,WAAW,WAAW;IAC1B,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,qBAAa,SAAU,SAAQ,KAAK;aAEhB,UAAU,EAAE,MAAM;gBAAlB,UAAU,EAAE,MAAM,EAClC,OAAO,EAAE,MAAM;CAKlB;AAKD,qBAAa,UAAU;IAoBnB,OAAO,CAAC,QAAQ,CAAC,IAAI;IACrB,OAAO,CAAC,QAAQ,CAAC,YAAY;IAC7B,OAAO,CAAC,QAAQ,CAAC,GAAG;IArBtB,OAAO,CAAC,aAAa,CAAM;IAC3B,OAAO,CAAC,eAAe,CAAuB;IAC9C,OAAO,CAAC,YAAY,CAAuB;IAC3C,OAAO,CAAC,mBAAmB,CAAuB;IAClD,OAAO,CAAC,eAAe,CAAK;IAG5B,OAAO,CAAC,WAAW,CAMjB;IAEF,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,eAAe,CAAQ;IAC/C,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAS;gBAGxB,IAAI,EAAE,MAAM,EACZ,YAAY,EAAE,MAAM,EACpB,GAAG,EAAE,MAAM;IAG9B,OAAO,KAAK,QAAQ,GAEnB;IAIK,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC;IAyB7B,IAAI,IAAI,OAAO,CAAC,WAAW,CAAC;YAMpB,UAAU;IAgExB,OAAO,CAAC,YAAY;IA8BpB,OAAO,CAAC,cAAc;IAsBtB,OAAO,CAAC,GAAG;IAeX,OAAO,CAAC,UAAU;CAsDnB"}
1
+ {"version":3,"file":"pvs6Client.d.ts","sourceRoot":"","sources":["../src/pvs6Client.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AAEpC,MAAM,WAAW,WAAW;IAC1B,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,MAAM,CAAC;IACtB,cAAc,EAAE,MAAM,CAAC;IACvB,kBAAkB,EAAE,MAAM,CAAC;CAC5B;AAED,qBAAa,SAAU,SAAQ,KAAK;aAEhB,UAAU,EAAE,MAAM;gBAAlB,UAAU,EAAE,MAAM,EAClC,OAAO,EAAE,MAAM;CAKlB;AAKD,qBAAa,UAAU;IAsBnB,OAAO,CAAC,QAAQ,CAAC,IAAI;IACrB,OAAO,CAAC,QAAQ,CAAC,YAAY;IAC7B,OAAO,CAAC,QAAQ,CAAC,GAAG;IAvBtB,OAAO,CAAC,aAAa,CAAM;IAC3B,OAAO,CAAC,eAAe,CAAuB;IAC9C,OAAO,CAAC,YAAY,CAAuB;IAC3C,OAAO,CAAC,mBAAmB,CAAuB;IAClD,OAAO,CAAC,eAAe,CAAK;IAG5B,OAAO,CAAC,WAAW,CAQjB;IAEF,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,eAAe,CAAQ;IAC/C,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAS;gBAGxB,IAAI,EAAE,MAAM,EACZ,YAAY,EAAE,MAAM,EACpB,GAAG,EAAE,MAAM;IAG9B,OAAO,KAAK,QAAQ,GAEnB;IAIK,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC;IAyB7B,IAAI,IAAI,OAAO,CAAC,WAAW,CAAC;YAMpB,UAAU;IAgExB,OAAO,CAAC,YAAY;IAqCpB,OAAO,CAAC,cAAc;IAsBtB,OAAO,CAAC,GAAG;IAeX,OAAO,CAAC,UAAU;CAsDnB"}
@@ -60,6 +60,8 @@ class PVS6Client {
60
60
  netPowerW: 0,
61
61
  gridImportKWh: 0,
62
62
  gridExportKWh: 0,
63
+ siteLoadPowerW: 0,
64
+ homeConsumptionKWh: 0,
63
65
  };
64
66
  }
65
67
  get password() {
@@ -162,18 +164,24 @@ class PVS6Client {
162
164
  const pvPowerKW = this.num(livedata['/sys/livedata/pv_p'], 'pv_p');
163
165
  const pvEnergyKWh = this.num(livedata['/sys/livedata/pv_en'], 'pv_en');
164
166
  const netPowerKW = this.num(livedata['/sys/livedata/net_p'], 'net_p');
167
+ const siteLoadPowerKW = this.num(livedata['/sys/livedata/site_load_p'], 'site_load_p');
165
168
  const gridImportKWhRaw = consIdx !== null
166
169
  ? this.num(mdata[`/sys/devices/meter/${consIdx}/posLtea3phsumKwh`], 'cons.posLtea3phsumKwh')
167
170
  : null;
168
171
  const gridExportKWhRaw = consIdx !== null
169
172
  ? this.num(mdata[`/sys/devices/meter/${consIdx}/negLtea3phsumKwh`], 'cons.negLtea3phsumKwh')
170
173
  : null;
174
+ const resolvedPvEnergyKWh = pvEnergyKWh ?? last.pvEnergyKWh;
175
+ const resolvedGridImportKWh = gridImportKWhRaw ?? last.gridImportKWh;
176
+ const resolvedGridExportKWh = gridExportKWhRaw ?? last.gridExportKWh;
171
177
  const reading = {
172
178
  pvPowerW: pvPowerKW !== null ? Math.round(pvPowerKW * 1000 * 10) / 10 : last.pvPowerW,
173
- pvEnergyKWh: pvEnergyKWh ?? last.pvEnergyKWh,
179
+ pvEnergyKWh: resolvedPvEnergyKWh,
174
180
  netPowerW: netPowerKW !== null ? Math.round(netPowerKW * 1000 * 10) / 10 : last.netPowerW,
175
- gridImportKWh: gridImportKWhRaw ?? last.gridImportKWh,
176
- gridExportKWh: gridExportKWhRaw ?? last.gridExportKWh,
181
+ gridImportKWh: resolvedGridImportKWh,
182
+ gridExportKWh: resolvedGridExportKWh,
183
+ siteLoadPowerW: siteLoadPowerKW !== null ? Math.round(siteLoadPowerKW * 1000 * 10) / 10 : last.siteLoadPowerW,
184
+ homeConsumptionKWh: resolvedPvEnergyKWh + resolvedGridImportKWh - resolvedGridExportKWh,
177
185
  };
178
186
  this.lastReading = reading;
179
187
  return reading;
@@ -1 +1 @@
1
- {"version":3,"file":"pvs6Client.js","sourceRoot":"","sources":["../src/pvs6Client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"pvs6Client.js","sourceRoot":"","sources":["../src/pvs6Client.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,6CAA+B;AAc/B,MAAa,SAAU,SAAQ,KAAK;IAClC,YACkB,UAAkB,EAClC,OAAe;QAEf,KAAK,CAAC,OAAO,CAAC,CAAC;QAHC,eAAU,GAAV,UAAU,CAAQ;QAIlC,IAAI,CAAC,IAAI,GAAG,WAAW,CAAC;IAC1B,CAAC;CACF;AARD,8BAQC;AAKD,MAAa,UAAU;IAqBrB,YACmB,IAAY,EACZ,YAAoB,EACpB,GAAW;QAFX,SAAI,GAAJ,IAAI,CAAQ;QACZ,iBAAY,GAAZ,YAAY,CAAQ;QACpB,QAAG,GAAH,GAAG,CAAQ;QAvBtB,kBAAa,GAAG,EAAE,CAAC;QACnB,oBAAe,GAAkB,IAAI,CAAC;QACtC,iBAAY,GAAkB,IAAI,CAAC;QACnC,wBAAmB,GAAkB,IAAI,CAAC;QAC1C,oBAAe,GAAG,CAAC,CAAC;QAE5B,6FAA6F;QACrF,gBAAW,GAAgB;YACjC,QAAQ,EAAE,CAAC;YACX,WAAW,EAAE,CAAC;YACd,SAAS,EAAE,CAAC;YACZ,aAAa,EAAE,CAAC;YAChB,aAAa,EAAE,CAAC;YAChB,cAAc,EAAE,CAAC;YACjB,kBAAkB,EAAE,CAAC;SACtB,CAAC;IASC,CAAC;IAEJ,IAAY,QAAQ;QAClB,OAAO,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IACrC,CAAC;IAED,2DAA2D;IAC3D,2FAA2F;IAC3F,KAAK,CAAC,YAAY;QAChB,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,aAAa,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;QACjF,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,aAAa,EAAE;YACtE,aAAa,EAAE,SAAS,WAAW,EAAE;SACtC,CAAC,CAAC;QAEH,IAAI,MAAM,KAAK,GAAG,EAAE,CAAC;YACnB,MAAM,IAAI,SAAS,CAAC,GAAG,EAAE,mDAAmD,CAAC,CAAC;QAChF,CAAC;QACD,IAAI,MAAM,KAAK,GAAG,EAAE,CAAC;YACnB,MAAM,IAAI,SAAS,CAAC,MAAM,EAAE,sBAAsB,MAAM,EAAE,CAAC,CAAC;QAC9D,CAAC;QAED,MAAM,eAAe,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;QAC9C,IAAI,eAAe,IAAI,eAAe,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAClD,+EAA+E;YAC/E,IAAI,CAAC,aAAa,GAAG,eAAe,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;YAC7D,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,mBAAmB,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC;QAC1D,CAAC;QAED,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,yBAAyB,CAAC,CAAC;IAC5C,CAAC;IAED,2DAA2D;IAC3D,6EAA6E;IAC7E,KAAK,CAAC,IAAI;QACR,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,UAAU,EAAE,gBAAgB,CAAC,CAAC;QACzE,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,qBAAqB,CAAC,CAAC;QACxE,OAAO,IAAI,CAAC,YAAY,CAAC,YAAY,EAAE,SAAS,CAAC,CAAC;IACpD,CAAC;IAEO,KAAK,CAAC,UAAU,CAAC,IAA0B,EAAE,YAAoB;QACvE,MAAM,OAAO,GAAG,IAAI,KAAK,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC;QAE/E,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;YACrB,IAAI,CAAC;gBACH,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,eAAe,kBAAkB,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;gBAC5G,IAAI,MAAM,KAAK,GAAG,EAAE,CAAC;oBACnB,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAY,CAAC;oBACzC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,IAAI,kBAAkB,OAAO,GAAG,CAAC,CAAC;oBACpD,OAAO,IAAI,CAAC;gBACd,CAAC;gBACD,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,IAAI,wBAAwB,MAAM,gCAAgC,CAAC,CAAC;YACxF,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,IAAI,0BAA0B,GAAG,iCAAiC,CAAC,CAAC;YACxF,CAAC;YACD,6DAA6D;YAC7D,IAAI,IAAI,KAAK,UAAU,EAAE,CAAC;gBACxB,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;YAC9B,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;YAC3B,CAAC;QACH,CAAC;QAED,kEAAkE;QAClE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,eAAe,YAAY,UAAU,CAAC,CAAC;QAE7F,IAAI,MAAM,KAAK,GAAG,EAAE,CAAC;YACnB,MAAM,IAAI,SAAS,CAAC,GAAG,EAAE,gCAAgC,CAAC,CAAC;QAC7D,CAAC;QACD,IAAI,MAAM,IAAI,GAAG,EAAE,CAAC;YAClB,MAAM,IAAI,SAAS,CAAC,MAAM,EAAE,aAAa,MAAM,6BAA6B,CAAC,CAAC;QAChF,CAAC;QACD,IAAI,MAAM,KAAK,GAAG,EAAE,CAAC;YACnB,MAAM,IAAI,SAAS,CAAC,MAAM,EAAE,mBAAmB,MAAM,EAAE,CAAC,CAAC;QAC3D,CAAC;QAED,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC;YACjB,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;QACnD,CAAC;QAED,IAAI,IAAa,CAAC;QAClB,IAAI,CAAC;YACH,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAY,CAAC;QACrC,CAAC;QAAC,MAAM,CAAC;YACP,MAAM,IAAI,KAAK,CAAC,sCAAsC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;QAC9E,CAAC;QAED,wFAAwF;QACxF,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YACpC,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;gBACzB,MAAM,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;gBAC7B,IAAI,IAAI,KAAK,UAAU,EAAE,CAAC;oBACxB,IAAI,CAAC,eAAe,GAAG,EAAE,CAAC;gBAC5B,CAAC;qBAAM,CAAC;oBACN,IAAI,CAAC,YAAY,GAAG,EAAE,CAAC;gBACzB,CAAC;gBACD,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,IAAI,sBAAsB,EAAE,EAAE,CAAC,CAAC;gBAClD,MAAM;YACR,CAAC;QACH,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAEO,YAAY,CAAC,QAAiB,EAAE,KAAc;QACpD,IAAI,IAAI,CAAC,mBAAmB,KAAK,IAAI,EAAE,CAAC;YACtC,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;QAC7B,CAAC;QAED,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC;QAC9B,MAAM,OAAO,GAAG,IAAI,CAAC,mBAAmB,CAAC;QAEzC,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,oBAAoB,CAAC,EAAE,MAAM,CAAC,CAAC;QACnE,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,qBAAqB,CAAC,EAAE,OAAO,CAAC,CAAC;QACvE,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,qBAAqB,CAAC,EAAE,OAAO,CAAC,CAAC;QACtE,MAAM,eAAe,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,2BAA2B,CAAC,EAAE,aAAa,CAAC,CAAC;QACvF,MAAM,gBAAgB,GAAG,OAAO,KAAK,IAAI;YACvC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,sBAAsB,OAAO,mBAAmB,CAAC,EAAE,uBAAuB,CAAC;YAC5F,CAAC,CAAC,IAAI,CAAC;QACT,MAAM,gBAAgB,GAAG,OAAO,KAAK,IAAI;YACvC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,sBAAsB,OAAO,mBAAmB,CAAC,EAAE,uBAAuB,CAAC;YAC5F,CAAC,CAAC,IAAI,CAAC;QAET,MAAM,mBAAmB,GAAG,WAAW,IAAI,IAAI,CAAC,WAAW,CAAC;QAC5D,MAAM,qBAAqB,GAAG,gBAAgB,IAAI,IAAI,CAAC,aAAa,CAAC;QACrE,MAAM,qBAAqB,GAAG,gBAAgB,IAAI,IAAI,CAAC,aAAa,CAAC;QAErE,MAAM,OAAO,GAAgB;YAC3B,QAAQ,EAAE,SAAS,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,GAAG,IAAI,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ;YACrF,WAAW,EAAE,mBAAmB;YAChC,SAAS,EAAE,UAAU,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,GAAG,IAAI,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS;YACzF,aAAa,EAAE,qBAAqB;YACpC,aAAa,EAAE,qBAAqB;YACpC,cAAc,EAAE,eAAe,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,eAAe,GAAG,IAAI,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,cAAc;YAC7G,kBAAkB,EAAE,mBAAmB,GAAG,qBAAqB,GAAG,qBAAqB;SACxF,CAAC;QAEF,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC;QAC3B,OAAO,OAAO,CAAC;IACjB,CAAC;IAEO,cAAc,CAAC,KAAc;QACnC,MAAM,OAAO,GAAG,IAAI,GAAG,EAAU,CAAC;QAClC,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;YACrC,MAAM,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,iCAAiC,CAAC,CAAC;YACvD,IAAI,CAAC,EAAE,CAAC;gBACN,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACpB,CAAC;QACH,CAAC;QAED,KAAK,MAAM,GAAG,IAAI,OAAO,EAAE,CAAC;YAC1B,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,sBAAsB,GAAG,YAAY,CAAC,IAAI,EAAE,CAAC,CAAC;YACzE,IAAI,KAAK,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;gBACtC,IAAI,CAAC,mBAAmB,GAAG,GAAG,CAAC;gBAC/B,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,8BAA8B,GAAG,KAAK,KAAK,EAAE,CAAC,CAAC;YAChE,CAAC;QACH,CAAC;QAED,IAAI,IAAI,CAAC,mBAAmB,KAAK,IAAI,EAAE,CAAC;YACtC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,mEAAmE,CAAC,CAAC;QACrF,CAAC;IACH,CAAC;IAEO,GAAG,CAAC,GAAgC,EAAE,KAAa;QACzD,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,EAAE,EAAE,CAAC;YACpC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,SAAS,KAAK,sDAAsD,CAAC,CAAC;YACrF,OAAO,IAAI,CAAC;QACd,CAAC;QACD,MAAM,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;QACxB,IAAI,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;YACf,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,SAAS,KAAK,qBAAqB,GAAG,2BAA2B,CAAC,CAAC;YAClF,OAAO,IAAI,CAAC;QACd,CAAC;QACD,OAAO,GAAG,CAAC;IACb,CAAC;IAED,oDAAoD;IACpD,2FAA2F;IACnF,UAAU,CAChB,MAAc,EACd,IAAY,EACZ,eAAuC,EAAE;QAEzC,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACrC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YACvB,MAAM,OAAO,GAAG,GAAG,GAAG,IAAI,CAAC,eAAe,CAAC;YAC3C,MAAM,KAAK,GAAG,IAAI,CAAC,eAAe,GAAG,CAAC,IAAI,OAAO,GAAG,UAAU,CAAC,eAAe;gBAC5E,CAAC,CAAC,UAAU,CAAC,eAAe,GAAG,OAAO;gBACtC,CAAC,CAAC,CAAC,CAAC;YAEN,MAAM,SAAS,GAAG,GAAG,EAAE;gBACrB,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;gBAElC,MAAM,OAAO,GAA2B,EAAE,GAAG,YAAY,EAAE,CAAC;gBAC5D,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;oBACpD,OAAO,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC,aAAa,CAAC;gBACzC,CAAC;gBAED,MAAM,OAAO,GAAyB;oBACpC,QAAQ,EAAE,IAAI,CAAC,IAAI;oBACnB,IAAI;oBACJ,MAAM;oBACN,OAAO;oBACP,kBAAkB,EAAE,KAAK;iBAC1B,CAAC;gBAEF,MAAM,GAAG,GAAG,KAAK,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE;oBACzC,MAAM,MAAM,GAAa,EAAE,CAAC;oBAC5B,GAAG,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAa,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;oBACtD,GAAG,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE;wBACjB,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;wBACpD,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,MAAM,IAAI,IAAI,WAAW,GAAG,CAAC,UAAU,EAAE,CAAC,CAAC;wBAC7D,OAAO,CAAC,EAAE,MAAM,EAAE,GAAG,CAAC,UAAU,IAAI,CAAC,EAAE,OAAO,EAAE,GAAG,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;oBACvE,CAAC,CAAC,CAAC;gBACL,CAAC,CAAC,CAAC;gBAEH,GAAG,CAAC,UAAU,CAAC,UAAU,CAAC,UAAU,EAAE,GAAG,EAAE;oBACzC,GAAG,CAAC,OAAO,CAAC,IAAI,KAAK,CAAC,yBAAyB,UAAU,CAAC,UAAU,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC;gBACnF,CAAC,CAAC,CAAC;gBAEH,GAAG,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;gBACtC,GAAG,CAAC,GAAG,EAAE,CAAC;YACZ,CAAC,CAAC;YAEF,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;gBACd,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,0BAA0B,KAAK,6BAA6B,CAAC,CAAC;gBAC7E,UAAU,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;YAC/B,CAAC;iBAAM,CAAC;gBACN,SAAS,EAAE,CAAC;YACd,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;;AA/PH,gCAgQC;AA9OyB,0BAAe,GAAG,IAAI,AAAP,CAAQ;AACvB,qBAAU,GAAG,KAAK,AAAR,CAAS"}
@@ -0,0 +1,7 @@
1
+ import { Logger } from 'homebridge';
2
+ export interface PVS6DiscoveryResult {
3
+ host: string;
4
+ serialNumber: string;
5
+ }
6
+ export declare function discoverPVS6(log: Logger): Promise<PVS6DiscoveryResult>;
7
+ //# sourceMappingURL=pvs6Discovery.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pvs6Discovery.d.ts","sourceRoot":"","sources":["../src/pvs6Discovery.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AAEpC,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,MAAM,CAAC;CACtB;AA2GD,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAEtE"}
@@ -0,0 +1,95 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.discoverPVS6 = discoverPVS6;
7
+ const bonjour_hap_1 = __importDefault(require("bonjour-hap"));
8
+ const child_process_1 = require("child_process");
9
+ const DISCOVERY_TIMEOUT_MS = 30000;
10
+ const PVS6_SERVICE_TYPE = 'pvs6';
11
+ function discoverPVS6Bonjour(log) {
12
+ return new Promise((resolve, reject) => {
13
+ log.info(`mDNS: scanning for _${PVS6_SERVICE_TYPE}._tcp — will time out in ${DISCOVERY_TIMEOUT_MS / 1000}s`);
14
+ const bonjour = (0, bonjour_hap_1.default)();
15
+ const browser = bonjour.find({ type: PVS6_SERVICE_TYPE });
16
+ const cleanup = (cb) => {
17
+ browser.stop();
18
+ bonjour.destroy(cb);
19
+ };
20
+ const timer = setTimeout(() => {
21
+ cleanup(() => {
22
+ reject(new Error(`mDNS discovery timed out after ${DISCOVERY_TIMEOUT_MS / 1000}s — ` +
23
+ 'set host and serialNumber in config to skip auto-discovery'));
24
+ });
25
+ }, DISCOVERY_TIMEOUT_MS);
26
+ browser.on('up', (service) => {
27
+ // Strip trailing dot that mDNS hostnames include (e.g. "pvs.local." → "pvs.local")
28
+ const host = service.host?.replace(/\.$/, '');
29
+ const serialNumber = service.txt?.serialnum;
30
+ if (!host || !serialNumber) {
31
+ log.warn(`mDNS: PVS6 service found but missing host or serialnum — host=${host}, txt=${JSON.stringify(service.txt)}`);
32
+ return;
33
+ }
34
+ clearTimeout(timer);
35
+ cleanup(() => {
36
+ log.info(`mDNS: discovered PVS6 at ${host} (serial: ${serialNumber})`);
37
+ resolve({ host, serialNumber });
38
+ });
39
+ });
40
+ });
41
+ }
42
+ function discoverPVS6Avahi(log) {
43
+ return new Promise((resolve, reject) => {
44
+ log.info(`mDNS: using avahi-browse for Linux discovery — will time out in ${DISCOVERY_TIMEOUT_MS / 1000}s`);
45
+ const proc = (0, child_process_1.spawn)('avahi-browse', ['-r', '-p', `_${PVS6_SERVICE_TYPE}._tcp`]);
46
+ let resolved = false;
47
+ const timer = setTimeout(() => {
48
+ proc.kill();
49
+ reject(new Error(`mDNS discovery timed out after ${DISCOVERY_TIMEOUT_MS / 1000}s — ` +
50
+ 'set host and serialNumber in config to skip auto-discovery'));
51
+ }, DISCOVERY_TIMEOUT_MS);
52
+ proc.stdout.on('data', (data) => {
53
+ if (resolved)
54
+ return;
55
+ for (const line of data.toString().split('\n')) {
56
+ if (resolved || !line.startsWith('='))
57
+ continue;
58
+ // Parseable resolved format: =;iface;proto;name;type;domain;hostname;address;port;txt...
59
+ const parts = line.split(';');
60
+ if (parts.length < 10)
61
+ continue;
62
+ const host = parts[6]?.replace(/\.$/, '');
63
+ const txtField = parts.slice(9).join(';');
64
+ const serialNumber = txtField.match(/"serialnum=([^"]+)"/)?.[1];
65
+ if (!host || !serialNumber) {
66
+ log.warn(`mDNS: PVS6 found but missing host or serialnum — host=${host}, txt=${txtField}`);
67
+ continue;
68
+ }
69
+ resolved = true;
70
+ clearTimeout(timer);
71
+ proc.kill();
72
+ log.info(`mDNS: discovered PVS6 at ${host} (serial: ${serialNumber})`);
73
+ resolve({ host, serialNumber });
74
+ }
75
+ });
76
+ proc.stderr.on('data', (data) => {
77
+ log.debug(`avahi-browse: ${data.toString().trim()}`);
78
+ });
79
+ proc.on('error', (err) => {
80
+ clearTimeout(timer);
81
+ reject(new Error(`avahi-browse failed: ${err.message}`));
82
+ });
83
+ proc.on('close', (code) => {
84
+ if (!resolved) {
85
+ clearTimeout(timer);
86
+ reject(new Error(`avahi-browse exited (code ${code}) without finding PVS6 — ` +
87
+ 'set host and serialNumber in config to skip auto-discovery'));
88
+ }
89
+ });
90
+ });
91
+ }
92
+ function discoverPVS6(log) {
93
+ return process.platform === 'linux' ? discoverPVS6Avahi(log) : discoverPVS6Bonjour(log);
94
+ }
95
+ //# sourceMappingURL=pvs6Discovery.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pvs6Discovery.js","sourceRoot":"","sources":["../src/pvs6Discovery.ts"],"names":[],"mappings":"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"}
@@ -2,14 +2,17 @@ import { PlatformConfig } from 'homebridge';
2
2
  export declare const PLATFORM_NAME = "PVS6";
3
3
  export declare const PLUGIN_NAME = "homebridge-pvs6";
4
4
  export interface PVS6Config extends PlatformConfig {
5
- host: string;
6
- serialNumber: string;
5
+ autoDiscover?: boolean;
6
+ host?: string;
7
+ serialNumber?: string;
7
8
  pollInterval?: number;
8
9
  accessories?: {
9
10
  grid?: boolean;
11
+ homeConsumption?: boolean;
10
12
  };
11
13
  solarName?: string;
12
14
  gridName?: string;
13
15
  gridExportName?: string;
16
+ homeConsumptionName?: string;
14
17
  }
15
18
  //# sourceMappingURL=settings.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"settings.d.ts","sourceRoot":"","sources":["../src/settings.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAE5C,eAAO,MAAM,aAAa,SAAS,CAAC;AACpC,eAAO,MAAM,WAAW,oBAAoB,CAAC;AAE7C,MAAM,WAAW,UAAW,SAAQ,cAAc;IAChD,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE;QACZ,IAAI,CAAC,EAAE,OAAO,CAAC;KAChB,CAAC;IACF,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB"}
1
+ {"version":3,"file":"settings.d.ts","sourceRoot":"","sources":["../src/settings.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAE5C,eAAO,MAAM,aAAa,SAAS,CAAC;AACpC,eAAO,MAAM,WAAW,oBAAoB,CAAC;AAE7C,MAAM,WAAW,UAAW,SAAQ,cAAc;IAChD,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE;QACZ,IAAI,CAAC,EAAE,OAAO,CAAC;QACf,eAAe,CAAC,EAAE,OAAO,CAAC;KAC3B,CAAC;IACF,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,mBAAmB,CAAC,EAAE,MAAM,CAAC;CAC9B"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "homebridge-pvs6",
3
3
  "displayName": "PVS6 Solar",
4
- "version": "1.0.0",
4
+ "version": "1.2.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",
@@ -18,7 +18,7 @@
18
18
  },
19
19
  "engines": {
20
20
  "node": ">=18.0.0",
21
- "homebridge": ">=1.6.0"
21
+ "homebridge": ">=2.0.0"
22
22
  },
23
23
  "main": "dist/index.js",
24
24
  "files": [
@@ -39,9 +39,10 @@
39
39
  "energy"
40
40
  ],
41
41
  "peerDependencies": {
42
- "homebridge": ">=1.6.0"
42
+ "homebridge": ">=2.0.0"
43
43
  },
44
44
  "dependencies": {
45
+ "bonjour-hap": "^3.0.0",
45
46
  "fakegato-history": "^0.6.7"
46
47
  },
47
48
  "devDependencies": {