homebridge-eliot-smart-control 1.6.3 → 1.7.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/CHANGELOG.md CHANGED
@@ -6,6 +6,44 @@ adheres to [semantic versioning](https://semver.org/spec/v2.0.0.html).
6
6
 
7
7
  ## [Unreleased]
8
8
 
9
+ ## [1.7.0] — 2026-09-23
10
+
11
+ ### Added
12
+
13
+ - **The desk's own anti-collision sensitivity is settable**, as
14
+ `collisionSensitivity`: `high`, `medium`, `low` or `leave`. This is the
15
+ control box's brake, not the plugin's stall check — on a sensitive setting,
16
+ arms resting on the desk are enough to end a move nine millimetres in and
17
+ have it reported as stalled. Written only when it differs from what the box
18
+ is holding. Like eco mode, it takes effect when the desk is next reset, and
19
+ the log says so.
20
+ - **The auto-movement countdown is visible, and adjustable, as a `Timer`
21
+ slider.** A light whose brightness is how much of the interval is left before
22
+ the next move. Dragging it changes the wait and nothing else: all the way up
23
+ is a fresh interval, all the way down runs the timer out, which moves the desk
24
+ at once and without the warning — nobody needs telling about a move they just
25
+ asked for. Off it reads 0, because a timer that is not running has no
26
+ remainder to show. Outside the working hours it reads full and does
27
+ not run: switching on at 07:00 starts the countdown at 08:00, not at 07:00,
28
+ and a drag there is ignored rather than scheduling a move for later. `timerSlider: false` leaves it out.
29
+
30
+ ### Changed
31
+
32
+ - **The desk is put into one-touch mode when it is found in hold mode.** In
33
+ hold mode the control box treats `GOTO_HEIGHT` as a nudge and waits to be
34
+ asked again, so a single command moves the desk a centimetre and stops —
35
+ which is to say the plugin cannot drive the desk at all. There is nothing to
36
+ configure, because the alternative is a plugin that does not work. `0` is one
37
+ touch and `1` is hold, now confirmed against a control box rather than read
38
+ out of the app: written to a desk found in hold mode, the handset changed
39
+ behaviour immediately and without a reset. It changes the handset as well as
40
+ the commands, so it is a write somebody standing at the desk will notice.
41
+ - **Reconnect attempts stop thinning out at thirty seconds** rather than a
42
+ minute. The ceiling is what somebody waits after the thing blocking the
43
+ dongle goes away — usually the Eliot app, which holds the dongle's one
44
+ connection until it is closed — and a minute of that is a minute of a desk
45
+ showing as unreachable when it is not.
46
+
9
47
  ## [1.6.3] — 2026-09-21
10
48
 
11
49
  ### Changed
@@ -430,7 +468,8 @@ First release.
430
468
  verified against hardware, including the measured travel speed and stopping
431
469
  distance.
432
470
 
433
- [Unreleased]: https://github.com/rummeyer/homebridge-eliot-smart-control/compare/v1.6.3...HEAD
471
+ [Unreleased]: https://github.com/rummeyer/homebridge-eliot-smart-control/compare/v1.7.0...HEAD
472
+ [1.7.0]: https://github.com/rummeyer/homebridge-eliot-smart-control/compare/v1.6.3...v1.7.0
434
473
  [1.6.3]: https://github.com/rummeyer/homebridge-eliot-smart-control/compare/v1.6.2...v1.6.3
435
474
  [1.6.2]: https://github.com/rummeyer/homebridge-eliot-smart-control/compare/v1.6.1...v1.6.2
436
475
  [1.6.1]: https://github.com/rummeyer/homebridge-eliot-smart-control/compare/v1.6.0...v1.6.1
package/README.md CHANGED
@@ -130,6 +130,18 @@ handset and you have bought another interval. It is also simply true — the
130
130
  timer measures time spent at a height, and that clock restarts when the height
131
131
  does.
132
132
 
133
+ **The countdown is on show, as a slider.** Auto movement brings a **Timer**
134
+ with it — a light whose brightness is how much of the interval is left before
135
+ the next move. It fills to 100% when you switch auto movement on and runs down
136
+ from there; a handset nudge or a move fills it again.
137
+
138
+ Dragging it is how you change the wait, and nothing else about it: halfway
139
+ means half an interval left, all the way up buys a fresh one. **All the way
140
+ down moves the desk now**, and skips the warning — you just asked for the move,
141
+ so being told it is coming would be late. With auto movement off the slider
142
+ sits at 0 and stays there, because there is no countdown to show. Set
143
+ `timerSlider` to `false` if you would rather not have it.
144
+
133
145
  **Getting told about it takes one step you have to do yourself.** HomeKit gives
134
146
  a plugin no way to send a notification, so the warning is a motion sensor
135
147
  called **Desk Move Soon**. Open it in the Home app, and under *Status and
@@ -146,6 +158,25 @@ wrong for one that is not: a week away, and it has been cycling an empty room
146
158
  for five days. The day is remembered rather than timed, so a restart at 23:59
147
159
  does not hand it a fresh one.
148
160
 
161
+ ## When the desk stops by itself
162
+
163
+ The control box has its own anti-collision detection, and on a sensitive
164
+ setting it does not take much: arms resting on the desk can be enough to end a
165
+ move a centimetre in. The plugin then reports the move as `stalled`, which is
166
+ accurate — the desk did stop — but says nothing about why, because from the
167
+ outside a desk stopped by an obstruction and a desk stopped for any other
168
+ reason look identical.
169
+
170
+ `collisionSensitivity` sets that threshold: `high`, `medium`, `low`, or `leave`
171
+ to keep whatever the desk came with, which is the default. It is written to the
172
+ control box when it differs from what the box is holding, once per connection.
173
+
174
+ **It takes effect after the desk is reset by hand** — run it to the bottom and
175
+ hold the down key until it re-homes. Until then the desk keeps its old setting,
176
+ the same way travel speed and eco mode do. And the setting belongs to the desk
177
+ rather than to this plugin, so it stays changed until something changes it
178
+ back.
179
+
149
180
  ## Things worth knowing
150
181
 
151
182
  **Positions land exactly.** The desk is handed a height and drives there on its
@@ -79,6 +79,38 @@
79
79
  ],
