@marcel2215/homebridge-supla-plugin 2.1.28 → 2.1.30
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/README.md +67 -1
- package/config.schema.json +92 -75
- package/dist/Accesories/ActionTriggerAccessory.d.ts +0 -1
- package/dist/Accesories/ActionTriggerAccessory.d.ts.map +1 -1
- package/dist/Accesories/ActionTriggerAccessory.js +15 -9
- package/dist/Accesories/ActionTriggerAccessory.js.map +1 -1
- package/dist/Accesories/AirQualityAccessory.d.ts +3 -1
- package/dist/Accesories/AirQualityAccessory.d.ts.map +1 -1
- package/dist/Accesories/AirQualityAccessory.js +47 -5
- package/dist/Accesories/AirQualityAccessory.js.map +1 -1
- package/dist/Accesories/ContactSensorAccessory.d.ts +3 -1
- package/dist/Accesories/ContactSensorAccessory.d.ts.map +1 -1
- package/dist/Accesories/ContactSensorAccessory.js +32 -4
- package/dist/Accesories/ContactSensorAccessory.js.map +1 -1
- package/dist/Accesories/DimmerAccessory.d.ts +4 -2
- package/dist/Accesories/DimmerAccessory.d.ts.map +1 -1
- package/dist/Accesories/DimmerAccessory.js +51 -14
- package/dist/Accesories/DimmerAccessory.js.map +1 -1
- package/dist/Accesories/DimmerRgbLightAccessory.d.ts +10 -2
- package/dist/Accesories/DimmerRgbLightAccessory.d.ts.map +1 -1
- package/dist/Accesories/DimmerRgbLightAccessory.js +149 -26
- package/dist/Accesories/DimmerRgbLightAccessory.js.map +1 -1
- package/dist/Accesories/DoorAccessory.d.ts +14 -1
- package/dist/Accesories/DoorAccessory.d.ts.map +1 -1
- package/dist/Accesories/DoorAccessory.js +146 -20
- package/dist/Accesories/DoorAccessory.js.map +1 -1
- package/dist/Accesories/ElectricityMeterAccessory.d.ts +13 -1
- package/dist/Accesories/ElectricityMeterAccessory.d.ts.map +1 -1
- package/dist/Accesories/ElectricityMeterAccessory.js +127 -12
- package/dist/Accesories/ElectricityMeterAccessory.js.map +1 -1
- package/dist/Accesories/FacadeBlindAccessory.d.ts +6 -0
- package/dist/Accesories/FacadeBlindAccessory.d.ts.map +1 -1
- package/dist/Accesories/FacadeBlindAccessory.js +205 -64
- package/dist/Accesories/FacadeBlindAccessory.js.map +1 -1
- package/dist/Accesories/FrontGateFsm.d.ts +74 -68
- package/dist/Accesories/FrontGateFsm.d.ts.map +1 -1
- package/dist/Accesories/FrontGateFsm.js +563 -403
- package/dist/Accesories/FrontGateFsm.js.map +1 -1
- package/dist/Accesories/GarageDoorOpenerAccesory.d.ts +12 -3
- package/dist/Accesories/GarageDoorOpenerAccesory.d.ts.map +1 -1
- package/dist/Accesories/GarageDoorOpenerAccesory.js +168 -21
- package/dist/Accesories/GarageDoorOpenerAccesory.js.map +1 -1
- package/dist/Accesories/GateAccessory.d.ts +12 -2
- package/dist/Accesories/GateAccessory.d.ts.map +1 -1
- package/dist/Accesories/GateAccessory.js +245 -90
- package/dist/Accesories/GateAccessory.js.map +1 -1
- package/dist/Accesories/GateLockAccessory.d.ts +17 -1
- package/dist/Accesories/GateLockAccessory.d.ts.map +1 -1
- package/dist/Accesories/GateLockAccessory.js +375 -50
- package/dist/Accesories/GateLockAccessory.js.map +1 -1
- package/dist/Accesories/LeakSensorAccessory.d.ts +3 -1
- package/dist/Accesories/LeakSensorAccessory.d.ts.map +1 -1
- package/dist/Accesories/LeakSensorAccessory.js +32 -4
- package/dist/Accesories/LeakSensorAccessory.js.map +1 -1
- package/dist/Accesories/LightBulbAccesory.d.ts +3 -2
- package/dist/Accesories/LightBulbAccesory.d.ts.map +1 -1
- package/dist/Accesories/LightBulbAccesory.js +41 -12
- package/dist/Accesories/LightBulbAccesory.js.map +1 -1
- package/dist/Accesories/PressureAccessory.d.ts +3 -1
- package/dist/Accesories/PressureAccessory.d.ts.map +1 -1
- package/dist/Accesories/PressureAccessory.js +28 -5
- package/dist/Accesories/PressureAccessory.js.map +1 -1
- package/dist/Accesories/RGBLightBulbAccesory.d.ts +9 -0
- package/dist/Accesories/RGBLightBulbAccesory.d.ts.map +1 -1
- package/dist/Accesories/RGBLightBulbAccesory.js +137 -17
- package/dist/Accesories/RGBLightBulbAccesory.js.map +1 -1
- package/dist/Accesories/RollerShutterAccessory.d.ts +6 -0
- package/dist/Accesories/RollerShutterAccessory.d.ts.map +1 -1
- package/dist/Accesories/RollerShutterAccessory.js +221 -75
- package/dist/Accesories/RollerShutterAccessory.js.map +1 -1
- package/dist/Accesories/SwitchAccessory.d.ts +3 -2
- package/dist/Accesories/SwitchAccessory.d.ts.map +1 -1
- package/dist/Accesories/SwitchAccessory.js +41 -12
- package/dist/Accesories/SwitchAccessory.js.map +1 -1
- package/dist/Accesories/TemperatureAccessory.d.ts +3 -1
- package/dist/Accesories/TemperatureAccessory.d.ts.map +1 -1
- package/dist/Accesories/TemperatureAccessory.js +28 -5
- package/dist/Accesories/TemperatureAccessory.js.map +1 -1
- package/dist/Accesories/TemperatureHumidityAccessory.d.ts +5 -1
- package/dist/Accesories/TemperatureHumidityAccessory.d.ts.map +1 -1
- package/dist/Accesories/TemperatureHumidityAccessory.js +40 -9
- package/dist/Accesories/TemperatureHumidityAccessory.js.map +1 -1
- package/dist/Accesories/ThermostatAccessory.d.ts +18 -1
- package/dist/Accesories/ThermostatAccessory.d.ts.map +1 -1
- package/dist/Accesories/ThermostatAccessory.js +193 -34
- package/dist/Accesories/ThermostatAccessory.js.map +1 -1
- package/dist/Accesories/ValveAccessory.d.ts +5 -2
- package/dist/Accesories/ValveAccessory.d.ts.map +1 -1
- package/dist/Accesories/ValveAccessory.js +47 -8
- package/dist/Accesories/ValveAccessory.js.map +1 -1
- package/dist/Accesories/WicketAccesory.d.ts +18 -3
- package/dist/Accesories/WicketAccesory.d.ts.map +1 -1
- package/dist/Accesories/WicketAccesory.js +154 -14
- package/dist/Accesories/WicketAccesory.js.map +1 -1
- package/dist/Heplers/ColorConverters.d.ts +2 -2
- package/dist/Heplers/ColorConverters.d.ts.map +1 -1
- package/dist/Heplers/ColorConverters.js +7 -3
- package/dist/Heplers/ColorConverters.js.map +1 -1
- package/dist/Heplers/DisplayName.d.ts +15 -0
- package/dist/Heplers/DisplayName.d.ts.map +1 -0
- package/dist/Heplers/DisplayName.js +174 -0
- package/dist/Heplers/DisplayName.js.map +1 -0
- package/dist/Heplers/SuplaChannelContext.d.ts +3 -1
- package/dist/Heplers/SuplaChannelContext.d.ts.map +1 -1
- package/dist/Heplers/SuplaChannelContext.js +3 -1
- package/dist/Heplers/SuplaChannelContext.js.map +1 -1
- package/dist/Heplers/SuplaMqttClient.d.ts +11 -3
- package/dist/Heplers/SuplaMqttClient.d.ts.map +1 -1
- package/dist/Heplers/SuplaMqttClient.js +215 -112
- package/dist/Heplers/SuplaMqttClient.js.map +1 -1
- package/dist/Heplers/SuplaMqttClientContext.d.ts +2 -1
- package/dist/Heplers/SuplaMqttClientContext.d.ts.map +1 -1
- package/dist/Heplers/SuplaMqttClientContext.js +2 -1
- package/dist/Heplers/SuplaMqttClientContext.js.map +1 -1
- package/dist/platform.d.ts +92 -36
- package/dist/platform.d.ts.map +1 -1
- package/dist/platform.js +1253 -235
- package/dist/platform.js.map +1 -1
- package/package.json +10 -5
- package/config.json +0 -3
|
@@ -1,9 +1,7 @@
|
|
|
1
1
|
export type GateTarget = 'open' | 'closed';
|
|
2
2
|
export type MotionDirection = 'opening' | 'closing';
|
|
3
|
-
export type
|
|
4
|
-
export type
|
|
5
|
-
export type IdleNotClosedMode = 'openKnown' | 'openishUnknown';
|
|
6
|
-
export type NextPulseDirection = MotionDirection | 'unknown';
|
|
3
|
+
export type UnknownOpenPolicy = 'reject' | 'accept_non_closed';
|
|
4
|
+
export type UnknownClosePolicy = 'reject' | 'single_pulse_best_effort' | 'seek_closed';
|
|
7
5
|
export declare const enum DoorCurrentState {
|
|
8
6
|
OPEN = 0,
|
|
9
7
|
CLOSED = 1,
|
|
@@ -15,30 +13,38 @@ export declare const enum DoorTargetState {
|
|
|
15
13
|
OPEN = 0,
|
|
16
14
|
CLOSED = 1
|
|
17
15
|
}
|
|
18
|
-
export interface
|
|
16
|
+
export interface FrontGateConfig {
|
|
19
17
|
fullTravelMs: number;
|
|
20
18
|
reversePauseMs: number;
|
|
21
|
-
wrongDirectionRunMs: number;
|
|
22
19
|
minimumPulseGapMs: number;
|
|
23
|
-
|
|
20
|
+
unknownOpenPolicy: UnknownOpenPolicy;
|
|
21
|
+
unknownClosePolicy: UnknownClosePolicy;
|
|
22
|
+
seekClosedMaxPulses: number;
|
|
23
|
+
assumeOpenAfterTravel: boolean;
|
|
24
24
|
}
|
|
25
|
-
export declare const
|
|
26
|
-
export
|
|
25
|
+
export declare const DEFAULT_FRONT_GATE_CONFIG: FrontGateConfig;
|
|
26
|
+
export type FrontGateErrorCode = 'unavailable' | 'not_allowed' | 'resource_busy' | 'communication_failure' | 'operation_timed_out';
|
|
27
|
+
export declare class FrontGateError extends Error {
|
|
28
|
+
readonly code: FrontGateErrorCode;
|
|
29
|
+
constructor(code: FrontGateErrorCode, message: string, options?: ErrorOptions);
|
|
27
30
|
}
|
|
31
|
+
export type PositionEstimateKind = 'closed' | 'openingKnown' | 'closingKnown' | 'reversalPause' | 'commandUncertain' | 'notClosedUnknown' | 'openAssumed';
|
|
32
|
+
export type FrontGateOperationKind = 'none' | 'scheduledPulse' | 'reversalPause' | 'seekClosed';
|
|
28
33
|
export interface FrontGateSnapshot {
|
|
29
34
|
available: boolean;
|
|
35
|
+
transportConnected: boolean;
|
|
30
36
|
controlConnected: boolean | null;
|
|
31
37
|
sensorConnected: boolean | null;
|
|
32
38
|
closedSensor: boolean | null;
|
|
33
|
-
|
|
39
|
+
observationEpoch: number;
|
|
40
|
+
sensorSampleEpoch: number | null;
|
|
34
41
|
currentDoorState?: DoorCurrentState;
|
|
35
42
|
targetDoorState?: DoorTargetState;
|
|
36
|
-
|
|
43
|
+
desiredTarget: GateTarget | null;
|
|
44
|
+
positionEstimate: PositionEstimateKind;
|
|
37
45
|
motionDirection: MotionDirection | 'none';
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
idleNotClosedMode: IdleNotClosedMode;
|
|
41
|
-
nextPulseDirection: NextPulseDirection;
|
|
46
|
+
operationKind: FrontGateOperationKind;
|
|
47
|
+
closedAfterTravelTimeout: boolean;
|
|
42
48
|
note: string;
|
|
43
49
|
}
|
|
44
50
|
export interface FrontGateLogger {
|
|
@@ -51,81 +57,81 @@ export interface FrontGateIo {
|
|
|
51
57
|
publishSnapshot(snapshot: FrontGateSnapshot): void;
|
|
52
58
|
log: FrontGateLogger;
|
|
53
59
|
}
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
startedAt: number;
|
|
62
|
-
deadlineAt: number;
|
|
63
|
-
} | {
|
|
64
|
-
kind: 'waitingSecondPulse';
|
|
65
|
-
stoppedFrom: MotionDirection;
|
|
66
|
-
finalDirection: MotionDirection;
|
|
67
|
-
source: MotionSource;
|
|
68
|
-
dueAt: number;
|
|
69
|
-
deadlineAt: number;
|
|
70
|
-
reason: 'reverseToOpen' | 'reverseToClose';
|
|
71
|
-
};
|
|
60
|
+
export interface FrontGateScheduler {
|
|
61
|
+
now(): number;
|
|
62
|
+
schedule(callback: () => void, delayMs: number): () => void;
|
|
63
|
+
}
|
|
64
|
+
export interface FrontGateSensorEvidence {
|
|
65
|
+
retained?: boolean;
|
|
66
|
+
}
|
|
72
67
|
export declare class FrontGateFsm {
|
|
73
68
|
private readonly io;
|
|
74
|
-
private readonly
|
|
75
|
-
private readonly
|
|
69
|
+
private readonly config;
|
|
70
|
+
private readonly scheduler;
|
|
76
71
|
private facts;
|
|
77
|
-
private
|
|
78
|
-
private
|
|
79
|
-
private
|
|
80
|
-
private
|
|
81
|
-
private
|
|
82
|
-
private
|
|
83
|
-
private
|
|
84
|
-
private
|
|
85
|
-
private
|
|
86
|
-
private
|
|
72
|
+
private observationEpoch;
|
|
73
|
+
private sensorSampleEpoch;
|
|
74
|
+
private previousSensorInEpoch;
|
|
75
|
+
private desiredTarget;
|
|
76
|
+
private position;
|
|
77
|
+
private positionGeneration;
|
|
78
|
+
private operation;
|
|
79
|
+
private nextOperationId;
|
|
80
|
+
private lastPublishedPulseAt;
|
|
81
|
+
private cancelMovementTimer?;
|
|
82
|
+
private cancelOperationTimer?;
|
|
87
83
|
private sequence;
|
|
88
84
|
private disposed;
|
|
89
|
-
constructor(io: FrontGateIo,
|
|
85
|
+
constructor(io: FrontGateIo, config?: Partial<FrontGateConfig>, scheduler?: FrontGateScheduler);
|
|
90
86
|
dispose(): void;
|
|
91
|
-
|
|
87
|
+
handleTransportConnectedChange(connected: boolean): void;
|
|
92
88
|
handleControlConnectedChange(connected: boolean): void;
|
|
93
89
|
handleSensorConnectedChange(connected: boolean): void;
|
|
94
|
-
handleClosedSensorChange(closed: boolean): void;
|
|
90
|
+
handleClosedSensorChange(closed: boolean, evidence?: FrontGateSensorEvidence): void;
|
|
91
|
+
restoreCommandUncertainty(): void;
|
|
95
92
|
handleObservedExternalPulse(reason?: string): void;
|
|
96
93
|
requestHomeKitTarget(target: GateTarget): Promise<void>;
|
|
97
94
|
getSnapshot(): FrontGateSnapshot;
|
|
95
|
+
whenIdle(): Promise<void>;
|
|
98
96
|
private enqueue;
|
|
97
|
+
private applyTransportConnectedChange;
|
|
99
98
|
private applyControlConnectedChange;
|
|
100
99
|
private applySensorConnectedChange;
|
|
101
100
|
private applyClosedSensorChange;
|
|
102
101
|
private applyHomeKitTarget;
|
|
103
|
-
private
|
|
104
|
-
private
|
|
105
|
-
private
|
|
106
|
-
private
|
|
107
|
-
private
|
|
108
|
-
private
|
|
109
|
-
private
|
|
110
|
-
private
|
|
111
|
-
private
|
|
112
|
-
private
|
|
113
|
-
private
|
|
114
|
-
private
|
|
115
|
-
private
|
|
116
|
-
private
|
|
117
|
-
private
|
|
118
|
-
private
|
|
102
|
+
private acceptOpenRequest;
|
|
103
|
+
private acceptCloseRequest;
|
|
104
|
+
private acceptUnknownCloseRequest;
|
|
105
|
+
private acceptPulse;
|
|
106
|
+
private executeScheduledPulse;
|
|
107
|
+
private applySuccessfulPulse;
|
|
108
|
+
private startReversalPause;
|
|
109
|
+
private startSeekClosedWait;
|
|
110
|
+
private scheduleOperationTimer;
|
|
111
|
+
private handleOperationTimer;
|
|
112
|
+
private executeReversalPulse;
|
|
113
|
+
private advanceSeekClosed;
|
|
114
|
+
private validateScheduledPulse;
|
|
115
|
+
private validateOperationContext;
|
|
116
|
+
private hasCurrentOperation;
|
|
117
|
+
private cancelConflictingOperation;
|
|
118
|
+
private cancelInvalidOperation;
|
|
119
119
|
private applyObservedExternalPulse;
|
|
120
|
-
private
|
|
120
|
+
private advanceObservationEpoch;
|
|
121
|
+
private setKnownMovement;
|
|
122
|
+
private setPosition;
|
|
123
|
+
private handleMovementTimeout;
|
|
124
|
+
private setOperation;
|
|
125
|
+
private clearOperation;
|
|
126
|
+
private clearMovementTimer;
|
|
127
|
+
private clearOperationTimer;
|
|
121
128
|
private isAvailableForHomeKit;
|
|
122
|
-
private pulseMotor;
|
|
123
129
|
private emitSnapshot;
|
|
124
130
|
private buildSnapshot;
|
|
125
131
|
private getMotionDirection;
|
|
126
|
-
private getMotionCertainty;
|
|
127
132
|
private computeCurrentDoorState;
|
|
128
133
|
private computeTargetDoorState;
|
|
134
|
+
private errorMessage;
|
|
135
|
+
private isAmbiguousPulseFailure;
|
|
129
136
|
}
|
|
130
|
-
export {};
|
|
131
137
|
//# sourceMappingURL=FrontGateFsm.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FrontGateFsm.d.ts","sourceRoot":"","sources":["../../src/Accesories/FrontGateFsm.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,UAAU,GAAG,MAAM,GAAG,QAAQ,CAAC;AAC3C,MAAM,MAAM,eAAe,GAAG,SAAS,GAAG,SAAS,CAAC;AACpD,MAAM,MAAM,
|
|
1
|
+
{"version":3,"file":"FrontGateFsm.d.ts","sourceRoot":"","sources":["../../src/Accesories/FrontGateFsm.ts"],"names":[],"mappings":"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"}
|