homebridge-smartthings-oauth 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.devcontainer/Dockerfile +16 -0
- package/.devcontainer/devcontainer.json +36 -0
- package/LICENSE +176 -0
- package/README.md +114 -0
- package/config.schema.json +134 -0
- package/dist/auth/auth.d.ts +23 -0
- package/dist/auth/auth.d.ts.map +1 -0
- package/dist/auth/auth.js +168 -0
- package/dist/auth/auth.js.map +1 -0
- package/dist/auth/tokenManager.d.ts +36 -0
- package/dist/auth/tokenManager.d.ts.map +1 -0
- package/dist/auth/tokenManager.js +180 -0
- package/dist/auth/tokenManager.js.map +1 -0
- package/dist/basePlatformAccessory.d.ts +49 -0
- package/dist/basePlatformAccessory.d.ts.map +1 -0
- package/dist/basePlatformAccessory.js +209 -0
- package/dist/basePlatformAccessory.js.map +1 -0
- package/dist/index.d.ts +7 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +7 -0
- package/dist/index.js.map +1 -0
- package/dist/keyValues.d.ts +4 -0
- package/dist/keyValues.d.ts.map +1 -0
- package/dist/keyValues.js +12 -0
- package/dist/keyValues.js.map +1 -0
- package/dist/multiServiceAccessory.d.ts +60 -0
- package/dist/multiServiceAccessory.d.ts.map +1 -0
- package/dist/multiServiceAccessory.js +398 -0
- package/dist/multiServiceAccessory.js.map +1 -0
- package/dist/platform.d.ts +42 -0
- package/dist/platform.d.ts.map +1 -0
- package/dist/platform.js +302 -0
- package/dist/platform.js.map +1 -0
- package/dist/services/airConditionerService.d.ts +52 -0
- package/dist/services/airConditionerService.d.ts.map +1 -0
- package/dist/services/airConditionerService.js +438 -0
- package/dist/services/airConditionerService.js.map +1 -0
- package/dist/services/baseService.d.ts +21 -0
- package/dist/services/baseService.d.ts.map +1 -0
- package/dist/services/baseService.js +63 -0
- package/dist/services/baseService.js.map +1 -0
- package/dist/services/batteryService.d.ts +10 -0
- package/dist/services/batteryService.d.ts.map +1 -0
- package/dist/services/batteryService.js +71 -0
- package/dist/services/batteryService.js.map +1 -0
- package/dist/services/carbonMonoxideDetector.d.ts +11 -0
- package/dist/services/carbonMonoxideDetector.d.ts.map +1 -0
- package/dist/services/carbonMonoxideDetector.js +28 -0
- package/dist/services/carbonMonoxideDetector.js.map +1 -0
- package/dist/services/contactSensorService.d.ts +10 -0
- package/dist/services/contactSensorService.d.ts.map +1 -0
- package/dist/services/contactSensorService.js +28 -0
- package/dist/services/contactSensorService.js.map +1 -0
- package/dist/services/doorService.d.ts +16 -0
- package/dist/services/doorService.d.ts.map +1 -0
- package/dist/services/doorService.js +138 -0
- package/dist/services/doorService.js.map +1 -0
- package/dist/services/fanSpeedService.d.ts +15 -0
- package/dist/services/fanSpeedService.d.ts.map +1 -0
- package/dist/services/fanSpeedService.js +153 -0
- package/dist/services/fanSpeedService.js.map +1 -0
- package/dist/services/fanSwitchLevelService.d.ts +14 -0
- package/dist/services/fanSwitchLevelService.d.ts.map +1 -0
- package/dist/services/fanSwitchLevelService.js +121 -0
- package/dist/services/fanSwitchLevelService.js.map +1 -0
- package/dist/services/humidityService.d.ts +10 -0
- package/dist/services/humidityService.d.ts.map +1 -0
- package/dist/services/humidityService.js +23 -0
- package/dist/services/humidityService.js.map +1 -0
- package/dist/services/leakDetector.d.ts +10 -0
- package/dist/services/leakDetector.d.ts.map +1 -0
- package/dist/services/leakDetector.js +27 -0
- package/dist/services/leakDetector.js.map +1 -0
- package/dist/services/lightSensorService.d.ts +10 -0
- package/dist/services/lightSensorService.d.ts.map +1 -0
- package/dist/services/lightSensorService.js +24 -0
- package/dist/services/lightSensorService.js.map +1 -0
- package/dist/services/lightService.d.ts +26 -0
- package/dist/services/lightService.d.ts.map +1 -0
- package/dist/services/lightService.js +340 -0
- package/dist/services/lightService.js.map +1 -0
- package/dist/services/lockService.d.ts +16 -0
- package/dist/services/lockService.d.ts.map +1 -0
- package/dist/services/lockService.js +128 -0
- package/dist/services/lockService.js.map +1 -0
- package/dist/services/motionService.d.ts +10 -0
- package/dist/services/motionService.d.ts.map +1 -0
- package/dist/services/motionService.js +23 -0
- package/dist/services/motionService.js.map +1 -0
- package/dist/services/occupancySensorService.d.ts +10 -0
- package/dist/services/occupancySensorService.d.ts.map +1 -0
- package/dist/services/occupancySensorService.js +23 -0
- package/dist/services/occupancySensorService.js.map +1 -0
- package/dist/services/sensorService.d.ts +15 -0
- package/dist/services/sensorService.d.ts.map +1 -0
- package/dist/services/sensorService.js +69 -0
- package/dist/services/sensorService.js.map +1 -0
- package/dist/services/smartThingsCommand.d.ts +7 -0
- package/dist/services/smartThingsCommand.d.ts.map +1 -0
- package/dist/services/smartThingsCommand.js +12 -0
- package/dist/services/smartThingsCommand.js.map +1 -0
- package/dist/services/smokeDetector.d.ts +10 -0
- package/dist/services/smokeDetector.d.ts.map +1 -0
- package/dist/services/smokeDetector.js +27 -0
- package/dist/services/smokeDetector.js.map +1 -0
- package/dist/services/statelessProgrammableSwitchService.d.ts +12 -0
- package/dist/services/statelessProgrammableSwitchService.d.ts.map +1 -0
- package/dist/services/statelessProgrammableSwitchService.js +94 -0
- package/dist/services/statelessProgrammableSwitchService.js.map +1 -0
- package/dist/services/switchService.d.ts +12 -0
- package/dist/services/switchService.d.ts.map +1 -0
- package/dist/services/switchService.js +72 -0
- package/dist/services/switchService.js.map +1 -0
- package/dist/services/temperatureService.d.ts +11 -0
- package/dist/services/temperatureService.d.ts.map +1 -0
- package/dist/services/temperatureService.js +32 -0
- package/dist/services/temperatureService.js.map +1 -0
- package/dist/services/thermostatService.d.ts +22 -0
- package/dist/services/thermostatService.d.ts.map +1 -0
- package/dist/services/thermostatService.js +273 -0
- package/dist/services/thermostatService.js.map +1 -0
- package/dist/services/valveService.d.ts +12 -0
- package/dist/services/valveService.d.ts.map +1 -0
- package/dist/services/valveService.js +59 -0
- package/dist/services/valveService.js.map +1 -0
- package/dist/services/windowCoveringService.d.ts +36 -0
- package/dist/services/windowCoveringService.d.ts.map +1 -0
- package/dist/services/windowCoveringService.js +158 -0
- package/dist/services/windowCoveringService.js.map +1 -0
- package/dist/settings.d.ts +9 -0
- package/dist/settings.d.ts.map +1 -0
- package/dist/settings.js +12 -0
- package/dist/settings.js.map +1 -0
- package/dist/webhook/subscriptionHandler.d.ts +32 -0
- package/dist/webhook/subscriptionHandler.d.ts.map +1 -0
- package/dist/webhook/subscriptionHandler.js +68 -0
- package/dist/webhook/subscriptionHandler.js.map +1 -0
- package/dist/webhook/webhookServer.d.ts +19 -0
- package/dist/webhook/webhookServer.d.ts.map +1 -0
- package/dist/webhook/webhookServer.js +125 -0
- package/dist/webhook/webhookServer.js.map +1 -0
- package/package.json +57 -0
package/dist/platform.js
ADDED
|
@@ -0,0 +1,302 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.IKHomeBridgeHomebridgePlatform = void 0;
|
|
4
|
+
const axios_1 = require("axios");
|
|
5
|
+
const settings_1 = require("./settings");
|
|
6
|
+
const axios = require("axios");
|
|
7
|
+
//import { BasePlatformAccessory } from './basePlatformAccessory';
|
|
8
|
+
const multiServiceAccessory_1 = require("./multiServiceAccessory");
|
|
9
|
+
const subscriptionHandler_1 = require("./webhook/subscriptionHandler");
|
|
10
|
+
const auth_1 = require("./auth/auth");
|
|
11
|
+
const webhookServer_1 = require("./webhook/webhookServer");
|
|
12
|
+
/**
|
|
13
|
+
* HomebridgePlatform
|
|
14
|
+
* This class is the main constructor for your plugin, this is where you should
|
|
15
|
+
* parse the user config and discover/register accessories with Homebridge.
|
|
16
|
+
*/
|
|
17
|
+
class IKHomeBridgeHomebridgePlatform {
|
|
18
|
+
constructor(log, config, api) {
|
|
19
|
+
this.log = log;
|
|
20
|
+
this.config = config;
|
|
21
|
+
this.api = api;
|
|
22
|
+
this.Service = this.api.hap.Service;
|
|
23
|
+
this.Characteristic = this.api.hap.Characteristic;
|
|
24
|
+
// this is used to track restored cached accessories
|
|
25
|
+
this.accessories = [];
|
|
26
|
+
this.locationIDsToIgnore = [];
|
|
27
|
+
this.roomsIDsToIgnore = [];
|
|
28
|
+
this.headerDict = {
|
|
29
|
+
'Authorization': 'Bearer: ' + this.config.AccessToken,
|
|
30
|
+
};
|
|
31
|
+
this.axInstance = axios.default.create({
|
|
32
|
+
baseURL: this.config.BaseURL,
|
|
33
|
+
headers: this.headerDict,
|
|
34
|
+
});
|
|
35
|
+
this.accessoryObjects = [];
|
|
36
|
+
this.subscriptionHandler = undefined;
|
|
37
|
+
this.log.debug('Finished initializing platform:', this.config.name);
|
|
38
|
+
// Initialize webhook server first
|
|
39
|
+
const webhookServer = new webhookServer_1.WebhookServer(this, this.log);
|
|
40
|
+
// Initialize OAuth2 authentication
|
|
41
|
+
this.auth = new auth_1.SmartThingsAuth(this.config.client_id, this.config.client_secret, this.log, this, this.api.user.storagePath(), webhookServer);
|
|
42
|
+
// Update axios instance with token refresh interceptor
|
|
43
|
+
this.axInstance.interceptors.request.use(async (config) => {
|
|
44
|
+
const token = this.auth.getAccessToken();
|
|
45
|
+
if (token) {
|
|
46
|
+
if (!config.headers) {
|
|
47
|
+
config.headers = new axios_1.AxiosHeaders();
|
|
48
|
+
}
|
|
49
|
+
config.headers.Authorization = `Bearer ${token}`;
|
|
50
|
+
}
|
|
51
|
+
return config;
|
|
52
|
+
});
|
|
53
|
+
// Add response interceptor to handle 401 errors
|
|
54
|
+
this.axInstance.interceptors.response.use((response) => response, async (error) => {
|
|
55
|
+
var _a;
|
|
56
|
+
const originalRequest = error.config;
|
|
57
|
+
// If the error is 401 and we haven't tried to refresh the token yet
|
|
58
|
+
if (((_a = error.response) === null || _a === void 0 ? void 0 : _a.status) === 401 && !originalRequest._retry) {
|
|
59
|
+
originalRequest._retry = true;
|
|
60
|
+
try {
|
|
61
|
+
// Get the current refresh token
|
|
62
|
+
const refreshToken = this.auth.tokenManager.getRefreshToken();
|
|
63
|
+
if (!refreshToken) {
|
|
64
|
+
this.log.error('Cannot refresh token: No refresh token available.');
|
|
65
|
+
this.auth.startAuthFlow(); // Start auth flow if no refresh token
|
|
66
|
+
return Promise.reject(new Error('No refresh token available for automatic refresh.'));
|
|
67
|
+
}
|
|
68
|
+
// Attempt to refresh the token using the specific token
|
|
69
|
+
await this.auth.refreshTokens(refreshToken);
|
|
70
|
+
// Update the Authorization header with the new token
|
|
71
|
+
const newToken = this.auth.getAccessToken();
|
|
72
|
+
if (newToken) {
|
|
73
|
+
if (!originalRequest.headers) {
|
|
74
|
+
originalRequest.headers = new axios_1.AxiosHeaders();
|
|
75
|
+
}
|
|
76
|
+
originalRequest.headers.Authorization = `Bearer ${newToken}`;
|
|
77
|
+
// Retry the original request with the new token
|
|
78
|
+
return this.axInstance(originalRequest);
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
catch (refreshError) {
|
|
82
|
+
this.log.error('Token refresh failed:', refreshError);
|
|
83
|
+
// Start new auth flow if refresh fails
|
|
84
|
+
this.auth.startAuthFlow();
|
|
85
|
+
return Promise.reject(refreshError);
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
return Promise.reject(error);
|
|
89
|
+
});
|
|
90
|
+
// When this event is fired it means Homebridge has restored all cached accessories from disk.
|
|
91
|
+
// Dynamic Platform plugins should only register new accessories after this event was fired,
|
|
92
|
+
// in order to ensure they weren't added to homebridge already. This event can also be used
|
|
93
|
+
// to start discovery of new accessories.
|
|
94
|
+
this.api.on('didFinishLaunching', async () => {
|
|
95
|
+
log.debug('Executed didFinishLaunching callback');
|
|
96
|
+
try {
|
|
97
|
+
// Initialize OAuth2 flow if needed and wait for it to complete
|
|
98
|
+
const authFlowStarted = await this.auth.initialize();
|
|
99
|
+
// Only proceed with device discovery if auth flow wasn't started and we have a valid token
|
|
100
|
+
if (!authFlowStarted && this.auth.getAccessToken()) {
|
|
101
|
+
// If locations or rooms to ignore are configured, then
|
|
102
|
+
// load request those from Smartthings to build the id lists.
|
|
103
|
+
if (this.config.IgnoreLocations) {
|
|
104
|
+
await this.getLocationsToIgnore();
|
|
105
|
+
}
|
|
106
|
+
const devices = await this.getOnlineDevices();
|
|
107
|
+
if (this.config.UnregisterAll) {
|
|
108
|
+
this.unregisterDevices(devices, true);
|
|
109
|
+
}
|
|
110
|
+
this.discoverDevices(devices);
|
|
111
|
+
this.unregisterDevices(devices);
|
|
112
|
+
// Start subscription service if we have a webhook token
|
|
113
|
+
if (config.WebhookToken && config.WebhookToken !== '') {
|
|
114
|
+
this.subscriptionHandler = new subscriptionHandler_1.SubscriptionHandler(this, this.accessoryObjects, webhookServer);
|
|
115
|
+
this.subscriptionHandler.startService();
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
else if (authFlowStarted) {
|
|
119
|
+
// If auth flow was started, log the waiting message
|
|
120
|
+
this.log.info('Waiting for SmartThings authentication to complete...');
|
|
121
|
+
}
|
|
122
|
+
else {
|
|
123
|
+
// Handle case where auth flow wasn't started but token is somehow still invalid (shouldn't happen often)
|
|
124
|
+
this.log.error('Authentication failed or token invalid after initialization.');
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
catch (error) {
|
|
128
|
+
this.log.error('Error during platform initialization:', error);
|
|
129
|
+
}
|
|
130
|
+
});
|
|
131
|
+
}
|
|
132
|
+
/**
|
|
133
|
+
* This function is invoked when homebridge restores cached accessories from disk at startup.
|
|
134
|
+
* It should be used to setup event handlers for characteristics and update respective values.
|
|
135
|
+
*/
|
|
136
|
+
configureAccessory(accessory) {
|
|
137
|
+
this.log.info('Loading accessory from cache:', accessory.displayName);
|
|
138
|
+
// add the restored accessory to the accessories cache so we can track if it has already been registered
|
|
139
|
+
this.accessories.push(accessory);
|
|
140
|
+
}
|
|
141
|
+
getLocationsToIgnore() {
|
|
142
|
+
this.log.info('Loading locations for exclusion');
|
|
143
|
+
return new Promise((resolve) => {
|
|
144
|
+
this.axInstance.get('locations').then(res => {
|
|
145
|
+
res.data.items.forEach(location => {
|
|
146
|
+
if (this.config.IgnoreLocations.find(l => l.toLowerCase() === location.name.toLowerCase())) {
|
|
147
|
+
this.locationIDsToIgnore.push(location.locationId);
|
|
148
|
+
}
|
|
149
|
+
});
|
|
150
|
+
this.log.info(`Found ${this.locationIDsToIgnore.length} locations to ignore`);
|
|
151
|
+
resolve(true);
|
|
152
|
+
}).catch(reason => {
|
|
153
|
+
this.log.error('Could not load locations: ' + reason + '. You must have r:locations permissions set on the token');
|
|
154
|
+
resolve(true);
|
|
155
|
+
});
|
|
156
|
+
});
|
|
157
|
+
}
|
|
158
|
+
getOnlineDevices() {
|
|
159
|
+
this.log.debug('Discovering devices...');
|
|
160
|
+
const command = 'devices';
|
|
161
|
+
const devices = [];
|
|
162
|
+
return new Promise((resolve, reject) => {
|
|
163
|
+
this.axInstance.get(command).then((res) => {
|
|
164
|
+
res.data.items.forEach((device) => {
|
|
165
|
+
// If an apostrophe is included in the name of the device in SmartThings, it comes over as a Right Single
|
|
166
|
+
// quote which will not match with a single quote in the config. This replaces it so it will match
|
|
167
|
+
if (!device.label) {
|
|
168
|
+
device.label = 'Missing Name';
|
|
169
|
+
}
|
|
170
|
+
let deviceName = '';
|
|
171
|
+
try {
|
|
172
|
+
// deviceName = device.label.toString().replaceAll(String.fromCharCode(8217), '\'');
|
|
173
|
+
deviceName = device.label;
|
|
174
|
+
}
|
|
175
|
+
catch (error) {
|
|
176
|
+
this.log.warn(`Error getting device name for ${device.label}: ${error}`);
|
|
177
|
+
deviceName = device.label;
|
|
178
|
+
}
|
|
179
|
+
if (this.config.IgnoreDevices &&
|
|
180
|
+
//this.config.IgnoreDevices.find(d => d.replaceAll(String.fromCharCode(8217), '\'').toLowerCase() === deviceName.toLowerCase())) {
|
|
181
|
+
this.config.IgnoreDevices.find(d => d.toLowerCase() === deviceName.toLowerCase())) {
|
|
182
|
+
this.log.info(`Ignoring ${device.label} because it is in the Ignore Devices list`);
|
|
183
|
+
return;
|
|
184
|
+
}
|
|
185
|
+
if (!this.locationIDsToIgnore.find(locationID => device.locationId === locationID)) {
|
|
186
|
+
this.log.debug('Pushing ' + device.label);
|
|
187
|
+
devices.push(device);
|
|
188
|
+
}
|
|
189
|
+
else {
|
|
190
|
+
this.log.info(`Ignoring ${device.label} because it is in a location to ignore (${device.locationId})`);
|
|
191
|
+
}
|
|
192
|
+
});
|
|
193
|
+
this.log.debug('Stored all devices.');
|
|
194
|
+
resolve(devices);
|
|
195
|
+
}).catch(error => {
|
|
196
|
+
this.log.error('Error getting devices from Smartthings: ' + error);
|
|
197
|
+
reject();
|
|
198
|
+
});
|
|
199
|
+
});
|
|
200
|
+
}
|
|
201
|
+
unregisterDevices(devices, all = false) {
|
|
202
|
+
const accessoriesToRemove = [];
|
|
203
|
+
//
|
|
204
|
+
// Loop through each accessory. If they are not present in the list
|
|
205
|
+
// of current devices, then unregister them.
|
|
206
|
+
//
|
|
207
|
+
this.accessories.forEach(accessory => {
|
|
208
|
+
if (all) {
|
|
209
|
+
this.log.info('Unregistering all devices');
|
|
210
|
+
this.log.info('Will unregister ' + accessory.context.device.label);
|
|
211
|
+
accessoriesToRemove.push(accessory);
|
|
212
|
+
}
|
|
213
|
+
if (!devices.find(device => {
|
|
214
|
+
return device.deviceId === accessory.UUID;
|
|
215
|
+
})) {
|
|
216
|
+
this.log.info('Will unregister ' + accessory.context.device.label);
|
|
217
|
+
accessoriesToRemove.push(accessory);
|
|
218
|
+
}
|
|
219
|
+
});
|
|
220
|
+
if (accessoriesToRemove.length > 0) {
|
|
221
|
+
this.api.unregisterPlatformAccessories(settings_1.PLUGIN_NAME, settings_1.PLATFORM_NAME, accessoriesToRemove);
|
|
222
|
+
}
|
|
223
|
+
}
|
|
224
|
+
/**
|
|
225
|
+
* This is an example method showing how to register discovered accessories.
|
|
226
|
+
* Accessories must only be registered once, previously created accessories
|
|
227
|
+
* must not be registered again to prevent "duplicate UUID" errors.
|
|
228
|
+
*/
|
|
229
|
+
discoverDevices(devices) {
|
|
230
|
+
//
|
|
231
|
+
// for now, unregister all accessories first
|
|
232
|
+
// REMOVE ME
|
|
233
|
+
// this.api.unregisterPlatformAccessories(PLUGIN_NAME, PLATFORM_NAME, this.accessories);
|
|
234
|
+
devices.forEach((device) => {
|
|
235
|
+
this.log.debug('DEVICE DATA: ' + JSON.stringify(device));
|
|
236
|
+
if (this.findSupportedCapability(device)) {
|
|
237
|
+
const existingAccessory = this.accessories.find(accessory => accessory.UUID === device.deviceId);
|
|
238
|
+
if (existingAccessory) {
|
|
239
|
+
// the accessory already exists
|
|
240
|
+
this.log.info('Restoring existing accessory from cache:', existingAccessory.displayName);
|
|
241
|
+
// if you need to update the accessory.context then you should run `api.updatePlatformAccessories`. eg.:
|
|
242
|
+
// existingAccessory.context.device = device;
|
|
243
|
+
// this.api.updatePlatformAccessories([existingAccessory]);
|
|
244
|
+
// create the accessory handler for the restored accessory
|
|
245
|
+
// this is imported from `platformAccessory.ts`
|
|
246
|
+
this.accessoryObjects.push(this.createAccessoryObject(device, existingAccessory));
|
|
247
|
+
// it is possible to remove platform accessories at any time using `api.unregisterPlatformAccessories`, eg.:
|
|
248
|
+
// remove platform accessories when no longer present
|
|
249
|
+
// this.api.unregisterPlatformAccessories(PLUGIN_NAME, PLATFORM_NAME, [existingAccessory]);
|
|
250
|
+
// this.log.info('Removing existing accessory from cache:', existingAccessory.displayName);
|
|
251
|
+
}
|
|
252
|
+
else {
|
|
253
|
+
// the accessory does not yet exist, so we need to create it
|
|
254
|
+
this.log.info('Registering new accessory: ' + device.label);
|
|
255
|
+
// create a new accessory
|
|
256
|
+
const accessory = new this.api.platformAccessory(device.label, device.deviceId);
|
|
257
|
+
// store a copy of the device object in the `accessory.context`
|
|
258
|
+
// the `context` property can be used to store any data about the accessory you may need
|
|
259
|
+
accessory.context.device = device;
|
|
260
|
+
// create the accessory handler for the newly create accessory
|
|
261
|
+
// this is imported from `platformAccessory.ts`
|
|
262
|
+
this.accessoryObjects.push(this.createAccessoryObject(device, accessory));
|
|
263
|
+
// link the accessory to your platform
|
|
264
|
+
this.api.registerPlatformAccessories(settings_1.PLUGIN_NAME, settings_1.PLATFORM_NAME, [accessory]);
|
|
265
|
+
}
|
|
266
|
+
}
|
|
267
|
+
});
|
|
268
|
+
}
|
|
269
|
+
findSupportedCapability(device) {
|
|
270
|
+
// Look at capabilities on main component
|
|
271
|
+
// const component = device.components.find(c => c.id === 'main');
|
|
272
|
+
// if (component) {
|
|
273
|
+
// return (component.capabilities.find((ca) => MultiServiceAccessory.capabilitySupported(ca.id)));
|
|
274
|
+
// } else {
|
|
275
|
+
// return (device.components[0].capabilities.find((ca) => MultiServiceAccessory.capabilitySupported(ca.id)));
|
|
276
|
+
// }
|
|
277
|
+
// Look at capabiliiies on all components
|
|
278
|
+
let found = false;
|
|
279
|
+
device.components.forEach(component => {
|
|
280
|
+
if (!found && component.capabilities.find((ca) => multiServiceAccessory_1.MultiServiceAccessory.capabilitySupported(ca.id))) {
|
|
281
|
+
found = true;
|
|
282
|
+
}
|
|
283
|
+
});
|
|
284
|
+
return found;
|
|
285
|
+
}
|
|
286
|
+
createAccessoryObject(device, accessory) {
|
|
287
|
+
// const component = device.components.find(c => c.id === 'main');
|
|
288
|
+
// let capabilities;
|
|
289
|
+
// if (component) {
|
|
290
|
+
// capabilities = component.capabilities;
|
|
291
|
+
// } else {
|
|
292
|
+
// capabilities = device.components[0].capabilities;
|
|
293
|
+
// }
|
|
294
|
+
const acc = new multiServiceAccessory_1.MultiServiceAccessory(this, accessory);
|
|
295
|
+
device.components.forEach(component => {
|
|
296
|
+
acc.addComponent(component.id, component.capabilities.map((c) => c.id));
|
|
297
|
+
});
|
|
298
|
+
return acc;
|
|
299
|
+
}
|
|
300
|
+
}
|
|
301
|
+
exports.IKHomeBridgeHomebridgePlatform = IKHomeBridgeHomebridgePlatform;
|
|
302
|
+
//# sourceMappingURL=platform.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"platform.js","sourceRoot":"","sources":["../src/platform.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import { PlatformAccessory } from 'homebridge';
|
|
2
|
+
import { IKHomeBridgeHomebridgePlatform } from '../platform';
|
|
3
|
+
import { MultiServiceAccessory } from '../multiServiceAccessory';
|
|
4
|
+
import { ShortEvent } from '../webhook/subscriptionHandler';
|
|
5
|
+
import { BaseService } from './baseService';
|
|
6
|
+
export declare class AirConditionerService extends BaseService {
|
|
7
|
+
private temperatureUnit;
|
|
8
|
+
private thermostatService;
|
|
9
|
+
private fanService;
|
|
10
|
+
private humidityService;
|
|
11
|
+
private optionalModeSwitchService;
|
|
12
|
+
private optionalMode;
|
|
13
|
+
private lightService;
|
|
14
|
+
constructor(platform: IKHomeBridgeHomebridgePlatform, accessory: PlatformAccessory, componentId: string, capabilities: string[], multiServiceAccessory: MultiServiceAccessory, name: string, deviceStatus: any);
|
|
15
|
+
private isCapabilitySupported;
|
|
16
|
+
private setupThermostat;
|
|
17
|
+
private setupFan;
|
|
18
|
+
private setupOptionalModeSwitch;
|
|
19
|
+
private setupHumiditySensor;
|
|
20
|
+
private setupLightSwitch;
|
|
21
|
+
private getHumidityLevel;
|
|
22
|
+
private levelToFanMode;
|
|
23
|
+
private fanModeToLevel;
|
|
24
|
+
private fanOscillationModeToSwingMode;
|
|
25
|
+
private getLightSwitchState;
|
|
26
|
+
private setLightSwitchState;
|
|
27
|
+
private getLightBrightness;
|
|
28
|
+
private setLightBrightness;
|
|
29
|
+
private setOptionalModeSwitchState;
|
|
30
|
+
private getOptionalModeSwitchState;
|
|
31
|
+
private setSwitchState;
|
|
32
|
+
private getSwitchState;
|
|
33
|
+
private setFanLevel;
|
|
34
|
+
private getFanLevel;
|
|
35
|
+
private setSwingMode;
|
|
36
|
+
private getSwingMode;
|
|
37
|
+
private airConditionerModeToTargetHeatingCoolingState;
|
|
38
|
+
private targetHeatingCoolingStateToAirConditionerMode;
|
|
39
|
+
private getTargetHeatingCoolingState;
|
|
40
|
+
private setTargetHeatingCoolingState;
|
|
41
|
+
private getCurrentHeatingCoolingState;
|
|
42
|
+
private getCurrentTemperature;
|
|
43
|
+
private getTargetTemperature;
|
|
44
|
+
private setTargetTemperature;
|
|
45
|
+
private getTemperatureDisplayUnits;
|
|
46
|
+
private toCelsius;
|
|
47
|
+
private fromCelsius;
|
|
48
|
+
private sendCommandsOrFail;
|
|
49
|
+
private getDeviceStatus;
|
|
50
|
+
processEvent(event: ShortEvent): void;
|
|
51
|
+
}
|
|
52
|
+
//# sourceMappingURL=airConditionerService.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"airConditionerService.d.ts","sourceRoot":"","sources":["../../src/services/airConditionerService.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAgC,MAAM,YAAY,CAAC;AAC7E,OAAO,EAAE,8BAA8B,EAAE,MAAM,aAAa,CAAC;AAC7D,OAAO,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AAEjE,OAAO,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAC;AAC5D,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AA0C5C,qBAAa,qBAAsB,SAAQ,WAAW;IAEpD,OAAO,CAAC,eAAe,CAA4C;IAEnE,OAAO,CAAC,iBAAiB,CAAU;IACnC,OAAO,CAAC,UAAU,CAAU;IAC5B,OAAO,CAAC,eAAe,CAAsB;IAC7C,OAAO,CAAC,yBAAyB,CAAsB;IACvD,OAAO,CAAC,YAAY,CAA2B;IAC/C,OAAO,CAAC,YAAY,CAAsB;gBAE9B,QAAQ,EAAE,8BAA8B,EAAE,SAAS,EAAE,iBAAiB,EAAE,WAAW,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,EAC7H,qBAAqB,EAAE,qBAAqB,EAC5C,IAAI,EAAE,MAAM,EAAE,YAAY,KAAA;IAgC5B,OAAO,CAAC,qBAAqB;IAI7B,OAAO,CAAC,eAAe;IAmCvB,OAAO,CAAC,QAAQ;IA4BhB,OAAO,CAAC,uBAAuB;IAa/B,OAAO,CAAC,mBAAmB;IAY3B,OAAO,CAAC,gBAAgB;YAmBV,gBAAgB;IAK9B,OAAO,CAAC,cAAc;IAoBtB,OAAO,CAAC,cAAc;IAetB,OAAO,CAAC,6BAA6B;YAUvB,mBAAmB;YAKnB,mBAAmB;YAMnB,kBAAkB;YAKlB,kBAAkB;YAKlB,0BAA0B;YAU1B,0BAA0B;YAO1B,cAAc;YAwBd,cAAc;IAK5B,OAAO,CAAC,WAAW;YAOL,WAAW;IAYzB,OAAO,CAAC,YAAY;YAQN,YAAY;IAQ1B,OAAO,CAAC,6CAA6C;IAgBrD,OAAO,CAAC,6CAA6C;YAcvC,4BAA4B;YAe5B,4BAA4B;YAoB5B,6BAA6B;YAyB7B,qBAAqB;YAkBrB,oBAAoB;IAYlC,OAAO,CAAC,oBAAoB;IAQ5B,OAAO,CAAC,0BAA0B;IAQlC,OAAO,CAAC,SAAS;IAKjB,OAAO,CAAC,WAAW;YAIL,kBAAkB;YAYlB,eAAe;IAQtB,YAAY,CAAC,KAAK,EAAE,UAAU,GAAG,IAAI;CA2C7C"}
|