@marcel2215/homebridge-supla-plugin 2.1.18 → 2.1.21

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.
@@ -9,7 +9,6 @@ export declare class GateAccessory {
9
9
  private currentState;
10
10
  private targetState;
11
11
  private connected;
12
- private hasFault;
13
12
  private obstructionDetected;
14
13
  private isClosedSensorActive;
15
14
  private isPartialSensorActive;
@@ -22,6 +21,12 @@ export declare class GateAccessory {
22
21
  private readonly baseTopic;
23
22
  private reverseToggleTimer?;
24
23
  private readonly reverseToggleDelayMs;
24
+ private openArrivalDebounceTimer?;
25
+ private readonly openArrivalDebounceMs;
26
+ private lastCommandTarget?;
27
+ private lastCommandAt;
28
+ private readonly duplicateSetWindowMs;
29
+ private sawPartialMotionDuringPending;
25
30
  constructor(platform: SuplaPlatform, accessory: PlatformAccessory, context: SuplaChannelContext);
26
31
  handleCurrentDoorStateGet(): Promise<CharacteristicValue>;
27
32
  handleTargetDoorStateGet(): Promise<CharacteristicValue>;
@@ -32,15 +37,24 @@ export declare class GateAccessory {
32
37
  private applyDoorState;
33
38
  private setCurrentState;
34
39
  private setTargetState;
35
- private maybeSetIdleOpenTarget;
40
+ private isKnownNotClosed;
36
41
  private updateStatusFault;
37
42
  private clearFaults;
38
43
  private armTransitionTimer;
39
44
  private clearTransitionTimer;
40
45
  private clearReverseToggleTimer;
46
+ private clearOpenArrivalDebounceTimer;
41
47
  private touchTransitionTimer;
42
48
  private resolveMovingState;
43
49
  private getMotionTarget;
50
+ private isOpenArrivalSignal;
51
+ private shouldDebounceOpenArrival;
52
+ private scheduleOpenArrivalDebounce;
53
+ private resolveTerminalStateFromSensors;
54
+ private oppositeTarget;
55
+ private markCommand;
56
+ private setPendingTarget;
57
+ private isLikelyDuplicateSet;
44
58
  private publishGateAction;
45
59
  private scheduleReverseToggle;
46
60
  }
@@ -1 +1 @@
1
- {"version":3,"file":"GateAccessory.d.ts","sourceRoot":"","sources":["../../src/Accesories/GateAccessory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,iBAAiB,EAAW,MAAM,YAAY,CAAC;AAC7E,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,mBAAmB,EAAE,MAAM,gCAAgC,CAAC;AAIrE,qBAAa,aAAa;IAoBtB,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,SAAS;IAC1B,OAAO,CAAC,QAAQ,CAAC,OAAO;IArB1B,OAAO,CAAC,OAAO,CAAU;IACzB,OAAO,CAAC,YAAY,CAAwD;IAC5E,OAAO,CAAC,WAAW,CAAuD;IAC1E,OAAO,CAAC,SAAS,CAAQ;IACzB,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,mBAAmB,CAAS;IACpC,OAAO,CAAC,oBAAoB,CAAS;IACrC,OAAO,CAAC,qBAAqB,CAAS;IACtC,OAAO,CAAC,oBAAoB,CAAS;IACrC,OAAO,CAAC,qBAAqB,CAAS;IACtC,OAAO,CAAC,aAAa,CAAC,CAAS;IAC/B,OAAO,CAAC,eAAe,CAAC,CAAiB;IACzC,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAS;IAC7C,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAgB;IAC9C,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IACnC,OAAO,CAAC,kBAAkB,CAAC,CAAiB;IAC5C,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAAQ;gBAG1B,QAAQ,EAAE,aAAa,EACvB,SAAS,EAAE,iBAAiB,EAC5B,OAAO,EAAE,mBAAmB;IAwEzC,yBAAyB,IAAI,OAAO,CAAC,mBAAmB,CAAC;IAIzD,wBAAwB,IAAI,OAAO,CAAC,mBAAmB,CAAC;IAIxD,wBAAwB,CAAC,KAAK,EAAE,mBAAmB;IA4DnD,4BAA4B,IAAI,OAAO,CAAC,mBAAmB,CAAC;IAIlE,OAAO,CAAC,uBAAuB;IAoF/B,OAAO,CAAC,UAAU;IAsClB,OAAO,CAAC,cAAc;IAKtB,OAAO,CAAC,eAAe;IAQvB,OAAO,CAAC,cAAc;IAQtB,OAAO,CAAC,sBAAsB;IAY9B,OAAO,CAAC,iBAAiB;IAUzB,OAAO,CAAC,WAAW;IAanB,OAAO,CAAC,kBAAkB;IAc1B,OAAO,CAAC,oBAAoB;IAO5B,OAAO,CAAC,uBAAuB;IAO/B,OAAO,CAAC,oBAAoB;IAO5B,OAAO,CAAC,kBAAkB;IAU1B,OAAO,CAAC,eAAe;IAavB,OAAO,CAAC,iBAAiB;IASzB,OAAO,CAAC,qBAAqB;CAa9B"}
1
+ {"version":3,"file":"GateAccessory.d.ts","sourceRoot":"","sources":["../../src/Accesories/GateAccessory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,iBAAiB,EAAW,MAAM,YAAY,CAAC;AAC7E,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,mBAAmB,EAAE,MAAM,gCAAgC,CAAC;AAIrE,qBAAa,aAAa;IAyBtB,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,SAAS;IAC1B,OAAO,CAAC,QAAQ,CAAC,OAAO;IA1B1B,OAAO,CAAC,OAAO,CAAU;IACzB,OAAO,CAAC,YAAY,CAAwD;IAC5E,OAAO,CAAC,WAAW,CAAuD;IAC1E,OAAO,CAAC,SAAS,CAAQ;IACzB,OAAO,CAAC,mBAAmB,CAAS;IACpC,OAAO,CAAC,oBAAoB,CAAS;IACrC,OAAO,CAAC,qBAAqB,CAAS;IACtC,OAAO,CAAC,oBAAoB,CAAS;IACrC,OAAO,CAAC,qBAAqB,CAAS;IACtC,OAAO,CAAC,aAAa,CAAC,CAAS;IAC/B,OAAO,CAAC,eAAe,CAAC,CAAiB;IACzC,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAS;IAC7C,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAgB;IAC9C,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IACnC,OAAO,CAAC,kBAAkB,CAAC,CAAiB;IAC5C,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAAQ;IAC7C,OAAO,CAAC,wBAAwB,CAAC,CAAiB;IAClD,OAAO,CAAC,QAAQ,CAAC,qBAAqB,CAAO;IAC7C,OAAO,CAAC,iBAAiB,CAAC,CAAS;IACnC,OAAO,CAAC,aAAa,CAAK;IAC1B,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAAO;IAC5C,OAAO,CAAC,6BAA6B,CAAS;gBAG3B,QAAQ,EAAE,aAAa,EACvB,SAAS,EAAE,iBAAiB,EAC5B,OAAO,EAAE,mBAAmB;IA8EzC,yBAAyB,IAAI,OAAO,CAAC,mBAAmB,CAAC;IAIzD,wBAAwB,IAAI,OAAO,CAAC,mBAAmB,CAAC;IAIxD,wBAAwB,CAAC,KAAK,EAAE,mBAAmB;IAyDnD,4BAA4B,IAAI,OAAO,CAAC,mBAAmB,CAAC;IAIlE,OAAO,CAAC,uBAAuB;IAwD/B,OAAO,CAAC,UAAU;IAclB,OAAO,CAAC,cAAc;IAKtB,OAAO,CAAC,eAAe;IAQvB,OAAO,CAAC,cAAc;IAQtB,OAAO,CAAC,gBAAgB;IAUxB,OAAO,CAAC,iBAAiB;IAUzB,OAAO,CAAC,WAAW;IAQnB,OAAO,CAAC,kBAAkB;IA2B1B,OAAO,CAAC,oBAAoB;IAO5B,OAAO,CAAC,uBAAuB;IAO/B,OAAO,CAAC,6BAA6B;IAOrC,OAAO,CAAC,oBAAoB;IAO5B,OAAO,CAAC,kBAAkB;IAU1B,OAAO,CAAC,eAAe;IAavB,OAAO,CAAC,mBAAmB;IAqB3B,OAAO,CAAC,yBAAyB;IAMjC,OAAO,CAAC,2BAA2B;IAyBnC,OAAO,CAAC,+BAA+B;IAiBvC,OAAO,CAAC,cAAc;IAMtB,OAAO,CAAC,WAAW;IAKnB,OAAO,CAAC,gBAAgB;IAYxB,OAAO,CAAC,oBAAoB;IAO5B,OAAO,CAAC,iBAAiB;IASzB,OAAO,CAAC,qBAAqB;CAa9B"}
@@ -9,7 +9,6 @@ class GateAccessory {
9
9
  this.currentState = this.platform.Characteristic.CurrentDoorState.CLOSED;
10
10
  this.targetState = this.platform.Characteristic.TargetDoorState.CLOSED;
11
11
  this.connected = true;
12
- this.hasFault = false;
13
12
  this.obstructionDetected = false;
14
13
  this.isClosedSensorActive = false;
15
14
  this.isPartialSensorActive = false;
@@ -17,6 +16,10 @@ class GateAccessory {
17
16
  this.hasPartialSensorState = false;
18
17
  this.transitionTimeoutMs = 60000;
19
18
  this.reverseToggleDelayMs = 1200;
19
+ this.openArrivalDebounceMs = 450;
20
+ this.lastCommandAt = 0;
21
+ this.duplicateSetWindowMs = 350;
22
+ this.sawPartialMotionDuringPending = false;
20
23
  this.accessory.getService(this.platform.Service.AccessoryInformation)
21
24
  .setCharacteristic(this.platform.Characteristic.Manufacturer, 'Supla')
22
25
  .setCharacteristic(this.platform.Characteristic.Model, 'GateController');
@@ -38,6 +41,7 @@ class GateAccessory {
38
41
  this.platform.registerOwnerCleanup(this.accessory.UUID, () => {
39
42
  this.clearTransitionTimer();
40
43
  this.clearReverseToggleTimer();
44
+ this.clearOpenArrivalDebounceTimer();
41
45
  });
42
46
  this.partialHiMode = this.platform.getGatePartialHiMode();
43
47
  this.baseTopic = this.platform.normalizeTopicBase(this.context.topic);
@@ -53,14 +57,19 @@ class GateAccessory {
53
57
  const changed = !this.hasPartialSensorState || next !== this.isPartialSensorActive;
54
58
  this.isPartialSensorActive = next;
55
59
  this.hasPartialSensorState = true;
60
+ if (this.pendingTarget !== undefined && this.isPartialSensorActive) {
61
+ this.sawPartialMotionDuringPending = true;
62
+ }
56
63
  this.updateStatesFromSensors(changed);
57
64
  }, this.accessory.UUID);
58
65
  this.platform.registerMqttHandler(`${this.baseTopic}/state/connected`, (message) => {
59
66
  this.connected = this.platform.parseBoolean(message.toString());
60
67
  this.updateStatusFault();
61
68
  if (!this.connected) {
62
- this.pendingTarget = undefined;
69
+ this.setPendingTarget(undefined);
63
70
  this.clearTransitionTimer();
71
+ this.clearReverseToggleTimer();
72
+ this.clearOpenArrivalDebounceTimer();
64
73
  }
65
74
  }, this.accessory.UUID);
66
75
  this.updateStatusFault();
@@ -75,14 +84,13 @@ class GateAccessory {
75
84
  const requestedTarget = value;
76
85
  const mode = this.platform.getGateControlMode();
77
86
  const motionTarget = this.getMotionTarget();
78
- const isMoving = this.currentState === this.platform.Characteristic.CurrentDoorState.OPENING
79
- || this.currentState === this.platform.Characteristic.CurrentDoorState.CLOSING;
87
+ const isMoving = motionTarget !== undefined;
80
88
  let target = requestedTarget;
81
- // HomeKit can resend the same target while moving; treat it as a reverse for toggle gates.
82
- if (mode === 'toggle' && isMoving && motionTarget !== undefined && requestedTarget === motionTarget) {
83
- target = requestedTarget === this.platform.Characteristic.TargetDoorState.OPEN
84
- ? this.platform.Characteristic.TargetDoorState.CLOSED
85
- : this.platform.Characteristic.TargetDoorState.OPEN;
89
+ if (isMoving && motionTarget !== undefined && requestedTarget === motionTarget) {
90
+ if (this.isLikelyDuplicateSet(requestedTarget)) {
91
+ return;
92
+ }
93
+ target = this.oppositeTarget(requestedTarget);
86
94
  }
87
95
  const previousTarget = this.targetState;
88
96
  this.setTargetState(target);
@@ -93,7 +101,7 @@ class GateAccessory {
93
101
  this.updateStatusFault();
94
102
  return;
95
103
  }
96
- if (mode === 'toggle' && this.isAtTarget(target)) {
104
+ if (!isMoving && this.isAtTarget(target)) {
97
105
  return;
98
106
  }
99
107
  if (this.pendingTarget === target) {
@@ -119,12 +127,10 @@ class GateAccessory {
119
127
  this.scheduleReverseToggle(action, target);
120
128
  }
121
129
  this.clearFaults();
122
- this.pendingTarget = target;
130
+ this.setPendingTarget(target);
131
+ this.markCommand(target);
123
132
  this.armTransitionTimer();
124
- const nextState = target === this.platform.Characteristic.TargetDoorState.OPEN
125
- ? this.platform.Characteristic.CurrentDoorState.OPENING
126
- : this.platform.Characteristic.CurrentDoorState.CLOSING;
127
- this.setCurrentState(nextState);
133
+ this.setCurrentState(this.resolveMovingState(target));
128
134
  }
129
135
  async handleObstructionDetectedGet() {
130
136
  return this.obstructionDetected;
@@ -136,68 +142,40 @@ class GateAccessory {
136
142
  }
137
143
  if (this.isClosedSensorActive) {
138
144
  if (this.pendingTarget === this.platform.Characteristic.TargetDoorState.OPEN) {
145
+ this.setTargetState(this.platform.Characteristic.TargetDoorState.OPEN);
139
146
  this.setCurrentState(this.platform.Characteristic.CurrentDoorState.OPENING);
140
147
  return;
141
148
  }
142
- this.pendingTarget = undefined;
149
+ this.setPendingTarget(undefined);
143
150
  this.clearTransitionTimer();
144
151
  this.clearReverseToggleTimer();
152
+ this.clearOpenArrivalDebounceTimer();
145
153
  this.applyDoorState(this.platform.Characteristic.CurrentDoorState.CLOSED, this.platform.Characteristic.TargetDoorState.CLOSED);
146
154
  return;
147
155
  }
148
- if (this.partialHiMode === 'moving') {
149
- if (this.isPartialSensorActive) {
150
- this.setCurrentState(this.resolveMovingState());
151
- this.maybeSetIdleOpenTarget();
152
- return;
153
- }
154
- this.setCurrentState(this.platform.Characteristic.CurrentDoorState.STOPPED);
155
- this.maybeSetIdleOpenTarget();
156
- return;
157
- }
158
- if (this.partialHiMode === 'open_endstop') {
159
- if (this.isPartialSensorActive) {
160
- this.pendingTarget = undefined;
161
- this.clearTransitionTimer();
162
- this.clearReverseToggleTimer();
163
- this.applyDoorState(this.platform.Characteristic.CurrentDoorState.OPEN, this.platform.Characteristic.TargetDoorState.OPEN);
164
- return;
165
- }
166
- if (this.pendingTarget !== undefined) {
167
- this.setCurrentState(this.resolveMovingState());
168
- return;
169
- }
170
- this.setCurrentState(this.platform.Characteristic.CurrentDoorState.STOPPED);
171
- this.maybeSetIdleOpenTarget();
156
+ if (this.pendingTarget === this.platform.Characteristic.TargetDoorState.OPEN
157
+ && this.shouldDebounceOpenArrival()) {
158
+ this.scheduleOpenArrivalDebounce();
172
159
  return;
173
160
  }
174
- if (this.partialHiMode === 'pedestrian_endstop') {
175
- if (this.isPartialSensorActive) {
176
- this.pendingTarget = undefined;
177
- this.clearTransitionTimer();
178
- this.clearReverseToggleTimer();
179
- this.setCurrentState(this.platform.Characteristic.CurrentDoorState.STOPPED);
180
- this.maybeSetIdleOpenTarget();
181
- return;
182
- }
183
- if (this.pendingTarget !== undefined) {
184
- this.setCurrentState(this.resolveMovingState());
185
- return;
186
- }
187
- this.pendingTarget = undefined;
161
+ if (this.pendingTarget === this.platform.Characteristic.TargetDoorState.OPEN
162
+ && this.isOpenArrivalSignal()) {
163
+ this.setPendingTarget(undefined);
188
164
  this.clearTransitionTimer();
189
165
  this.clearReverseToggleTimer();
166
+ this.clearOpenArrivalDebounceTimer();
190
167
  this.applyDoorState(this.platform.Characteristic.CurrentDoorState.OPEN, this.platform.Characteristic.TargetDoorState.OPEN);
191
168
  return;
192
169
  }
193
170
  if (this.pendingTarget !== undefined) {
194
- this.setCurrentState(this.resolveMovingState());
171
+ this.setTargetState(this.pendingTarget);
172
+ this.setCurrentState(this.resolveMovingState(this.pendingTarget));
195
173
  return;
196
174
  }
197
175
  this.clearTransitionTimer();
198
176
  this.clearReverseToggleTimer();
199
- this.setCurrentState(this.platform.Characteristic.CurrentDoorState.STOPPED);
200
- this.maybeSetIdleOpenTarget();
177
+ this.clearOpenArrivalDebounceTimer();
178
+ this.applyDoorState(this.platform.Characteristic.CurrentDoorState.OPEN, this.platform.Characteristic.TargetDoorState.OPEN);
201
179
  }
202
180
  isAtTarget(target) {
203
181
  if (target === this.platform.Characteristic.TargetDoorState.CLOSED) {
@@ -207,32 +185,8 @@ class GateAccessory {
207
185
  return this.isClosedSensorActive;
208
186
  }
209
187
  if (target === this.platform.Characteristic.TargetDoorState.OPEN) {
210
- if (this.partialHiMode === 'moving') {
211
- return false;
212
- }
213
- if (this.partialHiMode === 'open_endstop') {
214
- if (!this.hasPartialSensorState) {
215
- return false;
216
- }
217
- return this.isPartialSensorActive;
218
- }
219
- if (this.partialHiMode === 'pedestrian_endstop') {
220
- if (!this.hasClosedSensorState && !this.hasPartialSensorState) {
221
- return false;
222
- }
223
- if (this.hasClosedSensorState && this.isClosedSensorActive) {
224
- return false;
225
- }
226
- if (this.hasPartialSensorState && this.isPartialSensorActive) {
227
- return false;
228
- }
229
- return true;
230
- }
231
- if (!this.hasClosedSensorState) {
232
- return false;
233
- }
234
- return this.currentState === this.platform.Characteristic.CurrentDoorState.OPEN
235
- && !this.isClosedSensorActive;
188
+ return this.isKnownNotClosed()
189
+ && this.currentState === this.platform.Characteristic.CurrentDoorState.OPEN;
236
190
  }
237
191
  return false;
238
192
  }
@@ -254,46 +208,50 @@ class GateAccessory {
254
208
  this.targetState = next;
255
209
  this.service.updateCharacteristic(this.platform.Characteristic.TargetDoorState, this.targetState);
256
210
  }
257
- maybeSetIdleOpenTarget() {
258
- if (this.pendingTarget !== undefined) {
259
- return;
211
+ isKnownNotClosed() {
212
+ if (this.hasClosedSensorState) {
213
+ return !this.isClosedSensorActive;
260
214
  }
261
- const knowsNotClosed = (this.hasClosedSensorState && !this.isClosedSensorActive)
262
- || (this.hasPartialSensorState && this.isPartialSensorActive);
263
- if (!knowsNotClosed) {
264
- return;
215
+ if (this.hasPartialSensorState && this.isPartialSensorActive) {
216
+ return true;
265
217
  }
266
- this.setTargetState(this.platform.Characteristic.TargetDoorState.OPEN);
218
+ return this.currentState !== this.platform.Characteristic.CurrentDoorState.CLOSED;
267
219
  }
268
220
  updateStatusFault() {
269
- const fault = !this.connected || this.hasFault;
221
+ const fault = !this.connected;
270
222
  this.service.updateCharacteristic(this.platform.Characteristic.StatusFault, fault
271
223
  ? this.platform.Characteristic.StatusFault.GENERAL_FAULT
272
224
  : this.platform.Characteristic.StatusFault.NO_FAULT);
273
225
  }
274
226
  clearFaults() {
275
- if (this.hasFault) {
276
- this.hasFault = false;
277
- }
278
227
  if (this.obstructionDetected) {
279
228
  this.obstructionDetected = false;
280
229
  this.service.updateCharacteristic(this.platform.Characteristic.ObstructionDetected, false);
281
230
  }
282
- if (this.connected) {
283
- this.updateStatusFault();
284
- }
231
+ this.updateStatusFault();
285
232
  }
286
233
  armTransitionTimer() {
287
234
  this.clearTransitionTimer();
288
235
  this.transitionTimer = setTimeout(() => {
289
236
  this.transitionTimer = undefined;
290
- this.pendingTarget = undefined;
291
- this.hasFault = true;
292
- this.obstructionDetected = true;
293
- this.updateStatusFault();
294
- this.service.updateCharacteristic(this.platform.Characteristic.ObstructionDetected, true);
295
- this.setCurrentState(this.platform.Characteristic.CurrentDoorState.STOPPED);
296
- this.platform.log.warn(`Gate ${this.accessory.displayName} did not reach target within ${this.transitionTimeoutMs}ms.`);
237
+ const target = this.pendingTarget;
238
+ this.setPendingTarget(undefined);
239
+ this.clearReverseToggleTimer();
240
+ this.clearOpenArrivalDebounceTimer();
241
+ if (target === undefined) {
242
+ return;
243
+ }
244
+ const settled = this.resolveTerminalStateFromSensors();
245
+ if (settled !== undefined) {
246
+ this.applyDoorState(settled.current, settled.target);
247
+ return;
248
+ }
249
+ const assumedCurrent = target === this.platform.Characteristic.TargetDoorState.OPEN
250
+ ? this.platform.Characteristic.CurrentDoorState.OPEN
251
+ : this.platform.Characteristic.CurrentDoorState.CLOSED;
252
+ this.applyDoorState(assumedCurrent, target);
253
+ this.platform.log.warn(`Gate ${this.accessory.displayName} did not confirm target within ${this.transitionTimeoutMs}ms; assuming ` +
254
+ `${target === this.platform.Characteristic.TargetDoorState.OPEN ? 'open' : 'closed'}.`);
297
255
  }, this.transitionTimeoutMs);
298
256
  }
299
257
  clearTransitionTimer() {
@@ -308,20 +266,26 @@ class GateAccessory {
308
266
  this.reverseToggleTimer = undefined;
309
267
  }
310
268
  }
269
+ clearOpenArrivalDebounceTimer() {
270
+ if (this.openArrivalDebounceTimer) {
271
+ clearTimeout(this.openArrivalDebounceTimer);
272
+ this.openArrivalDebounceTimer = undefined;
273
+ }
274
+ }
311
275
  touchTransitionTimer() {
312
276
  if (this.pendingTarget === undefined) {
313
277
  return;
314
278
  }
315
279
  this.armTransitionTimer();
316
280
  }
317
- resolveMovingState() {
318
- if (this.pendingTarget === this.platform.Characteristic.TargetDoorState.OPEN) {
281
+ resolveMovingState(target) {
282
+ if (target === this.platform.Characteristic.TargetDoorState.OPEN) {
319
283
  return this.platform.Characteristic.CurrentDoorState.OPENING;
320
284
  }
321
- if (this.pendingTarget === this.platform.Characteristic.TargetDoorState.CLOSED) {
285
+ if (target === this.platform.Characteristic.TargetDoorState.CLOSED) {
322
286
  return this.platform.Characteristic.CurrentDoorState.CLOSING;
323
287
  }
324
- return this.platform.Characteristic.CurrentDoorState.STOPPED;
288
+ return this.currentState;
325
289
  }
326
290
  getMotionTarget() {
327
291
  if (this.pendingTarget !== undefined) {
@@ -335,6 +299,93 @@ class GateAccessory {
335
299
  }
336
300
  return undefined;
337
301
  }
302
+ isOpenArrivalSignal() {
303
+ if (this.partialHiMode === 'moving') {
304
+ if (!this.hasPartialSensorState) {
305
+ return true;
306
+ }
307
+ return this.hasPartialSensorState
308
+ && this.sawPartialMotionDuringPending
309
+ && !this.isPartialSensorActive;
310
+ }
311
+ if (!this.hasPartialSensorState) {
312
+ return false;
313
+ }
314
+ if (this.partialHiMode === 'open_endstop') {
315
+ return this.isPartialSensorActive;
316
+ }
317
+ if (this.partialHiMode === 'pedestrian_endstop') {
318
+ return this.isPartialSensorActive;
319
+ }
320
+ return false;
321
+ }
322
+ shouldDebounceOpenArrival() {
323
+ return this.partialHiMode === 'moving'
324
+ && !this.hasPartialSensorState
325
+ && !this.isClosedSensorActive;
326
+ }
327
+ scheduleOpenArrivalDebounce() {
328
+ if (this.openArrivalDebounceTimer) {
329
+ return;
330
+ }
331
+ this.openArrivalDebounceTimer = setTimeout(() => {
332
+ this.openArrivalDebounceTimer = undefined;
333
+ if (!this.connected) {
334
+ return;
335
+ }
336
+ if (this.pendingTarget !== this.platform.Characteristic.TargetDoorState.OPEN) {
337
+ return;
338
+ }
339
+ if (this.isClosedSensorActive) {
340
+ return;
341
+ }
342
+ this.setPendingTarget(undefined);
343
+ this.clearTransitionTimer();
344
+ this.clearReverseToggleTimer();
345
+ this.applyDoorState(this.platform.Characteristic.CurrentDoorState.OPEN, this.platform.Characteristic.TargetDoorState.OPEN);
346
+ }, this.openArrivalDebounceMs);
347
+ }
348
+ resolveTerminalStateFromSensors() {
349
+ if (!this.hasClosedSensorState) {
350
+ return undefined;
351
+ }
352
+ if (this.isClosedSensorActive) {
353
+ return {
354
+ current: this.platform.Characteristic.CurrentDoorState.CLOSED,
355
+ target: this.platform.Characteristic.TargetDoorState.CLOSED,
356
+ };
357
+ }
358
+ return {
359
+ current: this.platform.Characteristic.CurrentDoorState.OPEN,
360
+ target: this.platform.Characteristic.TargetDoorState.OPEN,
361
+ };
362
+ }
363
+ oppositeTarget(target) {
364
+ return target === this.platform.Characteristic.TargetDoorState.OPEN
365
+ ? this.platform.Characteristic.TargetDoorState.CLOSED
366
+ : this.platform.Characteristic.TargetDoorState.OPEN;
367
+ }
368
+ markCommand(target) {
369
+ this.lastCommandTarget = target;
370
+ this.lastCommandAt = Date.now();
371
+ }
372
+ setPendingTarget(target) {
373
+ this.pendingTarget = target;
374
+ if (target !== this.platform.Characteristic.TargetDoorState.OPEN) {
375
+ this.clearOpenArrivalDebounceTimer();
376
+ }
377
+ if (target === undefined) {
378
+ this.sawPartialMotionDuringPending = false;
379
+ return;
380
+ }
381
+ this.sawPartialMotionDuringPending = this.hasPartialSensorState && this.isPartialSensorActive;
382
+ }
383
+ isLikelyDuplicateSet(target) {
384
+ if (this.lastCommandTarget !== target) {
385
+ return false;
386
+ }
387
+ return Date.now() - this.lastCommandAt <= this.duplicateSetWindowMs;
388
+ }
338
389
  publishGateAction(action, note) {
339
390
  const suffix = note ? ` (${note})` : '';
340
391
  this.platform.log.debug(`Publishing ${this.baseTopic}/execute_action = ${action}${suffix}`);
@@ -1 +1 @@
1
- {"version":3,"file":"GateAccessory.js","sourceRoot":"","sources":["../../src/Accesories/GateAccessory.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"GateAccessory.js","sourceRoot":"","sources":["../../src/Accesories/GateAccessory.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "displayName": "Supla Plugin",
3
3
  "name": "@marcel2215/homebridge-supla-plugin",
4
- "version": "2.1.18",
4
+ "version": "2.1.21",
5
5
  "description": "Plugin for Homebridge to control Supla devices",
6
6
  "license": "Apache-2.0",
7
7
  "repository": {
@@ -17,7 +17,12 @@
17
17
  "lint": "eslint src/**.ts --max-warnings=0",
18
18
  "watch": "npm run build && npm link && nodemon",
19
19
  "build": "rimraf ./dist && tsc",
20
- "prepublishOnly": "npm run lint && npm run build"
20
+ "prepublishOnly": "npm run lint && npm run build",
21
+ "version:bump:major": "npm version major",
22
+ "version:bump:minor": "npm version minor",
23
+ "version:bump:revision": "npm version patch",
24
+ "publish:plugin": "bash ./scripts/publish.sh",
25
+ "publish:plugin:dry-run": "bash ./scripts/publish.sh --dry-run"
21
26
  },
22
27
  "keywords": [
23
28
  "homebridge-plugin",
@@ -0,0 +1,117 @@
1
+ #!/usr/bin/env bash
2
+
3
+ set -euo pipefail
4
+
5
+ usage() {
6
+ cat <<'EOF'
7
+ Usage: scripts/publish.sh [options]
8
+
9
+ Options:
10
+ --tag <tag> npm dist-tag to publish with (default: latest)
11
+ --dry-run Run npm publish in dry-run mode
12
+ --allow-dirty Allow publishing with uncommitted git changes
13
+ --skip-checks Skip lint/build checks
14
+ --otp <code> npm 2FA one-time password
15
+ -h, --help Show this help
16
+ EOF
17
+ }
18
+
19
+ TAG="latest"
20
+ DRY_RUN=false
21
+ ALLOW_DIRTY=false
22
+ SKIP_CHECKS=false
23
+ OTP=""
24
+
25
+ while [[ $# -gt 0 ]]; do
26
+ case "$1" in
27
+ --tag)
28
+ shift
29
+ if [[ $# -eq 0 || -z "${1:-}" ]]; then
30
+ echo "Missing value for --tag" >&2
31
+ usage
32
+ exit 1
33
+ fi
34
+ TAG="$1"
35
+ ;;
36
+ --dry-run)
37
+ DRY_RUN=true
38
+ ;;
39
+ --allow-dirty)
40
+ ALLOW_DIRTY=true
41
+ ;;
42
+ --skip-checks)
43
+ SKIP_CHECKS=true
44
+ ;;
45
+ --otp)
46
+ shift
47
+ if [[ $# -eq 0 || -z "${1:-}" ]]; then
48
+ echo "Missing value for --otp" >&2
49
+ usage
50
+ exit 1
51
+ fi
52
+ OTP="$1"
53
+ ;;
54
+ -h|--help)
55
+ usage
56
+ exit 0
57
+ ;;
58
+ *)
59
+ echo "Unknown option: $1" >&2
60
+ usage
61
+ exit 1
62
+ ;;
63
+ esac
64
+ shift
65
+ done
66
+
67
+ SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
68
+ REPO_ROOT="$(cd "${SCRIPT_DIR}/.." && pwd)"
69
+ cd "${REPO_ROOT}"
70
+
71
+ if ! command -v npm >/dev/null 2>&1; then
72
+ echo "npm is required but was not found in PATH." >&2
73
+ exit 1
74
+ fi
75
+
76
+ if ! command -v git >/dev/null 2>&1; then
77
+ echo "git is required but was not found in PATH." >&2
78
+ exit 1
79
+ fi
80
+
81
+ if ! ${ALLOW_DIRTY}; then
82
+ if [[ -n "$(git status --porcelain)" ]]; then
83
+ echo "Working tree is not clean. Commit/stash changes or use --allow-dirty." >&2
84
+ exit 1
85
+ fi
86
+ fi
87
+
88
+ if ! npm whoami >/dev/null 2>&1; then
89
+ echo "Not logged in to npm. Run 'npm login' first." >&2
90
+ exit 1
91
+ fi
92
+
93
+ if ! ${SKIP_CHECKS}; then
94
+ echo "Running pre-publish checks (lint + build)..."
95
+ npm run lint
96
+ npm run build
97
+ fi
98
+
99
+ echo "Previewing package contents..."
100
+ npm pack --dry-run >/dev/null
101
+
102
+ PUBLISH_CMD=(npm publish --access public --tag "${TAG}")
103
+ if ${DRY_RUN}; then
104
+ PUBLISH_CMD+=(--dry-run)
105
+ fi
106
+ if [[ -n "${OTP}" ]]; then
107
+ PUBLISH_CMD+=(--otp "${OTP}")
108
+ fi
109
+
110
+ echo "Publishing with command: ${PUBLISH_CMD[*]}"
111
+ "${PUBLISH_CMD[@]}"
112
+
113
+ if ${DRY_RUN}; then
114
+ echo "Dry-run publish completed."
115
+ else
116
+ echo "Publish completed successfully."
117
+ fi