homebridge-smartthings-oauth 1.0.14 → 1.0.16

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 CHANGED
@@ -1,6 +1,77 @@
1
1
  # Changelog
2
2
  All notable changes to this project will be documented in this file.
3
3
 
4
+ ## [1.0.16] - TelevisionSpeaker Control Improvements
5
+ ### Fixed
6
+ - **🔊 TelevisionSpeaker Service**: Fixed speaker control issues that prevented audio controls from working in HomeKit
7
+ - Properly configured TelevisionSpeaker service as linked service to Television
8
+ - Added Speaker Active characteristic that responds to TV power and mute states
9
+ - Fixed volume control bounds and properties (0-100 range with proper step increments)
10
+ - Enhanced VolumeControlType detection (ABSOLUTE vs RELATIVE based on Samsung TV capabilities)
11
+ - **🎛️ Service Architecture**: Improved HomeKit Television service implementation
12
+ - Set Television service as primary service using `setPrimaryService()`
13
+ - Corrected service linking hierarchy between Television, TelevisionSpeaker, and InputSource services
14
+ - Enhanced event processing to update both TV and speaker characteristics simultaneously
15
+
16
+ ### Changed
17
+ - **🔇 Speaker State Management**: Speaker active/inactive state now properly reflects TV power and mute status
18
+ - **📱 HomeKit Integration**: Improved native TV interface experience with proper audio controls
19
+ - **🎚️ Volume Control**: Enhanced volume slider responsiveness and real-time updates
20
+
21
+ ### Technical Details
22
+ - Added Speaker Active characteristic with proper state management
23
+ - Implemented dynamic VolumeControlType configuration based on device capabilities
24
+ - Enhanced service linking architecture following HomeKit Television service specifications
25
+ - Improved event processing for synchronized TV and speaker state updates
26
+
27
+ ## [1.0.15] - Television Service Support & IgnoreDevices Bug Fixes
28
+ ### Added
29
+ - **🎬 Television Service**: Samsung TVs now appear as proper Television accessories in HomeKit instead of simple switches
30
+ - **📺 Input Source Control**: Full support for HDMI inputs, TV tuner, and custom input names from SmartThings
31
+ - **🔊 Audio Controls**: Complete volume control, mute/unmute, and volume up/down buttons via TelevisionSpeaker service
32
+ - **🎨 Picture Mode Support**: Control Samsung picture modes (Standard, Dynamic, Movie, etc.) from HomeKit
33
+ - **🎮 Remote Control**: Support for media playback controls (rewind, fast forward, channel up/down)
34
+ - **🔇 TelevisionSpeaker Integration**: Proper speaker service with Active characteristic and volume bounds (0-100)
35
+ - **⚙️ Configuration Options**:
36
+ - `enableTelevisionService` (default: true) - Enable/disable Television service for TV devices
37
+ - `removeLegacySwitchForTV` (default: false) - Option to remove legacy switch service for TVs
38
+ - `PollTelevisionsSeconds` (default: 15) - TV-specific polling interval
39
+
40
+ ### Fixed
41
+ - **🔧 IgnoreDevices Functionality**: Fixed multiple issues that prevented the `IgnoreDevices` configuration from working properly
42
+ - Fixed Unicode character handling for device names with smart quotes (`'`) and special characters
43
+ - Added proper input validation to ensure `IgnoreDevices` is configured as an array of strings
44
+ - Fixed whitespace trimming in device name comparisons
45
+ - Added comprehensive debug logging to help troubleshoot ignore list issues
46
+ - **📖 Configuration Documentation**: Enhanced `config.schema.json` with better descriptions and examples for `IgnoreDevices`
47
+
48
+ ### Changed
49
+ - **🔍 Smart TV Detection**: Automatic detection of Samsung TVs based on device capabilities
50
+ - **🏠 HomeKit Category**: TVs now appear with proper Television icon and controls in Home app
51
+ - **📊 Capability Mapping**: Enhanced capability detection to include TV-specific Samsung capabilities
52
+ - **🐛 Device Name Normalization**: Device names and ignore list entries are now properly normalized for consistent matching
53
+ - **⚠️ Error Handling**: Added warning messages for invalid `IgnoreDevices` configuration formats
54
+
55
+ ### Technical Details
56
+ - Created `TelevisionService` class extending `BaseService`
57
+ - TV detection based on `samsungvd.deviceCategory`, `samsungvd.mediaInputSource`, audio capabilities, and TV channels
58
+ - Proper HomeKit Television service implementation with primary service designation
59
+ - TelevisionSpeaker service with both absolute and relative volume control support
60
+ - Speaker Active characteristic properly linked to TV power and mute states
61
+ - Volume characteristics with proper bounds (0-100) and step increments
62
+ - Maintains backward compatibility - existing Switch services continue working
63
+ - Stable UUIDs prevent service duplication across restarts
64
+ - Graceful fallback for missing TV capabilities
65
+ - Enhanced character normalization using Unicode regex patterns (`\u2018`, `\u2019`, `\u201C`, `\u201D`)
66
+ - Added debug logs showing device name comparisons: `"normalized_device_name" vs "normalized_ignore_name"`
67
+ - Improved error messages guide users to correct configuration format
68
+ - Case-insensitive matching with automatic whitespace trimming
69
+
70
+ ### Migration Notes
71
+ - **Non-breaking**: Existing TV devices will automatically upgrade to Television service on next restart
72
+ - **Legacy Support**: Original switch functionality preserved by default
73
+ - **No User Action Required**: TV detection and upgrade happens automatically
74
+
4
75
  ## [1.0.9] - Homebridge v2.0 Compatibility
5
76
  ### Added
6
77
  - **Homebridge v2.0 Support**: Added support for Homebridge v2.0.0-beta.0 and above
package/README.md CHANGED
@@ -1,10 +1,14 @@
1
1
 
2
2
  <p align="center">
3
3
 
4
- <img src="https://raw.githubusercontent.com/homebridge/branding/latest/logos/homebridge-color-round-stylized.png" width="150">
4
+ <img src="https://raw.githubusercontent.com/homebridge/branding/latest/logos/homebridge-color-round-stylized.png" width="150">
5
5
 
6
6
  </p>
7
7
 
8
+ <p align="center">
9
+ <a href="https://github.com/homebridge/homebridge/wiki/Verified-Plugins"><img src="https://img.shields.io/badge/homebridge-verified-blueviolet?color=%23491F59&style=for-the-badge&logoColor=%23FFFFFF&logo=homebridge" alt="verified-by-homebridge"></a>
10
+ </p>
11
+
8
12
  # SmartThings Homebridge Plugin with OAuth Support
9
13
 
10
14
  A modern SmartThings plugin for Homebridge that provides seamless integration with your SmartThings devices. This plugin features automatic device discovery, OAuth authentication, and access token refresh capabilities.
@@ -168,6 +172,10 @@ If you encounter issues:
168
172
  2. Ensure all URLs and credentials are correct
169
173
  3. Verify your tunnel service is running properly
170
174
 
175
+ ## 📄 Changelog
176
+
177
+ See [CHANGELOG.md](./CHANGELOG.md) for version history and detailed release notes.
178
+
171
179
  ## 📄 Credits
172
180
 
173
181
  This is a fork of the original homebridge-smartthings plugin created by [@iklein99](https://github.com/iklein99/), enhanced with OAuth support and automatic token refresh capabilities.
@@ -73,6 +73,13 @@
73
73
  "required": false,
74
74
  "default": 10
75
75
  },
76
+ "PollTelevisionsSeconds": {
77
+ "title": "Poll Television devices (zero = don't poll)",
78
+ "type": "integer",
79
+ "required": false,
80
+ "default": 15,
81
+ "description": "How often to poll TV devices for status updates. TVs typically respond slower than other devices, so a higher interval is recommended."
82
+ },
76
83
  "PollWindowShadesSeconds": {
77
84
  "title": "Poll Window Shades (zero = don't poll)",
78
85
  "type": "integer",
@@ -104,6 +111,20 @@
104
111
  ],
105
112
  "default": "None"
106
113
  },