80
80
  "description": "Eco mode and travel speed, set as a pair: about 22 mm/s against 42 mm/s.<br><br><b>Takes effect only after the desk is reset by hand</b> — run it to the bottom and hold the down key until it re-homes. Until then it keeps its old speed, whatever this says."
81
81
  },
82
+ "collisionSensitivity": {
83
+ "title": "Anti-collision sensitivity",
84
+ "type": "string",
85
+ "default": "leave",
86
+ "oneOf": [
87
+ {
88
+ "title": "Leave the desk alone",
89
+ "enum": [
90
+ "leave"
91
+ ]
92
+ },
93
+ {
94
+ "title": "High — stops at the slightest resistance",
95
+ "enum": [
96
+ "high"
97
+ ]
98
+ },
99
+ {
100
+ "title": "Medium",
101
+ "enum": [
102
+ "medium"
103
+ ]
104
+ },
105
+ {
106
+ "title": "Low — needs a firm obstruction",
107
+ "enum": [
108
+ "low"
109
+ ]
110
+ }
111
+ ],
112
+ "description": "The control box's own obstruction detection, not this plugin's. On <b>high</b>, resting your arms on the desk can be enough to stop a move.<br><br><b>Takes effect only after the desk is reset by hand</b> — run it to the bottom and hold the down key until it re-homes. Until then it keeps its old setting, whatever this says."
113
+ },
82
114
  "autoMove": {
83
115
  "type": "object",
84
116
  "description": "Move the desk between two heights on a timer. Adds an <b>Auto Movement</b> switch to the Home app, and nothing moves until you turn it on.",
@@ -157,6 +189,12 @@
157
189
  "type": "boolean",
158
190
  "default": false,
159
191
  "description": "Switches <b>Auto Movement</b> off again at the end of each day, so it only runs on days you turn it on. Off means the switch stays on until you turn it off."
192
+ },
193
+ "timerSlider": {
194
+ "title": "Timer slider",
195
+ "type": "boolean",
196
+ "default": true,
197
+ "description": "Adds a <b>Timer</b> slider showing how much of the interval is left before the next move. Drag it to put the move off or bring it forward; all the way down moves the desk now, without the warning. Off removes the slider."
160
198
  }
