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.
Files changed (142) hide show
  1. package/.devcontainer/Dockerfile +16 -0
  2. package/.devcontainer/devcontainer.json +36 -0
  3. package/LICENSE +176 -0
  4. package/README.md +114 -0
  5. package/config.schema.json +134 -0
  6. package/dist/auth/auth.d.ts +23 -0
  7. package/dist/auth/auth.d.ts.map +1 -0
  8. package/dist/auth/auth.js +168 -0
  9. package/dist/auth/auth.js.map +1 -0
  10. package/dist/auth/tokenManager.d.ts +36 -0
  11. package/dist/auth/tokenManager.d.ts.map +1 -0
  12. package/dist/auth/tokenManager.js +180 -0
  13. package/dist/auth/tokenManager.js.map +1 -0
  14. package/dist/basePlatformAccessory.d.ts +49 -0
  15. package/dist/basePlatformAccessory.d.ts.map +1 -0
  16. package/dist/basePlatformAccessory.js +209 -0
  17. package/dist/basePlatformAccessory.js.map +1 -0
  18. package/dist/index.d.ts +7 -0
  19. package/dist/index.d.ts.map +1 -0
  20. package/dist/index.js +7 -0
  21. package/dist/index.js.map +1 -0
  22. package/dist/keyValues.d.ts +4 -0
  23. package/dist/keyValues.d.ts.map +1 -0
  24. package/dist/keyValues.js +12 -0
  25. package/dist/keyValues.js.map +1 -0
  26. package/dist/multiServiceAccessory.d.ts +60 -0
  27. package/dist/multiServiceAccessory.d.ts.map +1 -0
  28. package/dist/multiServiceAccessory.js +398 -0
  29. package/dist/multiServiceAccessory.js.map +1 -0
  30. package/dist/platform.d.ts +42 -0
  31. package/dist/platform.d.ts.map +1 -0
  32. package/dist/platform.js +302 -0
  33. package/dist/platform.js.map +1 -0
  34. package/dist/services/airConditionerService.d.ts +52 -0
  35. package/dist/services/airConditionerService.d.ts.map +1 -0
  36. package/dist/services/airConditionerService.js +438 -0
  37. package/dist/services/airConditionerService.js.map +1 -0
  38. package/dist/services/baseService.d.ts +21 -0
  39. package/dist/services/baseService.d.ts.map +1 -0
  40. package/dist/services/baseService.js +63 -0
  41. package/dist/services/baseService.js.map +1 -0
  42. package/dist/services/batteryService.d.ts +10 -0
  43. package/dist/services/batteryService.d.ts.map +1 -0
  44. package/dist/services/batteryService.js +71 -0
  45. package/dist/services/batteryService.js.map +1 -0
  46. package/dist/services/carbonMonoxideDetector.d.ts +11 -0
  47. package/dist/services/carbonMonoxideDetector.d.ts.map +1 -0
  48. package/dist/services/carbonMonoxideDetector.js +28 -0
  49. package/dist/services/carbonMonoxideDetector.js.map +1 -0
  50. package/dist/services/contactSensorService.d.ts +10 -0
  51. package/dist/services/contactSensorService.d.ts.map +1 -0
  52. package/dist/services/contactSensorService.js +28 -0
  53. package/dist/services/contactSensorService.js.map +1 -0
  54. package/dist/services/doorService.d.ts +16 -0
  55. package/dist/services/doorService.d.ts.map +1 -0
  56. package/dist/services/doorService.js +138 -0
  57. package/dist/services/doorService.js.map +1 -0
  58. package/dist/services/fanSpeedService.d.ts +15 -0
  59. package/dist/services/fanSpeedService.d.ts.map +1 -0
  60. package/dist/services/fanSpeedService.js +153 -0
  61. package/dist/services/fanSpeedService.js.map +1 -0
  62. package/dist/services/fanSwitchLevelService.d.ts +14 -0
  63. package/dist/services/fanSwitchLevelService.d.ts.map +1 -0
  64. package/dist/services/fanSwitchLevelService.js +121 -0
  65. package/dist/services/fanSwitchLevelService.js.map +1 -0
  66. package/dist/services/humidityService.d.ts +10 -0
  67. package/dist/services/humidityService.d.ts.map +1 -0
  68. package/dist/services/humidityService.js +23 -0
  69. package/dist/services/humidityService.js.map +1 -0
  70. package/dist/services/leakDetector.d.ts +10 -0
  71. package/dist/services/leakDetector.d.ts.map +1 -0
  72. package/dist/services/leakDetector.js +27 -0
  73. package/dist/services/leakDetector.js.map +1 -0
  74. package/dist/services/lightSensorService.d.ts +10 -0
  75. package/dist/services/lightSensorService.d.ts.map +1 -0
  76. package/dist/services/lightSensorService.js +24 -0
  77. package/dist/services/lightSensorService.js.map +1 -0
  78. package/dist/services/lightService.d.ts +26 -0
  79. package/dist/services/lightService.d.ts.map +1 -0
  80. package/dist/services/lightService.js +340 -0
  81. package/dist/services/lightService.js.map +1 -0
  82. package/dist/services/lockService.d.ts +16 -0
  83. package/dist/services/lockService.d.ts.map +1 -0
  84. package/dist/services/lockService.js +128 -0
  85. package/dist/services/lockService.js.map +1 -0
  86. package/dist/services/motionService.d.ts +10 -0
  87. package/dist/services/motionService.d.ts.map +1 -0
  88. package/dist/services/motionService.js +23 -0
  89. package/dist/services/motionService.js.map +1 -0
  90. package/dist/services/occupancySensorService.d.ts +10 -0
  91. package/dist/services/occupancySensorService.d.ts.map +1 -0
  92. package/dist/services/occupancySensorService.js +23 -0
  93. package/dist/services/occupancySensorService.js.map +1 -0
  94. package/dist/services/sensorService.d.ts +15 -0
  95. package/dist/services/sensorService.d.ts.map +1 -0
  96. package/dist/services/sensorService.js +69 -0
  97. package/dist/services/sensorService.js.map +1 -0
  98. package/dist/services/smartThingsCommand.d.ts +7 -0
  99. package/dist/services/smartThingsCommand.d.ts.map +1 -0
  100. package/dist/services/smartThingsCommand.js +12 -0
  101. package/dist/services/smartThingsCommand.js.map +1 -0
  102. package/dist/services/smokeDetector.d.ts +10 -0
  103. package/dist/services/smokeDetector.d.ts.map +1 -0
  104. package/dist/services/smokeDetector.js +27 -0
  105. package/dist/services/smokeDetector.js.map +1 -0
  106. package/dist/services/statelessProgrammableSwitchService.d.ts +12 -0
  107. package/dist/services/statelessProgrammableSwitchService.d.ts.map +1 -0
  108. package/dist/services/statelessProgrammableSwitchService.js +94 -0
  109. package/dist/services/statelessProgrammableSwitchService.js.map +1 -0
  110. package/dist/services/switchService.d.ts +12 -0
  111. package/dist/services/switchService.d.ts.map +1 -0
  112. package/dist/services/switchService.js +72 -0
  113. package/dist/services/switchService.js.map +1 -0
  114. package/dist/services/temperatureService.d.ts +11 -0
  115. package/dist/services/temperatureService.d.ts.map +1 -0
  116. package/dist/services/temperatureService.js +32 -0
  117. package/dist/services/temperatureService.js.map +1 -0
  118. package/dist/services/thermostatService.d.ts +22 -0
  119. package/dist/services/thermostatService.d.ts.map +1 -0
  120. package/dist/services/thermostatService.js +273 -0
  121. package/dist/services/thermostatService.js.map +1 -0
  122. package/dist/services/valveService.d.ts +12 -0
  123. package/dist/services/valveService.d.ts.map +1 -0
  124. package/dist/services/valveService.js +59 -0
  125. package/dist/services/valveService.js.map +1 -0
  126. package/dist/services/windowCoveringService.d.ts +36 -0
  127. package/dist/services/windowCoveringService.d.ts.map +1 -0
  128. package/dist/services/windowCoveringService.js +158 -0
  129. package/dist/services/windowCoveringService.js.map +1 -0
  130. package/dist/settings.d.ts +9 -0
  131. package/dist/settings.d.ts.map +1 -0
  132. package/dist/settings.js +12 -0
  133. package/dist/settings.js.map +1 -0
  134. package/dist/webhook/subscriptionHandler.d.ts +32 -0
  135. package/dist/webhook/subscriptionHandler.d.ts.map +1 -0
  136. package/dist/webhook/subscriptionHandler.js +68 -0
  137. package/dist/webhook/subscriptionHandler.js.map +1 -0
  138. package/dist/webhook/webhookServer.d.ts +19 -0
  139. package/dist/webhook/webhookServer.d.ts.map +1 -0
  140. package/dist/webhook/webhookServer.js +125 -0
  141. package/dist/webhook/webhookServer.js.map +1 -0
  142. package/package.json +57 -0