114
+ "enableTelevisionService": {
115
+ "title": "Enable Television Service for TV devices",
116
+ "type": "boolean",
117
+ "required": false,
118
+ "default": true,
119
+ "description": "When enabled, Samsung TVs will be exposed as proper Television accessories with input source control, volume control, and picture modes. When disabled, TVs will continue to appear as simple switches."
120
+ },
121
+ "removeLegacySwitchForTV": {
122
+ "title": "Remove Legacy Switch Service for TVs",
123
+ "type": "boolean",
124
+ "required": false,
125
+ "default": false,
126
+ "description": "When enabled, removes the basic switch service for TV devices, leaving only the Television service. When disabled (default), both services are available for backward compatibility."
127
+ },
107
128
  "IgnoreLocations": {
108
129
  "title": "Locations to Ignore",
109
130
  "type": "array",
@@ -115,10 +136,15 @@
115
136
  "IgnoreDevices": {
116
137
  "title": "Devices to Ignore",
117
138
  "type": "array",
139
+ "description": "List of device names to ignore. Device names are case-insensitive and whitespace is trimmed. Special characters like smart quotes (') are automatically normalized to regular quotes (').",
118
140
  "items": {
119
141
  "title": "Device Name",
120
- "type": "string"
121
- }
142
+ "type": "string",
143
+ "description": "Exact device name as it appears in SmartThings (case-insensitive)"
144
+ },
145
+ "examples": [
146
+ ["Living Room Light", "Kitchen Switch", "Bedroom Fan"]
147
+ ]
122
148
  }
123
149
  }
124
150
  },
