homebridge-econet-rheem 1.5.12-beta.0 → 1.5.12-beta.2
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 +2 -2
- package/dist/homebridge/platform.d.ts +3 -2
- package/dist/homebridge/platform.js +11 -11
- package/dist/homebridge/platform.js.map +1 -1
- package/dist/homebridge/thermostatAccessory.js +4 -1
- package/dist/homebridge/thermostatAccessory.js.map +1 -1
- package/dist/homebridge/waterHeaterAccessory.js +3 -1
- package/dist/homebridge/waterHeaterAccessory.js.map +1 -1
- package/dist/lang/en.d.ts +1 -3
- package/dist/lang/en.js +1 -3
- package/dist/lang/en.js.map +1 -1
- package/dist/model/api.d.ts +11 -9
- package/dist/model/api.js +99 -108
- package/dist/model/api.js.map +1 -1
- package/dist/model/auth.js +3 -4
- package/dist/model/auth.js.map +1 -1
- package/dist/model/equipment.d.ts +6 -1
- package/dist/model/equipment.js +14 -8
- package/dist/model/equipment.js.map +1 -1
- package/dist/model/recoverySimulator.d.ts +2 -3
- package/dist/model/recoverySimulator.js +10 -10
- package/dist/model/recoverySimulator.js.map +1 -1
- package/dist/model/thermostat.js +42 -34
- package/dist/model/thermostat.js.map +1 -1
- package/dist/model/types.d.ts +33 -32
- package/dist/model/types.js +15 -4
- package/dist/model/types.js.map +1 -1
- package/dist/model/waterHeater.d.ts +1 -1
- package/dist/model/waterHeater.js +25 -21
- package/dist/model/waterHeater.js.map +1 -1
- package/dist/tools/log.d.ts +16 -0
- package/dist/tools/log.js +44 -0
- package/dist/tools/log.js.map +1 -0
- package/dist/tools/storage.d.ts +3 -0
- package/dist/tools/storage.js +3 -0
- package/dist/tools/storage.js.map +1 -1
- package/package.json +1 -1
package/dist/model/thermostat.js
CHANGED
|
@@ -1,7 +1,12 @@
|
|
|
1
1
|
import { EquipmentType, ThermostatOperationMode } from './constants.js';
|
|
2
2
|
import { Equipment } from './equipment.js';
|
|
3
|
-
import strings from '../lang/en.js';
|
|
4
3
|
import { getValue } from './types.js';
|
|
4
|
+
import strings from '../lang/en.js';
|
|
5
|
+
import { fromCelsius } from '../tools/temperature.js';
|
|
6
|
+
const DEFAULT_HUMIDITY = 50;
|
|
7
|
+
const DEFAULT_LOWER_LIMIT = 10;
|
|
8
|
+
const DEFAULT_UPPER_LIMIT = 30;
|
|
9
|
+
const DEFAULT_SETPOINT = 20;
|
|
5
10
|
export class Thermostat extends Equipment {
|
|
6
11
|
current_humidity = 0;
|
|
7
12
|
current_temp = 0;
|
|
@@ -16,17 +21,20 @@ export class Thermostat extends Equipment {
|
|
|
16
21
|
current_mode = ThermostatOperationMode.UNKNOWN;
|
|
17
22
|
constructor(api, data) {
|
|
18
23
|
super(api, data);
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
this.
|
|
23
|
-
this.
|
|
24
|
-
this.
|
|
25
|
-
this.
|
|
26
|
-
this.
|
|
27
|
-
this.
|
|
28
|
-
this.
|
|
29
|
-
|
|
24
|
+
const defaultLowerLimit = fromCelsius(DEFAULT_LOWER_LIMIT, this.units);
|
|
25
|
+
const defaultUpperLimit = fromCelsius(DEFAULT_UPPER_LIMIT, this.units);
|
|
26
|
+
const defaultSetpoint = fromCelsius(DEFAULT_SETPOINT, this.units);
|
|
27
|
+
this.running = data['@RUNNINGSTATUS'] ? data['@RUNNINGSTATUS']?.replace(/\s/g, '').length > 0 : false;
|
|
28
|
+
this.current_humidity = data['@HUMIDITY']?.value ?? DEFAULT_HUMIDITY;
|
|
29
|
+
this.current_temp = data['@SETPOINT']?.value ?? defaultSetpoint;
|
|
30
|
+
this.cool_lower_limit = data['@COOLSETPOINT']?.constraints.lowerLimit ?? defaultLowerLimit;
|
|
31
|
+
this.cool_upper_limit = data['@COOLSETPOINT']?.constraints.upperLimit ?? defaultUpperLimit;
|
|
32
|
+
this.cool_set_point = data['@COOLSETPOINT']?.value ?? defaultSetpoint;
|
|
33
|
+
this.heat_lower_limit = data['@HEATSETPOINT']?.constraints.lowerLimit ?? defaultLowerLimit;
|
|
34
|
+
this.heat_upper_limit = data['@HEATSETPOINT']?.constraints.upperLimit ?? defaultUpperLimit;
|
|
35
|
+
this.heat_set_point = data['@HEATSETPOINT']?.value ?? defaultSetpoint;
|
|
36
|
+
this.dead_band = data['@DEADBAND']?.value ?? 0;
|
|
37
|
+
const text_modes = data['@MODE']?.constraints?.enumText ?? [];
|
|
30
38
|
this.modes.clear();
|
|
31
39
|
if (text_modes) {
|
|
32
40
|
text_modes.forEach((textMode, index) => {
|
|
@@ -36,7 +44,7 @@ export class Thermostat extends Equipment {
|
|
|
36
44
|
}
|
|
37
45
|
});
|
|
38
46
|
}
|
|
39
|
-
this.current_mode = this.modes.get(data['@MODE']
|
|
47
|
+
this.current_mode = this.modes.get(data['@MODE']?.value ?? -1) ?? ThermostatOperationMode.UNKNOWN;
|
|
40
48
|
this.didUpdate();
|
|
41
49
|
}
|
|
42
50
|
get type() {
|
|
@@ -68,30 +76,30 @@ export class Thermostat extends Equipment {
|
|
|
68
76
|
}
|
|
69
77
|
updateFromMQTT(data) {
|
|
70
78
|
super.updateFromMQTT(data);
|
|
71
|
-
if (data['@HUMIDITY']) {
|
|
79
|
+
if (data['@HUMIDITY'] !== undefined) {
|
|
72
80
|
this.current_humidity = data['@HUMIDITY'];
|
|
73
|
-
this.
|
|
81
|
+
this.log.ifVerbose(strings.humidityState, this.deviceName, this.current_humidity);
|
|
74
82
|
}
|
|
75
|
-
if (data['@SETPOINT']) {
|
|
83
|
+
if (data['@SETPOINT'] !== undefined) {
|
|
76
84
|
this.current_temp = data['@SETPOINT'];
|
|
77
|
-
this.
|
|
85
|
+
this.log.ifVerbose(strings.currentTempState, this.deviceName, this.current_temp);
|
|
78
86
|
}
|
|
79
|
-
if (data['@COOLSETPOINT']) {
|
|
87
|
+
if (data['@COOLSETPOINT'] !== undefined) {
|
|
80
88
|
this.cool_set_point = data['@COOLSETPOINT'];
|
|
81
|
-
this.
|
|
89
|
+
this.log.ifVerbose(strings.coolSetpoint, this.deviceName, this.cool_set_point);
|
|
82
90
|
}
|
|
83
|
-
if (data['@HEATSETPOINT']) {
|
|
91
|
+
if (data['@HEATSETPOINT'] !== undefined) {
|
|
84
92
|
this.heat_set_point = data['@HEATSETPOINT'];
|
|
85
|
-
this.
|
|
93
|
+
this.log.ifVerbose(strings.heatSetpoint, this.deviceName, this.heat_set_point);
|
|
86
94
|
}
|
|
87
|
-
if (data['@MODE']) {
|
|
95
|
+
if (data['@MODE'] !== undefined) {
|
|
88
96
|
const modeIndex = getValue(data['@MODE']);
|
|
89
97
|
this.current_mode = this.modes.get(modeIndex) ?? ThermostatOperationMode.UNKNOWN;
|
|
90
|
-
this.
|
|
98
|
+
this.log.ifVerbose(strings.modeState, this.deviceName, this._stringFromMode(this.current_mode) ?? 'UNKNOWN');
|
|
91
99
|
}
|
|
92
|
-
if (data['@RUNNINGSTATUS']) {
|
|
100
|
+
if (data['@RUNNINGSTATUS'] !== undefined) {
|
|
93
101
|
this.running = data['@RUNNINGSTATUS'].replace(/\s/g, '').length > 0;
|
|
94
|
-
this.
|
|
102
|
+
this.log.ifVerbose(strings.runningState, this.deviceName, this.running);
|
|
95
103
|
}
|
|
96
104
|
this.didUpdate();
|
|
97
105
|
}
|
|
@@ -111,7 +119,7 @@ export class Thermostat extends Equipment {
|
|
|
111
119
|
case 'EMERGENCYHEAT':
|
|
112
120
|
return ThermostatOperationMode.EMERGENCY_HEAT;
|
|
113
121
|
default:
|
|
114
|
-
this.
|
|
122
|
+
this.log.error(strings.unknownMode, strValue);
|
|
115
123
|
return ThermostatOperationMode.UNKNOWN;
|
|
116
124
|
}
|
|
117
125
|
}
|
|
@@ -141,10 +149,10 @@ export class Thermostat extends Equipment {
|
|
|
141
149
|
}
|
|
142
150
|
}
|
|
143
151
|
if (Object.keys(payload).length > 0) {
|
|
144
|
-
this.
|
|
152
|
+
this.publish(payload, this.deviceId, this.serialNumber);
|
|
145
153
|
}
|
|
146
154
|
else {
|
|
147
|
-
this.
|
|
155
|
+
this.log.error(strings.unknownMode, mode);
|
|
148
156
|
}
|
|
149
157
|
}
|
|
150
158
|
setSetPoint(targetTemp, targetTempCool, targetTempHeat) {
|
|
@@ -157,7 +165,7 @@ export class Thermostat extends Equipment {
|
|
|
157
165
|
coolPayload['@COOLSETPOINT'] = temp;
|
|
158
166
|
}
|
|
159
167
|
else {
|
|
160
|
-
this.
|
|
168
|
+
this.log.error(strings.outOfRangeCool, lower, upper, temp);
|
|
161
169
|
}
|
|
162
170
|
}
|
|
163
171
|
if (targetTempHeat || (targetTemp && [ThermostatOperationMode.HEATING, ThermostatOperationMode.EMERGENCY_HEAT].includes(this.mode))) {
|
|
@@ -167,16 +175,16 @@ export class Thermostat extends Equipment {
|
|
|
167
175
|
heatPayload['@HEATSETPOINT'] = temp;
|
|
168
176
|
}
|
|
169
177
|
else {
|
|
170
|
-
this.
|
|
178
|
+
this.log.error(strings.outOfRangeHeat, lower, upper, temp);
|
|
171
179
|
}
|
|
172
180
|
}
|
|
173
181
|
let hasSetTemp = false;
|
|
174
182
|
if (coolPayload && [ThermostatOperationMode.AUTO, ThermostatOperationMode.COOLING].includes(this.mode)) {
|
|
175
|
-
this.
|
|
183
|
+
this.publish(coolPayload, this.deviceId, this.serialNumber);
|
|
176
184
|
hasSetTemp = true;
|
|
177
185
|
}
|
|
178
186
|
if (heatPayload && [ThermostatOperationMode.AUTO, ThermostatOperationMode.HEATING, ThermostatOperationMode.EMERGENCY_HEAT].includes(this.mode)) {
|
|
179
|
-
this.
|
|
187
|
+
this.publish(heatPayload, this.deviceId, this.serialNumber);
|
|
180
188
|
hasSetTemp = true;
|
|
181
189
|
}
|
|
182
190
|
if (targetTemp && !hasSetTemp) {
|
|
@@ -188,10 +196,10 @@ export class Thermostat extends Equipment {
|
|
|
188
196
|
payload = heatPayload;
|
|
189
197
|
}
|
|
190
198
|
else {
|
|
191
|
-
this.
|
|
199
|
+
this.log.error(strings.setpointUnknown, this.mode);
|
|
192
200
|
}
|
|
193
201
|
if (Object.keys(payload).length > 0) {
|
|
194
|
-
this.
|
|
202
|
+
this.publish(payload, this.deviceId, this.serialNumber);
|
|
195
203
|
}
|
|
196
204
|
}
|
|
197
205
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"thermostat.js","sourceRoot":"","sources":["../../src/model/thermostat.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,uBAAuB,EAAE,MAAM,gBAAgB,CAAC;AACxE,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"thermostat.js","sourceRoot":"","sources":["../../src/model/thermostat.ts"],"names":[],"mappings":"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"}
|
package/dist/model/types.d.ts
CHANGED
|
@@ -22,24 +22,25 @@ export type Setpoint = {
|
|
|
22
22
|
value: number;
|
|
23
23
|
};
|
|
24
24
|
export type SetpointConstraints = {
|
|
25
|
-
lowerLimit
|
|
26
|
-
upperLimit
|
|
27
|
-
units
|
|
25
|
+
lowerLimit?: number;
|
|
26
|
+
upperLimit?: number;
|
|
27
|
+
units?: string;
|
|
28
28
|
};
|
|
29
29
|
export type ModeConstraints = {
|
|
30
|
-
enumText
|
|
30
|
+
enumText?: string[];
|
|
31
31
|
};
|
|
32
32
|
export type Mode = {
|
|
33
|
-
constraints
|
|
34
|
-
value
|
|
33
|
+
constraints?: ModeConstraints;
|
|
34
|
+
value?: ThermostatOperationMode;
|
|
35
35
|
};
|
|
36
36
|
export type EquipmentData = {
|
|
37
|
-
device_type
|
|
38
|
-
device_name
|
|
39
|
-
serial_number
|
|
40
|
-
'@NAME'
|
|
41
|
-
'@ALERTCOUNT'
|
|
42
|
-
'@SETPOINT'
|
|
37
|
+
device_type?: string;
|
|
38
|
+
device_name?: string;
|
|
39
|
+
serial_number?: string;
|
|
40
|
+
'@NAME'?: StringValue;
|
|
41
|
+
'@ALERTCOUNT'?: number;
|
|
42
|
+
'@SETPOINT'?: Setpoint;
|
|
43
|
+
zoning_devices?: EquipmentData[];
|
|
43
44
|
};
|
|
44
45
|
export type LocationData = {
|
|
45
46
|
equiptments: EquipmentData[];
|
|
@@ -50,32 +51,32 @@ export type LocationsResponse = {
|
|
|
50
51
|
};
|
|
51
52
|
};
|
|
52
53
|
export type ThermostatData = {
|
|
53
|
-
'@HUMIDITY'
|
|
54
|
-
'@SETPOINT'
|
|
55
|
-
'@COOLSETPOINT'
|
|
56
|
-
'@HEATSETPOINT'
|
|
57
|
-
'@DEADBAND'
|
|
58
|
-
'@MODE'
|
|
59
|
-
'@RUNNINGSTATUS'
|
|
54
|
+
'@HUMIDITY'?: NumberValue;
|
|
55
|
+
'@SETPOINT'?: NumberValue;
|
|
56
|
+
'@COOLSETPOINT'?: Setpoint;
|
|
57
|
+
'@HEATSETPOINT'?: Setpoint;
|
|
58
|
+
'@DEADBAND'?: NumberValue;
|
|
59
|
+
'@MODE'?: Mode;
|
|
60
|
+
'@RUNNINGSTATUS'?: string;
|
|
60
61
|
};
|
|
61
62
|
export type WaterHeaterData = {
|
|
62
|
-
'@RUNNING'
|
|
63
|
-
'@ENABLED'
|
|
64
|
-
'@SETPOINT'
|
|
65
|
-
'@HOTWATER'
|
|
63
|
+
'@RUNNING'?: string;
|
|
64
|
+
'@ENABLED'?: NumberValue;
|
|
65
|
+
'@SETPOINT'?: Setpoint;
|
|
66
|
+
'@HOTWATER'?: string;
|
|
66
67
|
};
|
|
67
68
|
export type MQTTData = {
|
|
68
|
-
serial_number
|
|
69
|
+
serial_number?: string;
|
|
69
70
|
'@ALERTCOUNT'?: number;
|
|
70
71
|
'@ENABLED'?: ValueOrObject<number>;
|
|
71
|
-
'@SETPOINT'
|
|
72
|
-
'@HOTWATER'
|
|
73
|
-
'@RUNNING'
|
|
74
|
-
'@RUNNINGSTATUS'
|
|
75
|
-
'@HUMIDITY'
|
|
76
|
-
'@COOLSETPOINT'
|
|
77
|
-
'@HEATSETPOINT'
|
|
78
|
-
'@MODE'
|
|
72
|
+
'@SETPOINT'?: number;
|
|
73
|
+
'@HOTWATER'?: string;
|
|
74
|
+
'@RUNNING'?: string;
|
|
75
|
+
'@RUNNINGSTATUS'?: string;
|
|
76
|
+
'@HUMIDITY'?: number;
|
|
77
|
+
'@COOLSETPOINT'?: number;
|
|
78
|
+
'@HEATSETPOINT'?: number;
|
|
79
|
+
'@MODE'?: NumberValue;
|
|
79
80
|
};
|
|
80
81
|
export interface MQTTError extends Error {
|
|
81
82
|
code?: string | number;
|
package/dist/model/types.js
CHANGED
|
@@ -1,8 +1,19 @@
|
|
|
1
1
|
export const SENSITIVE_KEYS = [
|
|
2
|
-
'
|
|
3
|
-
'
|
|
4
|
-
'
|
|
5
|
-
'
|
|
2
|
+
'address',
|
|
3
|
+
'coordinates',
|
|
4
|
+
'email',
|
|
5
|
+
'last_name',
|
|
6
|
+
'loc',
|
|
7
|
+
'mac_address',
|
|
8
|
+
'macAddress',
|
|
9
|
+
'name',
|
|
10
|
+
'phone_number',
|
|
11
|
+
'serial_number',
|
|
12
|
+
'serialNumber',
|
|
13
|
+
'street',
|
|
14
|
+
'user_id',
|
|
15
|
+
'user_token',
|
|
16
|
+
'zipcode',
|
|
6
17
|
];
|
|
7
18
|
export function getValue(input) {
|
|
8
19
|
return typeof input === 'object' && input !== null && 'value' in input
|
package/dist/model/types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/model/types.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,cAAc,GAAG;IAC5B,SAAS,
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/model/types.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,cAAc,GAAG;IAC5B,SAAS;IACT,aAAa;IACb,OAAO;IACP,WAAW;IACX,KAAK;IACL,aAAa;IACb,YAAY;IACZ,MAAM;IACN,cAAc;IACd,eAAe;IACf,cAAc;IACd,QAAQ;IACR,SAAS;IACT,YAAY;IACZ,SAAS;CACV,CAAC;AAIF,MAAM,UAAU,QAAQ,CAAI,KAAuB;IACjD,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO,IAAI,KAAK;QACpE,CAAC,CAAC,KAAK,CAAC,KAAK;QACb,CAAC,CAAE,KAAW,CAAC;AACnB,CAAC"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { EconetApi } from './api.js';
|
|
2
|
+
import { EquipmentType } from './constants.js';
|
|
2
3
|
import { Equipment } from './equipment.js';
|
|
3
4
|
import { MQTTData, WaterHeaterData } from './types.js';
|
|
4
|
-
import { EquipmentType } from './constants.js';
|
|
5
5
|
export declare class WaterHeater extends Equipment {
|
|
6
6
|
readonly storageFilePath: string;
|
|
7
7
|
private enabled;
|
|
@@ -1,25 +1,29 @@
|
|
|
1
|
+
import { EquipmentType } from './constants.js';
|
|
1
2
|
import { Equipment } from './equipment.js';
|
|
2
3
|
import { RecoverySimulator } from './recoverySimulator.js';
|
|
3
|
-
import strings from '../lang/en.js';
|
|
4
4
|
import { getValue } from './types.js';
|
|
5
|
-
import
|
|
5
|
+
import strings from '../lang/en.js';
|
|
6
|
+
import { fromCelsius } from '../tools/temperature.js';
|
|
7
|
+
const DEFAULT_LOWER_LIMIT = 35;
|
|
8
|
+
const DEFAULT_UPPER_LIMIT = 65;
|
|
9
|
+
const DEFAULT_SETPOINT = 50;
|
|
6
10
|
export class WaterHeater extends Equipment {
|
|
7
11
|
storageFilePath;
|
|
8
12
|
enabled = true;
|
|
9
|
-
lower_limit =
|
|
10
|
-
upper_limit =
|
|
13
|
+
lower_limit = 0;
|
|
14
|
+
upper_limit = 0;
|
|
11
15
|
set_point = 0;
|
|
12
16
|
availability_icon = null;
|
|
13
17
|
recoverySimulator = null;
|
|
14
18
|
constructor(api, data, storageFilePath) {
|
|
15
19
|
super(api, data);
|
|
16
20
|
this.storageFilePath = storageFilePath;
|
|
17
|
-
this.running = data['@RUNNING']
|
|
18
|
-
this.enabled = data['@ENABLED']
|
|
19
|
-
this.lower_limit = data['@SETPOINT']
|
|
20
|
-
this.upper_limit = data['@SETPOINT']
|
|
21
|
-
this.set_point = data['@SETPOINT'].
|
|
22
|
-
this.availability_icon = data['@HOTWATER'];
|
|
21
|
+
this.running = data['@RUNNING'] ? data['@RUNNING']?.replace(/\s/g, '').length > 0 : false;
|
|
22
|
+
this.enabled = data['@ENABLED']?.value === 1;
|
|
23
|
+
this.lower_limit = data['@SETPOINT']?.constraints.lowerLimit ?? fromCelsius(DEFAULT_LOWER_LIMIT, this.units);
|
|
24
|
+
this.upper_limit = data['@SETPOINT']?.constraints.upperLimit ?? fromCelsius(DEFAULT_UPPER_LIMIT, this.units);
|
|
25
|
+
this.set_point = data['@SETPOINT']?.value ?? fromCelsius(DEFAULT_SETPOINT, this.units);
|
|
26
|
+
this.availability_icon = data['@HOTWATER'] ?? '';
|
|
23
27
|
this.didUpdate();
|
|
24
28
|
}
|
|
25
29
|
get type() {
|
|
@@ -61,7 +65,7 @@ export class WaterHeater extends Equipment {
|
|
|
61
65
|
}
|
|
62
66
|
didUpdate() {
|
|
63
67
|
if (!this.recoverySimulator) {
|
|
64
|
-
this.recoverySimulator = new RecoverySimulator(this
|
|
68
|
+
this.recoverySimulator = new RecoverySimulator(this, () => {
|
|
65
69
|
super.didUpdate();
|
|
66
70
|
});
|
|
67
71
|
}
|
|
@@ -70,29 +74,29 @@ export class WaterHeater extends Equipment {
|
|
|
70
74
|
}
|
|
71
75
|
updateFromMQTT(data) {
|
|
72
76
|
super.updateFromMQTT(data);
|
|
73
|
-
if (data['@ENABLED']) {
|
|
77
|
+
if (data['@ENABLED'] !== undefined) {
|
|
74
78
|
this.enabled = getValue(data['@ENABLED']) === 1;
|
|
75
|
-
this.
|
|
79
|
+
this.log.ifVerbose(strings.enabledState, this.deviceName, this.enabled);
|
|
76
80
|
}
|
|
77
|
-
if (data['@SETPOINT']) {
|
|
81
|
+
if (data['@SETPOINT'] !== undefined) {
|
|
78
82
|
this.set_point = data['@SETPOINT'];
|
|
79
|
-
this.
|
|
83
|
+
this.log.ifVerbose(strings.setpointState, this.deviceName, this.set_point);
|
|
80
84
|
}
|
|
81
|
-
if (data['@HOTWATER']) {
|
|
85
|
+
if (data['@HOTWATER'] !== undefined) {
|
|
82
86
|
this.availability_icon = data['@HOTWATER'];
|
|
83
|
-
this.
|
|
87
|
+
this.log.ifVerbose(strings.availabilityState, this.deviceName, this.availability_icon);
|
|
84
88
|
}
|
|
85
|
-
if (data['@RUNNING']) {
|
|
89
|
+
if (data['@RUNNING'] !== undefined) {
|
|
86
90
|
this.running = data['@RUNNING'].replace(/\s/g, '').length > 0;
|
|
87
|
-
this.
|
|
91
|
+
this.log.ifVerbose(strings.runningState, this.deviceName, this.running);
|
|
88
92
|
}
|
|
89
93
|
this.didUpdate();
|
|
90
94
|
}
|
|
91
95
|
setEnabled(enabled) {
|
|
92
|
-
this.
|
|
96
|
+
this.publish({ '@ENABLED': enabled ? 1 : 0 }, this.deviceId, this.serialNumber);
|
|
93
97
|
}
|
|
94
98
|
setSetPoint(setPoint) {
|
|
95
|
-
this.
|
|
99
|
+
this.publish({ '@SETPOINT': setPoint }, this.deviceId, this.serialNumber);
|
|
96
100
|
}
|
|
97
101
|
}
|
|
98
102
|
//# sourceMappingURL=waterHeater.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"waterHeater.js","sourceRoot":"","sources":["../../src/model/waterHeater.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"waterHeater.js","sourceRoot":"","sources":["../../src/model/waterHeater.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { Logger } from 'homebridge';
|
|
2
|
+
export declare enum LogType {
|
|
3
|
+
ALWAYS = 0,
|
|
4
|
+
WARNING = 1,
|
|
5
|
+
ERROR = 2
|
|
6
|
+
}
|
|
7
|
+
export declare class Log {
|
|
8
|
+
private readonly logger;
|
|
9
|
+
readonly verbose: boolean;
|
|
10
|
+
constructor(logger: Logger, verbose: boolean);
|
|
11
|
+
always(message: string, ...parameters: any[]): void;
|
|
12
|
+
warning(message: string, ...parameters: any[]): void;
|
|
13
|
+
error(message: string, ...parameters: any[]): void;
|
|
14
|
+
ifVerbose(message: string, ...parameters: any[]): void;
|
|
15
|
+
ifVerbose(level: LogType, message: string, ...parameters: any[]): void;
|
|
16
|
+
}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
export var LogType;
|
|
2
|
+
(function (LogType) {
|
|
3
|
+
LogType[LogType["ALWAYS"] = 0] = "ALWAYS";
|
|
4
|
+
LogType[LogType["WARNING"] = 1] = "WARNING";
|
|
5
|
+
LogType[LogType["ERROR"] = 2] = "ERROR";
|
|
6
|
+
})(LogType || (LogType = {}));
|
|
7
|
+
export class Log {
|
|
8
|
+
logger;
|
|
9
|
+
verbose;
|
|
10
|
+
constructor(logger, verbose) {
|
|
11
|
+
this.logger = logger;
|
|
12
|
+
this.verbose = verbose;
|
|
13
|
+
}
|
|
14
|
+
always(message, ...parameters) {
|
|
15
|
+
this.logger.info(message, ...parameters);
|
|
16
|
+
}
|
|
17
|
+
warning(message, ...parameters) {
|
|
18
|
+
this.logger.warn(message, ...parameters);
|
|
19
|
+
}
|
|
20
|
+
error(message, ...parameters) {
|
|
21
|
+
this.logger.error(message, ...parameters);
|
|
22
|
+
}
|
|
23
|
+
ifVerbose(levelOrMessage, messageOrParam, ...parameters) {
|
|
24
|
+
if (!this.verbose) {
|
|
25
|
+
return;
|
|
26
|
+
}
|
|
27
|
+
if (typeof levelOrMessage === 'string') {
|
|
28
|
+
this.always(levelOrMessage, messageOrParam, ...parameters);
|
|
29
|
+
return;
|
|
30
|
+
}
|
|
31
|
+
switch (levelOrMessage) {
|
|
32
|
+
case LogType.ALWAYS:
|
|
33
|
+
this.always(messageOrParam, ...parameters);
|
|
34
|
+
break;
|
|
35
|
+
case LogType.WARNING:
|
|
36
|
+
this.warning(messageOrParam, ...parameters);
|
|
37
|
+
break;
|
|
38
|
+
case LogType.ERROR:
|
|
39
|
+
this.error(messageOrParam, ...parameters);
|
|
40
|
+
break;
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
//# sourceMappingURL=log.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"log.js","sourceRoot":"","sources":["../../src/tools/log.ts"],"names":[],"mappings":"AAGA,MAAM,CAAN,IAAY,OAIX;AAJD,WAAY,OAAO;IACjB,yCAAM,CAAA;IACN,2CAAO,CAAA;IACP,uCAAK,CAAA;AACP,CAAC,EAJW,OAAO,KAAP,OAAO,QAIlB;AAED,MAAM,OAAO,GAAG;IAGK;IACD;IAFlB,YACmB,MAAc,EACf,OAAgB;QADf,WAAM,GAAN,MAAM,CAAQ;QACf,YAAO,GAAP,OAAO,CAAS;IAC/B,CAAC;IAEG,MAAM,CAAC,OAAe,EAAE,GAAG,UAAiB;QACjD,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,UAAU,CAAC,CAAC;IAC3C,CAAC;IAEM,OAAO,CAAC,OAAe,EAAE,GAAG,UAAiB;QAClD,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,UAAU,CAAC,CAAC;IAC3C,CAAC;IAEM,KAAK,CAAC,OAAe,EAAE,GAAG,UAAiB;QAChD,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,GAAG,UAAU,CAAC,CAAC;IAC5C,CAAC;IAIM,SAAS,CAAC,cAAgC,EAAE,cAA4B,EAAE,GAAG,UAAiB;QACnG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;YAElB,OAAO;QACT,CAAC;QAED,IAAI,OAAO,cAAc,KAAK,QAAQ,EAAE,CAAC;YACvC,IAAI,CAAC,MAAM,CAAC,cAAc,EAAE,cAAc,EAAE,GAAG,UAAU,CAAC,CAAC;YAC3D,OAAO;QACT,CAAC;QAED,QAAO,cAAc,EAAE,CAAC;YACxB,KAAK,OAAO,CAAC,MAAM;gBACjB,IAAI,CAAC,MAAM,CAAC,cAAc,EAAE,GAAG,UAAU,CAAC,CAAC;gBAC3C,MAAM;YACR,KAAK,OAAO,CAAC,OAAO;gBAClB,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE,GAAG,UAAU,CAAC,CAAC;gBAC5C,MAAM;YACR,KAAK,OAAO,CAAC,KAAK;gBAChB,IAAI,CAAC,KAAK,CAAC,cAAc,EAAE,GAAG,UAAU,CAAC,CAAC;gBAC1C,MAAM;QACR,CAAC;IACH,CAAC;CACF"}
|
package/dist/tools/storage.d.ts
CHANGED
|
@@ -1,3 +1,6 @@
|
|
|
1
1
|
export declare const STORAGE_FILE_NAME = "econetRheem.json";
|
|
2
|
+
export declare const STORAGE_KEY_AUTH = "auth";
|
|
3
|
+
export declare const STORAGE_KEY_MQTT = "mqtt";
|
|
4
|
+
export declare const STORAGE_KEY_RECOVERY_RATES = "rates";
|
|
2
5
|
export declare function safeGetItem(filePath: string, key: string): string | null;
|
|
3
6
|
export declare function safeSetItem(filePath: string, key: string, value: string): void;
|
package/dist/tools/storage.js
CHANGED
|
@@ -1,5 +1,8 @@
|
|
|
1
1
|
import fs from 'fs';
|
|
2
2
|
export const STORAGE_FILE_NAME = 'econetRheem.json';
|
|
3
|
+
export const STORAGE_KEY_AUTH = 'auth';
|
|
4
|
+
export const STORAGE_KEY_MQTT = 'mqtt';
|
|
5
|
+
export const STORAGE_KEY_RECOVERY_RATES = 'rates';
|
|
3
6
|
function readStorage(filePath) {
|
|
4
7
|
if (!fs.existsSync(filePath)) {
|
|
5
8
|
return {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"storage.js","sourceRoot":"","sources":["../../src/tools/storage.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,CAAC;AAEpB,MAAM,CAAC,MAAM,iBAAiB,GAAG,kBAAkB,CAAC;AAEpD,SAAS,WAAW,CAAC,QAAgB;IACnC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC7B,OAAO,EAAE,CAAC;IACZ,CAAC;IACD,MAAM,IAAI,GAAG,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IAChD,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AACD,SAAS,YAAY,CAAC,QAAgB,EAAE,OAA+B;IACrE,EAAE,CAAC,aAAa,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;AAC/D,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,QAAgB,EAAE,GAAW;IACvD,MAAM,OAAO,GAAG,WAAW,CAAC,QAAQ,CAAC,CAAC;IACtC,OAAO,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC;AAC9B,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,QAAgB,EAAE,GAAW,EAAE,KAAa;IACtE,MAAM,OAAO,GAAG,WAAW,CAAC,QAAQ,CAAC,CAAC;IACtC,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;IACrB,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;AAClC,CAAC"}
|
|
1
|
+
{"version":3,"file":"storage.js","sourceRoot":"","sources":["../../src/tools/storage.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,CAAC;AAEpB,MAAM,CAAC,MAAM,iBAAiB,GAAG,kBAAkB,CAAC;AAEpD,MAAM,CAAC,MAAM,gBAAgB,GAAG,MAAM,CAAC;AACvC,MAAM,CAAC,MAAM,gBAAgB,GAAG,MAAM,CAAC;AACvC,MAAM,CAAC,MAAM,0BAA0B,GAAG,OAAO,CAAC;AAElD,SAAS,WAAW,CAAC,QAAgB;IACnC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC7B,OAAO,EAAE,CAAC;IACZ,CAAC;IACD,MAAM,IAAI,GAAG,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IAChD,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AACD,SAAS,YAAY,CAAC,QAAgB,EAAE,OAA+B;IACrE,EAAE,CAAC,aAAa,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;AAC/D,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,QAAgB,EAAE,GAAW;IACvD,MAAM,OAAO,GAAG,WAAW,CAAC,QAAQ,CAAC,CAAC;IACtC,OAAO,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC;AAC9B,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,QAAgB,EAAE,GAAW,EAAE,KAAa;IACtE,MAAM,OAAO,GAAG,WAAW,CAAC,QAAQ,CAAC,CAAC;IACtC,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;IACrB,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;AAClC,CAAC"}
|
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.5.12-beta.
|
|
7
|
+
"version": "1.5.12-beta.2",
|
|
8
8
|
"homepage": "https://github.com/mpatfield/homebridge-econet-rheem#readme",
|
|
9
9
|
"repository": {
|
|
10
10
|
"type": "git",
|