homebridge-smartthings-oauth 1.0.66-beta.6 → 1.0.66
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 +26 -0
- package/dist/services/dishwasherService.d.ts +6 -3
- package/dist/services/dishwasherService.d.ts.map +1 -1
- package/dist/services/dishwasherService.js +113 -44
- package/dist/services/dishwasherService.js.map +1 -1
- package/dist/services/dryerService.d.ts +6 -3
- package/dist/services/dryerService.d.ts.map +1 -1
- package/dist/services/dryerService.js +113 -39
- package/dist/services/dryerService.js.map +1 -1
- package/dist/services/washerService.d.ts +6 -3
- package/dist/services/washerService.d.ts.map +1 -1
- package/dist/services/washerService.js +113 -44
- package/dist/services/washerService.js.map +1 -1
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,6 +1,32 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
All notable changes to this project will be documented in this file.
|
|
3
3
|
|
|
4
|
+
## [1.0.66] - Samsung Frame & Tizen TV Control + Laundry/Dishwasher Countdown
|
|
5
|
+
|
|
6
|
+
> Consolidates the `1.0.66-beta.0`–`beta.7` work (see the beta entries below for full detail). Two themes: Samsung **Frame & Tizen TV** control over the local WebSocket (#46), and a working **remaining-time countdown** for Samsung washers, dryers, and dishwashers in Apple Home (#13). Does not include the in-progress air-purifier work (PR #48).
|
|
7
|
+
|
|
8
|
+
### Added
|
|
9
|
+
- **Samsung Frame & Tizen TV Control** (#46) — the Apple TV Remote **D-pad** (arrows / Select / Back / Exit / Info) and the iPhone's **hardware volume buttons** drive paired Frame/Tizen TVs over the local `samsung.remote.control` WebSocket, and the **Info button is configurable** per TV (`KEY_INFO` / `KEY_AMBIENT` / `KEY_HOME` / `KEY_SOURCE` / `KEY_MENU` / `KEY_GUIDE`) from the settings UI. Works on The Frame and other Samsung Tizen TVs (OLED / QLED / Neo QLED / Crystal UHD). Thanks to @asafdav.
|
|
10
|
+
- **`SetDuration` and `IsConfigured` characteristics** on the washer/dryer/dishwasher Valve, matching the reference HomeKit valve plugins so Apple Home reliably renders the cycle countdown.
|
|
11
|
+
|
|
12
|
+
### Fixed
|
|
13
|
+
- **Washer/Dryer/Dishwasher remaining-time countdown** (#13) — the appliance Valve now shows a live countdown in Apple Home's expanded tile while a cycle runs, for both webhook and polling setups. The countdown is seeded **once** at cycle start and decremented by Home itself; the previous per-poll push reset Home's client-side timer and left the tile stuck on "Waiting".
|
|
14
|
+
- **Art Mode status read on modern Samsung TVs** (#46) — the Art Mode switch reflects the TV's actual state on the modern art API (v5.x) instead of always showing off.
|
|
15
|
+
|
|
16
|
+
### Changed
|
|
17
|
+
- **Renamed to "Samsung Frame & Tizen TV Control"** across the settings UI, config schema, README, and wiki — the local-WebSocket feature works on non-Frame Samsung Tizen TVs too. The `frameTvDevices` config key and wiki URL are unchanged, so existing configs keep working.
|
|
18
|
+
- **Quieter Art Mode polling** (#46) — the routine 30s art-status poll no longer logs per-cycle; only genuine errors and real state changes are logged.
|
|
19
|
+
|
|
20
|
+
## [1.0.66-beta.7] - Washer/Dryer/Dishwasher countdown: seed-once Valve pattern
|
|
21
|
+
|
|
22
|
+
> Follow-up to beta.6 (#13). beta.6 pushed `RemainingDuration` on every poll, which kept **resetting Apple Home's client-side countdown** — so the tile stayed on "Waiting". This release adopts the pattern used by working HomeKit valve/irrigation plugins (RainBird, Orbit B-hyve, hap-nodejs `Sprinkler`): seed the countdown **once** at cycle start and let Home decrement it itself.
|
|
23
|
+
|
|
24
|
+
### Fixed
|
|
25
|
+
- **Washer/Dryer/Dishwasher countdown now renders in polling mode** (#13) — the drifting per-characteristic polls and the 60s self-push timer are replaced by a single consolidated poll that pushes `Active`/`InUse` each cycle but seeds `RemainingDuration` (and `SetDuration`) **only once**, on the cycle-start transition. Re-reads (e.g. when the Home app reopens) are served by the `onGet` handler, which computes the live remaining time from `completionTime`. The same fix is applied to the dryer, which shares the identical Valve code.
|
|
26
|
+
|
|
27
|
+
### Added
|
|
28
|
+
- **`SetDuration` and `IsConfigured` characteristics** on the washer/dryer/dishwasher Valve, matching the reference valve plugins so Apple Home reliably renders the countdown. `SetDuration` is read-only (the cycle can't be changed from HomeKit).
|
|
29
|
+
|
|
4
30
|
## [1.0.66-beta.6] - Washer/Dishwasher countdown for polling-mode users
|
|
5
31
|
|
|
6
32
|
> Fixes the washer/dishwasher Valve tile showing **"Waiting"** instead of the remaining-time countdown for users without webhooks configured (#13). The Valve's `RemainingDuration` was only ever pushed to HomeKit from the webhook `processEvent` path — so polling-only setups (no `server_url`) never proactively pushed it, and Apple Home's tile stayed on "Waiting" (the value was still correct on demand, e.g. via the Swagger `/api/accessories` endpoint, but Home was never notified).
|
|
@@ -5,10 +5,15 @@ import { MultiServiceAccessory } from '../multiServiceAccessory';
|
|
|
5
5
|
import { ShortEvent } from '../webhook/subscriptionHandler';
|
|
6
6
|
export declare class DishwasherService extends BaseService {
|
|
7
7
|
private cachedCompletionTime;
|
|
8
|
-
private
|
|
8
|
+
private lastInUse;
|
|
9
|
+
private remainingSeeded;
|
|
9
10
|
private contactSensorService;
|
|
10
11
|
constructor(platform: IKHomeBridgeHomebridgePlatform, accessory: PlatformAccessory, componentId: string, capabilities: string[], multiServiceAccessory: MultiServiceAccessory, name: string, deviceStatus: any);
|
|
11
12
|
setActive(value: CharacteristicValue): Promise<void>;
|
|
13
|
+
setDuration(value: CharacteristicValue): Promise<void>;
|
|
14
|
+
pollValveState(): Promise<CharacteristicValue>;
|
|
15
|
+
private applyInUseTransition;
|
|
16
|
+
private seedRemainingDuration;
|
|
12
17
|
getActive(): Promise<CharacteristicValue>;
|
|
13
18
|
getInUse(): Promise<CharacteristicValue>;
|
|
14
19
|
getContactSensorState(): Promise<CharacteristicValue>;
|
|
@@ -18,8 +23,6 @@ export declare class DishwasherService extends BaseService {
|
|
|
18
23
|
private jobStateToContactSensor;
|
|
19
24
|
private tryRemainingTimeFallback;
|
|
20
25
|
private calculateRemainingSeconds;
|
|
21
|
-
private startCountdownTimer;
|
|
22
|
-
private stopCountdownTimer;
|
|
23
26
|
processEvent(event: ShortEvent): void;
|
|
24
27
|
}
|
|
25
28
|
//# sourceMappingURL=dishwasherService.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dishwasherService.d.ts","sourceRoot":"","sources":["../../src/services/dishwasherService.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,mBAAmB,EAAW,MAAM,YAAY,CAAC;AAC7E,OAAO,EAAE,8BAA8B,EAAE,MAAM,aAAa,CAAC;AAC7D,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AACjE,OAAO,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAC;AAE5D,qBAAa,iBAAkB,SAAQ,WAAW;IAEhD,OAAO,CAAC,oBAAoB,CAAuB;
|
|
1
|
+
{"version":3,"file":"dishwasherService.d.ts","sourceRoot":"","sources":["../../src/services/dishwasherService.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,mBAAmB,EAAW,MAAM,YAAY,CAAC;AAC7E,OAAO,EAAE,8BAA8B,EAAE,MAAM,aAAa,CAAC;AAC7D,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AACjE,OAAO,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAC;AAE5D,qBAAa,iBAAkB,SAAQ,WAAW;IAEhD,OAAO,CAAC,oBAAoB,CAAuB;IAEnD,OAAO,CAAC,SAAS,CAAuB;IAExC,OAAO,CAAC,eAAe,CAAS;IAChC,OAAO,CAAC,oBAAoB,CAAsB;gBAEtC,QAAQ,EAAE,8BAA8B,EAAE,SAAS,EAAE,iBAAiB,EAAE,WAAW,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,EAC7H,qBAAqB,EAAE,qBAAqB,EAC5C,IAAI,EAAE,MAAM,EAAE,YAAY,KAAA;IAuEtB,SAAS,CAAC,KAAK,EAAE,mBAAmB;IAKpC,WAAW,CAAC,KAAK,EAAE,mBAAmB;IAMtC,cAAc,IAAI,OAAO,CAAC,mBAAmB,CAAC;IA6CpD,OAAO,CAAC,oBAAoB;IAkB5B,OAAO,CAAC,qBAAqB;IAYvB,SAAS,IAAI,OAAO,CAAC,mBAAmB,CAAC;IAmBzC,QAAQ,IAAI,OAAO,CAAC,mBAAmB,CAAC;IAmBxC,qBAAqB,IAAI,OAAO,CAAC,mBAAmB,CAAC;IAoBrD,oBAAoB,IAAI,OAAO,CAAC,mBAAmB,CAAC;IAwB1D,OAAO,CAAC,oBAAoB;IAU5B,OAAO,CAAC,eAAe;IAiBvB,OAAO,CAAC,uBAAuB;IAO/B,OAAO,CAAC,wBAAwB;IAahC,OAAO,CAAC,yBAAyB;IAa1B,YAAY,CAAC,KAAK,EAAE,UAAU,GAAG,IAAI;CAyC7C"}
|
|
@@ -6,12 +6,17 @@ class DishwasherService extends baseService_1.BaseService {
|
|
|
6
6
|
constructor(platform, accessory, componentId, capabilities, multiServiceAccessory, name, deviceStatus) {
|
|
7
7
|
super(platform, accessory, componentId, capabilities, multiServiceAccessory, name, deviceStatus);
|
|
8
8
|
this.cachedCompletionTime = null;
|
|
9
|
-
|
|
9
|
+
// Tracks the last InUse value so we only seed the countdown on the OFF->ON (cycle-start) transition.
|
|
10
|
+
this.lastInUse = null;
|
|
11
|
+
// Whether a non-zero RemainingDuration has been seeded for the current cycle (seed-once guard).
|
|
12
|
+
this.remainingSeeded = false;
|
|
10
13
|
this.setServiceType(platform.Service.Valve);
|
|
11
14
|
this.log.debug(`Adding DishwasherService to ${this.name}`);
|
|
12
15
|
// ValveType: GENERIC_VALVE so Apple Home shows it as a generic valve with countdown
|
|
13
16
|
this.service.getCharacteristic(platform.Characteristic.ValveType)
|
|
14
17
|
.updateValue(platform.Characteristic.ValveType.GENERIC_VALVE);
|
|
18
|
+
// IsConfigured: working valve/irrigation plugins set this; unconfigured valves don't render reliably
|
|
19
|
+
this.service.setCharacteristic(platform.Characteristic.IsConfigured, platform.Characteristic.IsConfigured.CONFIGURED);
|
|
15
20
|
// Active: machine is running or paused
|
|
16
21
|
this.service.getCharacteristic(platform.Characteristic.Active)
|
|
17
22
|
.onGet(this.getActive.bind(this))
|
|
@@ -19,21 +24,30 @@ class DishwasherService extends baseService_1.BaseService {
|
|
|
19
24
|
// InUse: dishwasher job is actively working (wash/rinse/drying/etc)
|
|
20
25
|
this.service.getCharacteristic(platform.Characteristic.InUse)
|
|
21
26
|
.onGet(this.getInUse.bind(this));
|
|
22
|
-
//
|
|
27
|
+
// SetDuration: read-only for an appliance, but Apple Home's countdown UI expects the
|
|
28
|
+
// SetDuration/RemainingDuration pair. onSet is a no-op (we can't change the wash cycle).
|
|
29
|
+
this.service.getCharacteristic(platform.Characteristic.SetDuration)
|
|
30
|
+
.setProps({ maxValue: 14400 })
|
|
31
|
+
.onGet(this.getRemainingDuration.bind(this))
|
|
32
|
+
.onSet(this.setDuration.bind(this));
|
|
33
|
+
// RemainingDuration: seeded ONCE at cycle start; Apple Home then decrements it client-side.
|
|
23
34
|
this.service.getCharacteristic(platform.Characteristic.RemainingDuration)
|
|
24
35
|
.setProps({ maxValue: 14400 })
|
|
25
36
|
.onGet(this.getRemainingDuration.bind(this));
|
|
37
|
+
// Seed initial values so a stale cached value isn't shown after a restart (matches reference plugins).
|
|
38
|
+
this.service.updateCharacteristic(platform.Characteristic.RemainingDuration, 0);
|
|
39
|
+
this.service.updateCharacteristic(platform.Characteristic.SetDuration, 0);
|
|
26
40
|
// Poll using switch/light interval (appliances change state infrequently)
|
|
27
41
|
let pollSeconds = 10;
|
|
28
42
|
if (this.platform.config.PollSwitchesAndLightsSeconds !== undefined) {
|
|
29
43
|
pollSeconds = this.platform.config.PollSwitchesAndLightsSeconds;
|
|
30
44
|
}
|
|
31
45
|
if (pollSeconds > 0) {
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
// RemainingDuration
|
|
35
|
-
//
|
|
36
|
-
multiServiceAccessory.startPollingState(pollSeconds, this.
|
|
46
|
+
// Single consolidated poll: pollValveState pushes InUse and (only on the cycle-start transition)
|
|
47
|
+
// seeds SetDuration/RemainingDuration, then returns Active for startPollingState to push.
|
|
48
|
+
// RemainingDuration is deliberately NOT re-pushed every poll - doing so resets Apple Home's
|
|
49
|
+
// client-side countdown and leaves the tile stuck on "Waiting".
|
|
50
|
+
multiServiceAccessory.startPollingState(pollSeconds, this.pollValveState.bind(this), this.service, platform.Characteristic.Active);
|
|
37
51
|
}
|
|
38
52
|
// Optional Contact Sensor for Activity Notifications
|
|
39
53
|
if (this.platform.config.ExposeContactSensorForDishwashers) {
|
|
@@ -51,6 +65,77 @@ class DishwasherService extends baseService_1.BaseService {
|
|
|
51
65
|
async setActive(value) {
|
|
52
66
|
this.log.debug(`DishwasherService setActive(${value}) ignored for ${this.name} (read-only)`);
|
|
53
67
|
}
|
|
68
|
+
// No-op setter for SetDuration (read-only appliance; we can't change the wash cycle length)
|
|
69
|
+
async setDuration(value) {
|
|
70
|
+
this.log.debug(`DishwasherService setDuration(${value}) ignored for ${this.name} (read-only)`);
|
|
71
|
+
}
|
|
72
|
+
// Consolidated poll: reads status once, pushes InUse, seeds the countdown on the cycle-start
|
|
73
|
+
// transition only, and returns Active (pushed by startPollingState).
|
|
74
|
+
async pollValveState() {
|
|
75
|
+
var _a, _b;
|
|
76
|
+
const success = await this.getStatus();
|
|
77
|
+
if (!success) {
|
|
78
|
+
throw new this.platform.api.hap.HapStatusError(-70402 /* this.platform.api.hap.HAPStatus.SERVICE_COMMUNICATION_FAILURE */);
|
|
79
|
+
}
|
|
80
|
+
const operatingState = this.deviceStatus.status.dishwasherOperatingState;
|
|
81
|
+
if (!operatingState || !operatingState.machineState || !operatingState.dishwasherJobState) {
|
|
82
|
+
this.log.error(`Missing dishwasherOperatingState from ${this.name}`);
|
|
83
|
+
throw new this.platform.api.hap.HapStatusError(-70402 /* this.platform.api.hap.HAPStatus.SERVICE_COMMUNICATION_FAILURE */);
|
|
84
|
+
}
|
|
85
|
+
const machineState = operatingState.machineState.value;
|
|
86
|
+
const jobState = operatingState.dishwasherJobState.value;
|
|
87
|
+
this.log.debug(`Dishwasher machineState=${machineState} jobState=${jobState} for ${this.name}`);
|
|
88
|
+
// Refresh the cached completion time from the current status (or the samsungce fallback).
|
|
89
|
+
const completionTime = (_a = operatingState.completionTime) === null || _a === void 0 ? void 0 : _a.value;
|
|
90
|
+
if (completionTime) {
|
|
91
|
+
this.cachedCompletionTime = completionTime;
|
|
92
|
+
}
|
|
93
|
+
else {
|
|
94
|
+
this.tryRemainingTimeFallback();
|
|
95
|
+
}
|
|
96
|
+
const active = this.machineStateToActive(machineState);
|
|
97
|
+
let inUse = this.jobStateToInUse(jobState);
|
|
98
|
+
// A stopped/off machine can't be "in use", even if the device leaves jobState stale at end of cycle.
|
|
99
|
+
if (active === this.platform.Characteristic.Active.INACTIVE) {
|
|
100
|
+
inUse = this.platform.Characteristic.InUse.NOT_IN_USE;
|
|
101
|
+
}
|
|
102
|
+
this.service.updateCharacteristic(this.platform.Characteristic.InUse, inUse);
|
|
103
|
+
(_b = this.contactSensorService) === null || _b === void 0 ? void 0 : _b.updateCharacteristic(this.platform.Characteristic.ContactSensorState, inUse === this.platform.Characteristic.InUse.IN_USE
|
|
104
|
+
? this.platform.Characteristic.ContactSensorState.CONTACT_NOT_DETECTED
|
|
105
|
+
: this.platform.Characteristic.ContactSensorState.CONTACT_DETECTED);
|
|
106
|
+
this.applyInUseTransition(inUse);
|
|
107
|
+
return active;
|
|
108
|
+
}
|
|
109
|
+
// Seed the countdown ONCE per cycle, clear it on ON->OFF. While running, only (re)seeds if it
|
|
110
|
+
// hasn't been seeded yet - e.g. when completionTime becomes available a poll after the cycle started.
|
|
111
|
+
applyInUseTransition(inUse) {
|
|
112
|
+
const IN_USE = this.platform.Characteristic.InUse.IN_USE;
|
|
113
|
+
const wasInUse = this.lastInUse === IN_USE;
|
|
114
|
+
const nowInUse = inUse === IN_USE;
|
|
115
|
+
if (nowInUse && (!wasInUse || !this.remainingSeeded)) {
|
|
116
|
+
this.seedRemainingDuration();
|
|
117
|
+
}
|
|
118
|
+
else if (!nowInUse && wasInUse) {
|
|
119
|
+
this.service.updateCharacteristic(this.platform.Characteristic.RemainingDuration, 0);
|
|
120
|
+
this.remainingSeeded = false;
|
|
121
|
+
this.log.debug(`Dishwasher cycle ended for ${this.name}: RemainingDuration 0`);
|
|
122
|
+
}
|
|
123
|
+
this.lastInUse = inUse;
|
|
124
|
+
}
|
|
125
|
+
// Pushes SetDuration/RemainingDuration once. If completionTime isn't available yet (seconds == 0)
|
|
126
|
+
// it leaves remainingSeeded false so a later poll/event retries the seed.
|
|
127
|
+
seedRemainingDuration() {
|
|
128
|
+
const secs = this.calculateRemainingSeconds();
|
|
129
|
+
if (secs > 0) {
|
|
130
|
+
this.service.updateCharacteristic(this.platform.Characteristic.SetDuration, secs);
|
|
131
|
+
this.service.updateCharacteristic(this.platform.Characteristic.RemainingDuration, secs);
|
|
132
|
+
this.remainingSeeded = true;
|
|
133
|
+
this.log.debug(`Dishwasher countdown seeded for ${this.name}: ${secs}s`);
|
|
134
|
+
}
|
|
135
|
+
else {
|
|
136
|
+
this.log.debug(`Dishwasher in use but no completionTime yet for ${this.name}; will retry`);
|
|
137
|
+
}
|
|
138
|
+
}
|
|
54
139
|
async getActive() {
|
|
55
140
|
return new Promise((resolve, reject) => {
|
|
56
141
|
this.getStatus().then(success => {
|
|
@@ -107,33 +192,31 @@ class DishwasherService extends baseService_1.BaseService {
|
|
|
107
192
|
});
|
|
108
193
|
});
|
|
109
194
|
}
|
|
195
|
+
// onGet for RemainingDuration / SetDuration. Serves Home app re-reads (e.g. when the app is
|
|
196
|
+
// reopened) by computing the live remaining seconds from completionTime; it does not push.
|
|
110
197
|
async getRemainingDuration() {
|
|
111
|
-
return new Promise((resolve
|
|
198
|
+
return new Promise((resolve) => {
|
|
112
199
|
this.getStatus().then(success => {
|
|
113
200
|
var _a;
|
|
114
201
|
if (!success) {
|
|
115
|
-
|
|
202
|
+
resolve(this.calculateRemainingSeconds());
|
|
116
203
|
return;
|
|
117
204
|
}
|
|
118
205
|
try {
|
|
119
|
-
// completionTime is an attribute of dishwasherOperatingState, not a separate capability
|
|
120
206
|
const completionTime = (_a = this.deviceStatus.status.dishwasherOperatingState.completionTime) === null || _a === void 0 ? void 0 : _a.value;
|
|
121
207
|
if (completionTime) {
|
|
122
208
|
this.cachedCompletionTime = completionTime;
|
|
123
|
-
this.startCountdownTimer();
|
|
124
209
|
}
|
|
125
210
|
else {
|
|
126
|
-
// Fallback: use samsungce.dishwasherOperatingState.remainingTime (integer minutes)
|
|
127
211
|
this.tryRemainingTimeFallback();
|
|
128
212
|
}
|
|
129
|
-
const remainingSeconds = this.calculateRemainingSeconds();
|
|
130
|
-
this.log.debug(`Dishwasher RemainingDuration for ${this.name}: ${remainingSeconds}s`);
|
|
131
|
-
resolve(remainingSeconds);
|
|
132
213
|
}
|
|
133
214
|
catch (error) {
|
|
134
215
|
this.log.debug(`No completionTime status available for ${this.name}`);
|
|
135
|
-
resolve(0);
|
|
136
216
|
}
|
|
217
|
+
const remainingSeconds = this.calculateRemainingSeconds();
|
|
218
|
+
this.log.debug(`Dishwasher RemainingDuration for ${this.name}: ${remainingSeconds}s`);
|
|
219
|
+
resolve(remainingSeconds);
|
|
137
220
|
});
|
|
138
221
|
});
|
|
139
222
|
}
|
|
@@ -173,10 +256,9 @@ class DishwasherService extends baseService_1.BaseService {
|
|
|
173
256
|
try {
|
|
174
257
|
const remainingMin = (_b = (_a = this.deviceStatus.status['samsungce.dishwasherOperatingState']) === null || _a === void 0 ? void 0 : _a.remainingTime) === null || _b === void 0 ? void 0 : _b.value;
|
|
175
258
|
if (typeof remainingMin === 'number' && remainingMin > 0) {
|
|
176
|
-
// Convert relative minutes to an absolute completion timestamp for the countdown
|
|
259
|
+
// Convert relative minutes to an absolute completion timestamp for the countdown.
|
|
177
260
|
this.cachedCompletionTime = new Date(Date.now() + remainingMin * 60 * 1000).toISOString();
|
|
178
261
|
this.log.debug(`Dishwasher remainingTime fallback for ${this.name}: ${remainingMin} min`);
|
|
179
|
-
this.startCountdownTimer();
|
|
180
262
|
}
|
|
181
263
|
}
|
|
182
264
|
catch (_c) {
|
|
@@ -195,26 +277,6 @@ class DishwasherService extends baseService_1.BaseService {
|
|
|
195
277
|
const remaining = Math.max(0, Math.floor((parsed - Date.now()) / 1000));
|
|
196
278
|
return Math.min(remaining, 14400);
|
|
197
279
|
}
|
|
198
|
-
startCountdownTimer() {
|
|
199
|
-
this.stopCountdownTimer();
|
|
200
|
-
const remaining = this.calculateRemainingSeconds();
|
|
201
|
-
if (remaining <= 0) {
|
|
202
|
-
return;
|
|
203
|
-
}
|
|
204
|
-
this.countdownTimer = setInterval(() => {
|
|
205
|
-
const secs = this.calculateRemainingSeconds();
|
|
206
|
-
this.service.updateCharacteristic(this.platform.Characteristic.RemainingDuration, secs);
|
|
207
|
-
if (secs <= 0) {
|
|
208
|
-
this.stopCountdownTimer();
|
|
209
|
-
}
|
|
210
|
-
}, 60 * 1000);
|
|
211
|
-
}
|
|
212
|
-
stopCountdownTimer() {
|
|
213
|
-
if (this.countdownTimer) {
|
|
214
|
-
clearInterval(this.countdownTimer);
|
|
215
|
-
this.countdownTimer = null;
|
|
216
|
-
}
|
|
217
|
-
}
|
|
218
280
|
processEvent(event) {
|
|
219
281
|
var _a, _b;
|
|
220
282
|
if (event.capability === 'dishwasherOperatingState') {
|
|
@@ -222,26 +284,33 @@ class DishwasherService extends baseService_1.BaseService {
|
|
|
222
284
|
this.log.debug(`Event updating dishwasher machineState for ${this.name} to ${event.value}`);
|
|
223
285
|
const active = this.machineStateToActive(event.value);
|
|
224
286
|
this.service.updateCharacteristic(this.platform.Characteristic.Active, active);
|
|
225
|
-
// If machine stopped, clear
|
|
287
|
+
// If machine stopped, clear the cached completion time and set remaining to 0.
|
|
226
288
|
if (event.value === 'stop') {
|
|
227
289
|
this.cachedCompletionTime = null;
|
|
228
|
-
this.
|
|
290
|
+
this.lastInUse = this.platform.Characteristic.InUse.NOT_IN_USE;
|
|
291
|
+
this.remainingSeeded = false;
|
|
229
292
|
this.service.updateCharacteristic(this.platform.Characteristic.RemainingDuration, 0);
|
|
230
293
|
(_a = this.contactSensorService) === null || _a === void 0 ? void 0 : _a.updateCharacteristic(this.platform.Characteristic.ContactSensorState, this.platform.Characteristic.ContactSensorState.CONTACT_DETECTED);
|
|
231
294
|
}
|
|
232
295
|
}
|
|
233
296
|
else if (event.attribute === 'dishwasherJobState') {
|
|
234
297
|
this.log.debug(`Event updating dishwasher jobState for ${this.name} to ${event.value}`);
|
|
235
|
-
|
|
298
|
+
const inUse = this.jobStateToInUse(event.value);
|
|
299
|
+
this.service.updateCharacteristic(this.platform.Characteristic.InUse, inUse);
|
|
236
300
|
(_b = this.contactSensorService) === null || _b === void 0 ? void 0 : _b.updateCharacteristic(this.platform.Characteristic.ContactSensorState, this.jobStateToContactSensor(event.value));
|
|
301
|
+
// Seed the countdown once on the cycle-start transition.
|
|
302
|
+
this.applyInUseTransition(inUse);
|
|
237
303
|
}
|
|
238
304
|
else if (event.attribute === 'completionTime') {
|
|
239
305
|
// completionTime is an attribute of dishwasherOperatingState
|
|
240
306
|
this.log.debug(`Event updating dishwasher completionTime for ${this.name} to ${event.value}`);
|
|
241
307
|
this.cachedCompletionTime = event.value;
|
|
242
|
-
|
|
243
|
-
this.
|
|
244
|
-
|
|
308
|
+
// Refresh RemainingDuration when a cycle is running (real change / late-arriving completionTime).
|
|
309
|
+
if (this.lastInUse === this.platform.Characteristic.InUse.IN_USE) {
|
|
310
|
+
const secs = this.calculateRemainingSeconds();
|
|
311
|
+
this.service.updateCharacteristic(this.platform.Characteristic.RemainingDuration, secs);
|
|
312
|
+
this.remainingSeeded = secs > 0;
|
|
313
|
+
}
|
|
245
314
|
}
|
|
246
315
|
}
|
|
247
316
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dishwasherService.js","sourceRoot":"","sources":["../../src/services/dishwasherService.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"dishwasherService.js","sourceRoot":"","sources":["../../src/services/dishwasherService.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,10 +5,15 @@ import { MultiServiceAccessory } from '../multiServiceAccessory';
|
|
|
5
5
|
import { ShortEvent } from '../webhook/subscriptionHandler';
|
|
6
6
|
export declare class DryerService extends BaseService {
|
|
7
7
|
private cachedCompletionTime;
|
|
8
|
-
private
|
|
8
|
+
private lastInUse;
|
|
9
|
+
private remainingSeeded;
|
|
9
10
|
private contactSensorService;
|
|
10
11
|
constructor(platform: IKHomeBridgeHomebridgePlatform, accessory: PlatformAccessory, componentId: string, capabilities: string[], multiServiceAccessory: MultiServiceAccessory, name: string, deviceStatus: any);
|
|
11
12
|
setActive(value: CharacteristicValue): Promise<void>;
|
|
13
|
+
setDuration(value: CharacteristicValue): Promise<void>;
|
|
14
|
+
pollValveState(): Promise<CharacteristicValue>;
|
|
15
|
+
private applyInUseTransition;
|
|
16
|
+
private seedRemainingDuration;
|
|
12
17
|
getActive(): Promise<CharacteristicValue>;
|
|
13
18
|
getInUse(): Promise<CharacteristicValue>;
|
|
14
19
|
getContactSensorState(): Promise<CharacteristicValue>;
|
|
@@ -18,8 +23,6 @@ export declare class DryerService extends BaseService {
|
|
|
18
23
|
private jobStateToContactSensor;
|
|
19
24
|
private tryRemainingTimeFallback;
|
|
20
25
|
private calculateRemainingSeconds;
|
|
21
|
-
private startCountdownTimer;
|
|
22
|
-
private stopCountdownTimer;
|
|
23
26
|
processEvent(event: ShortEvent): void;
|
|
24
27
|
}
|
|
25
28
|
//# sourceMappingURL=dryerService.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dryerService.d.ts","sourceRoot":"","sources":["../../src/services/dryerService.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,mBAAmB,EAAW,MAAM,YAAY,CAAC;AAC7E,OAAO,EAAE,8BAA8B,EAAE,MAAM,aAAa,CAAC;AAC7D,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AACjE,OAAO,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAC;AAE5D,qBAAa,YAAa,SAAQ,WAAW;IAE3C,OAAO,CAAC,oBAAoB,CAAuB;
|
|
1
|
+
{"version":3,"file":"dryerService.d.ts","sourceRoot":"","sources":["../../src/services/dryerService.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,mBAAmB,EAAW,MAAM,YAAY,CAAC;AAC7E,OAAO,EAAE,8BAA8B,EAAE,MAAM,aAAa,CAAC;AAC7D,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AACjE,OAAO,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAC;AAE5D,qBAAa,YAAa,SAAQ,WAAW;IAE3C,OAAO,CAAC,oBAAoB,CAAuB;IAEnD,OAAO,CAAC,SAAS,CAAuB;IAExC,OAAO,CAAC,eAAe,CAAS;IAChC,OAAO,CAAC,oBAAoB,CAAsB;gBAEtC,QAAQ,EAAE,8BAA8B,EAAE,SAAS,EAAE,iBAAiB,EAAE,WAAW,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,EAC7H,qBAAqB,EAAE,qBAAqB,EAC5C,IAAI,EAAE,MAAM,EAAE,YAAY,KAAA;IAuEtB,SAAS,CAAC,KAAK,EAAE,mBAAmB;IAKpC,WAAW,CAAC,KAAK,EAAE,mBAAmB;IAMtC,cAAc,IAAI,OAAO,CAAC,mBAAmB,CAAC;IA6CpD,OAAO,CAAC,oBAAoB;IAkB5B,OAAO,CAAC,qBAAqB;IAYvB,SAAS,IAAI,OAAO,CAAC,mBAAmB,CAAC;IAmBzC,QAAQ,IAAI,OAAO,CAAC,mBAAmB,CAAC;IAmBxC,qBAAqB,IAAI,OAAO,CAAC,mBAAmB,CAAC;IAoBrD,oBAAoB,IAAI,OAAO,CAAC,mBAAmB,CAAC;IAwB1D,OAAO,CAAC,oBAAoB;IAU5B,OAAO,CAAC,eAAe;IAiBvB,OAAO,CAAC,uBAAuB;IAO/B,OAAO,CAAC,wBAAwB;IAahC,OAAO,CAAC,yBAAyB;IAa1B,YAAY,CAAC,KAAK,EAAE,UAAU,GAAG,IAAI;CAyC7C"}
|
|
@@ -6,12 +6,17 @@ class DryerService extends baseService_1.BaseService {
|
|
|
6
6
|
constructor(platform, accessory, componentId, capabilities, multiServiceAccessory, name, deviceStatus) {
|
|
7
7
|
super(platform, accessory, componentId, capabilities, multiServiceAccessory, name, deviceStatus);
|
|
8
8
|
this.cachedCompletionTime = null;
|
|
9
|
-
|
|
9
|
+
// Tracks the last InUse value so we only seed the countdown on the OFF->ON (cycle-start) transition.
|
|
10
|
+
this.lastInUse = null;
|
|
11
|
+
// Whether a non-zero RemainingDuration has been seeded for the current cycle (seed-once guard).
|
|
12
|
+
this.remainingSeeded = false;
|
|
10
13
|
this.setServiceType(platform.Service.Valve);
|
|
11
14
|
this.log.debug(`Adding DryerService to ${this.name}`);
|
|
12
15
|
// ValveType: GENERIC_VALVE so Apple Home shows it as a generic valve with countdown
|
|
13
16
|
this.service.getCharacteristic(platform.Characteristic.ValveType)
|
|
14
17
|
.updateValue(platform.Characteristic.ValveType.GENERIC_VALVE);
|
|
18
|
+
// IsConfigured: working valve/irrigation plugins set this; unconfigured valves don't render reliably
|
|
19
|
+
this.service.setCharacteristic(platform.Characteristic.IsConfigured, platform.Characteristic.IsConfigured.CONFIGURED);
|
|
15
20
|
// Active: machine is running or paused
|
|
16
21
|
this.service.getCharacteristic(platform.Characteristic.Active)
|
|
17
22
|
.onGet(this.getActive.bind(this))
|
|
@@ -19,18 +24,30 @@ class DryerService extends baseService_1.BaseService {
|
|
|
19
24
|
// InUse: dryer job is actively working (drying/cooling/etc)
|
|
20
25
|
this.service.getCharacteristic(platform.Characteristic.InUse)
|
|
21
26
|
.onGet(this.getInUse.bind(this));
|
|
22
|
-
//
|
|
27
|
+
// SetDuration: read-only for an appliance, but Apple Home's countdown UI expects the
|
|
28
|
+
// SetDuration/RemainingDuration pair. onSet is a no-op (we can't change the dry cycle).
|
|
29
|
+
this.service.getCharacteristic(platform.Characteristic.SetDuration)
|
|
30
|
+
.setProps({ maxValue: 14400 })
|
|
31
|
+
.onGet(this.getRemainingDuration.bind(this))
|
|
32
|
+
.onSet(this.setDuration.bind(this));
|
|
33
|
+
// RemainingDuration: seeded ONCE at cycle start; Apple Home then decrements it client-side.
|
|
23
34
|
this.service.getCharacteristic(platform.Characteristic.RemainingDuration)
|
|
24
35
|
.setProps({ maxValue: 14400 })
|
|
25
36
|
.onGet(this.getRemainingDuration.bind(this));
|
|
37
|
+
// Seed initial values so a stale cached value isn't shown after a restart (matches reference plugins).
|
|
38
|
+
this.service.updateCharacteristic(platform.Characteristic.RemainingDuration, 0);
|
|
39
|
+
this.service.updateCharacteristic(platform.Characteristic.SetDuration, 0);
|
|
26
40
|
// Poll using switch/light interval (appliances change state infrequently)
|
|
27
41
|
let pollSeconds = 10;
|
|
28
42
|
if (this.platform.config.PollSwitchesAndLightsSeconds !== undefined) {
|
|
29
43
|
pollSeconds = this.platform.config.PollSwitchesAndLightsSeconds;
|
|
30
44
|
}
|
|
31
45
|
if (pollSeconds > 0) {
|
|
32
|
-
|
|
33
|
-
|
|
46
|
+
// Single consolidated poll: pollValveState pushes InUse and (only on the cycle-start transition)
|
|
47
|
+
// seeds SetDuration/RemainingDuration, then returns Active for startPollingState to push.
|
|
48
|
+
// RemainingDuration is deliberately NOT re-pushed every poll - doing so resets Apple Home's
|
|
49
|
+
// client-side countdown and leaves the tile stuck on "Waiting".
|
|
50
|
+
multiServiceAccessory.startPollingState(pollSeconds, this.pollValveState.bind(this), this.service, platform.Characteristic.Active);
|
|
34
51
|
}
|
|
35
52
|
// Optional Contact Sensor for Activity Notifications
|
|
36
53
|
if (this.platform.config.ExposeContactSensorForDryers) {
|
|
@@ -48,6 +65,77 @@ class DryerService extends baseService_1.BaseService {
|
|
|
48
65
|
async setActive(value) {
|
|
49
66
|
this.log.debug(`DryerService setActive(${value}) ignored for ${this.name} (read-only)`);
|
|
50
67
|
}
|
|
68
|
+
// No-op setter for SetDuration (read-only appliance; we can't change the dry cycle length)
|
|
69
|
+
async setDuration(value) {
|
|
70
|
+
this.log.debug(`DryerService setDuration(${value}) ignored for ${this.name} (read-only)`);
|
|
71
|
+
}
|
|
72
|
+
// Consolidated poll: reads status once, pushes InUse, seeds the countdown on the cycle-start
|
|
73
|
+
// transition only, and returns Active (pushed by startPollingState).
|
|
74
|
+
async pollValveState() {
|
|
75
|
+
var _a, _b;
|
|
76
|
+
const success = await this.getStatus();
|
|
77
|
+
if (!success) {
|
|
78
|
+
throw new this.platform.api.hap.HapStatusError(-70402 /* this.platform.api.hap.HAPStatus.SERVICE_COMMUNICATION_FAILURE */);
|
|
79
|
+
}
|
|
80
|
+
const operatingState = this.deviceStatus.status.dryerOperatingState;
|
|
81
|
+
if (!operatingState || !operatingState.machineState || !operatingState.dryerJobState) {
|
|
82
|
+
this.log.error(`Missing dryerOperatingState from ${this.name}`);
|
|
83
|
+
throw new this.platform.api.hap.HapStatusError(-70402 /* this.platform.api.hap.HAPStatus.SERVICE_COMMUNICATION_FAILURE */);
|
|
84
|
+
}
|
|
85
|
+
const machineState = operatingState.machineState.value;
|
|
86
|
+
const jobState = operatingState.dryerJobState.value;
|
|
87
|
+
this.log.debug(`Dryer machineState=${machineState} jobState=${jobState} for ${this.name}`);
|
|
88
|
+
// Refresh the cached completion time from the current status (or the samsungce fallback).
|
|
89
|
+
const completionTime = (_a = operatingState.completionTime) === null || _a === void 0 ? void 0 : _a.value;
|
|
90
|
+
if (completionTime) {
|
|
91
|
+
this.cachedCompletionTime = completionTime;
|
|
92
|
+
}
|
|
93
|
+
else {
|
|
94
|
+
this.tryRemainingTimeFallback();
|
|
95
|
+
}
|
|
96
|
+
const active = this.machineStateToActive(machineState);
|
|
97
|
+
let inUse = this.jobStateToInUse(jobState);
|
|
98
|
+
// A stopped/off machine can't be "in use", even if the device leaves jobState stale at end of cycle.
|
|
99
|
+
if (active === this.platform.Characteristic.Active.INACTIVE) {
|
|
100
|
+
inUse = this.platform.Characteristic.InUse.NOT_IN_USE;
|
|
101
|
+
}
|
|
102
|
+
this.service.updateCharacteristic(this.platform.Characteristic.InUse, inUse);
|
|
103
|
+
(_b = this.contactSensorService) === null || _b === void 0 ? void 0 : _b.updateCharacteristic(this.platform.Characteristic.ContactSensorState, inUse === this.platform.Characteristic.InUse.IN_USE
|
|
104
|
+
? this.platform.Characteristic.ContactSensorState.CONTACT_NOT_DETECTED
|
|
105
|
+
: this.platform.Characteristic.ContactSensorState.CONTACT_DETECTED);
|
|
106
|
+
this.applyInUseTransition(inUse);
|
|
107
|
+
return active;
|
|
108
|
+
}
|
|
109
|
+
// Seed the countdown ONCE per cycle, clear it on ON->OFF. While running, only (re)seeds if it
|
|
110
|
+
// hasn't been seeded yet - e.g. when completionTime becomes available a poll after the cycle started.
|
|
111
|
+
applyInUseTransition(inUse) {
|
|
112
|
+
const IN_USE = this.platform.Characteristic.InUse.IN_USE;
|
|
113
|
+
const wasInUse = this.lastInUse === IN_USE;
|
|
114
|
+
const nowInUse = inUse === IN_USE;
|
|
115
|
+
if (nowInUse && (!wasInUse || !this.remainingSeeded)) {
|
|
116
|
+
this.seedRemainingDuration();
|
|
117
|
+
}
|
|
118
|
+
else if (!nowInUse && wasInUse) {
|
|
119
|
+
this.service.updateCharacteristic(this.platform.Characteristic.RemainingDuration, 0);
|
|
120
|
+
this.remainingSeeded = false;
|
|
121
|
+
this.log.debug(`Dryer cycle ended for ${this.name}: RemainingDuration 0`);
|
|
122
|
+
}
|
|
123
|
+
this.lastInUse = inUse;
|
|
124
|
+
}
|
|
125
|
+
// Pushes SetDuration/RemainingDuration once. If completionTime isn't available yet (seconds == 0)
|
|
126
|
+
// it leaves remainingSeeded false so a later poll/event retries the seed.
|
|
127
|
+
seedRemainingDuration() {
|
|
128
|
+
const secs = this.calculateRemainingSeconds();
|
|
129
|
+
if (secs > 0) {
|
|
130
|
+
this.service.updateCharacteristic(this.platform.Characteristic.SetDuration, secs);
|
|
131
|
+
this.service.updateCharacteristic(this.platform.Characteristic.RemainingDuration, secs);
|
|
132
|
+
this.remainingSeeded = true;
|
|
133
|
+
this.log.debug(`Dryer countdown seeded for ${this.name}: ${secs}s`);
|
|
134
|
+
}
|
|
135
|
+
else {
|
|
136
|
+
this.log.debug(`Dryer in use but no completionTime yet for ${this.name}; will retry`);
|
|
137
|
+
}
|
|
138
|
+
}
|
|
51
139
|
async getActive() {
|
|
52
140
|
return new Promise((resolve, reject) => {
|
|
53
141
|
this.getStatus().then(success => {
|
|
@@ -104,31 +192,31 @@ class DryerService extends baseService_1.BaseService {
|
|
|
104
192
|
});
|
|
105
193
|
});
|
|
106
194
|
}
|
|
195
|
+
// onGet for RemainingDuration / SetDuration. Serves Home app re-reads (e.g. when the app is
|
|
196
|
+
// reopened) by computing the live remaining seconds from completionTime; it does not push.
|
|
107
197
|
async getRemainingDuration() {
|
|
108
|
-
return new Promise((resolve
|
|
198
|
+
return new Promise((resolve) => {
|
|
109
199
|
this.getStatus().then(success => {
|
|
110
200
|
var _a;
|
|
111
201
|
if (!success) {
|
|
112
|
-
|
|
202
|
+
resolve(this.calculateRemainingSeconds());
|
|
113
203
|
return;
|
|
114
204
|
}
|
|
115
205
|
try {
|
|
116
|
-
// completionTime is an attribute of dryerOperatingState, not a separate capability
|
|
117
206
|
const completionTime = (_a = this.deviceStatus.status.dryerOperatingState.completionTime) === null || _a === void 0 ? void 0 : _a.value;
|
|
118
207
|
if (completionTime) {
|
|
119
208
|
this.cachedCompletionTime = completionTime;
|
|
120
|
-
this.startCountdownTimer();
|
|
121
209
|
}
|
|
122
210
|
else {
|
|
123
|
-
// Fallback: use samsungce.dryerOperatingState.remainingTime (integer minutes)
|
|
124
211
|
this.tryRemainingTimeFallback();
|
|
125
212
|
}
|
|
126
|
-
resolve(this.calculateRemainingSeconds());
|
|
127
213
|
}
|
|
128
214
|
catch (error) {
|
|
129
215
|
this.log.debug(`No completionTime status available for ${this.name}`);
|
|
130
|
-
resolve(0);
|
|
131
216
|
}
|
|
217
|
+
const remainingSeconds = this.calculateRemainingSeconds();
|
|
218
|
+
this.log.debug(`Dryer RemainingDuration for ${this.name}: ${remainingSeconds}s`);
|
|
219
|
+
resolve(remainingSeconds);
|
|
132
220
|
});
|
|
133
221
|
});
|
|
134
222
|
}
|
|
@@ -168,10 +256,9 @@ class DryerService extends baseService_1.BaseService {
|
|
|
168
256
|
try {
|
|
169
257
|
const remainingMin = (_b = (_a = this.deviceStatus.status['samsungce.dryerOperatingState']) === null || _a === void 0 ? void 0 : _a.remainingTime) === null || _b === void 0 ? void 0 : _b.value;
|
|
170
258
|
if (typeof remainingMin === 'number' && remainingMin > 0) {
|
|
171
|
-
// Convert relative minutes to an absolute completion timestamp for the countdown
|
|
259
|
+
// Convert relative minutes to an absolute completion timestamp for the countdown.
|
|
172
260
|
this.cachedCompletionTime = new Date(Date.now() + remainingMin * 60 * 1000).toISOString();
|
|
173
261
|
this.log.debug(`Dryer remainingTime fallback for ${this.name}: ${remainingMin} min`);
|
|
174
|
-
this.startCountdownTimer();
|
|
175
262
|
}
|
|
176
263
|
}
|
|
177
264
|
catch (_c) {
|
|
@@ -190,26 +277,6 @@ class DryerService extends baseService_1.BaseService {
|
|
|
190
277
|
const remaining = Math.max(0, Math.floor((parsed - Date.now()) / 1000));
|
|
191
278
|
return Math.min(remaining, 14400);
|
|
192
279
|
}
|
|
193
|
-
startCountdownTimer() {
|
|
194
|
-
this.stopCountdownTimer();
|
|
195
|
-
const remaining = this.calculateRemainingSeconds();
|
|
196
|
-
if (remaining <= 0) {
|
|
197
|
-
return;
|
|
198
|
-
}
|
|
199
|
-
this.countdownTimer = setInterval(() => {
|
|
200
|
-
const secs = this.calculateRemainingSeconds();
|
|
201
|
-
this.service.updateCharacteristic(this.platform.Characteristic.RemainingDuration, secs);
|
|
202
|
-
if (secs <= 0) {
|
|
203
|
-
this.stopCountdownTimer();
|
|
204
|
-
}
|
|
205
|
-
}, 60 * 1000);
|
|
206
|
-
}
|
|
207
|
-
stopCountdownTimer() {
|
|
208
|
-
if (this.countdownTimer) {
|
|
209
|
-
clearInterval(this.countdownTimer);
|
|
210
|
-
this.countdownTimer = null;
|
|
211
|
-
}
|
|
212
|
-
}
|
|
213
280
|
processEvent(event) {
|
|
214
281
|
var _a, _b;
|
|
215
282
|
if (event.capability === 'dryerOperatingState') {
|
|
@@ -217,26 +284,33 @@ class DryerService extends baseService_1.BaseService {
|
|
|
217
284
|
this.log.debug(`Event updating dryer machineState for ${this.name} to ${event.value}`);
|
|
218
285
|
const active = this.machineStateToActive(event.value);
|
|
219
286
|
this.service.updateCharacteristic(this.platform.Characteristic.Active, active);
|
|
220
|
-
// If machine stopped, clear
|
|
287
|
+
// If machine stopped, clear the cached completion time and set remaining to 0.
|
|
221
288
|
if (event.value === 'stop') {
|
|
222
289
|
this.cachedCompletionTime = null;
|
|
223
|
-
this.
|
|
290
|
+
this.lastInUse = this.platform.Characteristic.InUse.NOT_IN_USE;
|
|
291
|
+
this.remainingSeeded = false;
|
|
224
292
|
this.service.updateCharacteristic(this.platform.Characteristic.RemainingDuration, 0);
|
|
225
293
|
(_a = this.contactSensorService) === null || _a === void 0 ? void 0 : _a.updateCharacteristic(this.platform.Characteristic.ContactSensorState, this.platform.Characteristic.ContactSensorState.CONTACT_DETECTED);
|
|
226
294
|
}
|
|
227
295
|
}
|
|
228
296
|
else if (event.attribute === 'dryerJobState') {
|
|
229
297
|
this.log.debug(`Event updating dryer jobState for ${this.name} to ${event.value}`);
|
|
230
|
-
|
|
298
|
+
const inUse = this.jobStateToInUse(event.value);
|
|
299
|
+
this.service.updateCharacteristic(this.platform.Characteristic.InUse, inUse);
|
|
231
300
|
(_b = this.contactSensorService) === null || _b === void 0 ? void 0 : _b.updateCharacteristic(this.platform.Characteristic.ContactSensorState, this.jobStateToContactSensor(event.value));
|
|
301
|
+
// Seed the countdown once on the cycle-start transition.
|
|
302
|
+
this.applyInUseTransition(inUse);
|
|
232
303
|
}
|
|
233
304
|
else if (event.attribute === 'completionTime') {
|
|
234
305
|
// completionTime is an attribute of dryerOperatingState
|
|
235
306
|
this.log.debug(`Event updating dryer completionTime for ${this.name} to ${event.value}`);
|
|
236
307
|
this.cachedCompletionTime = event.value;
|
|
237
|
-
|
|
238
|
-
this.
|
|
239
|
-
|
|
308
|
+
// Refresh RemainingDuration when a cycle is running (real change / late-arriving completionTime).
|
|
309
|
+
if (this.lastInUse === this.platform.Characteristic.InUse.IN_USE) {
|
|
310
|
+
const secs = this.calculateRemainingSeconds();
|
|
311
|
+
this.service.updateCharacteristic(this.platform.Characteristic.RemainingDuration, secs);
|
|
312
|
+
this.remainingSeeded = secs > 0;
|
|
313
|
+
}
|
|
240
314
|
}
|
|
241
315
|
}
|
|
242
316
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dryerService.js","sourceRoot":"","sources":["../../src/services/dryerService.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"dryerService.js","sourceRoot":"","sources":["../../src/services/dryerService.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,10 +5,15 @@ import { MultiServiceAccessory } from '../multiServiceAccessory';
|
|
|
5
5
|
import { ShortEvent } from '../webhook/subscriptionHandler';
|
|
6
6
|
export declare class WasherService extends BaseService {
|
|
7
7
|
private cachedCompletionTime;
|
|
8
|
-
private
|
|
8
|
+
private lastInUse;
|
|
9
|
+
private remainingSeeded;
|
|
9
10
|
private contactSensorService;
|
|
10
11
|
constructor(platform: IKHomeBridgeHomebridgePlatform, accessory: PlatformAccessory, componentId: string, capabilities: string[], multiServiceAccessory: MultiServiceAccessory, name: string, deviceStatus: any);
|
|
11
12
|
setActive(value: CharacteristicValue): Promise<void>;
|
|
13
|
+
setDuration(value: CharacteristicValue): Promise<void>;
|
|
14
|
+
pollValveState(): Promise<CharacteristicValue>;
|
|
15
|
+
private applyInUseTransition;
|
|
16
|
+
private seedRemainingDuration;
|
|
12
17
|
getActive(): Promise<CharacteristicValue>;
|
|
13
18
|
getInUse(): Promise<CharacteristicValue>;
|
|
14
19
|
getContactSensorState(): Promise<CharacteristicValue>;
|
|
@@ -18,8 +23,6 @@ export declare class WasherService extends BaseService {
|
|
|
18
23
|
private jobStateToContactSensor;
|
|
19
24
|
private tryRemainingTimeFallback;
|
|
20
25
|
private calculateRemainingSeconds;
|
|
21
|
-
private startCountdownTimer;
|
|
22
|
-
private stopCountdownTimer;
|
|
23
26
|
processEvent(event: ShortEvent): void;
|
|
24
27
|
}
|
|
25
28
|
//# sourceMappingURL=washerService.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"washerService.d.ts","sourceRoot":"","sources":["../../src/services/washerService.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,mBAAmB,EAAW,MAAM,YAAY,CAAC;AAC7E,OAAO,EAAE,8BAA8B,EAAE,MAAM,aAAa,CAAC;AAC7D,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AACjE,OAAO,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAC;AAE5D,qBAAa,aAAc,SAAQ,WAAW;IAE5C,OAAO,CAAC,oBAAoB,CAAuB;
|
|
1
|
+
{"version":3,"file":"washerService.d.ts","sourceRoot":"","sources":["../../src/services/washerService.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,mBAAmB,EAAW,MAAM,YAAY,CAAC;AAC7E,OAAO,EAAE,8BAA8B,EAAE,MAAM,aAAa,CAAC;AAC7D,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AACjE,OAAO,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAC;AAE5D,qBAAa,aAAc,SAAQ,WAAW;IAE5C,OAAO,CAAC,oBAAoB,CAAuB;IAEnD,OAAO,CAAC,SAAS,CAAuB;IAExC,OAAO,CAAC,eAAe,CAAS;IAChC,OAAO,CAAC,oBAAoB,CAAsB;gBAEtC,QAAQ,EAAE,8BAA8B,EAAE,SAAS,EAAE,iBAAiB,EAAE,WAAW,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,EAC7H,qBAAqB,EAAE,qBAAqB,EAC5C,IAAI,EAAE,MAAM,EAAE,YAAY,KAAA;IAuEtB,SAAS,CAAC,KAAK,EAAE,mBAAmB;IAKpC,WAAW,CAAC,KAAK,EAAE,mBAAmB;IAMtC,cAAc,IAAI,OAAO,CAAC,mBAAmB,CAAC;IA6CpD,OAAO,CAAC,oBAAoB;IAkB5B,OAAO,CAAC,qBAAqB;IAYvB,SAAS,IAAI,OAAO,CAAC,mBAAmB,CAAC;IAmBzC,QAAQ,IAAI,OAAO,CAAC,mBAAmB,CAAC;IAmBxC,qBAAqB,IAAI,OAAO,CAAC,mBAAmB,CAAC;IAoBrD,oBAAoB,IAAI,OAAO,CAAC,mBAAmB,CAAC;IAwB1D,OAAO,CAAC,oBAAoB;IAU5B,OAAO,CAAC,eAAe;IAcvB,OAAO,CAAC,uBAAuB;IAO/B,OAAO,CAAC,wBAAwB;IAahC,OAAO,CAAC,yBAAyB;IAa1B,YAAY,CAAC,KAAK,EAAE,UAAU,GAAG,IAAI;CAyC7C"}
|
|
@@ -6,12 +6,17 @@ class WasherService extends baseService_1.BaseService {
|
|
|
6
6
|
constructor(platform, accessory, componentId, capabilities, multiServiceAccessory, name, deviceStatus) {
|
|
7
7
|
super(platform, accessory, componentId, capabilities, multiServiceAccessory, name, deviceStatus);
|
|
8
8
|
this.cachedCompletionTime = null;
|
|
9
|
-
|
|
9
|
+
// Tracks the last InUse value so we only seed the countdown on the OFF->ON (cycle-start) transition.
|
|
10
|
+
this.lastInUse = null;
|
|
11
|
+
// Whether a non-zero RemainingDuration has been seeded for the current cycle (seed-once guard).
|
|
12
|
+
this.remainingSeeded = false;
|
|
10
13
|
this.setServiceType(platform.Service.Valve);
|
|
11
14
|
this.log.debug(`Adding WasherService to ${this.name}`);
|
|
12
15
|
// ValveType: GENERIC_VALVE so Apple Home shows it as a generic valve with countdown
|
|
13
16
|
this.service.getCharacteristic(platform.Characteristic.ValveType)
|
|
14
17
|
.updateValue(platform.Characteristic.ValveType.GENERIC_VALVE);
|
|
18
|
+
// IsConfigured: working valve/irrigation plugins set this; unconfigured valves don't render reliably
|
|
19
|
+
this.service.setCharacteristic(platform.Characteristic.IsConfigured, platform.Characteristic.IsConfigured.CONFIGURED);
|
|
15
20
|
// Active: machine is running or paused
|
|
16
21
|
this.service.getCharacteristic(platform.Characteristic.Active)
|
|
17
22
|
.onGet(this.getActive.bind(this))
|
|
@@ -19,21 +24,30 @@ class WasherService extends baseService_1.BaseService {
|
|
|
19
24
|
// InUse: washer job is actively working (wash/rinse/spin)
|
|
20
25
|
this.service.getCharacteristic(platform.Characteristic.InUse)
|
|
21
26
|
.onGet(this.getInUse.bind(this));
|
|
22
|
-
//
|
|
27
|
+
// SetDuration: read-only for an appliance, but Apple Home's countdown UI expects the
|
|
28
|
+
// SetDuration/RemainingDuration pair. onSet is a no-op (we can't change the wash cycle).
|
|
29
|
+
this.service.getCharacteristic(platform.Characteristic.SetDuration)
|
|
30
|
+
.setProps({ maxValue: 14400 })
|
|
31
|
+
.onGet(this.getRemainingDuration.bind(this))
|
|
32
|
+
.onSet(this.setDuration.bind(this));
|
|
33
|
+
// RemainingDuration: seeded ONCE at cycle start; Apple Home then decrements it client-side.
|
|
23
34
|
this.service.getCharacteristic(platform.Characteristic.RemainingDuration)
|
|
24
35
|
.setProps({ maxValue: 14400 })
|
|
25
36
|
.onGet(this.getRemainingDuration.bind(this));
|
|
37
|
+
// Seed initial values so a stale cached value isn't shown after a restart (matches reference plugins).
|
|
38
|
+
this.service.updateCharacteristic(platform.Characteristic.RemainingDuration, 0);
|
|
39
|
+
this.service.updateCharacteristic(platform.Characteristic.SetDuration, 0);
|
|
26
40
|
// Poll using switch/light interval (appliances change state infrequently)
|
|
27
41
|
let pollSeconds = 10;
|
|
28
42
|
if (this.platform.config.PollSwitchesAndLightsSeconds !== undefined) {
|
|
29
43
|
pollSeconds = this.platform.config.PollSwitchesAndLightsSeconds;
|
|
30
44
|
}
|
|
31
45
|
if (pollSeconds > 0) {
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
// RemainingDuration
|
|
35
|
-
//
|
|
36
|
-
multiServiceAccessory.startPollingState(pollSeconds, this.
|
|
46
|
+
// Single consolidated poll: pollValveState pushes InUse and (only on the cycle-start transition)
|
|
47
|
+
// seeds SetDuration/RemainingDuration, then returns Active for startPollingState to push.
|
|
48
|
+
// RemainingDuration is deliberately NOT re-pushed every poll - doing so resets Apple Home's
|
|
49
|
+
// client-side countdown and leaves the tile stuck on "Waiting".
|
|
50
|
+
multiServiceAccessory.startPollingState(pollSeconds, this.pollValveState.bind(this), this.service, platform.Characteristic.Active);
|
|
37
51
|
}
|
|
38
52
|
// Optional Contact Sensor for Activity Notifications
|
|
39
53
|
if (this.platform.config.ExposeContactSensorForWashers) {
|
|
@@ -51,6 +65,77 @@ class WasherService extends baseService_1.BaseService {
|
|
|
51
65
|
async setActive(value) {
|
|
52
66
|
this.log.debug(`WasherService setActive(${value}) ignored for ${this.name} (read-only)`);
|
|
53
67
|
}
|
|
68
|
+
// No-op setter for SetDuration (read-only appliance; we can't change the wash cycle length)
|
|
69
|
+
async setDuration(value) {
|
|
70
|
+
this.log.debug(`WasherService setDuration(${value}) ignored for ${this.name} (read-only)`);
|
|
71
|
+
}
|
|
72
|
+
// Consolidated poll: reads status once, pushes InUse, seeds the countdown on the cycle-start
|
|
73
|
+
// transition only, and returns Active (pushed by startPollingState).
|
|
74
|
+
async pollValveState() {
|
|
75
|
+
var _a, _b;
|
|
76
|
+
const success = await this.getStatus();
|
|
77
|
+
if (!success) {
|
|
78
|
+
throw new this.platform.api.hap.HapStatusError(-70402 /* this.platform.api.hap.HAPStatus.SERVICE_COMMUNICATION_FAILURE */);
|
|
79
|
+
}
|
|
80
|
+
const operatingState = this.deviceStatus.status.washerOperatingState;
|
|
81
|
+
if (!operatingState || !operatingState.machineState || !operatingState.washerJobState) {
|
|
82
|
+
this.log.error(`Missing washerOperatingState from ${this.name}`);
|
|
83
|
+
throw new this.platform.api.hap.HapStatusError(-70402 /* this.platform.api.hap.HAPStatus.SERVICE_COMMUNICATION_FAILURE */);
|
|
84
|
+
}
|
|
85
|
+
const machineState = operatingState.machineState.value;
|
|
86
|
+
const jobState = operatingState.washerJobState.value;
|
|
87
|
+
this.log.debug(`Washer machineState=${machineState} jobState=${jobState} for ${this.name}`);
|
|
88
|
+
// Refresh the cached completion time from the current status (or the samsungce fallback).
|
|
89
|
+
const completionTime = (_a = operatingState.completionTime) === null || _a === void 0 ? void 0 : _a.value;
|
|
90
|
+
if (completionTime) {
|
|
91
|
+
this.cachedCompletionTime = completionTime;
|
|
92
|
+
}
|
|
93
|
+
else {
|
|
94
|
+
this.tryRemainingTimeFallback();
|
|
95
|
+
}
|
|
96
|
+
const active = this.machineStateToActive(machineState);
|
|
97
|
+
let inUse = this.jobStateToInUse(jobState);
|
|
98
|
+
// A stopped/off machine can't be "in use", even if the device leaves jobState stale at end of cycle.
|
|
99
|
+
if (active === this.platform.Characteristic.Active.INACTIVE) {
|
|
100
|
+
inUse = this.platform.Characteristic.InUse.NOT_IN_USE;
|
|
101
|
+
}
|
|
102
|
+
this.service.updateCharacteristic(this.platform.Characteristic.InUse, inUse);
|
|
103
|
+
(_b = this.contactSensorService) === null || _b === void 0 ? void 0 : _b.updateCharacteristic(this.platform.Characteristic.ContactSensorState, inUse === this.platform.Characteristic.InUse.IN_USE
|
|
104
|
+
? this.platform.Characteristic.ContactSensorState.CONTACT_NOT_DETECTED
|
|
105
|
+
: this.platform.Characteristic.ContactSensorState.CONTACT_DETECTED);
|
|
106
|
+
this.applyInUseTransition(inUse);
|
|
107
|
+
return active;
|
|
108
|
+
}
|
|
109
|
+
// Seed the countdown ONCE per cycle, clear it on ON->OFF. While running, only (re)seeds if it
|
|
110
|
+
// hasn't been seeded yet - e.g. when completionTime becomes available a poll after the cycle started.
|
|
111
|
+
applyInUseTransition(inUse) {
|
|
112
|
+
const IN_USE = this.platform.Characteristic.InUse.IN_USE;
|
|
113
|
+
const wasInUse = this.lastInUse === IN_USE;
|
|
114
|
+
const nowInUse = inUse === IN_USE;
|
|
115
|
+
if (nowInUse && (!wasInUse || !this.remainingSeeded)) {
|
|
116
|
+
this.seedRemainingDuration();
|
|
117
|
+
}
|
|
118
|
+
else if (!nowInUse && wasInUse) {
|
|
119
|
+
this.service.updateCharacteristic(this.platform.Characteristic.RemainingDuration, 0);
|
|
120
|
+
this.remainingSeeded = false;
|
|
121
|
+
this.log.debug(`Washer cycle ended for ${this.name}: RemainingDuration 0`);
|
|
122
|
+
}
|
|
123
|
+
this.lastInUse = inUse;
|
|
124
|
+
}
|
|
125
|
+
// Pushes SetDuration/RemainingDuration once. If completionTime isn't available yet (seconds == 0)
|
|
126
|
+
// it leaves remainingSeeded false so a later poll/event retries the seed.
|
|
127
|
+
seedRemainingDuration() {
|
|
128
|
+
const secs = this.calculateRemainingSeconds();
|
|
129
|
+
if (secs > 0) {
|
|
130
|
+
this.service.updateCharacteristic(this.platform.Characteristic.SetDuration, secs);
|
|
131
|
+
this.service.updateCharacteristic(this.platform.Characteristic.RemainingDuration, secs);
|
|
132
|
+
this.remainingSeeded = true;
|
|
133
|
+
this.log.debug(`Washer countdown seeded for ${this.name}: ${secs}s`);
|
|
134
|
+
}
|
|
135
|
+
else {
|
|
136
|
+
this.log.debug(`Washer in use but no completionTime yet for ${this.name}; will retry`);
|
|
137
|
+
}
|
|
138
|
+
}
|
|
54
139
|
async getActive() {
|
|
55
140
|
return new Promise((resolve, reject) => {
|
|
56
141
|
this.getStatus().then(success => {
|
|
@@ -107,33 +192,31 @@ class WasherService extends baseService_1.BaseService {
|
|
|
107
192
|
});
|
|
108
193
|
});
|
|
109
194
|
}
|
|
195
|
+
// onGet for RemainingDuration / SetDuration. Serves Home app re-reads (e.g. when the app is
|
|
196
|
+
// reopened) by computing the live remaining seconds from completionTime; it does not push.
|
|
110
197
|
async getRemainingDuration() {
|
|
111
|
-
return new Promise((resolve
|
|
198
|
+
return new Promise((resolve) => {
|
|
112
199
|
this.getStatus().then(success => {
|
|
113
200
|
var _a;
|
|
114
201
|
if (!success) {
|
|
115
|
-
|
|
202
|
+
resolve(this.calculateRemainingSeconds());
|
|
116
203
|
return;
|
|
117
204
|
}
|
|
118
205
|
try {
|
|
119
|
-
// completionTime is an attribute of washerOperatingState, not a separate capability
|
|
120
206
|
const completionTime = (_a = this.deviceStatus.status.washerOperatingState.completionTime) === null || _a === void 0 ? void 0 : _a.value;
|
|
121
207
|
if (completionTime) {
|
|
122
208
|
this.cachedCompletionTime = completionTime;
|
|
123
|
-
this.startCountdownTimer();
|
|
124
209
|
}
|
|
125
210
|
else {
|
|
126
|
-
// Fallback: use samsungce.washerOperatingState.remainingTime (integer minutes)
|
|
127
211
|
this.tryRemainingTimeFallback();
|
|
128
212
|
}
|
|
129
|
-
const remainingSeconds = this.calculateRemainingSeconds();
|
|
130
|
-
this.log.debug(`Washer RemainingDuration for ${this.name}: ${remainingSeconds}s`);
|
|
131
|
-
resolve(remainingSeconds);
|
|
132
213
|
}
|
|
133
214
|
catch (error) {
|
|
134
215
|
this.log.debug(`No completionTime status available for ${this.name}`);
|
|
135
|
-
resolve(0);
|
|
136
216
|
}
|
|
217
|
+
const remainingSeconds = this.calculateRemainingSeconds();
|
|
218
|
+
this.log.debug(`Washer RemainingDuration for ${this.name}: ${remainingSeconds}s`);
|
|
219
|
+
resolve(remainingSeconds);
|
|
137
220
|
});
|
|
138
221
|
});
|
|
139
222
|
}
|
|
@@ -170,10 +253,9 @@ class WasherService extends baseService_1.BaseService {
|
|
|
170
253
|
try {
|
|
171
254
|
const remainingMin = (_b = (_a = this.deviceStatus.status['samsungce.washerOperatingState']) === null || _a === void 0 ? void 0 : _a.remainingTime) === null || _b === void 0 ? void 0 : _b.value;
|
|
172
255
|
if (typeof remainingMin === 'number' && remainingMin > 0) {
|
|
173
|
-
// Convert relative minutes to an absolute completion timestamp for the countdown
|
|
256
|
+
// Convert relative minutes to an absolute completion timestamp for the countdown.
|
|
174
257
|
this.cachedCompletionTime = new Date(Date.now() + remainingMin * 60 * 1000).toISOString();
|
|
175
258
|
this.log.debug(`Washer remainingTime fallback for ${this.name}: ${remainingMin} min`);
|
|
176
|
-
this.startCountdownTimer();
|
|
177
259
|
}
|
|
178
260
|
}
|
|
179
261
|
catch (_c) {
|
|
@@ -192,26 +274,6 @@ class WasherService extends baseService_1.BaseService {
|
|
|
192
274
|
const remaining = Math.max(0, Math.floor((parsed - Date.now()) / 1000));
|
|
193
275
|
return Math.min(remaining, 14400);
|
|
194
276
|
}
|
|
195
|
-
startCountdownTimer() {
|
|
196
|
-
this.stopCountdownTimer();
|
|
197
|
-
const remaining = this.calculateRemainingSeconds();
|
|
198
|
-
if (remaining <= 0) {
|
|
199
|
-
return;
|
|
200
|
-
}
|
|
201
|
-
this.countdownTimer = setInterval(() => {
|
|
202
|
-
const secs = this.calculateRemainingSeconds();
|
|
203
|
-
this.service.updateCharacteristic(this.platform.Characteristic.RemainingDuration, secs);
|
|
204
|
-
if (secs <= 0) {
|
|
205
|
-
this.stopCountdownTimer();
|
|
206
|
-
}
|
|
207
|
-
}, 60 * 1000);
|
|
208
|
-
}
|
|
209
|
-
stopCountdownTimer() {
|
|
210
|
-
if (this.countdownTimer) {
|
|
211
|
-
clearInterval(this.countdownTimer);
|
|
212
|
-
this.countdownTimer = null;
|
|
213
|
-
}
|
|
214
|
-
}
|
|
215
277
|
processEvent(event) {
|
|
216
278
|
var _a, _b;
|
|
217
279
|
if (event.capability === 'washerOperatingState') {
|
|
@@ -219,26 +281,33 @@ class WasherService extends baseService_1.BaseService {
|
|
|
219
281
|
this.log.debug(`Event updating washer machineState for ${this.name} to ${event.value}`);
|
|
220
282
|
const active = this.machineStateToActive(event.value);
|
|
221
283
|
this.service.updateCharacteristic(this.platform.Characteristic.Active, active);
|
|
222
|
-
// If machine stopped, clear
|
|
284
|
+
// If machine stopped, clear the cached completion time and set remaining to 0.
|
|
223
285
|
if (event.value === 'stop') {
|
|
224
286
|
this.cachedCompletionTime = null;
|
|
225
|
-
this.
|
|
287
|
+
this.lastInUse = this.platform.Characteristic.InUse.NOT_IN_USE;
|
|
288
|
+
this.remainingSeeded = false;
|
|
226
289
|
this.service.updateCharacteristic(this.platform.Characteristic.RemainingDuration, 0);
|
|
227
290
|
(_a = this.contactSensorService) === null || _a === void 0 ? void 0 : _a.updateCharacteristic(this.platform.Characteristic.ContactSensorState, this.platform.Characteristic.ContactSensorState.CONTACT_DETECTED);
|
|
228
291
|
}
|
|
229
292
|
}
|
|
230
293
|
else if (event.attribute === 'washerJobState') {
|
|
231
294
|
this.log.debug(`Event updating washer jobState for ${this.name} to ${event.value}`);
|
|
232
|
-
|
|
295
|
+
const inUse = this.jobStateToInUse(event.value);
|
|
296
|
+
this.service.updateCharacteristic(this.platform.Characteristic.InUse, inUse);
|
|
233
297
|
(_b = this.contactSensorService) === null || _b === void 0 ? void 0 : _b.updateCharacteristic(this.platform.Characteristic.ContactSensorState, this.jobStateToContactSensor(event.value));
|
|
298
|
+
// Seed the countdown once on the cycle-start transition.
|
|
299
|
+
this.applyInUseTransition(inUse);
|
|
234
300
|
}
|
|
235
301
|
else if (event.attribute === 'completionTime') {
|
|
236
302
|
// completionTime is an attribute of washerOperatingState
|
|
237
303
|
this.log.debug(`Event updating washer completionTime for ${this.name} to ${event.value}`);
|
|
238
304
|
this.cachedCompletionTime = event.value;
|
|
239
|
-
|
|
240
|
-
this.
|
|
241
|
-
|
|
305
|
+
// Refresh RemainingDuration when a cycle is running (real change / late-arriving completionTime).
|
|
306
|
+
if (this.lastInUse === this.platform.Characteristic.InUse.IN_USE) {
|
|
307
|
+
const secs = this.calculateRemainingSeconds();
|
|
308
|
+
this.service.updateCharacteristic(this.platform.Characteristic.RemainingDuration, secs);
|
|
309
|
+
this.remainingSeeded = secs > 0;
|
|
310
|
+
}
|
|
242
311
|
}
|
|
243
312
|
}
|
|
244
313
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"washerService.js","sourceRoot":"","sources":["../../src/services/washerService.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"washerService.js","sourceRoot":"","sources":["../../src/services/washerService.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"private": false,
|
|
3
3
|
"displayName": "Homebridge Smartthings oAuth Plugin",
|
|
4
4
|
"name": "homebridge-smartthings-oauth",
|
|
5
|
-
"version": "1.0.66
|
|
5
|
+
"version": "1.0.66",
|
|
6
6
|
"description": "Connects SmartThings devices to Homebridge. Automatically discovers devices.",
|
|
7
7
|
"license": "Apache-2.0",
|
|
8
8
|
"repository": {
|