@marcel2215/homebridge-supla-plugin 2.1.9 → 2.1.11
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/config.schema.json +26 -0
- package/dist/Accesories/ActionTriggerAccessory.d.ts.map +1 -1
- package/dist/Accesories/ActionTriggerAccessory.js +2 -2
- package/dist/Accesories/ActionTriggerAccessory.js.map +1 -1
- package/dist/Accesories/AirQualityAccessory.d.ts.map +1 -1
- package/dist/Accesories/AirQualityAccessory.js +2 -2
- package/dist/Accesories/AirQualityAccessory.js.map +1 -1
- package/dist/Accesories/ContactSensorAccessory.d.ts.map +1 -1
- package/dist/Accesories/ContactSensorAccessory.js +6 -6
- package/dist/Accesories/ContactSensorAccessory.js.map +1 -1
- package/dist/Accesories/DimmerAccessory.d.ts +2 -0
- package/dist/Accesories/DimmerAccessory.d.ts.map +1 -1
- package/dist/Accesories/DimmerAccessory.js +17 -7
- package/dist/Accesories/DimmerAccessory.js.map +1 -1
- package/dist/Accesories/DimmerRgbLightAccessory.d.ts.map +1 -1
- package/dist/Accesories/DimmerRgbLightAccessory.js +11 -11
- package/dist/Accesories/DimmerRgbLightAccessory.js.map +1 -1
- package/dist/Accesories/DoorAccessory.d.ts.map +1 -1
- package/dist/Accesories/DoorAccessory.js +4 -4
- package/dist/Accesories/DoorAccessory.js.map +1 -1
- package/dist/Accesories/ElectricityMeterAccessory.d.ts.map +1 -1
- package/dist/Accesories/ElectricityMeterAccessory.js +2 -2
- package/dist/Accesories/ElectricityMeterAccessory.js.map +1 -1
- package/dist/Accesories/FacadeBlindAccessory.d.ts +15 -0
- package/dist/Accesories/FacadeBlindAccessory.d.ts.map +1 -1
- package/dist/Accesories/FacadeBlindAccessory.js +229 -46
- package/dist/Accesories/FacadeBlindAccessory.js.map +1 -1
- package/dist/Accesories/GarageDoorOpenerAccesory.d.ts +2 -0
- package/dist/Accesories/GarageDoorOpenerAccesory.d.ts.map +1 -1
- package/dist/Accesories/GarageDoorOpenerAccesory.js +15 -5
- package/dist/Accesories/GarageDoorOpenerAccesory.js.map +1 -1
- package/dist/Accesories/GateAccessory.d.ts +19 -3
- package/dist/Accesories/GateAccessory.d.ts.map +1 -1
- package/dist/Accesories/GateAccessory.js +177 -28
- package/dist/Accesories/GateAccessory.js.map +1 -1
- package/dist/Accesories/GateLockAccessory.d.ts +11 -0
- package/dist/Accesories/GateLockAccessory.d.ts.map +1 -1
- package/dist/Accesories/GateLockAccessory.js +132 -19
- package/dist/Accesories/GateLockAccessory.js.map +1 -1
- package/dist/Accesories/LeakSensorAccessory.d.ts.map +1 -1
- package/dist/Accesories/LeakSensorAccessory.js +2 -2
- package/dist/Accesories/LeakSensorAccessory.js.map +1 -1
- package/dist/Accesories/LightBulbAccesory.d.ts +2 -0
- package/dist/Accesories/LightBulbAccesory.d.ts.map +1 -1
- package/dist/Accesories/LightBulbAccesory.js +15 -5
- package/dist/Accesories/LightBulbAccesory.js.map +1 -1
- package/dist/Accesories/PressureAccessory.d.ts.map +1 -1
- package/dist/Accesories/PressureAccessory.js +2 -2
- package/dist/Accesories/PressureAccessory.js.map +1 -1
- package/dist/Accesories/RGBLightBulbAccesory.d.ts.map +1 -1
- package/dist/Accesories/RGBLightBulbAccesory.js +8 -8
- package/dist/Accesories/RGBLightBulbAccesory.js.map +1 -1
- package/dist/Accesories/RollerShutterAccessory.d.ts +10 -0
- package/dist/Accesories/RollerShutterAccessory.d.ts.map +1 -1
- package/dist/Accesories/RollerShutterAccessory.js +187 -26
- package/dist/Accesories/RollerShutterAccessory.js.map +1 -1
- package/dist/Accesories/SwitchAccessory.d.ts +2 -0
- package/dist/Accesories/SwitchAccessory.d.ts.map +1 -1
- package/dist/Accesories/SwitchAccessory.js +15 -5
- package/dist/Accesories/SwitchAccessory.js.map +1 -1
- package/dist/Accesories/TemperatureAccessory.d.ts.map +1 -1
- package/dist/Accesories/TemperatureAccessory.js +2 -2
- package/dist/Accesories/TemperatureAccessory.js.map +1 -1
- package/dist/Accesories/TemperatureHumidityAccessory.d.ts.map +1 -1
- package/dist/Accesories/TemperatureHumidityAccessory.js +3 -3
- package/dist/Accesories/TemperatureHumidityAccessory.js.map +1 -1
- package/dist/Accesories/ThermostatAccessory.d.ts.map +1 -1
- package/dist/Accesories/ThermostatAccessory.js +10 -10
- package/dist/Accesories/ThermostatAccessory.js.map +1 -1
- package/dist/Accesories/ValveAccessory.d.ts.map +1 -1
- package/dist/Accesories/ValveAccessory.js +4 -4
- package/dist/Accesories/ValveAccessory.js.map +1 -1
- package/dist/Accesories/WicketAccesory.d.ts.map +1 -1
- package/dist/Accesories/WicketAccesory.js +2 -2
- package/dist/Accesories/WicketAccesory.js.map +1 -1
- package/dist/Heplers/SuplaMqttClient.d.ts +4 -1
- package/dist/Heplers/SuplaMqttClient.d.ts.map +1 -1
- package/dist/Heplers/SuplaMqttClient.js +74 -39
- package/dist/Heplers/SuplaMqttClient.js.map +1 -1
- package/dist/platform.d.ts +33 -1
- package/dist/platform.d.ts.map +1 -1
- package/dist/platform.js +433 -37
- package/dist/platform.js.map +1 -1
- package/package.json +1 -1
|
@@ -9,8 +9,11 @@ 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.
|
|
13
|
-
this.
|
|
12
|
+
this.hasFault = false;
|
|
13
|
+
this.obstructionDetected = false;
|
|
14
|
+
this.isClosedSensorActive = false;
|
|
15
|
+
this.isPartialSensorActive = false;
|
|
16
|
+
this.transitionTimeoutMs = 60000;
|
|
14
17
|
this.accessory.getService(this.platform.Service.AccessoryInformation)
|
|
15
18
|
.setCharacteristic(this.platform.Characteristic.Manufacturer, 'Supla')
|
|
16
19
|
.setCharacteristic(this.platform.Characteristic.Model, 'GateController');
|
|
@@ -28,18 +31,28 @@ class GateAccessory {
|
|
|
28
31
|
.onSet(this.handleTargetDoorStateSet.bind(this));
|
|
29
32
|
this.service.getCharacteristic(this.platform.Characteristic.ObstructionDetected)
|
|
30
33
|
.onGet(this.handleObstructionDetectedGet.bind(this));
|
|
31
|
-
this.
|
|
32
|
-
|
|
33
|
-
this.
|
|
34
|
+
this.service.setCharacteristic(this.platform.Characteristic.ObstructionDetected, false);
|
|
35
|
+
this.platform.registerOwnerCleanup(this.accessory.UUID, () => {
|
|
36
|
+
this.clearTransitionTimer();
|
|
34
37
|
});
|
|
38
|
+
this.partialHiMode = this.platform.getGatePartialHiMode();
|
|
39
|
+
this.platform.registerMqttHandler(`${this.context.topic}/state/hi`, (message) => {
|
|
40
|
+
this.isClosedSensorActive = this.platform.parseBoolean(message.toString());
|
|
41
|
+
this.updateStatesFromSensors();
|
|
42
|
+
}, this.accessory.UUID);
|
|
35
43
|
this.platform.registerMqttHandler(`${this.context.topic}/state/partial_hi`, (message) => {
|
|
36
|
-
this.
|
|
37
|
-
this.
|
|
38
|
-
});
|
|
44
|
+
this.isPartialSensorActive = this.platform.parseBoolean(message.toString());
|
|
45
|
+
this.updateStatesFromSensors();
|
|
46
|
+
}, this.accessory.UUID);
|
|
39
47
|
this.platform.registerMqttHandler(`${this.context.topic}/state/connected`, (message) => {
|
|
40
48
|
this.connected = this.platform.parseBoolean(message.toString());
|
|
41
|
-
this.
|
|
42
|
-
|
|
49
|
+
this.updateStatusFault();
|
|
50
|
+
if (!this.connected) {
|
|
51
|
+
this.pendingTarget = undefined;
|
|
52
|
+
this.clearTransitionTimer();
|
|
53
|
+
}
|
|
54
|
+
}, this.accessory.UUID);
|
|
55
|
+
this.updateStatusFault();
|
|
43
56
|
}
|
|
44
57
|
async handleCurrentDoorStateGet() {
|
|
45
58
|
return this.currentState;
|
|
@@ -49,8 +62,20 @@ class GateAccessory {
|
|
|
49
62
|
}
|
|
50
63
|
async handleTargetDoorStateSet(value) {
|
|
51
64
|
const target = value;
|
|
52
|
-
this.targetState
|
|
53
|
-
this.
|
|
65
|
+
const previousTarget = this.targetState;
|
|
66
|
+
this.setTargetState(target);
|
|
67
|
+
if (!this.connected) {
|
|
68
|
+
this.platform.log.warn(`Gate ${this.accessory.displayName} is offline; ignoring command.`);
|
|
69
|
+
this.setTargetState(previousTarget);
|
|
70
|
+
this.updateStatusFault();
|
|
71
|
+
return;
|
|
72
|
+
}
|
|
73
|
+
if (this.isAtTarget(target)) {
|
|
74
|
+
return;
|
|
75
|
+
}
|
|
76
|
+
if (this.pendingTarget === target) {
|
|
77
|
+
return;
|
|
78
|
+
}
|
|
54
79
|
const mode = this.platform.getGateControlMode();
|
|
55
80
|
let action = '';
|
|
56
81
|
if (mode === 'toggle') {
|
|
@@ -63,36 +88,160 @@ class GateAccessory {
|
|
|
63
88
|
}
|
|
64
89
|
if (!action) {
|
|
65
90
|
this.platform.log.warn(`Gate action not configured for ${this.accessory.displayName}`);
|
|
91
|
+
this.setTargetState(previousTarget);
|
|
66
92
|
return;
|
|
67
93
|
}
|
|
68
94
|
this.platform.log.debug(`Publishing ${this.context.topic}/execute_action = ${action}`);
|
|
69
|
-
this.platform.
|
|
70
|
-
this.
|
|
95
|
+
this.platform.publishCommand(`${this.context.topic}/execute_action`, action);
|
|
96
|
+
this.clearFaults();
|
|
97
|
+
this.pendingTarget = target;
|
|
98
|
+
this.armTransitionTimer();
|
|
99
|
+
const nextState = target === this.platform.Characteristic.TargetDoorState.OPEN
|
|
71
100
|
? this.platform.Characteristic.CurrentDoorState.OPENING
|
|
72
101
|
: this.platform.Characteristic.CurrentDoorState.CLOSING;
|
|
73
|
-
this.
|
|
102
|
+
this.setCurrentState(nextState);
|
|
74
103
|
}
|
|
75
104
|
async handleObstructionDetectedGet() {
|
|
76
|
-
return
|
|
105
|
+
return this.obstructionDetected;
|
|
77
106
|
}
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
107
|
+
updateStatesFromSensors() {
|
|
108
|
+
this.clearFaults();
|
|
109
|
+
this.touchTransitionTimer();
|
|
110
|
+
if (this.isClosedSensorActive) {
|
|
111
|
+
this.pendingTarget = undefined;
|
|
112
|
+
this.clearTransitionTimer();
|
|
113
|
+
this.applyDoorState(this.platform.Characteristic.CurrentDoorState.CLOSED, this.platform.Characteristic.TargetDoorState.CLOSED);
|
|
114
|
+
return;
|
|
84
115
|
}
|
|
85
|
-
|
|
86
|
-
this.
|
|
87
|
-
|
|
116
|
+
if (this.partialHiMode === 'moving') {
|
|
117
|
+
if (this.isPartialSensorActive) {
|
|
118
|
+
this.setCurrentState(this.resolveMovingState());
|
|
119
|
+
return;
|
|
120
|
+
}
|
|
121
|
+
this.pendingTarget = undefined;
|
|
122
|
+
this.clearTransitionTimer();
|
|
123
|
+
this.applyDoorState(this.platform.Characteristic.CurrentDoorState.OPEN, this.platform.Characteristic.TargetDoorState.OPEN);
|
|
124
|
+
return;
|
|
88
125
|
}
|
|
89
|
-
|
|
90
|
-
this.
|
|
91
|
-
|
|
126
|
+
if (this.partialHiMode === 'open_endstop') {
|
|
127
|
+
if (this.isPartialSensorActive) {
|
|
128
|
+
this.pendingTarget = undefined;
|
|
129
|
+
this.clearTransitionTimer();
|
|
130
|
+
this.applyDoorState(this.platform.Characteristic.CurrentDoorState.OPEN, this.platform.Characteristic.TargetDoorState.OPEN);
|
|
131
|
+
return;
|
|
132
|
+
}
|
|
133
|
+
if (this.pendingTarget !== undefined) {
|
|
134
|
+
this.setCurrentState(this.resolveMovingState());
|
|
135
|
+
return;
|
|
136
|
+
}
|
|
137
|
+
this.setCurrentState(this.platform.Characteristic.CurrentDoorState.STOPPED);
|
|
138
|
+
return;
|
|
139
|
+
}
|
|
140
|
+
if (this.partialHiMode === 'pedestrian_endstop') {
|
|
141
|
+
if (this.isPartialSensorActive) {
|
|
142
|
+
this.pendingTarget = undefined;
|
|
143
|
+
this.clearTransitionTimer();
|
|
144
|
+
this.setCurrentState(this.platform.Characteristic.CurrentDoorState.STOPPED);
|
|
145
|
+
return;
|
|
146
|
+
}
|
|
147
|
+
if (this.pendingTarget !== undefined) {
|
|
148
|
+
this.setCurrentState(this.resolveMovingState());
|
|
149
|
+
return;
|
|
150
|
+
}
|
|
151
|
+
this.pendingTarget = undefined;
|
|
152
|
+
this.clearTransitionTimer();
|
|
153
|
+
this.applyDoorState(this.platform.Characteristic.CurrentDoorState.OPEN, this.platform.Characteristic.TargetDoorState.OPEN);
|
|
154
|
+
return;
|
|
155
|
+
}
|
|
156
|
+
this.pendingTarget = undefined;
|
|
157
|
+
this.clearTransitionTimer();
|
|
158
|
+
this.applyDoorState(this.platform.Characteristic.CurrentDoorState.OPEN, this.platform.Characteristic.TargetDoorState.OPEN);
|
|
159
|
+
}
|
|
160
|
+
isAtTarget(target) {
|
|
161
|
+
if (target === this.platform.Characteristic.TargetDoorState.CLOSED) {
|
|
162
|
+
return this.isClosedSensorActive;
|
|
163
|
+
}
|
|
164
|
+
if (target === this.platform.Characteristic.TargetDoorState.OPEN) {
|
|
165
|
+
if (this.partialHiMode === 'open_endstop') {
|
|
166
|
+
return this.isPartialSensorActive;
|
|
167
|
+
}
|
|
168
|
+
if (this.partialHiMode === 'moving' || this.partialHiMode === 'pedestrian_endstop') {
|
|
169
|
+
return !this.isClosedSensorActive && !this.isPartialSensorActive;
|
|
170
|
+
}
|
|
171
|
+
return !this.isClosedSensorActive;
|
|
92
172
|
}
|
|
173
|
+
return false;
|
|
174
|
+
}
|
|
175
|
+
applyDoorState(current, target) {
|
|
176
|
+
this.setCurrentState(current);
|
|
177
|
+
this.setTargetState(target);
|
|
178
|
+
}
|
|
179
|
+
setCurrentState(next) {
|
|
180
|
+
if (this.currentState === next) {
|
|
181
|
+
return;
|
|
182
|
+
}
|
|
183
|
+
this.currentState = next;
|
|
93
184
|
this.service.updateCharacteristic(this.platform.Characteristic.CurrentDoorState, this.currentState);
|
|
185
|
+
}
|
|
186
|
+
setTargetState(next) {
|
|
187
|
+
if (this.targetState === next) {
|
|
188
|
+
return;
|
|
189
|
+
}
|
|
190
|
+
this.targetState = next;
|
|
94
191
|
this.service.updateCharacteristic(this.platform.Characteristic.TargetDoorState, this.targetState);
|
|
95
192
|
}
|
|
193
|
+
updateStatusFault() {
|
|
194
|
+
const fault = !this.connected || this.hasFault;
|
|
195
|
+
this.service.updateCharacteristic(this.platform.Characteristic.StatusFault, fault
|
|
196
|
+
? this.platform.Characteristic.StatusFault.GENERAL_FAULT
|
|
197
|
+
: this.platform.Characteristic.StatusFault.NO_FAULT);
|
|
198
|
+
}
|
|
199
|
+
clearFaults() {
|
|
200
|
+
if (this.hasFault) {
|
|
201
|
+
this.hasFault = false;
|
|
202
|
+
}
|
|
203
|
+
if (this.obstructionDetected) {
|
|
204
|
+
this.obstructionDetected = false;
|
|
205
|
+
this.service.updateCharacteristic(this.platform.Characteristic.ObstructionDetected, false);
|
|
206
|
+
}
|
|
207
|
+
if (this.connected) {
|
|
208
|
+
this.updateStatusFault();
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
armTransitionTimer() {
|
|
212
|
+
this.clearTransitionTimer();
|
|
213
|
+
this.transitionTimer = setTimeout(() => {
|
|
214
|
+
this.transitionTimer = undefined;
|
|
215
|
+
this.pendingTarget = undefined;
|
|
216
|
+
this.hasFault = true;
|
|
217
|
+
this.obstructionDetected = true;
|
|
218
|
+
this.updateStatusFault();
|
|
219
|
+
this.service.updateCharacteristic(this.platform.Characteristic.ObstructionDetected, true);
|
|
220
|
+
this.setCurrentState(this.platform.Characteristic.CurrentDoorState.STOPPED);
|
|
221
|
+
this.platform.log.warn(`Gate ${this.accessory.displayName} did not reach target within ${this.transitionTimeoutMs}ms.`);
|
|
222
|
+
}, this.transitionTimeoutMs);
|
|
223
|
+
}
|
|
224
|
+
clearTransitionTimer() {
|
|
225
|
+
if (this.transitionTimer) {
|
|
226
|
+
clearTimeout(this.transitionTimer);
|
|
227
|
+
this.transitionTimer = undefined;
|
|
228
|
+
}
|
|
229
|
+
}
|
|
230
|
+
touchTransitionTimer() {
|
|
231
|
+
if (this.pendingTarget === undefined) {
|
|
232
|
+
return;
|
|
233
|
+
}
|
|
234
|
+
this.armTransitionTimer();
|
|
235
|
+
}
|
|
236
|
+
resolveMovingState() {
|
|
237
|
+
if (this.pendingTarget === this.platform.Characteristic.TargetDoorState.OPEN) {
|
|
238
|
+
return this.platform.Characteristic.CurrentDoorState.OPENING;
|
|
239
|
+
}
|
|
240
|
+
if (this.pendingTarget === this.platform.Characteristic.TargetDoorState.CLOSED) {
|
|
241
|
+
return this.platform.Characteristic.CurrentDoorState.CLOSING;
|
|
242
|
+
}
|
|
243
|
+
return this.platform.Characteristic.CurrentDoorState.STOPPED;
|
|
244
|
+
}
|
|
96
245
|
}
|
|
97
246
|
exports.GateAccessory = GateAccessory;
|
|
98
247
|
//# sourceMappingURL=GateAccessory.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GateAccessory.js","sourceRoot":"","sources":["../../src/Accesories/GateAccessory.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"GateAccessory.js","sourceRoot":"","sources":["../../src/Accesories/GateAccessory.ts"],"names":[],"mappings":"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"}
|
|
@@ -9,10 +9,21 @@ export declare class GateLockAccessory {
|
|
|
9
9
|
private currentState;
|
|
10
10
|
private targetState;
|
|
11
11
|
private connected;
|
|
12
|
+
private hasFault;
|
|
13
|
+
private pendingTarget?;
|
|
12
14
|
private pulseTimer?;
|
|
15
|
+
private transitionTimer?;
|
|
16
|
+
private readonly transitionTimeoutMs;
|
|
13
17
|
constructor(platform: SuplaPlatform, accessory: PlatformAccessory, context: SuplaChannelContext);
|
|
14
18
|
handleCurrentStateGet(): Promise<CharacteristicValue>;
|
|
15
19
|
handleTargetStateGet(): Promise<CharacteristicValue>;
|
|
16
20
|
handleTargetStateSet(value: CharacteristicValue): Promise<void>;
|
|
21
|
+
private setCurrentState;
|
|
22
|
+
private setTargetState;
|
|
23
|
+
private updateStatusFault;
|
|
24
|
+
private clearFaults;
|
|
25
|
+
private armTransitionTimer;
|
|
26
|
+
private clearPulseTimer;
|
|
27
|
+
private clearTransitionTimer;
|
|
17
28
|
}
|
|
18
29
|
//# sourceMappingURL=GateLockAccessory.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GateLockAccessory.d.ts","sourceRoot":"","sources":["../../src/Accesories/GateLockAccessory.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;AAErE,qBAAa,iBAAiB;
|
|
1
|
+
{"version":3,"file":"GateLockAccessory.d.ts","sourceRoot":"","sources":["../../src/Accesories/GateLockAccessory.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;AAErE,qBAAa,iBAAiB;IAY1B,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,SAAS;IAC1B,OAAO,CAAC,QAAQ,CAAC,OAAO;IAb1B,OAAO,CAAC,OAAO,CAAU;IACzB,OAAO,CAAC,YAAY,CAAyD;IAC7E,OAAO,CAAC,WAAW,CAAwD;IAC3E,OAAO,CAAC,SAAS,CAAQ;IACzB,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,aAAa,CAAC,CAAS;IAC/B,OAAO,CAAC,UAAU,CAAC,CAAiB;IACpC,OAAO,CAAC,eAAe,CAAC,CAAiB;IACzC,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAS;gBAG1B,QAAQ,EAAE,aAAa,EACvB,SAAS,EAAE,iBAAiB,EAC5B,OAAO,EAAE,mBAAmB;IA+EzC,qBAAqB,IAAI,OAAO,CAAC,mBAAmB,CAAC;IAIrD,oBAAoB,IAAI,OAAO,CAAC,mBAAmB,CAAC;IAIpD,oBAAoB,CAAC,KAAK,EAAE,mBAAmB;IAoFrD,OAAO,CAAC,eAAe;IAQvB,OAAO,CAAC,cAAc;IAQtB,OAAO,CAAC,iBAAiB;IAUzB,OAAO,CAAC,WAAW;IAQnB,OAAO,CAAC,kBAAkB;IAc1B,OAAO,CAAC,eAAe;IAOvB,OAAO,CAAC,oBAAoB;CAM7B"}
|
|
@@ -6,9 +6,11 @@ class GateLockAccessory {
|
|
|
6
6
|
this.platform = platform;
|
|
7
7
|
this.accessory = accessory;
|
|
8
8
|
this.context = context;
|
|
9
|
-
this.currentState = this.platform.Characteristic.LockCurrentState.
|
|
9
|
+
this.currentState = this.platform.Characteristic.LockCurrentState.UNKNOWN;
|
|
10
10
|
this.targetState = this.platform.Characteristic.LockTargetState.SECURED;
|
|
11
11
|
this.connected = true;
|
|
12
|
+
this.hasFault = false;
|
|
13
|
+
this.transitionTimeoutMs = 15000;
|
|
12
14
|
this.accessory.getService(this.platform.Service.AccessoryInformation)
|
|
13
15
|
.setCharacteristic(this.platform.Characteristic.Manufacturer, 'Supla')
|
|
14
16
|
.setCharacteristic(this.platform.Characteristic.Model, 'GateLock');
|
|
@@ -28,19 +30,47 @@ class GateLockAccessory {
|
|
|
28
30
|
this.service.getCharacteristic(this.platform.Characteristic.LockTargetState)
|
|
29
31
|
.onGet(this.handleTargetStateGet.bind(this))
|
|
30
32
|
.onSet(this.handleTargetStateSet.bind(this));
|
|
33
|
+
this.platform.registerOwnerCleanup(this.accessory.UUID, () => {
|
|
34
|
+
this.clearPulseTimer();
|
|
35
|
+
this.clearTransitionTimer();
|
|
36
|
+
});
|
|
31
37
|
this.platform.registerMqttHandler(`${this.context.topic}/state/hi`, (message) => {
|
|
32
38
|
const unlocked = this.platform.parseBoolean(message.toString());
|
|
33
|
-
this.
|
|
39
|
+
const reachedPending = this.pendingTarget !== undefined
|
|
40
|
+
&& ((this.pendingTarget === this.platform.Characteristic.LockTargetState.UNSECURED && unlocked)
|
|
41
|
+
|| (this.pendingTarget === this.platform.Characteristic.LockTargetState.SECURED && !unlocked));
|
|
42
|
+
if (this.pendingTarget !== undefined && !reachedPending) {
|
|
43
|
+
this.setCurrentState(this.platform.Characteristic.LockCurrentState.UNKNOWN);
|
|
44
|
+
return;
|
|
45
|
+
}
|
|
46
|
+
this.clearFaults();
|
|
47
|
+
const nextCurrent = unlocked
|
|
34
48
|
? this.platform.Characteristic.LockCurrentState.UNSECURED
|
|
35
49
|
: this.platform.Characteristic.LockCurrentState.SECURED;
|
|
36
|
-
this.
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
50
|
+
this.setCurrentState(nextCurrent);
|
|
51
|
+
if (reachedPending) {
|
|
52
|
+
this.pendingTarget = undefined;
|
|
53
|
+
this.clearTransitionTimer();
|
|
54
|
+
}
|
|
55
|
+
if (this.pendingTarget === undefined) {
|
|
56
|
+
const nextTarget = unlocked
|
|
57
|
+
? this.platform.Characteristic.LockTargetState.UNSECURED
|
|
58
|
+
: this.platform.Characteristic.LockTargetState.SECURED;
|
|
59
|
+
this.setTargetState(nextTarget);
|
|
60
|
+
this.clearPulseTimer();
|
|
61
|
+
}
|
|
62
|
+
}, this.accessory.UUID);
|
|
40
63
|
this.platform.registerMqttHandler(`${this.context.topic}/state/connected`, (message) => {
|
|
41
64
|
this.connected = this.platform.parseBoolean(message.toString());
|
|
42
|
-
|
|
43
|
-
|
|
65
|
+
if (!this.connected) {
|
|
66
|
+
this.clearPulseTimer();
|
|
67
|
+
this.clearTransitionTimer();
|
|
68
|
+
this.pendingTarget = undefined;
|
|
69
|
+
this.setCurrentState(this.platform.Characteristic.LockCurrentState.UNKNOWN);
|
|
70
|
+
}
|
|
71
|
+
this.updateStatusFault();
|
|
72
|
+
}, this.accessory.UUID);
|
|
73
|
+
this.updateStatusFault();
|
|
44
74
|
}
|
|
45
75
|
async handleCurrentStateGet() {
|
|
46
76
|
return this.currentState;
|
|
@@ -50,46 +80,129 @@ class GateLockAccessory {
|
|
|
50
80
|
}
|
|
51
81
|
async handleTargetStateSet(value) {
|
|
52
82
|
const target = value;
|
|
53
|
-
this.targetState
|
|
54
|
-
|
|
83
|
+
if (target === this.targetState) {
|
|
84
|
+
return;
|
|
85
|
+
}
|
|
86
|
+
const previousTarget = this.targetState;
|
|
87
|
+
const previousCurrent = this.currentState;
|
|
88
|
+
this.setTargetState(target);
|
|
89
|
+
if (!this.connected) {
|
|
90
|
+
this.platform.log.warn(`Gate lock ${this.accessory.displayName} is offline; ignoring command.`);
|
|
91
|
+
this.setTargetState(previousTarget);
|
|
92
|
+
this.updateStatusFault();
|
|
93
|
+
return;
|
|
94
|
+
}
|
|
55
95
|
if (target !== this.platform.Characteristic.LockTargetState.UNSECURED) {
|
|
96
|
+
this.clearPulseTimer();
|
|
97
|
+
this.clearTransitionTimer();
|
|
98
|
+
this.pendingTarget = undefined;
|
|
99
|
+
if (this.connected && this.platform.getGateLockControlMode() === 'set_on_pulse') {
|
|
100
|
+
const topic = `${this.context.topic}/${this.platform.getGateLockSetTopicSuffix()}`;
|
|
101
|
+
const offPayload = this.platform.getGateLockSetOffPayload();
|
|
102
|
+
this.platform.log.debug(`Publishing ${topic} = ${offPayload} (manual secure)`);
|
|
103
|
+
this.platform.publishCommand(topic, offPayload);
|
|
104
|
+
}
|
|
105
|
+
this.setTargetState(previousTarget);
|
|
56
106
|
return;
|
|
57
107
|
}
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
108
|
+
this.clearPulseTimer();
|
|
109
|
+
if (this.pendingTarget === target) {
|
|
110
|
+
return;
|
|
61
111
|
}
|
|
62
112
|
const mode = this.platform.getGateLockControlMode();
|
|
63
113
|
if (mode === 'set_on_pulse') {
|
|
114
|
+
this.pendingTarget = target;
|
|
115
|
+
this.clearFaults();
|
|
116
|
+
this.armTransitionTimer();
|
|
64
117
|
const topic = `${this.context.topic}/${this.platform.getGateLockSetTopicSuffix()}`;
|
|
65
118
|
const onPayload = this.platform.getGateLockSetOnPayload();
|
|
66
119
|
const offPayload = this.platform.getGateLockSetOffPayload();
|
|
67
120
|
const pulseSeconds = this.platform.getGateLockPulseSeconds();
|
|
68
121
|
this.platform.log.debug(`Publishing ${topic} = ${onPayload}`);
|
|
69
|
-
this.platform.
|
|
122
|
+
this.platform.publishCommand(topic, onPayload);
|
|
70
123
|
if (pulseSeconds > 0) {
|
|
71
124
|
this.pulseTimer = setTimeout(() => {
|
|
125
|
+
if (!this.connected) {
|
|
126
|
+
this.platform.log.debug(`Skipping auto-off publish for ${topic} (offline).`);
|
|
127
|
+
return;
|
|
128
|
+
}
|
|
72
129
|
this.platform.log.debug(`Publishing ${topic} = ${offPayload} (auto-off)`);
|
|
73
|
-
this.platform.
|
|
130
|
+
this.platform.publishCommand(topic, offPayload);
|
|
74
131
|
}, Math.round(pulseSeconds * 1000));
|
|
75
132
|
}
|
|
76
133
|
else {
|
|
77
134
|
this.platform.log.warn(`Gate lock pulseSeconds is 0; leaving ${this.accessory.displayName} in set/on state.`);
|
|
78
135
|
}
|
|
79
|
-
this.
|
|
80
|
-
this.service.updateCharacteristic(this.platform.Characteristic.LockCurrentState, this.currentState);
|
|
136
|
+
this.setCurrentState(this.platform.Characteristic.LockCurrentState.UNKNOWN);
|
|
81
137
|
return;
|
|
82
138
|
}
|
|
83
139
|
const action = this.platform.getGateLockExecuteAction();
|
|
84
140
|
if (!action) {
|
|
85
141
|
this.platform.log.warn(`Gate lock action not configured for ${this.accessory.displayName}`);
|
|
142
|
+
this.pendingTarget = undefined;
|
|
143
|
+
this.clearPulseTimer();
|
|
144
|
+
this.clearTransitionTimer();
|
|
145
|
+
this.setTargetState(previousTarget);
|
|
146
|
+
this.setCurrentState(previousCurrent);
|
|
86
147
|
return;
|
|
87
148
|
}
|
|
149
|
+
this.pendingTarget = target;
|
|
150
|
+
this.clearFaults();
|
|
151
|
+
this.armTransitionTimer();
|
|
88
152
|
this.platform.log.debug(`Publishing ${this.context.topic}/execute_action = ${action}`);
|
|
89
|
-
this.platform.
|
|
90
|
-
this.
|
|
153
|
+
this.platform.publishCommand(`${this.context.topic}/execute_action`, action);
|
|
154
|
+
this.setCurrentState(this.platform.Characteristic.LockCurrentState.UNKNOWN);
|
|
155
|
+
}
|
|
156
|
+
setCurrentState(next) {
|
|
157
|
+
if (this.currentState === next) {
|
|
158
|
+
return;
|
|
159
|
+
}
|
|
160
|
+
this.currentState = next;
|
|
91
161
|
this.service.updateCharacteristic(this.platform.Characteristic.LockCurrentState, this.currentState);
|
|
92
162
|
}
|
|
163
|
+
setTargetState(next) {
|
|
164
|
+
if (this.targetState === next) {
|
|
165
|
+
return;
|
|
166
|
+
}
|
|
167
|
+
this.targetState = next;
|
|
168
|
+
this.service.updateCharacteristic(this.platform.Characteristic.LockTargetState, this.targetState);
|
|
169
|
+
}
|
|
170
|
+
updateStatusFault() {
|
|
171
|
+
const fault = !this.connected || this.hasFault;
|
|
172
|
+
this.service.updateCharacteristic(this.platform.Characteristic.StatusFault, fault
|
|
173
|
+
? this.platform.Characteristic.StatusFault.GENERAL_FAULT
|
|
174
|
+
: this.platform.Characteristic.StatusFault.NO_FAULT);
|
|
175
|
+
}
|
|
176
|
+
clearFaults() {
|
|
177
|
+
if (!this.hasFault) {
|
|
178
|
+
return;
|
|
179
|
+
}
|
|
180
|
+
this.hasFault = false;
|
|
181
|
+
this.updateStatusFault();
|
|
182
|
+
}
|
|
183
|
+
armTransitionTimer() {
|
|
184
|
+
this.clearTransitionTimer();
|
|
185
|
+
this.transitionTimer = setTimeout(() => {
|
|
186
|
+
this.transitionTimer = undefined;
|
|
187
|
+
this.pendingTarget = undefined;
|
|
188
|
+
this.hasFault = true;
|
|
189
|
+
this.updateStatusFault();
|
|
190
|
+
this.setCurrentState(this.platform.Characteristic.LockCurrentState.UNKNOWN);
|
|
191
|
+
this.platform.log.warn(`Gate lock ${this.accessory.displayName} did not reach target within ${this.transitionTimeoutMs}ms.`);
|
|
192
|
+
}, this.transitionTimeoutMs);
|
|
193
|
+
}
|
|
194
|
+
clearPulseTimer() {
|
|
195
|
+
if (this.pulseTimer) {
|
|
196
|
+
clearTimeout(this.pulseTimer);
|
|
197
|
+
this.pulseTimer = undefined;
|
|
198
|
+
}
|
|
199
|
+
}
|
|
200
|
+
clearTransitionTimer() {
|
|
201
|
+
if (this.transitionTimer) {
|
|
202
|
+
clearTimeout(this.transitionTimer);
|
|
203
|
+
this.transitionTimer = undefined;
|
|
204
|
+
}
|
|
205
|
+
}
|
|
93
206
|
}
|
|
94
207
|
exports.GateLockAccessory = GateLockAccessory;
|
|
95
208
|
//# sourceMappingURL=GateLockAccessory.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GateLockAccessory.js","sourceRoot":"","sources":["../../src/Accesories/GateLockAccessory.ts"],"names":[],"mappings":";;;AAIA,MAAa,iBAAiB;
|
|
1
|
+
{"version":3,"file":"GateLockAccessory.js","sourceRoot":"","sources":["../../src/Accesories/GateLockAccessory.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LeakSensorAccessory.d.ts","sourceRoot":"","sources":["../../src/Accesories/LeakSensorAccessory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAW,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAC7E,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,mBAAmB,EAAE,MAAM,gCAAgC,CAAC;AAErE,qBAAa,mBAAmB;IAM5B,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,SAAS;IAC1B,OAAO,CAAC,QAAQ,CAAC,OAAO;IAP1B,OAAO,CAAC,OAAO,CAAU;IACzB,OAAO,CAAC,KAAK,CAA+D;IAC5E,OAAO,CAAC,SAAS,CAAQ;gBAGN,QAAQ,EAAE,aAAa,EACvB,SAAS,EAAE,iBAAiB,EAC5B,OAAO,EAAE,mBAAmB;
|
|
1
|
+
{"version":3,"file":"LeakSensorAccessory.d.ts","sourceRoot":"","sources":["../../src/Accesories/LeakSensorAccessory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAW,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAC7E,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,mBAAmB,EAAE,MAAM,gCAAgC,CAAC;AAErE,qBAAa,mBAAmB;IAM5B,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,SAAS;IAC1B,OAAO,CAAC,QAAQ,CAAC,OAAO;IAP1B,OAAO,CAAC,OAAO,CAAU;IACzB,OAAO,CAAC,KAAK,CAA+D;IAC5E,OAAO,CAAC,SAAS,CAAQ;gBAGN,QAAQ,EAAE,aAAa,EACvB,SAAS,EAAE,iBAAiB,EAC5B,OAAO,EAAE,mBAAmB;IAsCzC,cAAc,IAAI,OAAO,CAAC,mBAAmB,CAAC;CAGrD"}
|
|
@@ -22,11 +22,11 @@ class LeakSensorAccessory {
|
|
|
22
22
|
? this.platform.Characteristic.LeakDetected.LEAK_DETECTED
|
|
23
23
|
: this.platform.Characteristic.LeakDetected.LEAK_NOT_DETECTED;
|
|
24
24
|
this.service.updateCharacteristic(this.platform.Characteristic.LeakDetected, this.state);
|
|
25
|
-
});
|
|
25
|
+
}, this.accessory.UUID);
|
|
26
26
|
this.platform.registerMqttHandler(`${this.context.topic}/state/connected`, (message) => {
|
|
27
27
|
this.connected = this.platform.parseBoolean(message.toString());
|
|
28
28
|
this.service.updateCharacteristic(this.platform.Characteristic.StatusFault, this.connected ? 0 : 1);
|
|
29
|
-
});
|
|
29
|
+
}, this.accessory.UUID);
|
|
30
30
|
}
|
|
31
31
|
async handleStateGet() {
|
|
32
32
|
return this.state;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LeakSensorAccessory.js","sourceRoot":"","sources":["../../src/Accesories/LeakSensorAccessory.ts"],"names":[],"mappings":";;;AAIA,MAAa,mBAAmB;IAK9B,YACmB,QAAuB,EACvB,SAA4B,EAC5B,OAA4B;QAF5B,aAAQ,GAAR,QAAQ,CAAe;QACvB,cAAS,GAAT,SAAS,CAAmB;QAC5B,YAAO,GAAP,OAAO,CAAqB;QANvC,UAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,YAAY,CAAC,iBAAiB,CAAC;QACpE,cAAS,GAAG,IAAI,CAAC;QAOvB,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,oBAAoB,CAAE;aACnE,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,YAAY,EAAE,OAAO,CAAC;aACrE,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC;QAEvE,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAU,CAAC;eACrE,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;QAEjE,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,IAAI,EAAE,SAAS,CAAC,WAAW,CAAC,CAAC;QAEzF,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,YAAY,CAAC;aACtE,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QAEzC,IAAI,CAAC,QAAQ,CAAC,mBAAmB,CAC/B,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,WAAW,EAChC,CAAC,OAAO,EAAE,EAAE;YACV,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC;YAC5D,IAAI,CAAC,KAAK,GAAG,IAAI;gBACf,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,YAAY,CAAC,aAAa;gBACzD,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,YAAY,CAAC,iBAAiB,CAAC;YAChE,IAAI,CAAC,OAAO,CAAC,oBAAoB,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,YAAY,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;QAC3F,CAAC,
|
|
1
|
+
{"version":3,"file":"LeakSensorAccessory.js","sourceRoot":"","sources":["../../src/Accesories/LeakSensorAccessory.ts"],"names":[],"mappings":";;;AAIA,MAAa,mBAAmB;IAK9B,YACmB,QAAuB,EACvB,SAA4B,EAC5B,OAA4B;QAF5B,aAAQ,GAAR,QAAQ,CAAe;QACvB,cAAS,GAAT,SAAS,CAAmB;QAC5B,YAAO,GAAP,OAAO,CAAqB;QANvC,UAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,YAAY,CAAC,iBAAiB,CAAC;QACpE,cAAS,GAAG,IAAI,CAAC;QAOvB,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,oBAAoB,CAAE;aACnE,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,YAAY,EAAE,OAAO,CAAC;aACrE,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC;QAEvE,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAU,CAAC;eACrE,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;QAEjE,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,IAAI,EAAE,SAAS,CAAC,WAAW,CAAC,CAAC;QAEzF,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,YAAY,CAAC;aACtE,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QAEzC,IAAI,CAAC,QAAQ,CAAC,mBAAmB,CAC/B,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,WAAW,EAChC,CAAC,OAAO,EAAE,EAAE;YACV,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC;YAC5D,IAAI,CAAC,KAAK,GAAG,IAAI;gBACf,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,YAAY,CAAC,aAAa;gBACzD,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,YAAY,CAAC,iBAAiB,CAAC;YAChE,IAAI,CAAC,OAAO,CAAC,oBAAoB,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,YAAY,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;QAC3F,CAAC,EACD,IAAI,CAAC,SAAS,CAAC,IAAI,CACpB,CAAC;QACF,IAAI,CAAC,QAAQ,CAAC,mBAAmB,CAC/B,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,kBAAkB,EACvC,CAAC,OAAO,EAAE,EAAE;YACV,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC;YAChE,IAAI,CAAC,OAAO,CAAC,oBAAoB,CAC/B,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,WAAW,EACxC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CACvB,CAAC;QACJ,CAAC,EACD,IAAI,CAAC,SAAS,CAAC,IAAI,CACpB,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,cAAc;QAClB,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;CACF;AAjDD,kDAiDC"}
|
|
@@ -9,9 +9,11 @@ export declare class LightAccesory {
|
|
|
9
9
|
private state;
|
|
10
10
|
private connected;
|
|
11
11
|
private overcurrent;
|
|
12
|
+
private updateTimer?;
|
|
12
13
|
constructor(platform: SuplaPlatform, accessory: PlatformAccessory, context: SuplaChannelContext);
|
|
13
14
|
handleOnGet(): Promise<CharacteristicValue>;
|
|
14
15
|
handleOnSet(value: CharacteristicValue): Promise<void>;
|
|
15
16
|
private updateFault;
|
|
17
|
+
private clearUpdateTimer;
|
|
16
18
|
}
|
|
17
19
|
//# sourceMappingURL=LightBulbAccesory.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LightBulbAccesory.d.ts","sourceRoot":"","sources":["../../src/Accesories/LightBulbAccesory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAW,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAC7E,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAE5C,OAAO,EAAC,mBAAmB,EAAC,MAAM,gCAAgC,CAAC;AAEnE,qBAAa,aAAa;
|
|
1
|
+
{"version":3,"file":"LightBulbAccesory.d.ts","sourceRoot":"","sources":["../../src/Accesories/LightBulbAccesory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAW,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAC7E,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAE5C,OAAO,EAAC,mBAAmB,EAAC,MAAM,gCAAgC,CAAC;AAEnE,qBAAa,aAAa;IAQlB,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,SAAS;IAC1B,OAAO,CAAC,QAAQ,CAAC,OAAO;IAT9B,OAAO,CAAC,OAAO,CAAU;IACzB,OAAO,CAAC,KAAK,CAAS;IACtB,OAAO,CAAC,SAAS,CAAQ;IACzB,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,WAAW,CAAC,CAAiB;gBAGd,QAAQ,EAAE,aAAa,EACvB,SAAS,EAAE,iBAAiB,EAC5B,OAAO,EAAE,mBAAmB;IA8C7C,WAAW,IAAI,OAAO,CAAC,mBAAmB,CAAC;IAI3C,WAAW,CAAC,KAAK,EAAE,mBAAmB;IAa5C,OAAO,CAAC,WAAW;IAKnB,OAAO,CAAC,gBAAgB;CAMzB"}
|