161
199
  }
162
200
  }
@@ -179,6 +217,7 @@
179
217
  "desks[].mac",
180
218
  "desks[].idlePollSeconds",
181
219
  "desks[].ecoMode",
220
+ "desks[].collisionSensitivity",
182
221
  "desks[].childLockSwitch",
183
222
  "desks[].memorySwitches",
184
223
  {
@@ -192,6 +231,7 @@
192
231
  "desks[].autoMove.standingMm",
193
232
  "desks[].autoMove.intervalMinutes",
194
233
  "desks[].autoMove.warnMinutes",
234
+ "desks[].autoMove.timerSlider",
195
235
  "desks[].autoMove.switchOffDaily",
196
236
  {
197
237
  "key": "desks[].autoMove.windows",
package/dist/accessory.js CHANGED
@@ -58,6 +58,26 @@ function wantsEco(setting) {
58
58
  }
59
59
  return undefined;
60
60
  }
61
+ /**
62
+ * The configured anti-collision sensitivity as the box numbers it, or
63
+ * undefined for "leave it alone".
64
+ *
65
+ * `1` high, `2` medium, `3` low — the box's own scale, which runs the opposite
66
+ * way to how the words read, so it is spelled out here once rather than
67
+ * remembered at the call site.
68
+ */
69
+ function wantsSensitivity(setting) {
70
+ switch (setting) {
71
+ case 'high':
72
+ return 1;
73
+ case 'medium':
74
+ return 2;
75
+ case 'low':
76
+ return 3;
77
+ default:
78
+ return undefined;
79
+ }
80
+ }
61
81
  export class EliotAccessory {
62
82
  #platform;
63
83
  #accessory;
@@ -74,6 +94,13 @@ export class EliotAccessory {
74
94
  /** Auto-movement, when it is configured at all. */
75
95
  #autoService;
76
96
  #warnService;
97
+ /** The countdown as a slider, when it is wanted. */
98
+ #timerService;
99
+ /** The writes one slider gesture produces, and the timer waiting for the rest. */
100
+ #timerGesture = {};
101
+ #timerSettle;
102
+ /** The percentage last shown, so a tick that changes nothing stays quiet. */
103
+ #timerShown = null;
77
104
  #mover;
78
105
  #autoTimer;
79
106
  /** Heights already complained about, so the log says it once and not hourly. */
@@ -96,6 +123,7 @@ export class EliotAccessory {
96
123
  this.#desk = new Desk(link, platform.log, {
97
124
  idlePollMs: (config.idlePollSeconds ?? 30) * 1000,
98
125
  eco: wantsEco(config.ecoMode),
126
+ sensitivity: wantsSensitivity(config.collisionSensitivity),
99
127
  });
100
128
  accessory
101
129
  .getService(HapService.AccessoryInformation)
@@ -205,6 +233,35 @@ export class EliotAccessory {
205
233
  this.#mover.restore(this.#accessory.context.autoMove === true, typeof this.#accessory.context.autoMoveDay === 'string'
206
234
  ? this.#accessory.context.autoMoveDay
207
235
  : null);
236
+ // Built before the switch and the sensor, because services are created in
237
+ // the order they should be read: the desk, its lock, how long until it
238
+ // moves, whether it moves at all, and the warning that goes with that.
239
+ // HomeKit has no field for ordering and the Home app decides its own
240
+ // layout, so this is a preference expressed rather than one enforced — and
241
+ // it reaches an accessory restored from Homebridge's cache not at all,
242
+ // since those services come back in the order they were first written.
243
+ const timerSubtype = 'automove-timer';
244
+ const restoredTimer = this.#accessory.getServiceById(HapService.Lightbulb, timerSubtype);
245
+ if (!auto.timerSlider) {
246
+ if (restoredTimer) {
247
+ this.#accessory.removeService(restoredTimer);
248
+ }
249
+ this.#timerService = undefined;
250
+ }
251
+ else {
252
+ this.#timerService =
253
+ restoredTimer ?? this.#accessory.addService(HapService.Lightbulb, 'Timer', timerSubtype);
254
+ this.#name(this.#timerService, 'Timer');
255
+ this.#timerService
256
+ .getCharacteristic(Characteristic.On)
257
+ .onGet(() => this.#mover?.enabled ?? false)
258
+ .onSet((value) => this.#takeTimerWrite({ on: Boolean(value) }));
259
+ this.#timerService
260
+ .getCharacteristic(Characteristic.Brightness)
261
+ .onGet(() => this.#mover?.remainingPercent() ?? 0)
262
+ .onSet((value) => this.#takeTimerWrite({ brightness: Math.round(Number(value)) }));
263
+ this.#publishTimer(true);
264
+ }
208
265
  const switchSubtype = 'automove';
209
266
  this.#autoService =
210
267
  this.#accessory.getServiceById(HapService.Switch, switchSubtype) ??
@@ -240,6 +297,7 @@ export class EliotAccessory {
240
297
  }
241
298
  this.#mover.noteManualMove(Date.now());
242
299
  this.#warn(false);
300
+ this.#publishTimer();
243
301
  this.#platform.log.debug(`${this.#config.name}: moved by hand, auto-move timer restarted`);
244
302
  });
245
303
  this.#autoTimer = setInterval(() => void this.#autoTick(), AUTO_TICK_MS);
@@ -251,6 +309,10 @@ export class EliotAccessory {
251
309
  if (!on) {
252
310
  this.#warn(false);
253
311
  }
312
+ // On is a full interval to run down, off is a timer that is not running.
313
+ // Either way the slider has to follow, or it shows a countdown for an
314
+ // automation that is not happening.
315
+ this.#publishTimer(true);
254
316
  this.#platform.log.info(`${this.#config.name}: auto movement ${on ? 'on' : 'off'}`);
255
317
  }
256
318
  /**
@@ -270,12 +332,138 @@ export class EliotAccessory {
270
332
  const { Characteristic } = this.#platform.api.hap;
271
333
  this.#warnService?.setCharacteristic(Characteristic.MotionDetected, active);
272
334
  }
273
- /** Ask the scheduler what it wants, and do it. */
274
- async #autoTick() {
335
+ /** Show where the countdown stands, without waking HomeKit for no change. */
336
+ #publishTimer(force = false) {
337
+ const service = this.#timerService;
338
+ const mover = this.#mover;
339
+ if (!service || !mover) {
340
+ return;
341
+ }
342
+ const percent = mover.remainingPercent();
343
+ if (!force && percent === this.#timerShown) {
344
+ return;
345
+ }
346
+ this.#timerShown = percent;
347
+ const { Characteristic } = this.#platform.api.hap;
348
+ service.updateCharacteristic(Characteristic.On, mover.enabled);
349
+ service.updateCharacteristic(Characteristic.Brightness, percent);
350
+ }
351
+ /**
352
+ * Collect the writes one gesture produces, and decide once.
353
+ *
354
+ * A Lightbulb has to have an `On`, and the Home app spends it: dragging the
355
+ * slider to the bottom writes `Brightness` 0 *and* `On` false, because that is
356
+ * what a light does at zero. Read separately those are two different
357
+ * instructions — "run the timer out" and "switch auto movement off" — and
358
+ * whichever landed last would win, which would make dragging to zero a coin
359
+ * toss between moving the desk and stopping the automation. Read together, as
360
+ * the one gesture they came from, they are the one thing somebody did.
361
+ *
362
+ * The same settle the position slider uses, for the same reason: a drag is
363
+ * dozens of these and only the end of it was ever meant.
364
+ */
365
+ #takeTimerWrite(part) {
366
+ Object.assign(this.#timerGesture, part);
367
+ if (this.#timerSettle) {
368
+ clearTimeout(this.#timerSettle);
369
+ }
370
+ this.#timerSettle = setTimeout(() => {
371
+ this.#timerSettle = undefined;
372
+ const gesture = this.#timerGesture;
373
+ this.#timerGesture = {};
374
+ this.#applyTimerWrite(gesture);
375
+ }, TARGET_SETTLE_MS);
376
+ this.#timerSettle.unref();
377
+ }
378
+ /**
379
+ * What that gesture meant.
380
+ *
381
+ * A brightness is about the countdown, so it settles the question of whether
382
+ * auto movement is on: it is, or there would be no countdown to drag. Only a
383
+ * gesture that is nothing *but* `On` is the switch being used as a switch.
384
+ */
385
+ #applyTimerWrite({ on, brightness }) {
275
386
  const mover = this.#mover;
276
387
  if (!mover) {
277
388
  return;
278
389
  }
390
+ if (brightness === undefined) {
391
+ if (on !== undefined && on !== mover.enabled) {
392
+ this.#setAutoMove(on);
393
+ }
394
+ return;
395
+ }
396
+ const wasEnabled = mover.enabled;
397
+ if (!wasEnabled) {
398
+ // Dragged up from a standstill. That is a switch-on, and is remembered as
399
+ // one — #setAutoMove also puts a full interval on the clock.
400
+ this.#setAutoMove(true);
401
+ }
402
+ if (!mover.inWorkingTime()) {
403
+ // Outside the hours there is no countdown to drag: the timer waits full
404
+ // for the next window, and a drag to zero there is not a move either.
405
+ // The slider goes back to where it was.
406
+ if (wasEnabled) {
407
+ this.#platform.log.info(`${this.#config.name}: outside the working hours the timer does not run; ` +
408
+ 'it starts when the next window opens');
409
+ }
410
+ this.#publishTimer(true);
411
+ return;
412
+ }
413
+ if (brightness === 0) {
414
+ if (!wasEnabled) {
415
+ // Switched on while the slider sat at zero, because zero is what off
416
+ // looks like. It is where this came from, not something asked for, and
417
+ // reading it as "move now" would turn switching the automation on into
418
+ // a desk that moves under somebody's coffee.
419
+ this.#publishTimer(true);
420
+ return;
421
+ }
422
+ const state = this.#desk.state;
423
+ if (!state.connected || !state.ready) {
424
+ // There is nothing to run the timer out into. Expiring anyway would
425
+ // leave the countdown sitting at zero with auto movement still on, and
426
+ // zero is what the slider shows when it is off — the one reading it
427
+ // must never give while it is running. So the drag is refused and the
428
+ // slider goes back to where the countdown actually is.
429
+ this.#platform.log.warn(`${this.#config.name}: the timer was run out by hand, but the desk is not reachable`);
430
+ this.#publishTimer(true);
431
+ return;
432
+ }
433
+ // Run out by hand. The warning is withdrawn rather than raised: it
434
+ // announces a move that is coming, and this one is already here.
435
+ this.#platform.log.info(`${this.#config.name}: timer run out by hand`);
436
+ mover.expire();
437
+ this.#warn(false);
438
+ void this.#autoTick();
439
+ return;
440
+ }
441
+ mover.setRemainingPercent(brightness);
442
+ this.#platform.log.debug(`${this.#config.name}: timer set to ${brightness}% of the interval`);
443
+ this.#publishTimer(true);
444
+ }
445
+ /**
446
+ * The half-minute tick: decide, then show where the countdown stands.
447
+ *
448
+ * The redraw is in a `finally` because {@link #decide} leaves by a dozen
449
+ * doors — nothing due, outside the hours, a new day, a move — and the slider
450
+ * has to be right after all of them. It is also the ordinary redraw, which is
451
+ * what makes the timer visibly run down rather than jump when something
452
+ * happens to touch it.
453
+ */
454
+ async #autoTick() {
455
+ if (!this.#mover) {
456
+ return;
457
+ }
458
+ try {
459
+ await this.#decide(this.#mover);
460
+ }
461
+ finally {
462
+ this.#publishTimer();
463
+ }
464
+ }
465
+ /** Ask the scheduler what it wants, and do it. */
466
+ async #decide(mover) {
279
467
  const state = this.#desk.state;
