homebridge-solaxcloud-api 2.5.3 → 2.5.5
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/CHANGELOG.md +12 -0
- package/dist/lightSensorAccessory.d.ts +4 -15
- package/dist/lightSensorAccessory.d.ts.map +1 -1
- package/dist/lightSensorAccessory.js +11 -88
- package/dist/lightSensorAccessory.js.map +1 -1
- package/dist/outletAccessory.d.ts +13 -1
- package/dist/outletAccessory.d.ts.map +1 -1
- package/dist/outletAccessory.js +67 -1
- package/dist/outletAccessory.js.map +1 -1
- package/dist/platformInverter.d.ts +10 -12
- package/dist/platformInverter.d.ts.map +1 -1
- package/dist/platformInverter.js +40 -39
- package/dist/platformInverter.js.map +1 -1
- package/package.json +1 -1
- package/test/lightSensorAccessory.test.ts +3 -34
- package/test/outletAccessory.test.ts +51 -1
- package/test/platformTotalizer.test.ts +38 -4
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,18 @@
|
|
|
2
2
|
|
|
3
3
|
All notable changes to this project will be documented in this file.
|
|
4
4
|
|
|
5
|
+
## [v2.5.5] - 2026-10-29
|
|
6
|
+
### Changed
|
|
7
|
+
* Assigned Matter electrical sensors their own `-matter` serial namespace instead of reusing legacy `pureHomeApp` light-sensor serials. Existing Matter sensors from v2.5.4 will be recreated once to prevent cross-mode cache collisions.
|
|
8
|
+
|
|
9
|
+
## [v2.5.4] - 2026-10-29
|
|
10
|
+
### Changed
|
|
11
|
+
* Moved Matter electrical sensor ownership into each outlet accessory.
|
|
12
|
+
* Kept legacy HAP light sensors exclusive to the `pureHomeApp` fallback when Matter is unavailable.
|
|
13
|
+
### Fixed
|
|
14
|
+
* Propagated raw and smoothed outlet power updates directly to their corresponding Matter electrical sensors.
|
|
15
|
+
* Avoided publishing battery Matter sensors when the inverter has no battery.
|
|
16
|
+
|
|
5
17
|
## [v2.5.3] - 2026-10-28
|
|
6
18
|
### Changed
|
|
7
19
|
* Renamed smoothed outlets and power sensors from `… (smooth)` to the HomeKit-compatible `… Smooth` convention.
|
|
@@ -1,15 +1,11 @@
|
|
|
1
1
|
import { AccessoryPlugin, API, CharacteristicGetCallback, Logging, Service } from 'homebridge';
|
|
2
2
|
import { SolaxPlatformAccessory } from './platformAccessory.js';
|
|
3
3
|
/**
|
|
4
|
-
* Solax
|
|
5
|
-
* Exposes power
|
|
6
|
-
* or falls back to a virtual light sensor for older HAP setups.
|
|
4
|
+
* Solax legacy light sensor accessory.
|
|
5
|
+
* Exposes power as ambient light for the pure Home app option.
|
|
7
6
|
*/
|
|
8
7
|
export declare class SolaxLightSensorAccessory extends SolaxPlatformAccessory implements AccessoryPlugin {
|
|
9
|
-
private readonly lightService
|
|
10
|
-
private readonly matterApi?;
|
|
11
|
-
private readonly matterUuid?;
|
|
12
|
-
private readonly matterRegistration?;
|
|
8
|
+
private readonly lightService;
|
|
13
9
|
private readonly published;
|
|
14
10
|
private currentPowerW;
|
|
15
11
|
/**
|
|
@@ -20,7 +16,7 @@ export declare class SolaxLightSensorAccessory extends SolaxPlatformAccessory im
|
|
|
20
16
|
* @param {string} serial "Real world" serial number for this accessory.
|
|
21
17
|
* @param {string} model Accessory model.
|
|
22
18
|
*/
|
|
23
|
-
constructor(log: Logging, api: API, name: string, serial: string, model: string,
|
|
19
|
+
constructor(log: Logging, api: API, name: string, serial: string, model: string, published?: boolean, uuidBase?: string);
|
|
24
20
|
/**
|
|
25
21
|
* Gets the current power consumption in Watts.
|
|
26
22
|
*/
|
|
@@ -30,13 +26,6 @@ export declare class SolaxLightSensorAccessory extends SolaxPlatformAccessory im
|
|
|
30
26
|
* @param {number} power The power consumption value to set (previously lux).
|
|
31
27
|
*/
|
|
32
28
|
setAmbientLightLevel(power: number): void;
|
|
33
|
-
/**
|
|
34
|
-
* Sets cumulative generated energy in Watt-hours.
|
|
35
|
-
* @param {number} energyWh The cumulative generated energy in Watt-hours.
|
|
36
|
-
*/
|
|
37
|
-
setTotalEnergyConsumption(energyWh: number): void;
|
|
38
|
-
isMatterAccessory(): boolean;
|
|
39
|
-
private updateMatterState;
|
|
40
29
|
getServices(): Service[];
|
|
41
30
|
}
|
|
42
31
|
//# sourceMappingURL=lightSensorAccessory.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lightSensorAccessory.d.ts","sourceRoot":"","sources":["../src/lightSensorAccessory.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,eAAe,EACf,GAAG,EAEH,yBAAyB,EACzB,OAAO,
|
|
1
|
+
{"version":3,"file":"lightSensorAccessory.d.ts","sourceRoot":"","sources":["../src/lightSensorAccessory.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,eAAe,EACf,GAAG,EAEH,yBAAyB,EACzB,OAAO,EACP,OAAO,EACR,MAAM,YAAY,CAAC;AAEpB,OAAO,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AAEhE;;;GAGG;AACH,qBAAa,yBAA0B,SAAQ,sBAAuB,YAAW,eAAe;IAC9F,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAU;IACvC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAU;IACpC,OAAO,CAAC,aAAa,CAAK;IAE1B;;;;;;;OAOG;gBAED,GAAG,EAAE,OAAO,EACZ,GAAG,EAAE,GAAG,EACR,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,MAAM,EACb,SAAS,UAAO,EAChB,QAAQ,CAAC,EAAE,MAAM;IAqBnB;;OAEG;IACI,oBAAoB,CAAC,QAAQ,EAAE,yBAAyB,GAAG,IAAI;IAMtE;;;OAGG;IACI,oBAAoB,CAAC,KAAK,EAAE,MAAM;IAWzC,WAAW,IAAI,OAAO,EAAE;CAMzB"}
|
|
@@ -1,15 +1,10 @@
|
|
|
1
1
|
import { SolaxPlatformAccessory } from './platformAccessory.js';
|
|
2
|
-
import { PLATFORM_NAME, PLUGIN_NAME } from './settings.js';
|
|
3
2
|
/**
|
|
4
|
-
* Solax
|
|
5
|
-
* Exposes power
|
|
6
|
-
* or falls back to a virtual light sensor for older HAP setups.
|
|
3
|
+
* Solax legacy light sensor accessory.
|
|
4
|
+
* Exposes power as ambient light for the pure Home app option.
|
|
7
5
|
*/
|
|
8
6
|
export class SolaxLightSensorAccessory extends SolaxPlatformAccessory {
|
|
9
7
|
lightService;
|
|
10
|
-
matterApi;
|
|
11
|
-
matterUuid;
|
|
12
|
-
matterRegistration;
|
|
13
8
|
published;
|
|
14
9
|
currentPowerW = 0;
|
|
15
10
|
/**
|
|
@@ -20,54 +15,19 @@ export class SolaxLightSensorAccessory extends SolaxPlatformAccessory {
|
|
|
20
15
|
* @param {string} serial "Real world" serial number for this accessory.
|
|
21
16
|
* @param {string} model Accessory model.
|
|
22
17
|
*/
|
|
23
|
-
constructor(log, api, name, serial, model,
|
|
18
|
+
constructor(log, api, name, serial, model, published = true, uuidBase) {
|
|
24
19
|
super(log, api, name, serial, model, uuidBase);
|
|
25
20
|
this.log.debug(`Creating power sensor "${this.name}"`);
|
|
26
21
|
this.published = published;
|
|
27
22
|
if (!published) {
|
|
28
|
-
return;
|
|
29
|
-
}
|
|
30
|
-
this.matterApi = this.api.matter;
|
|
31
|
-
if (this.matterApi) {
|
|
32
|
-
this.matterUuid = this.api.hap.uuid.generate(serial + '-matter-power');
|
|
33
|
-
const clusters = {
|
|
34
|
-
electricalPowerMeasurement: {
|
|
35
|
-
activePower: 0,
|
|
36
|
-
},
|
|
37
|
-
};
|
|
38
|
-
if (supportsEnergy) {
|
|
39
|
-
clusters.electricalEnergyMeasurement = {
|
|
40
|
-
cumulativeEnergyExported: { energy: 0 },
|
|
41
|
-
};
|
|
42
|
-
}
|
|
43
|
-
const matterAccessory = {
|
|
44
|
-
displayName: name,
|
|
45
|
-
UUID: this.matterUuid,
|
|
46
|
-
deviceType: this.matterApi.deviceTypes.ElectricalSensor,
|
|
47
|
-
serialNumber: serial,
|
|
48
|
-
manufacturer: 'Solax',
|
|
49
|
-
model,
|
|
50
|
-
context: {},
|
|
51
|
-
clusters,
|
|
52
|
-
};
|
|
53
|
-
this.matterRegistration = this.matterApi
|
|
54
|
-
.registerPlatformAccessories(PLUGIN_NAME, PLATFORM_NAME, [matterAccessory])
|
|
55
|
-
.then(() => {
|
|
56
|
-
log.info(`Matter Electrical Sensor (Watts) "${name}" created!`);
|
|
57
|
-
return true;
|
|
58
|
-
})
|
|
59
|
-
.catch(error => {
|
|
60
|
-
log.error(`Failed to register Matter accessory "${name}": ${error}`);
|
|
61
|
-
return false;
|
|
62
|
-
});
|
|
63
|
-
}
|
|
64
|
-
else {
|
|
65
23
|
this.lightService = new this.api.hap.Service.LightSensor(name);
|
|
66
|
-
|
|
67
|
-
.getCharacteristic(this.api.hap.Characteristic.CurrentAmbientLightLevel)
|
|
68
|
-
.on("get" /* CharacteristicEventTypes.GET */, this.getAmbientLightLevel.bind(this));
|
|
69
|
-
log.info(`Light sensor (watts reader) "${name}" created!`);
|
|
24
|
+
return;
|
|
70
25
|
}
|
|
26
|
+
this.lightService = new this.api.hap.Service.LightSensor(name);
|
|
27
|
+
this.lightService
|
|
28
|
+
.getCharacteristic(this.api.hap.Characteristic.CurrentAmbientLightLevel)
|
|
29
|
+
.on("get" /* CharacteristicEventTypes.GET */, this.getAmbientLightLevel.bind(this));
|
|
30
|
+
log.info(`Light sensor (watts reader) "${name}" created!`);
|
|
71
31
|
}
|
|
72
32
|
/**
|
|
73
33
|
* Gets the current power consumption in Watts.
|
|
@@ -83,51 +43,14 @@ export class SolaxLightSensorAccessory extends SolaxPlatformAccessory {
|
|
|
83
43
|
setAmbientLightLevel(power) {
|
|
84
44
|
this.log.debug(`${this.name}: SET Power (W=${power})`);
|
|
85
45
|
this.currentPowerW = power;
|
|
86
|
-
|
|
87
|
-
this.updateMatterState(this.matterApi.clusterNames.ElectricalPowerMeasurement, { activePower: Math.round(power * 1000) });
|
|
88
|
-
}
|
|
89
|
-
else if (this.lightService) {
|
|
90
|
-
this.lightService.updateCharacteristic(this.api.hap.Characteristic.CurrentAmbientLightLevel, Math.max(0.1, power));
|
|
91
|
-
}
|
|
92
|
-
}
|
|
93
|
-
/**
|
|
94
|
-
* Sets cumulative generated energy in Watt-hours.
|
|
95
|
-
* @param {number} energyWh The cumulative generated energy in Watt-hours.
|
|
96
|
-
*/
|
|
97
|
-
setTotalEnergyConsumption(energyWh) {
|
|
98
|
-
if (!this.matterApi || !this.matterUuid) {
|
|
99
|
-
return;
|
|
100
|
-
}
|
|
101
|
-
this.updateMatterState(this.matterApi.clusterNames.ElectricalEnergyMeasurement, {
|
|
102
|
-
cumulativeEnergyExported: {
|
|
103
|
-
energy: Math.round(energyWh * 1000),
|
|
104
|
-
},
|
|
105
|
-
});
|
|
106
|
-
}
|
|
107
|
-
isMatterAccessory() {
|
|
108
|
-
return Boolean(this.matterApi);
|
|
109
|
-
}
|
|
110
|
-
updateMatterState(cluster, attributes) {
|
|
111
|
-
if (!this.matterApi || !this.matterUuid || !this.matterRegistration) {
|
|
112
|
-
return;
|
|
113
|
-
}
|
|
114
|
-
void this.matterRegistration
|
|
115
|
-
.then(registered => {
|
|
116
|
-
if (!registered) {
|
|
117
|
-
return;
|
|
118
|
-
}
|
|
119
|
-
return this.matterApi.updateAccessoryState(this.matterUuid, cluster, attributes);
|
|
120
|
-
})
|
|
121
|
-
.catch(error => {
|
|
122
|
-
this.log.error(`Failed to update Matter accessory "${this.name}": ${error}`);
|
|
123
|
-
});
|
|
46
|
+
this.lightService.updateCharacteristic(this.api.hap.Characteristic.CurrentAmbientLightLevel, Math.max(0.1, power));
|
|
124
47
|
}
|
|
125
48
|
/*
|
|
126
49
|
* This method is called directly after creation of this instance.
|
|
127
50
|
* It should return all services which should be added to the accessory.
|
|
128
51
|
*/
|
|
129
52
|
getServices() {
|
|
130
|
-
if (!this.published
|
|
53
|
+
if (!this.published) {
|
|
131
54
|
return [this.informationService];
|
|
132
55
|
}
|
|
133
56
|
return [this.informationService, this.lightService];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lightSensorAccessory.js","sourceRoot":"","sources":["../src/lightSensorAccessory.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"lightSensorAccessory.js","sourceRoot":"","sources":["../src/lightSensorAccessory.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AAEhE;;;GAGG;AACH,MAAM,OAAO,yBAA0B,SAAQ,sBAAsB;IAClD,YAAY,CAAU;IACtB,SAAS,CAAU;IAC5B,aAAa,GAAG,CAAC,CAAC;IAE1B;;;;;;;OAOG;IACH,YACE,GAAY,EACZ,GAAQ,EACR,IAAY,EACZ,MAAc,EACd,KAAa,EACb,SAAS,GAAG,IAAI,EAChB,QAAiB;QAEjB,KAAK,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;QAE/C,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,0BAA0B,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC;QACvD,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAE3B,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,IAAI,CAAC,YAAY,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;YAC/D,OAAO;QACT,CAAC;QAED,IAAI,CAAC,YAAY,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;QAE/D,IAAI,CAAC,YAAY;aACd,iBAAiB,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,cAAc,CAAC,wBAAwB,CAAC;aACvE,EAAE,2CAA+B,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QAE1E,GAAG,CAAC,IAAI,CAAC,gCAAgC,IAAI,YAAY,CAAC,CAAC;IAC7D,CAAC;IAED;;OAEG;IACI,oBAAoB,CAAC,QAAmC;QAC7D,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,IAAI,wBAAwB,IAAI,CAAC,aAAa,GAAG,CAAC,CAAC;QAE1E,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC;IACpD,CAAC;IAED;;;OAGG;IACI,oBAAoB,CAAC,KAAa;QACvC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,IAAI,kBAAkB,KAAK,GAAG,CAAC,CAAC;QACvD,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;QAE3B,IAAI,CAAC,YAAY,CAAC,oBAAoB,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,cAAc,CAAC,wBAAwB,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC;IACrH,CAAC;IAED;;;OAGG;IACH,WAAW;QACT,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;YACpB,OAAO,CAAE,IAAI,CAAC,kBAAkB,CAAE,CAAC;QACrC,CAAC;QACD,OAAO,CAAE,IAAI,CAAC,kBAAkB,EAAE,IAAI,CAAC,YAAY,CAAE,CAAC;IACxD,CAAC;CACF"}
|
|
@@ -1,11 +1,22 @@
|
|
|
1
1
|
import { Service, AccessoryPlugin, Logging, CharacteristicGetCallback, API } from 'homebridge';
|
|
2
2
|
import { SolaxPlatformAccessory } from './platformAccessory.js';
|
|
3
|
+
export interface MatterPowerSensorOptions {
|
|
4
|
+
displayName: string;
|
|
5
|
+
serialNumber: string;
|
|
6
|
+
supportsEnergy?: boolean;
|
|
7
|
+
}
|
|
3
8
|
/**
|
|
4
9
|
* Solax Outlet Accessory.
|
|
5
10
|
* Virtual outlet used to monitor and measure both power and total energy consumption from Solax devices.
|
|
6
11
|
* Outlet use is inferred from a positive power comsumption.
|
|
7
12
|
*/
|
|
8
13
|
export declare class SolaxOutletAccessory extends SolaxPlatformAccessory implements AccessoryPlugin {
|
|
14
|
+
/** Matter API used to publish the outlet's native electrical sensor. */
|
|
15
|
+
private readonly matterApi?;
|
|
16
|
+
/** Stable UUID for the outlet's native Matter electrical sensor. */
|
|
17
|
+
private readonly matterUuid?;
|
|
18
|
+
/** Resolves after the native Matter electrical sensor registration finishes. */
|
|
19
|
+
private readonly matterRegistration?;
|
|
9
20
|
/**
|
|
10
21
|
* Eve Homekit types helper
|
|
11
22
|
* */
|
|
@@ -50,7 +61,7 @@ export declare class SolaxOutletAccessory extends SolaxPlatformAccessory impleme
|
|
|
50
61
|
* @param {string} serial "Real world" serial number for this accessory.
|
|
51
62
|
* @param {string} model Accessory model.
|
|
52
63
|
*/
|
|
53
|
-
constructor(log: Logging, api: API, name: string, serial: string, model: string, enableHistory?: boolean, uuidBase?: string);
|
|
64
|
+
constructor(log: Logging, api: API, name: string, serial: string, model: string, enableHistory?: boolean, uuidBase?: string, matterSensor?: MatterPowerSensorOptions);
|
|
54
65
|
/**
|
|
55
66
|
* Adds new power entry to series array of power values.
|
|
56
67
|
* @param {number} powerConsumption Power value to add (in Watts).
|
|
@@ -95,6 +106,7 @@ export declare class SolaxOutletAccessory extends SolaxPlatformAccessory impleme
|
|
|
95
106
|
* @param {number} totalEnergyConsumption The total energy consumption to set.
|
|
96
107
|
*/
|
|
97
108
|
setTotalEnergyConsumption(totalEnergyConsumption: number): void;
|
|
109
|
+
private updateMatterState;
|
|
98
110
|
/**
|
|
99
111
|
* Gets the outlet state Characteristic based on its consumed power.
|
|
100
112
|
* @param {CharacteristicGetCallback} callback The callback.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"outletAccessory.d.ts","sourceRoot":"","sources":["../src/outletAccessory.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"outletAccessory.d.ts","sourceRoot":"","sources":["../src/outletAccessory.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,OAAO,EACP,eAAe,EACf,OAAO,EAEP,yBAAyB,EACzB,GAAG,EAGJ,MAAM,YAAY,CAAC;AAEpB,OAAO,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AA0BhE,MAAM,WAAW,wBAAwB;IACvC,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B;AAOD;;;;GAIG;AACH,qBAAa,oBAAqB,SAAQ,sBAAuB,YAAW,eAAe;IAEzF,wEAAwE;IACxE,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAY;IAEvC,oEAAoE;IACpE,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAS;IAErC,gFAAgF;IAChF,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAC,CAAmB;IAEvD;;SAEK;IACL,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAkB;IAEtC;;OAEG;IACH,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAW;IAEvC;;OAEG;IACH,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAU;IAExC;;OAEG;IACH,OAAO,CAAC,gBAAgB,CAAK;IAE7B;;OAEG;IACH,OAAO,CAAC,sBAAsB,CAAO;IAErC;;OAEG;IACH,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAyB;IAEzD;;OAEG;IACH,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAU;IAExC;;OAEG;IACH,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAgB;IAE5C;;OAEG;IACH,OAAO,CAAC,OAAO,CAAK;IAEpB;;;;;;;OAOG;gBAED,GAAG,EAAE,OAAO,EACZ,GAAG,EAAE,GAAG,EACR,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,MAAM,EACb,aAAa,UAAO,EACpB,QAAQ,CAAC,EAAE,MAAM,EACjB,YAAY,CAAC,EAAE,wBAAwB;IA8EzC;;;OAGG;IACH,OAAO,CAAC,aAAa;IAWrB;;;OAGG;IACI,cAAc,IAAI,MAAM,EAAE;IAIjC;;;;;OAKG;IACI,yBAAyB,CAAC,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM;IAwC5E;;;OAGG;IACI,wBAAwB,IAAI,MAAM;IAIzC;;OAEG;IACI,mBAAmB,CAAC,QAAQ,EAAE,yBAAyB,GAAG,IAAI;IAMrE;;wEAEoE;IAC7D,mBAAmB,CAAC,gBAAgB,EAAE,MAAM;IAuBnD;;;OAGG;IACI,8BAA8B,IAAI,MAAM;IAI/C;;OAEG;IACI,yBAAyB,CAAC,QAAQ,EAAE,yBAAyB,GAAG,IAAI;IAM3E;;;OAGG;IACI,yBAAyB,CAAC,sBAAsB,EAAE,MAAM;IAmB/D,OAAO,CAAC,iBAAiB;IAkBzB;;;OAGG;IACI,QAAQ,CAAC,QAAQ,EAAE,yBAAyB,GAAG,IAAI;IAU1D,WAAW,IAAI,OAAO,EAAE;CAUzB"}
|
package/dist/outletAccessory.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { SolaxPlatformAccessory } from './platformAccessory.js';
|
|
2
|
+
import { PLATFORM_NAME, PLUGIN_NAME } from './settings.js';
|
|
2
3
|
import { Statistics } from './statistics.js';
|
|
3
4
|
import fakegato from 'fakegato-history';
|
|
4
5
|
import { createRequire } from 'module';
|
|
@@ -14,6 +15,12 @@ const MAX_POWER_SERIES_SIZE = 1024;
|
|
|
14
15
|
* Outlet use is inferred from a positive power comsumption.
|
|
15
16
|
*/
|
|
16
17
|
export class SolaxOutletAccessory extends SolaxPlatformAccessory {
|
|
18
|
+
/** Matter API used to publish the outlet's native electrical sensor. */
|
|
19
|
+
matterApi;
|
|
20
|
+
/** Stable UUID for the outlet's native Matter electrical sensor. */
|
|
21
|
+
matterUuid;
|
|
22
|
+
/** Resolves after the native Matter electrical sensor registration finishes. */
|
|
23
|
+
matterRegistration;
|
|
17
24
|
/**
|
|
18
25
|
* Eve Homekit types helper
|
|
19
26
|
* */
|
|
@@ -58,7 +65,7 @@ export class SolaxOutletAccessory extends SolaxPlatformAccessory {
|
|
|
58
65
|
* @param {string} serial "Real world" serial number for this accessory.
|
|
59
66
|
* @param {string} model Accessory model.
|
|
60
67
|
*/
|
|
61
|
-
constructor(log, api, name, serial, model, enableHistory = true, uuidBase) {
|
|
68
|
+
constructor(log, api, name, serial, model, enableHistory = true, uuidBase, matterSensor) {
|
|
62
69
|
super(log, api, name, serial, model, uuidBase);
|
|
63
70
|
this.log.debug(`Creating outlet "${this.name}"`);
|
|
64
71
|
this.enableHistory = enableHistory;
|
|
@@ -82,6 +89,40 @@ export class SolaxOutletAccessory extends SolaxPlatformAccessory {
|
|
|
82
89
|
this.eveService = fakegato(this.api);
|
|
83
90
|
this.loggingService = new this.eveService('energy', this, { storage: 'fs', log: this.log, disableRepeatLastData: true });
|
|
84
91
|
}
|
|
92
|
+
this.matterApi = this.api.matter;
|
|
93
|
+
if (this.matterApi && matterSensor) {
|
|
94
|
+
this.matterUuid = this.api.hap.uuid.generate(matterSensor.serialNumber + '-matter-power');
|
|
95
|
+
const clusters = {
|
|
96
|
+
electricalPowerMeasurement: {
|
|
97
|
+
activePower: 0,
|
|
98
|
+
},
|
|
99
|
+
};
|
|
100
|
+
if (matterSensor.supportsEnergy) {
|
|
101
|
+
clusters.electricalEnergyMeasurement = {
|
|
102
|
+
cumulativeEnergyExported: { energy: 0 },
|
|
103
|
+
};
|
|
104
|
+
}
|
|
105
|
+
const matterAccessory = {
|
|
106
|
+
displayName: matterSensor.displayName,
|
|
107
|
+
UUID: this.matterUuid,
|
|
108
|
+
deviceType: this.matterApi.deviceTypes.ElectricalSensor,
|
|
109
|
+
serialNumber: matterSensor.serialNumber,
|
|
110
|
+
manufacturer: 'Solax',
|
|
111
|
+
model,
|
|
112
|
+
context: {},
|
|
113
|
+
clusters,
|
|
114
|
+
};
|
|
115
|
+
this.matterRegistration = this.matterApi
|
|
116
|
+
.registerPlatformAccessories(PLUGIN_NAME, PLATFORM_NAME, [matterAccessory])
|
|
117
|
+
.then(() => {
|
|
118
|
+
log.info(`Matter Electrical Sensor (Watts) "${matterSensor.displayName}" created!`);
|
|
119
|
+
return true;
|
|
120
|
+
})
|
|
121
|
+
.catch(error => {
|
|
122
|
+
log.error(`Failed to register Matter accessory "${matterSensor.displayName}": ${error}`);
|
|
123
|
+
return false;
|
|
124
|
+
});
|
|
125
|
+
}
|
|
85
126
|
log.info(`Outlet "${name}" created!`);
|
|
86
127
|
}
|
|
87
128
|
/**
|
|
@@ -165,6 +206,9 @@ export class SolaxOutletAccessory extends SolaxPlatformAccessory {
|
|
|
165
206
|
}
|
|
166
207
|
// add new value to power series
|
|
167
208
|
this.addPowerEntry(this.powerConsumption);
|
|
209
|
+
if (this.matterApi) {
|
|
210
|
+
this.updateMatterState(this.matterApi.clusterNames.ElectricalPowerMeasurement, { activePower: Math.round(this.powerConsumption * 1000) });
|
|
211
|
+
}
|
|
168
212
|
}
|
|
169
213
|
/**
|
|
170
214
|
* Gets the total energy consumption value for this outlet.
|
|
@@ -188,6 +232,28 @@ export class SolaxOutletAccessory extends SolaxPlatformAccessory {
|
|
|
188
232
|
this.log.debug(`${this.name}: SET Total Energy (energy=${totalEnergyConsumption}kWh)`);
|
|
189
233
|
this.totalEnergyConsumption = totalEnergyConsumption;
|
|
190
234
|
this.outletService.getCharacteristic(this.eve.Characteristics.TotalConsumption).updateValue(this.totalEnergyConsumption);
|
|
235
|
+
if (this.matterApi) {
|
|
236
|
+
this.updateMatterState(this.matterApi.clusterNames.ElectricalEnergyMeasurement, {
|
|
237
|
+
cumulativeEnergyExported: {
|
|
238
|
+
energy: Math.round(totalEnergyConsumption * 1000),
|
|
239
|
+
},
|
|
240
|
+
});
|
|
241
|
+
}
|
|
242
|
+
}
|
|
243
|
+
updateMatterState(cluster, attributes) {
|
|
244
|
+
if (!this.matterApi || !this.matterUuid || !this.matterRegistration) {
|
|
245
|
+
return;
|
|
246
|
+
}
|
|
247
|
+
void this.matterRegistration
|
|
248
|
+
.then(registered => {
|
|
249
|
+
if (!registered) {
|
|
250
|
+
return;
|
|
251
|
+
}
|
|
252
|
+
return this.matterApi.updateAccessoryState(this.matterUuid, cluster, attributes);
|
|
253
|
+
})
|
|
254
|
+
.catch(error => {
|
|
255
|
+
this.log.error(`Failed to update Matter accessory for outlet "${this.name}": ${error}`);
|
|
256
|
+
});
|
|
191
257
|
}
|
|
192
258
|
/**
|
|
193
259
|
* Gets the outlet state Characteristic based on its consumed power.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"outletAccessory.js","sourceRoot":"","sources":["../src/outletAccessory.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"outletAccessory.js","sourceRoot":"","sources":["../src/outletAccessory.ts"],"names":[],"mappings":"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"}
|
|
@@ -10,13 +10,13 @@ export declare const INVERTER_BRAND: {
|
|
|
10
10
|
* Standard names for accessories.
|
|
11
11
|
*/
|
|
12
12
|
export declare const ACCESSORY_KEYS: {
|
|
13
|
-
pv:
|
|
14
|
-
inverterToBattery:
|
|
15
|
-
inverterFromBattery:
|
|
16
|
-
inverterAC:
|
|
17
|
-
inverterToGrid:
|
|
18
|
-
inverterToHouse:
|
|
19
|
-
gridToHouse:
|
|
13
|
+
readonly pv: "pv";
|
|
14
|
+
readonly inverterToBattery: "inverterToBattery";
|
|
15
|
+
readonly inverterFromBattery: "inverterFromBattery";
|
|
16
|
+
readonly inverterAC: "inverterAC";
|
|
17
|
+
readonly inverterToGrid: "inverterToGrid";
|
|
18
|
+
readonly inverterToHouse: "inverterToHouse";
|
|
19
|
+
readonly gridToHouse: "gridToHouse";
|
|
20
20
|
};
|
|
21
21
|
/**
|
|
22
22
|
* SolaxCloudAPIPlatformInverter.
|
|
@@ -55,11 +55,8 @@ export declare class SolaxCloudAPIPlatformInverter {
|
|
|
55
55
|
* Whether this inverter is a virtual accessory.
|
|
56
56
|
*/
|
|
57
57
|
private virtual;
|
|
58
|
-
/**
|
|
59
|
-
|
|
60
|
-
* HomeKit ambient light sensors.
|
|
61
|
-
*/
|
|
62
|
-
private readonly useNativePowerSensors;
|
|
58
|
+
/** Whether legacy ambient-light power sensors are enabled for pure Home. */
|
|
59
|
+
private readonly useLegacyLightSensors;
|
|
63
60
|
/**
|
|
64
61
|
* Virtual motion sensor triggered by data updates from Solax Cloud.
|
|
65
62
|
*/
|
|
@@ -110,6 +107,7 @@ export declare class SolaxCloudAPIPlatformInverter {
|
|
|
110
107
|
* @returns Inverter brand name.
|
|
111
108
|
*/
|
|
112
109
|
static getInverterBrandName(brand: number): string;
|
|
110
|
+
private getMatterSensorOptions;
|
|
113
111
|
/**
|
|
114
112
|
* Update all platform accessory status based on the values read from the API.
|
|
115
113
|
* @param {SolaxCloudAPIResponse} apiData API data from Solax Cloud.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"platformInverter.d.ts","sourceRoot":"","sources":["../src/platformInverter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,GAAG,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAgB3E;;GAEG;AACH,eAAO,MAAM,cAAc;;;CAG1B,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,cAAc;;;;;;;;
|
|
1
|
+
{"version":3,"file":"platformInverter.d.ts","sourceRoot":"","sources":["../src/platformInverter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,GAAG,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAgB3E;;GAEG;AACH,eAAO,MAAM,cAAc;;;CAG1B,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,cAAc;;;;;;;;CAQjB,CAAC;AA4BX;;;;GAIG;AACH,qBAAa,6BAA6B;IACxC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAU;IAC9B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAiB;IACxC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAM;IAE1B;;OAEG;IACH,OAAO,CAAC,IAAI,CAAS;IAErB;;QAEI;IACJ,OAAO,CAAC,EAAE,CAAS;IAEnB;;QAEI;IACJ,OAAO,CAAC,gBAAgB,CAAU;IAElC;;OAEG;IACH,OAAO,CAAC,eAAe,CAAS;IAEhC;;OAEG;IACH,OAAO,CAAC,aAAa,CAAC,CAAsB;IAE5C;;OAEG;IACH,OAAO,CAAC,SAAS,CAAS;IAE1B;;OAEG;IACH,OAAO,CAAC,OAAO,CAAU;IAEzB,4EAA4E;IAC5E,OAAO,CAAC,QAAQ,CAAC,qBAAqB,CAAU;IAEhD;;OAEG;IACH,OAAO,CAAC,YAAY,CAAwB;IAE5C;;OAEG;IACH,OAAO,CAAC,OAAO,CAAyB;IAExC;;OAEG;IACH,OAAO,CAAC,UAAU,CAAwB;IAE1C;;;;QAII;IACJ,OAAO,CAAC,aAAa,CAAwB;IAE7C;;QAEI;IACJ,OAAO,CAAC,eAAe,CAA6B;IAEpD;;;;QAII;IACJ,OAAO,CAAC,kBAAkB,CAA6B;IAEvD,iCAAiC;IACjC,OAAO,CAAC,gBAAgB,CAAyB;IAEjD;;;;;;;;;;;;QAYI;gBACS,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,GAAG,EAAE,GAAG,EACzD,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAC1C,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO,EACjC,eAAe,EAAE,MAAM,EACvB,OAAO,UAAQ,EACf,SAAS,SAA4D;IAqNvE;;;;OAIG;WACW,oBAAoB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM;IASzD,OAAO,CAAC,sBAAsB;IAe9B;;;QAGI;IACJ,OAAO,CAAC,iBAAiB;IAuCzB;;;OAGG;IACI,qBAAqB,CAAC,KAAK,EAAE,MAAM;IAI1C;;;OAGG;IACI,qBAAqB,IAAI,MAAM;IAItC;;;OAGG;IACI,eAAe,CAAC,UAAU,EAAE,MAAM;IAIzC;;;OAGG;IACI,eAAe,IAAI,MAAM;IAIhC;;OAEG;IACI,eAAe;IAItB;;;;OAIG;IACI,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM;IAIvC;;;;OAIG;IACI,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM;IAQ7C;;;;OAIG;IACI,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM;IAIxC;;;;OAIG;IACI,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;IAK/C;;;OAGG;IACI,cAAc,CAAC,GAAG,EAAE,MAAM;IAUjC;;OAEG;IACI,2BAA2B;IAwBlC;;;OAGG;IACI,UAAU,IAAI,OAAO;IAI5B;;;OAGG;IACI,cAAc,IAAI,eAAe,EAAE;CAI3C"}
|
package/dist/platformInverter.js
CHANGED
|
@@ -85,11 +85,8 @@ export class SolaxCloudAPIPlatformInverter {
|
|
|
85
85
|
* Whether this inverter is a virtual accessory.
|
|
86
86
|
*/
|
|
87
87
|
virtual;
|
|
88
|
-
/**
|
|
89
|
-
|
|
90
|
-
* HomeKit ambient light sensors.
|
|
91
|
-
*/
|
|
92
|
-
useNativePowerSensors;
|
|
88
|
+
/** Whether legacy ambient-light power sensors are enabled for pure Home. */
|
|
89
|
+
useLegacyLightSensors;
|
|
93
90
|
/**
|
|
94
91
|
* Virtual motion sensor triggered by data updates from Solax Cloud.
|
|
95
92
|
*/
|
|
@@ -143,7 +140,7 @@ export class SolaxCloudAPIPlatformInverter {
|
|
|
143
140
|
this.name = name;
|
|
144
141
|
this.brandName = brandName;
|
|
145
142
|
this.virtual = virtual;
|
|
146
|
-
this.
|
|
143
|
+
this.useLegacyLightSensors = !this.api.matter && this.config.pureHomeApp === true;
|
|
147
144
|
this.smoothingWindow = smoothingWindow;
|
|
148
145
|
this.batteryInstalled = hasBattery;
|
|
149
146
|
this.log.info(`Initialing acessories for inverter "${name}" (SN="${sn}") from ${this.brandName}...`);
|
|
@@ -170,13 +167,13 @@ export class SolaxCloudAPIPlatformInverter {
|
|
|
170
167
|
}
|
|
171
168
|
// setup raw outlet accessories
|
|
172
169
|
this.rawOutlets = {
|
|
173
|
-
pv: new SolaxOutletAccessory(this.log, this.api, `${this.name} ${ACCESSORY_NAMES.pv}`, `${ACCESSORY_SERIAL_PREFIXES.pv}-${this.sn}`, inverterModel, this.config.enableHistory),
|
|
174
|
-
inverterFromBattery: new SolaxOutletAccessory(this.log, this.api, `${this.name} ${ACCESSORY_NAMES.inverterFromBattery}`, `${ACCESSORY_SERIAL_PREFIXES.inverterFromBattery}-${this.sn}`, inverterModel, this.config.enableHistory),
|
|
175
|
-
inverterToBattery: new SolaxOutletAccessory(this.log, this.api, `${this.name} ${ACCESSORY_NAMES.inverterToBattery}`, `${ACCESSORY_SERIAL_PREFIXES.inverterToBattery}-${this.sn}`, inverterModel, this.config.enableHistory),
|
|
176
|
-
inverterAC: new SolaxOutletAccessory(this.log, this.api, `${this.name} ${ACCESSORY_NAMES.inverterAC}`, `${ACCESSORY_SERIAL_PREFIXES.inverterAC}-${this.sn}`, inverterModel, this.config.enableHistory),
|
|
177
|
-
inverterToGrid: new SolaxOutletAccessory(this.log, this.api, `${this.name} ${ACCESSORY_NAMES.inverterToGrid}`, `${ACCESSORY_SERIAL_PREFIXES.inverterToGrid}-${this.sn}`, inverterModel, this.config.enableHistory),
|
|
178
|
-
inverterToHouse: new SolaxOutletAccessory(this.log, this.api, `${this.name} ${ACCESSORY_NAMES.inverterToHouse}`, `${ACCESSORY_SERIAL_PREFIXES.inverterToHouse}-${this.sn}`, inverterModel, this.config.enableHistory),
|
|
179
|
-
gridToHouse: new SolaxOutletAccessory(this.log, this.api, `${this.name} ${ACCESSORY_NAMES.gridToHouse}`, `${ACCESSORY_SERIAL_PREFIXES.gridToHouse}-${this.sn}`, inverterModel, this.config.enableHistory),
|
|
170
|
+
pv: new SolaxOutletAccessory(this.log, this.api, `${this.name} ${ACCESSORY_NAMES.pv}`, `${ACCESSORY_SERIAL_PREFIXES.pv}-${this.sn}`, inverterModel, this.config.enableHistory, undefined, this.getMatterSensorOptions(ACCESSORY_KEYS.pv)),
|
|
171
|
+
inverterFromBattery: new SolaxOutletAccessory(this.log, this.api, `${this.name} ${ACCESSORY_NAMES.inverterFromBattery}`, `${ACCESSORY_SERIAL_PREFIXES.inverterFromBattery}-${this.sn}`, inverterModel, this.config.enableHistory, undefined, this.batteryInstalled ? this.getMatterSensorOptions(ACCESSORY_KEYS.inverterFromBattery) : undefined),
|
|
172
|
+
inverterToBattery: new SolaxOutletAccessory(this.log, this.api, `${this.name} ${ACCESSORY_NAMES.inverterToBattery}`, `${ACCESSORY_SERIAL_PREFIXES.inverterToBattery}-${this.sn}`, inverterModel, this.config.enableHistory, undefined, this.batteryInstalled ? this.getMatterSensorOptions(ACCESSORY_KEYS.inverterToBattery) : undefined),
|
|
173
|
+
inverterAC: new SolaxOutletAccessory(this.log, this.api, `${this.name} ${ACCESSORY_NAMES.inverterAC}`, `${ACCESSORY_SERIAL_PREFIXES.inverterAC}-${this.sn}`, inverterModel, this.config.enableHistory, undefined, this.getMatterSensorOptions(ACCESSORY_KEYS.inverterAC, false, true)),
|
|
174
|
+
inverterToGrid: new SolaxOutletAccessory(this.log, this.api, `${this.name} ${ACCESSORY_NAMES.inverterToGrid}`, `${ACCESSORY_SERIAL_PREFIXES.inverterToGrid}-${this.sn}`, inverterModel, this.config.enableHistory, undefined, this.getMatterSensorOptions(ACCESSORY_KEYS.inverterToGrid)),
|
|
175
|
+
inverterToHouse: new SolaxOutletAccessory(this.log, this.api, `${this.name} ${ACCESSORY_NAMES.inverterToHouse}`, `${ACCESSORY_SERIAL_PREFIXES.inverterToHouse}-${this.sn}`, inverterModel, this.config.enableHistory, undefined, this.getMatterSensorOptions(ACCESSORY_KEYS.inverterToHouse)),
|
|
176
|
+
gridToHouse: new SolaxOutletAccessory(this.log, this.api, `${this.name} ${ACCESSORY_NAMES.gridToHouse}`, `${ACCESSORY_SERIAL_PREFIXES.gridToHouse}-${this.sn}`, inverterModel, this.config.enableHistory, undefined, this.getMatterSensorOptions(ACCESSORY_KEYS.gridToHouse)),
|
|
180
177
|
};
|
|
181
178
|
// setup update motion sensor
|
|
182
179
|
this.motionUpdate =
|
|
@@ -189,15 +186,13 @@ export class SolaxCloudAPIPlatformInverter {
|
|
|
189
186
|
this.battery = new SolaxBatteryAccessory(this.log, this.api, `${this.name} Battery`, `bat-${this.sn}`, inverterModel);
|
|
190
187
|
this.solaxAccessories.push(this.battery, this.rawOutlets.inverterFromBattery, this.rawOutlets.inverterToBattery);
|
|
191
188
|
}
|
|
192
|
-
|
|
193
|
-
// retains the legacy ambient-light-sensor fallback.
|
|
194
|
-
if (this.useNativePowerSensors) {
|
|
189
|
+
if (this.useLegacyLightSensors) {
|
|
195
190
|
// add raw power sensors
|
|
196
191
|
this.rawLightSensors = {
|
|
197
192
|
pv: new SolaxLightSensorAccessory(this.log, this.api, `${this.name} ${ACCESSORY_NAMES.pv} sensor`, `${ACCESSORY_SERIAL_PREFIXES.pv}-light-${this.sn}`, inverterModel),
|
|
198
|
-
inverterFromBattery: new SolaxLightSensorAccessory(this.log, this.api, `${this.name} ${ACCESSORY_NAMES.inverterFromBattery} sensor`, `${ACCESSORY_SERIAL_PREFIXES.inverterFromBattery}-light-${this.sn}`, inverterModel,
|
|
199
|
-
inverterToBattery: new SolaxLightSensorAccessory(this.log, this.api, `${this.name} ${ACCESSORY_NAMES.inverterToBattery} sensor`, `${ACCESSORY_SERIAL_PREFIXES.inverterToBattery}-light-${this.sn}`, inverterModel,
|
|
200
|
-
inverterAC: new SolaxLightSensorAccessory(this.log, this.api, `${this.name} ${ACCESSORY_NAMES.inverterAC} sensor`, `${ACCESSORY_SERIAL_PREFIXES.inverterAC}-light-${this.sn}`, inverterModel
|
|
193
|
+
inverterFromBattery: new SolaxLightSensorAccessory(this.log, this.api, `${this.name} ${ACCESSORY_NAMES.inverterFromBattery} sensor`, `${ACCESSORY_SERIAL_PREFIXES.inverterFromBattery}-light-${this.sn}`, inverterModel, this.batteryInstalled),
|
|
194
|
+
inverterToBattery: new SolaxLightSensorAccessory(this.log, this.api, `${this.name} ${ACCESSORY_NAMES.inverterToBattery} sensor`, `${ACCESSORY_SERIAL_PREFIXES.inverterToBattery}-light-${this.sn}`, inverterModel, this.batteryInstalled),
|
|
195
|
+
inverterAC: new SolaxLightSensorAccessory(this.log, this.api, `${this.name} ${ACCESSORY_NAMES.inverterAC} sensor`, `${ACCESSORY_SERIAL_PREFIXES.inverterAC}-light-${this.sn}`, inverterModel),
|
|
201
196
|
inverterToGrid: new SolaxLightSensorAccessory(this.log, this.api, `${this.name} ${ACCESSORY_NAMES.inverterToGrid} sensor`, `${ACCESSORY_SERIAL_PREFIXES.inverterToGrid}-light-${this.sn}`, inverterModel),
|
|
202
197
|
inverterToHouse: new SolaxLightSensorAccessory(this.log, this.api, `${this.name} ${ACCESSORY_NAMES.inverterToHouse} sensor`, `${ACCESSORY_SERIAL_PREFIXES.inverterToHouse}-light-${this.sn}`, inverterModel),
|
|
203
198
|
gridToHouse: new SolaxLightSensorAccessory(this.log, this.api, `${this.name} ${ACCESSORY_NAMES.gridToHouse} sensor`, `${ACCESSORY_SERIAL_PREFIXES.gridToHouse}-light-${this.sn}`, inverterModel),
|
|
@@ -209,13 +204,13 @@ export class SolaxCloudAPIPlatformInverter {
|
|
|
209
204
|
if (this.config.smoothMeters) {
|
|
210
205
|
// add smooth power sensors
|
|
211
206
|
this.smoothLightSensors = {
|
|
212
|
-
pv: new SolaxLightSensorAccessory(this.log, this.api, `${this.name} ${ACCESSORY_NAMES.pv} sensor Smooth`, `${ACCESSORY_SERIAL_PREFIXES.pv}-light-smooth-${this.sn}`, inverterModel,
|
|
213
|
-
inverterFromBattery: new SolaxLightSensorAccessory(this.log, this.api, `${this.name} ${ACCESSORY_NAMES.inverterFromBattery} sensor Smooth`, `${ACCESSORY_SERIAL_PREFIXES.inverterFromBattery}-light-smooth-${this.sn}`, inverterModel,
|
|
214
|
-
inverterToBattery: new SolaxLightSensorAccessory(this.log, this.api, `${this.name} ${ACCESSORY_NAMES.inverterToBattery} sensor Smooth`, `${ACCESSORY_SERIAL_PREFIXES.inverterToBattery}-light-smooth-${this.sn}`, inverterModel,
|
|
215
|
-
inverterAC: new SolaxLightSensorAccessory(this.log, this.api, `${this.name} ${ACCESSORY_NAMES.inverterAC} sensor Smooth`, `${ACCESSORY_SERIAL_PREFIXES.inverterAC}-light-smooth-${this.sn}`, inverterModel,
|
|
216
|
-
inverterToGrid: new SolaxLightSensorAccessory(this.log, this.api, `${this.name} ${ACCESSORY_NAMES.inverterToGrid} sensor Smooth`, `${ACCESSORY_SERIAL_PREFIXES.inverterToGrid}-light-smooth-${this.sn}`, inverterModel,
|
|
217
|
-
inverterToHouse: new SolaxLightSensorAccessory(this.log, this.api, `${this.name} ${ACCESSORY_NAMES.inverterToHouse} sensor Smooth`, `${ACCESSORY_SERIAL_PREFIXES.inverterToHouse}-light-smooth-${this.sn}`, inverterModel,
|
|
218
|
-
gridToHouse: new SolaxLightSensorAccessory(this.log, this.api, `${this.name} ${ACCESSORY_NAMES.gridToHouse} sensor Smooth`, `${ACCESSORY_SERIAL_PREFIXES.gridToHouse}-light-smooth-${this.sn}`, inverterModel,
|
|
207
|
+
pv: new SolaxLightSensorAccessory(this.log, this.api, `${this.name} ${ACCESSORY_NAMES.pv} sensor Smooth`, `${ACCESSORY_SERIAL_PREFIXES.pv}-light-smooth-${this.sn}`, inverterModel, true, `${this.name} ${ACCESSORY_NAMES.pv} sensor (smooth)`),
|
|
208
|
+
inverterFromBattery: new SolaxLightSensorAccessory(this.log, this.api, `${this.name} ${ACCESSORY_NAMES.inverterFromBattery} sensor Smooth`, `${ACCESSORY_SERIAL_PREFIXES.inverterFromBattery}-light-smooth-${this.sn}`, inverterModel, this.batteryInstalled, `${this.name} ${ACCESSORY_NAMES.inverterFromBattery} sensor (smooth)`),
|
|
209
|
+
inverterToBattery: new SolaxLightSensorAccessory(this.log, this.api, `${this.name} ${ACCESSORY_NAMES.inverterToBattery} sensor Smooth`, `${ACCESSORY_SERIAL_PREFIXES.inverterToBattery}-light-smooth-${this.sn}`, inverterModel, this.batteryInstalled, `${this.name} ${ACCESSORY_NAMES.inverterToBattery} sensor (smooth)`),
|
|
210
|
+
inverterAC: new SolaxLightSensorAccessory(this.log, this.api, `${this.name} ${ACCESSORY_NAMES.inverterAC} sensor Smooth`, `${ACCESSORY_SERIAL_PREFIXES.inverterAC}-light-smooth-${this.sn}`, inverterModel, true, `${this.name} ${ACCESSORY_NAMES.inverterAC} sensor (smooth)`),
|
|
211
|
+
inverterToGrid: new SolaxLightSensorAccessory(this.log, this.api, `${this.name} ${ACCESSORY_NAMES.inverterToGrid} sensor Smooth`, `${ACCESSORY_SERIAL_PREFIXES.inverterToGrid}-light-smooth-${this.sn}`, inverterModel, true, `${this.name} ${ACCESSORY_NAMES.inverterToGrid} sensor (smooth)`),
|
|
212
|
+
inverterToHouse: new SolaxLightSensorAccessory(this.log, this.api, `${this.name} ${ACCESSORY_NAMES.inverterToHouse} sensor Smooth`, `${ACCESSORY_SERIAL_PREFIXES.inverterToHouse}-light-smooth-${this.sn}`, inverterModel, true, `${this.name} ${ACCESSORY_NAMES.inverterToHouse} sensor (smooth)`),
|
|
213
|
+
gridToHouse: new SolaxLightSensorAccessory(this.log, this.api, `${this.name} ${ACCESSORY_NAMES.gridToHouse} sensor Smooth`, `${ACCESSORY_SERIAL_PREFIXES.gridToHouse}-light-smooth-${this.sn}`, inverterModel, true, `${this.name} ${ACCESSORY_NAMES.gridToHouse} sensor (smooth)`),
|
|
219
214
|
};
|
|
220
215
|
this.solaxAccessories.push(this.smoothLightSensors.pv, this.smoothLightSensors.inverterAC, this.smoothLightSensors.inverterToGrid, this.smoothLightSensors.inverterToHouse, this.smoothLightSensors.gridToHouse);
|
|
221
216
|
if (this.batteryInstalled) {
|
|
@@ -226,13 +221,13 @@ export class SolaxCloudAPIPlatformInverter {
|
|
|
226
221
|
if (this.config.smoothMeters) {
|
|
227
222
|
// Smooth outlets remain available alongside Matter electrical sensors.
|
|
228
223
|
this.smoothOutlets = {
|
|
229
|
-
pv: new SolaxOutletAccessory(this.log, this.api, `${this.name} ${ACCESSORY_NAMES.pv} Smooth`, `${ACCESSORY_SERIAL_PREFIXES.pv}-smooth-${this.sn}`, inverterModel, this.config.enableHistory, `${this.name} ${ACCESSORY_NAMES.pv} (smooth)
|
|
230
|
-
inverterFromBattery: new SolaxOutletAccessory(this.log, this.api, `${this.name} ${ACCESSORY_NAMES.inverterFromBattery} Smooth`, `${ACCESSORY_SERIAL_PREFIXES.inverterFromBattery}-smooth-${this.sn}`, inverterModel, this.config.enableHistory, `${this.name} ${ACCESSORY_NAMES.inverterFromBattery} (smooth)
|
|
231
|
-
inverterToBattery: new SolaxOutletAccessory(this.log, this.api, `${this.name} ${ACCESSORY_NAMES.inverterToBattery} Smooth`, `${ACCESSORY_SERIAL_PREFIXES.inverterToBattery}-smooth-${this.sn}`, inverterModel, this.config.enableHistory, `${this.name} ${ACCESSORY_NAMES.inverterToBattery} (smooth)
|
|
232
|
-
inverterAC: new SolaxOutletAccessory(this.log, this.api, `${this.name} ${ACCESSORY_NAMES.inverterAC} Smooth`, `${ACCESSORY_SERIAL_PREFIXES.inverterAC}-smooth-${this.sn}`, inverterModel, this.config.enableHistory, `${this.name} ${ACCESSORY_NAMES.inverterAC} (smooth)
|
|
233
|
-
inverterToGrid: new SolaxOutletAccessory(this.log, this.api, `${this.name} ${ACCESSORY_NAMES.inverterToGrid} Smooth`, `${ACCESSORY_SERIAL_PREFIXES.inverterToGrid}-smooth-${this.sn}`, inverterModel, this.config.enableHistory, `${this.name} ${ACCESSORY_NAMES.inverterToGrid} (smooth)
|
|
234
|
-
inverterToHouse: new SolaxOutletAccessory(this.log, this.api, `${this.name} ${ACCESSORY_NAMES.inverterToHouse} Smooth`, `${ACCESSORY_SERIAL_PREFIXES.inverterToHouse}-smooth-${this.sn}`, inverterModel, this.config.enableHistory, `${this.name} ${ACCESSORY_NAMES.inverterToHouse} (smooth)
|
|
235
|
-
gridToHouse: new SolaxOutletAccessory(this.log, this.api, `${this.name} ${ACCESSORY_NAMES.gridToHouse} Smooth`, `${ACCESSORY_SERIAL_PREFIXES.gridToHouse}-smooth-${this.sn}`, inverterModel, this.config.enableHistory, `${this.name} ${ACCESSORY_NAMES.gridToHouse} (smooth)
|
|
224
|
+
pv: new SolaxOutletAccessory(this.log, this.api, `${this.name} ${ACCESSORY_NAMES.pv} Smooth`, `${ACCESSORY_SERIAL_PREFIXES.pv}-smooth-${this.sn}`, inverterModel, this.config.enableHistory, `${this.name} ${ACCESSORY_NAMES.pv} (smooth)`, this.getMatterSensorOptions(ACCESSORY_KEYS.pv, true)),
|
|
225
|
+
inverterFromBattery: new SolaxOutletAccessory(this.log, this.api, `${this.name} ${ACCESSORY_NAMES.inverterFromBattery} Smooth`, `${ACCESSORY_SERIAL_PREFIXES.inverterFromBattery}-smooth-${this.sn}`, inverterModel, this.config.enableHistory, `${this.name} ${ACCESSORY_NAMES.inverterFromBattery} (smooth)`, this.batteryInstalled ? this.getMatterSensorOptions(ACCESSORY_KEYS.inverterFromBattery, true) : undefined),
|
|
226
|
+
inverterToBattery: new SolaxOutletAccessory(this.log, this.api, `${this.name} ${ACCESSORY_NAMES.inverterToBattery} Smooth`, `${ACCESSORY_SERIAL_PREFIXES.inverterToBattery}-smooth-${this.sn}`, inverterModel, this.config.enableHistory, `${this.name} ${ACCESSORY_NAMES.inverterToBattery} (smooth)`, this.batteryInstalled ? this.getMatterSensorOptions(ACCESSORY_KEYS.inverterToBattery, true) : undefined),
|
|
227
|
+
inverterAC: new SolaxOutletAccessory(this.log, this.api, `${this.name} ${ACCESSORY_NAMES.inverterAC} Smooth`, `${ACCESSORY_SERIAL_PREFIXES.inverterAC}-smooth-${this.sn}`, inverterModel, this.config.enableHistory, `${this.name} ${ACCESSORY_NAMES.inverterAC} (smooth)`, this.getMatterSensorOptions(ACCESSORY_KEYS.inverterAC, true)),
|
|
228
|
+
inverterToGrid: new SolaxOutletAccessory(this.log, this.api, `${this.name} ${ACCESSORY_NAMES.inverterToGrid} Smooth`, `${ACCESSORY_SERIAL_PREFIXES.inverterToGrid}-smooth-${this.sn}`, inverterModel, this.config.enableHistory, `${this.name} ${ACCESSORY_NAMES.inverterToGrid} (smooth)`, this.getMatterSensorOptions(ACCESSORY_KEYS.inverterToGrid, true)),
|
|
229
|
+
inverterToHouse: new SolaxOutletAccessory(this.log, this.api, `${this.name} ${ACCESSORY_NAMES.inverterToHouse} Smooth`, `${ACCESSORY_SERIAL_PREFIXES.inverterToHouse}-smooth-${this.sn}`, inverterModel, this.config.enableHistory, `${this.name} ${ACCESSORY_NAMES.inverterToHouse} (smooth)`, this.getMatterSensorOptions(ACCESSORY_KEYS.inverterToHouse, true)),
|
|
230
|
+
gridToHouse: new SolaxOutletAccessory(this.log, this.api, `${this.name} ${ACCESSORY_NAMES.gridToHouse} Smooth`, `${ACCESSORY_SERIAL_PREFIXES.gridToHouse}-smooth-${this.sn}`, inverterModel, this.config.enableHistory, `${this.name} ${ACCESSORY_NAMES.gridToHouse} (smooth)`, this.getMatterSensorOptions(ACCESSORY_KEYS.gridToHouse, true)),
|
|
236
231
|
};
|
|
237
232
|
this.solaxAccessories.push(this.smoothOutlets.pv, this.smoothOutlets.inverterAC, this.smoothOutlets.inverterToGrid, this.smoothOutlets.inverterToHouse, this.smoothOutlets.gridToHouse);
|
|
238
233
|
if (this.batteryInstalled) {
|
|
@@ -253,6 +248,15 @@ export class SolaxCloudAPIPlatformInverter {
|
|
|
253
248
|
return 'Solax';
|
|
254
249
|
}
|
|
255
250
|
}
|
|
251
|
+
getMatterSensorOptions(key, smooth = false, supportsEnergy = false) {
|
|
252
|
+
const smoothSuffix = smooth ? ' Smooth' : '';
|
|
253
|
+
const serialSmoothSegment = smooth ? '-smooth' : '';
|
|
254
|
+
return {
|
|
255
|
+
displayName: `${this.name} ${ACCESSORY_NAMES[key]} sensor${smoothSuffix}`,
|
|
256
|
+
serialNumber: `${ACCESSORY_SERIAL_PREFIXES[key]}-matter${serialSmoothSegment}-${this.sn}`,
|
|
257
|
+
supportsEnergy,
|
|
258
|
+
};
|
|
259
|
+
}
|
|
256
260
|
/**
|
|
257
261
|
* Update all platform accessory status based on the values read from the API.
|
|
258
262
|
* @param {SolaxCloudAPIResponse} apiData API data from Solax Cloud.
|
|
@@ -342,7 +346,7 @@ export class SolaxCloudAPIPlatformInverter {
|
|
|
342
346
|
*/
|
|
343
347
|
setRawPower(key, power) {
|
|
344
348
|
this.rawOutlets[key].setPowerConsumption(power);
|
|
345
|
-
if (this.
|
|
349
|
+
if (this.useLegacyLightSensors) {
|
|
346
350
|
this.rawLightSensors[key].setAmbientLightLevel(power);
|
|
347
351
|
}
|
|
348
352
|
}
|
|
@@ -361,9 +365,6 @@ export class SolaxCloudAPIPlatformInverter {
|
|
|
361
365
|
*/
|
|
362
366
|
setRawEnergy(key, energy) {
|
|
363
367
|
this.rawOutlets[key].setTotalEnergyConsumption(energy);
|
|
364
|
-
if (this.useNativePowerSensors) {
|
|
365
|
-
this.rawLightSensors[key].setTotalEnergyConsumption(energy);
|
|
366
|
-
}
|
|
367
368
|
}
|
|
368
369
|
/**
|
|
369
370
|
* Sets smooth accessory power from raw accessory power for this inverter.
|
|
@@ -371,7 +372,7 @@ export class SolaxCloudAPIPlatformInverter {
|
|
|
371
372
|
*/
|
|
372
373
|
setSmoothPower(key) {
|
|
373
374
|
const smoothPower = this.rawOutlets[key].getSmoothPowerConsumption(this.config.smoothingMethod, this.smoothingWindow);
|
|
374
|
-
if (this.
|
|
375
|
+
if (this.useLegacyLightSensors) {
|
|
375
376
|
this.smoothLightSensors[key].setAmbientLightLevel(smoothPower);
|
|
376
377
|
}
|
|
377
378
|
this.smoothOutlets[key].setPowerConsumption(smoothPower);
|
|
@@ -412,7 +413,7 @@ export class SolaxCloudAPIPlatformInverter {
|
|
|
412
413
|
* @returns {AccessoryPlugin[]} Array of accessories for this inverter.
|
|
413
414
|
*/
|
|
414
415
|
getAccessories() {
|
|
415
|
-
return this.solaxAccessories
|
|
416
|
+
return this.solaxAccessories;
|
|
416
417
|
}
|
|
417
418
|
}
|
|
418
419
|
//# sourceMappingURL=platformInverter.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"platformInverter.js","sourceRoot":"","sources":["../src/platformInverter.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"platformInverter.js","sourceRoot":"","sources":["../src/platformInverter.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAC;AAIvC,OAAO,EAA4B,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AACtF,OAAO,EAAE,yBAAyB,EAAE,MAAM,2BAA2B,CAAC;AAItE,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,EAAE,sBAAsB,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAEtF,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC/C,MAAM,EAAE,aAAa,EAAE,GAAG,OAAO,CAAC,iBAAiB,CAAqC,CAAC;AAEzF;;GAEG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG;IAC5B,KAAK,EAAE,CAAC;IACR,MAAM,EAAE,CAAC;CACV,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG;IAC5B,EAAE,EAAE,IAAI;IACR,iBAAiB,EAAE,mBAAmB;IACtC,mBAAmB,EAAE,qBAAqB;IAC1C,UAAU,EAAE,YAAY;IACxB,cAAc,EAAE,gBAAgB;IAChC,eAAe,EAAE,iBAAiB;IAClC,WAAW,EAAE,aAAa;CAClB,CAAC;AAEX;;GAEG;AACH,MAAM,eAAe,GAAG;IACtB,EAAE,EAAE,IAAI;IACR,iBAAiB,EAAE,YAAY;IAC/B,mBAAmB,EAAE,cAAc;IACnC,UAAU,EAAE,IAAI;IAChB,cAAc,EAAE,SAAS;IACzB,eAAe,EAAE,UAAU;IAC3B,WAAW,EAAE,WAAW;CACzB,CAAC;AAEF;;GAEG;AACH,MAAM,yBAAyB,GAAG;IAChC,EAAE,EAAE,IAAI;IACR,iBAAiB,EAAE,WAAW;IAC9B,mBAAmB,EAAE,aAAa;IAClC,UAAU,EAAE,QAAQ;IACpB,cAAc,EAAE,UAAU;IAC1B,eAAe,EAAE,WAAW;IAC5B,WAAW,EAAE,YAAY;CAC1B,CAAC;AAEF;;;;GAIG;AACH,MAAM,OAAO,6BAA6B;IACvB,GAAG,CAAU;IACb,MAAM,CAAiB;IACvB,GAAG,CAAM;IAE1B;;OAEG;IACK,IAAI,CAAS;IAErB;;QAEI;IACI,EAAE,CAAS;IAEnB;;QAEI;IACI,gBAAgB,CAAU;IAElC;;OAEG;IACK,eAAe,CAAS;IAEhC;;OAEG;IACK,aAAa,CAAuB;IAE5C;;OAEG;IACK,SAAS,CAAS;IAE1B;;OAEG;IACK,OAAO,CAAU;IAEzB,4EAA4E;IAC3D,qBAAqB,CAAU;IAEhD;;OAEG;IACK,YAAY,CAAwB;IAE5C;;OAEG;IACK,OAAO,CAAyB;IAExC;;OAEG;IACK,UAAU,CAAwB;IAE1C;;;;QAII;IACI,aAAa,CAAwB;IAE7C;;QAEI;IACI,eAAe,CAA6B;IAEpD;;;;QAII;IACI,kBAAkB,CAA6B;IAEvD,iCAAiC;IACzB,gBAAgB,GAAsB,EAAE,CAAC;IAEjD;;;;;;;;;;;;QAYI;IACJ,YAAa,GAAY,EAAE,MAAsB,EAAE,GAAQ,EACzD,KAAa,EAAE,OAAe,EAAE,EAAU,EAC1C,IAAY,EAAE,UAAmB,EACjC,eAAuB,EACvB,OAAO,GAAG,KAAK,EACf,SAAS,GAAG,6BAA6B,CAAC,oBAAoB,CAAC,KAAK,CAAC;QACrE,6BAA6B;QAC7B,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;QACf,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;QAEf,sBAAsB;QACtB,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC,WAAW,EAAE,CAAC;QAC3B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,qBAAqB,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,WAAW,KAAK,IAAI,CAAC;QAElF,IAAI,CAAC,eAAe,GAAG,eAAe,CAAC;QACvC,IAAI,CAAC,gBAAgB,GAAG,UAAU,CAAC;QAEnC,IAAI,CAAC,GAAG,CAAC,IAAI,CACX,uCAAuC,IAAI,UAAU,EAAE,WAAW,IAAI,CAAC,SAAS,KAAK,CAAC,CAAC;QAEzF,IAAI,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC;YACpB,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,sDAAsD,CAAC,CAAC;QACxE,CAAC;aAAM,IAAI,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC;YACnC,IAAI,CAAC,GAAG,CAAC,IAAI,CACX,yFAAyF,CAAC,CAAC;QAC/F,CAAC;QAED,IAAI,aAAa,GAAG,SAAS,CAAC;QAE9B,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;YAClB,2DAA2D;YAC3D,IAAI,CAAC,aAAa,GAAG,IAAI,aAAa,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE,CAAC,CAAC;YAE3D,mBAAmB;YACnB,MAAM,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC,UAAU,EAAE,CAAC;YAEhD,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,aAAa,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;YAEvD,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;gBACpB,aAAa,GAAG,aAAa,CAAC,eAAe,CAAC,OAAO,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;YAC7E,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,0CAA0C,IAAI,CAAC,SAAS,GAAG;oBAC3D,iEAAiE,CAAC,CAAC;YACnF,CAAC;QACH,CAAC;QAED,+BAA+B;QAC/B,IAAI,CAAC,UAAU,GAAG;YAChB,EAAE,EACA,IAAI,oBAAoB,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,IAAI,IAAI,eAAe,CAAC,EAAE,EAAE,EAC/E,GAAG,yBAAyB,CAAC,EAAE,IAAI,IAAI,CAAC,EAAE,EAAE,EAAE,aAAa,EAAE,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,SAAS,EACjG,IAAI,CAAC,sBAAsB,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC;YACnD,mBAAmB,EACjB,IAAI,oBAAoB,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,IAAI,IAAI,eAAe,CAAC,mBAAmB,EAAE,EAChG,GAAG,yBAAyB,CAAC,mBAAmB,IAAI,IAAI,CAAC,EAAE,EAAE,EAAE,aAAa,EAAE,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,SAAS,EAClH,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,IAAI,CAAC,sBAAsB,CAAC,cAAc,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;YACxG,iBAAiB,EACf,IAAI,oBAAoB,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,IAAI,IAAI,eAAe,CAAC,iBAAiB,EAAE,EAC9F,GAAG,yBAAyB,CAAC,iBAAiB,IAAI,IAAI,CAAC,EAAE,EAAE,EAAE,aAAa,EAAE,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,SAAS,EAChH,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,IAAI,CAAC,sBAAsB,CAAC,cAAc,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;YACtG,UAAU,EACR,IAAI,oBAAoB,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,IAAI,IAAI,eAAe,CAAC,UAAU,EAAE,EACvF,GAAG,yBAAyB,CAAC,UAAU,IAAI,IAAI,CAAC,EAAE,EAAE,EAAE,aAAa,EAAE,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,SAAS,EACzG,IAAI,CAAC,sBAAsB,CAAC,cAAc,CAAC,UAAU,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;YACxE,cAAc,EACZ,IAAI,oBAAoB,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,IAAI,IAAI,eAAe,CAAC,cAAc,EAAE,EAC3F,GAAG,yBAAyB,CAAC,cAAc,IAAI,IAAI,CAAC,EAAE,EAAE,EAAE,aAAa,EAAE,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,SAAS,EAC7G,IAAI,CAAC,sBAAsB,CAAC,cAAc,CAAC,cAAc,CAAC,CAAC;YAC/D,eAAe,EACb,IAAI,oBAAoB,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,IAAI,IAAI,eAAe,CAAC,eAAe,EAAE,EAC5F,GAAG,yBAAyB,CAAC,eAAe,IAAI,IAAI,CAAC,EAAE,EAAE,EAAE,aAAa,EAAE,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,SAAS,EAC9G,IAAI,CAAC,sBAAsB,CAAC,cAAc,CAAC,eAAe,CAAC,CAAC;YAChE,WAAW,EACT,IAAI,oBAAoB,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,IAAI,IAAI,eAAe,CAAC,WAAW,EAAE,EACxF,GAAG,yBAAyB,CAAC,WAAW,IAAI,IAAI,CAAC,EAAE,EAAE,EAAE,aAAa,EAAE,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,SAAS,EAC1G,IAAI,CAAC,sBAAsB,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC;SAC7D,CAAC;QAEF,6BAA6B;QAC7B,IAAI,CAAC,YAAY;YACb,IAAI,oBAAoB,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,IAAI,SAAS,EAAE,UAAU,IAAI,CAAC,EAAE,EAAE,EAAE,aAAa,CAAC,CAAC;QAE5G,+CAA+C;QAC/C,IAAI,CAAC,gBAAgB;YACjB,CAAE,IAAI,CAAC,UAAU,CAAC,EAAE,EAAE,IAAI,CAAC,UAAU,CAAC,UAAU,EAAE,IAAI,CAAC,UAAU,CAAC,cAAc;gBAC9E,IAAI,CAAC,UAAU,CAAC,eAAe,EAAE,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE,IAAI,CAAC,YAAY,CAAE,CAAC;QAExF,IAAI,IAAI,CAAC,UAAU,EAAE,EAAE,CAAC;YACtB,IAAI,CAAC,OAAO,GAAG,IAAI,qBAAqB,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,IAAI,UAAU,EAAE,OAAO,IAAI,CAAC,EAAE,EAAE,EAAE,aAAa,CAAC,CAAC;YAEtH,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,UAAU,CAAC,mBAAmB,EAAE,IAAI,CAAC,UAAU,CAAC,iBAAiB,CAAC,CAAC;QACnH,CAAC;QAED,IAAI,IAAI,CAAC,qBAAqB,EAAE,CAAC;YAC/B,wBAAwB;YACxB,IAAI,CAAC,eAAe,GAAG;gBACrB,EAAE,EAAE,IAAI,yBAAyB,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,IAAI,IAAI,eAAe,CAAC,EAAE,SAAS,EAC/F,GAAG,yBAAyB,CAAC,EAAE,UAAU,IAAI,CAAC,EAAE,EAAE,EAAE,aAAa,CAAC;gBACpE,mBAAmB,EACjB,IAAI,yBAAyB,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,IAAI,IAAI,eAAe,CAAC,mBAAmB,SAAS,EAC5G,GAAG,yBAAyB,CAAC,mBAAmB,UAAU,IAAI,CAAC,EAAE,EAAE,EAAE,aAAa,EAAE,IAAI,CAAC,gBAAgB,CAAC;gBAC9G,iBAAiB,EACf,IAAI,yBAAyB,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,IAAI,IAAI,eAAe,CAAC,iBAAiB,SAAS,EAC1G,GAAG,yBAAyB,CAAC,iBAAiB,UAAU,IAAI,CAAC,EAAE,EAAE,EAAE,aAAa,EAAE,IAAI,CAAC,gBAAgB,CAAC;gBAC5G,UAAU,EACR,IAAI,yBAAyB,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,IAAI,IAAI,eAAe,CAAC,UAAU,SAAS,EACnG,GAAG,yBAAyB,CAAC,UAAU,UAAU,IAAI,CAAC,EAAE,EAAE,EAAE,aAAa,CAAC;gBAC9E,cAAc,EACZ,IAAI,yBAAyB,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,IAAI,IAAI,eAAe,CAAC,cAAc,SAAS,EACvG,GAAG,yBAAyB,CAAC,cAAc,UAAU,IAAI,CAAC,EAAE,EAAE,EAAE,aAAa,CAAC;gBAClF,eAAe,EACb,IAAI,yBAAyB,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,IAAI,IAAI,eAAe,CAAC,eAAe,SAAS,EACxG,GAAG,yBAAyB,CAAC,eAAe,UAAU,IAAI,CAAC,EAAE,EAAE,EAAE,aAAa,CAAC;gBACnF,WAAW,EACT,IAAI,yBAAyB,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,IAAI,IAAI,eAAe,CAAC,WAAW,SAAS,EACpG,GAAG,yBAAyB,CAAC,WAAW,UAAU,IAAI,CAAC,EAAE,EAAE,EAAE,aAAa,CAAC;aAChF,CAAC;YAEF,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,EAAE,EAAE,IAAI,CAAC,eAAe,CAAC,UAAU,EAAE,IAAI,CAAC,eAAe,CAAC,cAAc,EACtH,IAAI,CAAC,eAAe,CAAC,eAAe,EAAE,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC,CAAC;YAE1E,IAAI,IAAI,CAAC,gBAAgB,EAAE,CAAC;gBAC1B,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,mBAAmB,EAAE,IAAI,CAAC,eAAe,CAAC,iBAAiB,CAAC,CAAC;YAC/G,CAAC;YAED,IAAI,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC;gBAC7B,2BAA2B;gBAC3B,IAAI,CAAC,kBAAkB,GAAG;oBACxB,EAAE,EACA,IAAI,yBAAyB,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,IAAI,IAAI,eAAe,CAAC,EAAE,gBAAgB,EAClG,GAAG,yBAAyB,CAAC,EAAE,iBAAiB,IAAI,CAAC,EAAE,EAAE,EAAE,aAAa,EAAE,IAAI,EAC9E,GAAG,IAAI,CAAC,IAAI,IAAI,eAAe,CAAC,EAAE,kBAAkB,CAAC;oBACzD,mBAAmB,EACjB,IAAI,yBAAyB,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,IAAI,IAAI,eAAe,CAAC,mBAAmB,gBAAgB,EACnH,GAAG,yBAAyB,CAAC,mBAAmB,iBAAiB,IAAI,CAAC,EAAE,EAAE,EAAE,aAAa,EAAE,IAAI,CAAC,gBAAgB,EAChH,GAAG,IAAI,CAAC,IAAI,IAAI,eAAe,CAAC,mBAAmB,kBAAkB,CAAC;oBAC1E,iBAAiB,EACf,IAAI,yBAAyB,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,IAAI,IAAI,eAAe,CAAC,iBAAiB,gBAAgB,EACjH,GAAG,yBAAyB,CAAC,iBAAiB,iBAAiB,IAAI,CAAC,EAAE,EAAE,EAAE,aAAa,EAAE,IAAI,CAAC,gBAAgB,EAC9G,GAAG,IAAI,CAAC,IAAI,IAAI,eAAe,CAAC,iBAAiB,kBAAkB,CAAC;oBACxE,UAAU,EACR,IAAI,yBAAyB,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,IAAI,IAAI,eAAe,CAAC,UAAU,gBAAgB,EAC1G,GAAG,yBAAyB,CAAC,UAAU,iBAAiB,IAAI,CAAC,EAAE,EAAE,EAAE,aAAa,EAAE,IAAI,EACtF,GAAG,IAAI,CAAC,IAAI,IAAI,eAAe,CAAC,UAAU,kBAAkB,CAAC;oBACjE,cAAc,EACZ,IAAI,yBAAyB,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,IAAI,IAAI,eAAe,CAAC,cAAc,gBAAgB,EAC9G,GAAG,yBAAyB,CAAC,cAAc,iBAAiB,IAAI,CAAC,EAAE,EAAE,EAAE,aAAa,EAAE,IAAI,EAC1F,GAAG,IAAI,CAAC,IAAI,IAAI,eAAe,CAAC,cAAc,kBAAkB,CAAC;oBACrE,eAAe,EACb,IAAI,yBAAyB,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,IAAI,IAAI,eAAe,CAAC,eAAe,gBAAgB,EAC/G,GAAG,yBAAyB,CAAC,eAAe,iBAAiB,IAAI,CAAC,EAAE,EAAE,EAAE,aAAa,EAAE,IAAI,EAC3F,GAAG,IAAI,CAAC,IAAI,IAAI,eAAe,CAAC,eAAe,kBAAkB,CAAC;oBACtE,WAAW,EACT,IAAI,yBAAyB,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,IAAI,IAAI,eAAe,CAAC,WAAW,gBAAgB,EAC3G,GAAG,yBAAyB,CAAC,WAAW,iBAAiB,IAAI,CAAC,EAAE,EAAE,EAAE,aAAa,EAAE,IAAI,EACvF,GAAG,IAAI,CAAC,IAAI,IAAI,eAAe,CAAC,WAAW,kBAAkB,CAAC;iBACnE,CAAC;gBAEF,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,EAAE,EAAE,IAAI,CAAC,kBAAkB,CAAC,UAAU,EAAE,IAAI,CAAC,kBAAkB,CAAC,cAAc,EAC/H,IAAI,CAAC,kBAAkB,CAAC,eAAe,EAAE,IAAI,CAAC,kBAAkB,CAAC,WAAW,CAAC,CAAC;gBAEhF,IAAI,IAAI,CAAC,gBAAgB,EAAE,CAAC;oBAC1B,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,mBAAmB,EAAE,IAAI,CAAC,kBAAkB,CAAC,iBAAiB,CAAC,CAAC;gBACrH,CAAC;YACH,CAAC;QACH,CAAC;QAED,IAAI,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC;YAC7B,uEAAuE;YACvE,IAAI,CAAC,aAAa,GAAG;gBACnB,EAAE,EACA,IAAI,oBAAoB,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,IAAI,IAAI,eAAe,CAAC,EAAE,SAAS,EACtF,GAAG,yBAAyB,CAAC,EAAE,WAAW,IAAI,CAAC,EAAE,EAAE,EAAE,aAAa,EAAE,IAAI,CAAC,MAAM,CAAC,aAAa,EAC7F,GAAG,IAAI,CAAC,IAAI,IAAI,eAAe,CAAC,EAAE,WAAW,EAAE,IAAI,CAAC,sBAAsB,CAAC,cAAc,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;gBACxG,mBAAmB,EACjB,IAAI,oBAAoB,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,IAAI,IAAI,eAAe,CAAC,mBAAmB,SAAS,EACvG,GAAG,yBAAyB,CAAC,mBAAmB,WAAW,IAAI,CAAC,EAAE,EAAE,EAAE,aAAa,EAAE,IAAI,CAAC,MAAM,CAAC,aAAa,EAC9G,GAAG,IAAI,CAAC,IAAI,IAAI,eAAe,CAAC,mBAAmB,WAAW,EAC9D,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,IAAI,CAAC,sBAAsB,CAAC,cAAc,CAAC,mBAAmB,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;gBAC9G,iBAAiB,EACf,IAAI,oBAAoB,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,IAAI,IAAI,eAAe,CAAC,iBAAiB,SAAS,EACrG,GAAG,yBAAyB,CAAC,iBAAiB,WAAW,IAAI,CAAC,EAAE,EAAE,EAAE,aAAa,EAAE,IAAI,CAAC,MAAM,CAAC,aAAa,EAC5G,GAAG,IAAI,CAAC,IAAI,IAAI,eAAe,CAAC,iBAAiB,WAAW,EAC5D,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,IAAI,CAAC,sBAAsB,CAAC,cAAc,CAAC,iBAAiB,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;gBAC5G,UAAU,EACR,IAAI,oBAAoB,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,IAAI,IAAI,eAAe,CAAC,UAAU,SAAS,EAC9F,GAAG,yBAAyB,CAAC,UAAU,WAAW,IAAI,CAAC,EAAE,EAAE,EAAE,aAAa,EAAE,IAAI,CAAC,MAAM,CAAC,aAAa,EACrG,GAAG,IAAI,CAAC,IAAI,IAAI,eAAe,CAAC,UAAU,WAAW,EAAE,IAAI,CAAC,sBAAsB,CAAC,cAAc,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;gBACxH,cAAc,EACV,IAAI,oBAAoB,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,IAAI,IAAI,eAAe,CAAC,cAAc,SAAS,EAClG,GAAG,yBAAyB,CAAC,cAAc,WAAW,IAAI,CAAC,EAAE,EAAE,EAAE,aAAa,EAAE,IAAI,CAAC,MAAM,CAAC,aAAa,EACzG,GAAG,IAAI,CAAC,IAAI,IAAI,eAAe,CAAC,cAAc,WAAW,EACzD,IAAI,CAAC,sBAAsB,CAAC,cAAc,CAAC,cAAc,EAAE,IAAI,CAAC,CAAC;gBACvE,eAAe,EACX,IAAI,oBAAoB,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,IAAI,IAAI,eAAe,CAAC,eAAe,SAAS,EACnG,GAAG,yBAAyB,CAAC,eAAe,WAAW,IAAI,CAAC,EAAE,EAAE,EAAE,aAAa,EAAE,IAAI,CAAC,MAAM,CAAC,aAAa,EAC1G,GAAG,IAAI,CAAC,IAAI,IAAI,eAAe,CAAC,eAAe,WAAW,EAC1D,IAAI,CAAC,sBAAsB,CAAC,cAAc,CAAC,eAAe,EAAE,IAAI,CAAC,CAAC;gBACxE,WAAW,EACP,IAAI,oBAAoB,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,IAAI,IAAI,eAAe,CAAC,WAAW,SAAS,EAC/F,GAAG,yBAAyB,CAAC,WAAW,WAAW,IAAI,CAAC,EAAE,EAAE,EAAE,aAAa,EAAE,IAAI,CAAC,MAAM,CAAC,aAAa,EACtG,GAAG,IAAI,CAAC,IAAI,IAAI,eAAe,CAAC,WAAW,WAAW,EAAE,IAAI,CAAC,sBAAsB,CAAC,cAAc,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;aAC7H,CAAC;YAEF,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE,EAAE,IAAI,CAAC,aAAa,CAAC,UAAU,EAAE,IAAI,CAAC,aAAa,CAAC,cAAc,EAChH,IAAI,CAAC,aAAa,CAAC,eAAe,EAAE,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC;YAEtE,IAAI,IAAI,CAAC,gBAAgB,EAAE,CAAC;gBAC1B,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,mBAAmB,EAAE,IAAI,CAAC,aAAa,CAAC,iBAAiB,CAAC,CAAC;YAC3G,CAAC;QACH,CAAC;IAEH,CAAC;IAED;;;;OAIG;IACI,MAAM,CAAC,oBAAoB,CAAC,KAAa;QAC9C,QAAO,KAAK,EAAE,CAAC;YACb,KAAK,cAAc,CAAC,MAAM;gBACxB,OAAO,QAAQ,CAAC;YAClB;gBACE,OAAO,OAAO,CAAC;QACnB,CAAC;IACH,CAAC;IAEO,sBAAsB,CAC5B,GAAiC,EACjC,MAAM,GAAG,KAAK,EACd,cAAc,GAAG,KAAK;QAEtB,MAAM,YAAY,GAAG,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC;QAC7C,MAAM,mBAAmB,GAAG,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC;QAEpD,OAAO;YACL,WAAW,EAAE,GAAG,IAAI,CAAC,IAAI,IAAI,eAAe,CAAC,GAAG,CAAC,UAAU,YAAY,EAAE;YACzE,YAAY,EAAE,GAAG,yBAAyB,CAAC,GAAG,CAAC,UAAU,mBAAmB,IAAI,IAAI,CAAC,EAAE,EAAE;YACzF,cAAc;SACf,CAAC;IACJ,CAAC;IAED;;;QAGI;IACI,iBAAiB,CAAC,OAA8B;QACtD,qBAAqB;QACrB,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC,EAAE,EAAE,aAAa,CAAC,UAAU,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;QAC9E,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC,mBAAmB,EAAE,aAAa,CAAC,2BAA2B,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;QAChH,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC,iBAAiB,EAAE,aAAa,CAAC,yBAAyB,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;QAC5G,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC,UAAU,EAAE,aAAa,CAAC,kBAAkB,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;QAC9F,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC,UAAU,EAAE,aAAa,CAAC,aAAa,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;QAC1F,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC,cAAc,EAAE,aAAa,CAAC,sBAAsB,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;QACtG,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC,eAAe,EAAE,aAAa,CAAC,uBAAuB,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;QACxG,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC,WAAW,EAAE,aAAa,CAAC,mBAAmB,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;QAEhG,IAAI,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC;YAC7B,mGAAmG;YACnG,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC;YACvC,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,mBAAmB,CAAC,CAAC;YACxD,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,iBAAiB,CAAC,CAAC;YACtD,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC;YAC/C,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,cAAc,CAAC,CAAC;YACnD,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,eAAe,CAAC,CAAC;YACpD,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC;QAClD,CAAC;QAED,oBAAoB;QACpB,IAAI,IAAI,CAAC,UAAU,EAAE,EAAE,CAAC;YACtB,IAAI,CAAC,eAAe,CAAC,aAAa,CAAC,aAAa,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;YAElE,IAAI,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC,iBAAiB,CAAC,GAAG,CAAC,EAAE,CAAC;gBAC3D,IAAI,CAAC,qBAAqB,CAAC,sBAAsB,CAAC,QAAQ,CAAC,CAAC;YAC9D,CAAC;iBAAM,IAAI,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC,mBAAmB,CAAC,GAAG,CAAC,EAAE,CAAC;gBACpE,IAAI,CAAC,qBAAqB,CAAC,sBAAsB,CAAC,YAAY,CAAC,CAAC;YAClE,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC,qBAAqB,CAAC,sBAAsB,CAAC,cAAc,CAAC,CAAC;YACpE,CAAC;QACH,CAAC;QAED,mCAAmC;QACnC,IAAI,CAAC,eAAe,EAAE,CAAC;IACzB,CAAC;IAED;;;OAGG;IACI,qBAAqB,CAAC,KAAa;QACxC,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;IACrC,CAAC;IAED;;;OAGG;IACI,qBAAqB;QAC1B,OAAO,IAAI,CAAC,OAAO,CAAC,mBAAmB,EAAE,CAAC;IAC5C,CAAC;IAED;;;OAGG;IACI,eAAe,CAAC,UAAkB;QACvC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;IACpC,CAAC;IAED;;;OAGG;IACI,eAAe;QACpB,OAAO,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,CAAC;IACtC,CAAC;IAED;;OAEG;IACI,eAAe;QACpB,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IACnC,CAAC;IAED;;;;OAIG;IACI,WAAW,CAAC,GAAW;QAC5B,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,wBAAwB,EAAE,CAAC;IACzD,CAAC;IAED;;;;OAIG;IACI,WAAW,CAAC,GAAW,EAAE,KAAa;QAC3C,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC;QAEhD,IAAI,IAAI,CAAC,qBAAqB,EAAE,CAAC;YAC/B,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC;QACxD,CAAC;IACH,CAAC;IAED;;;;OAIG;IACI,YAAY,CAAC,GAAW;QAC7B,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,8BAA8B,EAAE,CAAC;IAC/D,CAAC;IAED;;;;OAIG;IACI,YAAY,CAAC,GAAW,EAAE,MAAc;QAC7C,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,yBAAyB,CAAC,MAAM,CAAC,CAAC;IAEzD,CAAC;IAED;;;OAGG;IACI,cAAc,CAAC,GAAW;QAC/B,MAAM,WAAW,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,yBAAyB,CAAC,IAAI,CAAC,MAAM,CAAC,eAAe,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC;QAEtH,IAAI,IAAI,CAAC,qBAAqB,EAAE,CAAC;YAC/B,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC,oBAAoB,CAAC,WAAW,CAAC,CAAC;QACjE,CAAC;QAED,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,mBAAmB,CAAC,WAAW,CAAC,CAAC;IAC3D,CAAC;IAED;;OAEG;IACI,2BAA2B;QAChC,IAAI,CAAC;YACH,IAAI,IAAI,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC;gBACxC,OAAO;YACT,CAAC;YAED,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,wBAAwB,IAAI,CAAC,SAAS,GAAG;gBACzC,2BAA2B,IAAI,CAAC,IAAI,UAAU,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC;YAEzE,MAAM,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC,UAAU,EAAE,CAAC;YAEhD,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;gBACpB,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,8BAA8B,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;gBAE/E,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC;YAClC,CAAC;iBAAM,CAAC;gBACN,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;YACrC,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,uBAAuB,IAAI,CAAC,SAAS,GAAG;gBACxC,2BAA2B,IAAI,CAAC,IAAI,UAAU,IAAI,CAAC,EAAE,cAAc,KAAK,EAAE,CAAC,CAAC;QAC7F,CAAC;IACH,CAAC;IAED;;;OAGG;IACI,UAAU;QACf,OAAO,IAAI,CAAC,gBAAgB,CAAC;IAC/B,CAAC;IAED;;;OAGG;IACI,cAAc;QACnB,OAAO,IAAI,CAAC,gBAAgB,CAAC;IAC/B,CAAC;CAEF"}
|
package/package.json
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
"displayName": "Homebridge Solax Cloud API",
|
|
4
4
|
"name": "homebridge-solaxcloud-api",
|
|
5
5
|
"type": "module",
|
|
6
|
-
"version": "2.5.
|
|
6
|
+
"version": "2.5.5",
|
|
7
7
|
"description": "Integrates solar production info using public Solax/QCells Cloud API into Homebridge accessories.",
|
|
8
8
|
"license": "Apache-2.0",
|
|
9
9
|
"repository": {
|
|
@@ -24,10 +24,9 @@ describe('SolaxLightSensorAccessory', () => {
|
|
|
24
24
|
const sensor = new SolaxLightSensorAccessory(createLog(), createApi(), 'Light sensor', 'light-1', 'Model');
|
|
25
25
|
|
|
26
26
|
assert.equal(sensor.getServices().length, 2);
|
|
27
|
-
assert.equal(sensor.isMatterAccessory(), false);
|
|
28
27
|
});
|
|
29
28
|
|
|
30
|
-
it('
|
|
29
|
+
it('remains a HAP light sensor when a Matter API is available', () => {
|
|
31
30
|
const matter = createMatterApi();
|
|
32
31
|
const sensor = new SolaxLightSensorAccessory(
|
|
33
32
|
createLog(),
|
|
@@ -35,39 +34,9 @@ describe('SolaxLightSensorAccessory', () => {
|
|
|
35
34
|
'Power sensor',
|
|
36
35
|
'power-1',
|
|
37
36
|
'Model',
|
|
38
|
-
true,
|
|
39
37
|
);
|
|
40
38
|
|
|
41
|
-
assert.equal(sensor.getServices().length,
|
|
42
|
-
assert.equal(
|
|
43
|
-
assert.equal(matter.registrations.length, 1);
|
|
44
|
-
|
|
45
|
-
const accessory = matter.registrations[0][0];
|
|
46
|
-
assert.equal(accessory.deviceType, matter.api.deviceTypes.ElectricalSensor);
|
|
47
|
-
assert.deepEqual(accessory.clusters, {
|
|
48
|
-
electricalPowerMeasurement: { activePower: 0 },
|
|
49
|
-
electricalEnergyMeasurement: {
|
|
50
|
-
cumulativeEnergyExported: { energy: 0 },
|
|
51
|
-
},
|
|
52
|
-
});
|
|
53
|
-
|
|
54
|
-
sensor.setAmbientLightLevel(123.456);
|
|
55
|
-
sensor.setTotalEnergyConsumption(12.345);
|
|
56
|
-
await new Promise(resolve => setImmediate(resolve));
|
|
57
|
-
|
|
58
|
-
assert.deepEqual(matter.updates, [
|
|
59
|
-
{
|
|
60
|
-
uuid: accessory.UUID,
|
|
61
|
-
cluster: 'electricalPowerMeasurement',
|
|
62
|
-
attributes: { activePower: 123456 },
|
|
63
|
-
},
|
|
64
|
-
{
|
|
65
|
-
uuid: accessory.UUID,
|
|
66
|
-
cluster: 'electricalEnergyMeasurement',
|
|
67
|
-
attributes: {
|
|
68
|
-
cumulativeEnergyExported: { energy: 12345 },
|
|
69
|
-
},
|
|
70
|
-
},
|
|
71
|
-
]);
|
|
39
|
+
assert.equal(sensor.getServices().length, 2);
|
|
40
|
+
assert.equal(matter.registrations.length, 0);
|
|
72
41
|
});
|
|
73
42
|
});
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import assert from 'assert';
|
|
2
2
|
import { SolaxOutletAccessory } from '../src/outletAccessory.js';
|
|
3
|
-
import { createApi, createLog } from './helpers.js';
|
|
3
|
+
import { createApi, createLog, createMatterApi } from './helpers.js';
|
|
4
4
|
|
|
5
5
|
describe('SolaxOutletAccessory', () => {
|
|
6
6
|
function withOutlet(test: (outlet: SolaxOutletAccessory) => void): void {
|
|
@@ -72,4 +72,54 @@ describe('SolaxOutletAccessory', () => {
|
|
|
72
72
|
assert.equal(outlet.getPowerConsumptionValue(), 42);
|
|
73
73
|
assert.equal(outlet.getServices().length, 2);
|
|
74
74
|
});
|
|
75
|
+
|
|
76
|
+
it('owns and updates its Matter electrical sensor', async () => {
|
|
77
|
+
const matter = createMatterApi();
|
|
78
|
+
const outlet = new SolaxOutletAccessory(
|
|
79
|
+
createLog(),
|
|
80
|
+
createApi(matter.api),
|
|
81
|
+
'Outlet',
|
|
82
|
+
'outlet-1',
|
|
83
|
+
'Model',
|
|
84
|
+
false,
|
|
85
|
+
undefined,
|
|
86
|
+
{
|
|
87
|
+
displayName: 'Outlet sensor',
|
|
88
|
+
serialNumber: 'outlet-matter-1',
|
|
89
|
+
supportsEnergy: true,
|
|
90
|
+
},
|
|
91
|
+
);
|
|
92
|
+
|
|
93
|
+
assert.equal(matter.registrations.length, 1);
|
|
94
|
+
|
|
95
|
+
const accessory = matter.registrations[0][0];
|
|
96
|
+
assert.equal(accessory.displayName, 'Outlet sensor');
|
|
97
|
+
assert.equal(accessory.serialNumber, 'outlet-matter-1');
|
|
98
|
+
assert.equal(accessory.deviceType, matter.api.deviceTypes.ElectricalSensor);
|
|
99
|
+
assert.deepEqual(accessory.clusters, {
|
|
100
|
+
electricalPowerMeasurement: { activePower: 0 },
|
|
101
|
+
electricalEnergyMeasurement: {
|
|
102
|
+
cumulativeEnergyExported: { energy: 0 },
|
|
103
|
+
},
|
|
104
|
+
});
|
|
105
|
+
|
|
106
|
+
outlet.setPowerConsumption(123.456);
|
|
107
|
+
outlet.setTotalEnergyConsumption(12.345);
|
|
108
|
+
await new Promise(resolve => setImmediate(resolve));
|
|
109
|
+
|
|
110
|
+
assert.deepEqual(matter.updates, [
|
|
111
|
+
{
|
|
112
|
+
uuid: accessory.UUID,
|
|
113
|
+
cluster: 'electricalPowerMeasurement',
|
|
114
|
+
attributes: { activePower: 123456 },
|
|
115
|
+
},
|
|
116
|
+
{
|
|
117
|
+
uuid: accessory.UUID,
|
|
118
|
+
cluster: 'electricalEnergyMeasurement',
|
|
119
|
+
attributes: {
|
|
120
|
+
cumulativeEnergyExported: { energy: 12345 },
|
|
121
|
+
},
|
|
122
|
+
},
|
|
123
|
+
]);
|
|
124
|
+
});
|
|
75
125
|
});
|
|
@@ -3,6 +3,7 @@ import { API, Logging, PlatformConfig } from 'homebridge';
|
|
|
3
3
|
import assert from 'assert';
|
|
4
4
|
|
|
5
5
|
import { SolaxOutletAccessory } from '../src/outletAccessory.js';
|
|
6
|
+
import { SolaxLightSensorAccessory } from '../src/lightSensorAccessory.js';
|
|
6
7
|
import { SolaxCloudAPIPlatform } from '../src/platform.js';
|
|
7
8
|
import { SolaxCloudAPIPlatformInverter } from '../src/platformInverter.js';
|
|
8
9
|
import { createApi, createLog, createMatterApi } from './helpers.js';
|
|
@@ -102,20 +103,25 @@ describe('SolaxCloudAPIPlatform totalizer inverter creation', () => {
|
|
|
102
103
|
);
|
|
103
104
|
|
|
104
105
|
assert.equal(matter.registrations.length, 10);
|
|
105
|
-
const
|
|
106
|
-
|
|
107
|
-
.filter(accessory => accessory.serialNumber.includes('-
|
|
106
|
+
const matterSensors = matter.registrations.flat();
|
|
107
|
+
const smoothMatterSensors = matterSensors
|
|
108
|
+
.filter(accessory => accessory.serialNumber.includes('-matter-smooth-'));
|
|
108
109
|
|
|
109
110
|
assert.equal(smoothMatterSensors.length, 5);
|
|
110
111
|
smoothMatterSensors.forEach(accessory => assert.match(accessory.displayName, / sensor Smooth$/));
|
|
112
|
+
matterSensors.forEach(accessory => {
|
|
113
|
+
assert.match(accessory.serialNumber, /-matter(?:-smooth)?-/);
|
|
114
|
+
assert.doesNotMatch(accessory.serialNumber, /-light(?:-smooth)?-/);
|
|
115
|
+
});
|
|
111
116
|
|
|
112
|
-
//
|
|
117
|
+
// Each outlet owns its Matter sensor; no light-sensor accessory is published.
|
|
113
118
|
const outlets = inverter.getAccessories().filter(
|
|
114
119
|
(accessory): accessory is SolaxOutletAccessory => accessory instanceof SolaxOutletAccessory,
|
|
115
120
|
);
|
|
116
121
|
|
|
117
122
|
assert.equal(inverter.getAccessories().length, 11);
|
|
118
123
|
assert.equal(outlets.length, 10);
|
|
124
|
+
assert.equal(inverter.getAccessories().some(accessory => accessory instanceof SolaxLightSensorAccessory), false);
|
|
119
125
|
|
|
120
126
|
inverter.setRawPower('inverterAC', 123.456);
|
|
121
127
|
inverter.setSmoothPower('inverterAC');
|
|
@@ -151,6 +157,34 @@ describe('SolaxCloudAPIPlatform totalizer inverter creation', () => {
|
|
|
151
157
|
);
|
|
152
158
|
|
|
153
159
|
assert.equal(inverter.getAccessories().length, 11);
|
|
160
|
+
assert.equal(inverter.getAccessories().filter(accessory => accessory instanceof SolaxLightSensorAccessory).length, 5);
|
|
161
|
+
});
|
|
162
|
+
|
|
163
|
+
it('uses Matter outlets instead of pureHomeApp light sensors when both are configured', () => {
|
|
164
|
+
const matter = createMatterApi();
|
|
165
|
+
const config = {
|
|
166
|
+
enableHistory: false,
|
|
167
|
+
pureHomeApp: true,
|
|
168
|
+
smoothMeters: false,
|
|
169
|
+
smoothingMethod: 'sma',
|
|
170
|
+
} as PlatformConfig;
|
|
171
|
+
|
|
172
|
+
const inverter = new SolaxCloudAPIPlatformInverter(
|
|
173
|
+
createLog(),
|
|
174
|
+
config,
|
|
175
|
+
createApi(matter.api),
|
|
176
|
+
0,
|
|
177
|
+
'',
|
|
178
|
+
'virtual',
|
|
179
|
+
'Virtual inverter',
|
|
180
|
+
false,
|
|
181
|
+
3,
|
|
182
|
+
true,
|
|
183
|
+
);
|
|
184
|
+
|
|
185
|
+
assert.equal(matter.registrations.length, 5);
|
|
186
|
+
assert.equal(inverter.getAccessories().length, 6);
|
|
187
|
+
assert.equal(inverter.getAccessories().some(accessory => accessory instanceof SolaxLightSensorAccessory), false);
|
|
154
188
|
});
|
|
155
189
|
|
|
156
190
|
it('renames smooth HAP accessories without changing their Homebridge UUID bases', () => {
|