homebridge-econet-rheem 1.4.8 → 1.4.9
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.
|
@@ -4,6 +4,8 @@ export declare class RecoverySimulator {
|
|
|
4
4
|
private readonly api;
|
|
5
5
|
private readonly onUpdate;
|
|
6
6
|
private readonly recoveryRatesFilePath;
|
|
7
|
+
private readonly minRecoveryRate;
|
|
8
|
+
private readonly defaultRecoveryRate;
|
|
7
9
|
private recoveryRates;
|
|
8
10
|
private recoveryTimer;
|
|
9
11
|
private readonly serialNumber;
|
|
@@ -1,14 +1,18 @@
|
|
|
1
1
|
import path from 'path';
|
|
2
|
-
import {
|
|
2
|
+
import { HOUR, MINUTE, safeGetItem, safeSetItem } from './utils.js';
|
|
3
|
+
import { TemperatureUnits } from './enums.js';
|
|
4
|
+
const VERSION = 1;
|
|
3
5
|
const RECOVERY_FILE_NAME = 'econetWHRecoveryRates.json';
|
|
4
6
|
// in degrees Celsius per hour
|
|
5
7
|
const DEFAULT_RECOVERY_RATE = 20;
|
|
6
|
-
const MINIMUM_RECOVERY_RATE =
|
|
8
|
+
const MINIMUM_RECOVERY_RATE = 1;
|
|
7
9
|
const RECOVERY_TIMER_INTERVAL = 2 * MINUTE;
|
|
8
10
|
export class RecoverySimulator {
|
|
9
11
|
api;
|
|
10
12
|
onUpdate;
|
|
11
13
|
recoveryRatesFilePath;
|
|
14
|
+
minRecoveryRate;
|
|
15
|
+
defaultRecoveryRate;
|
|
12
16
|
recoveryRates;
|
|
13
17
|
recoveryTimer = null;
|
|
14
18
|
serialNumber;
|
|
@@ -27,9 +31,9 @@ export class RecoverySimulator {
|
|
|
27
31
|
this.previousSetPoint = this.setPoint;
|
|
28
32
|
this.simulatedTemp = this.setPoint;
|
|
29
33
|
this.recoveryRatesFilePath = path.join(api.storagePath, RECOVERY_FILE_NAME);
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
this.recoveryRates = this._loadRecoveryRates()
|
|
34
|
+
this.minRecoveryRate = MINIMUM_RECOVERY_RATE * (waterHeater.units === TemperatureUnits.FAHRENHEIT ? 1.8 : 1);
|
|
35
|
+
this.defaultRecoveryRate = DEFAULT_RECOVERY_RATE * (waterHeater.units === TemperatureUnits.FAHRENHEIT ? 1.8 : 1);
|
|
36
|
+
this.recoveryRates = this._loadRecoveryRates() ?? [this.defaultRecoveryRate];
|
|
33
37
|
}
|
|
34
38
|
currentTemp(inputTemp) {
|
|
35
39
|
if (this.availability === 0 && !this.isRecovering) {
|
|
@@ -111,21 +115,23 @@ export class RecoverySimulator {
|
|
|
111
115
|
return;
|
|
112
116
|
}
|
|
113
117
|
const rate = tempDifference / timeElapsed;
|
|
114
|
-
if (rate <
|
|
118
|
+
if (rate < this.minRecoveryRate) {
|
|
115
119
|
return;
|
|
116
120
|
}
|
|
117
121
|
this.recoveryRates.push(rate);
|
|
118
|
-
if (this.recoveryRates.length > 3) {
|
|
122
|
+
if (this.recoveryRates.length > 3 || (this.recoveryRates.length >= 2 && this.recoveryRates[0] === this.defaultRecoveryRate)) {
|
|
119
123
|
this.recoveryRates.shift();
|
|
120
124
|
}
|
|
121
125
|
this._saveRecoveryRates();
|
|
122
126
|
}
|
|
123
127
|
_loadRecoveryRates() {
|
|
124
|
-
const
|
|
128
|
+
const key = `${VERSION}_${this.serialNumber}`;
|
|
129
|
+
const stored = safeGetItem(this.recoveryRatesFilePath, key);
|
|
125
130
|
return stored ? JSON.parse(stored) : null;
|
|
126
131
|
}
|
|
127
132
|
_saveRecoveryRates() {
|
|
128
|
-
|
|
133
|
+
const key = `${VERSION}_${this.serialNumber}`;
|
|
134
|
+
safeSetItem(this.recoveryRatesFilePath, key, JSON.stringify(this.recoveryRates));
|
|
129
135
|
}
|
|
130
136
|
}
|
|
131
137
|
//# sourceMappingURL=recoverySimulator.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"recoverySimulator.js","sourceRoot":"","sources":["../../src/model/recoverySimulator.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAC;AAGxB,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"recoverySimulator.js","sourceRoot":"","sources":["../../src/model/recoverySimulator.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
"displayName": "Homebridge Econet Rheem",
|
|
5
5
|
"description": "Homebridge plugin based on pyeconet for control of Rheem water heaters",
|
|
6
6
|
"type": "module",
|
|
7
|
-
"version": "1.4.
|
|
7
|
+
"version": "1.4.9",
|
|
8
8
|
"homepage": "https://github.com/mpatfield/homebridge-econet-rheem#readme",
|
|
9
9
|
"repository": {
|
|
10
10
|
"type": "git",
|