homebridge-econet-rheem 1.4.7 → 1.4.8
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
CHANGED
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
"type": "string",
|
|
16
16
|
"format": "email",
|
|
17
17
|
"required": true,
|
|
18
|
-
"description": "Rheem/Econet account email"
|
|
18
|
+
"description": "Rheem/Econet account email (Homebridge dedicated account recommnded)"
|
|
19
19
|
},
|
|
20
20
|
"password": {
|
|
21
21
|
"title": "Password",
|
|
@@ -27,7 +27,7 @@
|
|
|
27
27
|
"title": "Disable Water Heater Temperature Simulator",
|
|
28
28
|
"type": "boolean",
|
|
29
29
|
"required": false,
|
|
30
|
-
"description": "See
|
|
30
|
+
"description": "See documentation for details"
|
|
31
31
|
},
|
|
32
32
|
"verbose": {
|
|
33
33
|
"title": "Verbose",
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import path from 'path';
|
|
2
2
|
import { fromCelsius, HOUR, MINUTE, safeGetItem, safeSetItem } from './utils.js';
|
|
3
|
-
const
|
|
3
|
+
const RECOVERY_FILE_NAME = 'econetWHRecoveryRates.json';
|
|
4
4
|
// in degrees Celsius per hour
|
|
5
5
|
const DEFAULT_RECOVERY_RATE = 20;
|
|
6
6
|
const MINIMUM_RECOVERY_RATE = 5;
|
|
@@ -26,7 +26,7 @@ export class RecoverySimulator {
|
|
|
26
26
|
this.setPoint = waterHeater.setPoint;
|
|
27
27
|
this.previousSetPoint = this.setPoint;
|
|
28
28
|
this.simulatedTemp = this.setPoint;
|
|
29
|
-
this.recoveryRatesFilePath = path.join(api.storagePath,
|
|
29
|
+
this.recoveryRatesFilePath = path.join(api.storagePath, RECOVERY_FILE_NAME);
|
|
30
30
|
const minRecoveryRate = fromCelsius(MINIMUM_RECOVERY_RATE, waterHeater.units);
|
|
31
31
|
const defaultRecoveryRate = fromCelsius(DEFAULT_RECOVERY_RATE, waterHeater.units);
|
|
32
32
|
this.recoveryRates = this._loadRecoveryRates()?.filter(x => x > minRecoveryRate) ?? [defaultRecoveryRate];
|
|
@@ -46,7 +46,12 @@ export class RecoverySimulator {
|
|
|
46
46
|
this.setPoint = waterHeater.setPoint;
|
|
47
47
|
}
|
|
48
48
|
this.availability = waterHeater.availability;
|
|
49
|
-
if (
|
|
49
|
+
if (waterHeater.isRunning && !this.isRecovering &&
|
|
50
|
+
(this.availability === 0 || this.setPoint > this.previousSetPoint)) {
|
|
51
|
+
this._startRecoveryTimer();
|
|
52
|
+
return;
|
|
53
|
+
}
|
|
54
|
+
if (!waterHeater.isRunning && this.availability === 0) {
|
|
50
55
|
this._stopRecoveryTimer();
|
|
51
56
|
this.onUpdate();
|
|
52
57
|
return;
|
|
@@ -57,18 +62,11 @@ export class RecoverySimulator {
|
|
|
57
62
|
this.onUpdate();
|
|
58
63
|
return;
|
|
59
64
|
}
|
|
60
|
-
if (waterHeater.isRunning && !this.isRecovering &&
|
|
61
|
-
(this.availability === 0 || this.setPoint > this.previousSetPoint)) {
|
|
62
|
-
this._startRecoveryTimer();
|
|
63
|
-
return;
|
|
64
|
-
}
|
|
65
65
|
if (!waterHeater.isRunning && this.isRecovering) {
|
|
66
66
|
if (this.simulatedTemp >= this.setPoint) {
|
|
67
|
-
this.
|
|
68
|
-
}
|
|
69
|
-
else {
|
|
70
|
-
this._stopRecoveryTimer();
|
|
67
|
+
this._recordRecoveryRate();
|
|
71
68
|
}
|
|
69
|
+
this._stopRecoveryTimer();
|
|
72
70
|
this.simulatedTemp = this.setPoint;
|
|
73
71
|
this.onUpdate();
|
|
74
72
|
return;
|
|
@@ -99,15 +97,8 @@ export class RecoverySimulator {
|
|
|
99
97
|
}
|
|
100
98
|
const tempIncrease = this.recoveryRate * (RECOVERY_TIMER_INTERVAL / HOUR);
|
|
101
99
|
this.simulatedTemp = Math.min(this.simulatedTemp + tempIncrease, this.setPoint);
|
|
102
|
-
if (this.simulatedTemp === this.setPoint) {
|
|
103
|
-
this._endRecovery();
|
|
104
|
-
}
|
|
105
100
|
this.onUpdate();
|
|
106
101
|
}
|
|
107
|
-
_endRecovery() {
|
|
108
|
-
this._recordRecoveryRate();
|
|
109
|
-
this._stopRecoveryTimer();
|
|
110
|
-
}
|
|
111
102
|
_recordRecoveryRate() {
|
|
112
103
|
if (!this.recoveryStartTime || !this.recoveryStartTemp) {
|
|
113
104
|
return;
|
|
@@ -130,13 +121,11 @@ export class RecoverySimulator {
|
|
|
130
121
|
this._saveRecoveryRates();
|
|
131
122
|
}
|
|
132
123
|
_loadRecoveryRates() {
|
|
133
|
-
const
|
|
134
|
-
const stored = safeGetItem(this.recoveryRatesFilePath, key);
|
|
124
|
+
const stored = safeGetItem(this.recoveryRatesFilePath, this.serialNumber);
|
|
135
125
|
return stored ? JSON.parse(stored) : null;
|
|
136
126
|
}
|
|
137
127
|
_saveRecoveryRates() {
|
|
138
|
-
|
|
139
|
-
safeSetItem(this.recoveryRatesFilePath, key, JSON.stringify(this.recoveryRates));
|
|
128
|
+
safeSetItem(this.recoveryRatesFilePath, this.serialNumber, JSON.stringify(this.recoveryRates));
|
|
140
129
|
}
|
|
141
130
|
}
|
|
142
131
|
//# 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,WAAW,EAAE,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAGjF,MAAM,
|
|
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.8",
|
|
8
8
|
"homepage": "https://github.com/mpatfield/homebridge-econet-rheem#readme",
|
|
9
9
|
"repository": {
|
|
10
10
|
"type": "git",
|