@o-lukas/homebridge-smartthings-tv 2.4.0 → 2.6.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.
@@ -4,18 +4,18 @@ repos:
4
4
  - id: end-of-file-fixer
5
5
  - id: trailing-whitespace
6
6
  repo: https://github.com/pre-commit/pre-commit-hooks
7
- rev: v2.3.0
7
+ rev: v5.0.0
8
8
  - hooks:
9
9
  - files: \.[jt]sx?$
10
10
  id: eslint
11
11
  types:
12
12
  - file
13
13
  repo: https://github.com/pre-commit/mirrors-eslint
14
- rev: v8.44.0
14
+ rev: v9.19.0
15
15
  - hooks:
16
16
  - id: commitizen
17
17
  - id: commitizen-branch
18
18
  stages:
19
- - push
19
+ - pre-push
20
20
  repo: https://github.com/commitizen-tools/commitizen
21
- rev: v3.27.0
21
+ rev: v4.1.1
package/README.md CHANGED
@@ -78,7 +78,8 @@ The following snippets shows all available properties you can use for the plugin
78
78
  "xxxx"
79
79
  ]
80
80
  }
81
- ]
81
+ ],
82
+ "validateApplications": false
82
83
  },
83
84
  {
84
85
  "deviceId": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
@@ -120,7 +121,7 @@ Enable debug logging for cyclic calls (e.g. polling).
120
121
 
121
122
  ### registerApplications
122
123
 
123
- 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).
124
+ To use installed application as input sources, a [predefined list of applications](./src/tvApps.ts) will be used.
124
125
 
125
126
  > [!NOTE]
126
127
  > Not implemented for SoundBars.
@@ -222,6 +223,10 @@ The application's name.
222
223
 
223
224
  The application's possible ids. Since some applications have different ids for different versions of TVs you can provide a list here so the plugin will try every id and use the one that's working.
224
225
 
226
+ #### validateApplications
227
+
228
+ Validates the list of applications by trying to open them when starting the plugin. 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). Afterwards the list of working applications will be written to this device list of applications. Note that this flag will be set to off after validation the application list. So check will only run on first start or manual reset.
229
+
225
230
  #### category
226
231
 
227
232
  The icon to be used as a hint to iOS clients about what type of Accessory this represents. Can be used to override default values.
@@ -2,14 +2,66 @@
2
2
  "pluginAlias": "smartthings-tv",
3
3
  "pluginType": "platform",
4
4
  "singular": true,
5
+ "customUi": true,
5
6
  "schema": {
6
7
  "type": "object",
7
8
  "properties": {
9
+ "tokenType": {
10
+ "title": "SmartThings authentication type",
11
+ "type": "string",
12
+ "required": true,
13
+ "description": "The authentication type to be used for SmartThings API.",
14
+ "default": "pat",
15
+ "oneOf": [
16
+ {
17
+ "title": "PAT",
18
+ "enum": [
19
+ "pat"
20
+ ]
21
+ },
22
+ {
23
+ "title": "OAuth",
24
+ "enum": [
25
+ "oauth"
26
+ ]
27
+ }
28
+ ]
29
+ },
8
30
  "token": {
9
- "title": "SmartThings API token",
31
+ "title": "SmartThings personal access token",
32
+ "type": "string",
33
+ "required": true,
34
+ "description": "The SmartThings API token is needed to authenticate the requests sent to the SmartThings API. To generate a PAT open https://account.smartthings.com/tokens and generate a new one (make sure at least devices is selected).",
35
+ "condition": {
36
+ "functionBody": "return model.tokenType === \"pat\";"
37
+ }
38
+ },
39
+ "oauthClientId": {
40
+ "title": "OAuth client id",
41
+ "type": "string",
42
+ "required": true,
43
+ "description": "",
44
+ "condition": {
45
+ "functionBody": "return model.tokenType === \"oauth\";"
46
+ }
47
+ },
48
+ "oauthClientSecret": {
49
+ "title": "OAuth client secret",
50
+ "type": "string",
51
+ "required": true,
52
+ "description": "",
53
+ "condition": {
54
+ "functionBody": "return model.tokenType === \"oauth\";"
55
+ }
56
+ },
57
+ "oauthRefreshToken": {
58
+ "title": "OAuth refresh token",
10
59
  "type": "string",
11
60
  "required": true,
12
- "description": "The SmartThings API token is needed to authenticate the requests sent to the SmartThings API. To generate a token open https://account.smartthings.com/tokens and generate a new one (make sure at least devices is selected)."
61
+ "description": "",
62
+ "condition": {
63
+ "functionBody": "return model.tokenType === \"oauth\";"
64
+ }
13
65
  },
14
66
  "capabilityLogging": {
15
67
  "title": "Capability Logging",
@@ -27,7 +79,7 @@
27
79
  "title": "Register applications",
28
80
  "type": "boolean",
29
81
  "required": false,
30
- "description": "To use installed application as input sources, a predefined list of applications 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)."
82
+ "description": "To use installed application as input sources, a predefined list of applications will be used."
31
83
  },
32
84
  "registerPictureModes": {
33
85
  "title": "Register picture modes",
@@ -155,6 +207,12 @@
155
207
  "required": false,
156
208
  "description": "Overrides the default application mapping list to add custom applications."
157
209
  },
210
+ "validateApplications": {
211
+ "title": "Validate application list",
212
+ "type": "boolean",
213
+ "description": "Validates the list of applications by trying to open them when starting the plugin. 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). Afterwards the list of working applications will be written to this device list of applications. Note that this flag will be set to off after validation the application list. So check will only run on first start or manual reset.",
214
+ "default": true
215
+ },
158
216
  "category": {
159
217
  "title": "Display icon",
160
218
  "type": "integer",
@@ -1,4 +1,5 @@
1
1
  import { CustomCapabilityStatus } from '@smartthings/core-sdk';
2
+ import axios from 'axios';
2
3
  /**
3
4
  * Class implements a base class for SmartThings accessories.
4
5
  */
@@ -44,7 +45,11 @@ export class SmartThingsAccessory {
44
45
  if (error instanceof Error) {
45
46
  errorMessage = error.message;
46
47
  }
47
- this.logError('Error when executing %s of capability %s: %s', command, capability, errorMessage);
48
+ let statusCode = -1;
49
+ if (axios.isAxiosError(error)) {
50
+ statusCode = error.response?.status ?? -1;
51
+ }
52
+ this.logError('Error when executing %s of capability %s: [%s] %s', command, capability, statusCode, errorMessage);
48
53
  throw new this.platform.api.hap.HapStatusError(-70402 /* this.platform.api.hap.HAPStatus.SERVICE_COMMUNICATION_FAILURE */);
49
54
  }
50
55
  }
@@ -69,7 +74,11 @@ export class SmartThingsAccessory {
69
74
  if (error instanceof Error) {
70
75
  errorMessage = error.message;
71
76
  }
72
- this.logError('Error when getting status of %s: %s', capability, errorMessage);
77
+ let statusCode = -1;
78
+ if (axios.isAxiosError(error)) {
79
+ statusCode = error.response?.status ?? -1;
80
+ }
81
+ this.logError('Error when getting status of %s: [%s] %s', capability, statusCode, errorMessage);
73
82
  return null;
74
83
  }
75
84
  }
@@ -1 +1 @@
1
- {"version":3,"file":"smartThingsAccessory.js","sourceRoot":"","sources":["../src/smartThingsAccessory.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"smartThingsAccessory.js","sourceRoot":"","sources":["../src/smartThingsAccessory.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import { API, DynamicPlatformPlugin, Logger, PlatformAccessory, PlatformConfig, Service, Characteristic } from 'homebridge';
2
- import { SmartThingsClient, Device, Component } from '@smartthings/core-sdk';
2
+ import { SmartThingsClient, Device, Component, RefreshTokenStore, AuthData, RefreshData, Authenticator } from '@smartthings/core-sdk';
3
3
  /**
4
4
  * Class implements the configured Device to mac and ip address mappings.
5
5
  */
@@ -16,6 +16,7 @@ declare class DeviceMapping {
16
16
  name: string;
17
17
  ids: [string];
18
18
  }];
19
+ readonly validateApplications: boolean;
19
20
  readonly infoKey: string;
20
21
  readonly category: number;
21
22
  constructor(deviceId: string, nameOverride: string, macAddress: string, ipAddress: string, inputSources: [{
@@ -24,23 +25,45 @@ declare class DeviceMapping {
24
25
  }], applications: [{
25
26
  name: string;
26
27
  ids: [string];
27
- }], infoKey: string, category: number);
28
+ }], validateApplications: boolean, infoKey: string, category: number);
28
29
  }
