@smarthome.exchange/integrations 2.0.0 → 3.0.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/changelog.md +35 -0
- package/dist_ts/00_commitinfo_data.js +1 -1
- package/dist_ts/core/classes.nativeintegrationowner.d.ts +2 -0
- package/dist_ts/core/classes.nativeintegrationowner.js +5 -1
- package/dist_ts/core/classes.runtimemanager.d.ts +2 -0
- package/dist_ts/core/classes.runtimemanager.js +11 -3
- package/dist_ts/core/types.d.ts +2 -0
- package/dist_ts/integrations/deconz/deconz.classes.client.d.ts +37 -29
- package/dist_ts/integrations/deconz/deconz.classes.client.js +521 -294
- package/dist_ts/integrations/deconz/deconz.classes.configflow.d.ts +6 -1
- package/dist_ts/integrations/deconz/deconz.classes.configflow.js +63 -33
- package/dist_ts/integrations/deconz/deconz.classes.integration.d.ts +4 -3
- package/dist_ts/integrations/deconz/deconz.classes.integration.js +85 -40
- package/dist_ts/integrations/deconz/deconz.mapper.d.ts +1 -0
- package/dist_ts/integrations/deconz/deconz.mapper.js +24 -6
- package/dist_ts/integrations/deconz/deconz.types.d.ts +43 -6
- package/dist_ts/integrations/deconz/deconz.validation.d.ts +7 -1
- package/dist_ts/integrations/deconz/deconz.validation.js +215 -4
- package/dist_ts/integrations/esphome/esphome.classes.client.d.ts +19 -7
- package/dist_ts/integrations/esphome/esphome.classes.client.js +183 -89
- package/dist_ts/integrations/esphome/esphome.classes.configflow.d.ts +5 -2
- package/dist_ts/integrations/esphome/esphome.classes.configflow.js +43 -33
- package/dist_ts/integrations/esphome/esphome.classes.integration.d.ts +8 -6
- package/dist_ts/integrations/esphome/esphome.classes.integration.js +71 -43
- package/dist_ts/integrations/esphome/esphome.discovery.js +4 -12
- package/dist_ts/integrations/esphome/esphome.mapper.d.ts +2 -2
- package/dist_ts/integrations/esphome/esphome.mapper.js +6 -4
- package/dist_ts/integrations/esphome/esphome.types.d.ts +31 -6
- package/dist_ts/integrations/esphome/esphome.types.js +1 -1
- package/dist_ts/integrations/esphome/esphome.validation.d.ts +7 -0
- package/dist_ts/integrations/esphome/esphome.validation.js +66 -0
- package/dist_ts/integrations/homeassistant/homeassistant.classes.client.d.ts +32 -4
- package/dist_ts/integrations/homeassistant/homeassistant.classes.client.js +345 -116
- package/dist_ts/integrations/homeassistant/homeassistant.classes.integration.d.ts +8 -5
- package/dist_ts/integrations/homeassistant/homeassistant.classes.integration.js +34 -8
- package/dist_ts/integrations/homeassistant/homeassistant.classes.runtime.d.ts +7 -4
- package/dist_ts/integrations/homeassistant/homeassistant.classes.runtime.js +44 -56
- package/dist_ts/integrations/homeassistant/homeassistant.types.d.ts +12 -1
- package/dist_ts/integrations/hue/hue.classes.client.d.ts +6 -1
- package/dist_ts/integrations/hue/hue.classes.client.js +120 -45
- package/dist_ts/integrations/hue/hue.classes.configflow.js +16 -7
- package/dist_ts/integrations/hue/hue.classes.integration.d.ts +2 -0
- package/dist_ts/integrations/hue/hue.classes.integration.js +103 -30
- package/dist_ts/integrations/hue/hue.validation.d.ts +1 -0
- package/dist_ts/integrations/hue/hue.validation.js +14 -4
- package/dist_ts/integrations/mqtt/mqtt.classes.client.d.ts +15 -2
- package/dist_ts/integrations/mqtt/mqtt.classes.client.js +173 -23
- package/dist_ts/integrations/mqtt/mqtt.classes.configflow.d.ts +5 -1
- package/dist_ts/integrations/mqtt/mqtt.classes.configflow.js +53 -33
- package/dist_ts/integrations/mqtt/mqtt.classes.integration.d.ts +4 -1
- package/dist_ts/integrations/mqtt/mqtt.classes.integration.js +127 -56
- package/dist_ts/integrations/mqtt/mqtt.classes.session.d.ts +13 -0
- package/dist_ts/integrations/mqtt/mqtt.classes.session.js +130 -0
- package/dist_ts/integrations/mqtt/mqtt.mapper.d.ts +3 -0
- package/dist_ts/integrations/mqtt/mqtt.mapper.js +44 -1
- package/dist_ts/integrations/mqtt/mqtt.types.d.ts +46 -0
- package/dist_ts/integrations/mqtt/mqtt.validation.d.ts +7 -0
- package/dist_ts/integrations/mqtt/mqtt.validation.js +180 -0
- package/dist_ts/integrations/samsungtv/samsungtv.classes.client.d.ts +4 -2
- package/dist_ts/integrations/samsungtv/samsungtv.classes.client.js +41 -16
- package/dist_ts/integrations/samsungtv/samsungtv.classes.configflow.d.ts +5 -0
- package/dist_ts/integrations/samsungtv/samsungtv.classes.configflow.js +20 -7
- package/dist_ts/integrations/samsungtv/samsungtv.classes.integration.d.ts +1 -0
- package/dist_ts/integrations/samsungtv/samsungtv.classes.integration.js +53 -50
- package/dist_ts/integrations/samsungtv/samsungtv.types.d.ts +4 -1
- package/dist_ts/integrations/shelly/shelly.classes.client.d.ts +26 -30
- package/dist_ts/integrations/shelly/shelly.classes.client.js +504 -276
- package/dist_ts/integrations/shelly/shelly.classes.configflow.d.ts +8 -3
- package/dist_ts/integrations/shelly/shelly.classes.configflow.js +43 -38
- package/dist_ts/integrations/shelly/shelly.classes.integration.d.ts +6 -6
- package/dist_ts/integrations/shelly/shelly.classes.integration.js +103 -101
- package/dist_ts/integrations/shelly/shelly.classes.subscription.d.ts +4 -0
- package/dist_ts/integrations/shelly/shelly.classes.subscription.js +24 -2
- package/dist_ts/integrations/shelly/shelly.mapper.d.ts +1 -2
- package/dist_ts/integrations/shelly/shelly.mapper.js +21 -20
- package/dist_ts/integrations/shelly/shelly.rpc.js +4 -1
- package/dist_ts/integrations/shelly/shelly.types.d.ts +42 -2
- package/dist_ts/integrations/shelly/shelly.types.js +11 -2
- package/dist_ts/integrations/shelly/shelly.validation.d.ts +7 -0
- package/dist_ts/integrations/shelly/shelly.validation.js +79 -0
- package/dist_ts/integrations/sonos/sonos.classes.client.d.ts +79 -22
- package/dist_ts/integrations/sonos/sonos.classes.client.js +427 -139
- package/dist_ts/integrations/sonos/sonos.classes.configflow.d.ts +9 -2
- package/dist_ts/integrations/sonos/sonos.classes.configflow.js +26 -28
- package/dist_ts/integrations/sonos/sonos.classes.integration.d.ts +7 -6
- package/dist_ts/integrations/sonos/sonos.classes.integration.js +289 -224
- package/dist_ts/integrations/sonos/sonos.config.d.ts +6 -1
- package/dist_ts/integrations/sonos/sonos.config.js +23 -2
- package/dist_ts/integrations/sonos/sonos.mapper.d.ts +1 -1
- package/dist_ts/integrations/sonos/sonos.mapper.js +14 -9
- package/dist_ts/integrations/sonos/sonos.matchers.js +3 -3
- package/dist_ts/integrations/sonos/sonos.types.d.ts +26 -1
- package/dist_ts/integrations/tasmota/tasmota.classes.integration.d.ts +5 -0
- package/dist_ts/integrations/tasmota/tasmota.classes.integration.js +23 -7
- package/dist_ts/integrations/tasmota/tasmota.classes.runtime.d.ts +19 -5
- package/dist_ts/integrations/tasmota/tasmota.classes.runtime.js +115 -41
- package/dist_ts/integrations/tasmota/tasmota.config.js +23 -1
- package/dist_ts/integrations/tasmota/tasmota.credentials.d.ts +11 -0
- package/dist_ts/integrations/tasmota/tasmota.credentials.js +97 -0
- package/dist_ts/integrations/tasmota/tasmota.discovery.d.ts +7 -1
- package/dist_ts/integrations/tasmota/tasmota.discovery.js +108 -30
- package/dist_ts/integrations/tasmota/tasmota.mapper.d.ts +2 -2
- package/dist_ts/integrations/tasmota/tasmota.mapper.js +7 -7
- package/dist_ts/integrations/tasmota/tasmota.types.d.ts +41 -2
- package/dist_ts/integrations/tuya/tuya.classes.integration.d.ts +4 -1
- package/dist_ts/integrations/tuya/tuya.classes.integration.js +79 -110
- package/dist_ts/integrations/tuya/tuya.classes.runtime.d.ts +5 -2
- package/dist_ts/integrations/tuya/tuya.classes.runtime.js +73 -26
- package/dist_ts/integrations/tuya/tuya.mapper.js +2 -2
- package/dist_ts/integrations/tuya/tuya.types.d.ts +3 -0
- package/dist_ts/integrations/tuya/tuya.validation.d.ts +2 -2
- package/dist_ts/integrations/tuya/tuya.validation.js +6 -11
- package/dist_ts/integrations/webostv/webostv.classes.client.d.ts +6 -5
- package/dist_ts/integrations/webostv/webostv.classes.client.js +147 -76
- package/dist_ts/integrations/webostv/webostv.classes.configflow.d.ts +7 -2
- package/dist_ts/integrations/webostv/webostv.classes.configflow.js +36 -20
- package/dist_ts/integrations/webostv/webostv.classes.integration.d.ts +4 -4
- package/dist_ts/integrations/webostv/webostv.classes.integration.js +46 -54
- package/dist_ts/integrations/webostv/webostv.mapper.js +5 -5
- package/dist_ts/integrations/webostv/webostv.types.d.ts +16 -3
- package/dist_ts/integrations/webostv/webostv.types.js +1 -1
- package/dist_ts/integrations/webostv/webostv.validation.d.ts +3 -1
- package/dist_ts/integrations/webostv/webostv.validation.js +23 -1
- package/dist_ts/integrations/zigbee2mqtt/zigbee2mqtt.classes.configflow.d.ts +6 -1
- package/dist_ts/integrations/zigbee2mqtt/zigbee2mqtt.classes.configflow.js +18 -8
- package/dist_ts/integrations/zigbee2mqtt/zigbee2mqtt.classes.integration.d.ts +4 -1
- package/dist_ts/integrations/zigbee2mqtt/zigbee2mqtt.classes.integration.js +54 -6
- package/dist_ts/integrations/zigbee2mqtt/zigbee2mqtt.classes.runtime.d.ts +12 -6
- package/dist_ts/integrations/zigbee2mqtt/zigbee2mqtt.classes.runtime.js +73 -59
- package/dist_ts/integrations/zigbee2mqtt/zigbee2mqtt.mapper.d.ts +3 -2
- package/dist_ts/integrations/zigbee2mqtt/zigbee2mqtt.mapper.js +17 -12
- package/dist_ts/integrations/zigbee2mqtt/zigbee2mqtt.types.d.ts +31 -2
- package/dist_ts/integrations/zigbee2mqtt/zigbee2mqtt.validation.d.ts +9 -1
- package/dist_ts/integrations/zigbee2mqtt/zigbee2mqtt.validation.js +57 -7
- package/dist_ts/integrations/zwave_js/zwave_js.classes.client.d.ts +10 -4
- package/dist_ts/integrations/zwave_js/zwave_js.classes.client.js +167 -31
- package/dist_ts/integrations/zwave_js/zwave_js.classes.configflow.d.ts +6 -1
- package/dist_ts/integrations/zwave_js/zwave_js.classes.configflow.js +57 -35
- package/dist_ts/integrations/zwave_js/zwave_js.classes.integration.d.ts +3 -1
- package/dist_ts/integrations/zwave_js/zwave_js.classes.integration.js +59 -37
- package/dist_ts/integrations/zwave_js/zwave_js.discovery.js +3 -3
- package/dist_ts/integrations/zwave_js/zwave_js.mapper.js +41 -24
- package/dist_ts/integrations/zwave_js/zwave_js.types.d.ts +25 -3
- package/dist_ts/integrations/zwave_js/zwave_js.validation.d.ts +6 -2
- package/dist_ts/integrations/zwave_js/zwave_js.validation.js +52 -17
- package/dist_ts/plugins.d.ts +2 -1
- package/dist_ts/plugins.js +3 -2
- package/package.json +8 -8
- package/readme.md +25 -6
- package/ts/00_commitinfo_data.ts +1 -1
- package/ts/core/classes.nativeintegrationowner.ts +5 -0
- package/ts/core/classes.runtimemanager.ts +11 -2
- package/ts/core/types.ts +2 -0
- package/ts/integrations/deconz/deconz.classes.client.ts +348 -252
- package/ts/integrations/deconz/deconz.classes.configflow.ts +57 -29
- package/ts/integrations/deconz/deconz.classes.integration.ts +69 -37
- package/ts/integrations/deconz/deconz.mapper.ts +22 -5
- package/ts/integrations/deconz/deconz.types.ts +49 -6
- package/ts/integrations/deconz/deconz.validation.ts +177 -4
- package/ts/integrations/deconz/readme.md +15 -1
- package/ts/integrations/esphome/esphome.classes.client.ts +179 -94
- package/ts/integrations/esphome/esphome.classes.configflow.ts +40 -33
- package/ts/integrations/esphome/esphome.classes.integration.ts +63 -36
- package/ts/integrations/esphome/esphome.discovery.ts +3 -12
- package/ts/integrations/esphome/esphome.mapper.ts +9 -7
- package/ts/integrations/esphome/esphome.types.ts +35 -6
- package/ts/integrations/esphome/esphome.validation.ts +66 -0
- package/ts/integrations/esphome/readme.md +20 -6
- package/ts/integrations/homeassistant/homeassistant.classes.client.ts +353 -125
- package/ts/integrations/homeassistant/homeassistant.classes.integration.ts +35 -18
- package/ts/integrations/homeassistant/homeassistant.classes.runtime.ts +50 -63
- package/ts/integrations/homeassistant/homeassistant.types.ts +17 -1
- package/ts/integrations/homeassistant/readme.md +22 -6
- package/ts/integrations/hue/hue.classes.client.ts +110 -41
- package/ts/integrations/hue/hue.classes.configflow.ts +12 -6
- package/ts/integrations/hue/hue.classes.integration.ts +92 -26
- package/ts/integrations/hue/hue.validation.ts +13 -3
- package/ts/integrations/hue/readme.md +3 -3
- package/ts/integrations/mqtt/mqtt.classes.client.ts +136 -19
- package/ts/integrations/mqtt/mqtt.classes.configflow.ts +45 -32
- package/ts/integrations/mqtt/mqtt.classes.integration.ts +99 -38
- package/ts/integrations/mqtt/mqtt.classes.session.ts +118 -0
- package/ts/integrations/mqtt/mqtt.mapper.ts +43 -1
- package/ts/integrations/mqtt/mqtt.types.ts +52 -0
- package/ts/integrations/mqtt/mqtt.validation.ts +157 -0
- package/ts/integrations/mqtt/readme.md +12 -3
- package/ts/integrations/samsungtv/readme.md +11 -5
- package/ts/integrations/samsungtv/samsungtv.classes.client.ts +40 -15
- package/ts/integrations/samsungtv/samsungtv.classes.configflow.ts +21 -6
- package/ts/integrations/samsungtv/samsungtv.classes.integration.ts +53 -38
- package/ts/integrations/samsungtv/samsungtv.types.ts +4 -1
- package/ts/integrations/shelly/readme.md +22 -7
- package/ts/integrations/shelly/shelly.classes.client.ts +386 -269
- package/ts/integrations/shelly/shelly.classes.configflow.ts +43 -38
- package/ts/integrations/shelly/shelly.classes.integration.ts +92 -111
- package/ts/integrations/shelly/shelly.classes.subscription.ts +24 -1
- package/ts/integrations/shelly/shelly.mapper.ts +19 -20
- package/ts/integrations/shelly/shelly.rpc.ts +2 -0
- package/ts/integrations/shelly/shelly.types.ts +50 -2
- package/ts/integrations/shelly/shelly.validation.ts +76 -0
- package/ts/integrations/sonos/readme.md +117 -38
- package/ts/integrations/sonos/sonos.classes.client.ts +392 -123
- package/ts/integrations/sonos/sonos.classes.configflow.ts +25 -28
- package/ts/integrations/sonos/sonos.classes.integration.ts +211 -186
- package/ts/integrations/sonos/sonos.config.ts +24 -2
- package/ts/integrations/sonos/sonos.mapper.ts +13 -8
- package/ts/integrations/sonos/sonos.matchers.ts +2 -2
- package/ts/integrations/sonos/sonos.types.ts +30 -1
- package/ts/integrations/tasmota/readme.md +16 -5
- package/ts/integrations/tasmota/tasmota.classes.integration.ts +24 -6
- package/ts/integrations/tasmota/tasmota.classes.runtime.ts +112 -43
- package/ts/integrations/tasmota/tasmota.config.ts +17 -0
- package/ts/integrations/tasmota/tasmota.credentials.ts +92 -0
- package/ts/integrations/tasmota/tasmota.discovery.ts +87 -24
- package/ts/integrations/tasmota/tasmota.mapper.ts +6 -6
- package/ts/integrations/tasmota/tasmota.types.ts +43 -2
- package/ts/integrations/tuya/readme.md +52 -10
- package/ts/integrations/tuya/tuya.classes.integration.ts +69 -98
- package/ts/integrations/tuya/tuya.classes.runtime.ts +70 -24
- package/ts/integrations/tuya/tuya.mapper.ts +1 -1
- package/ts/integrations/tuya/tuya.types.ts +4 -0
- package/ts/integrations/tuya/tuya.validation.ts +5 -8
- package/ts/integrations/webostv/readme.md +115 -22
- package/ts/integrations/webostv/webostv.classes.client.ts +123 -50
- package/ts/integrations/webostv/webostv.classes.configflow.ts +35 -15
- package/ts/integrations/webostv/webostv.classes.integration.ts +44 -37
- package/ts/integrations/webostv/webostv.mapper.ts +4 -4
- package/ts/integrations/webostv/webostv.types.ts +18 -3
- package/ts/integrations/webostv/webostv.validation.ts +22 -1
- package/ts/integrations/zigbee2mqtt/readme.md +22 -27
- package/ts/integrations/zigbee2mqtt/zigbee2mqtt.classes.configflow.ts +16 -7
- package/ts/integrations/zigbee2mqtt/zigbee2mqtt.classes.integration.ts +53 -6
- package/ts/integrations/zigbee2mqtt/zigbee2mqtt.classes.runtime.ts +62 -49
- package/ts/integrations/zigbee2mqtt/zigbee2mqtt.mapper.ts +17 -11
- package/ts/integrations/zigbee2mqtt/zigbee2mqtt.types.ts +35 -2
- package/ts/integrations/zigbee2mqtt/zigbee2mqtt.validation.ts +53 -7
- package/ts/integrations/zwave_js/readme.md +42 -9
- package/ts/integrations/zwave_js/zwave_js.classes.client.ts +155 -31
- package/ts/integrations/zwave_js/zwave_js.classes.configflow.ts +55 -31
- package/ts/integrations/zwave_js/zwave_js.classes.integration.ts +57 -35
- package/ts/integrations/zwave_js/zwave_js.discovery.ts +2 -2
- package/ts/integrations/zwave_js/zwave_js.mapper.ts +37 -23
- package/ts/integrations/zwave_js/zwave_js.types.ts +26 -3
- package/ts/integrations/zwave_js/zwave_js.validation.ts +52 -18
- package/ts/plugins.ts +2 -1
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import * as plugins from '../../plugins.js';
|
|
2
2
|
export class ShellyMapper {
|
|
3
3
|
static toDevices(snapshotArg) {
|
|
4
|
-
const deviceId = this.deviceId(snapshotArg
|
|
4
|
+
const deviceId = this.deviceId(snapshotArg);
|
|
5
5
|
const updatedAt = new Date().toISOString();
|
|
6
6
|
const features = [
|
|
7
7
|
{ id: 'connectivity', capability: 'sensor', name: 'Connectivity', readable: true, writable: false },
|
|
@@ -16,7 +16,8 @@ export class ShellyMapper {
|
|
|
16
16
|
for (const switchComponent of this.switchComponents(snapshotArg.status)) {
|
|
17
17
|
const prefix = `switch_${switchComponent.id}`;
|
|
18
18
|
const name = this.componentName(snapshotArg.deviceConfig, `switch:${switchComponent.id}`, `Switch ${switchComponent.id}`);
|
|
19
|
-
features.push({ id: `${prefix}_output`, capability: 'switch', name, readable: true,
|
|
19
|
+
features.push({ id: `${prefix}_output`, capability: 'switch', name, readable: true,
|
|
20
|
+
writable: snapshotArg.controlEnabled && snapshotArg.methods.includes('Switch.Set') && snapshotArg.methods.includes('Switch.GetStatus') });
|
|
20
21
|
state.push({ featureId: `${prefix}_output`, value: switchComponent.status.output ?? null, updatedAt });
|
|
21
22
|
this.pushNumericFeature(features, state, `${prefix}_power`, `${name} power`, switchComponent.status.apower, 'W', updatedAt);
|
|
22
23
|
this.pushNumericFeature(features, state, `${prefix}_voltage`, `${name} voltage`, switchComponent.status.voltage, 'V', updatedAt);
|
|
@@ -30,7 +31,7 @@ export class ShellyMapper {
|
|
|
30
31
|
name: this.deviceName(snapshotArg.deviceInfo, snapshotArg.deviceConfig),
|
|
31
32
|
protocol: 'http',
|
|
32
33
|
manufacturer: 'Shelly',
|
|
33
|
-
model: snapshotArg.deviceInfo.model
|
|
34
|
+
model: snapshotArg.deviceInfo.model,
|
|
34
35
|
online: true,
|
|
35
36
|
features,
|
|
36
37
|
state,
|
|
@@ -40,18 +41,19 @@ export class ShellyMapper {
|
|
|
40
41
|
authEnabled: snapshotArg.deviceInfo.auth_en ?? snapshotArg.deviceInfo.auth,
|
|
41
42
|
macAddress: snapshotArg.deviceInfo.mac || snapshotArg.status.sys?.mac,
|
|
42
43
|
profile: snapshotArg.deviceInfo.profile,
|
|
44
|
+
homeId: snapshotArg.homeId,
|
|
43
45
|
},
|
|
44
46
|
}];
|
|
45
47
|
}
|
|
46
48
|
static toEntities(snapshotArg) {
|
|
47
|
-
const deviceId = this.deviceId(snapshotArg
|
|
48
|
-
const deviceSlug =
|
|
49
|
+
const deviceId = this.deviceId(snapshotArg);
|
|
50
|
+
const deviceSlug = `${encodeURIComponent(snapshotArg.homeId)}.${encodeURIComponent(snapshotArg.deviceInfo.id)}`;
|
|
49
51
|
const entities = [];
|
|
50
52
|
for (const switchComponent of this.switchComponents(snapshotArg.status)) {
|
|
51
53
|
const switchName = this.componentName(snapshotArg.deviceConfig, `switch:${switchComponent.id}`, `Switch ${switchComponent.id}`);
|
|
52
|
-
const uniquePrefix =
|
|
54
|
+
const uniquePrefix = `${deviceId}.switch_${switchComponent.id}`;
|
|
53
55
|
entities.push({
|
|
54
|
-
id: `switch.${deviceSlug}
|
|
56
|
+
id: `switch.${deviceSlug}.${switchComponent.id}`,
|
|
55
57
|
uniqueId: uniquePrefix,
|
|
56
58
|
integrationDomain: 'shelly',
|
|
57
59
|
deviceId,
|
|
@@ -64,23 +66,23 @@ export class ShellyMapper {
|
|
|
64
66
|
},
|
|
65
67
|
available: true,
|
|
66
68
|
});
|
|
67
|
-
this.pushSensorEntity(entities, deviceId, `${uniquePrefix}_power`, `sensor.${deviceSlug}
|
|
68
|
-
this.pushSensorEntity(entities, deviceId, `${uniquePrefix}_voltage`, `sensor.${deviceSlug}
|
|
69
|
-
this.pushSensorEntity(entities, deviceId, `${uniquePrefix}_current`, `sensor.${deviceSlug}
|
|
70
|
-
this.pushSensorEntity(entities, deviceId, `${uniquePrefix}_energy`, `sensor.${deviceSlug}
|
|
71
|
-
this.pushSensorEntity(entities, deviceId, `${uniquePrefix}_temperature`, `sensor.${deviceSlug}
|
|
69
|
+
this.pushSensorEntity(entities, deviceId, `${uniquePrefix}_power`, `sensor.${deviceSlug}.${switchComponent.id}.power`, `${switchName} power`, switchComponent.status.apower, 'W');
|
|
70
|
+
this.pushSensorEntity(entities, deviceId, `${uniquePrefix}_voltage`, `sensor.${deviceSlug}.${switchComponent.id}.voltage`, `${switchName} voltage`, switchComponent.status.voltage, 'V');
|
|
71
|
+
this.pushSensorEntity(entities, deviceId, `${uniquePrefix}_current`, `sensor.${deviceSlug}.${switchComponent.id}.current`, `${switchName} current`, switchComponent.status.current, 'A');
|
|
72
|
+
this.pushSensorEntity(entities, deviceId, `${uniquePrefix}_energy`, `sensor.${deviceSlug}.${switchComponent.id}.energy`, `${switchName} energy`, switchComponent.status.aenergy?.total, 'Wh');
|
|
73
|
+
this.pushSensorEntity(entities, deviceId, `${uniquePrefix}_temperature`, `sensor.${deviceSlug}.${switchComponent.id}.temperature`, `${switchName} temperature`, switchComponent.status.temperature?.tC, 'C');
|
|
72
74
|
}
|
|
73
75
|
return entities;
|
|
74
76
|
}
|
|
75
77
|
static pushNumericFeature(featuresArg, stateArg, idArg, nameArg, valueArg, unitArg, updatedAtArg) {
|
|
76
|
-
if (typeof valueArg !== 'number') {
|
|
78
|
+
if (typeof valueArg !== 'number' || !Number.isFinite(valueArg)) {
|
|
77
79
|
return;
|
|
78
80
|
}
|
|
79
81
|
featuresArg.push({ id: idArg, capability: 'sensor', name: nameArg, readable: true, writable: false, unit: unitArg });
|
|
80
82
|
stateArg.push({ featureId: idArg, value: valueArg, updatedAt: updatedAtArg });
|
|
81
83
|
}
|
|
82
84
|
static pushSensorEntity(entitiesArg, deviceIdArg, uniqueIdArg, idArg, nameArg, valueArg, unitArg) {
|
|
83
|
-
if (typeof valueArg !== 'number') {
|
|
85
|
+
if (typeof valueArg !== 'number' || !Number.isFinite(valueArg)) {
|
|
84
86
|
return;
|
|
85
87
|
}
|
|
86
88
|
entitiesArg.push({
|
|
@@ -110,8 +112,10 @@ export class ShellyMapper {
|
|
|
110
112
|
}
|
|
111
113
|
return components.sort((leftArg, rightArg) => leftArg.id - rightArg.id);
|
|
112
114
|
}
|
|
113
|
-
static deviceId(
|
|
114
|
-
|
|
115
|
+
static deviceId(snapshotArg) {
|
|
116
|
+
if (!snapshotArg.homeId || !snapshotArg.deviceInfo.id)
|
|
117
|
+
throw new TypeError('Shelly mapping requires admitted home and observed device identity.');
|
|
118
|
+
return `shelly.device.${encodeURIComponent(snapshotArg.homeId)}.${encodeURIComponent(snapshotArg.deviceInfo.id)}`;
|
|
115
119
|
}
|
|
116
120
|
static deviceName(deviceInfoArg, configArg) {
|
|
117
121
|
return configArg?.sys?.device?.name || deviceInfoArg.id || deviceInfoArg.model || 'Shelly Device';
|
|
@@ -123,11 +127,8 @@ export class ShellyMapper {
|
|
|
123
127
|
}
|
|
124
128
|
return fallbackArg;
|
|
125
129
|
}
|
|
126
|
-
static slug(valueArg) {
|
|
127
|
-
return valueArg.toLowerCase().replace(/[^a-z0-9]+/g, '_').replace(/^_+|_+$/g, '') || 'shelly';
|
|
128
|
-
}
|
|
129
130
|
static isRecord(valueArg) {
|
|
130
131
|
return typeof valueArg === 'object' && valueArg !== null && !Array.isArray(valueArg);
|
|
131
132
|
}
|
|
132
133
|
}
|
|
133
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
134
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2hlbGx5Lm1hcHBlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3RzL2ludGVncmF0aW9ucy9zaGVsbHkvc2hlbGx5Lm1hcHBlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssT0FBTyxNQUFNLGtCQUFrQixDQUFDO0FBSTVDLE1BQU0sT0FBTyxZQUFZO0lBQ2hCLE1BQU0sQ0FBQyxTQUFTLENBQUMsV0FBNEI7UUFDbEQsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUM1QyxNQUFNLFNBQVMsR0FBRyxJQUFJLElBQUksRUFBRSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQzNDLE1BQU0sUUFBUSxHQUFnRDtZQUM1RCxFQUFFLEVBQUUsRUFBRSxjQUFjLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsY0FBYyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRTtTQUNwRyxDQUFDO1FBQ0YsTUFBTSxLQUFLLEdBQThDO1lBQ3ZELEVBQUUsU0FBUyxFQUFFLGNBQWMsRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRTtTQUMxRCxDQUFDO1FBRUYsSUFBSSxXQUFXLENBQUMsVUFBVSxDQUFDLEdBQUcsSUFBSSxXQUFXLENBQUMsVUFBVSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQy9ELFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRSxFQUFFLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO1lBQzNHLEtBQUssQ0FBQyxJQUFJLENBQUMsRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxXQUFXLENBQUMsVUFBVSxDQUFDLEdBQUcsSUFBSSxXQUFXLENBQUMsVUFB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
|
|
@@ -29,6 +29,9 @@ export const parseShellyDeviceInfo = (valueArg) => {
|
|
|
29
29
|
if (valueArg.gen !== 2 && valueArg.gen !== 3) {
|
|
30
30
|
throw new DeviceCommunicationError('Shelly integration supports generation 2 and 3 devices.');
|
|
31
31
|
}
|
|
32
|
+
if (typeof valueArg.mac !== 'string' || !/^[0-9a-f]{12}$/i.test(valueArg.mac) ||
|
|
33
|
+
typeof valueArg.model !== 'string' || !valueArg.model || valueArg.model.length > 128)
|
|
34
|
+
invalidPayload();
|
|
32
35
|
for (const key of ['mac', 'model', 'ver', 'fw_id', 'app', 'profile']) {
|
|
33
36
|
if (valueArg[key] !== undefined && typeof valueArg[key] !== 'string')
|
|
34
37
|
invalidPayload();
|
|
@@ -207,4 +210,4 @@ export const parseShellyRpcResult = (frameArg, idArg, deviceIdArg, sourceArg) =>
|
|
|
207
210
|
invalidPayload();
|
|
208
211
|
return frameArg.result;
|
|
209
212
|
};
|
|
210
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2hlbGx5LnJwYy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3RzL2ludGVncmF0aW9ucy9zaGVsbHkvc2hlbGx5LnJwYy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssT0FBTyxNQUFNLGtCQUFrQixDQUFDO0FBQzVDLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSx3QkFBd0IsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBR3JGLE1BQU0sQ0FBQyxNQUFNLGNBQWMsR0FBRyxDQUFDLFFBQWlCLEVBQXVDLEVBQUUsQ0FDdkYsT0FBTyxRQUFRLEtBQUssUUFBUSxJQUFJLFFBQVEsS0FBSyxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0FBRWhGLFNBQVMsY0FBYztJQUNyQixNQUFNLElBQUksd0JBQXdCLENBQUMseUNBQXlDLENBQUMsQ0FBQztBQUNoRixDQUFDO0FBRUQsTUFBTSxZQUFZLEdBQUcsQ0FBQyxRQUFpQixFQUFFLFFBQVEsR0FBRyxDQUFDLEVBQVEsRUFBRTtJQUM3RCxJQUFJLFFBQVEsR0FBRyxFQUFFO1FBQUUsY0FBYyxFQUFFLENBQUM7SUFDcEMsSUFBSSxRQUFRLEtBQUssSUFBSSxJQUFJLE9BQU8sUUFBUSxLQUFLLFFBQVEsSUFBSSxPQUFPLFFBQVEsS0FBSyxTQUFTO1FBQUUsT0FBTztJQUMvRixJQUFJLE9BQU8sUUFBUSxLQUFLLFFBQVEsSUFBSSxNQUFNLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQztRQUFFLE9BQU87SUFDdEUsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUM7UUFDNUIsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLE9BQWdCLEVBQUUsRUFBRSxDQUFDLFlBQVksQ0FBQyxPQUFPLEVBQUUsUUFBUSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDNUUsT0FBTztJQUNULENBQUM7SUFDRCxJQUFJLENB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
|
|
213
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2hlbGx5LnJwYy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3RzL2ludGVncmF0aW9ucy9zaGVsbHkvc2hlbGx5LnJwYy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssT0FBTyxNQUFNLGtCQUFrQixDQUFDO0FBQzVDLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSx3QkFBd0IsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBR3JGLE1BQU0sQ0FBQyxNQUFNLGNBQWMsR0FBRyxDQUFDLFFBQWlCLEVBQXVDLEVBQUUsQ0FDdkYsT0FBTyxRQUFRLEtBQUssUUFBUSxJQUFJLFFBQVEsS0FBSyxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0FBRWhGLFNBQVMsY0FBYztJQUNyQixNQUFNLElBQUksd0JBQXdCLENBQUMseUNBQXlDLENBQUMsQ0FBQztBQUNoRixDQUFDO0FBRUQsTUFBTSxZQUFZLEdBQUcsQ0FBQyxRQUFpQixFQUFFLFFBQVEsR0FBRyxDQUFDLEVBQVEsRUFBRTtJQUM3RCxJQUFJLFFBQVEsR0FBRyxFQUFFO1FBQUUsY0FBYyxFQUFFLENBQUM7SUFDcEMsSUFBSSxRQUFRLEtBQUssSUFBSSxJQUFJLE9BQU8sUUFBUSxLQUFLLFFBQVEsSUFBSSxPQUFPLFFBQVEsS0FBSyxTQUFTO1FBQUUsT0FBTztJQUMvRixJQUFJLE9BQU8sUUFBUSxLQUFLLFFBQVEsSUFBSSxNQUFNLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQztRQUFFLE9BQU87SUFDdEUsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUM7UUFDNUIsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLE9BQWdCLEVBQUUsRUFBRSxDQUFDLFlBQVksQ0FBQyxPQUFPLEVBQUUsUUFBUSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDNUUsT0FBTztJQUNULENBQUM7SUFDRCxJQUFJLENB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
|
|
@@ -1,11 +1,48 @@
|
|
|
1
1
|
export type TShellyProtocol = 'http' | 'https';
|
|
2
2
|
export interface IShellyConfig {
|
|
3
|
+
homeId: string;
|
|
3
4
|
host: string;
|
|
4
5
|
port?: number;
|
|
5
6
|
protocol?: TShellyProtocol;
|
|
6
|
-
|
|
7
|
-
|
|
7
|
+
expectedDeviceId: string;
|
|
8
|
+
expectedMacAddress: string;
|
|
9
|
+
expectedModel: string;
|
|
10
|
+
expectedGeneration: 2 | 3;
|
|
11
|
+
credentialRef?: string;
|
|
12
|
+
/** Absolute output controls are denied unless explicitly enabled. */
|
|
13
|
+
allowControl?: boolean;
|
|
14
|
+
allowUnencryptedLan?: boolean;
|
|
8
15
|
requestTimeoutMs?: number;
|
|
16
|
+
maxPendingOperations?: number;
|
|
17
|
+
maxResponseBytes?: number;
|
|
18
|
+
}
|
|
19
|
+
export interface IShellyCredentialRequest {
|
|
20
|
+
readonly homeId: string;
|
|
21
|
+
readonly credentialRef: string;
|
|
22
|
+
readonly signal: AbortSignal;
|
|
23
|
+
/** Monotonic performance.now() deadline, including queue time. */
|
|
24
|
+
readonly deadline: number;
|
|
25
|
+
}
|
|
26
|
+
export type TShellyPasswordResolver = (requestArg: IShellyCredentialRequest) => Promise<string>;
|
|
27
|
+
export interface IShellyIntegrationOptions {
|
|
28
|
+
readonly homeId?: string;
|
|
29
|
+
readonly capacity?: number;
|
|
30
|
+
readonly resolvePassword?: TShellyPasswordResolver;
|
|
31
|
+
}
|
|
32
|
+
export type TShellyEffectOutcome = 'not-sent' | 'indeterminate';
|
|
33
|
+
export declare class ShellyOperationError extends Error {
|
|
34
|
+
readonly effectOutcome: TShellyEffectOutcome;
|
|
35
|
+
readonly commandAcknowledged: boolean;
|
|
36
|
+
constructor(messageArg: string, effectOutcome?: TShellyEffectOutcome, commandAcknowledged?: boolean);
|
|
37
|
+
}
|
|
38
|
+
export interface IShellyEffectResult {
|
|
39
|
+
readonly componentId: number;
|
|
40
|
+
readonly requested: boolean;
|
|
41
|
+
readonly wasOn: boolean;
|
|
42
|
+
readonly commandAcknowledged: true;
|
|
43
|
+
readonly causalityConfirmed: false;
|
|
44
|
+
readonly outcome: 'observed-target' | 'indeterminate';
|
|
45
|
+
readonly snapshot: IShellySnapshot;
|
|
9
46
|
}
|
|
10
47
|
export interface IShellyDeviceInfo {
|
|
11
48
|
id?: string;
|
|
@@ -71,9 +108,12 @@ export interface IShellySwitchStatus {
|
|
|
71
108
|
errors?: string[];
|
|
72
109
|
}
|
|
73
110
|
export interface IShellySnapshot {
|
|
111
|
+
homeId: string;
|
|
74
112
|
deviceInfo: IShellyDeviceInfo;
|
|
75
113
|
status: IShellyStatus;
|
|
76
114
|
deviceConfig?: IShellyDeviceConfig;
|
|
115
|
+
methods: readonly string[];
|
|
116
|
+
controlEnabled: boolean;
|
|
77
117
|
}
|
|
78
118
|
export interface IShellyComponentEvent {
|
|
79
119
|
component: string;
|
|
@@ -1,2 +1,11 @@
|
|
|
1
|
-
export {
|
|
2
|
-
|
|
1
|
+
export class ShellyOperationError extends Error {
|
|
2
|
+
effectOutcome;
|
|
3
|
+
commandAcknowledged;
|
|
4
|
+
constructor(messageArg, effectOutcome = 'not-sent', commandAcknowledged = false) {
|
|
5
|
+
super(messageArg);
|
|
6
|
+
this.effectOutcome = effectOutcome;
|
|
7
|
+
this.commandAcknowledged = commandAcknowledged;
|
|
8
|
+
this.name = 'ShellyOperationError';
|
|
9
|
+
}
|
|
10
|
+
}
|
|
11
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2hlbGx5LnR5cGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vdHMvaW50ZWdyYXRpb25zL3NoZWxseS9zaGVsbHkudHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBc0NBLE1BQU0sT0FBTyxvQkFBcUIsU0FBUSxLQUFLO0lBQ0csYUFBYTtJQUMzQyxtQkFBbUI7SUFEckMsWUFBWSxVQUFrQixFQUFrQixhQUFhLEdBQXlCLFVBQVUsRUFDOUUsbUJBQW1CLEdBQUcsS0FBSztRQUMzQyxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUM7NkJBRjRCLGFBQWE7bUNBQzNDLG1CQUFtQjtRQUVuQyxJQUFJLENBQUMsSUFBSSxHQUFHLHNCQUFzQixDQUFDO0lBQ3JDLENBQUM7Q0FDRiJ9
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { IShellyConfig, IShellyIntegrationOptions } from './shelly.types.js';
|
|
2
|
+
export declare const shellyData: (valueArg: unknown, allowedArg?: readonly string[]) => Record<string, unknown>;
|
|
3
|
+
export declare const shellyText: (valueArg: unknown, labelArg: string, maximumArg?: number) => string;
|
|
4
|
+
export declare const shellyConfigFields: readonly ['homeId', 'host', 'port', 'protocol', 'expectedDeviceId', 'expectedMacAddress', 'expectedModel', 'expectedGeneration', 'credentialRef', 'allowControl', 'allowUnencryptedLan', 'requestTimeoutMs', 'maxPendingOperations', 'maxResponseBytes'];
|
|
5
|
+
export type TNormalizedShellyConfig = Readonly<Required<Omit<IShellyConfig, 'credentialRef'>> & Pick<IShellyConfig, 'credentialRef'>>;
|
|
6
|
+
export declare const normalizeShellyConfig: (valueArg: unknown) => TNormalizedShellyConfig;
|
|
7
|
+
export declare const normalizeShellyOptions: (valueArg?: unknown) => Readonly<IShellyIntegrationOptions>;
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
export const shellyData = (valueArg, allowedArg) => {
|
|
2
|
+
if (!valueArg || typeof valueArg !== 'object' || ![Object.prototype, null].includes(Object.getPrototypeOf(valueArg))) {
|
|
3
|
+
throw new TypeError('Shelly input must be a plain data object.');
|
|
4
|
+
}
|
|
5
|
+
const result = Object.create(null);
|
|
6
|
+
for (const key of Reflect.ownKeys(valueArg)) {
|
|
7
|
+
const descriptor = Object.getOwnPropertyDescriptor(valueArg, key);
|
|
8
|
+
if (typeof key !== 'string' || allowedArg && !allowedArg.includes(key) || !descriptor || !descriptor.enumerable || !('value' in descriptor)) {
|
|
9
|
+
throw new TypeError('Shelly input contains an unsupported field or accessor.');
|
|
10
|
+
}
|
|
11
|
+
result[key] = descriptor.value;
|
|
12
|
+
}
|
|
13
|
+
return result;
|
|
14
|
+
};
|
|
15
|
+
export const shellyText = (valueArg, labelArg, maximumArg = 128) => {
|
|
16
|
+
if (typeof valueArg !== 'string' || !valueArg || valueArg.trim() !== valueArg || valueArg.length > maximumArg || /[\p{Cc}\p{Cs}]/u.test(valueArg)) {
|
|
17
|
+
throw new TypeError(`Shelly ${labelArg} must be bounded text without control characters.`);
|
|
18
|
+
}
|
|
19
|
+
return valueArg;
|
|
20
|
+
};
|
|
21
|
+
const integer = (valueArg, minimumArg, maximumArg) => {
|
|
22
|
+
if (typeof valueArg !== 'number' || !Number.isSafeInteger(valueArg) || valueArg < minimumArg || valueArg > maximumArg) {
|
|
23
|
+
throw new TypeError('Shelly integer is outside its supported bounds.');
|
|
24
|
+
}
|
|
25
|
+
return valueArg;
|
|
26
|
+
};
|
|
27
|
+
export const shellyConfigFields = ['homeId', 'host', 'port', 'protocol', 'expectedDeviceId', 'expectedMacAddress',
|
|
28
|
+
'expectedModel', 'expectedGeneration', 'credentialRef', 'allowControl', 'allowUnencryptedLan',
|
|
29
|
+
'requestTimeoutMs', 'maxPendingOperations', 'maxResponseBytes'];
|
|
30
|
+
export const normalizeShellyConfig = (valueArg) => {
|
|
31
|
+
const config = shellyData(valueArg, shellyConfigFields);
|
|
32
|
+
const host = shellyText(config.host, 'host', 253);
|
|
33
|
+
if (/[\s\/?#@]/.test(host))
|
|
34
|
+
throw new TypeError('Shelly host must be a hostname or IP address.');
|
|
35
|
+
const protocol = config.protocol ?? 'http';
|
|
36
|
+
if (protocol !== 'http' && protocol !== 'https')
|
|
37
|
+
throw new TypeError('Shelly protocol must be http or https.');
|
|
38
|
+
const expectedDeviceId = shellyText(config.expectedDeviceId, 'selected device id');
|
|
39
|
+
if (!/^shelly[\w-]+$/i.test(expectedDeviceId))
|
|
40
|
+
throw new TypeError('Shelly requires an exact reported device id.');
|
|
41
|
+
const mac = shellyText(config.expectedMacAddress, 'selected MAC', 12);
|
|
42
|
+
if (!/^[0-9a-f]{12}$/i.test(mac) || /^(?:0{12}|f{12})$/i.test(mac) || (Number.parseInt(mac.slice(0, 2), 16) & 1) !== 0) {
|
|
43
|
+
throw new TypeError('Shelly requires an exact usable reported 12-digit MAC.');
|
|
44
|
+
}
|
|
45
|
+
if (config.expectedGeneration !== 2 && config.expectedGeneration !== 3)
|
|
46
|
+
throw new TypeError('Shelly selected generation must be 2 or 3.');
|
|
47
|
+
if (config.allowControl !== undefined && typeof config.allowControl !== 'boolean' || config.allowUnencryptedLan !== undefined && typeof config.allowUnencryptedLan !== 'boolean') {
|
|
48
|
+
throw new TypeError('Shelly consent settings must be boolean.');
|
|
49
|
+
}
|
|
50
|
+
if (protocol === 'http' && config.allowUnencryptedLan !== true)
|
|
51
|
+
throw new TypeError('Shelly HTTP requires explicit unencrypted LAN consent.');
|
|
52
|
+
const port = integer(config.port ?? (protocol === 'https' ? 443 : 80), 1, 65535);
|
|
53
|
+
const urlHost = host.includes(':') && !host.startsWith('[') ? `[${host}]` : host;
|
|
54
|
+
try {
|
|
55
|
+
new URL(`${protocol}://${urlHost}:${port}`);
|
|
56
|
+
}
|
|
57
|
+
catch {
|
|
58
|
+
throw new TypeError('Shelly host must be a hostname or IP address.');
|
|
59
|
+
}
|
|
60
|
+
return Object.freeze({ homeId: shellyText(config.homeId, 'home ID', 256), host, port, protocol,
|
|
61
|
+
expectedDeviceId, expectedMacAddress: mac.toUpperCase(), expectedModel: shellyText(config.expectedModel, 'selected model'),
|
|
62
|
+
expectedGeneration: config.expectedGeneration,
|
|
63
|
+
...(config.credentialRef === undefined ? {} : { credentialRef: shellyText(config.credentialRef, 'credential reference', 256) }),
|
|
64
|
+
allowControl: config.allowControl === true, allowUnencryptedLan: config.allowUnencryptedLan === true,
|
|
65
|
+
requestTimeoutMs: integer(config.requestTimeoutMs ?? 10000, 10, 60000),
|
|
66
|
+
maxPendingOperations: integer(config.maxPendingOperations ?? 16, 1, 128),
|
|
67
|
+
maxResponseBytes: integer(config.maxResponseBytes ?? 1048576, 1024, 1048576) });
|
|
68
|
+
};
|
|
69
|
+
export const normalizeShellyOptions = (valueArg = {}) => {
|
|
70
|
+
const options = shellyData(valueArg, ['homeId', 'capacity', 'resolvePassword']);
|
|
71
|
+
if (options.resolvePassword !== undefined && typeof options.resolvePassword !== 'function')
|
|
72
|
+
throw new TypeError('Shelly password resolver must be a function.');
|
|
73
|
+
return Object.freeze({
|
|
74
|
+
...(options.homeId === undefined ? {} : { homeId: shellyText(options.homeId, 'owning home ID', 256) }),
|
|
75
|
+
...(options.capacity === undefined ? {} : { capacity: integer(options.capacity, 1, Number.MAX_SAFE_INTEGER) }),
|
|
76
|
+
...(options.resolvePassword === undefined ? {} : { resolvePassword: options.resolvePassword }),
|
|
77
|
+
});
|
|
78
|
+
};
|
|
79
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2hlbGx5LnZhbGlkYXRpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi90cy9pbnRlZ3JhdGlvbnMvc2hlbGx5L3NoZWxseS52YWxpZGF0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE1BQU0sQ0FBQyxNQUFNLFVBQVUsR0FBRyxDQUFDLFFBQWlCLEVBQUUsVUFBOEIsRUFBMkIsRUFBRTtJQUN2RyxJQUFJLENBQUMsUUFBUSxJQUFJLE9BQU8sUUFBUSxLQUFLLFFBQVEsSUFBSSxDQUFDLENBQUMsTUFBTSxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFDckgsTUFBTSxJQUFJLFNBQVMsQ0FBQywyQ0FBMkMsQ0FBQyxDQUFDO0lBQ25FLENBQUM7SUFDRCxNQUFNLE1BQU0sR0FBNEIsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQTRCLENBQUM7SUFDdkYsS0FBSyxNQUFNLEdBQUcsSUFBSSxPQUFPLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUM7UUFDNUMsTUFBTSxVQUFVLEdBQUcsTUFBTSxDQUFDLHdCQUF3QixDQUFDLFFBQVEsRUFBRSxHQUFHLENBQUMsQ0FBQztRQUNsRSxJQUFJLE9BQU8sR0FBRyxLQUFLLFFBQVEsSUFBSSxVQUFVLElBQUksQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsVUFBVSxJQUFJLENBQUMsVUFBVSxDQUFDLFVBQVUsSUFBSSxDQUFDLENBQUMsT0FBTyxJQUFJLFVBQVUsQ0FBQyxFQUFFLENBQUM7WUFDNUksTUFBTSxJQUFJLFNBQVMsQ0FBQyx5REFBeUQsQ0FBQyxDQUFDO1FBQ2pGLENBQUM7UUFDRCxNQUFNLENBQUMsR0FBRyxDQUFDLEdBQUcsVUFBVSxDQUFDLEtBQWdCLENBQUM7SUFDNUMsQ0FBQztJQUNELE9BQU8s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
|
|
@@ -1,33 +1,90 @@
|
|
|
1
|
+
import { NativeIntegrationOwner, type INativeSetupLease } from '../../core/classes.nativeintegrationowner.js';
|
|
2
|
+
import type { INativeIntegrationSetupContext } from '../../core/types.js';
|
|
1
3
|
import { type INormalizedSonosConfig } from './sonos.config.js';
|
|
2
|
-
import type { ISonosConfig, ISonosMediaOptions, ISonosPositionInfo, ISonosSnapshot, ISonosSpeakerInfo, ISonosTransportInfo } from './sonos.types.js';
|
|
4
|
+
import type { ISonosConfig, ISonosControlResult, ISonosMediaOptions, ISonosOwnerOptions, ISonosPositionInfo, ISonosSnapshot, ISonosSpeakerInfo, ISonosTransportInfo } from './sonos.types.js';
|
|
5
|
+
interface ISonosClientOwnership {
|
|
6
|
+
readonly owner: NativeIntegrationOwner;
|
|
7
|
+
readonly lease: INativeSetupLease;
|
|
8
|
+
}
|
|
9
|
+
/** A session cannot escape its admitted operation or outlive its deadline. */
|
|
10
|
+
export interface ISonosOperationSession {
|
|
11
|
+
getSnapshot(): Promise<ISonosSnapshot>;
|
|
12
|
+
getSpeakerInfo(): Promise<ISonosSpeakerInfo>;
|
|
13
|
+
getTransportInfo(): Promise<ISonosTransportInfo>;
|
|
14
|
+
getPositionInfo(): Promise<ISonosPositionInfo>;
|
|
15
|
+
getVolume(): Promise<number>;
|
|
16
|
+
getMute(): Promise<boolean>;
|
|
17
|
+
play(): Promise<ISonosControlResult>;
|
|
18
|
+
pause(): Promise<ISonosControlResult>;
|
|
19
|
+
stop(): Promise<ISonosControlResult>;
|
|
20
|
+
next(): Promise<ISonosControlResult>;
|
|
21
|
+
previous(): Promise<ISonosControlResult>;
|
|
22
|
+
setVolume(value: number): Promise<ISonosControlResult>;
|
|
23
|
+
setMute(value: boolean): Promise<ISonosControlResult>;
|
|
24
|
+
playUri(uri: string, options?: ISonosMediaOptions): Promise<ISonosControlResult>;
|
|
25
|
+
}
|
|
26
|
+
export declare class SonosCommandError extends Error {
|
|
27
|
+
readonly effectOutcome: 'not-sent' | 'rejected' | 'indeterminate';
|
|
28
|
+
readonly physicalEffectConfirmed = false;
|
|
29
|
+
readonly acknowledgedActions: readonly string[];
|
|
30
|
+
constructor(message: string, effectOutcome: 'not-sent' | 'rejected' | 'indeterminate', acknowledgedActions: readonly string[], cause?: unknown);
|
|
31
|
+
}
|
|
3
32
|
export declare class SonosClient {
|
|
4
|
-
private readonly abortSignal?;
|
|
5
33
|
readonly config: INormalizedSonosConfig;
|
|
34
|
+
readonly controlAllowed: boolean;
|
|
35
|
+
private readonly context;
|
|
36
|
+
private readonly owner;
|
|
37
|
+
private readonly standalone;
|
|
38
|
+
private readonly resourceLease;
|
|
39
|
+
private readonly setupLease?;
|
|
6
40
|
private readonly lifetime;
|
|
7
|
-
private readonly soap;
|
|
8
|
-
private readonly playback;
|
|
9
|
-
private readonly volume;
|
|
10
41
|
private readonly operations;
|
|
42
|
+
private readonly cleanup;
|
|
43
|
+
private resources?;
|
|
11
44
|
private selectedUid?;
|
|
45
|
+
private closed;
|
|
12
46
|
private closePromise?;
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
47
|
+
private ownedClosePromise?;
|
|
48
|
+
private retryPromise?;
|
|
49
|
+
/** The explicit context remains required even when constructor home is constrained. */
|
|
50
|
+
constructor(config: ISonosConfig, context: INativeIntegrationSetupContext, options?: ISonosOwnerOptions, ownership?: ISonosClientOwnership);
|
|
51
|
+
getSnapshot(signal?: AbortSignal): Promise<ISonosSnapshot>;
|
|
52
|
+
getSpeakerInfo(signal?: AbortSignal): Promise<ISonosSpeakerInfo>;
|
|
53
|
+
getTransportInfo(signal?: AbortSignal): Promise<ISonosTransportInfo>;
|
|
54
|
+
getPositionInfo(signal?: AbortSignal): Promise<ISonosPositionInfo>;
|
|
18
55
|
getVolume(signal?: AbortSignal): Promise<number>;
|
|
19
56
|
getMute(signal?: AbortSignal): Promise<boolean>;
|
|
20
|
-
play(signal?: AbortSignal): Promise<
|
|
21
|
-
pause(signal?: AbortSignal): Promise<
|
|
22
|
-
stop(signal?: AbortSignal): Promise<
|
|
23
|
-
next(signal?: AbortSignal): Promise<
|
|
24
|
-
previous(signal?: AbortSignal): Promise<
|
|
25
|
-
setVolume(value: number, signal?: AbortSignal): Promise<
|
|
26
|
-
setMute(value: boolean, signal?: AbortSignal): Promise<
|
|
27
|
-
playUri(uri: string, options?: ISonosMediaOptions, signal?: AbortSignal): Promise<
|
|
57
|
+
play(signal?: AbortSignal): Promise<ISonosControlResult>;
|
|
58
|
+
pause(signal?: AbortSignal): Promise<ISonosControlResult>;
|
|
59
|
+
stop(signal?: AbortSignal): Promise<ISonosControlResult>;
|
|
60
|
+
next(signal?: AbortSignal): Promise<ISonosControlResult>;
|
|
61
|
+
previous(signal?: AbortSignal): Promise<ISonosControlResult>;
|
|
62
|
+
setVolume(value: number, signal?: AbortSignal): Promise<ISonosControlResult>;
|
|
63
|
+
setMute(value: boolean, signal?: AbortSignal): Promise<ISonosControlResult>;
|
|
64
|
+
playUri(uri: string, options?: ISonosMediaOptions, signal?: AbortSignal): Promise<ISonosControlResult>;
|
|
65
|
+
/** Registers the entire caller continuation, not only individual HTTP exchanges. */
|
|
66
|
+
withOperation<TResult>(work: (session: ISonosOperationSession) => Promise<TResult>, signal?: AbortSignal): Promise<TResult>;
|
|
67
|
+
/** Integration setup already owns this exact lease; no second setup/operation pool is created. */
|
|
68
|
+
withSetupLease<TResult>(lease: INativeSetupLease, work: (session: ISonosOperationSession) => Promise<TResult>): Promise<TResult>;
|
|
28
69
|
destroy(): Promise<void>;
|
|
29
|
-
|
|
30
|
-
private
|
|
31
|
-
private
|
|
32
|
-
private
|
|
70
|
+
retryCleanup(): Promise<void>;
|
|
71
|
+
private closeOwnedResources;
|
|
72
|
+
private drain;
|
|
73
|
+
private allocate;
|
|
74
|
+
private runAdmitted;
|
|
75
|
+
private assertOpen;
|
|
76
|
+
private readDescription;
|
|
77
|
+
private readSnapshot;
|
|
78
|
+
private readGroup;
|
|
79
|
+
private readTransport;
|
|
80
|
+
private readPosition;
|
|
81
|
+
private serviceActions;
|
|
82
|
+
private transportCapabilities;
|
|
83
|
+
private renderingCapabilities;
|
|
84
|
+
private transportAuthority;
|
|
85
|
+
private transportControl;
|
|
86
|
+
private renderingControl;
|
|
87
|
+
private mediaControl;
|
|
88
|
+
private control;
|
|
33
89
|
}
|
|
90
|
+
export {};
|