@@ -0,0 +1,273 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ThermostatService = void 0;
4
+ const baseService_1 = require("./baseService");
5
+ class ThermostatService extends baseService_1.BaseService {
6
+ constructor(platform, accessory, componentId, capabilities, multiServiceAccessory, name, deviceStatus) {
7
+ super(platform, accessory, componentId, capabilities, multiServiceAccessory, name, deviceStatus);
8
+ this.units = 'C';
9
+ this.supportsOperatingState = false;
10
+ this.setServiceType(platform.Service.Thermostat);
11
+ // Set the event handlers
12
+ this.log.debug(`Adding ThermostatService to ${this.name}`);
13
+ const component = this.multiServiceAccessory.components.find((c) => c.componentId === componentId);
14
+ if (component && component.capabilities.find((cap) => cap === 'thermostatOperatingState')) {
15
+ //if (this.multiServiceAccessory.capabilities.find((c) => c.id === 'thermostatOperatingState')) {
16
+ this.supportsOperatingState = true;
17
+ }
18
+ this.service.getCharacteristic(platform.Characteristic.CurrentHeatingCoolingState)
19
+ .onGet(this.getCurrentHeatingCoolingState.bind(this));
20
+ this.service.getCharacteristic(platform.Characteristic.TargetHeatingCoolingState)
21
+ .onGet(this.getTargetHeatingCoolingState.bind(this))
22
+ .onSet(this.setTargetHeatingCoolingState.bind(this));
23
+ this.service.getCharacteristic(platform.Characteristic.CurrentTemperature)
24
+ .onGet(this.getCurrentTemperature.bind(this));
25
+ this.service.getCharacteristic(platform.Characteristic.TargetTemperature)
26
+ .onGet(this.getTargetTemperature.bind(this))
27
+ .onSet(this.setTargetTemperature.bind(this));
28
+ this.service.getCharacteristic(platform.Characteristic.TemperatureDisplayUnits)
29
+ .onGet(this.getTemperatureDisplayUnits.bind(this))
30
+ .onSet(this.setTemperatureDisplayUnits.bind(this));
31
+ this.targetHeatingCoolingState = platform.Characteristic.TargetHeatingCoolingState.OFF;
32
+ this.targetTemperature = 20;
33
+ // TODO: get the current mode and set targetHeatingCoolingState
34
+ // set targets
35
+ this.getCurrentHeatingCoolingState().then((value) => this.targetHeatingCoolingState = value);
36
+ this.getCurrentTemperature().then((value) => this.targetTemperature = value);
37
+ let pollSensors = 10; // default to 10 seconds
38
+ if (this.platform.config.PollSensorsSeconds !== undefined) {
39
+ pollSensors = this.platform.config.PollSensorsSeconds;
40
+ }
41
+ if (pollSensors > 0) {
42
+ multiServiceAccessory.startPollingState(pollSensors, this.getCurrentHeatingCoolingState.bind(this), this.service, platform.Characteristic.CurrentHeatingCoolingState, platform.Characteristic.TargetHeatingCoolingState, this.getTargetHeatingCoolingState.bind(this));
43
+ multiServiceAccessory.startPollingState(pollSensors, this.getCurrentTemperature.bind(this), this.service, platform.Characteristic.CurrentTemperature, platform.Characteristic.TargetTemperature, this.getTargetTemperature.bind(this));
44
+ }
45
+ }
46
+ // TARGET STATE CALLBACKS
47
+ async getTargetHeatingCoolingState() {
48
+ this.log.debug('Received getTargetHeatingCoolingState for ' + this.name);
49
+ return new Promise((resolve) => {
50
+ // If we don't have the capability of thermostatMode, then just return AUTO
51
+ if (this.capabilities.find((c) => c === 'thermostatMode') === undefined) {
52
+ resolve(this.targetHeatingCoolingState = this.platform.Characteristic.TargetHeatingCoolingState.AUTO);
53
+ return;
54
+ }
55
+ this.getStatus().then(success => {
56
+ let state;
57
+ if (success) {
58
+ state = this.deviceStatus.status.thermostatMode.thermostatMode.value;
59
+ if (state === null || state === undefined) {
60
+ this.log.error(`Received invalid heating / cooling state from ${this.name}`);
61
+ resolve(this.targetHeatingCoolingState);
62
+ return;
63
+ }
64
+ switch (state) {
65
+ case 'cool':
66
+ resolve(this.targetHeatingCoolingState = this.platform.Characteristic.TargetHeatingCoolingState.COOL);
67
+ return;
68
+ case 'heat':
69
+ resolve(this.targetHeatingCoolingState = this.platform.Characteristic.TargetHeatingCoolingState.HEAT);
70
+ return;
71
+ case 'auto':
72
+ resolve(this.targetHeatingCoolingState = this.platform.Characteristic.TargetHeatingCoolingState.AUTO);
73
+ return;
74
+ default:
75
+ resolve(this.targetHeatingCoolingState = this.platform.Characteristic.TargetHeatingCoolingState.OFF);
76
+ return;
77
+ }
78
+ }
79
+ else {
80
+ resolve(this.targetHeatingCoolingState);
81
+ return;
82
+ }
83
+ });
84
+ });
85
+ }
86
+ // Set the target state of the thermostat
87
+ async setTargetHeatingCoolingState(value) {
88
+ this.log.debug('Received setTargetHeatingCoolingState(' + value + ') event for ' + this.name);
89
+ if (!this.multiServiceAccessory.isOnline) {
90
+ this.log.error(this.name + ' is offline');
91
+ throw new this.platform.api.hap.HapStatusError(-70402 /* this.platform.api.hap.HAPStatus.SERVICE_COMMUNICATION_FAILURE */);
92
+ }
93
+ this.targetHeatingCoolingState = value;
94
+ if (this.capabilities.find((c) => c === 'thermostatMode') === undefined) {
95
+ this.log.debug(`Thermostat ${this.name} does not support thermostatMode. Ignoring request`);
96
+ return;
97
+ }
98
+ let cmd = '';
99
+ switch (value) {
100
+ case this.platform.Characteristic.TargetHeatingCoolingState.AUTO:
101
+ cmd = 'auto';
102
+ break;
103
+ case this.platform.Characteristic.TargetHeatingCoolingState.COOL:
104
+ cmd = 'cool';
105
+ break;
106
+ case this.platform.Characteristic.TargetHeatingCoolingState.HEAT:
107
+ cmd = 'heat';
108
+ break;
109
+ default:
110
+ cmd = 'off';
111
+ break;
112
+ }
113
+ this.multiServiceAccessory.sendCommand('thermostatMode', cmd).then((success) => {
114
+ if (success) {
115
+ this.log.debug('setTargetHeatingCoolingState(' + value + ') SUCCESSFUL for ' + this.name);
116
+ //this.deviceStatus.timestamp = 0; // Force a refresh next query.
117
+ }
118
+ else {
119
+ this.log.error(`Command failed for ${this.name}`);
120
+ }
121
+ });
122
+ }
123
+ // CURRENT STATE
124
+ async getCurrentHeatingCoolingState() {
125
+ // if you need to return an error to show the device as "Not Responding" in the Home app:
126
+ // throw new this.platform.api.hap.HapStatusError(this.platform.api.hap.HAPStatus.SERVICE_COMMUNICATION_FAILURE);
127
+ this.log.debug('Received getCurrentHeatingCoolingState() event for ' + this.name);
128
+ return new Promise((resolve, reject) => {
129
+ if (this.capabilities.find((c) => c === 'thermostatMode') === undefined) {
130
+ this.log.debug(`Thermostat ${this.name} does not support thermostatMode. Returning OFF`);
131
+ resolve(this.platform.Characteristic.CurrentHeatingCoolingState.OFF);
132
+ return;
133
+ }
134
+ this.getStatus().then(success => {
135
+ if (success) {
136
+ let thermostatMode;
137
+ try {
138
+ thermostatMode = this.deviceStatus.status.thermostatMode.thermostatMode.value;
139
+ }
140
+ catch (error) {
141
+ this.log.warn(`Missing thermostatMode from ${this.name}`);
142
+ resolve(this.targetHeatingCoolingState);
143
+ return;
144
+ }
145
+ this.log.debug(`thermostatMode value from ${this.name}: ${thermostatMode}`);
146
+ switch (thermostatMode) {
147
+ case 'cool':
148
+ resolve(this.platform.Characteristic.CurrentHeatingCoolingState.COOL);
149
+ break;
150
+ case 'heat':
151
+ resolve(this.platform.Characteristic.CurrentHeatingCoolingState.HEAT);
152
+ break;
153
+ default:
154
+ resolve(this.platform.Characteristic.CurrentHeatingCoolingState.OFF);
155
+ }
156
+ }
157
+ else {
158
+ reject(new this.platform.api.hap.HapStatusError(-70402 /* this.platform.api.hap.HAPStatus.SERVICE_COMMUNICATION_FAILURE */));
159
+ }
160
+ });
161
+ });
162
+ }
163
+ // CURRENT TEMP
164
+ async getCurrentTemperature() {
165
+ this.log.debug('Received getCurrentTemperature for ' + this.name);
166
+ return new Promise((resolve) => {
167
+ this.getStatus().then((success) => {
168
+ if (success) {
169
+ if (this.deviceStatus.status.temperatureMeasurement.temperature.value === null ||
170
+ this.deviceStatus.status.temperatureMeasurement.temperature.value === undefined ||
171
+ this.deviceStatus.status.temperatureMeasurement.temperature.unit === null ||
172
+ this.deviceStatus.status.temperatureMeasurement.temperature.value === undefined) {
173
+ this.log.warn(`${this.name} returned bad value for status`);
174
+ throw ('Bad Value');
175
+ }
176
+ if (this.deviceStatus.status.temperatureMeasurement.temperature.unit === 'F') {
177
+ this.log.debug('Converting temp to celcius');
178
+ this.units = 'F';
179
+ resolve((this.deviceStatus.status.temperatureMeasurement.temperature.value - 32) * (5 / 9)); // Convert to Celcius
180
+ }
181
+ else {
182
+ this.units = 'C';
183
+ resolve(this.deviceStatus.status.temperatureMeasurement.temperature.value);
184
+ }
185
+ }
186
+ else {
187
+ // reject (new this.platform.api.hap.HapStatusError(this.platform.api.hap.HAPStatus.SERVICE_COMMUNICATION_FAILURE));
188
+ // For some reason, when homekit makes this call and it fails, Homebridge crashes. So we will simply return zero.
189
+ this.log.warn(`Failed to get status for ${this.name}`);
190
+ resolve(0);
191
+ }
192
+ });
193
+ });
194
+ }
195
+ // TARGET TEMP
196
+ async getTargetTemperature() {
197
+ this.log.debug('Received GetTargetTemperature for ' + this.name);
198
+ let temp;
199
+ if (await this.getTargetHeatingCoolingState() === this.platform.Characteristic.TargetHeatingCoolingState.COOL) {
200
+ temp = this.deviceStatus.status.thermostatCoolingSetpoint.coolingSetpoint.value;
201
+ }
202
+ else {
203
+ temp = this.deviceStatus.status.thermostatHeatingSetpoint.heatingSetpoint.value;
204
+ }
205
+ if (temp === null || temp === undefined) {
206
+ throw (new this.platform.api.hap.HapStatusError(-70409 /* this.platform.api.hap.HAPStatus.RESOURCE_DOES_NOT_EXIST */));
207
+ }
208
+ if (this.units === 'F') {
209
+ temp = (temp - 32) * (5 / 9); // Convert to C
210
+ }
211
+ this.targetTemperature = temp;
212
+ return temp;
213
+ }
214
+ async setTargetTemperature(value) {
215
+ this.log.debug('Received setTargetTemperature(' + value + ') event for ' + this.name);
216
+ this.targetTemperature = value;
217
+ let capability = '';
218
+ let command = '';
219
+ if (this.targetHeatingCoolingState === this.platform.Characteristic.TargetHeatingCoolingState.COOL) {
220
+ capability = 'thermostatCoolingSetpoint';
221
+ command = 'setCoolingSetpoint';
222
+ }
223
+ else {
224
+ capability = 'thermostatHeatingSetpoint';
225
+ command = 'setHeatingSetpoint';
226
+ }
227
+ // If the thermostat's units is Farenheit, then we need to convert from celcius
228
+ const convertedTemp = this.units === 'F' ? (value * (9 / 5)) + 32 : value;
229
+ this.multiServiceAccessory.sendCommand(capability, command, [convertedTemp]);
230
+ }
231
+ // DISPLAY UNITS
232
+ getTemperatureDisplayUnits() {
233
+ this.log.debug('Received getTemperatureDislayUnits for ' + this.name);
234
+ if (this.units === 'C') {
235
+ return this.platform.Characteristic.TemperatureDisplayUnits.CELSIUS;
236
+ }
237
+ else {
238
+ return this.platform.Characteristic.TemperatureDisplayUnits.FAHRENHEIT;
239
+ }
240
+ }
241
+ setTemperatureDisplayUnits(value) {
242
+ // Nothing to do as there is no way to send this off to Smartthings
243
+ this.log.debug(`Received request to set display units to ${value}. No equivalent in Smartthings...`);
244
+ return;
245
+ }
246
+ processEvent(event) {
247
+ this.log.debug(`Updating ${event.attribute} for ${this.name} from event to ${event.value}`);
248
+ let characteristic = this.platform.Characteristic.TargetTemperature;
249
+ let value;
250
+ if (event.attribute === 'heatingSetpoint' || event.attribute === 'coolingSetpoint') {
251
+ value = this.units === 'F' ? (event.value - 32) * (5 / 9) : event.value;
252
+ }
253
+ else {
254
+ characteristic = this.platform.Characteristic.TargetHeatingCoolingState;
255
+ switch (event.value) {
256
+ case 'cool':
257
+ value = this.platform.Characteristic.TargetHeatingCoolingState.COOL;
258
+ break;
259
+ case 'heat':
260
+ value = this.platform.Characteristic.TargetHeatingCoolingState.HEAT;
261
+ break;
262
+ case 'auto':
263
+ value = this.platform.Characteristic.TargetHeatingCoolingState.AUTO;
264
+ break;
265
+ default:
266
+ value = this.platform.Characteristic.TargetHeatingCoolingState.OFF;
267
+ }
268
+ }
269
+ this.service.updateCharacteristic(characteristic, value);
270
+ }
271
+ }
272
+ exports.ThermostatService = ThermostatService;
273
+ //# sourceMappingURL=thermostatService.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"thermostatService.js","sourceRoot":"","sources":["../../src/services/thermostatService.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ import { PlatformAccessory, CharacteristicValue } 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 ValveService extends BaseService {
7
+ constructor(platform: IKHomeBridgeHomebridgePlatform, accessory: PlatformAccessory, componentId: string, capabilities: string[], multiServiceAccessory: MultiServiceAccessory, name: string, deviceStatus: any);
8
+ getValveState(): Promise<number>;
9
+ setValveState(value: CharacteristicValue): Promise<void>;
10
+ processEvent(event: ShortEvent): void;
11
+ }
12
+ //# sourceMappingURL=valveService.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"valveService.d.ts","sourceRoot":"","sources":["../../src/services/valveService.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AACpE,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,YAAa,SAAQ,WAAW;gBAE/B,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;IAetB,aAAa,IAAI,OAAO,CAAC,MAAM,CAAC;IAkBhC,aAAa,CAAC,KAAK,EAAE,mBAAmB;IAmBvC,YAAY,CAAC,KAAK,EAAE,UAAU,GAAG,IAAI;CAO7C"}
@@ -0,0 +1,59 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ValveService = void 0;
4
+ const baseService_1 = require("./baseService");
5
+ class ValveService extends baseService_1.BaseService {
6
+ constructor(platform, accessory, componentId, capabilities, multiServiceAccessory, name, deviceStatus) {
7
+ super(platform, accessory, componentId, capabilities, multiServiceAccessory, name, deviceStatus);
8
+ this.setServiceType(platform.Service.Valve);
9
+ // Set the event handlers
10
+ this.log.debug(`Adding ValveService to ${this.name}`);
11
+ this.service.getCharacteristic(platform.Characteristic.Active) // Always return true for active
12
+ .onGet(this.getValveState.bind(this))
13
+ .onSet(this.setValveState.bind(this));
14
+ this.service.getCharacteristic(platform.Characteristic.ValveType).onGet(() => platform.Characteristic.ValveType.IRRIGATION);
15
+ this.service.getCharacteristic(platform.Characteristic.InUse)
16
+ .onGet(this.getValveState.bind(this));
17
+ }
18
+ // Return the current target state
19
+ async getValveState() {
20
+ // If it has been more than 10 seconds since we've sent a transition command,
21
+ // reset the target state to the current state.
22
+ return new Promise((resolve, reject) => {
23
+ this.getStatus().then(success => {
24
+ if (!success) {
25
+ reject(new this.platform.api.hap.HapStatusError(-70402 /* this.platform.api.hap.HAPStatus.SERVICE_COMMUNICATION_FAILURE */));
26
+ return;
27
+ }
28
+ const valveState = this.deviceStatus.status.valve.valve.value;
29
+ this.log.debug(`Received valve value of ${valveState} from Smartthings`);
30
+ resolve(valveState === 'open' ? this.platform.Characteristic.Active.ACTIVE : this.platform.Characteristic.Active.INACTIVE);
31
+ });
32
+ });
33
+ }
34
+ // Set the target state of the valve
35
+ async setValveState(value) {
36
+ this.log.debug('Received setValveState(' + value + ') event for ' + this.name);
37
+ if (!this.multiServiceAccessory.isOnline) {
38
+ this.log.error(this.name + ' is offline');
39
+ throw new this.platform.api.hap.HapStatusError(-70402 /* this.platform.api.hap.HAPStatus.SERVICE_COMMUNICATION_FAILURE */);
40
+ }
41
+ const command = value === this.platform.Characteristic.Active.ACTIVE ? 'open' : 'close';
42
+ this.multiServiceAccessory.sendCommand('valve', command).then((success) => {
43
+ if (success) {
44
+ this.log.debug('onSet(' + value + ') SUCCESSFUL for ' + this.name);
45
+ this.multiServiceAccessory.forceNextStatusRefresh();
46
+ // this.deviceStatus.timestamp = 0; // Force refresh
47
+ }
48
+ else {
49
+ this.log.error(`Command failed for ${this.name}`);
50
+ }
51
+ });
52
+ }
53
+ processEvent(event) {
54
+ this.log.debug(`Event updating valve capability for ${this.name} to ${event.value}`);
55
+ this.service.updateCharacteristic(this.platform.Characteristic.Active, event.value === 'open' ? this.platform.Characteristic.Active.ACTIVE : this.platform.Characteristic.Active.INACTIVE);
56
+ }
57
+ }
58
+ exports.ValveService = ValveService;
59
+ //# sourceMappingURL=valveService.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"valveService.js","sourceRoot":"","sources":["../../src/services/valveService.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,36 @@
1
+ import { PlatformAccessory, CharacteristicValue } 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 WindowCoveringService extends BaseService {
7
+ private targetPosition;
8
+ private timer;
9
+ private states;
10
+ private currentPositionState;
11
+ private useWindowShadeLevel;
12
+ constructor(platform: IKHomeBridgeHomebridgePlatform, accessory: PlatformAccessory, componentId: string, capabilities: string[], multiServiceAccessory: MultiServiceAccessory, name: string, deviceStatus: any);
13
+ /**
14
+ * Handle "SET" requests from HomeKit
15
+ * These are sent when the user changes the state of an accessory, for example, turning on a Light bulb.
16
+ */
17
+ setTargetPosition(value: CharacteristicValue): Promise<void>;
18
+ getTargetPosition(): Promise<CharacteristicValue>;
19
+ getCurrentPositionState(): Promise<CharacteristicValue>;
20
+ /**
21
+ * Handle the "GET" requests from HomeKit
22
+ * These are sent when HomeKit wants to know the current state of the accessory, for example, checking if a Light bulb is on.
23
+ *
24
+ * GET requests should return as fast as possbile. A long delay here will result in
25
+ * HomeKit being unresponsive and a bad user experience in general.
26
+ *
27
+ * If your device takes time to respond you should update the status of your device
28
+ * asynchronously instead using the `updateCharacteristic` method instead.
29
+
30
+ * @example
31
+ * this.service.updateCharacteristic(this.platform.Characteristic.On, true)
32
+ */
33
+ getCurrentPosition(): Promise<CharacteristicValue>;
34
+ processEvent(event: ShortEvent): void;
35
+ }
36
+ //# sourceMappingURL=windowCoveringService.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"windowCoveringService.d.ts","sourceRoot":"","sources":["../../src/services/windowCoveringService.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AACpE,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,qBAAsB,SAAQ,WAAW;IACpD,OAAO,CAAC,cAAc,CAAK;IAC3B,OAAO,CAAC,KAAK,CAAC;IACd,OAAO,CAAC,MAAM,CAIZ;IAEF,OAAO,CAAC,oBAAoB,CAAuB;IAEnD,OAAO,CAAC,mBAAmB,CAAS;gBAExB,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;;;OAGG;IACG,iBAAiB,CAAC,KAAK,EAAE,mBAAmB;IA8B5C,iBAAiB,IAAI,OAAO,CAAC,mBAAmB,CAAC;IAMjD,uBAAuB,IAAI,OAAO,CAAC,mBAAmB,CAAC;IAyB7D;;;;;;;;;;;;OAYG;IACG,kBAAkB,IAAI,OAAO,CAAC,mBAAmB,CAAC;IA8BjD,YAAY,CAAC,KAAK,EAAE,UAAU,GAAG,IAAI;CAyB7C"}
@@ -0,0 +1,158 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.WindowCoveringService = void 0;
4
+ const baseService_1 = require("./baseService");
5
+ class WindowCoveringService extends baseService_1.BaseService {
6
+ constructor(platform, accessory, componentId, capabilities, multiServiceAccessory, name, deviceStatus) {
7
+ super(platform, accessory, componentId, capabilities, multiServiceAccessory, name, deviceStatus);
8
+ this.targetPosition = 0;
9
+ this.states = {
10
+ decreasing: this.platform.Characteristic.PositionState.DECREASING,
11
+ increasing: this.platform.Characteristic.PositionState.INCREASING,
12
+ stopped: this.platform.Characteristic.PositionState.STOPPED,
13
+ };
14
+ this.currentPositionState = this.states.stopped;
15
+ this.useWindowShadeLevel = false;
16
+ this.setServiceType(platform.Service.WindowCovering);
17
+ // Set the event handlers
18
+ this.log.debug(`Adding WindowCoveringService to ${this.name}`);
19
+ this.service.getCharacteristic(platform.Characteristic.CurrentPosition)
20
+ .onGet(this.getCurrentPosition.bind(this));
21
+ this.service.getCharacteristic(platform.Characteristic.PositionState)
22
+ .onGet(this.getCurrentPositionState.bind(this));
23
+ this.service.getCharacteristic(platform.Characteristic.TargetPosition)
24
+ .onGet(this.getTargetPosition.bind(this))
25
+ .onSet(this.setTargetPosition.bind(this));
26
+ let pollWindowShadesSeconds = 10; // default to 10 seconds
27
+ if (this.platform.config.PollWindowShadesSeconds !== undefined) {
28
+ pollWindowShadesSeconds = this.platform.config.PollSwitchesAndLightsSeconds;
29
+ }
30
+ if (pollWindowShadesSeconds > 0) {
31
+ multiServiceAccessory.startPollingState(pollWindowShadesSeconds, this.getCurrentPosition.bind(this), this.service, platform.Characteristic.CurrentPosition, platform.Characteristic.TargetPosition, this.getTargetPosition.bind(this));
32
+ multiServiceAccessory.startPollingState(pollWindowShadesSeconds, this.getCurrentPositionState.bind(this), this.service, platform.Characteristic.PositionState);
33
+ }
34
+ if (this.capabilities.includes('windowShadeLevel')) {
35
+ this.useWindowShadeLevel = true;
36
+ }
37
+ }
38
+ /**
39
+ * Handle "SET" requests from HomeKit
40
+ * These are sent when the user changes the state of an accessory, for example, turning on a Light bulb.
41
+ */
42
+ async setTargetPosition(value) {
43
+ this.log.debug('Received setTargetPosition(' + value + ') event for ' + this.name);
44
+ this.targetPosition = value;
45
+ if (!this.multiServiceAccessory.isOnline()) {
46
+ this.log.error(this.name + ' is offline');
47
+ throw new this.platform.api.hap.HapStatusError(-70402 /* this.platform.api.hap.HAPStatus.SERVICE_COMMUNICATION_FAILURE */);
48
+ }
49
+ let capability = 'switchLevel';
50
+ let command = 'setLevel';
51
+ if (this.useWindowShadeLevel) {
52
+ capability = 'windowShadeLevel';
53
+ command = 'setShadeLevel';
54
+ }
55
+ this.multiServiceAccessory.sendCommand(capability, command, [value])
56
+ .then(() => {
57
+ this.log.debug('onSet(' + value + ') SUCCESSFUL for ' + this.name);
58
+ this.multiServiceAccessory.forceNextStatusRefresh();
59
+ })
60
+ .catch(reason => {
61
+ this.log.error('onSet(' + value + ') FAILED for ' + this.name + ': reason ' + reason);
62
+ throw (new this.platform.api.hap.HapStatusError(-70402 /* this.platform.api.hap.HAPStatus.SERVICE_COMMUNICATION_FAILURE */));
63
+ });
64
+ }
65
+ async getTargetPosition() {
66
+ return new Promise(resolve => {
67
+ resolve(this.targetPosition);
68
+ });
69
+ }
70
+ async getCurrentPositionState() {
71
+ this.log.debug('Received getCurrentPositionState() event for ' + this.name);
72
+ return new Promise((resolve, reject) => {
73
+ this.getStatus().then(success => {
74
+ if (success) {
75
+ const state = this.deviceStatus.status.windowShade.windowShade;
76
+ if (state === 'opening') {
77
+ this.currentPositionState = this.states.decreasing;
78
+ }
79
+ else if (state === 'closing') {
80
+ this.currentPositionState = this.states.increasing;
81
+ }
82
+ else {
83
+ this.currentPositionState = this.states.stopped;
84
+ }
85
+ this.log.debug(`getCurrentPositionState() SUCCESSFUL for ${this.name} return value ${state}, ` +
86
+ `setting to ${this.currentPositionState}`);
87
+ resolve(this.currentPositionState);
88
+ }
89
+ else {
90
+ this.log.error('getCurrentPositionState() FAILED for ' + this.name);
91
+ reject(new this.platform.api.hap.HapStatusError(-70402 /* this.platform.api.hap.HAPStatus.SERVICE_COMMUNICATION_FAILURE */));
92
+ }
93
+ });
94
+ });
95
+ }
96
+ /**
97
+ * Handle the "GET" requests from HomeKit
98
+ * These are sent when HomeKit wants to know the current state of the accessory, for example, checking if a Light bulb is on.
99
+ *
100
+ * GET requests should return as fast as possbile. A long delay here will result in
101
+ * HomeKit being unresponsive and a bad user experience in general.
102
+ *
103
+ * If your device takes time to respond you should update the status of your device
104
+ * asynchronously instead using the `updateCharacteristic` method instead.
105
+
106
+ * @example
107
+ * this.service.updateCharacteristic(this.platform.Characteristic.On, true)
108
+ */
109
+ async getCurrentPosition() {
110
+ // if you need to return an error to show the device as "Not Responding" in the Home app:
111
+ // throw new this.platform.api.hap.HapStatusError(this.platform.api.hap.HAPStatus.SERVICE_COMMUNICATION_FAILURE);
112
+ return new Promise((resolve, reject) => {
113
+ if (!this.multiServiceAccessory.isOnline()) {
114
+ this.log.error(this.name + ' is offline');
115
+ return reject(new this.platform.api.hap.HapStatusError(-70402 /* this.platform.api.hap.HAPStatus.SERVICE_COMMUNICATION_FAILURE */));
116
+ }
117
+ this.getStatus().then(success => {
118
+ if (success) {
119
+ let position = 0;
120
+ if (this.useWindowShadeLevel) {
121
+ position = this.deviceStatus.status.windowShadeLevel.shadeLevel.value;
122
+ }
123
+ else {
124
+ position = this.deviceStatus.status.switchLevel.level.value;
125
+ }
126
+ this.log.debug('onGet() SUCCESSFUL for ' + this.name + '. value = ' + position);
127
+ resolve(position);
128
+ }
129
+ else {
130
+ this.log.error('onGet() FAILED for ' + this.name + '. Undefined value');
131
+ reject(new this.platform.api.hap.HapStatusError(-70402 /* this.platform.api.hap.HAPStatus.SERVICE_COMMUNICATION_FAILURE */));
132
+ }
133
+ });
134
+ });
135
+ }
136
+ processEvent(event) {
137
+ if (event.capability === 'windowShadeLevel' || event.capability === 'switchLevel') {
138
+ this.log.debug(`Event updating windowShadeLevel capability for ${this.name} to ${event.value}`);
139
+ this.service.updateCharacteristic(this.platform.Characteristic.CurrentPosition, event.value);
140
+ }
141
+ else if (event.capability === 'windowShade') {
142
+ this.log.debug(`Event updating windowShade capability for ${this.name} to ${event.value}`);
143
+ if (event.value === 'opening') {
144
+ this.currentPositionState = this.states.decreasing;
145
+ }
146
+ else if (event.value === 'closing') {
147
+ this.currentPositionState = this.states.increasing;
148
+ }
149
+ else {
150
+ this.currentPositionState = this.states.stopped;
151
+ }
152
+ this.log.debug(`From event, setting characteristic to ${this.currentPositionState}`);
153
+ this.service.updateCharacteristic(this.platform.Characteristic.PositionState, this.currentPositionState);
154
+ }
155
+ }
156
+ }
157
+ exports.WindowCoveringService = WindowCoveringService;
158
+ //# sourceMappingURL=windowCoveringService.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"windowCoveringService.js","sourceRoot":"","sources":["../../src/services/windowCoveringService.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * This is the name of the platform that users will use to register the plugin in the Homebridge config.json
3
+ */
4
+ export declare const PLATFORM_NAME = "HomeBridgeSmartThings";
5
+ /**
6
+ * This must match the name of your plugin as defined the package.json
7
+ */
8
+ export declare const PLUGIN_NAME = "homebridge-smartthings-ik";
9
+ //# sourceMappingURL=settings.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"settings.d.ts","sourceRoot":"","sources":["../src/settings.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,eAAO,MAAM,aAAa,0BAA0B,CAAC;AAErD;;GAEG;AACH,eAAO,MAAM,WAAW,8BAA8B,CAAC"}
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.PLUGIN_NAME = exports.PLATFORM_NAME = void 0;
4
+ /**
5
+ * This is the name of the platform that users will use to register the plugin in the Homebridge config.json
6
+ */
7
+ exports.PLATFORM_NAME = 'HomeBridgeSmartThings';
8
+ /**
9
+ * This must match the name of your plugin as defined the package.json
10
+ */
11
+ exports.PLUGIN_NAME = 'homebridge-smartthings-ik';
12
+ //# sourceMappingURL=settings.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"settings.js","sourceRoot":"","sources":["../src/settings.ts"],"names":[],"mappings":";;;AAAA;;GAEG;AACU,QAAA,aAAa,GAAG,uBAAuB,CAAC;AAErD;;GAEG;AACU,QAAA,WAAW,GAAG,2BAA2B,CAAC"}