homebridge-econet-rheem 1.0.0

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 (38) hide show
  1. package/LICENSE +176 -0
  2. package/README.md +64 -0
  3. package/config.schema.json +30 -0
  4. package/dist/accessories/thermostatAccessory.d.ts +26 -0
  5. package/dist/accessories/thermostatAccessory.js +185 -0
  6. package/dist/accessories/thermostatAccessory.js.map +1 -0
  7. package/dist/accessories/waterHeaterAccessory.d.ts +21 -0
  8. package/dist/accessories/waterHeaterAccessory.js +86 -0
  9. package/dist/accessories/waterHeaterAccessory.js.map +1 -0
  10. package/dist/index.d.ts +6 -0
  11. package/dist/index.js +9 -0
  12. package/dist/index.js.map +1 -0
  13. package/dist/model/econet.d.ts +39 -0
  14. package/dist/model/econet.js +230 -0
  15. package/dist/model/econet.js.map +1 -0
  16. package/dist/model/enums.d.ts +13 -0
  17. package/dist/model/enums.js +16 -0
  18. package/dist/model/enums.js.map +1 -0
  19. package/dist/model/equipment.d.ts +16 -0
  20. package/dist/model/equipment.js +34 -0
  21. package/dist/model/equipment.js.map +1 -0
  22. package/dist/model/thermostat.d.ts +36 -0
  23. package/dist/model/thermostat.js +180 -0
  24. package/dist/model/thermostat.js.map +1 -0
  25. package/dist/model/utils.d.ts +3 -0
  26. package/dist/model/utils.js +14 -0
  27. package/dist/model/utils.js.map +1 -0
  28. package/dist/model/waterHeater.d.ts +22 -0
  29. package/dist/model/waterHeater.js +68 -0
  30. package/dist/model/waterHeater.js.map +1 -0
  31. package/dist/platform.d.ts +13 -0
  32. package/dist/platform.js +99 -0
  33. package/dist/platform.js.map +1 -0
  34. package/dist/settings.d.ts +8 -0
  35. package/dist/settings.js +9 -0
  36. package/dist/settings.js.map +1 -0
  37. package/notes +7 -0
  38. package/package.json +52 -0