280
468
  if (!state.connected || !state.ready) {
281
469
  return;
@@ -334,6 +522,10 @@ export class EliotAccessory {
334
522
  clearTimeout(this.#targetTimer);
335
523
  this.#targetTimer = undefined;
336
524
  }
525
+ if (this.#timerSettle) {
526
+ clearTimeout(this.#timerSettle);
527
+ this.#timerSettle = undefined;
528
+ }
337
529
  if (this.#autoTimer) {
338
530
  clearInterval(this.#autoTimer);
339
531
  this.#autoTimer = undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"accessory.js","sourceRoot":"","sources":["../src/accessory.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"accessory.js","sourceRoot":"","sources":["../src/accessory.ts"],"names":[],"mappings":"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"}
@@ -72,10 +72,11 @@ export declare class AutoMover {
72
72
  /**
73
73
  * Turn the whole thing on or off.
74
74
  *
75
- * Switching on does not start a countdown; the next poll does that, and only
76
- * if the moment is one where moving would be right. Switching off forgets the
77
- * countdown rather than pausing it — coming back to a desk that moves the
78
- * instant it is re-enabled is not what the switch appears to promise.
75
+ * Switching on inside a window starts a full interval; outside one it starts
76
+ * nothing, and the first poll inside a window does. Switching off forgets the countdown
77
+ * rather than pausing it — coming back to a desk that moves the instant it is
78
+ * re-enabled is not what the switch appears to promise, and it is why the
79
+ * timer reads 0 while this is off rather than holding where it stopped.
79
80
  */
80
81
  setEnabled(on: boolean, now?: Date): void;
81
82
  /** The day it was switched on for, so a restart can carry it across. */
@@ -84,6 +85,42 @@ export declare class AutoMover {
84
85
  restore(enabled: boolean, day: string | null): void;
85
86
  /** When the next move is due, for the log and for tests. */
86
87
  get dueAt(): number | null;
88
+ /**
89
+ * How much of the interval is left, as the timer slider shows it.
90
+ *
91
+ * 0 when auto movement is off. The slider *is* the countdown, and there is no
92
+ * countdown — showing a remainder for a timer that is not running would be
93
+ * showing a number that means nothing.
94
+ *
95
+ * 100 when it is on but nothing is scheduled, which is what being outside the
96
+ * working hours looks like: full, and waiting for a window rather than running
97
+ * down towards one.
98
+ */
99
+ remainingPercent(now?: Date): number;
100
+ /**
101
+ * Move the countdown to a point, as a percentage of a full interval.
102
+ *
103
+ * This is somebody dragging the timer slider: 100 is a fresh interval, 50 is
104
+ * half of one left. It changes the wait and nothing else — not where the desk
105
+ * is headed, not whether auto movement is on.
106
+ *
107
+ * Whether the warning still fires depends on where the drag landed. Setting
108
+ * the timer below the warning is already the decision the warning exists to
109
+ * announce, and a phone that buzzes "moving in 4 minutes" the instant somebody
110
+ * asked for four more minutes is noise. Land above it and the warning comes as
111
+ * it always did, at the usual distance from the move.
112
+ */
113
+ setRemainingPercent(percent: number, now?: Date): void;
114
+ /**
115
+ * Treat the countdown as run out, now.
116
+ *
117
+ * The next poll then returns a move, through the same path a move that came
118
+ * due on its own takes — the height it picks and the limits it respects are
119
+ * not this method's business. No warning goes with it: a warning announces a
120
+ * move that is coming, and this one is already here because somebody asked
121
+ * for it.
122
+ */
123
+ expire(now?: Date): void;
87
124
  /**
88
125
  * Somebody moved the desk themselves: start the interval again.
89
126
  *
@@ -93,6 +130,14 @@ export declare class AutoMover {
93
130
  * and the clock on that restarts whenever the height does.
94
131
  */
95
132
  noteManualMove(now: number): void;
133
+ /**
134
+ * Whether `now` falls inside a configured window on a configured day.
135
+ *
136
+ * Outside one there is no countdown, and nothing that would start one — a
137
+ * switch-on, a drag of the slider, a nudge on the handset — does. The first
138
+ * poll inside a window starts it.
139
+ */
140
+ inWorkingTime(now?: Date): boolean;
96
141
  /**
97
142
  * Decide what to do, now.
98
143
  *