homebridge-econet-rheem 1.0.4 → 1.0.6
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/README.md +11 -4
- package/dist/model/econet.d.ts +10 -9
- package/dist/model/econet.js +93 -62
- package/dist/model/econet.js.map +1 -1
- package/dist/model/waterHeater.js +13 -7
- package/dist/model/waterHeater.js.map +1 -1
- package/dist/platform.js +0 -1
- package/dist/platform.js.map +1 -1
- package/package.json +2 -1
package/README.md
CHANGED
|
@@ -4,12 +4,19 @@
|
|
|
4
4
|
|
|
5
5
|
# Homebridge EcoNet Rheem Plugin
|
|
6
6
|
|
|
7
|
-
This Homebridge plugin integrates Rheem EcoNet
|
|
7
|
+
This Homebridge plugin integrates Rheem EcoNet devices into Apple HomeKit.
|
|
8
8
|
|
|
9
9
|
> [!NOTE]
|
|
10
|
-
> This plugin uses an unofficial
|
|
10
|
+
> This plugin uses an unofficial EcoNet API and could stop working at any time without warning.
|
|
11
11
|
|
|
12
|
-
|
|
12
|
+
## Limitations
|
|
13
|
+
|
|
14
|
+
* Only water heaters in ºF have been fully tested
|
|
15
|
+
* Celcius should work but is untested
|
|
16
|
+
* *Let me know if you have successfully used ºC so I can remove this*
|
|
17
|
+
* Thermostat implementation is incomplete since I don't have access to the necessary hardware
|
|
18
|
+
* *Running in debug mode will generate the json output I need*
|
|
19
|
+
* Due to limitations in HomeKit, it is not possible to switch water heater modes, only enable/disable and adjust the desired temperature.
|
|
13
20
|
|
|
14
21
|
## Installation
|
|
15
22
|
|
|
@@ -64,4 +71,4 @@ This plugin is independently developed and is not in any way affiliated with or
|
|
|
64
71
|
|
|
65
72
|
## Credits
|
|
66
73
|
|
|
67
|
-
Econet API
|
|
74
|
+
Econet API leans heavily on earlier work done by [@w1ll1am23](https://github.com/sponsors/w1ll1am23) in [pyeconet](https://github.com/w1ll1am23/pyeconet), a Python 3 interface to the EcoNet API.
|
package/dist/model/econet.d.ts
CHANGED
|
@@ -18,22 +18,23 @@ export declare class EconetApi {
|
|
|
18
18
|
readonly log: Logger;
|
|
19
19
|
private readonly email;
|
|
20
20
|
private readonly verbose;
|
|
21
|
-
private
|
|
22
|
-
private
|
|
23
|
-
private
|
|
24
|
-
private
|
|
21
|
+
private mqttOptions;
|
|
22
|
+
private userToken;
|
|
23
|
+
private accountId;
|
|
24
|
+
private equipment;
|
|
25
|
+
private mqttClient;
|
|
26
|
+
private reconnectDelaySeconds;
|
|
27
|
+
private isReconnecting;
|
|
25
28
|
constructor(log: Logger, email: string, verbose: boolean);
|
|
26
|
-
get userToken(): string | null;
|
|
27
|
-
get accountId(): string | null;
|
|
28
29
|
static login(log: Logger, email: string, password: string, verbose: boolean): Promise<EconetApi>;
|
|
29
|
-
private
|
|
30
|
-
private _getClientId;
|
|
30
|
+
private authenticate;
|
|
31
31
|
subscribe(): void;
|
|
32
|
+
private resubscribe;
|
|
32
33
|
publish(payload: {
|
|
33
34
|
[key: string]: number;
|
|
34
35
|
}, deviceId: string, serialNumber: string): void;
|
|
35
36
|
unsubscribe(): void;
|
|
36
|
-
private
|
|
37
|
+
private getLocation;
|
|
37
38
|
getEquipment(): Promise<void>;
|
|
38
39
|
getEquipmentByType(types: string[]): Promise<Map<string, Equipment[]>>;
|
|
39
40
|
}
|
package/dist/model/econet.js
CHANGED
|
@@ -10,6 +10,12 @@ const HEADERS = {
|
|
|
10
10
|
'ClearBlade-SystemSecret': CLEAR_BLADE_SYSTEM_SECRET,
|
|
11
11
|
'Content-Type': 'application/json; charset=UTF-8',
|
|
12
12
|
};
|
|
13
|
+
const MAX_DELAY_SECONDS = 300;
|
|
14
|
+
const RETRYABLE_CODES = [
|
|
15
|
+
3, // MQTT: Server unavailable
|
|
16
|
+
'ECONNREFUSED', 'ETIMEDOUT', 'ECONNRESET',
|
|
17
|
+
'ENOTFOUND', 'EHOSTUNREACH', 'ENETUNREACH',
|
|
18
|
+
];
|
|
13
19
|
export const WATER_HEATER = 'WH';
|
|
14
20
|
export const THERMOSTAT = 'HVAC';
|
|
15
21
|
export class PyeconetError extends Error {
|
|
@@ -40,27 +46,24 @@ export class EconetApi {
|
|
|
40
46
|
log;
|
|
41
47
|
email;
|
|
42
48
|
verbose;
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
49
|
+
mqttOptions = null;
|
|
50
|
+
userToken = null;
|
|
51
|
+
accountId = null;
|
|
52
|
+
equipment = new Map();
|
|
53
|
+
mqttClient = null;
|
|
54
|
+
reconnectDelaySeconds = 5;
|
|
55
|
+
isReconnecting = false;
|
|
47
56
|
constructor(log, email, verbose) {
|
|
48
57
|
this.log = log;
|
|
49
58
|
this.email = email;
|
|
50
59
|
this.verbose = verbose;
|
|
51
60
|
}
|
|
52
|
-
get userToken() {
|
|
53
|
-
return this._userToken;
|
|
54
|
-
}
|
|
55
|
-
get accountId() {
|
|
56
|
-
return this._accountId;
|
|
57
|
-
}
|
|
58
61
|
static async login(log, email, password, verbose) {
|
|
59
62
|
const api = new EconetApi(log, email, verbose);
|
|
60
|
-
await api.
|
|
63
|
+
await api.authenticate({ email, password });
|
|
61
64
|
return api;
|
|
62
65
|
}
|
|
63
|
-
async
|
|
66
|
+
async authenticate(payload) {
|
|
64
67
|
const response = await fetch(`${REST_URL}/user/auth`, {
|
|
65
68
|
method: 'POST',
|
|
66
69
|
headers: HEADERS,
|
|
@@ -69,8 +72,18 @@ export class EconetApi {
|
|
|
69
72
|
if (response.status === 200) {
|
|
70
73
|
const json = await response.json();
|
|
71
74
|
if (json.options.success) {
|
|
72
|
-
this.
|
|
73
|
-
this.
|
|
75
|
+
this.log.info('Successfully authenticated');
|
|
76
|
+
this.userToken = json.user_token;
|
|
77
|
+
this.accountId = json.options.account_id;
|
|
78
|
+
const timeString = Date.now().toString().replace('.', '').slice(0, 13);
|
|
79
|
+
const clientId = `${this.email}${timeString}_android`;
|
|
80
|
+
this.mqttOptions = {
|
|
81
|
+
clientId,
|
|
82
|
+
username: this.userToken,
|
|
83
|
+
password: CLEAR_BLADE_SYSTEM_KEY,
|
|
84
|
+
rejectUnauthorized: true,
|
|
85
|
+
keepalive: 90,
|
|
86
|
+
};
|
|
74
87
|
}
|
|
75
88
|
else {
|
|
76
89
|
throw new InvalidCredentialsError(json.options.message || 'Invalid credentials');
|
|
@@ -80,40 +93,35 @@ export class EconetApi {
|
|
|
80
93
|
throw new GenericHTTPError(`HTTP error: ${response.status}`);
|
|
81
94
|
}
|
|
82
95
|
}
|
|
83
|
-
_getClientId() {
|
|
84
|
-
const timeString = Date.now().toString().replace('.', '').slice(0, 13);
|
|
85
|
-
return `${this.email}${timeString}_android`;
|
|
86
|
-
}
|
|
87
96
|
subscribe() {
|
|
88
|
-
if (!this.
|
|
97
|
+
if (!this.equipment.size) {
|
|
98
|
+
this.log.error('No equipment');
|
|
89
99
|
return;
|
|
90
100
|
}
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
this._mqttClient.subscribe(`user/${this._accountId}/device/reported`);
|
|
102
|
-
this._mqttClient.subscribe(`user/${this._accountId}/device/desired`);
|
|
101
|
+
if (!this.mqttOptions) {
|
|
102
|
+
this.log.error('MQTT options are undefined');
|
|
103
|
+
return;
|
|
104
|
+
}
|
|
105
|
+
this.mqttClient = mqtt.connect(`mqtts://${HOST}:1884`, this.mqttOptions);
|
|
106
|
+
this.mqttClient.on('connect', () => {
|
|
107
|
+
this.reconnectDelaySeconds = 5; // Reset backoff on successful connection
|
|
108
|
+
this.mqttClient.subscribe(`user/${this.accountId}/device/reported`);
|
|
109
|
+
this.mqttClient.subscribe(`user/${this.accountId}/device/desired`);
|
|
110
|
+
this.log.info('Connected and listening for updates...');
|
|
103
111
|
});
|
|
104
|
-
this.
|
|
112
|
+
this.mqttClient.on('message', (topic, message) => {
|
|
105
113
|
try {
|
|
106
114
|
const unpackedJson = JSON.parse(message.toString());
|
|
107
115
|
if (this.verbose) {
|
|
108
|
-
this.log.debug(`Received
|
|
116
|
+
this.log.debug(`Received message from topic: ${topic}\n`, JSON.stringify(unpackedJson, null, 2));
|
|
109
117
|
}
|
|
110
118
|
const serial = unpackedJson.serial_number;
|
|
111
|
-
const equipment = this.
|
|
119
|
+
const equipment = this.equipment.get(serial);
|
|
112
120
|
if (equipment) {
|
|
113
121
|
equipment.updateFromMQTT(unpackedJson);
|
|
114
122
|
}
|
|
115
123
|
else if ('@SIGNAL' in unpackedJson) {
|
|
116
|
-
for (const eq of this.
|
|
124
|
+
for (const eq of this.equipment.values()) {
|
|
117
125
|
if (eq.deviceId === unpackedJson.device_name) {
|
|
118
126
|
eq.updateFromMQTT(unpackedJson);
|
|
119
127
|
}
|
|
@@ -121,24 +129,39 @@ export class EconetApi {
|
|
|
121
129
|
}
|
|
122
130
|
}
|
|
123
131
|
catch (e) {
|
|
124
|
-
this.log.error('Failed to parse
|
|
132
|
+
this.log.error('Failed to parse message:', message.toString());
|
|
125
133
|
}
|
|
126
134
|
});
|
|
127
|
-
this.
|
|
128
|
-
this.log.
|
|
135
|
+
this.mqttClient.on('offline', () => {
|
|
136
|
+
this.log.info('Client offline');
|
|
129
137
|
});
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
this.
|
|
133
|
-
setTimeout(() => {
|
|
134
|
-
this._mqttClient.reconnect(connectionOptions);
|
|
135
|
-
reconnectAttempts *= 2;
|
|
136
|
-
}, Math.min(300000, 5000 * reconnectAttempts)); // Exponential backoff: 5s, 10s, 20s... 300s
|
|
138
|
+
this.mqttClient.on('close', () => {
|
|
139
|
+
this.log.info('Connection closed');
|
|
140
|
+
this.resubscribe();
|
|
137
141
|
});
|
|
138
|
-
this.
|
|
139
|
-
this.log.error('
|
|
142
|
+
this.mqttClient.on('error', (err) => {
|
|
143
|
+
this.log.error('Client error:', err);
|
|
144
|
+
if (err.code !== undefined && RETRYABLE_CODES.includes(err.code)) {
|
|
145
|
+
this.resubscribe();
|
|
146
|
+
}
|
|
140
147
|
});
|
|
141
148
|
}
|
|
149
|
+
resubscribe() {
|
|
150
|
+
if (this.isReconnecting) {
|
|
151
|
+
return;
|
|
152
|
+
}
|
|
153
|
+
this.log.info('Attempting to reconnect...');
|
|
154
|
+
this.isReconnecting = true;
|
|
155
|
+
setTimeout(() => {
|
|
156
|
+
if (this.mqttClient) {
|
|
157
|
+
this.mqttClient.end(true); // Forcefully close the old client
|
|
158
|
+
this.mqttClient = null;
|
|
159
|
+
}
|
|
160
|
+
this.reconnectDelaySeconds = Math.min(this.reconnectDelaySeconds * 2, MAX_DELAY_SECONDS);
|
|
161
|
+
this.isReconnecting = false;
|
|
162
|
+
this.subscribe();
|
|
163
|
+
}, this.reconnectDelaySeconds);
|
|
164
|
+
}
|
|
142
165
|
publish(payload, deviceId, serialNumber) {
|
|
143
166
|
const dateTime = new Date().toISOString().replace(/\.\d{3}Z$/, '');
|
|
144
167
|
const transactionId = `ANDROID_${dateTime}`;
|
|
@@ -148,21 +171,29 @@ export class EconetApi {
|
|
|
148
171
|
serial_number: serialNumber,
|
|
149
172
|
...payload,
|
|
150
173
|
};
|
|
151
|
-
if (this.
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
174
|
+
if (!this.mqttClient) {
|
|
175
|
+
this.log.error('No client');
|
|
176
|
+
return;
|
|
177
|
+
}
|
|
178
|
+
if (!this.mqttClient.connected) {
|
|
179
|
+
this.log.error('Client not connected');
|
|
180
|
+
return;
|
|
181
|
+
}
|
|
182
|
+
const topic = `user/${this.accountId}/device/desired`;
|
|
183
|
+
const message = JSON.stringify(publishPayload, null, 2);
|
|
184
|
+
if (this.verbose) {
|
|
185
|
+
this.log.debug(`Publishing message to topic: ${topic}\n`, message);
|
|
156
186
|
}
|
|
187
|
+
this.mqttClient.publish(topic, message);
|
|
157
188
|
}
|
|
158
189
|
unsubscribe() {
|
|
159
|
-
if (this.
|
|
160
|
-
this.
|
|
190
|
+
if (this.mqttClient) {
|
|
191
|
+
this.mqttClient.end();
|
|
161
192
|
}
|
|
162
193
|
}
|
|
163
194
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
164
|
-
async
|
|
165
|
-
const headers = { ...HEADERS, 'ClearBlade-UserToken': this.
|
|
195
|
+
async getLocation() {
|
|
196
|
+
const headers = { ...HEADERS, 'ClearBlade-UserToken': this.userToken };
|
|
166
197
|
const payload = {
|
|
167
198
|
location_only: false,
|
|
168
199
|
type: 'com.econet.econetconsumerandroid',
|
|
@@ -183,11 +214,11 @@ export class EconetApi {
|
|
|
183
214
|
throw new GenericHTTPError(`HTTP error: ${response.status}`);
|
|
184
215
|
}
|
|
185
216
|
async getEquipment() {
|
|
186
|
-
const locations = await this.
|
|
217
|
+
const locations = await this.getLocation();
|
|
187
218
|
for (const location of locations) {
|
|
188
219
|
for (const equip of location.equiptments) {
|
|
189
220
|
if ('error' in equip) {
|
|
190
|
-
this.log.error(`
|
|
221
|
+
this.log.error(`Equipment error: ${equip.error}`);
|
|
191
222
|
continue;
|
|
192
223
|
}
|
|
193
224
|
if (this.verbose) {
|
|
@@ -203,23 +234,23 @@ export class EconetApi {
|
|
|
203
234
|
else {
|
|
204
235
|
continue;
|
|
205
236
|
}
|
|
206
|
-
this.
|
|
237
|
+
this.equipment.set(equipObj.serialNumber, equipObj);
|
|
207
238
|
if (equip.device_type === THERMOSTAT && equip.zoning_devices) {
|
|
208
239
|
for (const zoningDevice of equip.zoning_devices) {
|
|
209
240
|
const zoningEquip = new Thermostat(this, zoningDevice);
|
|
210
|
-
this.
|
|
241
|
+
this.equipment.set(zoningEquip.serialNumber, zoningEquip);
|
|
211
242
|
}
|
|
212
243
|
}
|
|
213
244
|
}
|
|
214
245
|
}
|
|
215
246
|
}
|
|
216
247
|
async getEquipmentByType(types) {
|
|
217
|
-
if (!this.
|
|
248
|
+
if (!this.equipment.size) {
|
|
218
249
|
await this.getEquipment();
|
|
219
250
|
}
|
|
220
251
|
const result = new Map();
|
|
221
252
|
types.forEach((type) => result.set(type, []));
|
|
222
|
-
for (const equip of this.
|
|
253
|
+
for (const equip of this.equipment.values()) {
|
|
223
254
|
if (types.includes(equip instanceof WaterHeater ? WATER_HEATER : THERMOSTAT)) {
|
|
224
255
|
result.get(equip instanceof WaterHeater ? WATER_HEATER : THERMOSTAT).push(equip);
|
|
225
256
|
}
|
package/dist/model/econet.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"econet.js","sourceRoot":"","sources":["../../src/model/econet.ts"],"names":[],"mappings":"AAEA,OAAO,IAAI,MAAM,MAAM,CAAC;AAGxB,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAE7C,MAAM,IAAI,GAAG,sBAAsB,CAAC;AACpC,MAAM,QAAQ,GAAG,WAAW,IAAI,UAAU,CAAC;AAC3C,MAAM,sBAAsB,GAAG,gCAAgC,CAAC;AAChE,MAAM,yBAAyB,GAAG,8BAA8B,CAAC;AACjE,MAAM,OAAO,GAAG;IACd,sBAAsB,EAAE,sBAAsB;IAC9C,yBAAyB,EAAE,yBAAyB;IACpD,cAAc,EAAE,iCAAiC;CAClD,CAAC;AAEF,MAAM,CAAC,MAAM,YAAY,GAAG,IAAI,CAAC;AACjC,MAAM,CAAC,MAAM,UAAU,GAAG,MAAM,CAAC;AAEjC,MAAM,OAAO,aAAc,SAAQ,KAAK;IACtC,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,eAAe,CAAC;IAC9B,CAAC;CACF;AAED,MAAM,OAAO,uBAAwB,SAAQ,aAAa;IACxD,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,yBAAyB,CAAC;IACxC,CAAC;CACF;AAED,MAAM,OAAO,qBAAsB,SAAQ,aAAa;IACtD,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,uBAAuB,CAAC;IACtC,CAAC;CACF;AAED,MAAM,OAAO,gBAAiB,SAAQ,aAAa;IACjD,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,kBAAkB,CAAC;IACjC,CAAC;CACF;
|
|
1
|
+
{"version":3,"file":"econet.js","sourceRoot":"","sources":["../../src/model/econet.ts"],"names":[],"mappings":"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"}
|
|
@@ -34,18 +34,24 @@ export class WaterHeater extends Equipment {
|
|
|
34
34
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
35
35
|
updateFromREST(update) {
|
|
36
36
|
super.updateFromREST(update);
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
37
|
+
if ('@ENABLED' in update) {
|
|
38
|
+
this.enabled = update['@ENABLED'].value === 1;
|
|
39
|
+
}
|
|
40
|
+
if ('@RUNNING' in update) {
|
|
41
|
+
this.running = update['@RUNNING'].replace(/\s/g, '').length > 0;
|
|
42
|
+
}
|
|
43
|
+
if ('@SETPOINT' in update) {
|
|
44
|
+
this.temp_units = update['@SETPOINT'].constraints.units === 'deg F' ? TemperatureUnits.FAHRENHEIT : TemperatureUnits.CELSIUS;
|
|
45
|
+
this.lower_limit = update['@SETPOINT'].constraints.lowerLimit || 100;
|
|
46
|
+
this.upper_limit = update['@SETPOINT'].constraints.upperLimit || 150;
|
|
47
|
+
this.set_point = update['@SETPOINT'].value || 0;
|
|
48
|
+
}
|
|
43
49
|
this.didUpdate();
|
|
44
50
|
}
|
|
45
51
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
46
52
|
updateFromMQTT(update) {
|
|
47
53
|
if ('@ENABLED' in update) {
|
|
48
|
-
this.enabled = update['@ENABLED'] === 1 || update['@ENABLED']
|
|
54
|
+
this.enabled = update['@ENABLED'] === 1 || update['@ENABLED'].value === 1;
|
|
49
55
|
this._api.log.debug(`${this.deviceName} enabled = ${this.enabled}`);
|
|
50
56
|
}
|
|
51
57
|
if ('@RUNNING' in update) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"waterHeater.js","sourceRoot":"","sources":["../../src/model/waterHeater.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAE3C,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAE9C,MAAM,OAAO,WAAY,SAAQ,SAAS;IAEhC,OAAO,GAAY,KAAK,CAAC;IACzB,OAAO,GAAY,KAAK,CAAC;IAEzB,UAAU,GAAG,gBAAgB,CAAC,OAAO,CAAC;IAEtC,WAAW,GAAG,GAAG,CAAC;IAClB,WAAW,GAAG,GAAG,CAAC;IAClB,SAAS,GAAG,CAAC,CAAC;IAEtB,8DAA8D;IAC9D,YAAY,GAAc,EAAE,UAAe;QACzC,KAAK,CAAC,GAAG,CAAC,CAAC;QACX,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC;IAClC,CAAC;IAED,IAAI,SAAS;QACX,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;IAED,IAAI,SAAS;QACX,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;IAED,IAAI,KAAK;QACP,OAAO,IAAI,CAAC,UAAU,CAAC;IACzB,CAAC;IAED,IAAI,MAAM;QACR,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;IAC9C,CAAC;IAED,uCAAuC;IACvC,IAAI,WAAW;QACb,OAAO,IAAI,CAAC,SAAS,CAAC;IACxB,CAAC;IAED,IAAI,QAAQ;QACV,OAAO,IAAI,CAAC,SAAS,CAAC;IACxB,CAAC;IAED,8DAA8D;IACpD,cAAc,CAAC,MAAW;QAClC,KAAK,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;QAE7B,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,UAAU,CAAC,
|
|
1
|
+
{"version":3,"file":"waterHeater.js","sourceRoot":"","sources":["../../src/model/waterHeater.ts"],"names":[],"mappings":"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"}
|
package/dist/platform.js
CHANGED
|
@@ -40,7 +40,6 @@ export class EconetRheemPlatform {
|
|
|
40
40
|
}
|
|
41
41
|
try {
|
|
42
42
|
this.econetApi = await EconetApi.login(this.log, email, password, verbose);
|
|
43
|
-
this.log.debug('Successfully authenticated with Econet API');
|
|
44
43
|
const equipmentMap = await this.econetApi.getEquipmentByType([THERMOSTAT, WATER_HEATER]);
|
|
45
44
|
const thermostats = equipmentMap.get(THERMOSTAT) || [];
|
|
46
45
|
const waterHeaters = equipmentMap.get(WATER_HEATER) || [];
|
package/dist/platform.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"platform.js","sourceRoot":"","sources":["../src/platform.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAE3D,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAE9C,OAAO,EAAE,mBAAmB,EAAE,MAAM,sCAAsC,CAAC;AAC3E,OAAO,EAAE,oBAAoB,EAAE,MAAM,uCAAuC,CAAC;AAE7E,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAI7D,MAAM,OAAO,mBAAmB;IAQZ;IACA;IACA;IATF,OAAO,CAAC;IACR,cAAc,CAAC;IAEd,WAAW,GAAmC,IAAI,GAAG,EAAE,CAAC;IACjE,SAAS,GAAqB,IAAI,CAAC;IAE3C,YACkB,GAAW,EACX,MAAsB,EACtB,GAAQ;QAFR,QAAG,GAAH,GAAG,CAAQ;QACX,WAAM,GAAN,MAAM,CAAgB;QACtB,QAAG,GAAH,GAAG,CAAK;QAGxB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC;QACpC,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,cAAc,CAAC;QAElD,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,oBAAoB,EAAE,GAAG,EAAE;YACrC,IAAI,CAAC,eAAe,EAAE,CAAC;QACzB,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,UAAU,EAAE,GAAG,EAAE;YAC3B,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;gBACnB,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC;YAC/B,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAED,kBAAkB,CAAC,SAA4B;QAC7C,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,6BAA6B,EAAE,SAAS,CAAC,WAAW,CAAC,CAAC;QACpE,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,SAAS,CAAC,OAAO,CAAC,YAAY,EAAE,SAAS,CAAC,CAAC;IAClE,CAAC;IAEO,KAAK,CAAC,eAAe;QAC3B,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,KAAe,CAAC;QAC1C,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,QAAkB,CAAC;QAChD,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,KAAgB,CAAC;QAE7C,IAAI,CAAC,KAAK,IAAI,CAAC,QAAQ,EAAE,CAAC;YACxB,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,yEAAyE,CAAC,CAAC;YAC1F,OAAO;QACT,CAAC;QAED,IAAI,CAAC;YAEH,IAAI,CAAC,SAAS,GAAG,MAAM,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"platform.js","sourceRoot":"","sources":["../src/platform.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.0.
|
|
7
|
+
"version": "1.0.6",
|
|
8
8
|
"homepage": "https://github.com/mpatfield/homebridge-econet-rheem#readme",
|
|
9
9
|
"repository": {
|
|
10
10
|
"type": "git",
|
|
@@ -42,6 +42,7 @@
|
|
|
42
42
|
"devDependencies": {
|
|
43
43
|
"@eslint/js": "^9.21.0",
|
|
44
44
|
"@types/node": "^22.13.5",
|
|
45
|
+
"@types/ws": "^8.18.1",
|
|
45
46
|
"eslint": "^9.24.0",
|
|
46
47
|
"homebridge": "^2.0.0-beta.0",
|
|
47
48
|
"nodemon": "^3.1.9",
|