@@ -0,0 +1,68 @@
1
+ import { Equipment } from './equipment.js';
2
+ import { TemperatureUnits } from './enums.js';
3
+ export class WaterHeater extends Equipment {
4
+ enabled = false;
5
+ running = false;
6
+ temp_units = TemperatureUnits.CELSIUS;
7
+ lower_limit = 100;
8
+ upper_limit = 150;
9
+ set_point = 0;
10
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
11
+ constructor(api, restUpdate) {
12
+ super(api);
13
+ this.updateFromREST(restUpdate);
14
+ }
15
+ get isEnabled() {
16
+ return this.enabled;
17
+ }
18
+ get isRunning() {
19
+ return this.running;
20
+ }
21
+ get units() {
22
+ return this.temp_units;
23
+ }
24
+ get limits() {
25
+ return [this.lower_limit, this.upper_limit];
26
+ }
27
+ // Currently not supplied by Econet api
28
+ get currentTemp() {
29
+ return this.set_point;
30
+ }
31
+ get setPoint() {
32
+ return this.set_point;
33
+ }
34
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
35
+ updateFromREST(update) {
36
+ super.updateFromREST(update);
37
+ this.enabled = update['@ENABLED']?.value === 1;
38
+ this.running = update['@RUNNING'].replace(/\s/g, '').length > 0;
39
+ this.temp_units = update['@SETPOINT']?.constraints.units === 'deg F' ? TemperatureUnits.FAHRENHEIT : TemperatureUnits.CELSIUS;
40
+ this.lower_limit = update['@SETPOINT']?.constraints.lowerLimit || 100;
41
+ this.upper_limit = update['@SETPOINT']?.constraints.upperLimit || 150;
42
+ this.set_point = update['@SETPOINT']?.value || 0;
43
+ this.didUpdate();
44
+ }
45
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
46
+ updateFromMQTT(update) {
47
+ if ('@ENABLED' in update) {
48
+ this.enabled = update['@ENABLED'] === 1 || update['@ENABLED']?.value === 1;
49
+ this._api.log.debug(`${this.deviceName} enabled = ${this.enabled}`);
50
+ }
51
+ if ('@RUNNING' in update) {
52
+ this.running = update['@RUNNING'].replace(/\s/g, '').length > 0;
53
+ this._api.log.debug(`${this.deviceName} running = ${this.running}`);
54
+ }
55
+ if ('@SETPOINT' in update) {
56
+ this.set_point = update['@SETPOINT'];
57
+ this._api.log.debug(`${this.deviceName} set_point = ${this.set_point}`);
58
+ }
59
+ this.didUpdate();
60
+ }
61
+ setEnabled(enabled) {
62
+ this._api.publish({ '@ENABLED': enabled ? 1 : 0 }, this.deviceId, this.serialNumber);
63
+ }
64
+ setSetPoint(setPoint) {
65
+ this._api.publish({ '@SETPOINT': setPoint }, this.deviceId, this.serialNumber);
66
+ }
67
+ }
68
+ //# sourceMappingURL=waterHeater.js.map
@@ -0,0 +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,EAAE,KAAK,KAAK,CAAC,CAAC;QAC/C,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;QAEhE,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC,WAAW,CAAC,EAAE,WAAW,CAAC,KAAK,KAAK,OAAO,CAAC,CAAC,CAAC,gBAAgB,CAAC,UAAU,CAAC,CAAC,CAAC,gBAAgB,CAAC,OAAO,CAAC;QAE9H,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC,EAAE,WAAW,CAAC,UAAU,IAAI,GAAG,CAAC;QACtE,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC,EAAE,WAAW,CAAC,UAAU,IAAI,GAAG,CAAC;QACtE,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,WAAW,CAAC,EAAE,KAAK,IAAI,CAAC,CAAC;QAEjD,IAAI,CAAC,SAAS,EAAE,CAAC;IACnB,CAAC;IAED,8DAA8D;IAC9D,cAAc,CAAC,MAAW;QAExB,IAAI,UAAU,IAAI,MAAM,EAAE,CAAC;YACzB,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,UAAU,CAAC,EAAE,KAAK,KAAK,CAAC,CAAC;YAC3E,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,UAAU,cAAc,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;QACtE,CAAC;QAED,IAAI,UAAU,IAAI,MAAM,EAAE,CAAC;YACzB,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;YAChE,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,UAAU,cAAc,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;QACtE,CAAC;QAED,IAAI,WAAW,IAAI,MAAM,EAAE,CAAC;YAC1B,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC;YACrC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,UAAU,gBAAgB,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC;QAC1E,CAAC;QAED,IAAI,CAAC,SAAS,EAAE,CAAC;IACnB,CAAC;IAED,UAAU,CAAC,OAAgB;QACzB,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;IACvF,CAAC;IAED,WAAW,CAAC,QAAgB;QAC1B,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,WAAW,EAAE,QAAQ,EAAE,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;IACjF,CAAC;CACF"}
@@ -0,0 +1,13 @@
1
+ import { API, DynamicPlatformPlugin, Logger, PlatformAccessory, PlatformConfig } from 'homebridge';
2
+ export declare class EconetRheemPlatform implements DynamicPlatformPlugin {
3
+ readonly log: Logger;
4
+ readonly config: PlatformConfig;
5
+ readonly api: API;
6
+ readonly Service: typeof import("homebridge").Service;
7
+ readonly Characteristic: typeof import("homebridge").Characteristic;
8
+ private readonly accessories;
9
+ private econetApi;
10
+ constructor(log: Logger, config: PlatformConfig, api: API);
11
+ configureAccessory(accessory: PlatformAccessory): void;
12
+ private discoverDevices;
13
+ }
@@ -0,0 +1,99 @@
1
+ import { PLATFORM_NAME, PLUGIN_NAME } from './settings.js';
2
+ import { EconetApi } from './model/econet.js';
3
+ import { ThermostatAccessory } from './accessories/thermostatAccessory.js';
4
+ import { WaterHeaterAccessory } from './accessories/waterHeaterAccessory.js';
5
+ import { WATER_HEATER, THERMOSTAT } from './model/econet.js';
6
+ export class EconetRheemPlatform {
7
+ log;
8
+ config;
9
+ api;
10
+ Service;
11
+ Characteristic;
12
+ accessories = new Map();
13
+ econetApi = null;
14
+ constructor(log, config, api) {
15
+ this.log = log;
16
+ this.config = config;
17
+ this.api = api;
18
+ this.Service = this.api.hap.Service;
19
+ this.Characteristic = this.api.hap.Characteristic;
20
+ this.api.on('didFinishLaunching', () => {
21
+ this.discoverDevices();
22
+ });
23
+ this.api.on('shutdown', () => {
24
+ if (this.econetApi) {
25
+ this.econetApi.unsubscribe();
26
+ }
27
+ });
28
+ }
29
+ configureAccessory(accessory) {
30
+ this.log.info('Restoring cached accessory:', accessory.displayName);
31
+ this.accessories.set(accessory.context.serialNumber, accessory);
32
+ }
33
+ async discoverDevices() {
34
+ const email = this.config.email;
35
+ const password = this.config.password;
36
+ const verbose = this.config.debug;
37
+ if (!email || !password) {
38
+ this.log.error('Configuration error: "email" and "password" are required in config.json');
39
+ return;
40
+ }
41
+ try {
42
+ this.econetApi = await EconetApi.login(this.log, email, password, verbose);
43
+ this.log.debug('Successfully authenticated with Econet API');
44
+ const equipmentMap = await this.econetApi.getEquipmentByType([THERMOSTAT, WATER_HEATER]);
45
+ const thermostats = equipmentMap.get(THERMOSTAT) || [];
46
+ const waterHeaters = equipmentMap.get(WATER_HEATER) || [];
47
+ const currentSerialNumbers = new Set();
48
+ for (const thermostat of thermostats) {
49
+ const serialNumber = thermostat.serialNumber;
50
+ currentSerialNumbers.add(serialNumber);
51
+ const existingAccessory = this.accessories.get(serialNumber);
52
+ if (existingAccessory) {
53
+ this.log.info('Updating existing thermostat:', thermostat.deviceName);
54
+ new ThermostatAccessory(this, existingAccessory, thermostat);
55
+ }
56
+ else {
57
+ this.log.info('Adding new thermostat:', thermostat.deviceName);
58
+ const uuid = this.api.hap.uuid.generate(serialNumber);
59
+ const accessory = new this.api.platformAccessory(thermostat.deviceName, uuid);
60
+ accessory.context.serialNumber = serialNumber;
61
+ new ThermostatAccessory(this, accessory, thermostat);
62
+ this.api.registerPlatformAccessories(PLUGIN_NAME, PLATFORM_NAME, [accessory]);
63
+ this.accessories.set(serialNumber, accessory);
64
+ }
65
+ }
66
+ for (const waterHeater of waterHeaters) {
67
+ const serialNumber = waterHeater.serialNumber;
68
+ currentSerialNumbers.add(serialNumber);
69
+ const existingAccessory = this.accessories.get(serialNumber);
70
+ if (existingAccessory) {
71
+ this.log.info('Updating existing water heater:', waterHeater.deviceName);
72
+ new WaterHeaterAccessory(this, existingAccessory, waterHeater);
73
+ }
74
+ else {
75
+ this.log.info('Adding new water heater:', waterHeater.deviceName);
76
+ const uuid = this.api.hap.uuid.generate(serialNumber);
77
+ const accessory = new this.api.platformAccessory(waterHeater.deviceName, uuid);
78
+ accessory.context.serialNumber = serialNumber;
79
+ new WaterHeaterAccessory(this, accessory, waterHeater);
80
+ this.api.registerPlatformAccessories(PLUGIN_NAME, PLATFORM_NAME, [accessory]);
81
+ this.accessories.set(serialNumber, accessory);
82
+ }
83
+ }
84
+ for (const [serialNumber, accessory] of this.accessories) {
85
+ if (!currentSerialNumbers.has(serialNumber)) {
86
+ this.log.info('Removing stale accessory:', accessory.displayName);
87
+ this.api.unregisterPlatformAccessories(PLUGIN_NAME, PLATFORM_NAME, [accessory]);
88
+ this.accessories.delete(serialNumber);
89
+ }
90
+ }
91
+ this.econetApi.subscribe();
92
+ this.log.debug('Subscribed to Econet MQTT updates');
93
+ }
94
+ catch (error) {
95
+ this.log.error('Failed to initialize platform:', error instanceof Error ? error.message : String(error));
96
+ }
97
+ }
98
+ }
99
+ //# sourceMappingURL=platform.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"platform.js","sourceRoot":"","sources":["../src/platform.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * This is the name of the platform that users will use to register the plugin in the Homebridge config.json
3
+ */
4
+ export declare const PLATFORM_NAME = "HomebridgeEconetRheem";
5
+ /**
6
+ * This must match the name of your plugin as defined the package.json `name` property
7
+ */
8
+ export declare const PLUGIN_NAME = "homebridge-econet-rheem";
@@ -0,0 +1,9 @@
1
+ /**
2
+ * This is the name of the platform that users will use to register the plugin in the Homebridge config.json
3
+ */
4
+ export const PLATFORM_NAME = 'HomebridgeEconetRheem';
5
+ /**
6
+ * This must match the name of your plugin as defined the package.json `name` property
7
+ */
8
+ export const PLUGIN_NAME = 'homebridge-econet-rheem';
9
+ //# sourceMappingURL=settings.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"settings.js","sourceRoot":"","sources":["../src/settings.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,uBAAuB,CAAC;AAErD;;GAEG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG,yBAAyB,CAAC"}
package/notes ADDED
@@ -0,0 +1,7 @@
1
+ cd /var/lib/homebridge/dev/homebridge-econet-rheem
2
+ git pull
3
+ sudo npm install
4
+ sudo npm run build
5
+ sudo npm link
6
+ cd /var/lib/homebridge
7
+ sudo npm link homebridge-econet-rheem
package/package.json ADDED
@@ -0,0 +1,52 @@
1
+ {
2
+ "name": "homebridge-econet-rheem",
3
+ "platform": "HomebridgeEconetRheem",
4
+ "displayName": "Homebridge Econet Rheem",
5
+ "description": "Homebridge plugin based on pyeconet for control of Rheem water heaters",
6
+ "type": "module",
7
+ "version": "1.0.0",
8
+ "homepage": "https://github.com/mpatfield/homebridge-econet-rheem#readme",
9
+ "repository": {
10
+ "type": "git",
11
+ "url": "https://github.com/mpatfield/homebridge-econet-rheem.git"
12
+ },
13
+ "bugs": {
14
+ "url": "https://github.com/mpatfield/homebridge-econet-rheem/issues"
15
+ },
16
+ "main": "dist/index.js",
17
+ "scripts": {
18
+ "build": "rimraf ./dist && tsc",
19
+ "lint": "eslint . --max-warnings=0",
20
+ "prepublishOnly": "npm run lint && npm run build",
21
+ "watch": "npm run build && npm link && nodemon"
22
+ },
23
+ "keywords": [
24
+ "homebridge-plugin",
25
+ "econet",
26
+ "rheem",
27
+ "water-heater"
28
+ ],
29
+ "engines": {
30
+ "node": "^18.20.4 || ^20.18.0 || ^22.10.0",
31
+ "homebridge": "^1.8.0 || ^2.0.0-beta.0"
32
+ },
33
+ "dependencies": {
34
+ "axios": "^1.7.2",
35
+ "homebridge-lib": "^7.1.4",
36
+ "mqtt": "^5.7.0"
37
+ },
38
+ "devDependencies": {
39
+ "@eslint/js": "^9.21.0",
40
+ "@types/axios": "^0.14.0",
41
+ "@types/node": "^22.13.5",
42
+ "eslint": "^9.24.0",
43
+ "homebridge": "^2.0.0-beta.0",
44
+ "nodemon": "^3.1.9",
45
+ "rimraf": "^6.0.1",
46
+ "ts-node": "^10.9.2",
47
+ "typescript": "^5.7.3",
48
+ "typescript-eslint": "^8.24.1"
49
+ },
50
+ "author": "Martin Patfield",
51
+ "license": "Apache-2.0"
52
+ }