29
30
  /**
30
31
  * Class implements the plugin platform.
31
32
  */
32
- export declare class SmartThingsPlatform implements DynamicPlatformPlugin {
33
+ export declare class SmartThingsPlatform implements DynamicPlatformPlugin, RefreshTokenStore {
33
34
  readonly log: Logger;
34
35
  readonly config: PlatformConfig;
35
36
  readonly api: API;
36
37
  readonly Service: typeof Service;
37
38
  readonly Characteristic: typeof Characteristic;
39
+ private configPath;
40
+ private authData;
38
41
  readonly accessories: PlatformAccessory[];
39
42
  constructor(log: Logger, config: PlatformConfig, api: API);
43
+ /**
44
+ * @inheritdoc
45
+ */
46
+ getRefreshData(): Promise<RefreshData>;
47
+ /**
48
+ * @inheritdoc
49
+ */
50
+ putAuthData(data: AuthData): Promise<void>;
40
51
  /**
41
52
  * @inheritdoc
42
53
  */
43
54
  configureAccessory(accessory: PlatformAccessory): void;
55
+ /**
56
+ * Reads the platform configuration from the file system.
57
+ *
58
+ * @returns the platform configuration
59
+ */
60
+ getPlatformConfig(): any;
61
+ /**
62
+ * Writes the platform configuration passed in to the file system.
63
+ *
64
+ * @param platformConfig the new platform configuration
65
+ */
66
+ savePlatformConfig(platformConfig: unknown): void;
44
67
  /**
45
68
  * Uses the SmartThings API to discover and register the available devices.
46
69
  *
@@ -50,7 +73,7 @@ export declare class SmartThingsPlatform implements DynamicPlatformPlugin {
50
73
  * @param tvDeviceTypes the array of configured TV device types
51
74
  * @param soundbarDeviceTypes the array of configured SoundBar device types
52
75
  */
53
- discoverDevices(token: string, deviceBlocklist: [string], deviceMappings: [DeviceMapping], tvDeviceTypes: [string], soundbarDeviceTypes: [string]): Promise<void>;
76
+ discoverDevices(authenticator: Authenticator, deviceBlocklist: [string], deviceMappings: [DeviceMapping], tvDeviceTypes: [string], soundbarDeviceTypes: [string]): Promise<void>;
54
77
  /**
55
78
  * Registers a SmartThings Device for Homebridge.
56
79
  *
@@ -1,9 +1,12 @@
1
1
  import { PLATFORM_NAME, PLUGIN_NAME } from './settings.js';
2
2
  import { TvAccessory } from './tvAccessory.js';
3
- import { SmartThingsClient, BearerTokenAuthenticator } from '@smartthings/core-sdk';
3
+ import { SmartThingsClient, RefreshTokenAuthenticator, BearerTokenAuthenticator, } from '@smartthings/core-sdk';
4
4
  import { SwitchAccessory } from './switchAccessory.js';
5
5
  import { SliderAccessory } from './sliderAccessory.js';
6
6
  import { SoundbarAccessory } from './soundbarAccessory.js';
7
+ import path from 'path';
8
+ import fs from 'fs';
9
+ import axios from 'axios';
7
10
  /**
8
11
  * Class implements the configured Device to mac and ip address mappings.
9
12
  */
@@ -14,15 +17,17 @@ class DeviceMapping {
14
17
  ipAddress;
15
18
  inputSources;
16
19
  applications;
20
+ validateApplications;
17
21
  infoKey;
18
22
  category;
19
- constructor(deviceId, nameOverride, macAddress, ipAddress, inputSources, applications, infoKey, category) {
23
+ constructor(deviceId, nameOverride, macAddress, ipAddress, inputSources, applications, validateApplications, infoKey, category) {
20
24
  this.deviceId = deviceId;
21
25
  this.nameOverride = nameOverride;
22
26
  this.macAddress = macAddress;
23
27
  this.ipAddress = ipAddress;
24
28
  this.inputSources = inputSources;
25
29
  this.applications = applications;
30
+ this.validateApplications = validateApplications;
26
31
  this.infoKey = infoKey;
27
32
  this.category = category;
28
33
  }
@@ -36,6 +41,8 @@ export class SmartThingsPlatform {
36
41
  api;
37
42
  Service;
38
43
  Characteristic;
44
+ configPath = process.env.UIX_CONFIG_PATH || path.join('./', 'config.json');
45
+ authData;
39
46
  // this is used to track restored cached accessories
40
47
  accessories = [];
41
48
  constructor(log, config, api) {
@@ -57,9 +64,39 @@ export class SmartThingsPlatform {
57
64
  this.log.warn('Config property deviceBlacklist has been renamed to deviceBlocklist \
58
65
  - adjust your configuration because deviceBlacklist will be removed in future versions');
59
66
  }
60
- void this.discoverDevices(config.token, deviceBlocklist ?? [], config.deviceMappings ?? [], config.tvDeviceTypes ?? ['oic.d.tv', 'x.com.st.d.monitor'], config.soundbarDeviceTypes ?? ['oic.d.networkaudio']);
67
+ let authenticator = undefined;
68
+ switch (this.config.tokenType) {
69
+ case 'oauth':
70
+ authenticator = new RefreshTokenAuthenticator(config.oauthRefreshToken, this);
71
+ break;
72
+ case 'pat':
73
+ default:
74
+ authenticator = new BearerTokenAuthenticator(config.token);
75
+ }
76
+ this.discoverDevices(authenticator, deviceBlocklist ?? [], config.deviceMappings ?? [], config.tvDeviceTypes ?? ['oic.d.tv', 'x.com.st.d.monitor'], config.soundbarDeviceTypes ?? ['oic.d.networkaudio']);
61
77
  });
62
78
  }
79
+ /**
80
+ * @inheritdoc
81
+ */
82
+ async getRefreshData() {
83
+ const config = this.getPlatformConfig();
84
+ return {
85
+ refreshToken: this.authData?.refreshToken ?? config.oauthRefreshToken,
86
+ clientId: config.oauthClientId,
87
+ clientSecret: config.oauthClientSecret,
88
+ };
89
+ }
90
+ /**
91
+ * @inheritdoc
92
+ */
93
+ async putAuthData(data) {
94
+ this.log.debug('Updating auth data: %s', JSON.stringify(data, null, 4));
95
+ this.authData = data;
96
+ const config = this.getPlatformConfig();
97
+ config.oauthRefreshToken = data.refreshToken;
98
+ this.savePlatformConfig(config);
99
+ }
63
100
  /**
64
101
  * @inheritdoc
65
102
  */
@@ -68,6 +105,37 @@ export class SmartThingsPlatform {
68
105
  // add the restored accessory to the accessories cache so we can track if it has already been registered
69
106
  this.accessories.push(accessory);
70
107
  }
108
+ /**
109
+ * Reads the platform configuration from the file system.
110
+ *
111
+ * @returns the platform configuration
112
+ */
113
+ getPlatformConfig() {
114
+ try {
115
+ const readConfig = JSON.parse(fs.readFileSync(this.configPath, 'utf8'));
116
+ return readConfig.platforms.find((p) => p.platform === this.config.platform);
117
+ }
118
+ catch (error) {
119
+ console.error('Error when reading configuration:', error);
120
+ return null;
121
+ }
122
+ }
123
+ /**
124
+ * Writes the platform configuration passed in to the file system.
125
+ *
126
+ * @param platformConfig the new platform configuration
127
+ */
128
+ savePlatformConfig(platformConfig) {
129
+ try {
130
+ const newConfig = JSON.parse(fs.readFileSync(this.configPath, 'utf8'));
131
+ const platform = newConfig.platforms.find((p) => p.platform === this.config.platform);
132
+ newConfig.platforms[newConfig.platforms.indexOf(platform)] = platformConfig;
133
+ fs.writeFileSync(this.configPath, JSON.stringify(newConfig, null, 4), 'utf8');
134
+ }
135
+ catch (error) {
136
+ console.error('Error when writing configuration:', error);
137
+ }
138
+ }
71
139
  /**
72
140
  * Uses the SmartThings API to discover and register the available devices.
73
141
  *
@@ -77,8 +145,8 @@ export class SmartThingsPlatform {
77
145
  * @param tvDeviceTypes the array of configured TV device types
78
146
  * @param soundbarDeviceTypes the array of configured SoundBar device types
79
147
  */
80
- async discoverDevices(token, deviceBlocklist, deviceMappings, tvDeviceTypes, soundbarDeviceTypes) {
81
- const client = new SmartThingsClient(new BearerTokenAuthenticator(token));
148
+ async discoverDevices(authenticator, deviceBlocklist, deviceMappings, tvDeviceTypes, soundbarDeviceTypes) {
149
+ const client = new SmartThingsClient(authenticator);
82
150
  let externalAccessories = [];
83
151
  try {
84
152
  const devices = await client.devices.list();
@@ -97,7 +165,11 @@ export class SmartThingsPlatform {
97
165
  if (error instanceof Error) {
98
166
  errorMessage = error.message;
99
167
  }
100
- this.log.error('Error when getting devices: %s', errorMessage);
168
+ let statusCode = -1;
169
+ if (axios.isAxiosError(error)) {
170
+ statusCode = error.response?.status ?? -1;
171
+ }
172
+ this.log.error('Error when getting devices: [%s] %s', statusCode, errorMessage);
101
173
  }
102
174
  this.log.debug('Publishing %s external accessories', externalAccessories.length);
103
175
  this.api.publishExternalAccessories(PLUGIN_NAME, externalAccessories);
@@ -154,7 +226,7 @@ export class SmartThingsPlatform {
154
226
  const accessory = new this.api.platformAccessory(displayName, device.deviceId);
155
227
  accessory.context.device = device;
156
228
  accessory.category = deviceMapping?.category ?? 31 /* this.api.hap.Categories.TELEVISION */;
157
- const tv = new TvAccessory(displayName, device, component, client, this.log, this, accessory, this.config.capabilityLogging ?? false, this.config.registerApplications ?? false, this.config.pollInterval ?? undefined, this.config.cyclicCallsLogging ?? false, deviceMapping?.macAddress, deviceMapping?.ipAddress, deviceMapping?.inputSources, deviceMapping?.applications, deviceMapping?.infoKey);
229
+ const tv = new TvAccessory(displayName, device, component, client, this.log, this, accessory, this.config.capabilityLogging ?? false, this.config.registerApplications ?? false, deviceMapping?.validateApplications ?? true, this.config.pollInterval ?? undefined, this.config.cyclicCallsLogging ?? false, deviceMapping?.macAddress, deviceMapping?.ipAddress, deviceMapping?.inputSources, deviceMapping?.applications, deviceMapping?.infoKey);
158
230
  await tv.registerCapabilities();
159
231
  if (this.config.registerPictureModes) {
160
232
  const modes = await tv.getPictureModes();
@@ -1 +1 @@
1
- {"version":3,"file":"smartThingsPlatform.js","sourceRoot":"","sources":["../src/smartThingsPlatform.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"smartThingsPlatform.js","sourceRoot":"","sources":["../src/smartThingsPlatform.ts"],"names":[],"mappings":"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"}
@@ -8,6 +8,7 @@ import { SmartThingsAccessory } from './smartThingsAccessory.js';
8
8
  export declare class TvAccessory extends SmartThingsAccessory {
9
9
  private readonly logCapabilities;
10
10
  private readonly registerApplications;
11
+ private readonly validateApplications;
11
12
  private readonly pollingInterval;
12
13
  private readonly cyclicCallsLogging;
13
14
  private readonly macAddress;
@@ -21,7 +22,7 @@ export declare class TvAccessory extends SmartThingsAccessory {
21
22
  private capabilities;
22
23
  private activeIdentifierChangeTime;
23
24
  private activeIdentifierChangeValue;
24
- constructor(name: string, device: Device, component: Component, client: SmartThingsClient, log: Logger, platform: SmartThingsPlatform, accessory: PlatformAccessory, logCapabilities: boolean, registerApplications: boolean, pollingInterval: number | undefined, cyclicCallsLogging: boolean, macAddress?: string | undefined, ipAddress?: string | undefined, inputSources?: {
25
+ constructor(name: string, device: Device, component: Component, client: SmartThingsClient, log: Logger, platform: SmartThingsPlatform, accessory: PlatformAccessory, logCapabilities: boolean, registerApplications: boolean, validateApplications: boolean, pollingInterval: number | undefined, cyclicCallsLogging: boolean, macAddress?: string | undefined, ipAddress?: string | undefined, inputSources?: {
25
26
  name: string;
26
27
  id: string;
27
28
  }[] | undefined, applications?: {
@@ -149,13 +150,17 @@ export declare class TvAccessory extends SmartThingsAccessory {
149
150
  */
150
151
  private registerAvailableMediaInputSources;
151
152
  /**
152
- * Registers all installed applications.
153
+ * Registers all applications passed in.
154
+ */
155
+ private registerLaunchApplications;
156
+ /**
157
+ * Returns all installed applications.
153
158
  *
154
- * Tests a list of known application ids by trying to open them. If opening succeeded the application is registered
155
- * as an input source. If it fails the application will not be added. If multiple ids for an application are available
159
+ * Tests a list of known application ids by trying to open them. If opening succeeded the application will be added
160
+ * to returned list. If it fails the application will not be added. If multiple ids for an application are available
156
161
  * the first successfully tested id will be used.
157
162
  */
158
- private registerAvailableLaunchApplications;
163
+ private getAvailableLaunchApplications;
159
164
  /**
160
165
  * Registers a Homebridge input source.
161
166
  *
@@ -2,12 +2,14 @@ import { wake } from 'wol';
2
2
  import ping from 'ping';
3
3
  import { SmartThingsAccessory } from './smartThingsAccessory.js';
4
4
  import { Apps } from './tvApps.js';
5
+ import axios from 'axios';
5
6
  /**
6
7
  * Class implements a SmartThings TV accessory.
7
8
  */
8
9
  export class TvAccessory extends SmartThingsAccessory {
9
10
  logCapabilities;
10
11
  registerApplications;
12
+ validateApplications;
11
13
  pollingInterval;
12
14
  cyclicCallsLogging;
13
15
  macAddress;
@@ -21,10 +23,11 @@ export class TvAccessory extends SmartThingsAccessory {
21
23
  capabilities = [];
22
24
  activeIdentifierChangeTime = 0;
23
25
  activeIdentifierChangeValue = 0;
24
- constructor(name, device, component, client, log, platform, accessory, logCapabilities, registerApplications, pollingInterval, cyclicCallsLogging, macAddress = undefined, ipAddress = undefined, inputSources = undefined, applications = undefined, informationKey = undefined) {
26
+ constructor(name, device, component, client, log, platform, accessory, logCapabilities, registerApplications, validateApplications, pollingInterval, cyclicCallsLogging, macAddress = undefined, ipAddress = undefined, inputSources = undefined, applications = undefined, informationKey = undefined) {
25
27
  super(device, component, client, platform, accessory, log);
26
28
  this.logCapabilities = logCapabilities;
27
29
  this.registerApplications = registerApplications;
30
+ this.validateApplications = validateApplications;
28
31
  this.pollingInterval = pollingInterval;
29
32
  this.cyclicCallsLogging = cyclicCallsLogging;
30
33
  this.macAddress = macAddress;
@@ -56,12 +59,21 @@ export class TvAccessory extends SmartThingsAccessory {
56
59
  if (error instanceof Error) {
57
60
  errorMessage = error.message;
58
61
  }
59
- this.logError('Registering capability \'%s\' failed: %s', reference.id, errorMessage);
62
+ let statusCode = -1;
63
+ if (axios.isAxiosError(error)) {
64
+ statusCode = error.response?.status ?? -1;
65
+ }
66
+ this.logError('Registering capability \'%s\' failed: [%s] %s', reference.id, statusCode, errorMessage);
60
67
  }
61
68
  }
62
- if (this.registerApplications && this.inputSourceServices.length > 0) {
69
+ if (this.registerApplications && this.validateApplications && this.inputSourceServices.length > 0) {
63
70
  this.logInfo('Resetting active identifier to %s because application registration needed to open all applications', this.inputSourceServices[0].getCharacteristic(this.platform.Characteristic.ConfiguredName).value);
64
- await this.setActiveIdentifier(0);
71
+ try {
72
+ await this.setActiveIdentifier(0);
73
+ }
74
+ catch (error) {
75
+ this.logWarn('Active identifier could not be reset - probably because device is in invalid state');
76
+ }
65
77
  }
66
78
  }
67
79
  /**
@@ -174,7 +186,18 @@ export class TvAccessory extends SmartThingsAccessory {
174
186
  case 'custom.launchapp':
175
187
  if (this.registerApplications) {
176
188
  this.logCapabilityRegistration(capability);
177
- await this.registerAvailableLaunchApplications();
189
+ let appsToRegister = this.applications ?? Apps;
190
+ if (this.validateApplications) {
191
+ appsToRegister = await this.getAvailableLaunchApplications();
192
+ const config = this.platform.getPlatformConfig();
193
+ const deviceMapping = config.deviceMappings.find((d) => d.deviceId === this.device.deviceId);
194
+ this.logInfo('Updating list of applications in configuration with valid values: %s', JSON.stringify(appsToRegister, null, 4));
195
+ deviceMapping.applications = appsToRegister;
196
+ this.logInfo('De-activating validation of application list in configuration');
197
+ deviceMapping.validateApplications = false;
198
+ this.platform.savePlatformConfig(config);
199
+ }
200
+ await this.registerLaunchApplications(appsToRegister);
178
201
  if (this.inputSourceServices.length > 0) {
179
202
  this.service.getCharacteristic(this.platform.Characteristic.ActiveIdentifier)
180
203
  .onSet(this.setActiveIdentifier.bind(this))
@@ -439,18 +462,33 @@ ping command fails mostly because of permission issues - falling back to SmartTh
439
462
  }
440
463
  }
441
464
  /**
442
- * Registers all installed applications.
465
+ * Registers all applications passed in.
466
+ */
467
+ async registerLaunchApplications(apps) {
468
+ for (const app of apps) {
469
+ for (const appId of app.ids) {
470
+ let name = app.name;
471
+ if (app.ids.length > 1) {
472
+ name += ' (' + appId + ')';
473
+ }
474
+ this.registerInputSource(appId, name, this.platform.Characteristic.InputSourceType.APPLICATION);
475
+ }
476
+ }
477
+ }
478
+ /**
479
+ * Returns all installed applications.
443
480
  *
444
- * Tests a list of known application ids by trying to open them. If opening succeeded the application is registered
445
- * as an input source. If it fails the application will not be added. If multiple ids for an application are available
481
+ * Tests a list of known application ids by trying to open them. If opening succeeded the application will be added
482
+ * to returned list. If it fails the application will not be added. If multiple ids for an application are available
446
483
  * the first successfully tested id will be used.
447
484
  */
448
- async registerAvailableLaunchApplications() {
485
+ async getAvailableLaunchApplications() {
449
486
  if (!await this.getActive(false)) {
450
487
  this.logWarn('Registering applications will probably not work because TV is not turned on');
451
488
  }
489
+ const applications = [];
452
490
  for (const app of this.applications ?? Apps) {
453
- this.logDebug('Try to register application %s with ids: %s', app.name, app.ids.join(', '));
491
+ this.logDebug('Try to launch application %s with ids: %s', app.name, app.ids.join(', '));
454
492
  for (const appId of app.ids) {
455
493
  try {
456
494
  await this.client.devices.executeCommand(this.device.deviceId, {
@@ -458,7 +496,7 @@ ping command fails mostly because of permission issues - falling back to SmartTh
458
496
  command: 'launchApp',
459
497
  arguments: [appId],
460
498
  });
461
- this.registerInputSource(appId, app.name, this.platform.Characteristic.InputSourceType.APPLICATION);
499
+ applications.push({ ids: [appId], name: app.name });
462
500
  break;
463
501
  }
464
502
  catch (exc) {
@@ -466,6 +504,7 @@ ping command fails mostly because of permission issues - falling back to SmartTh
466
504
  }
467
505
  }
468
506
  }
507
+ return applications;
469
508
  }
470
509
  /**
471
510
  * Registers a Homebridge input source.
@@ -1 +1 @@
1
- {"version":3,"file":"tvAccessory.js","sourceRoot":"","sources":["../src/tvAccessory.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tvAccessory.js","sourceRoot":"","sources":["../src/tvAccessory.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,294 @@
1
+ <div class="container">
2
+ <div id="pat-warning" class="alert alert-warning" role="alert" style="display:none">
3
+ You're using personal access tokens (PAT) to access the SmartThings API. As Samsung made some
4
+ <a href="https://community.smartthings.com/t/changes-to-personal-access-tokens-pat/292019" target="_blank">major
5
+ changes</a> to usage of PATs at then end of 2024 the usage of PATs is not recommended anymore. Please
6
+ consider switching to OAuth for authentication.
7
+ </div>
8
+
9
+ <div id="oauth-start" class="alert alert-info" role="info" style="display:none">
10
+ To simplify setup of OAuth please use the following button to start a wizard that guides you through the
11
+ setup. This wizard can also be used if token has unexpectedly expired.<br>
12
+ <button class="btn btn-primary" onclick="showWizard()">Open OAuth wizard</button>
13
+ </div>
14
+
15
+ <div id="wizard" style="display:none">
16
+ <h2 class="mb-4">OAuth Setup Wizard</h2>
17
+ <div class="nav nav-pills mb-3" id="wizardNav">
18
+ <a class="nav-link active" data-target="#step1">SmartThings App</a>
19
+ <a class="nav-link" data-target="#step2">Redirection</a>
20
+ <a class="nav-link" data-target="#step3">Authorization code</a>
21
+ <a class="nav-link" data-target="#step4">Authorization token</a>
22
+ </div>
23
+
24
+ <div class="tab-content">
25
+ <div class="tab-pane fade show active" id="step1">
26
+ <h4>SmartThings App</h4>
27
+ <p>To activate OAuth integration you have to create a SmartThings application. To do so use the
28
+ <a href="https://github.com/SmartThingsCommunity/smartthings-cli">smartthings-cli</a>.
29
+ To install the CLI use the installation steps from the
30
+ <a href="https://github.com/SmartThingsCommunity/smartthings-cli">documentation</a>.
31
+ </p>
32
+ <p>If installation succeeded use the
33
+ <a
34
+ href="https://github.com/SmartThingsCommunity/smartthings-cli?tab=readme-ov-file#smartthings-appscreate">apps:create
35
+ command</a>
36
+ to create a new application. While creating the application make sure you use the matching redirect
37
+ URL and scopes defined below.
38
+ </p>
39
+
40
+ <form id="step1Form">
41
+ <div class="form-group row">
42
+ <label for="oauth-redirect-url" class="col-sm-3 col-form-label font-weight-bold">OAuth redirect
43
+ URL</label>
44
+ <div class="col-sm-9">
45
+ <input type="oauth-redirect-url" class="form-control" id="oauth-redirect-url"
46
+ value="https://httpbin.org/get" readonly onfocus="this.removeAttribute('readonly');"
47
+ required>
48
+ <small class="form-text text-warning">
49
+ ⚠ You can customize the redirect URL if you want but it is recommended to keep the
50
+ default so you can stick to instructions in this wizard.
51
+ </small>
52
+ </div>
53
+ </div>
54
+
55
+ <div class="form-group row">
56
+ <label for="oauth-scopes" class="col-sm-3 col-form-label font-weight-bold">OAuth scopes</label>
57
+ <div class="col-sm-9">
58
+ <input type="oauth-scopes" class="form-control" id="oauth-scopes"
59
+ value="x:devices:* w:devices:* r:devices:*" readonly
60
+ onfocus="this.removeAttribute('readonly');" required>
61
+ <small class="form-text text-warning">
62
+ ⚠ You can customize the scopes if you want but it is recommended to keep the default
63
+ so you can stick to instructions in this wizard.
64
+ </small>
65
+ </div>
66
+ </div>
67
+
68
+ <div class="form-group row">
69
+ <label for="oauth-client-id" class="col-sm-3 col-form-label font-weight-bold">OAuth client
70
+ id</label>
71
+ <div class="col-sm-9">
72
+ <input type="oauth-client-id" class="form-control" id="oauth-client-id"
73
+ placeholder="Paste the OAuth client id" required>
74
+ </div>
75
+ </div>
76
+
77
+ <div class="form-group row">
78
+ <label for="oauth-client-secret" class="col-sm-3 col-form-label font-weight-bold">OAuth client
79
+ secret</label>
80
+ <div class="col-sm-9">
81
+ <input type="oauth-client-secret" class="form-control" id="oauth-client-secret"
82
+ placeholder="Paste the OAuth client secret" required>
83
+ </div>
84
+ </div>
85
+ </form>
86
+
87
+ <button class="btn btn-primary next" onclick="validateStep1()">Next</button>
88
+ </div>
89
+ <div class="tab-pane fade" id="step2">
90
+ <h4>Redirection</h4>
91
+ <p>You will now be redirected to login at SmartThings home page where you have to select desired
92
+ location and confirm access for selected scopes.</p>
93
+ <p>Afterwards you will be redirected to httpbin. This page will show the OAuth response that is needed
94
+ for continuing. To do so paste the <b>args.code</b> value in next step of the wizard.</p>
95
+
96
+ <button class="btn btn-secondary prev" onclick="prevStep()">Back</button>
97
+ <button class="btn btn-primary next" onclick="validateStep2()">Next</button>
98
+ </div>
99
+ <div class="tab-pane fade" id="step3">
100
+ <h4>Authorization code</h4>
101
+ <p>Do now paste <b>args.code</b> value shown at httpbin below.</p>
102
+
103
+ <form id="step3Form">
104
+ <div class="form-group row">
105
+ <label for="oauth-code" class="col-sm-3 col-form-label font-weight-bold">Authorization
106
+ code</label>
107
+ <div class="col-sm-9">
108
+ <input type="oauth-code" class="form-control" id="oauth-code"
109
+ placeholder="Paste the Authorization code" required>
110
+ </div>
111
+ </div>
112
+ </form>
113
+
114
+ <button class="btn btn-secondary prev" onclick="prevStep()">Back</button>
115
+ <button class="btn btn-primary next" onclick="validateStep3()">Next</button>
116
+ </div>
117
+ <div class="tab-pane fade" id="step4">
118
+ <h4>Authorization token</h4>
119
+
120
+ <p>Your access and refresh token will now be requested and set automatically.</p>
121
+ <p>When tokens have been filled in OAuth setup has been successful and you will be redirected to main
122
+ config page.</p>
123
+
124
+ <form id="step4Form">
125
+ <div class="form-group row">
126
+ <label for="oauth-access-token" class="col-sm-3 col-form-label font-weight-bold">OAuth access
127
+ token</label>
128
+ <div class="col-sm-9">
129
+ <input type="oauth-access-token" class="form-control" id="oauth-access-token"
130
+ placeholder="OAuth access token" required readonly>
131
+ </div>
132
+ </div>
133
+
134
+ <div class="form-group row">
135
+ <label for="oauth-refresh-token" class="col-sm-3 col-form-label font-weight-bold">OAuth refresh
136
+ token</label>
137
+ <div class="col-sm-9">
138
+ <input type="oauth-refresh-token" class="form-control" id="oauth-refresh-token"
139
+ placeholder="OAuth refresh token" required readonly>
140
+ </div>
141
+ </div>
142
+ </form>
143
+
144
+ <button class="btn btn-secondary prev" onclick="prevStep()">Back</button>
145
+ <button class="btn btn-success" onclick="validateStep4()">Submit</button>
146
+ </div>
147
+ </div>
148
+ </div>
149
+ </div>
150
+
151
+ <script>
152
+ function showWizard() {
153
+ homebridge.disableSaveButton();
154
+ homebridge.hideSchemaForm();
155
+ document.getElementById('wizard').style.display = "block";
156
+ document.getElementById('oauth-start').style.display = "none";
157
+ document.getElementById('pat-warning').style.display = "none";
158
+ }
159
+
160
+ function hideWizard() {
161
+ homebridge.enableSaveButton();
162
+ homebridge.showSchemaForm();
163
+ document.getElementById('wizard').style.display = "none";
164
+ document.getElementById('oauth-start').style.display = "block";
165
+ document.getElementById('pat-warning').style.display = "none";
166
+ }
167
+
168
+ async function updateUi() {
169
+ const pluginConfig = await homebridge.getPluginConfig();
170
+ switch (pluginConfig[0].tokenType) {
171
+ case "oauth":
172
+ homebridge.showSchemaForm();
173
+ document.getElementById('wizard').style.display = "none";
174
+ document.getElementById('oauth-start').style.display = "block";
175
+ document.getElementById('pat-warning').style.display = "none";
176
+ break;
177
+
178
+ case "pat":
179
+ default:
180
+ homebridge.showSchemaForm();
181
+ document.getElementById('wizard').style.display = "none";
182
+ document.getElementById('oauth-start').style.display = "none";
183
+ document.getElementById('pat-warning').style.display =
184
+ pluginConfig[0].disablePatWarning === true ? "none" : "block";
185
+ break;
186
+ }
187
+
188
+ document.getElementById('oauth-client-id').value = pluginConfig[0].oauthClientId;
189
+ document.getElementById('oauth-client-secret').value = pluginConfig[0].oauthClientSecret;
190
+ }
191
+
192
+ function validateStep(id) {
193
+ var form = document.getElementById(id);
194
+ if (form.checkValidity() === false) {
195
+ form.classList.add('was-validated');
196
+ return false;
197
+ } else {
198
+ nextStep();
199
+ return true;
200
+ }
201
+ }
202
+
203
+ async function validateStep1() {
204
+ if (validateStep('step1Form')) {
205
+ const pluginConfig = await homebridge.getPluginConfig();
206
+ pluginConfig[0].oauthClientId = document.getElementById('oauth-client-id').value;
207
+ pluginConfig[0].oauthClientSecret = document.getElementById('oauth-client-secret').value;
208
+
209
+ await homebridge.updatePluginConfig(pluginConfig);
210
+ }
211
+ }
212
+
213
+ async function validateStep2() {
214
+ nextStep();
215
+ requestAuthCode();
216
+ }
217
+
218
+ async function validateStep3() {
219
+ if (validateStep('step3Form')) {
220
+ homebridge.showSpinner();
221
+
222
+ try {
223
+ await requestAuthToken();
224
+ } catch {
225
+ homebridge.toast.error("Could not request authorization token");
226
+ } finally {
227
+ homebridge.hideSpinner();
228
+ }
229
+ }
230
+ }
231
+
232
+ async function validateStep4() {
233
+ if (validateStep('step4Form')) {
234
+ const pluginConfig = await homebridge.getPluginConfig();
235
+ pluginConfig[0].oauthRefreshToken = document.getElementById('oauth-refresh-token').value;
236
+
237
+ await homebridge.updatePluginConfig(pluginConfig);
238
+ await homebridge.savePluginConfig();
239
+
240
+ homebridge.toast.success("Restart Homebridge to apply the changes.", "OAuth Config Saved");
241
+
242
+ hideWizard();
243
+ updateUi();
244
+ }
245
+ }
246
+
247
+ function nextStep() {
248
+ let activeTab = document.querySelector('.nav-pills .active');
249
+ let nextTab = activeTab.nextElementSibling;
250
+ if (nextTab) changeTab(nextTab);
251
+ }
252
+
253
+ function prevStep() {
254
+ let activeTab = document.querySelector('.nav-pills .active');
255
+ let prevTab = activeTab.previousElementSibling;
256
+ if (prevTab) changeTab(prevTab);
257
+ }
258
+
259
+ function changeTab(targetTab) {
260
+ document.querySelector('.nav-pills .active').classList.remove('active');
261
+ document.querySelector('.tab-pane.show').classList.remove('show', 'active');
262
+
263
+ targetTab.classList.add('active');
264
+ document.querySelector(targetTab.getAttribute('data-target')).classList.add('show', 'active');
265
+ }
266
+
267
+ async function requestAuthCode() {
268
+ const authUrl = await homebridge.request('/authCode', {
269
+ clientId: document.getElementById('oauth-client-id').value,
270
+ clientSecret: document.getElementById('oauth-client-secret').value,
271
+ redirectUrl: document.getElementById('oauth-redirect-url').value,
272
+ scopes: document.getElementById('oauth-scopes').value
273
+ });
274
+
275
+ window.open(authUrl, "_blank");
276
+ }
277
+
278
+ async function requestAuthToken() {
279
+ const authToken = await homebridge.request('/authToken', {
280
+ code: document.getElementById('oauth-code').value,
281
+ redirectUrl: document.getElementById('oauth-redirect-url').value,
282
+ scopes: document.getElementById('oauth-scopes').value
283
+ });
284
+
285
+ document.getElementById('oauth-access-token').value = authToken.access_token;
286
+ document.getElementById('oauth-refresh-token').value = authToken.refresh_token;
287
+ }
288
+
289
+ updateUi();
290
+
291
+ window.homebridge.addEventListener('configChanged', (event) => {
292
+ updateUi();
293
+ });
294
+ </script>
@@ -0,0 +1,51 @@
1
+ import { HomebridgePluginUiServer, RequestError } from '@homebridge/plugin-ui-utils';
2
+ import { AuthorizationCode } from 'simple-oauth2';
3
+
4
+ class UiServer extends HomebridgePluginUiServer {
5
+ constructor () {
6
+ super();
7
+
8
+ this.onRequest('/authCode', this.authCode.bind(this));
9
+ this.onRequest('/authToken', this.authToken.bind(this));
10
+
11
+ this.client = undefined;
12
+
13
+ this.ready();
14
+ }
15
+
16
+ async authCode(config){
17
+ const params = {
18
+ client: {
19
+ id: config.clientId,
20
+ secret: config.clientSecret,
21
+ },
22
+ auth: {
23
+ tokenHost: 'https://api.smartthings.com',
24
+ tokenPath: '/oauth/token',
25
+ authorizePath: '/oauth/authorize',
26
+ },
27
+ };
28
+
29
+ this.client = new AuthorizationCode(params);
30
+ return this.client.authorizeURL({
31
+ redirect_uri: config.redirectUrl,
32
+ scope: config.scopes,
33
+ });
34
+ }
35
+
36
+ async authToken(config){
37
+ try {
38
+ return await this.client.getToken({
39
+ code: config.code,
40
+ redirect_uri: config.redirectUrl,
41
+ scope: config.scopes,
42
+ });
43
+ } catch (err) {
44
+ throw new RequestError(err.message);
45
+ }
46
+ }
47
+ }
48
+
49
+ (() => {
50
+ return new UiServer;
51
+ })();
package/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "displayName": "Homebridge SmartThings TV",
3
3
  "name": "@o-lukas/homebridge-smartthings-tv",
4
4
  "type": "module",
5
- "version": "2.4.0",
5
+ "version": "2.6.0-next.1",
6
6
  "description": "This is a plugin for Homebridge. It offers some basic functions to control Samsung TVs using the SmartThings API.",
7
7
  "author": "o-lukas",
8
8
  "license": "MIT",
@@ -38,24 +38,26 @@
38
38
  "semantic-release": "semantic-release"
39
39
  },
40
40
  "dependencies": {
41
+ "@homebridge/plugin-ui-utils": "^2.0.1",
41
42
  "@smartthings/core-sdk": "^8.3.2",
42
43
  "ping": "^0.4.4",
44
+ "simple-oauth2": "^5.1.0",
43
45
  "wol": "^1.0.7"
44
46
  },
45
47
  "devDependencies": {
46
- "@types/node": "^22.7.7",
48
+ "@types/node": "^22.10.5",
47
49
  "@types/ping": "^0.4.4",
48
50
  "@types/wol": "^1.0.4",
49
- "@typescript-eslint/eslint-plugin": "^8.10.0",
50
- "@typescript-eslint/parser": "^8.10.0",
51
- "eslint": "^9.13.0",
52
- "homebridge": "^1.8.4",
53
- "nodemon": "^3.1.7",
51
+ "@typescript-eslint/eslint-plugin": "^8.19.1",
52
+ "@typescript-eslint/parser": "^8.19.1",
53
+ "eslint": "^9.18.0",
54
+ "homebridge": "^1.8.5",
55
+ "nodemon": "^3.1.9",
54
56
  "rimraf": "^6.0.1",
55
- "semantic-release": "^24.1.3",
57
+ "semantic-release": "^24.2.1",
56
58
  "ts-node": "^10.9.2",
57
- "typescript": "^5.6.3",
58
- "typescript-eslint": "^8.10.0"
59
+ "typescript": "^5.7.3",
60
+ "typescript-eslint": "^8.19.1"
59
61
  },
60
62
  "overrides": {
61
63
  "@smartthings/core-sdk": {