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.
Files changed (37) hide show
  1. package/CHANGELOG.md +2 -2
  2. package/dist/homebridge/platform.d.ts +3 -2
  3. package/dist/homebridge/platform.js +11 -11
  4. package/dist/homebridge/platform.js.map +1 -1
  5. package/dist/homebridge/thermostatAccessory.js +4 -1
  6. package/dist/homebridge/thermostatAccessory.js.map +1 -1
  7. package/dist/homebridge/waterHeaterAccessory.js +3 -1
  8. package/dist/homebridge/waterHeaterAccessory.js.map +1 -1
  9. package/dist/lang/en.d.ts +1 -3
  10. package/dist/lang/en.js +1 -3
  11. package/dist/lang/en.js.map +1 -1
  12. package/dist/model/api.d.ts +11 -9
  13. package/dist/model/api.js +99 -108
  14. package/dist/model/api.js.map +1 -1
  15. package/dist/model/auth.js +3 -4
  16. package/dist/model/auth.js.map +1 -1
  17. package/dist/model/equipment.d.ts +6 -1
  18. package/dist/model/equipment.js +14 -8
  19. package/dist/model/equipment.js.map +1 -1
  20. package/dist/model/recoverySimulator.d.ts +2 -3
  21. package/dist/model/recoverySimulator.js +10 -10
  22. package/dist/model/recoverySimulator.js.map +1 -1
  23. package/dist/model/thermostat.js +42 -34
  24. package/dist/model/thermostat.js.map +1 -1
  25. package/dist/model/types.d.ts +33 -32
  26. package/dist/model/types.js +15 -4
  27. package/dist/model/types.js.map +1 -1
  28. package/dist/model/waterHeater.d.ts +1 -1
  29. package/dist/model/waterHeater.js +25 -21
  30. package/dist/model/waterHeater.js.map +1 -1
  31. package/dist/tools/log.d.ts +16 -0
  32. package/dist/tools/log.js +44 -0
  33. package/dist/tools/log.js.map +1 -0
  34. package/dist/tools/storage.d.ts +3 -0
  35. package/dist/tools/storage.js +3 -0
  36. package/dist/tools/storage.js.map +1 -1
  37. package/package.json +1 -1
@@ -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
- this.running = data['@RUNNINGSTATUS'].replace(/\s/g, '').length > 0;
20
- this.current_humidity = data['@HUMIDITY'].value;
21
- this.current_temp = data['@SETPOINT'].value || 70;
22
- this.cool_lower_limit = data['@COOLSETPOINT'].constraints.lowerLimit;
23
- this.cool_upper_limit = data['@COOLSETPOINT'].constraints.upperLimit;
24
- this.cool_set_point = data['@COOLSETPOINT'].value;
25
- this.heat_lower_limit = data['@HEATSETPOINT'].constraints.lowerLimit || 50;
26
- this.heat_upper_limit = data['@HEATSETPOINT'].constraints.upperLimit || 90;
27
- this.heat_set_point = data['@HEATSETPOINT'].value || 70;
28
- this.dead_band = data['@DEADBAND'].value || 0;
29
- const text_modes = data['@MODE'].constraints.enumText;
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'].value) ?? ThermostatOperationMode.UNKNOWN;
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.api.log.debug(strings.humidityState, this.deviceName, this.current_humidity);
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.api.log.debug(strings.currentTempState, this.deviceName, this.current_temp);
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.api.log.debug(strings.coolSetpoint, this.deviceName, this.cool_set_point);
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.api.log.debug(strings.heatSetpoint, this.deviceName, this.heat_set_point);
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.api.log.debug(strings.modeState, this.deviceName, this._stringFromMode(this.current_mode) ?? 'UNKNOWN');
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.api.log.debug(strings.runningState, this.deviceName, this.running);
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.api.log.error(strings.unknownMode, strValue);
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.api.publish(payload, this.deviceId, this.serialNumber);
152
+ this.publish(payload, this.deviceId, this.serialNumber);
145
153
  }
146
154
  else {
147
- this.api.log.error(strings.unknownMode, mode);
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.api.log.error(strings.outOfRangeCool, lower, upper, temp);
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.api.log.error(strings.outOfRangeHeat, lower, upper, temp);
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.api.publish(coolPayload, this.deviceId, this.serialNumber);
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.api.publish(heatPayload, this.deviceId, this.serialNumber);
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.api.log.error(strings.setpointUnknown, this.mode);
199
+ this.log.error(strings.setpointUnknown, this.mode);
192
200
  }
