homebridge-smartthings-oauth 1.0.62 → 1.0.63

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,22 @@
1
1
  # Changelog
2
2
  All notable changes to this project will be documented in this file.
3
3
 
4
+ ## [1.0.63] - Window Covering State Fixes
5
+
6
+ > Fixes a cluster of five bugs in `windowCoveringService.ts` that made window shades show a perpetual "Opening…"/"Closing…" spinner in the Home app and made full open/close commands unreliable. Root cause confirmed by live reproduction on Z-Wave shades: HomeKit displays the spinner whenever `TargetPosition` differs from `CurrentPosition`, and the service hardcoded its target to `0` at startup and never reconciled it with the device — so any shade not fully closed spun forever, and closing the shade (position 0 = the stale target) was the only way to make the tile settle. The same reconcile-target-from-device-state pattern already used by `lockService.ts` and `doorService.ts` is now applied to window coverings. Thanks to @bcourbage for the fix (#44), live reproduction, and SmartThings-API-level verification.
7
+
8
+ ### Fixed
9
+ - **Window shades no longer stuck on "Opening…"/"Closing…"** — `TargetPosition` was initialized to `0` and only ever updated by HomeKit-issued commands, while the poller actively re-pushed the stale target to HomeKit every cycle. The service now treats the target as unknown until learned, reports the last known position for an unknown target, and reconciles `TargetPosition` to the actual position whenever the shade is idle — in the polling paths and in the webhook event path — so shades moved by remote, the SmartThings app, or automations settle correctly. Shades commanded from the Home app are unaffected: the target is never touched while the device reports `opening`/`closing`, so the in-flight spinner still behaves as before.
10
+ - **Polling never detected a moving shade** — `getCurrentPositionState()` read `status.windowShade.windowShade` without `.value`, comparing the SmartThings attribute object `{value, timestamp}` against the strings `'opening'`/`'closing'`. The comparison could never match, so the polled `PositionState` was permanently `STOPPED` regardless of what the shade was doing. Now reads `.value` like every other service.
11
+ - **`PollWindowShadesSeconds` config option was ignored** — the constructor checked `PollWindowShadesSeconds` but then assigned `PollSwitchesAndLightsSeconds` to the polling interval. Shades now poll at the documented, user-configured rate.
12
+ - **Opening/closing direction inverted in HomeKit** — SmartThings `opening` was mapped to `PositionState.DECREASING` and `closing` to `INCREASING`. HomeKit defines position `100` as fully open, so the mappings were backwards; while moving, the Home app animated the wrong direction. Both the polling and webhook paths now map `opening` → `INCREASING`, `closing` → `DECREASING`.
13
+ - **Fully opening/closing a shade from the Home app now uses the native `open`/`close` commands** — the plugin drove shades exclusively through level commands (`setShadeLevel`/`setLevel`), even for a full open or close. Some Z-Wave shade drivers intermittently ignore a level command at the travel limits while honoring the `windowShade` capability's mandatory `open`/`close` commands immediately (verified live: `setShadeLevel(0)` ACCEPTED by the API but the shade never moved; `windowShade.close` on the same device closed it within seconds). Targets of 0 and 100 now map to `close` and `open`; intermediate targets use the level command as before.
14
+ - **Missing shade level no longer resolves `undefined` to HomeKit** — `getCurrentPosition()` resolved whatever the status blob contained, even `undefined`, producing HAP characteristic warnings. Position reads now go through a guarded helper (`readPositionFromStatus()`) that handles both `windowShadeLevel` and `switchLevel` devices and rejects with `SERVICE_COMMUNICATION_FAILURE` when no usable level is present.
15
+ - **Hardened for `windowShade`-less device shapes** — `WindowCoveringService` can also be matched on a device exposing only `windowShadeLevel`/`switchLevel` (via the single-capability fallback). The new full-open/close path now sends the native `open`/`close` command only when the device actually advertises the `windowShade` capability, otherwise falling back to the level command; and `getCurrentPositionState()` optional-chains the `windowShade` status read so such a device reports `STOPPED` instead of throwing a `TypeError`.
16
+
17
+ ### Documentation
18
+ - **New "Window shades and blinds" troubleshooting section** — covers the stuck-spinner symptom and its fix, the inverted-direction fix, the `PollWindowShadesSeconds` fix, and how to recognize the remaining (device-side) case where the SmartThings cloud itself holds a stale `opening`/`closing` state for a sleepy battery-powered shade until the device is woken.
19
+
4
20
  ## [1.0.62] - Webhook Lifecycle Robustness, installedAppId Diagnostics & Target-URL Confirmation Docs
5
21
 
6
22
  > Stable release graduating `1.0.62-beta.0`. Prompted by a deep investigation of #43 (real-time webhooks reported non-functional for an `API_ONLY` SmartApp). A full clean-room reproduction confirmed the webhook/subscription flow **works end-to-end** with the standard `r:devices:* x:devices:* r:locations:*` scopes: SmartThings returns `installed_app_id` directly in the OAuth token-exchange response, so the plugin needs neither an `installedapps` scope nor `GET /installedapps` discovery to create subscriptions. The reproduction also surfaced the **actual reason real-time events silently never arrive**: a freshly-created `API_ONLY` app's Target URL stays in `targetStatus: PENDING`, and SmartThings delivers no events until it is `CONFIRMED` — which OAuth authorization does **not** do. The missing step is a one-time `smartthings apps:register <app-id>` (run while Homebridge is up, so the plugin auto-acks the CONFIRMATION). This release hardens the webhook endpoint, adds diagnostics, and documents the required confirmation step. Thanks to @mikegraben for the exceptionally detailed report and source-level analysis.
@@ -5,6 +5,7 @@ import { MultiServiceAccessory } from '../multiServiceAccessory';
5
5
  import { ShortEvent } from '../webhook/subscriptionHandler';
6
6
  export declare class WindowCoveringService extends BaseService {
7
7
  private targetPosition;
8
+ private currentPosition;
8
9
  private timer;
9
10
  private states;
10
11
  private currentPositionState;
@@ -32,5 +33,7 @@ export declare class WindowCoveringService extends BaseService {
32
33
  */
33
34
  getCurrentPosition(): Promise<CharacteristicValue>;
34
35
  processEvent(event: ShortEvent): void;
36
+ private readPositionFromStatus;
37
+ private syncTargetPosition;
35
38
  }
36
39
  //# sourceMappingURL=windowCoveringService.d.ts.map
@@ -1 +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"}
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;IAIpD,OAAO,CAAC,cAAc,CAAuB;IAC7C,OAAO,CAAC,eAAe,CAAuB;IAC9C,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;IAyC5C,iBAAiB,IAAI,OAAO,CAAC,mBAAmB,CAAC;IAYjD,uBAAuB,IAAI,OAAO,CAAC,mBAAmB,CAAC;IA+B7D;;;;;;;;;;;;OAYG;IACG,kBAAkB,IAAI,OAAO,CAAC,mBAAmB,CAAC;IAiCjD,YAAY,CAAC,KAAK,EAAE,UAAU,GAAG,IAAI;IAyB5C,OAAO,CAAC,sBAAsB;IAY9B,OAAO,CAAC,kBAAkB;CAe3B"}
@@ -5,7 +5,11 @@ const baseService_1 = require("./baseService");
5
5
  class WindowCoveringService extends baseService_1.BaseService {
6
6
  constructor(platform, accessory, componentId, capabilities, multiServiceAccessory, name, deviceStatus) {
7
7
  super(platform, accessory, componentId, capabilities, multiServiceAccessory, name, deviceStatus);
8
- this.targetPosition = 0;
8
+ // null = not yet learned. HomeKit shows 'Opening…'/'Closing…' whenever
9
+ // TargetPosition differs from CurrentPosition, so a hardcoded startup target
10
+ // would make any shade not sitting at that exact position spin forever.
11
+ this.targetPosition = null;
12
+ this.currentPosition = null;
9
13
  this.states = {
10
14
  decreasing: this.platform.Characteristic.PositionState.DECREASING,
11
15
  increasing: this.platform.Characteristic.PositionState.INCREASING,
@@ -25,7 +29,7 @@ class WindowCoveringService extends baseService_1.BaseService {
25
29
  .onSet(this.setTargetPosition.bind(this));
26
30
  let pollWindowShadesSeconds = 10; // default to 10 seconds
27
31
  if (this.platform.config.PollWindowShadesSeconds !== undefined) {
28
- pollWindowShadesSeconds = this.platform.config.PollSwitchesAndLightsSeconds;
32
+ pollWindowShadesSeconds = this.platform.config.PollWindowShadesSeconds;
29
33
  }
30
34
  if (pollWindowShadesSeconds > 0) {
31
35
  multiServiceAccessory.startPollingState(pollWindowShadesSeconds, this.getCurrentPosition.bind(this), this.service, platform.Characteristic.CurrentPosition, platform.Characteristic.TargetPosition, this.getTargetPosition.bind(this));
@@ -48,11 +52,23 @@ class WindowCoveringService extends baseService_1.BaseService {
48
52
  }
49
53
  let capability = 'switchLevel';
50
54
  let command = 'setLevel';
51
- if (this.useWindowShadeLevel) {
55
+ let args = [value];
56
+ if (this.capabilities.includes('windowShade') && (this.targetPosition === 0 || this.targetPosition === 100)) {
57
+ // At the travel limits, use the windowShade capability's mandatory
58
+ // open/close commands instead of a level command — some Z-Wave shade
59
+ // drivers intermittently ignore setShadeLevel(0)/setLevel(0) while
60
+ // honoring close immediately. Only valid if the device actually exposes
61
+ // windowShade; a windowShadeLevel/switchLevel-only device falls through
62
+ // to the level command below.
63
+ capability = 'windowShade';
64
+ command = this.targetPosition === 0 ? 'close' : 'open';
65
+ args = [];
66
+ }
67
+ else if (this.useWindowShadeLevel) {
52
68
  capability = 'windowShadeLevel';
53
69
  command = 'setShadeLevel';
54
70
  }
55
- this.multiServiceAccessory.sendCommand(this.componentId, capability, command, [value])
71
+ this.multiServiceAccessory.sendCommand(this.componentId, capability, command, args)
56
72
  .then(() => {
57
73
  this.log.debug('onSet(' + value + ') SUCCESSFUL for ' + this.name);
58
74
  this.multiServiceAccessory.forceNextStatusRefresh();
@@ -64,23 +80,38 @@ class WindowCoveringService extends baseService_1.BaseService {
64
80
  }
65
81
  async getTargetPosition() {
66
82
  return new Promise(resolve => {
67
- resolve(this.targetPosition);
83
+ var _a;
84
+ if (this.targetPosition !== null) {
85
+ resolve(this.targetPosition);
86
+ }
87
+ else {
88
+ // No target learned yet (no HomeKit command, no status sync) — report
89
+ // the last known position so HomeKit doesn't invent a phantom move.
90
+ resolve((_a = this.currentPosition) !== null && _a !== void 0 ? _a : 0);
91
+ }
68
92
  });
69
93
  }
70
94
  async getCurrentPositionState() {
71
95
  this.log.debug('Received getCurrentPositionState() event for ' + this.name);
72
96
  return new Promise((resolve, reject) => {
73
97
  this.getStatus().then(success => {
98
+ var _a, _b;
74
99
  if (success) {
75
- const state = this.deviceStatus.status.windowShade.windowShade;
100
+ // Guard the read: the service can also be matched on a
101
+ // windowShadeLevel/switchLevel-only device that never exposes
102
+ // windowShade, in which case there is no movement state to report.
103
+ const state = (_b = (_a = this.deviceStatus.status.windowShade) === null || _a === void 0 ? void 0 : _a.windowShade) === null || _b === void 0 ? void 0 : _b.value;
104
+ // HomeKit position semantics: 100 = fully open, 0 = fully closed,
105
+ // so 'opening' means the position is INCREASING.
76
106
  if (state === 'opening') {
77
- this.currentPositionState = this.states.decreasing;
107
+ this.currentPositionState = this.states.increasing;
78
108
  }
79
109
  else if (state === 'closing') {
80
- this.currentPositionState = this.states.increasing;
110
+ this.currentPositionState = this.states.decreasing;
81
111
  }
82
112
  else {
83
113
  this.currentPositionState = this.states.stopped;
114
+ this.syncTargetPosition(this.readPositionFromStatus());
84
115
  }
85
116
  this.log.debug(`getCurrentPositionState() SUCCESSFUL for ${this.name} return value ${state}, ` +
86
117
  `setting to ${this.currentPositionState}`);
@@ -116,12 +147,14 @@ class WindowCoveringService extends baseService_1.BaseService {
116
147
  }
117
148
  this.getStatus().then(success => {
118
149
  if (success) {
119
- let position = 0;
120
- if (this.useWindowShadeLevel) {
121
- position = this.deviceStatus.status.windowShadeLevel.shadeLevel.value;
150
+ const position = this.readPositionFromStatus();
151
+ if (position === null) {
152
+ this.log.error('onGet() FAILED for ' + this.name + '. Undefined value');
153
+ return reject(new this.platform.api.hap.HapStatusError(-70402 /* this.platform.api.hap.HAPStatus.SERVICE_COMMUNICATION_FAILURE */));
122
154
  }
123
- else {
124
- position = this.deviceStatus.status.switchLevel.level.value;
155
+ this.currentPosition = position;
156
+ if (this.currentPositionState === this.states.stopped) {
157
+ this.syncTargetPosition(position);
125
158
  }
126
159
  this.log.debug('onGet() SUCCESSFUL for ' + this.name + '. value = ' + position);
127
160
  resolve(position);
@@ -136,23 +169,49 @@ class WindowCoveringService extends baseService_1.BaseService {
136
169
  processEvent(event) {
137
170
  if (event.capability === 'windowShadeLevel' || event.capability === 'switchLevel') {
138
171
  this.log.debug(`Event updating windowShadeLevel capability for ${this.name} to ${event.value}`);
172
+ this.currentPosition = event.value;
139
173
  this.service.updateCharacteristic(this.platform.Characteristic.CurrentPosition, event.value);
174
+ if (this.currentPositionState === this.states.stopped) {
175
+ this.syncTargetPosition(event.value);
176
+ }
140
177
  }
141
178
  else if (event.capability === 'windowShade') {
142
179
  this.log.debug(`Event updating windowShade capability for ${this.name} to ${event.value}`);
143
180
  if (event.value === 'opening') {
144
- this.currentPositionState = this.states.decreasing;
181
+ this.currentPositionState = this.states.increasing;
145
182
  }
146
183
  else if (event.value === 'closing') {
147
- this.currentPositionState = this.states.increasing;
184
+ this.currentPositionState = this.states.decreasing;
148
185
  }
149
186
  else {
150
187
  this.currentPositionState = this.states.stopped;
188
+ this.syncTargetPosition(this.currentPosition);
151
189
  }
152
190
  this.log.debug(`From event, setting characteristic to ${this.currentPositionState}`);
153
191
  this.service.updateCharacteristic(this.platform.Characteristic.PositionState, this.currentPositionState);
154
192
  }
155
193
  }
194
+ // Reads the shade position from the cached device status, from whichever
195
+ // level capability this device exposes. Returns null if not yet available.
196
+ readPositionFromStatus() {
197
+ var _a, _b, _c, _d;
198
+ const status = this.deviceStatus.status;
199
+ const position = this.useWindowShadeLevel
200
+ ? (_b = (_a = status.windowShadeLevel) === null || _a === void 0 ? void 0 : _a.shadeLevel) === null || _b === void 0 ? void 0 : _b.value
201
+ : (_d = (_c = status.switchLevel) === null || _c === void 0 ? void 0 : _c.level) === null || _d === void 0 ? void 0 : _d.value;
202
+ return typeof position === 'number' ? position : null;
203
+ }
204
+ // When the shade is idle, TargetPosition must mirror the real position or
205
+ // HomeKit reports a phantom 'Opening…'/'Closing…' until they match. Shades
206
+ // moved outside HomeKit (remote, SmartThings app, automations) only get
207
+ // their target reconciled here.
208
+ syncTargetPosition(position) {
209
+ if (position === null || this.targetPosition === position) {
210
+ return;
211
+ }
212
+ this.targetPosition = position;
213
+ this.service.updateCharacteristic(this.platform.Characteristic.TargetPosition, position);
214
+ }
156
215
  }
157
216
  exports.WindowCoveringService = WindowCoveringService;
158
217
  //# sourceMappingURL=windowCoveringService.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"windowCoveringService.js","sourceRoot":"","sources":["../../src/services/windowCoveringService.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"windowCoveringService.js","sourceRoot":"","sources":["../../src/services/windowCoveringService.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.62",
5
+ "version": "1.0.63",
6
6
  "description": "Connects SmartThings devices to Homebridge. Automatically discovers devices.",
7
7
  "license": "Apache-2.0",
8
8
  "repository": {