@o-lukas/homebridge-smartthings-tv 2.1.3 → 2.2.0-next.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +26 -1
- package/dist/smartThingsPlatform.d.ts +9 -0
- package/dist/smartThingsPlatform.d.ts.map +1 -1
- package/dist/smartThingsPlatform.js +36 -1
- package/dist/smartThingsPlatform.js.map +1 -1
- package/dist/soundbarAccessory.d.ts +128 -0
- package/dist/soundbarAccessory.d.ts.map +1 -0
- package/dist/soundbarAccessory.js +354 -0
- package/dist/soundbarAccessory.js.map +1 -0
- package/package.json +7 -3
package/README.md
CHANGED
|
@@ -8,7 +8,9 @@
|
|
|
8
8
|

|
|
9
9
|
[](https://github.com/o-lukas/homebridge-smartthings-tv/actions/workflows/build.yml)
|
|
10
10
|
|
|
11
|
-
This is a plugin for [Homebridge](https://github.com/homebridge/homebridge). It offers some basic functions to control Samsung TVs using the SmartThings API.
|
|
11
|
+
This is a plugin for [Homebridge](https://github.com/homebridge/homebridge). It offers some basic functions to control Samsung TVs and SoundBars using the SmartThings API.
|
|
12
|
+
|
|
13
|
+
Both device types will be registered as TVs because this is the only device type that is able to control input sources at the moment.
|
|
12
14
|
|
|
13
15
|
## Configuration
|
|
14
16
|
|
|
@@ -113,14 +115,23 @@ Enable debug logging for cyclic calls (e.g. polling).
|
|
|
113
115
|
|
|
114
116
|
To use installed application as input sources, a [predefined list of applications](./src/res/apps.json) will be used. This list will be checked for availability at the TV(s) and eventually be registered as input sources. Make sure to have the TV(s) turned on when starting your instance as this functionality requires your TV(s) be turned on to determine whether an application is installed or not. On startup the applications will be opened to determine if they are available. Do not use your TV until the input source is being changed back to the first one (usually Live TV).
|
|
115
117
|
|
|
118
|
+
> [!NOTE]
|
|
119
|
+
> Not implemented for SoundBars.
|
|
120
|
+
|
|
116
121
|
### registerPictureModes
|
|
117
122
|
|
|
118
123
|
Registers all available picture modes as separate switches that can be toggled to enable/disable a picture mode. Uses the names as exposed from the SmartThings API.
|
|
119
124
|
|
|
125
|
+
> [!NOTE]
|
|
126
|
+
> Not implemented for SoundBars.
|
|
127
|
+
|
|
120
128
|
### registerSoundModes
|
|
121
129
|
|
|
122
130
|
Registers all available sound modes as separate switches that can be toggled to enable/disable a sound mode. Uses the names as exposed from the SmartThings API.
|
|
123
131
|
|
|
132
|
+
> [!NOTE]
|
|
133
|
+
> Not implemented for SoundBars.
|
|
134
|
+
|
|
124
135
|
### registerVolumeSlider
|
|
125
136
|
|
|
126
137
|
Registers a separate volume slider accessorry that will be exposed as a light bulb accessory (because there is currently no option to change a speaker volume directly using Home).
|
|
@@ -137,6 +148,20 @@ Devices not to be registered.
|
|
|
137
148
|
|
|
138
149
|
Use the device mappings when e.g. turning on the accessory does not work as expected. When a device mapping is available the wake-on-lan functionality is used to turn on the device instead of the SmartThings API. To make use of the functionality you must enter the mapping using the SmartThings device ID and the mac address of the device. If status does not show up properly you can use the ping functionality to determine the device status. To make use of it you must enter the SmartThings device ID and the ip address of the device.
|
|
139
150
|
|
|
151
|
+
The following table gives an overview which properties do work for the device types:
|
|
152
|
+
|
|
153
|
+
| Configuration property | TV | SoundBar |
|
|
154
|
+
| ---------------------- | ------------------ | ------------------ |
|
|
155
|
+
| deviceId | :white_check_mark: | :white_check_mark: |
|
|
156
|
+
| nameOverride | :white_check_mark: | :white_check_mark: |
|
|
157
|
+
| wol | :white_check_mark: | :white_check_mark: |
|
|
158
|
+
| macAddress | :white_check_mark: | :white_check_mark: |
|
|
159
|
+
| ping | :white_check_mark: | :white_check_mark: |
|
|
160
|
+
| ipAddress | :white_check_mark: | :white_check_mark: |
|
|
161
|
+
| infoKey | :white_check_mark: | :x: |
|
|
162
|
+
| inputSources | :white_check_mark: | :white_check_mark: |
|
|
163
|
+
| applications | :white_check_mark: | :x: |
|
|
164
|
+
|
|
140
165
|
#### deviceId
|
|
141
166
|
|
|
142
167
|
The SmartThings device id. Check the log or go to <https://account.smartthings.com/> and get the device id.
|
|
@@ -65,6 +65,15 @@ export declare class SmartThingsPlatform implements DynamicPlatformPlugin {
|
|
|
65
65
|
* @param deviceMappings the array of configured DeviceMapping
|
|
66
66
|
*/
|
|
67
67
|
registerTvDevice(client: SmartThingsClient, device: Device, deviceMapping: DeviceMapping | undefined): Promise<void>;
|
|
68
|
+
/**
|
|
69
|
+
* Registers a SmartThings Soundbar Device for Homebridge.
|
|
70
|
+
*
|
|
71
|
+
* @param client the SmartThingsClient used to send API calls
|
|
72
|
+
* @param device the SmartThings Device
|
|
73
|
+
* @param accessory the cached PlatformAccessory or undefined if no cached PlatformAccessory exists
|
|
74
|
+
* @param deviceMappings the array of configured DeviceMapping
|
|
75
|
+
*/
|
|
76
|
+
registerSoundbarDevice(client: SmartThingsClient, device: Device, deviceMapping: DeviceMapping | undefined): Promise<void>;
|
|
68
77
|
/**
|
|
69
78
|
* Register the modes of the device passed in as platform accessories.
|
|
70
79
|
* Handles caching of accessories as well.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"smartThingsPlatform.d.ts","sourceRoot":"","sources":["../src/smartThingsPlatform.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,GAAG,EACH,qBAAqB,EACrB,MAAM,EACN,iBAAiB,EACjB,cAAc,EACd,OAAO,EACP,cAAc,EAEf,MAAM,YAAY,CAAC;AAIpB,OAAO,EAAE,iBAAiB,EAA4B,MAAM,EAAE,SAAS,EAAoB,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"smartThingsPlatform.d.ts","sourceRoot":"","sources":["../src/smartThingsPlatform.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,GAAG,EACH,qBAAqB,EACrB,MAAM,EACN,iBAAiB,EACjB,cAAc,EACd,OAAO,EACP,cAAc,EAEf,MAAM,YAAY,CAAC;AAIpB,OAAO,EAAE,iBAAiB,EAA4B,MAAM,EAAE,SAAS,EAAoB,MAAM,uBAAuB,CAAC;AAKzH;;GAEG;AACH,cAAM,aAAa;aACW,QAAQ,EAAE,MAAM;aAC1B,YAAY,EAAE,MAAM;aACpB,UAAU,EAAE,MAAM;aAClB,SAAS,EAAE,MAAM;aACjB,YAAY,EAAE,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,MAAM,CAAA;KAAC,CAAC;aAC1C,YAAY,EAAE,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,CAAC,MAAM,CAAC,CAAA;KAAC,CAAC;aAC7C,OAAO,EAAE,MAAM;gBANL,QAAQ,EAAE,MAAM,EAC1B,YAAY,EAAE,MAAM,EACpB,UAAU,EAAE,MAAM,EAClB,SAAS,EAAE,MAAM,EACjB,YAAY,EAAE,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,MAAM,CAAA;KAAC,CAAC,EAC1C,YAAY,EAAE,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,CAAC,MAAM,CAAC,CAAA;KAAC,CAAC,EAC7C,OAAO,EAAE,MAAM;CAElC;AAED;;GAEG;AACH,qBAAa,mBAAoB,YAAW,qBAAqB;aAQ7C,GAAG,EAAE,MAAM;aACX,MAAM,EAAE,cAAc;aACtB,GAAG,EAAE,GAAG;IAT1B,SAAgB,OAAO,EAAE,OAAO,OAAO,CAAwB;IAC/D,SAAgB,cAAc,EAAE,OAAO,cAAc,CAA+B;IAGpF,SAAgB,WAAW,EAAE,iBAAiB,EAAE,CAAM;gBAGpC,GAAG,EAAE,MAAM,EACX,MAAM,EAAE,cAAc,EACtB,GAAG,EAAE,GAAG;IAwB1B;;OAEG;IAEH,kBAAkB,CAAC,SAAS,EAAE,iBAAiB;IAO/C;;;;;;OAMG;IACG,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,eAAe,EAAE,CAAC,MAAM,CAAC,EAAE,cAAc,EAAE,CAAC,aAAa,CAAC;IAqB/F;;;;;;OAMG;IACG,cAAc,CAAC,MAAM,EAAE,iBAAiB,EAAE,MAAM,EAAE,MAAM,EAAE,cAAc,EAAE,CAAC,aAAa,CAAC;IAmB/F;;;;;;;OAOG;IACG,gBAAgB,CAAC,MAAM,EAAE,iBAAiB,EAAE,MAAM,EAAE,MAAM,EAAE,aAAa,EAAE,aAAa,GAAG,SAAS;IAwD1G;;;;;;;OAOG;IACG,sBAAsB,CAAC,MAAM,EAAE,iBAAiB,EAAE,MAAM,EAAE,MAAM,EAAE,aAAa,EAAE,aAAa,GAAG,SAAS;IAmChH;;;;;;;;OAQG;IACH,oBAAoB,CAAC,MAAM,EAAE,iBAAiB,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,EAClF,KAAK,EAAE;QACL,UAAU,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE;YAAE,EAAE,EAAE,MAAM,CAAC;YAAC,IAAI,EAAE,MAAM,CAAA;SAAE,EAAE,CAAC;KAC5F;IAwBH;;;;;;;OAOG;IACH,oBAAoB,CAAC,MAAM,EAAE,iBAAiB,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS;CAqCrF"}
|
|
@@ -6,6 +6,7 @@ const tvAccessory_1 = require("./tvAccessory");
|
|
|
6
6
|
const core_sdk_1 = require("@smartthings/core-sdk");
|
|
7
7
|
const switchAccessory_1 = require("./switchAccessory");
|
|
8
8
|
const sliderAccessory_1 = require("./sliderAccessory");
|
|
9
|
+
const soundbarAccessory_1 = require("./soundbarAccessory");
|
|
9
10
|
/**
|
|
10
11
|
* Class implements the configured Device to mac and ip address mappings.
|
|
11
12
|
*/
|
|
@@ -99,6 +100,9 @@ class SmartThingsPlatform {
|
|
|
99
100
|
case 'x.com.st.d.monitor':
|
|
100
101
|
await this.registerTvDevice(client, device, deviceMappings.find(mapping => mapping.deviceId === device.deviceId));
|
|
101
102
|
break;
|
|
103
|
+
case 'oic.d.networkaudio':
|
|
104
|
+
await this.registerSoundbarDevice(client, device, deviceMappings.find(mapping => mapping.deviceId === device.deviceId));
|
|
105
|
+
break;
|
|
102
106
|
default:
|
|
103
107
|
this.log.debug('Ignoring SmartThings device %s because device type %s is not implemented: %s', device.name ? device.name + ' (' + device.deviceId + ')' : device.deviceId, (_b = device.ocf) === null || _b === void 0 ? void 0 : _b.ocfDeviceType, JSON.stringify(device, null, 2));
|
|
104
108
|
break;
|
|
@@ -114,7 +118,7 @@ class SmartThingsPlatform {
|
|
|
114
118
|
*/
|
|
115
119
|
async registerTvDevice(client, device, deviceMapping) {
|
|
116
120
|
var _a, _b, _c, _d, _e, _f;
|
|
117
|
-
this.log.info('Adding new accessory: %s', device.name ? device.name + ' (' + device.deviceId + ')' : device.deviceId);
|
|
121
|
+
this.log.info('Adding new TV accessory: %s', device.name ? device.name + ' (' + device.deviceId + ')' : device.deviceId);
|
|
118
122
|
const component = (_a = device.components) === null || _a === void 0 ? void 0 : _a.at(0);
|
|
119
123
|
if (!component) {
|
|
120
124
|
this.log.info('Can\'t register TV accessory because (main) component does not exist');
|
|
@@ -152,6 +156,37 @@ class SmartThingsPlatform {
|
|
|
152
156
|
}
|
|
153
157
|
}
|
|
154
158
|
}
|
|
159
|
+
/**
|
|
160
|
+
* Registers a SmartThings Soundbar Device for Homebridge.
|
|
161
|
+
*
|
|
162
|
+
* @param client the SmartThingsClient used to send API calls
|
|
163
|
+
* @param device the SmartThings Device
|
|
164
|
+
* @param accessory the cached PlatformAccessory or undefined if no cached PlatformAccessory exists
|
|
165
|
+
* @param deviceMappings the array of configured DeviceMapping
|
|
166
|
+
*/
|
|
167
|
+
async registerSoundbarDevice(client, device, deviceMapping) {
|
|
168
|
+
var _a, _b, _c, _d, _e;
|
|
169
|
+
this.log.info('Adding new soundbar accessory: %s', device.name ? device.name + ' (' + device.deviceId + ')' : device.deviceId);
|
|
170
|
+
const component = (_a = device.components) === null || _a === void 0 ? void 0 : _a.at(0);
|
|
171
|
+
if (!component) {
|
|
172
|
+
this.log.info('Can\'t register soundbar accessory because (main) component does not exist');
|
|
173
|
+
return;
|
|
174
|
+
}
|
|
175
|
+
let displayName = (_b = device.name) !== null && _b !== void 0 ? _b : device.deviceId;
|
|
176
|
+
if (deviceMapping === null || deviceMapping === void 0 ? void 0 : deviceMapping.nameOverride) {
|
|
177
|
+
this.log.info('Overriding device default name \'%s\' with configured display name \'%s\'', device.name, deviceMapping.nameOverride);
|
|
178
|
+
displayName = deviceMapping.nameOverride;
|
|
179
|
+
}
|
|
180
|
+
const accessory = new this.api.platformAccessory(displayName, device.deviceId);
|
|
181
|
+
accessory.context.device = device;
|
|
182
|
+
accessory.category = 31 /* this.api.hap.Categories.TELEVISION */;
|
|
183
|
+
this.api.publishExternalAccessories(settings_1.PLUGIN_NAME, [accessory]);
|
|
184
|
+
const tv = new soundbarAccessory_1.SoundbarAccessory(displayName, device, component, client, this.log, this, accessory, (_c = this.config.capabilityLogging) !== null && _c !== void 0 ? _c : false, (_d = this.config.pollInterval) !== null && _d !== void 0 ? _d : undefined, (_e = this.config.cyclicCallsLogging) !== null && _e !== void 0 ? _e : false, deviceMapping === null || deviceMapping === void 0 ? void 0 : deviceMapping.macAddress, deviceMapping === null || deviceMapping === void 0 ? void 0 : deviceMapping.ipAddress, deviceMapping === null || deviceMapping === void 0 ? void 0 : deviceMapping.inputSources);
|
|
185
|
+
await tv.registerCapabilities();
|
|
186
|
+
if (this.config.registerVolumeSlider) {
|
|
187
|
+
this.registerVolumeSlider(client, device, component);
|
|
188
|
+
}
|
|
189
|
+
}
|
|
155
190
|
/**
|
|
156
191
|
* Register the modes of the device passed in as platform accessories.
|
|
157
192
|
* Handles caching of accessories as well.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"smartThingsPlatform.js","sourceRoot":"","sources":["../src/smartThingsPlatform.ts"],"names":[],"mappings":";;;AAWA,yCAAwD;AACxD,+CAA4C;AAC5C,oDAAyH;AACzH,uDAAoD;AACpD,uDAAoD;
|
|
1
|
+
{"version":3,"file":"smartThingsPlatform.js","sourceRoot":"","sources":["../src/smartThingsPlatform.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
import { PlatformAccessory, Logger } from 'homebridge';
|
|
2
|
+
import { SmartThingsPlatform } from './smartThingsPlatform';
|
|
3
|
+
import { SmartThingsClient, Device, Component } from '@smartthings/core-sdk';
|
|
4
|
+
import { SmartThingsAccessory } from './smartThingsAccessory';
|
|
5
|
+
/**
|
|
6
|
+
* Class implements a SmartThings soundbar accessory.
|
|
7
|
+
*/
|
|
8
|
+
export declare class SoundbarAccessory extends SmartThingsAccessory {
|
|
9
|
+
private readonly logCapabilities;
|
|
10
|
+
private readonly pollingInterval;
|
|
11
|
+
private readonly cyclicCallsLogging;
|
|
12
|
+
private readonly macAddress;
|
|
13
|
+
private readonly ipAddress;
|
|
14
|
+
private readonly inputSources;
|
|
15
|
+
private service;
|
|
16
|
+
private speakerService;
|
|
17
|
+
private inputSourceServices;
|
|
18
|
+
private capabilities;
|
|
19
|
+
private activeIdentifierChangeTime;
|
|
20
|
+
private activeIdentifierChangeValue;
|
|
21
|
+
constructor(name: string, device: Device, component: Component, client: SmartThingsClient, log: Logger, platform: SmartThingsPlatform, accessory: PlatformAccessory, logCapabilities: boolean, pollingInterval: number | undefined, cyclicCallsLogging: boolean, macAddress?: string | undefined, ipAddress?: string | undefined, inputSources?: [{
|
|
22
|
+
name: string;
|
|
23
|
+
id: string;
|
|
24
|
+
}] | undefined);
|
|
25
|
+
/**
|
|
26
|
+
* Registers all available capabilities of the SmartThings Component.
|
|
27
|
+
*/
|
|
28
|
+
registerCapabilities(): Promise<void>;
|
|
29
|
+
/**
|
|
30
|
+
* Registers the SmartThings Capablity if it's functionality is implemented.
|
|
31
|
+
*
|
|
32
|
+
* @param capability the Capability
|
|
33
|
+
*/
|
|
34
|
+
private registerCapability;
|
|
35
|
+
/**
|
|
36
|
+
* Setter for Homebridge accessory Active property.
|
|
37
|
+
*
|
|
38
|
+
* @param value the CharacteristicValue
|
|
39
|
+
*/
|
|
40
|
+
private setActive;
|
|
41
|
+
/**
|
|
42
|
+
* Getter for Homebridge accessory Active property.
|
|
43
|
+
*
|
|
44
|
+
* @param log flag to turn logging on/off
|
|
45
|
+
* @returns the CharacteristicValue
|
|
46
|
+
*/
|
|
47
|
+
private getActive;
|
|
48
|
+
/**
|
|
49
|
+
* Setter for Homebridge accessory VolumeSelector property.
|
|
50
|
+
*
|
|
51
|
+
* @param value the CharacteristicValue
|
|
52
|
+
*/
|
|
53
|
+
private setVolumeSelector;
|
|
54
|
+
/**
|
|
55
|
+
* Setter for Homebridge accessory Volume property.
|
|
56
|
+
*
|
|
57
|
+
* @param value the CharacteristicValue
|
|
58
|
+
*/
|
|
59
|
+
private setVolume;
|
|
60
|
+
/**
|
|
61
|
+
* Getter for Homebridge accessory Volume property.
|
|
62
|
+
*
|
|
63
|
+
* @param log flag to turn logging on/off
|
|
64
|
+
* @returns the CharacteristicValue
|
|
65
|
+
*/
|
|
66
|
+
private getVolume;
|
|
67
|
+
/**
|
|
68
|
+
* Setter for Homebridge accessory Mute property.
|
|
69
|
+
*
|
|
70
|
+
* @param value the CharacteristicValue
|
|
71
|
+
*/
|
|
72
|
+
private setMute;
|
|
73
|
+
/**
|
|
74
|
+
* Getter for Homebridge accessory Mute property.
|
|
75
|
+
*
|
|
76
|
+
* @param log flag to turn logging on/off
|
|
77
|
+
* @returns the CharacteristicValue
|
|
78
|
+
*/
|
|
79
|
+
private getMute;
|
|
80
|
+
/**
|
|
81
|
+
* Setter for Homebridge accessory ActiveIdentifier property.
|
|
82
|
+
*
|
|
83
|
+
* @param value the CharacteristicValue
|
|
84
|
+
*/
|
|
85
|
+
private setActiveIdentifier;
|
|
86
|
+
/**
|
|
87
|
+
* Getter for Homebridge accessory ActiveIdentifier property.
|
|
88
|
+
*
|
|
89
|
+
* @param log flag to turn logging on/off
|
|
90
|
+
* @returns the CharacteristicValue
|
|
91
|
+
*/
|
|
92
|
+
private getActiveIdentifier;
|
|
93
|
+
/**
|
|
94
|
+
* Setter for Homebridge accessory RemoteKey property.
|
|
95
|
+
*
|
|
96
|
+
* @param value the CharacteristicValue
|
|
97
|
+
*/
|
|
98
|
+
private setRemoteKey;
|
|
99
|
+
/**
|
|
100
|
+
* Validates that the SmartThings Capability needed to execute the remote key is available.
|
|
101
|
+
*
|
|
102
|
+
* @param capabilityId the identifier of the SmartThings Capablity
|
|
103
|
+
* @param remoteKey the remote key
|
|
104
|
+
* @returns TRUE in case capability is available - FALSE otherwise
|
|
105
|
+
*/
|
|
106
|
+
private validateRemoteKeyCapability;
|
|
107
|
+
/**
|
|
108
|
+
* Registers all available media input sources (e.g. HDMI inputs).
|
|
109
|
+
*/
|
|
110
|
+
private registerAvailableInputSources;
|
|
111
|
+
/**
|
|
112
|
+
* Registers a Homebridge input source.
|
|
113
|
+
*
|
|
114
|
+
* @param id the input source id
|
|
115
|
+
* @param name the input source display name
|
|
116
|
+
* @param inputSource the InputSourceType or @code undefined @endcode to use @link guessInputSourceType @endlink
|
|
117
|
+
* to determine InputSourceType
|
|
118
|
+
*/
|
|
119
|
+
private registerInputSource;
|
|
120
|
+
/**
|
|
121
|
+
* Guesses the InputSourceType from the identifier of the input source.
|
|
122
|
+
*
|
|
123
|
+
* @param inputSourceId the identifier of the input source
|
|
124
|
+
* @returns the InputSourceType (HDMI|TUNER|OTHER)
|
|
125
|
+
*/
|
|
126
|
+
private guessInputSourceType;
|
|
127
|
+
}
|
|
128
|
+
//# sourceMappingURL=soundbarAccessory.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"soundbarAccessory.d.ts","sourceRoot":"","sources":["../src/soundbarAccessory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAW,iBAAiB,EAAuB,MAAM,EAAE,MAAM,YAAY,CAAC;AAErF,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,iBAAiB,EAAE,MAAM,EAAE,SAAS,EAAc,MAAM,uBAAuB,CAAC;AAGzF,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAE9D;;GAEG;AACH,qBAAa,iBAAkB,SAAQ,oBAAoB;IAgBvD,OAAO,CAAC,QAAQ,CAAC,eAAe;IAChC,OAAO,CAAC,QAAQ,CAAC,eAAe;IAChC,OAAO,CAAC,QAAQ,CAAC,kBAAkB;IACnC,OAAO,CAAC,QAAQ,CAAC,UAAU;IAC3B,OAAO,CAAC,QAAQ,CAAC,SAAS;IAC1B,OAAO,CAAC,QAAQ,CAAC,YAAY;IApB/B,OAAO,CAAC,OAAO,CAAU;IACzB,OAAO,CAAC,cAAc,CAAW;IACjC,OAAO,CAAC,mBAAmB,CAAiB;IAC5C,OAAO,CAAC,YAAY,CAAgB;IACpC,OAAO,CAAC,0BAA0B,CAAK;IACvC,OAAO,CAAC,2BAA2B,CAAK;gBAGtC,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,SAAS,EACpB,MAAM,EAAE,iBAAiB,EACzB,GAAG,EAAE,MAAM,EACX,QAAQ,EAAE,mBAAmB,EAC7B,SAAS,EAAE,iBAAiB,EACX,eAAe,EAAE,OAAO,EACxB,eAAe,EAAE,MAAM,GAAG,SAAS,EACnC,kBAAkB,EAAE,OAAO,EAC3B,UAAU,GAAE,MAAM,GAAG,SAAqB,EAC1C,SAAS,GAAE,MAAM,GAAG,SAAqB,EACzC,YAAY,GAAE,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,MAAM,CAAA;KAAC,CAAC,GAAG,SAAqB;IAqBrF;;OAEG;IACU,oBAAoB;IAQjC;;;;OAIG;YACW,kBAAkB;IAgEhC;;;;OAIG;YACW,SAAS;IAmBvB;;;;;OAKG;YACW,SAAS;IAoBvB;;;;OAIG;YACW,iBAAiB;IAM/B;;;;OAIG;YACW,SAAS;IAKvB;;;;;OAKG;YACW,SAAS;IAKvB;;;;OAIG;YACW,OAAO;IAKrB;;;;;OAKG;YACW,OAAO;IAKrB;;;;OAIG;YACW,mBAAmB;IAUjC;;;;;OAKG;YACW,mBAAmB;IAyBjC;;;;OAIG;YACW,YAAY;IAkC1B;;;;;;OAMG;IACH,OAAO,CAAC,2BAA2B;IASnC;;OAEG;YACW,6BAA6B;IAqB3C;;;;;;;OAOG;IACH,OAAO,CAAC,mBAAmB;IAsB3B;;;;;OAKG;IACH,OAAO,CAAC,oBAAoB;CAO7B"}
|
|
@@ -0,0 +1,354 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.SoundbarAccessory = void 0;
|
|
7
|
+
const wol_1 = require("wol");
|
|
8
|
+
const ping_1 = __importDefault(require("ping"));
|
|
9
|
+
const smartThingsAccessory_1 = require("./smartThingsAccessory");
|
|
10
|
+
/**
|
|
11
|
+
* Class implements a SmartThings soundbar accessory.
|
|
12
|
+
*/
|
|
13
|
+
class SoundbarAccessory extends smartThingsAccessory_1.SmartThingsAccessory {
|
|
14
|
+
constructor(name, device, component, client, log, platform, accessory, logCapabilities, pollingInterval, cyclicCallsLogging, macAddress = undefined, ipAddress = undefined, inputSources = undefined) {
|
|
15
|
+
var _a, _b;
|
|
16
|
+
super(device, component, client, platform, accessory, log);
|
|
17
|
+
this.logCapabilities = logCapabilities;
|
|
18
|
+
this.pollingInterval = pollingInterval;
|
|
19
|
+
this.cyclicCallsLogging = cyclicCallsLogging;
|
|
20
|
+
this.macAddress = macAddress;
|
|
21
|
+
this.ipAddress = ipAddress;
|
|
22
|
+
this.inputSources = inputSources;
|
|
23
|
+
this.inputSourceServices = [];
|
|
24
|
+
this.capabilities = [];
|
|
25
|
+
this.activeIdentifierChangeTime = 0;
|
|
26
|
+
this.activeIdentifierChangeValue = 0;
|
|
27
|
+
this.accessory.getService(this.platform.Service.AccessoryInformation)
|
|
28
|
+
.setCharacteristic(this.platform.Characteristic.Name, name);
|
|
29
|
+
this.service = (_a = this.accessory.getService(this.platform.Service.Television)) !== null && _a !== void 0 ? _a : this.accessory.addService(this.platform.Service.Television);
|
|
30
|
+
this.service
|
|
31
|
+
.setCharacteristic(this.platform.Characteristic.SleepDiscoveryMode, this.platform.Characteristic.SleepDiscoveryMode.ALWAYS_DISCOVERABLE)
|
|
32
|
+
.setCharacteristic(this.platform.Characteristic.ConfiguredName, name);
|
|
33
|
+
this.service.getCharacteristic(this.platform.Characteristic.RemoteKey)
|
|
34
|
+
.onSet(this.setRemoteKey.bind(this));
|
|
35
|
+
this.speakerService = (_b = this.accessory.getService(this.platform.Service.TelevisionSpeaker)) !== null && _b !== void 0 ? _b : this.accessory.addService(this.platform.Service.TelevisionSpeaker);
|
|
36
|
+
this.service.addLinkedService(this.speakerService);
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Registers all available capabilities of the SmartThings Component.
|
|
40
|
+
*/
|
|
41
|
+
async registerCapabilities() {
|
|
42
|
+
var _a;
|
|
43
|
+
this.logInfo('Registering capabilities for component %s', this.component.id);
|
|
44
|
+
for (const reference of this.component.capabilities) {
|
|
45
|
+
await this.registerCapability(await this.client.capabilities.get(reference.id, (_a = reference.version) !== null && _a !== void 0 ? _a : 0));
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Registers the SmartThings Capablity if it's functionality is implemented.
|
|
50
|
+
*
|
|
51
|
+
* @param capability the Capability
|
|
52
|
+
*/
|
|
53
|
+
async registerCapability(capability) {
|
|
54
|
+
let inputSourcePollingStarted = false;
|
|
55
|
+
if (this.logCapabilities) {
|
|
56
|
+
this.logDebug('Available capability: %s', JSON.stringify(capability, null, 2));
|
|
57
|
+
}
|
|
58
|
+
if (capability.id && !this.capabilities.includes(capability.id)) {
|
|
59
|
+
this.capabilities.push(capability.id);
|
|
60
|
+
}
|
|
61
|
+
switch (capability.id) {
|
|
62
|
+
case 'switch':
|
|
63
|
+
this.logCapabilityRegistration(capability);
|
|
64
|
+
this.service.getCharacteristic(this.platform.Characteristic.Active)
|
|
65
|
+
.onSet(this.setActive.bind(this))
|
|
66
|
+
.onGet(this.getActive.bind(this));
|
|
67
|
+
this.startStatusPolling(capability.name, this.service, this.platform.Characteristic.Active, this.getActive.bind(this, this.cyclicCallsLogging), this.pollingInterval);
|
|
68
|
+
break;
|
|
69
|
+
case 'audioVolume':
|
|
70
|
+
this.logCapabilityRegistration(capability);
|
|
71
|
+
this.speakerService
|
|
72
|
+
.setCharacteristic(this.platform.Characteristic.Active, this.platform.Characteristic.Active.ACTIVE);
|
|
73
|
+
this.speakerService
|
|
74
|
+
.setCharacteristic(this.platform.Characteristic.VolumeControlType, this.platform.Characteristic.VolumeControlType.ABSOLUTE);
|
|
75
|
+
this.speakerService
|
|
76
|
+
.getCharacteristic(this.platform.Characteristic.Volume)
|
|
77
|
+
.onGet(this.getVolume.bind(this))
|
|
78
|
+
.onSet(this.setVolume.bind(this));
|
|
79
|
+
this.speakerService.getCharacteristic(this.platform.Characteristic.VolumeSelector)
|
|
80
|
+
.onSet(this.setVolumeSelector.bind(this));
|
|
81
|
+
this.startStatusPolling(capability.name, this.speakerService, this.platform.Characteristic.Volume, this.getVolume.bind(this, this.cyclicCallsLogging), this.pollingInterval);
|
|
82
|
+
break;
|
|
83
|
+
case 'audioMute':
|
|
84
|
+
this.logCapabilityRegistration(capability);
|
|
85
|
+
this.speakerService.getCharacteristic(this.platform.Characteristic.Mute)
|
|
86
|
+
.onSet(this.setMute.bind(this))
|
|
87
|
+
.onGet(this.getMute.bind(this));
|
|
88
|
+
this.startStatusPolling(capability.name, this.speakerService, this.platform.Characteristic.Mute, this.getMute.bind(this, this.cyclicCallsLogging), this.pollingInterval);
|
|
89
|
+
break;
|
|
90
|
+
case 'samsungvd.audioInputSource':
|
|
91
|
+
this.logCapabilityRegistration(capability);
|
|
92
|
+
await this.registerAvailableInputSources();
|
|
93
|
+
if (this.inputSourceServices.length > 0) {
|
|
94
|
+
this.service.getCharacteristic(this.platform.Characteristic.ActiveIdentifier)
|
|
95
|
+
.onSet(this.setActiveIdentifier.bind(this))
|
|
96
|
+
.onGet(this.getActiveIdentifier.bind(this));
|
|
97
|
+
if (!inputSourcePollingStarted) {
|
|
98
|
+
inputSourcePollingStarted = true;
|
|
99
|
+
this.startStatusPolling('activeIdentifier', this.service, this.platform.Characteristic.ActiveIdentifier, this.getActiveIdentifier.bind(this, this.cyclicCallsLogging), this.pollingInterval);
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
break;
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
/**
|
|
106
|
+
* Setter for Homebridge accessory Active property.
|
|
107
|
+
*
|
|
108
|
+
* @param value the CharacteristicValue
|
|
109
|
+
*/
|
|
110
|
+
async setActive(value) {
|
|
111
|
+
this.logDebug('Set active to: %s', value);
|
|
112
|
+
if (value) {
|
|
113
|
+
if (this.macAddress) {
|
|
114
|
+
this.logDebug('Use wake-on-lan functionality because mac-address has been configured');
|
|
115
|
+
if (await (0, wol_1.wake)(this.macAddress)) {
|
|
116
|
+
this.logDebug('Successfully woke device');
|
|
117
|
+
}
|
|
118
|
+
else {
|
|
119
|
+
this.logError('Could not wake device - if this error keeps occuring try to disable wake-on-lan functionality');
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
else {
|
|
123
|
+
await this.executeCommand('switch', 'on');
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
else {
|
|
127
|
+
await this.executeCommand('switch', 'off');
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
/**
|
|
131
|
+
* Getter for Homebridge accessory Active property.
|
|
132
|
+
*
|
|
133
|
+
* @param log flag to turn logging on/off
|
|
134
|
+
* @returns the CharacteristicValue
|
|
135
|
+
*/
|
|
136
|
+
async getActive(log = true) {
|
|
137
|
+
if (this.ipAddress) {
|
|
138
|
+
try {
|
|
139
|
+
const status = await ping_1.default.promise.probe(this.ipAddress);
|
|
140
|
+
if (log) {
|
|
141
|
+
this.logDebug('ping status: %s', status);
|
|
142
|
+
}
|
|
143
|
+
return status === null || status === void 0 ? void 0 : status.alive;
|
|
144
|
+
}
|
|
145
|
+
catch (exc) {
|
|
146
|
+
this.logError('error when pinging device: %s\n\
|
|
147
|
+
ping command fails mostly because of permission issues - falling back to SmartThings API for getting active state', exc);
|
|
148
|
+
return false;
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
const status = await this.getCapabilityStatus('switch', log);
|
|
152
|
+
return (status === null || status === void 0 ? void 0 : status.switch.value) === 'on' ? true : false;
|
|
153
|
+
}
|
|
154
|
+
/**
|
|
155
|
+
* Setter for Homebridge accessory VolumeSelector property.
|
|
156
|
+
*
|
|
157
|
+
* @param value the CharacteristicValue
|
|
158
|
+
*/
|
|
159
|
+
async setVolumeSelector(value) {
|
|
160
|
+
const increment = value === this.platform.Characteristic.VolumeSelector.INCREMENT;
|
|
161
|
+
this.logDebug('%s volume', increment ? 'Increasing' : 'Decreasing');
|
|
162
|
+
await this.executeCommand('audioVolume', increment ? 'volumeUp' : 'volumeDown');
|
|
163
|
+
}
|
|
164
|
+
/**
|
|
165
|
+
* Setter for Homebridge accessory Volume property.
|
|
166
|
+
*
|
|
167
|
+
* @param value the CharacteristicValue
|
|
168
|
+
*/
|
|
169
|
+
async setVolume(value) {
|
|
170
|
+
this.logDebug('Set volume to: %s', value);
|
|
171
|
+
await this.executeCommand('audioVolume', 'setVolume', [value]);
|
|
172
|
+
}
|
|
173
|
+
/**
|
|
174
|
+
* Getter for Homebridge accessory Volume property.
|
|
175
|
+
*
|
|
176
|
+
* @param log flag to turn logging on/off
|
|
177
|
+
* @returns the CharacteristicValue
|
|
178
|
+
*/
|
|
179
|
+
async getVolume(log = true) {
|
|
180
|
+
const status = await this.getCapabilityStatus('audioVolume', log);
|
|
181
|
+
return status === null || status === void 0 ? void 0 : status.volume.value;
|
|
182
|
+
}
|
|
183
|
+
/**
|
|
184
|
+
* Setter for Homebridge accessory Mute property.
|
|
185
|
+
*
|
|
186
|
+
* @param value the CharacteristicValue
|
|
187
|
+
*/
|
|
188
|
+
async setMute(value) {
|
|
189
|
+
this.logDebug('Set mute to: %s', value);
|
|
190
|
+
await this.executeCommand('audioMute', value ? 'mute' : 'unmute');
|
|
191
|
+
}
|
|
192
|
+
/**
|
|
193
|
+
* Getter for Homebridge accessory Mute property.
|
|
194
|
+
*
|
|
195
|
+
* @param log flag to turn logging on/off
|
|
196
|
+
* @returns the CharacteristicValue
|
|
197
|
+
*/
|
|
198
|
+
async getMute(log = true) {
|
|
199
|
+
const status = await this.getCapabilityStatus('audioMute', log);
|
|
200
|
+
return (status === null || status === void 0 ? void 0 : status.mute.value) === 'muted' ? true : false;
|
|
201
|
+
}
|
|
202
|
+
/**
|
|
203
|
+
* Setter for Homebridge accessory ActiveIdentifier property.
|
|
204
|
+
*
|
|
205
|
+
* @param value the CharacteristicValue
|
|
206
|
+
*/
|
|
207
|
+
async setActiveIdentifier(value) {
|
|
208
|
+
var _a;
|
|
209
|
+
this.logDebug('Set active identifier to: %s', value);
|
|
210
|
+
const inputSource = this.inputSourceServices[value];
|
|
211
|
+
this.activeIdentifierChangeTime = Date.now();
|
|
212
|
+
this.activeIdentifierChangeValue = value;
|
|
213
|
+
await this.executeCommand('samsungvd.audioInputSource', 'setInputSource', [(_a = inputSource.name) !== null && _a !== void 0 ? _a : '']);
|
|
214
|
+
}
|
|
215
|
+
/**
|
|
216
|
+
* Getter for Homebridge accessory ActiveIdentifier property.
|
|
217
|
+
*
|
|
218
|
+
* @param log flag to turn logging on/off
|
|
219
|
+
* @returns the CharacteristicValue
|
|
220
|
+
*/
|
|
221
|
+
async getActiveIdentifier(log = true) {
|
|
222
|
+
var _a;
|
|
223
|
+
const status = await this.getCapabilityStatus('samsungvd.audioInputSource', log);
|
|
224
|
+
if (Date.parse((_a = status === null || status === void 0 ? void 0 : status.inputSource.timestamp) !== null && _a !== void 0 ? _a : '') > this.activeIdentifierChangeTime) {
|
|
225
|
+
const id = this.inputSourceServices.findIndex(inputSource => inputSource.name === (status === null || status === void 0 ? void 0 : status.inputSource.value));
|
|
226
|
+
if (log) {
|
|
227
|
+
this.logDebug('ActiveIdentifier has been changed on the device - using API result: %s', id);
|
|
228
|
+
}
|
|
229
|
+
if (id < 0) {
|
|
230
|
+
this.logWarn('Could not find input source for name \'%s\' - using first input source \'%s\' as active identifier', status === null || status === void 0 ? void 0 : status.inputSource.value, this.inputSourceServices[0].name);
|
|
231
|
+
return 0;
|
|
232
|
+
}
|
|
233
|
+
return id;
|
|
234
|
+
}
|
|
235
|
+
else {
|
|
236
|
+
if (log) {
|
|
237
|
+
this.logDebug('ActiveIdentifier has not been changed on the device - using temporary result: %s', this.activeIdentifierChangeValue);
|
|
238
|
+
}
|
|
239
|
+
return this.activeIdentifierChangeValue;
|
|
240
|
+
}
|
|
241
|
+
}
|
|
242
|
+
/**
|
|
243
|
+
* Setter for Homebridge accessory RemoteKey property.
|
|
244
|
+
*
|
|
245
|
+
* @param value the CharacteristicValue
|
|
246
|
+
*/
|
|
247
|
+
async setRemoteKey(value) {
|
|
248
|
+
switch (value) {
|
|
249
|
+
case this.platform.Characteristic.RemoteKey.REWIND:
|
|
250
|
+
if (this.validateRemoteKeyCapability('mediaPlayback', 'REWIND')) {
|
|
251
|
+
await this.executeCommand('mediaPlayback', 'rewind');
|
|
252
|
+
}
|
|
253
|
+
break;
|
|
254
|
+
case this.platform.Characteristic.RemoteKey.FAST_FORWARD:
|
|
255
|
+
if (this.validateRemoteKeyCapability('mediaPlayback', 'FAST_FORWARD')) {
|
|
256
|
+
await this.executeCommand('mediaPlayback', 'fastForward');
|
|
257
|
+
}
|
|
258
|
+
break;
|
|
259
|
+
case this.platform.Characteristic.RemoteKey.PLAY_PAUSE:
|
|
260
|
+
if (this.validateRemoteKeyCapability('mediaPlayback', 'PLAY_PAUSE')) {
|
|
261
|
+
await this.executeCommand('mediaPlayback', 'play');
|
|
262
|
+
}
|
|
263
|
+
break;
|
|
264
|
+
case this.platform.Characteristic.RemoteKey.EXIT:
|
|
265
|
+
if (this.validateRemoteKeyCapability('mediaPlayback', 'EXIT')) {
|
|
266
|
+
await this.executeCommand('mediaPlayback', 'stop');
|
|
267
|
+
}
|
|
268
|
+
break;
|
|
269
|
+
case this.platform.Characteristic.RemoteKey.BACK:
|
|
270
|
+
if (this.validateRemoteKeyCapability('mediaPlayback', 'BACK')) {
|
|
271
|
+
await this.executeCommand('mediaPlayback', 'stop');
|
|
272
|
+
}
|
|
273
|
+
break;
|
|
274
|
+
}
|
|
275
|
+
}
|
|
276
|
+
/**
|
|
277
|
+
* Validates that the SmartThings Capability needed to execute the remote key is available.
|
|
278
|
+
*
|
|
279
|
+
* @param capabilityId the identifier of the SmartThings Capablity
|
|
280
|
+
* @param remoteKey the remote key
|
|
281
|
+
* @returns TRUE in case capability is available - FALSE otherwise
|
|
282
|
+
*/
|
|
283
|
+
validateRemoteKeyCapability(capabilityId, remoteKey) {
|
|
284
|
+
if (this.capabilities.includes(capabilityId)) {
|
|
285
|
+
return true;
|
|
286
|
+
}
|
|
287
|
+
else {
|
|
288
|
+
this.logError('can\'t handle RemoteKey %s because %s capability is not available', remoteKey, capabilityId);
|
|
289
|
+
return false;
|
|
290
|
+
}
|
|
291
|
+
}
|
|
292
|
+
/**
|
|
293
|
+
* Registers all available media input sources (e.g. HDMI inputs).
|
|
294
|
+
*/
|
|
295
|
+
async registerAvailableInputSources() {
|
|
296
|
+
var _a;
|
|
297
|
+
const status = await this.client.devices.getCapabilityStatus(this.device.deviceId, this.component.id, 'samsungvd.audioInputSource');
|
|
298
|
+
this.logWarn('Status: %s', JSON.stringify(status));
|
|
299
|
+
const supportedInputSources = [...new Set(status.supportedInputSources.value)].map((s) => {
|
|
300
|
+
return {
|
|
301
|
+
name: s,
|
|
302
|
+
id: s,
|
|
303
|
+
};
|
|
304
|
+
});
|
|
305
|
+
if (this.inputSources) {
|
|
306
|
+
this.logInfo('Overriding default input sources map "%s" with custom map "%s"', JSON.stringify(supportedInputSources, null, 2), JSON.stringify(this.inputSources, null, 2));
|
|
307
|
+
}
|
|
308
|
+
for (const inputSource of (_a = this.inputSources) !== null && _a !== void 0 ? _a : supportedInputSources) {
|
|
309
|
+
this.registerInputSource(inputSource.id, inputSource.name);
|
|
310
|
+
}
|
|
311
|
+
}
|
|
312
|
+
/**
|
|
313
|
+
* Registers a Homebridge input source.
|
|
314
|
+
*
|
|
315
|
+
* @param id the input source id
|
|
316
|
+
* @param name the input source display name
|
|
317
|
+
* @param inputSource the InputSourceType or @code undefined @endcode to use @link guessInputSourceType @endlink
|
|
318
|
+
* to determine InputSourceType
|
|
319
|
+
*/
|
|
320
|
+
registerInputSource(id, name, inputSource = undefined) {
|
|
321
|
+
var _a;
|
|
322
|
+
this.logInfo('Registering input source: %s (%s)', name, id);
|
|
323
|
+
let inputSourceType = inputSource;
|
|
324
|
+
if (inputSourceType === undefined) {
|
|
325
|
+
inputSourceType = this.guessInputSourceType(id);
|
|
326
|
+
this.logDebug('Guessed input source type for %s is: %i', name, inputSourceType);
|
|
327
|
+
}
|
|
328
|
+
const inputSourceService = (_a = this.accessory.getService(id)) !== null && _a !== void 0 ? _a : this.accessory.addService(this.platform.Service.InputSource, id, id);
|
|
329
|
+
inputSourceService.name = id;
|
|
330
|
+
inputSourceService
|
|
331
|
+
.setCharacteristic(this.platform.Characteristic.Identifier, this.inputSourceServices.length)
|
|
332
|
+
.setCharacteristic(this.platform.Characteristic.ConfiguredName, name)
|
|
333
|
+
.setCharacteristic(this.platform.Characteristic.IsConfigured, this.platform.Characteristic.IsConfigured.CONFIGURED)
|
|
334
|
+
.setCharacteristic(this.platform.Characteristic.InputSourceType, inputSourceType);
|
|
335
|
+
this.service.addLinkedService(inputSourceService);
|
|
336
|
+
this.inputSourceServices.push(inputSourceService);
|
|
337
|
+
}
|
|
338
|
+
/**
|
|
339
|
+
* Guesses the InputSourceType from the identifier of the input source.
|
|
340
|
+
*
|
|
341
|
+
* @param inputSourceId the identifier of the input source
|
|
342
|
+
* @returns the InputSourceType (HDMI|TUNER|OTHER)
|
|
343
|
+
*/
|
|
344
|
+
guessInputSourceType(inputSourceId) {
|
|
345
|
+
if (inputSourceId.startsWith('HDMI')) {
|
|
346
|
+
return this.platform.Characteristic.InputSourceType.HDMI;
|
|
347
|
+
}
|
|
348
|
+
else {
|
|
349
|
+
return this.platform.Characteristic.InputSourceType.OTHER;
|
|
350
|
+
}
|
|
351
|
+
}
|
|
352
|
+
}
|
|
353
|
+
exports.SoundbarAccessory = SoundbarAccessory;
|
|
354
|
+
//# sourceMappingURL=soundbarAccessory.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"soundbarAccessory.js","sourceRoot":"","sources":["../src/soundbarAccessory.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"displayName": "Homebridge SmartThings TV",
|
|
3
3
|
"name": "@o-lukas/homebridge-smartthings-tv",
|
|
4
|
-
"version": "2.1
|
|
4
|
+
"version": "2.2.0-next.1",
|
|
5
5
|
"description": "This is a plugin for Homebridge. It offers some basic functions to control Samsung TVs using the SmartThings API.",
|
|
6
6
|
"license": "MIT",
|
|
7
7
|
"repository": {
|
|
@@ -55,12 +55,16 @@
|
|
|
55
55
|
},
|
|
56
56
|
"overrides": {
|
|
57
57
|
"@smartthings/core-sdk": {
|
|
58
|
-
"axios": "~>1.
|
|
58
|
+
"axios": "~>1.6.0"
|
|
59
59
|
}
|
|
60
60
|
},
|
|
61
61
|
"release": {
|
|
62
62
|
"branches": [
|
|
63
|
-
"main"
|
|
63
|
+
"main",
|
|
64
|
+
{
|
|
65
|
+
"name": "next",
|
|
66
|
+
"prerelease": true
|
|
67
|
+
}
|
|
64
68
|
]
|
|
65
69
|
}
|
|
66
70
|
}
|