193
201
  if (Object.keys(payload).length > 0) {
194
- this.api.publish(payload, this.deviceId, this.serialNumber);
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":"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"}
1
+ {"version":3,"file":"thermostat.js","sourceRoot":"","sources":["../../src/model/thermostat.ts"],"names":[],"mappings":"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"}
@@ -22,24 +22,25 @@ export type Setpoint = {
22
22
  value: number;
23
23
  };
24
24
  export type SetpointConstraints = {
25
- lowerLimit: number;
26
- upperLimit: number;
27
- units: string;
25
+ lowerLimit?: number;
26
+ upperLimit?: number;
27
+ units?: string;
28
28
  };
29
29
  export type ModeConstraints = {
30
- enumText: string[];
30
+ enumText?: string[];
31
31
  };
32
32
  export type Mode = {
33
- constraints: ModeConstraints;
34
- value: ThermostatOperationMode;
33
+ constraints?: ModeConstraints;
34
+ value?: ThermostatOperationMode;
35
35
  };
36
36
  export type EquipmentData = {
37
- device_type: string;
38
- device_name: string;
39
- serial_number: string;
40
- '@NAME': StringValue;
41
- '@ALERTCOUNT': number;
42
- '@SETPOINT': 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': NumberValue;
54
- '@SETPOINT': NumberValue;
55
- '@COOLSETPOINT': Setpoint;
56
- '@HEATSETPOINT': Setpoint;
57
- '@DEADBAND': NumberValue;
58
- '@MODE': Mode;
59
- '@RUNNINGSTATUS': string;
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': string;
63
- '@ENABLED': NumberValue;
64
- '@SETPOINT': Setpoint;
65
- '@HOTWATER': string;
63
+ '@RUNNING'?: string;
64
+ '@ENABLED'?: NumberValue;
65
+ '@SETPOINT'?: Setpoint;
66
+ '@HOTWATER'?: string;
66
67
  };
67
68
  export type MQTTData = {
68
- serial_number: string;
69
+ serial_number?: string;
69
70
  '@ALERTCOUNT'?: number;
70
71
  '@ENABLED'?: ValueOrObject<number>;
71
- '@SETPOINT': number;
72
- '@HOTWATER': string;
73
- '@RUNNING': string;
74
- '@RUNNINGSTATUS': string;
75
- '@HUMIDITY': number;
76
- '@COOLSETPOINT': number;
77
- '@HEATSETPOINT': number;
78
- '@MODE': NumberValue;
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;
@@ -1,8 +1,19 @@
1
1
  export const SENSITIVE_KEYS = [
2
- 'user_id', 'user_token', 'account_id', 'address', 'email', 'first_name',
3
- 'last_name', 'phone_number', 'postal_code', 'macAddress', 'serialNumber',
4
- 'street', 'city', 'zipcode', 'name', 'coordinates', 'loc', 'device_name',
5
- 'serial_number', 'mac_address',
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
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/model/types.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,cAAc,GAAG;IAC5B,SAAS,EAAE,YAAY,EAAE,YAAY,EAAE,SAAS,EAAE,OAAO,EAAE,YAAY;IACvE,WAAW,EAAE,cAAc,EAAE,aAAa,EAAE,YAAY,EAAE,cAAc;IACxE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,aAAa,EAAE,KAAK,EAAE,aAAa;IACxE,eAAe,EAAE,aAAa;CAC/B,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
+ {"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 { EquipmentType } from './constants.js';
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 = 100;
10
- upper_limit = 150;
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'].replace(/\s/g, '').length > 0;
18
- this.enabled = data['@ENABLED'].value === 1;
19
- this.lower_limit = data['@SETPOINT'].constraints.lowerLimit;
20
- this.upper_limit = data['@SETPOINT'].constraints.upperLimit;
21
- this.set_point = data['@SETPOINT'].value;
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.api, 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.api.log.debug(strings.enabledState, this.deviceName, this.enabled);
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.api.log.debug(strings.setpointState, this.deviceName, this.set_point);
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.api.log.debug(strings.availabilityState, this.deviceName, this.availability_icon);
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.api.log.debug(strings.runningState, this.deviceName, this.running);
91
+ this.log.ifVerbose(strings.runningState, this.deviceName, this.running);
88
92
  }
89
93
  this.didUpdate();
90
94
  }
91
95
  setEnabled(enabled) {
92
- this.api.publish({ '@ENABLED': enabled ? 1 : 0 }, this.deviceId, this.serialNumber);
96
+ this.publish({ '@ENABLED': enabled ? 1 : 0 }, this.deviceId, this.serialNumber);
93
97
  }
94
98
  setSetPoint(setPoint) {
95
- this.api.publish({ '@SETPOINT': setPoint }, this.deviceId, this.serialNumber);
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":"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"}
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"}
@@ -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;
@@ -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.0",
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",