@@ -49,6 +49,7 @@ export declare class MultiServiceAccessory {
49
49
  addComponent(componentId: string, capabilities: string[]): void;
50
50
  isOnline(): boolean;
51
51
  static capabilitySupported(capability: string): boolean;
52
+ private isTelevisionDevice;
52
53
  refreshStatus(): Promise<boolean>;
53
54
  forceNextStatusRefresh(): void;
54
55
  startPollingState(pollSeconds: number, getValue: () => Promise<CharacteristicValue>, service: Service, chracteristic: WithUUID<new () => Characteristic>, targetStateCharacteristic?: WithUUID<new () => Characteristic>, getTargetState?: () => Promise<CharacteristicValue>): NodeJS.Timer | void;
@@ -1 +1 @@
1
- {"version":3,"file":"multiServiceAccessory.d.ts","sourceRoot":"","sources":["../src/multiServiceAccessory.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"multiServiceAccessory.d.ts","sourceRoot":"","sources":["../src/multiServiceAccessory.ts"],"names":[],"mappings":"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"}
@@ -24,6 +24,7 @@ const thermostatService_1 = require("./services/thermostatService");
24
24
  const statelessProgrammableSwitchService_1 = require("./services/statelessProgrammableSwitchService");
25
25
  const airConditionerService_1 = require("./services/airConditionerService");
26
26
  const acLightingService_1 = require("./services/acLightingService");
27
+ const televisionService_1 = require("./services/televisionService");
27
28
  const smartThingsCommand_1 = require("./services/smartThingsCommand");
28
29
  // type DeviceStatus = {
29
30
  // timestamp: number;
@@ -124,6 +125,31 @@ class MultiServiceAccessory {
124
125
  };
125
126
  this.components.push(component);
126
127
  let capabilitiesToCover = [...capabilities];
128
+ // Check if this device is a TV and TV service is enabled
129
+ const isTelevisionEnabled = this.platform.config.enableTelevisionService !== false; // Default to true
130
+ const removeLegacySwitch = this.platform.config.removeLegacySwitchForTV === true; // Default to false
131
+ if (isTelevisionEnabled && componentId === 'main' && this.isTelevisionDevice()) {
132
+ this.log.debug(`Detected TV device: ${this.name}, setting up Television service`);
133
+ // Register the Television service with all TV-related capabilities
134
+ const tvCapabilities = televisionService_1.TelevisionService.getTvCapabilities().filter(cap => capabilities.includes(cap));
135
+ if (tvCapabilities.length > 0) {
136
+ this.log.debug(`Creating Television service for ${this.name} with capabilities: ${tvCapabilities.join(', ')}`);
137
+ const serviceInstance = new televisionService_1.TelevisionService(this.platform, this.accessory, componentId, tvCapabilities, this, this.name, component);
138
+ this.services.push(serviceInstance);
139
+ // Remove TV capabilities from the list to avoid duplicate services
140
+ capabilitiesToCover = capabilitiesToCover.filter(cap => !tvCapabilities.includes(cap));
141
+ // If configured to remove legacy switch, remove the 'switch' capability
142
+ if (removeLegacySwitch && tvCapabilities.includes('switch')) {
143
+ this.log.debug(`Removing legacy switch service for TV: ${this.name}`);
144
+ // 'switch' capability is already removed from capabilitiesToCover above
145
+ }
146
+ else if (tvCapabilities.includes('switch')) {
147
+ // Keep the switch capability for legacy compatibility
148
+ capabilitiesToCover.push('switch');
149
+ this.log.debug(`Keeping legacy switch service alongside Television service for: ${this.name}`);
150
+ }
151
+ }
152
+ }
127
153
  // Start with comboServices and remove used capabilities to avoid duplicated sensors.
128
154
  // For example, there is no need to expose a temperature sensor in case of a thermostat which already exposes that charateristic.
129
155
  MultiServiceAccessory.comboCapabilityMap
@@ -149,9 +175,15 @@ class MultiServiceAccessory {
149
175
  if (Object.keys(MultiServiceAccessory.capabilityMap).find(c => c === capability)) {
150
176
  return true;
151
177
  }
152
- else {
153
- return false;
178
+ // Check if it's a TV-related capability
179
+ if (televisionService_1.TelevisionService.getTvCapabilities().includes(capability)) {
180
+ return true;
154
181
  }
182
+ return false;
183
+ }
184
+ // Check if this device is a Television
185
+ isTelevisionDevice() {
186
+ return televisionService_1.TelevisionService.isTelevisionDevice(this.accessory.context.device);
155
187
  }
156
188
  // public async refreshStatus(): Promise<boolean> {
157
189
  // return super.refreshStatus();
@@ -1 +1 @@
1
- {"version":3,"file":"multiServiceAccessory.js","sourceRoot":"","sources":["../src/multiServiceAccessory.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"multiServiceAccessory.js","sourceRoot":"","sources":["../src/multiServiceAccessory.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"platform.d.ts","sourceRoot":"","sources":["../src/platform.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,qBAAqB,EAAE,MAAM,EAAE,iBAAiB,EAAE,cAAc,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAI5H,OAAO,KAAK,GAAG,QAAQ,OAAO,CAAC,CAAC;AAEhC,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAEhE,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAE9C,OAAO,EAAE,gBAAgB,EAA0C,MAAM,yBAAyB,CAAC;AAEnG;;;;GAIG;AACH,qBAAa,8BAA+B,YAAW,qBAAqB;aAyBxD,GAAG,EAAE,MAAM;aACX,MAAM,EAAE,cAAc;aACtB,GAAG,EAAE,GAAG;IA1B1B,SAAgB,OAAO,EAAE,OAAO,OAAO,CAAwB;IAC/D,SAAgB,cAAc,EAAE,OAAO,cAAc,CAA+B;IAGpF,SAAgB,WAAW,EAAE,iBAAiB,EAAE,CAAM;IAEtD,OAAO,CAAC,mBAAmB,CAAgB;IAC3C,OAAO,CAAC,gBAAgB,CAAgB;IACjC,IAAI,EAAE,eAAe,CAAC;IAC7B,OAAO,CAAC,gBAAgB,CAAmB;IAE3C,OAAO,CAAC,UAAU,CAEhB;IAEF,SAAgB,UAAU,sBAGvB;IAEH,OAAO,CAAC,gBAAgB,CAA+B;IACvD,OAAO,CAAC,mBAAmB,CAA8C;gBAGvD,GAAG,EAAE,MAAM,EACX,MAAM,EAAE,cAAc,EACtB,GAAG,EAAE,GAAG;IA2I1B;;;OAGG;IACH,kBAAkB,CAAC,SAAS,EAAE,iBAAiB;IAO/C,oBAAoB,IAAI,OAAO,CAAC,OAAO,CAAC;IAkBxC,gBAAgB,IAAI,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IAgD1C,iBAAiB,CAAC,OAAO,KAAA,EAAE,GAAG,UAAQ;IA0BtC;;;;OAIG;IACH,eAAe,CAAC,OAAO,KAAA;IAqDvB,uBAAuB,CAAC,MAAM,KAAA,GAAG,OAAO;IAqBxC,qBAAqB,CAAC,MAAM,KAAA,EAAE,SAAS,KAAA,GAAG,qBAAqB;IAmBxD,2BAA2B,IAAI,gBAAgB;CAGvD"}
1
+ {"version":3,"file":"platform.d.ts","sourceRoot":"","sources":["../src/platform.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,qBAAqB,EAAE,MAAM,EAAE,iBAAiB,EAAE,cAAc,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAI5H,OAAO,KAAK,GAAG,QAAQ,OAAO,CAAC,CAAC;AAEhC,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAEhE,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAE9C,OAAO,EAAE,gBAAgB,EAA0C,MAAM,yBAAyB,CAAC;AAEnG;;;;GAIG;AACH,qBAAa,8BAA+B,YAAW,qBAAqB;aAyBxD,GAAG,EAAE,MAAM;aACX,MAAM,EAAE,cAAc;aACtB,GAAG,EAAE,GAAG;IA1B1B,SAAgB,OAAO,EAAE,OAAO,OAAO,CAAwB;IAC/D,SAAgB,cAAc,EAAE,OAAO,cAAc,CAA+B;IAGpF,SAAgB,WAAW,EAAE,iBAAiB,EAAE,CAAM;IAEtD,OAAO,CAAC,mBAAmB,CAAgB;IAC3C,OAAO,CAAC,gBAAgB,CAAgB;IACjC,IAAI,EAAE,eAAe,CAAC;IAC7B,OAAO,CAAC,gBAAgB,CAAmB;IAE3C,OAAO,CAAC,UAAU,CAEhB;IAEF,SAAgB,UAAU,sBAGvB;IAEH,OAAO,CAAC,gBAAgB,CAA+B;IACvD,OAAO,CAAC,mBAAmB,CAA8C;gBAGvD,GAAG,EAAE,MAAM,EACX,MAAM,EAAE,cAAc,EACtB,GAAG,EAAE,GAAG;IA8I1B;;;OAGG;IACH,kBAAkB,CAAC,SAAS,EAAE,iBAAiB;IAO/C,oBAAoB,IAAI,OAAO,CAAC,OAAO,CAAC;IAkBxC,gBAAgB,IAAI,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IAmE1C,iBAAiB,CAAC,OAAO,KAAA,EAAE,GAAG,UAAQ;IA0BtC;;;;OAIG;IACH,eAAe,CAAC,OAAO,KAAA;IAqDvB,uBAAuB,CAAC,MAAM,KAAA,GAAG,OAAO;IAqBxC,qBAAqB,CAAC,MAAM,KAAA,EAAE,SAAS,KAAA,GAAG,qBAAqB;IAmBxD,2BAA2B,IAAI,gBAAgB;CAGvD"}
package/dist/platform.js CHANGED
@@ -106,8 +106,10 @@ class IKHomeBridgeHomebridgePlatform {
106
106
  await this.auth.handleCrashLoopRecovery();
107
107
  // After attempting recovery, it's best to let Homebridge restart the plugin cleanly.
108
108
  // Or, if handleCrashLoopRecovery sets a state for re-auth, allow it to proceed.
109
- // For now, we'll log and let the user know. A manual restart of Homebridge might be needed if the auth flow doesn't auto-trigger UI.
110
- this.log.warn('[CRASH LOOP RECOVERY] Token clearing initiated. Monitor logs for re-authentication steps. A Homebridge restart may be required.');
109
+ // For now, we'll log and let the user know. A manual restart of Homebridge might be needed
110
+ // if the auth flow doesn't auto-trigger UI.
111
+ this.log.warn('[CRASH LOOP RECOVERY] Token clearing initiated. Monitor logs for re-authentication steps.' +
112
+ ' A Homebridge restart may be required.');
111
113
  // We might want to return here to prevent further execution in a potentially unstable state until re-auth completes.
112
114
  return;
113
115
  }
@@ -146,7 +148,8 @@ class IKHomeBridgeHomebridgePlatform {
146
148
  // Record that an initialization error occurred.
147
149
  // If this error is one that leads to a crash and restart, it will be logged by CrashLoopManager.
148
150
  await this.crashLoopManager.recordPotentialCrash("API_INIT_FAILURE" /* CrashErrorType.API_INIT_FAILURE */);
149
- this.log.error('Platform initialization failed. This might lead to a restart. If this persists, a crash loop recovery might be attempted.');
151
+ this.log.error('Platform initialization failed. This might lead to a restart.' +
152
+ ' If this persists, a crash loop recovery might be attempted.');
150
153
  }
151
154
  });
152
155
  }
@@ -190,18 +193,34 @@ class IKHomeBridgeHomebridgePlatform {
190
193
  }
191
194
  let deviceName = '';
192
195
  try {
193
- // deviceName = device.label.toString().replaceAll(String.fromCharCode(8217), '\'');
194
- deviceName = device.label;
196
+ // Handle special characters like right single quote (') that SmartThings uses
197
+ deviceName = device.label.toString().replace(/[\u2018\u2019]/g, '\'').replace(/[\u201C\u201D]/g, '"');
195
198
  }
196
199
  catch (error) {
197
200
  this.log.warn(`Error getting device name for ${device.label}: ${error}`);
198
201
  deviceName = device.label;
199
202
  }
200
- if (this.config.IgnoreDevices &&
201
- //this.config.IgnoreDevices.find(d => d.replaceAll(String.fromCharCode(8217), '\'').toLowerCase() === deviceName.toLowerCase())) {
202
- this.config.IgnoreDevices.find(d => d.toLowerCase() === deviceName.toLowerCase())) {
203
- this.log.info(`Ignoring ${device.label} because it is in the Ignore Devices list`);
204
- return;
203
+ // Check if device should be ignored
204
+ if (this.config.IgnoreDevices && Array.isArray(this.config.IgnoreDevices)) {
205
+ this.log.debug(`Checking if device "${deviceName}" should be ignored against list: [${this.config.IgnoreDevices.join(', ')}]`);
206
+ const shouldIgnore = this.config.IgnoreDevices.find(ignoreName => {
207
+ if (typeof ignoreName !== 'string') {
208
+ this.log.warn(`Invalid ignore device entry: ${ignoreName} (expected string)`);
209
+ return false;
210
+ }
211
+ // Normalize both names for comparison - handle special characters
212
+ const normalizedIgnoreName = ignoreName.replace(/[\u2018\u2019]/g, '\'').replace(/[\u201C\u201D]/g, '"').toLowerCase().trim();
213
+ const normalizedDeviceName = deviceName.toLowerCase().trim();
214
+ this.log.debug(`Comparing normalized names: "${normalizedDeviceName}" vs "${normalizedIgnoreName}"`);
215
+ return normalizedIgnoreName === normalizedDeviceName;
216
+ });
217
+ if (shouldIgnore) {
218
+ this.log.info(`Ignoring ${device.label} because it is in the Ignore Devices list`);
219
+ return;
220
+ }
221
+ }
222
+ else if (this.config.IgnoreDevices) {
223
+ this.log.warn('IgnoreDevices configuration is not an array. Expected format: ["Device Name 1", "Device Name 2"]');
205
224
  }
206
225
  if (!this.locationIDsToIgnore.find(locationID => device.locationId === locationID)) {
207
226
  this.log.debug('Pushing ' + device.label);
@@ -1 +1 @@
1
- {"version":3,"file":"platform.js","sourceRoot":"","sources":["../src/platform.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"platform.js","sourceRoot":"","sources":["../src/platform.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,40 @@
1
+ import { PlatformAccessory } from 'homebridge';
2
+ import { IKHomeBridgeHomebridgePlatform } from '../platform';
3
+ import { BaseService } from './baseService';
4
+ import { MultiServiceAccessory } from '../multiServiceAccessory';
5
+ import { ShortEvent } from '../webhook/subscriptionHandler';
6
+ export declare class TelevisionService extends BaseService {
7
+ private televisionService;
8
+ private televisionSpeakerService;
9
+ private inputServices;
10
+ private inputSourcesMap;
11
+ private currentInputSource;
12
+ private currentVolume;
13
+ private isMuted;
14
+ constructor(platform: IKHomeBridgeHomebridgePlatform, accessory: PlatformAccessory, componentId: string, capabilities: string[], multiServiceAccessory: MultiServiceAccessory, name: string, deviceStatus: any);
15
+ private setupTelevisionService;
16
+ private setupTelevisionSpeaker;
17
+ private setupInputSources;
18
+ private loadInputSources;
19
+ private getInputSourceType;
20
+ private isCapabilitySupported;
21
+ private startPolling;
22
+ private getTelevisionActive;
23
+ private setTelevisionActive;
24
+ private getActiveIdentifier;
25
+ private setActiveIdentifier;
26
+ private setRemoteKey;
27
+ private getPictureMode;
28
+ private setPictureMode;
29
+ private getMute;
30
+ private setMute;
31
+ private getVolume;
32
+ private setVolume;
33
+ private setVolumeSelector;
34
+ private getSpeakerActive;
35
+ private setSpeakerActive;
36
+ processEvent(event: ShortEvent): void;
37
+ static isTelevisionDevice(device: any): boolean;
38
+ static getTvCapabilities(): string[];
39
+ }
40
+ //# sourceMappingURL=televisionService.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"televisionService.d.ts","sourceRoot":"","sources":["../../src/services/televisionService.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAgC,MAAM,YAAY,CAAC;AAC7E,OAAO,EAAE,8BAA8B,EAAE,MAAM,aAAa,CAAC;AAC7D,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AACjE,OAAO,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAC;AAE5D,qBAAa,iBAAkB,SAAQ,WAAW;IAChD,OAAO,CAAC,iBAAiB,CAAU;IACnC,OAAO,CAAC,wBAAwB,CAAU;IAC1C,OAAO,CAAC,aAAa,CAAiB;IACtC,OAAO,CAAC,eAAe,CAAyC;IAChE,OAAO,CAAC,kBAAkB,CAAK;IAC/B,OAAO,CAAC,aAAa,CAAK;IAC1B,OAAO,CAAC,OAAO,CAAS;gBAGtB,QAAQ,EAAE,8BAA8B,EACxC,SAAS,EAAE,iBAAiB,EAC5B,WAAW,EAAE,MAAM,EACnB,YAAY,EAAE,MAAM,EAAE,EACtB,qBAAqB,EAAE,qBAAqB,EAC5C,IAAI,EAAE,MAAM,EACZ,YAAY,KAAA;IAkCd,OAAO,CAAC,sBAAsB;IAuC9B,OAAO,CAAC,sBAAsB;IAiD9B,OAAO,CAAC,iBAAiB;IAiCzB,OAAO,CAAC,gBAAgB;IAqBxB,OAAO,CAAC,kBAAkB;IAgB1B,OAAO,CAAC,qBAAqB;IAI7B,OAAO,CAAC,YAAY;YAoBN,mBAAmB;YAwBnB,mBAAmB;YAqBnB,mBAAmB;YA4BnB,mBAAmB;YA8BnB,YAAY;YA8DZ,cAAc;YAoCd,cAAc;YA2Bd,OAAO;YAwBP,OAAO;YAoBP,SAAS;YA4BT,SAAS;YAoBT,iBAAiB;YAmBjB,gBAAgB;YAWhB,gBAAgB;IAcvB,YAAY,CAAC,KAAK,EAAE,UAAU,GAAG,IAAI;WAkE9B,kBAAkB,CAAC,MAAM,EAAE,GAAG,GAAG,OAAO;WAyBxC,iBAAiB,IAAI,MAAM,EAAE;CAa5C"}
@@ -0,0 +1,591 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.TelevisionService = void 0;
4
+ const baseService_1 = require("./baseService");
5
+ class TelevisionService extends baseService_1.BaseService {
6
+ constructor(platform, accessory, componentId, capabilities, multiServiceAccessory, name, deviceStatus) {
7
+ super(platform, accessory, componentId, capabilities, multiServiceAccessory, name, deviceStatus);
8
+ this.inputServices = [];
9
+ this.inputSourcesMap = [];
10
+ this.currentInputSource = 1; // Default to first input
11
+ this.currentVolume = 0;
12
+ this.isMuted = false;
13
+ this.log.debug(`Adding TelevisionService to ${this.name}`);
14
+ // Setup the main Television service
15
+ this.televisionService = this.setupTelevisionService();
16
+ // Setup the Television Speaker service
17
+ this.televisionSpeakerService = this.setupTelevisionSpeaker();
18
+ // Setup Input Source services
19
+ this.setupInputSources();
20
+ // Configure the Television service as the primary service
21
+ this.televisionService.setPrimaryService();
22
+ // Link services together - TelevisionSpeaker and InputSources must be linked to Television
23
+ this.televisionService.addLinkedService(this.televisionSpeakerService);
24
+ this.inputServices.forEach(inputService => {
25
+ this.televisionService.addLinkedService(inputService);
26
+ });
27
+ // Set the main service for BaseService compatibility
28
+ this.service = this.televisionService;
29
+ // Set the accessory category to Television for proper HomeKit presentation
30
+ accessory.category = 31 /* this.platform.api.hap.Categories.TELEVISION */;
31
+ // Start polling for updates
32
+ this.startPolling();
33
+ }
34
+ setupTelevisionService() {
35
+ const tvService = this.accessory.getService(this.platform.Service.Television) ||
36
+ this.accessory.addService(this.platform.Service.Television, this.name, 'Television');
37
+ // Set the display name
38
+ tvService.setCharacteristic(this.platform.Characteristic.Name, this.name);
39
+ // Configure the Active characteristic (power on/off)
40
+ tvService.getCharacteristic(this.platform.Characteristic.Active)
41
+ .onGet(this.getTelevisionActive.bind(this))
42
+ .onSet(this.setTelevisionActive.bind(this));
43
+ // Configure Active Identifier (current input source)
44
+ tvService.getCharacteristic(this.platform.Characteristic.ActiveIdentifier)
45
+ .onGet(this.getActiveIdentifier.bind(this))
46
+ .onSet(this.setActiveIdentifier.bind(this));
47
+ // Configure Configured Name (read-only)
48
+ tvService.getCharacteristic(this.platform.Characteristic.ConfiguredName)
49
+ .onGet(() => this.name);
50
+ // Configure Sleep Discovery Mode (not supported by Samsung TVs typically)
51
+ tvService.getCharacteristic(this.platform.Characteristic.SleepDiscoveryMode)
52
+ .onGet(() => this.platform.Characteristic.SleepDiscoveryMode.NOT_DISCOVERABLE);
53
+ // Configure Remote Key (for remote control commands)
54
+ tvService.getCharacteristic(this.platform.Characteristic.RemoteKey)
55
+ .onSet(this.setRemoteKey.bind(this));
56
+ // Configure Picture Mode if supported
57
+ if (this.isCapabilitySupported('custom.picturemode')) {
58
+ tvService.getCharacteristic(this.platform.Characteristic.PictureMode)
59
+ .onGet(this.getPictureMode.bind(this))
60
+ .onSet(this.setPictureMode.bind(this));
61
+ }
62
+ return tvService;
63
+ }
64
+ setupTelevisionSpeaker() {
65
+ const speakerService = this.accessory.getService(this.platform.Service.TelevisionSpeaker) ||
66
+ this.accessory.addService(this.platform.Service.TelevisionSpeaker, `${this.name} Speaker`, 'TelevisionSpeaker');
67
+ // Set the display name
68
+ speakerService.setCharacteristic(this.platform.Characteristic.Name, `${this.name} Speaker`);
69
+ // Configure Mute characteristic (required)
70
+ speakerService.getCharacteristic(this.platform.Characteristic.Mute)
71
+ .onGet(this.getMute.bind(this))
72
+ .onSet(this.setMute.bind(this));
73
+ // Configure Volume Control Type - specify what type of volume control is supported
74
+ if (this.isCapabilitySupported('audioVolume')) {
75
+ // TV supports absolute volume control
76
+ speakerService.setCharacteristic(this.platform.Characteristic.VolumeControlType, this.platform.Characteristic.VolumeControlType.ABSOLUTE);
77
+ // Add Volume characteristic for absolute volume control
78
+ speakerService.getCharacteristic(this.platform.Characteristic.Volume)
79
+ .setProps({
80
+ minValue: 0,
81
+ maxValue: 100,
82
+ minStep: 1,
83
+ })
84
+ .onGet(this.getVolume.bind(this))
85
+ .onSet(this.setVolume.bind(this));
86
+ }
87
+ else {
88
+ // Fallback to relative volume control only
89
+ speakerService.setCharacteristic(this.platform.Characteristic.VolumeControlType, this.platform.Characteristic.VolumeControlType.RELATIVE);
90
+ }
91
+ // Configure Volume Selector (for volume up/down commands) - always available
92
+ speakerService.getCharacteristic(this.platform.Characteristic.VolumeSelector)
93
+ .onSet(this.setVolumeSelector.bind(this));
94
+ // Configure Active characteristic (speaker active state)
95
+ speakerService.getCharacteristic(this.platform.Characteristic.Active)
96
+ .onGet(this.getSpeakerActive.bind(this))
97
+ .onSet(this.setSpeakerActive.bind(this));
98
+ return speakerService;
99
+ }
100
+ setupInputSources() {
101
+ // Get input sources from device status
102
+ this.loadInputSources();
103
+ // Create InputSource services for each input
104
+ this.inputSourcesMap.forEach((input, index) => {
105
+ const inputService = this.accessory.getService(`Input-${input.id}`) ||
106
+ this.accessory.addService(this.platform.Service.InputSource, input.name, `Input-${input.id}`);
107
+ // Configure the input source
108
+ inputService
109
+ .setCharacteristic(this.platform.Characteristic.Identifier, index + 1)
110
+ .setCharacteristic(this.platform.Characteristic.ConfiguredName, input.name)
111
+ .setCharacteristic(this.platform.Characteristic.IsConfigured, this.platform.Characteristic.IsConfigured.CONFIGURED)
112
+ .setCharacteristic(this.platform.Characteristic.InputSourceType, this.getInputSourceType(input.id))
113
+ .setCharacteristic(this.platform.Characteristic.CurrentVisibilityState, this.platform.Characteristic.CurrentVisibilityState.SHOWN);
114
+ // Configure visibility state (can be changed by user)
115
+ inputService.getCharacteristic(this.platform.Characteristic.TargetVisibilityState)
116
+ .onGet(() => this.platform.Characteristic.TargetVisibilityState.SHOWN)
117
+ .onSet((value) => {
118
+ // Handle input visibility changes if needed
119
+ this.log.debug(`Input ${input.name} visibility changed to ${value}`);
120
+ });
121
+ this.inputServices.push(inputService);
122
+ });
123
+ }
124
+ loadInputSources() {
125
+ var _a, _b;
126
+ // Try to load from Samsung's mediaInputSource capability from component status
127
+ const component = this.multiServiceAccessory.components.find(c => c.componentId === this.componentId);
128
+ const inputSourceData = (_a = component === null || component === void 0 ? void 0 : component.status) === null || _a === void 0 ? void 0 : _a['samsungvd.mediaInputSource'];
129
+ if ((_b = inputSourceData === null || inputSourceData === void 0 ? void 0 : inputSourceData.supportedInputSourcesMap) === null || _b === void 0 ? void 0 : _b.value) {
130
+ this.inputSourcesMap = inputSourceData.supportedInputSourcesMap.value;
131
+ this.log.debug(`Loaded ${this.inputSourcesMap.length} input sources for ${this.name}`);
132
+ }
133
+ else {
134
+ // Fallback to common input sources if not available
135
+ this.inputSourcesMap = [
136
+ { id: 'dtv', name: 'TV' },
137
+ { id: 'HDMI1', name: 'HDMI 1' },
138
+ { id: 'HDMI2', name: 'HDMI 2' },
139
+ { id: 'HDMI3', name: 'HDMI 3' },
140
+ { id: 'HDMI4', name: 'HDMI 4' },
141
+ ];
142
+ this.log.debug(`Using fallback input sources for ${this.name}`);
143
+ }
144
+ }
145
+ getInputSourceType(inputId) {
146
+ // Map Samsung input IDs to HomeKit input source types
147
+ const inputTypeMappings = {
148
+ 'dtv': this.platform.Characteristic.InputSourceType.TUNER,
149
+ 'HDMI1': this.platform.Characteristic.InputSourceType.HDMI,
150
+ 'HDMI2': this.platform.Characteristic.InputSourceType.HDMI,
151
+ 'HDMI3': this.platform.Characteristic.InputSourceType.HDMI,
152
+ 'HDMI4': this.platform.Characteristic.InputSourceType.HDMI,
153
+ 'USB': this.platform.Characteristic.InputSourceType.USB,
154
+ 'COMPONENT': this.platform.Characteristic.InputSourceType.COMPONENT_VIDEO,
155
+ 'COMPOSITE': this.platform.Characteristic.InputSourceType.COMPOSITE_VIDEO,
156
+ };
157
+ return inputTypeMappings[inputId] || this.platform.Characteristic.InputSourceType.OTHER;
158
+ }
159
+ isCapabilitySupported(capability) {
160
+ return this.capabilities.includes(capability);
161
+ }
162
+ startPolling() {
163
+ // Poll for TV state updates - use TV-specific polling interval or fall back to switches/lights interval
164
+ let pollSeconds = 15; // default for TVs
165
+ if (this.platform.config.PollTelevisionsSeconds !== undefined) {
166
+ pollSeconds = this.platform.config.PollTelevisionsSeconds;
167
+ }
168
+ else if (this.platform.config.PollSwitchesAndLightsSeconds !== undefined) {
169
+ pollSeconds = this.platform.config.PollSwitchesAndLightsSeconds;
170
+ }
171
+ if (pollSeconds > 0) {
172
+ this.multiServiceAccessory.startPollingState(pollSeconds, this.getTelevisionActive.bind(this), this.televisionService, this.platform.Characteristic.Active);
173
+ }
174
+ }
175
+ // Television Active (Power) Methods
176
+ async getTelevisionActive() {
177
+ this.log.debug(`Getting TV active state for ${this.name}`);
178
+ return new Promise((resolve, reject) => {
179
+ this.getStatus().then(success => {
180
+ var _a, _b;
181
+ if (success) {
182
+ try {
183
+ const component = this.multiServiceAccessory.components.find(c => c.componentId === this.componentId);
184
+ const switchData = (_a = component === null || component === void 0 ? void 0 : component.status) === null || _a === void 0 ? void 0 : _a.switch;
185
+ const switchState = (_b = switchData === null || switchData === void 0 ? void 0 : switchData.switch) === null || _b === void 0 ? void 0 : _b.value;
186
+ const isActive = switchState === 'on';
187
+ this.log.debug(`TV active state for ${this.name}: ${isActive}`);
188
+ resolve(isActive ? this.platform.Characteristic.Active.ACTIVE : this.platform.Characteristic.Active.INACTIVE);
189
+ }
190
+ catch (error) {
191
+ this.log.error(`Error getting TV active state for ${this.name}:`, error);
192
+ reject(new this.platform.api.hap.HapStatusError(-70402 /* this.platform.api.hap.HAPStatus.SERVICE_COMMUNICATION_FAILURE */));
193
+ }
194
+ }
195
+ else {
196
+ reject(new this.platform.api.hap.HapStatusError(-70402 /* this.platform.api.hap.HAPStatus.SERVICE_COMMUNICATION_FAILURE */));
197
+ }
198
+ });
199
+ });
200
+ }
201
+ async setTelevisionActive(value) {
202
+ this.log.debug(`Setting TV active state for ${this.name} to ${value}`);
203
+ if (!this.multiServiceAccessory.isOnline()) {
204
+ this.log.error(`${this.name} is offline`);
205
+ throw new this.platform.api.hap.HapStatusError(-70402 /* this.platform.api.hap.HAPStatus.SERVICE_COMMUNICATION_FAILURE */);
206
+ }
207
+ const command = value === this.platform.Characteristic.Active.ACTIVE ? 'on' : 'off';
208
+ const success = await this.multiServiceAccessory.sendCommand('switch', command);
209
+ if (success) {
210
+ this.log.debug(`TV power ${command} successful for ${this.name}`);
211
+ this.multiServiceAccessory.forceNextStatusRefresh();
212
+ }
213
+ else {
214
+ this.log.error(`TV power command failed for ${this.name}`);
215
+ throw new this.platform.api.hap.HapStatusError(-70402 /* this.platform.api.hap.HAPStatus.SERVICE_COMMUNICATION_FAILURE */);
216
+ }
217
+ }
218
+ // Active Identifier (Input Source) Methods
219
+ async getActiveIdentifier() {
220
+ this.log.debug(`Getting active input for ${this.name}`);
221
+ return new Promise((resolve) => {
222
+ this.getStatus().then(success => {
223
+ var _a, _b;
224
+ if (success) {
225
+ try {
226
+ // Try to get current input from Samsung's mediaInputSource capability
227
+ const component = this.multiServiceAccessory.components.find(c => c.componentId === this.componentId);
228
+ const mediaInputData = (_a = component === null || component === void 0 ? void 0 : component.status) === null || _a === void 0 ? void 0 : _a['samsungvd.mediaInputSource'];
229
+ const currentInput = (_b = mediaInputData === null || mediaInputData === void 0 ? void 0 : mediaInputData.inputSource) === null || _b === void 0 ? void 0 : _b.value;
230
+ if (currentInput) {
231
+ const inputIndex = this.inputSourcesMap.findIndex(input => input.id === currentInput);
232
+ this.currentInputSource = inputIndex >= 0 ? inputIndex + 1 : 1;
233
+ }
234
+ this.log.debug(`Active input identifier for ${this.name}: ${this.currentInputSource}`);
235
+ resolve(this.currentInputSource);
236
+ }
237
+ catch (error) {
238
+ this.log.debug(`Could not determine active input for ${this.name}, using default`);
239
+ resolve(this.currentInputSource);
240
+ }
241
+ }
242
+ else {
243
+ resolve(this.currentInputSource);
244
+ }
245
+ });
246
+ });
247
+ }
248
+ async setActiveIdentifier(value) {
249
+ this.log.debug(`Setting active input for ${this.name} to ${value}`);
250
+ const inputIndex = Number(value) - 1;
251
+ if (inputIndex >= 0 && inputIndex < this.inputSourcesMap.length) {
252
+ const targetInput = this.inputSourcesMap[inputIndex];
253
+ if (!this.multiServiceAccessory.isOnline()) {
254
+ this.log.error(`${this.name} is offline`);
255
+ throw new this.platform.api.hap.HapStatusError(-70402 /* this.platform.api.hap.HAPStatus.SERVICE_COMMUNICATION_FAILURE */);
256
+ }
257
+ // Send input source change command to Samsung TV
258
+ const success = await this.multiServiceAccessory.sendCommand('samsungvd.mediaInputSource', 'setInputSource', [targetInput.id]);
259
+ if (success) {
260
+ this.currentInputSource = Number(value);
261
+ this.log.debug(`Input source changed to ${targetInput.name} for ${this.name}`);
262
+ this.multiServiceAccessory.forceNextStatusRefresh();
263
+ }
264
+ else {
265
+ this.log.error(`Failed to change input source for ${this.name}`);
266
+ throw new this.platform.api.hap.HapStatusError(-70402 /* this.platform.api.hap.HAPStatus.SERVICE_COMMUNICATION_FAILURE */);
267
+ }
268
+ }
269
+ else {
270
+ this.log.error(`Invalid input identifier ${value} for ${this.name}`);
271
+ throw new this.platform.api.hap.HapStatusError(-70410 /* this.platform.api.hap.HAPStatus.INVALID_VALUE_IN_REQUEST */);
272
+ }
273
+ }
274
+ // Remote Key Methods
275
+ async setRemoteKey(value) {
276
+ this.log.debug(`Received remote key command for ${this.name}: ${value}`);
277
+ if (!this.multiServiceAccessory.isOnline()) {
278
+ this.log.error(`${this.name} is offline`);
279
+ throw new this.platform.api.hap.HapStatusError(-70402 /* this.platform.api.hap.HAPStatus.SERVICE_COMMUNICATION_FAILURE */);
280
+ }
281
+ // Map HomeKit remote keys to Samsung TV commands
282
+ let command = '';
283
+ let capability = '';
284
+ switch (value) {
285
+ case this.platform.Characteristic.RemoteKey.REWIND:
286
+ capability = 'mediaPlayback';
287
+ command = 'rewind';
288
+ break;
289
+ case this.platform.Characteristic.RemoteKey.FAST_FORWARD:
290
+ capability = 'mediaPlayback';
291
+ command = 'fastForward';
292
+ break;
293
+ case this.platform.Characteristic.RemoteKey.NEXT_TRACK:
294
+ // Samsung TVs don't typically support track navigation, but we can try channel up
295
+ capability = 'tvChannel';
296
+ command = 'channelUp';
297
+ break;
298
+ case this.platform.Characteristic.RemoteKey.PREVIOUS_TRACK:
299
+ capability = 'tvChannel';
300
+ command = 'channelDown';
301
+ break;
302
+ case this.platform.Characteristic.RemoteKey.ARROW_UP:
303
+ case this.platform.Characteristic.RemoteKey.ARROW_DOWN:
304
+ case this.platform.Characteristic.RemoteKey.ARROW_LEFT:
305
+ case this.platform.Characteristic.RemoteKey.ARROW_RIGHT:
306
+ case this.platform.Characteristic.RemoteKey.SELECT:
307
+ case this.platform.Characteristic.RemoteKey.BACK:
308
+ case this.platform.Characteristic.RemoteKey.EXIT:
309
+ case this.platform.Characteristic.RemoteKey.PLAY_PAUSE:
310
+ // These would require Samsung's custom remote control capabilities
311
+ this.log.debug(`Remote key ${value} not implemented for Samsung TV`);
312
+ return;
313
+ case this.platform.Characteristic.RemoteKey.INFORMATION:
314
+ // Could potentially map to info button
315
+ this.log.debug(`Information key pressed for ${this.name}`);
316
+ return;
317
+ }
318
+ if (command && capability) {
319
+ try {
320
+ const success = await this.multiServiceAccessory.sendCommand(capability, command);
321
+ if (success) {
322
+ this.log.debug(`Remote key command ${command} successful for ${this.name}`);
323
+ }
324
+ else {
325
+ this.log.error(`Remote key command ${command} failed for ${this.name}`);
326
+ }
327
+ }
328
+ catch (error) {
329
+ this.log.error(`Error sending remote key command for ${this.name}:`, error);
330
+ }
331
+ }
332
+ }
333
+ // Picture Mode Methods
334
+ async getPictureMode() {
335
+ this.log.debug(`Getting picture mode for ${this.name}`);
336
+ return new Promise((resolve) => {
337
+ this.getStatus().then(success => {
338
+ var _a, _b;
339
+ if (success) {
340
+ try {
341
+ const component = this.multiServiceAccessory.components.find(c => c.componentId === this.componentId);
342
+ const pictureModeData = (_a = component === null || component === void 0 ? void 0 : component.status) === null || _a === void 0 ? void 0 : _a['custom.picturemode'];
343
+ const pictureMode = (_b = pictureModeData === null || pictureModeData === void 0 ? void 0 : pictureModeData.pictureMode) === null || _b === void 0 ? void 0 : _b.value;
344
+ if (pictureMode) {
345
+ // Map Samsung picture modes to HomeKit values
346
+ const pictureModeMap = {
347
+ 'Standard': this.platform.Characteristic.PictureMode.STANDARD,
348
+ 'Dynamic': this.platform.Characteristic.PictureMode.VIVID,
349
+ 'Movie (Calibrated)': this.platform.Characteristic.PictureMode.STANDARD, // Fallback to STANDARD
350
+ 'FILMMAKER MODE': this.platform.Characteristic.PictureMode.STANDARD, // Fallback to STANDARD
351
+ 'Eco': this.platform.Characteristic.PictureMode.STANDARD,
352
+ };
353
+ const homekitMode = pictureModeMap[pictureMode] || this.platform.Characteristic.PictureMode.STANDARD;
354
+ this.log.debug(`Picture mode for ${this.name}: ${pictureMode} -> ${homekitMode}`);
355
+ resolve(homekitMode);
356
+ }
357
+ else {
358
+ resolve(this.platform.Characteristic.PictureMode.STANDARD);
359
+ }
360
+ }
361
+ catch (error) {
362
+ this.log.debug(`Could not get picture mode for ${this.name}, using default`);
363
+ resolve(this.platform.Characteristic.PictureMode.STANDARD);
364
+ }
365
+ }
366
+ else {
367
+ resolve(this.platform.Characteristic.PictureMode.STANDARD);
368
+ }
369
+ });
370
+ });
371
+ }
372
+ async setPictureMode(value) {
373
+ this.log.debug(`Setting picture mode for ${this.name} to ${value}`);
374
+ if (!this.multiServiceAccessory.isOnline()) {
375
+ throw new this.platform.api.hap.HapStatusError(-70402 /* this.platform.api.hap.HAPStatus.SERVICE_COMMUNICATION_FAILURE */);
376
+ }
377
+ // Map HomeKit picture modes back to Samsung modes
378
+ const reversePictureModeMap = {
379
+ [this.platform.Characteristic.PictureMode.STANDARD]: 'Standard',
380
+ [this.platform.Characteristic.PictureMode.VIVID]: 'Dynamic',
381
+ };
382
+ const samsungMode = reversePictureModeMap[Number(value)];
383
+ if (samsungMode) {
384
+ const success = await this.multiServiceAccessory.sendCommand('custom.picturemode', 'setPictureMode', [samsungMode]);
385
+ if (success) {
386
+ this.log.debug(`Picture mode changed to ${samsungMode} for ${this.name}`);
387
+ this.multiServiceAccessory.forceNextStatusRefresh();
388
+ }
389
+ else {
390
+ this.log.error(`Failed to change picture mode for ${this.name}`);
391
+ throw new this.platform.api.hap.HapStatusError(-70402 /* this.platform.api.hap.HAPStatus.SERVICE_COMMUNICATION_FAILURE */);
392
+ }
393
+ }
394
+ }
395
+ // Speaker Methods
396
+ async getMute() {
397
+ this.log.debug(`Getting mute state for ${this.name}`);
398
+ return new Promise((resolve) => {
399
+ this.getStatus().then(success => {
400
+ var _a, _b;
401
+ if (success) {
402
+ try {
403
+ const component = this.multiServiceAccessory.components.find(c => c.componentId === this.componentId);
404
+ const audioMuteData = (_a = component === null || component === void 0 ? void 0 : component.status) === null || _a === void 0 ? void 0 : _a.audioMute;
405
+ const muteState = (_b = audioMuteData === null || audioMuteData === void 0 ? void 0 : audioMuteData.mute) === null || _b === void 0 ? void 0 : _b.value;
406
+ this.isMuted = muteState === 'muted';
407
+ this.log.debug(`Mute state for ${this.name}: ${this.isMuted}`);
408
+ resolve(this.isMuted);
409
+ }
410
+ catch (error) {
411
+ this.log.debug(`Could not get mute state for ${this.name}, using cached value`);
412
+ resolve(this.isMuted);
413
+ }
414
+ }
415
+ else {
416
+ resolve(this.isMuted);
417
+ }
418
+ });
419
+ });
420
+ }
421
+ async setMute(value) {
422
+ this.log.debug(`Setting mute state for ${this.name} to ${value}`);
423
+ if (!this.multiServiceAccessory.isOnline()) {
424
+ throw new this.platform.api.hap.HapStatusError(-70402 /* this.platform.api.hap.HAPStatus.SERVICE_COMMUNICATION_FAILURE */);
425
+ }
426
+ const command = value ? 'mute' : 'unmute';
427
+ const success = await this.multiServiceAccessory.sendCommand('audioMute', command);
428
+ if (success) {
429
+ this.isMuted = Boolean(value);
430
+ this.log.debug(`Mute ${command} successful for ${this.name}`);
431
+ this.multiServiceAccessory.forceNextStatusRefresh();
432
+ }
433
+ else {
434
+ this.log.error(`Mute command failed for ${this.name}`);
435
+ throw new this.platform.api.hap.HapStatusError(-70402 /* this.platform.api.hap.HAPStatus.SERVICE_COMMUNICATION_FAILURE */);
436
+ }
437
+ }
438
+ async getVolume() {
439
+ this.log.debug(`Getting volume for ${this.name}`);
440
+ return new Promise((resolve) => {
441
+ this.getStatus().then(success => {
442
+ var _a, _b;
443
+ if (success) {
444
+ try {
445
+ const component = this.multiServiceAccessory.components.find(c => c.componentId === this.componentId);
446
+ const audioVolumeData = (_a = component === null || component === void 0 ? void 0 : component.status) === null || _a === void 0 ? void 0 : _a.audioVolume;
447
+ const volume = (_b = audioVolumeData === null || audioVolumeData === void 0 ? void 0 : audioVolumeData.volume) === null || _b === void 0 ? void 0 : _b.value;
448
+ if (typeof volume === 'number') {
449
+ this.currentVolume = volume;
450
+ this.log.debug(`Volume for ${this.name}: ${volume}`);
451
+ resolve(volume);
452
+ }
453
+ else {
454
+ resolve(this.currentVolume);
455
+ }
456
+ }
457
+ catch (error) {
458
+ this.log.debug(`Could not get volume for ${this.name}, using cached value`);
459
+ resolve(this.currentVolume);
460
+ }
461
+ }
462
+ else {
463
+ resolve(this.currentVolume);
464
+ }
465
+ });
466
+ });
467
+ }
468
+ async setVolume(value) {
469
+ this.log.debug(`Setting volume for ${this.name} to ${value}`);
470
+ if (!this.multiServiceAccessory.isOnline()) {
471
+ throw new this.platform.api.hap.HapStatusError(-70402 /* this.platform.api.hap.HAPStatus.SERVICE_COMMUNICATION_FAILURE */);
472
+ }
473
+ const volumeLevel = Number(value);
474
+ const success = await this.multiServiceAccessory.sendCommand('audioVolume', 'setVolume', [volumeLevel]);
475
+ if (success) {
476
+ this.currentVolume = volumeLevel;
477
+ this.log.debug(`Volume set to ${volumeLevel} for ${this.name}`);
478
+ this.multiServiceAccessory.forceNextStatusRefresh();
479
+ }
480
+ else {
481
+ this.log.error(`Volume command failed for ${this.name}`);
482
+ throw new this.platform.api.hap.HapStatusError(-70402 /* this.platform.api.hap.HAPStatus.SERVICE_COMMUNICATION_FAILURE */);
483
+ }
484
+ }
485
+ async setVolumeSelector(value) {
486
+ this.log.debug(`Volume selector for ${this.name}: ${value}`);
487
+ if (!this.multiServiceAccessory.isOnline()) {
488
+ throw new this.platform.api.hap.HapStatusError(-70402 /* this.platform.api.hap.HAPStatus.SERVICE_COMMUNICATION_FAILURE */);
489
+ }
490
+ const command = value === this.platform.Characteristic.VolumeSelector.INCREMENT ? 'volumeUp' : 'volumeDown';
491
+ const success = await this.multiServiceAccessory.sendCommand('audioVolume', command);
492
+ if (success) {
493
+ this.log.debug(`Volume ${command} successful for ${this.name}`);
494
+ this.multiServiceAccessory.forceNextStatusRefresh();
495
+ }
496
+ else {
497
+ this.log.error(`Volume ${command} failed for ${this.name}`);
498
+ }
499
+ }
500
+ // Speaker Active Methods
501
+ async getSpeakerActive() {
502
+ this.log.debug(`Getting speaker active state for ${this.name}`);
503
+ // Speaker is active when TV is active and not muted
504
+ const tvActive = await this.getTelevisionActive();
505
+ const isMuted = await this.getMute();
506
+ const speakerActive = tvActive === this.platform.Characteristic.Active.ACTIVE && !isMuted;
507
+ return speakerActive ? this.platform.Characteristic.Active.ACTIVE : this.platform.Characteristic.Active.INACTIVE;
508
+ }
509
+ async setSpeakerActive(value) {
510
+ this.log.debug(`Setting speaker active state for ${this.name} to ${value}`);
511
+ if (!this.multiServiceAccessory.isOnline()) {
512
+ throw new this.platform.api.hap.HapStatusError(-70402 /* this.platform.api.hap.HAPStatus.SERVICE_COMMUNICATION_FAILURE */);
513
+ }
514
+ // For speaker active/inactive, we control the mute state
515
+ // Active = unmute, Inactive = mute
516
+ const shouldMute = value === this.platform.Characteristic.Active.INACTIVE;
517
+ await this.setMute(shouldMute);
518
+ }
519
+ // Event Processing
520
+ processEvent(event) {
521
+ this.log.debug(`Processing event for TV ${this.name}: ${event.capability} = ${event.value}`);
522
+ switch (event.capability) {
523
+ case 'switch':
524
+ const isActive = event.value === 'on';
525
+ this.televisionService.updateCharacteristic(this.platform.Characteristic.Active, isActive ? this.platform.Characteristic.Active.ACTIVE : this.platform.Characteristic.Active.INACTIVE);
526
+ break;
527
+ case 'audioMute':
528
+ this.isMuted = event.value === 'muted';
529
+ this.televisionSpeakerService.updateCharacteristic(this.platform.Characteristic.Mute, this.isMuted);
530
+ // Update speaker active state based on mute status
531
+ this.televisionSpeakerService.updateCharacteristic(this.platform.Characteristic.Active, !this.isMuted ? this.platform.Characteristic.Active.ACTIVE : this.platform.Characteristic.Active.INACTIVE);
532
+ break;
533
+ case 'audioVolume':
534
+ if (typeof event.value === 'number') {
535
+ this.currentVolume = event.value;
536
+ if (this.televisionSpeakerService.testCharacteristic(this.platform.Characteristic.Volume)) {
537
+ this.televisionSpeakerService.updateCharacteristic(this.platform.Characteristic.Volume, this.currentVolume);
538
+ }
539
+ }
540
+ break;
541
+ case 'samsungvd.mediaInputSource':
542
+ if (event.attribute === 'inputSource') {
543
+ const inputIndex = this.inputSourcesMap.findIndex(input => input.id === event.value);
544
+ if (inputIndex >= 0) {
545
+ this.currentInputSource = inputIndex + 1;
546
+ this.televisionService.updateCharacteristic(this.platform.Characteristic.ActiveIdentifier, this.currentInputSource);
547
+ }
548
+ }
549
+ break;
550
+ case 'custom.picturemode':
551
+ if (event.attribute === 'pictureMode' && this.televisionService.testCharacteristic(this.platform.Characteristic.PictureMode)) {
552
+ // Update picture mode if the service supports it
553
+ this.getPictureMode().then(mode => {
554
+ this.televisionService.updateCharacteristic(this.platform.Characteristic.PictureMode, mode);
555
+ });
556
+ }
557
+ break;
558
+ default:
559
+ this.log.debug(`Unhandled TV event capability: ${event.capability}`);
560
+ break;
561
+ }
562
+ }
563
+ // Static method to detect if a device is a TV
564
+ static isTelevisionDevice(device) {
565
+ var _a, _b, _c, _d;
566
+ // Check for Samsung TV-specific indicators
567
+ const hasDeviceCategory = (_a = device.components) === null || _a === void 0 ? void 0 : _a.some(component => { var _a; return (_a = component.capabilities) === null || _a === void 0 ? void 0 : _a.some(cap => cap.id === 'samsungvd.deviceCategory'); });
568
+ const hasMediaInput = (_b = device.components) === null || _b === void 0 ? void 0 : _b.some(component => { var _a; return (_a = component.capabilities) === null || _a === void 0 ? void 0 : _a.some(cap => cap.id === 'samsungvd.mediaInputSource'); });
569
+ const hasAudioCapabilities = (_c = device.components) === null || _c === void 0 ? void 0 : _c.some(component => { var _a; return (_a = component.capabilities) === null || _a === void 0 ? void 0 : _a.some(cap => cap.id === 'audioVolume' || cap.id === 'audioMute'); });
570
+ const hasTvChannel = (_d = device.components) === null || _d === void 0 ? void 0 : _d.some(component => { var _a; return (_a = component.capabilities) === null || _a === void 0 ? void 0 : _a.some(cap => cap.id === 'tvChannel'); });
571
+ // A device is considered a TV if it has multiple TV-specific capabilities
572
+ const tvIndicatorCount = [hasDeviceCategory, hasMediaInput, hasAudioCapabilities, hasTvChannel].filter(Boolean).length;
573
+ return tvIndicatorCount >= 2; // Require at least 2 TV-specific capability groups
574
+ }
575
+ // Static method to get TV-related capabilities for the capability map
576
+ static getTvCapabilities() {
577
+ return [
578
+ 'switch', // Power control
579
+ 'samsungvd.deviceCategory',
580
+ 'samsungvd.mediaInputSource',
581
+ 'audioVolume',
582
+ 'audioMute',
583
+ 'tvChannel',
584
+ 'mediaPlayback',
585
+ 'custom.picturemode',
586
+ 'custom.soundmode'
587
+ ];
588
+ }
589
+ }
590
+ exports.TelevisionService = TelevisionService;
591
+ //# sourceMappingURL=televisionService.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"televisionService.js","sourceRoot":"","sources":["../../src/services/televisionService.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "private": false,
3
3
  "displayName": "Homebridge Smartthings oAuth Plugin",
4
4
  "name": "homebridge-smartthings-oauth",
5
- "version": "1.0.14",
5
+ "version": "1.0.16",
6
6
  "description": "Connects SmartThings devices to Homebridge. Automatically discovers devices.",
7
7
  "license": "Apache-2.0",
8
8
  "repository": {
@@ -1,123 +0,0 @@
1
- # SmartThings Plugin - Homebridge v2.0 Migration
2
-
3
- ## 🎉 Migration Complete!
4
-
5
- The SmartThings Homebridge plugin has been successfully updated to support Homebridge v2.0!
6
-
7
- ## What's New
8
-
9
- ### ✅ Homebridge v2.0 Support
10
- - **Compatible with**: Homebridge v1.6.0+ and v2.0.0-beta.0+
11
- - **Backward Compatible**: All existing functionality preserved
12
- - **No Breaking Changes**: Existing users can upgrade safely
13
-
14
- ### ✅ HAP-NodeJS v1 Compliance
15
- - **BatteryService Updated**: Renamed to `Battery` (required by HAP-NodeJS v1)
16
- - **Modern API Usage**: Already using modern Homebridge API patterns
17
- - **No Deprecated Code**: Clean, future-proof implementation
18
-
19
- ### ✅ Enhanced Error Handling
20
- - **Crash Loop Recovery**: Improved error handling and recovery mechanisms
21
- - **Better Logging**: Enhanced debugging and troubleshooting capabilities
22
-
23
- ## For Users
24
-
25
- ### Current Homebridge v1.x Users
26
- - **No Action Required**: Your plugin will continue to work exactly as before
27
- - **Safe to Update**: You can update to this version without any issues
28
- - **Future Ready**: You'll be ready when Homebridge v2.0 is released
29
-
30
- ### Homebridge v2.0 Beta Users
31
- - **Ready to Test**: Plugin now supports Homebridge v2.0.0-beta.0
32
- - **Full Functionality**: All features work as expected
33
- - **Report Issues**: If you encounter any issues, please report them
34
-
35
- ## Technical Changes
36
-
37
- ### What Was Updated
38
- 1. **BatteryService → Battery**: Class name change (required by HAP-NodeJS v1)
39
- 2. **Package.json**: Added Homebridge v2.0.0-beta.0 support
40
- 3. **Error Handling**: Added crash loop recovery method
41
- 4. **Documentation**: Comprehensive migration documentation
42
-
43
- ### What Was Already Compliant
44
- - ✅ Characteristic enum access patterns
45
- - ✅ No deprecated method usage
46
- - ✅ Modern API patterns
47
- - ✅ TypeScript compliance
48
-
49
- ## Testing Status
50
-
51
- ### ✅ Completed
52
- - **Build**: TypeScript compilation successful
53
- - **Lint**: Code quality checks passed
54
- - **Compatibility**: Backward compatibility verified
55
- - **Documentation**: Migration guides created
56
-
57
- ### 🔄 Recommended Testing
58
- - **Installation**: Test with Homebridge v2.0.0-beta.0
59
- - **Authentication**: Verify OAuth flow works
60
- - **Device Discovery**: Test device registration
61
- - **Real-time Updates**: Test webhook functionality
62
- - **All Device Types**: Test switches, lights, thermostats, sensors, etc.
63
-
64
- ## Migration Documents
65
-
66
- ### 📋 Planning Documents
67
- - `HOMEBRIDGE_V2_MIGRATION_PLAN.md` - Comprehensive migration plan
68
- - `MIGRATION_TASKS.md` - Detailed task breakdown
69
- - `MIGRATION_PROGRESS.md` - Progress tracking
70
-
71
- ### 📊 Summary Documents
72
- - `MIGRATION_SUMMARY.md` - Technical summary of changes
73
- - `README_MIGRATION.md` - This user-friendly guide
74
-
75
- ## Next Steps
76
-
77
- ### For Users
78
- 1. **Update Plugin**: Install the latest version
79
- 2. **Test Functionality**: Verify all devices work as expected
80
- 3. **Monitor Logs**: Watch for any issues
81
- 4. **Report Issues**: If problems occur, report with logs
82
-
83
- ### For Developers
84
- 1. **Test with Beta**: Test with Homebridge v2.0.0-beta.0
85
- 2. **Monitor Updates**: Watch for Homebridge v2.0 final release
86
- 3. **Update Documentation**: Update when v2.0 is stable
87
- 4. **Remove Beta Support**: Remove `-beta.0` when v2.0 is released
88
-
89
- ## Risk Assessment
90
-
91
- ### ✅ Low Risk
92
- - **BatteryService Rename**: Simple refactoring, well-tested
93
- - **Package.json Update**: Standard version update
94
- - **Error Handling**: Added with proper safeguards
95
-
96
- ### ⚠️ Medium Risk
97
- - **Homebridge v2.0 Testing**: Need testing with actual beta version
98
- - **Storage API**: May need updates in future versions
99
-
100
- ## Support
101
-
102
- ### Getting Help
103
- - **GitHub Issues**: Report bugs and feature requests
104
- - **Documentation**: Check the migration documents
105
- - **Community**: Homebridge community forums
106
-
107
- ### Known Issues
108
- - None currently identified
109
- - All existing functionality preserved
110
- - No breaking changes introduced
111
-
112
- ## Conclusion
113
-
114
- The SmartThings Homebridge plugin is now **ready for Homebridge v2.0**!
115
-
116
- - ✅ **Migration Complete**: All required changes implemented
117
- - ✅ **Backward Compatible**: Existing users unaffected
118
- - ✅ **Future Ready**: Ready for Homebridge v2.0 release
119
- - ✅ **Well Documented**: Comprehensive migration guides provided
120
-
121
- **Status**: Ready for production use and Homebridge v2.0 testing
122
- **Risk Level**: Low
123
- **Compatibility**: Full backward and forward compatibility