@pietrolubini/homebridge-ecoflow 1.1.0 → 1.2.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 (35) hide show
  1. package/README.md +31 -0
  2. package/config.schema.json +17 -0
  3. package/dist/accessories/batteries/batteryAccessory.js +11 -5
  4. package/dist/accessories/batteries/batteryAccessory.js.map +1 -1
  5. package/dist/accessories/ecoFlowAccessory.js +3 -0
  6. package/dist/accessories/ecoFlowAccessory.js.map +1 -1
  7. package/dist/apis/ecoFlowHttpApi.js +0 -1
  8. package/dist/apis/ecoFlowHttpApi.js.map +1 -1
  9. package/dist/characteristics/CustomCharacteristic.d.ts +16 -0
  10. package/dist/characteristics/CustomCharacteristic.js +78 -0
  11. package/dist/characteristics/CustomCharacteristic.js.map +1 -0
  12. package/dist/config.d.ts +9 -0
  13. package/dist/config.js +6 -0
  14. package/dist/config.js.map +1 -1
  15. package/dist/helpers/logger.js +6 -6
  16. package/dist/helpers/logger.js.map +1 -1
  17. package/dist/platform.d.ts +6 -3
  18. package/dist/platform.js +23 -11
  19. package/dist/platform.js.map +1 -1
  20. package/dist/services/accessoryInformationService.d.ts +2 -1
  21. package/dist/services/accessoryInformationService.js +16 -8
  22. package/dist/services/accessoryInformationService.js.map +1 -1
  23. package/dist/services/{batteryService.d.ts → batteryStatusService.d.ts} +3 -2
  24. package/dist/services/batteryStatusService.js +32 -0
  25. package/dist/services/batteryStatusService.js.map +1 -0
  26. package/dist/services/outletServiceBase.d.ts +11 -4
  27. package/dist/services/outletServiceBase.js +43 -19
  28. package/dist/services/outletServiceBase.js.map +1 -1
  29. package/dist/services/serviceBase.d.ts +14 -1
  30. package/dist/services/serviceBase.js +35 -0
  31. package/dist/services/serviceBase.js.map +1 -1
  32. package/docs/images/BatteryAdditionalCharacteristics.jpg +0 -0
  33. package/package.json +1 -1
  34. package/dist/services/batteryService.js +0 -29
  35. package/dist/services/batteryService.js.map +0 -1
package/README.md CHANGED
@@ -64,6 +64,37 @@ Example configuration:
64
64
  }
65
65
  ```
66
66
 
67
+ ### Battery-specific Configuration
68
+
69
+ If `devices`.`model` is one of [`Delta 2`, `Delta 2 Max`] it is possible to set turn on/off additional characteristics:
70
+
71
+ - Input Consumption, W
72
+ - Output Consumption, W
73
+ - Battery Level, %
74
+
75
+ ```js
76
+ {
77
+ ...
78
+ "devices": [
79
+ {
80
+ ...,
81
+ "model": "Delta 2 Max",
82
+ "battery": {
83
+ "additionalCharacteristics": [
84
+ "Battery Level, %",
85
+ "Input Consumption, W",
86
+ "Output Consumption, W"
87
+ ]
88
+ }
89
+ }
90
+ ],
91
+ }
92
+ ```
93
+
94
+ The characteristics could be used as conditions in HomeKit Automation that uses Shortcuts:
95
+
96
+ <img src="docs/images/BatteryAdditionalCharacteristics.jpg" alt="Battery Additional Characteristics" width="300">
97
+
67
98
  ### AccessKey and SecretKey
68
99
 
69
100
  For the plugin to work EcoFlow account's `AccessKey` and `SecretKey` is required. To retrieve them
@@ -47,6 +47,23 @@
47
47
  "type": "string",
48
48
  "required": true,
49
49
  "description": "Secret Key from \"EcoFlow IoT Developer Platform\" (https://developer-eu.ecoflow.com)"
50
+ },
51
+ "battery": {
52
+ "title": "Battery Settings",
53
+ "type": "object",
54
+ "properties": {
55
+ "additionalCharacteristics": {
56
+ "title": "Additional characteristics",
57
+ "description": "List of additional characteristics for battery",
58
+ "type": "array",
59
+ "uniqueItems": true,
60
+ "items": {
61
+ "title": "Characteristic",
62
+ "type": "string",
63
+ "enum": ["Battery Level, %", "Input Consumption, W", "Output Consumption, W"]
64
+ }
65
+ }
66
+ }
50
67
  }
51
68
  }
52
69
  }
@@ -1,5 +1,5 @@
1
1
  import { MqttMessageType } from '../../apis/ecoFlowMqttApi.js';
2
- import { BatteryService } from '../../services/batteryService.js';
2
+ import { BatteryStatusService } from '../../services/batteryStatusService.js';
3
3
  import { OutletAcService } from '../../services/outletAcService.js';
4
4
  import { OutletCarService } from '../../services/outletCarService.js';
5
5
  import { OutletUsbService } from '../../services/outletUsbService.js';
@@ -11,7 +11,7 @@ export class BatteryAccessory extends EcoFlowAccessoryWithQuota {
11
11
  outletCarService;
12
12
  constructor(platform, accessory, config, log) {
13
13
  super(platform, accessory, config, log);
14
- this.batteryService = new BatteryService(this);
14
+ this.batteryService = new BatteryStatusService(this);
15
15
  this.outletUsbService = new OutletUsbService(this);
16
16
  this.outletAcService = new OutletAcService(this);
17
17
  this.outletCarService = new OutletCarService(this);
@@ -69,17 +69,23 @@ export class BatteryAccessory extends EcoFlowAccessoryWithQuota {
69
69
  if (params.f32ShowSoc !== undefined) {
70
70
  this.batteryService.updateStatusLowBattery(params.f32ShowSoc);
71
71
  this.batteryService.updateBatteryLevel(params.f32ShowSoc);
72
+ this.outletAcService.updateBatteryLevel(params.f32ShowSoc);
73
+ this.outletUsbService.updateBatteryLevel(params.f32ShowSoc);
74
+ this.outletCarService.updateBatteryLevel(params.f32ShowSoc);
72
75
  }
73
76
  }
74
77
  updateInvValues(params) {
75
78
  if (params.inputWatts !== undefined) {
76
79
  this.batteryService.updateChargingState(params.inputWatts);
80
+ this.outletAcService.updateInputConsumption(params.inputWatts);
81
+ this.outletUsbService.updateInputConsumption(params.inputWatts);
82
+ this.outletCarService.updateInputConsumption(params.inputWatts);
77
83
  }
78
84
  if (params.cfgAcEnabled !== undefined) {
79
85
  this.outletAcService.updateState(params.cfgAcEnabled);
80
86
  }
81
87
  if (params.outputWatts !== undefined) {
82
- this.outletAcService.updateInUse(params.outputWatts > 0);
88
+ this.outletAcService.updateOutputConsumption(params.outputWatts);
83
89
  }
84
90
  }
85
91
  updatePdValues(params) {
@@ -87,7 +93,7 @@ export class BatteryAccessory extends EcoFlowAccessoryWithQuota {
87
93
  this.outletCarService.updateState(params.carState);
88
94
  }
89
95
  if (params.carWatts !== undefined) {
90
- this.outletCarService.updateInUse(params.carWatts > 0);
96
+ this.outletCarService.updateOutputConsumption(params.carWatts);
91
97
  }
92
98
  if (params.dcOutState !== undefined) {
93
99
  this.outletUsbService.updateState(params.dcOutState);
@@ -99,7 +105,7 @@ export class BatteryAccessory extends EcoFlowAccessoryWithQuota {
99
105
  params.typec1Watts !== undefined ||
100
106
  params.typec2Watts !== undefined) {
101
107
  const usbWatts = this.getUsbWatts(params.usb1Watts, params.usb2Watts, params.qcUsb1Watts, params.qcUsb2Watts, params.typec1Watts, params.typec2Watts);
102
- this.outletUsbService.updateInUse(usbWatts > 0);
108
+ this.outletUsbService.updateOutputConsumption(usbWatts);
103
109
  }
104
110
  }
105
111
  getUsbWatts(usb1Watts, usb2Watts, qcUsb1Watts, qcUsb2Watts, typec1Watts, typec2Watts) {
@@ -1 +1 @@
1
- {"version":3,"file":"batteryAccessory.js","sourceRoot":"","sources":["../../../src/accessories/batteries/batteryAccessory.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"batteryAccessory.js","sourceRoot":"","sources":["../../../src/accessories/batteries/batteryAccessory.ts"],"names":[],"mappings":"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"}
@@ -81,6 +81,9 @@ export class EcoFlowAccessory {
81
81
  this.log.info('Removing obsolete service from accessory:', service.displayName);
82
82
  this.accessory.removeService(service);
83
83
  });
84
+ this.services
85
+ .filter(service => this.accessory.services.includes(service.service))
86
+ .forEach(service => service.cleanupCharacteristics());
84
87
  }
85
88
  async connectMqtt() {
86
89
  await this.initMqtt();
@@ -1 +1 @@
1
- {"version":3,"file":"ecoFlowAccessory.js","sourceRoot":"","sources":["../../src/accessories/ecoFlowAccessory.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ecoFlowAccessory.js","sourceRoot":"","sources":["../../src/accessories/ecoFlowAccessory.ts"],"names":[],"mappings":"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"}
@@ -48,7 +48,6 @@ export class EcoFlowHttpApi {
48
48
  this.log.debug('Acquire certificate for MQTT connection');
49
49
  const response = await this.execute(CertificatePath, HttpMethod.Get);
50
50
  if (!response.failed) {
51
- this.log.debug('Certificate data:', response.data);
52
51
  return response.data;
53
52
  }
54
53
  return null;
@@ -1 +1 @@
1
- {"version":3,"file":"ecoFlowHttpApi.js","sourceRoot":"","sources":["../../src/apis/ecoFlowHttpApi.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ecoFlowHttpApi.js","sourceRoot":"","sources":["../../src/apis/ecoFlowHttpApi.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,QAAQ,CAAC;AAIjC,MAAM,MAAM,GAAG,2BAA2B,CAAC;AAC3C,MAAM,SAAS,GAAG,6BAA6B,CAAC;AAChD,MAAM,YAAY,GAAG,iCAAiC,CAAC;AACvD,MAAM,eAAe,GAAG,8BAA8B,CAAC;AAEvD,MAAM,CAAN,IAAY,UAGX;AAHD,WAAY,UAAU;IACpB,yBAAW,CAAA;IACX,2BAAa,CAAA;AACf,CAAC,EAHW,UAAU,KAAV,UAAU,QAGrB;AAuCD,MAAM,OAAO,cAAc;IAEN;IACA;IAFnB,YACmB,MAAoB,EACpB,GAAY;QADZ,WAAM,GAAN,MAAM,CAAc;QACpB,QAAG,GAAH,GAAG,CAAS;IAC5B,CAAC;IAEG,KAAK,CAAC,SAAS,CAAQ,MAAgB;QAC5C,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;QACtC,MAAM,UAAU,GAAwB;YACtC,EAAE,EAAE,IAAI,CAAC,MAAM,CAAC,YAAY;YAC5B,MAAM,EAAE;gBACN,MAAM;aACP;SACF,CAAC;QACF,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,OAAO,CAA4B,SAAS,EAAE,UAAU,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;QACvG,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;YACrB,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,CAAQ,QAAQ,CAAC,IAAI,CAAC,CAAC;YACpD,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;YAChC,OAAO,IAAI,CAAC;QACd,CAAC;QACD,OAAO,EAAW,CAAC;IACrB,CAAC;IAEM,KAAK,CAAC,YAAY;QACvB,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC;QACjC,MAAM,UAAU,GAAkB;YAChC,EAAE,EAAE,IAAI,CAAC,MAAM,CAAC,YAAY;SAC7B,CAAC;QACF,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,OAAO,CAA4B,YAAY,EAAE,UAAU,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC;QACzG,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;YACrB,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,CAAQ,QAAQ,CAAC,IAAI,CAAC,CAAC;YACpD,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC;YACpC,OAAO,IAAI,CAAC;QACd,CAAC;QACD,OAAO,EAAW,CAAC;IACrB,CAAC;IAEM,KAAK,CAAC,kBAAkB;QAC7B,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,yCAAyC,CAAC,CAAC;QAC1D,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,OAAO,CAA8C,eAAe,EAAE,UAAU,CAAC,GAAG,CAAC,CAAC;QAClH,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;YACrB,OAAO,QAAQ,CAAC,IAAI,CAAC;QACvB,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAES,KAAK,CAAC,OAAO,CACrB,WAAmB,EACnB,MAAkB,EAClB,kBAAiC,IAAI,EACrC,OAAsB,IAAI;QAE1B,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;QACzC,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC;QACxC,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;QAC9B,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAC7B,MAAM,WAAW,GAAG,IAAI,CAAC,kBAAkB,CAAC,eAAe,CAAC,CAAC;QAC7D,IAAI,MAAM,GAAG,WAAW,CAAC,CAAC,CAAC,GAAG,WAAW,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;QAClD,MAAM,iBAAiB,GAAG,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC;QACxD,MAAM,GAAG,iBAAiB,CAAC,CAAC,CAAC,GAAG,MAAM,GAAG,iBAAiB,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC;QACvE,MAAM,OAAO,GAAG,GAAG,MAAM,aAAa,SAAS,UAAU,KAAK,cAAc,SAAS,EAAE,CAAC;QACxF,MAAM,UAAU,GAAG,WAAW,CAAC,CAAC,CAAC,GAAG,GAAG,IAAI,WAAW,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC;QAE/D,MAAM,OAAO,GAAgB;YAC3B,SAAS;YACT,KAAK;YACL,SAAS,EAAE,SAAS,CAAC,QAAQ,EAAE;YAC/B,IAAI,EAAE,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,OAAO,CAAC;SAC5D,CAAC;QACF,MAAM,OAAO,GAAgB,EAAE,MAAM,EAAE,CAAC;QACxC,IAAI,IAAI,EAAE,CAAC;YACT,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;YACpC,OAAO,CAAC,cAAc,CAAC,GAAG,kBAAkB,CAAC;QAC/C,CAAC;QACD,OAAO,CAAC,OAAO,GAAG,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC;QAEvC,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;YAClD,MAAM,MAAM,GAAG,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAyB,CAAC;YAC/D,IAAI,MAAM,CAAC,IAAI,KAAK,GAAG,EAAE,CAAC;gBACxB,MAAM,KAAK,CACT,eAAe,UAAU,oBAAoB,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC;aACxE,QAAQ,CAAC,MAAM,MAAM,QAAQ,CAAC,UAAU,aAAa,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,CACjF,CAAC;YACJ,CAAC;YACD,OAAO,MAAM,CAAC;QAChB,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,oBAAoB,EAAE,CAAC,CAAC,CAAC;YACxC,OAAO;gBACL,IAAI,EAAE,KAAK;gBACX,OAAO,EAAG,CAAW,EAAE,OAAO;gBAC9B,MAAM,EAAE,IAAI;aACA,CAAC;QACjB,CAAC;IACH,CAAC;IAEO,QAAQ;QACd,MAAM,GAAG,GAAG,CAAC,CAAC;QACd,MAAM,GAAG,GAAG,MAAM,CAAC;QACnB,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;QACvE,OAAO,YAAY,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IAClD,CAAC;IAEO,kBAAkB,CAAC,GAAgB,EAAE,SAAiB,EAAE;QAC9D,IAAI,CAAC,GAAG,EAAE,CAAC;YACT,OAAO,EAAE,CAAC;QACZ,CAAC;QACD,MAAM,UAAU,GAAa,EAAE,CAAC;QAEhC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC;aACb,IAAI,EAAE;aACN,OAAO,CAAC,GAAG,CAAC,EAAE;YACb,MAAM,KAAK,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;YACvB,MAAM,UAAU,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,IAAI,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC;YAErD,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;gBACzB,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;oBAC5B,UAAU,CAAC,IAAI,CAAC,GAAG,UAAU,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC,CAAC;gBACrD,CAAC,CAAC,CAAC;YACL,CAAC;iBAAM,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;gBACvD,oCAAoC;gBACpC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC,CAAC;YAC9D,CAAC;iBAAM,CAAC;gBACN,0BAA0B;gBAC1B,UAAU,CAAC,IAAI,CAAC,GAAG,UAAU,IAAI,KAAK,EAAE,CAAC,CAAC;YAC5C,CAAC;QACH,CAAC,CAAC,CAAC;QAEL,OAAO,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC9B,CAAC;IAEO,gBAAgB,CAAC,GAAW,EAAE,OAAe;QACnD,OAAO,MAAM,CAAC,UAAU,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACxE,CAAC;IAEO,gBAAgB,CAAC,OAAoB;QAC3C,MAAM,aAAa,GAEf,EAAE,CAAC;QACN,OAAO,CAAC,OAAmB,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;YAClD,aAAa,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;QAC7B,CAAC,CAAC,CAAC;QACH,MAAM,UAAU,GAAG;YACjB,GAAG,OAAO;YACV,OAAO,EAAE,aAAa;SACvB,CAAC;QACF,OAAO,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;IACpC,CAAC;IAEO,WAAW,CAAQ,IAAU;QACnC,MAAM,MAAM,GAAS,EAAE,CAAC;QACxB,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;YAC9B,MAAM,IAAI,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YAC5B,IAAI,OAAO,GAAG,MAAM,CAAC;YAErB,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE;gBACxB,IAAI,KAAK,KAAK,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBAC9B,OAAO,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;gBACzB,CAAC;qBAAM,CAAC;oBACN,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;oBAC9B,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;gBACvB,CAAC;YACH,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QACH,OAAO,MAAe,CAAC;IACzB,CAAC;CACF"}
@@ -0,0 +1,16 @@
1
+ import { Characteristic } from 'hap-nodejs';
2
+ export declare class InputConsumptionWatt extends Characteristic {
3
+ static readonly UUID: string;
4
+ constructor();
5
+ }
6
+ export declare class OutputConsumptionWatt extends Characteristic {
7
+ static readonly UUID: string;
8
+ constructor();
9
+ }
10
+ export declare class PowerConsumption {
11
+ static readonly InputConsumptionWatts: typeof InputConsumptionWatt;
12
+ static readonly OutputConsumptionWatts: typeof OutputConsumptionWatt;
13
+ }
14
+ export declare class CustomCharacteristic {
15
+ static readonly PowerConsumption: typeof PowerConsumption;
16
+ }
@@ -0,0 +1,78 @@
1
+ import { Characteristic } from 'hap-nodejs';
2
+ export class InputConsumptionWatt extends Characteristic {
3
+ static UUID = '13172B0A-D346-4730-9732-32EF5B6EF8B7';
4
+ constructor() {
5
+ super('Input Consumption', InputConsumptionWatt.UUID, {
6
+ description: 'Input Consumption, W',
7
+ format: "float" /* Formats.FLOAT */,
8
+ perms: ["ev" /* Perms.NOTIFY */, "pr" /* Perms.PAIRED_READ */],
9
+ minValue: 0,
10
+ minStep: 1,
11
+ unit: "celsius" /* Units.CELSIUS */, // To allow setting numeric value for conditions in ShortCuts
12
+ });
13
+ this.value = this.getDefaultValue();
14
+ }
15
+ }
16
+ export class OutputConsumptionWatt extends Characteristic {
17
+ // Eve characteristic
18
+ static UUID = 'E863F10D-079E-48FF-8F27-9C2605A29F52';
19
+ constructor() {
20
+ super('Output Consumption', OutputConsumptionWatt.UUID, {
21
+ description: 'Output Consumption, W',
22
+ format: "float" /* Formats.FLOAT */,
23
+ perms: ["ev" /* Perms.NOTIFY */, "pr" /* Perms.PAIRED_READ */],
24
+ unit: "celsius" /* Units.CELSIUS */, // To allow setting numeric value for conditions in ShortCuts
25
+ minValue: 0,
26
+ minStep: 1,
27
+ });
28
+ this.value = this.getDefaultValue();
29
+ }
30
+ }
31
+ // https://gist.github.com/simont77/3f4d4330fa55b83f8ca96388d9004e7d
32
+ // export class PowerConsumptionVolt extends Characteristic {
33
+ // public static readonly UUID: string = 'E863F10A-079E-48FF-8F27-9C2605A29F52';
34
+ // constructor() {
35
+ // super('Voltage', PowerConsumptionVolt.UUID, {
36
+ // description: '"Voltage, V" in Eve App',
37
+ // format: Formats.FLOAT,
38
+ // perms: [Perms.NOTIFY, Perms.PAIRED_READ],
39
+ // minValue: 0,
40
+ // maxValue: 300,
41
+ // });
42
+ // this.value = this.getDefaultValue();
43
+ // }
44
+ // }
45
+ // export class PowerConsumptionAmpere extends Characteristic {
46
+ // public static readonly UUID: string = 'E863F126-079E-48FF-8F27-9C2605A29F52';
47
+ // constructor() {
48
+ // super('Current', PowerConsumptionAmpere.UUID, {
49
+ // description: '"Current, A" in Eve App',
50
+ // format: Formats.FLOAT,
51
+ // perms: [Perms.NOTIFY, Perms.PAIRED_READ],
52
+ // minValue: 0,
53
+ // maxValue: 100,
54
+ // });
55
+ // this.value = this.getDefaultValue();
56
+ // }
57
+ // }
58
+ // export class PowerConsumptionKilowattHour extends Characteristic {
59
+ // public static readonly UUID: string = 'E863F10C-079E-48FF-8F27-9C2605A29F52';
60
+ // constructor() {
61
+ // super('Total Consumption', PowerConsumptionKilowattHour.UUID, {
62
+ // description: '"Total Consumption, kW/h" in Eve App',
63
+ // format: Formats.FLOAT,
64
+ // perms: [Perms.NOTIFY, Perms.PAIRED_READ],
65
+ // minValue: 0,
66
+ // maxValue: 50,
67
+ // });
68
+ // this.value = this.getDefaultValue();
69
+ // }
70
+ // }
71
+ export class PowerConsumption {
72
+ static InputConsumptionWatts = InputConsumptionWatt;
73
+ static OutputConsumptionWatts = OutputConsumptionWatt;
74
+ }
75
+ export class CustomCharacteristic {
76
+ static PowerConsumption = PowerConsumption;
77
+ }
78
+ //# sourceMappingURL=CustomCharacteristic.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CustomCharacteristic.js","sourceRoot":"","sources":["../../src/characteristics/CustomCharacteristic.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAG5C,MAAM,OAAO,oBAAqB,SAAQ,cAAc;IAC/C,MAAM,CAAU,IAAI,GAAW,sCAAsC,CAAC;IAC7E;QACE,KAAK,CAAC,mBAAmB,EAAE,oBAAoB,CAAC,IAAI,EAAE;YACpD,WAAW,EAAE,sBAAsB;YACnC,MAAM,6BAAe;YACrB,KAAK,EAAE,uDAAiC;YACxC,QAAQ,EAAE,CAAC;YACX,OAAO,EAAE,CAAC;YACV,IAAI,+BAAe,EAAE,6DAA6D;SACnF,CAAC,CAAC;QACH,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC;IACtC,CAAC;;AAGH,MAAM,OAAO,qBAAsB,SAAQ,cAAc;IACvD,qBAAqB;IACd,MAAM,CAAU,IAAI,GAAW,sCAAsC,CAAC;IAC7E;QACE,KAAK,CAAC,oBAAoB,EAAE,qBAAqB,CAAC,IAAI,EAAE;YACtD,WAAW,EAAE,uBAAuB;YACpC,MAAM,6BAAe;YACrB,KAAK,EAAE,uDAAiC;YACxC,IAAI,+BAAe,EAAE,6DAA6D;YAClF,QAAQ,EAAE,CAAC;YACX,OAAO,EAAE,CAAC;SACX,CAAC,CAAC;QACH,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC;IACtC,CAAC;;AAGH,oEAAoE;AACpE,6DAA6D;AAC7D,kFAAkF;AAClF,oBAAoB;AACpB,oDAAoD;AACpD,gDAAgD;AAChD,+BAA+B;AAC/B,kDAAkD;AAClD,qBAAqB;AACrB,uBAAuB;AACvB,UAAU;AACV,2CAA2C;AAC3C,MAAM;AACN,IAAI;AAEJ,+DAA+D;AAC/D,kFAAkF;AAClF,oBAAoB;AACpB,sDAAsD;AACtD,gDAAgD;AAChD,+BAA+B;AAC/B,kDAAkD;AAClD,qBAAqB;AACrB,uBAAuB;AACvB,UAAU;AACV,2CAA2C;AAC3C,MAAM;AACN,IAAI;AAEJ,qEAAqE;AACrE,kFAAkF;AAClF,oBAAoB;AACpB,sEAAsE;AACtE,6DAA6D;AAC7D,+BAA+B;AAC/B,kDAAkD;AAClD,qBAAqB;AACrB,sBAAsB;AACtB,UAAU;AACV,2CAA2C;AAC3C,MAAM;AACN,IAAI;AAEJ,MAAM,OAAO,gBAAgB;IACpB,MAAM,CAAU,qBAAqB,GAAgC,oBAAoB,CAAC;IAC1F,MAAM,CAAU,sBAAsB,GAAiC,qBAAqB,CAAC;;AAGtG,MAAM,OAAO,oBAAoB;IACxB,MAAM,CAAU,gBAAgB,GAA4B,gBAAgB,CAAC"}
package/dist/config.d.ts CHANGED
@@ -11,4 +11,13 @@ export interface DeviceConfig extends AccessoryConfig {
11
11
  serialNumber: string;
12
12
  accessKey: string;
13
13
  secretKey: string;
14
+ battery?: BatteryDeviceConfig;
15
+ }
16
+ export interface BatteryDeviceConfig {
17
+ additionalCharacteristics: AdditionalBatteryCharacteristicType[];
18
+ }
19
+ export declare enum AdditionalBatteryCharacteristicType {
20
+ BatteryLevel = "Battery Level, %",
21
+ InputConsumptionInWatts = "Input Consumption, W",
22
+ OutputConsumptionInWatts = "Output Consumption, W"
14
23
  }
package/dist/config.js CHANGED
@@ -3,4 +3,10 @@ export var DeviceModel;
3
3
  DeviceModel["Delta2Max"] = "Delta 2 Max";
4
4
  DeviceModel["Delta2"] = "Delta 2";
5
5
  })(DeviceModel || (DeviceModel = {}));
6
+ export var AdditionalBatteryCharacteristicType;
7
+ (function (AdditionalBatteryCharacteristicType) {
8
+ AdditionalBatteryCharacteristicType["BatteryLevel"] = "Battery Level, %";
9
+ AdditionalBatteryCharacteristicType["InputConsumptionInWatts"] = "Input Consumption, W";
10
+ AdditionalBatteryCharacteristicType["OutputConsumptionInWatts"] = "Output Consumption, W";
11
+ })(AdditionalBatteryCharacteristicType || (AdditionalBatteryCharacteristicType = {}));
6
12
  //# sourceMappingURL=config.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAMA,MAAM,CAAN,IAAY,WAGX;AAHD,WAAY,WAAW;IACrB,wCAAyB,CAAA;IACzB,iCAAkB,CAAA;AACpB,CAAC,EAHW,WAAW,KAAX,WAAW,QAGtB"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAMA,MAAM,CAAN,IAAY,WAGX;AAHD,WAAY,WAAW;IACrB,wCAAyB,CAAA;IACzB,iCAAkB,CAAA;AACpB,CAAC,EAHW,WAAW,KAAX,WAAW,QAGtB;AAcD,MAAM,CAAN,IAAY,mCAIX;AAJD,WAAY,mCAAmC;IAC7C,wEAAiC,CAAA;IACjC,uFAAgD,CAAA;IAChD,yFAAkD,CAAA;AACpD,CAAC,EAJW,mCAAmC,KAAnC,mCAAmC,QAI9C"}
@@ -13,27 +13,27 @@ export class Logger {
13
13
  }
14
14
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
15
15
  info(message, ...parameters) {
16
- this.logger.info(this.wrapMessage(message), parameters);
16
+ this.logger.info(this.wrapMessage(message), ...parameters);
17
17
  }
18
18
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
19
19
  success(message, ...parameters) {
20
- this.logger.success(this.wrapMessage(message), parameters);
20
+ this.logger.success(this.wrapMessage(message), ...parameters);
21
21
  }
22
22
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
23
23
  warn(message, ...parameters) {
24
- this.logger.warn(this.wrapMessage(message), parameters);
24
+ this.logger.warn(this.wrapMessage(message), ...parameters);
25
25
  }
26
26
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
27
27
  error(message, ...parameters) {
28
- this.logger.error(this.wrapMessage(message), parameters);
28
+ this.logger.error(this.wrapMessage(message), ...parameters);
29
29
  }
30
30
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
31
31
  debug(message, ...parameters) {
32
- this.logger.debug(this.wrapMessage(message), parameters);
32
+ this.logger.debug(this.wrapMessage(message), ...parameters);
33
33
  }
34
34
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
35
35
  log(level, message, ...parameters) {
36
- this.logger.log(level, this.wrapMessage(message), parameters);
36
+ this.logger.log(level, this.wrapMessage(message), ...parameters);
37
37
  }
38
38
  wrapMessage(message) {
39
39
  return `[${this.deviceName}] ${message}`;
@@ -1 +1 @@
1
- {"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/helpers/logger.ts"],"names":[],"mappings":"AAEA,MAAM,OAAO,MAAM;IAEE;IACA;IAFnB,YACmB,MAAe,EACf,UAAkB;QADlB,WAAM,GAAN,MAAM,CAAS;QACf,eAAU,GAAV,UAAU,CAAQ;IAClC,CAAC;IAEG,MAAM,CAAC,MAAM,CAAC,MAAe,EAAE,UAAkB;QACtD,OAAO,IAAI,MAAM,CAAC,MAAM,EAAE,UAAU,CAAuB,CAAC;IAC9D,CAAC;IAED,IAAW,MAAM;QACf,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;IAC5B,CAAC;IAED,8DAA8D;IACvD,IAAI,CAAC,OAAe,EAAE,GAAG,UAAiB;QAC/C,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,EAAE,UAAU,CAAC,CAAC;IAC1D,CAAC;IAED,8DAA8D;IACvD,OAAO,CAAC,OAAe,EAAE,GAAG,UAAiB;QAClD,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,EAAE,UAAU,CAAC,CAAC;IAC7D,CAAC;IAED,8DAA8D;IACvD,IAAI,CAAC,OAAe,EAAE,GAAG,UAAiB;QAC/C,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,EAAE,UAAU,CAAC,CAAC;IAC1D,CAAC;IAED,8DAA8D;IACvD,KAAK,CAAC,OAAe,EAAE,GAAG,UAAiB;QAChD,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,EAAE,UAAU,CAAC,CAAC;IAC3D,CAAC;IAED,8DAA8D;IACvD,KAAK,CAAC,OAAe,EAAE,GAAG,UAAiB;QAChD,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,EAAE,UAAU,CAAC,CAAC;IAC3D,CAAC;IAED,8DAA8D;IACvD,GAAG,CAAC,KAAe,EAAE,OAAe,EAAE,GAAG,UAAiB;QAC/D,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,EAAE,UAAU,CAAC,CAAC;IAChE,CAAC;IAEO,WAAW,CAAC,OAAe;QACjC,OAAO,IAAI,IAAI,CAAC,UAAU,KAAK,OAAO,EAAE,CAAC;IAC3C,CAAC;CACF"}
1
+ {"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/helpers/logger.ts"],"names":[],"mappings":"AAEA,MAAM,OAAO,MAAM;IAEE;IACA;IAFnB,YACmB,MAAe,EACf,UAAkB;QADlB,WAAM,GAAN,MAAM,CAAS;QACf,eAAU,GAAV,UAAU,CAAQ;IAClC,CAAC;IAEG,MAAM,CAAC,MAAM,CAAC,MAAe,EAAE,UAAkB;QACtD,OAAO,IAAI,MAAM,CAAC,MAAM,EAAE,UAAU,CAAuB,CAAC;IAC9D,CAAC;IAED,IAAW,MAAM;QACf,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;IAC5B,CAAC;IAED,8DAA8D;IACvD,IAAI,CAAC,OAAe,EAAE,GAAG,UAAiB;QAC/C,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,EAAE,GAAG,UAAU,CAAC,CAAC;IAC7D,CAAC;IAED,8DAA8D;IACvD,OAAO,CAAC,OAAe,EAAE,GAAG,UAAiB;QAClD,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,EAAE,GAAG,UAAU,CAAC,CAAC;IAChE,CAAC;IAED,8DAA8D;IACvD,IAAI,CAAC,OAAe,EAAE,GAAG,UAAiB;QAC/C,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,EAAE,GAAG,UAAU,CAAC,CAAC;IAC7D,CAAC;IAED,8DAA8D;IACvD,KAAK,CAAC,OAAe,EAAE,GAAG,UAAiB;QAChD,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,EAAE,GAAG,UAAU,CAAC,CAAC;IAC9D,CAAC;IAED,8DAA8D;IACvD,KAAK,CAAC,OAAe,EAAE,GAAG,UAAiB;QAChD,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,EAAE,GAAG,UAAU,CAAC,CAAC;IAC9D,CAAC;IAED,8DAA8D;IACvD,GAAG,CAAC,KAAe,EAAE,OAAe,EAAE,GAAG,UAAiB;QAC/D,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,EAAE,GAAG,UAAU,CAAC,CAAC;IACnE,CAAC;IAEO,WAAW,CAAC,OAAe;QACjC,OAAO,IAAI,IAAI,CAAC,UAAU,KAAK,OAAO,EAAE,CAAC;IAC3C,CAAC;CACF"}
@@ -1,17 +1,20 @@
1
1
  import { API, Characteristic, DynamicPlatformPlugin, Logging, PlatformAccessory, PlatformConfig, Service, UnknownContext } from 'homebridge';
2
+ import { EcoFlowAccessory } from './accessories/ecoFlowAccessory.js';
3
+ import { CustomCharacteristic } from './characteristics/CustomCharacteristic.js';
2
4
  import { DeviceConfig } from './config.js';
3
5
  /**
4
6
  * HomebridgePlatform
5
7
  * This class is the main constructor for your plugin, this is where you should
6
8
  * parse the user config and discover/register accessories with Homebridge.
7
9
  */
10
+ export type EcoFlowCharacteristic = typeof Characteristic & typeof CustomCharacteristic;
8
11
  export declare class EcoFlowHomebridgePlatform implements DynamicPlatformPlugin {
9
12
  private readonly commonLog;
10
13
  readonly config: PlatformConfig;
11
14
  readonly api: API;
12
15
  private readonly ecoFlowConfig;
13
16
  readonly Service: typeof Service;
14
- readonly Characteristic: typeof Characteristic;
17
+ readonly Characteristic: EcoFlowCharacteristic;
15
18
  readonly accessories: PlatformAccessory[];
16
19
  constructor(commonLog: Logging, config: PlatformConfig, api: API);
17
20
  /**
@@ -20,6 +23,6 @@ export declare class EcoFlowHomebridgePlatform implements DynamicPlatformPlugin
20
23
  */
21
24
  configureAccessory(accessory: PlatformAccessory): void;
22
25
  registerDevices(): void;
23
- cleanupDevices(configuredAccessories: PlatformAccessory[], logs: Record<string, Logging>): void;
24
- createAccessory(accessory: PlatformAccessory<UnknownContext>, config: DeviceConfig, log: Logging): void;
26
+ cleanupDevices(configuredAccessories: PlatformAccessory[], configuredEcoFlowAccessories: EcoFlowAccessory[], logs: Record<string, Logging>): void;
27
+ createAccessory(accessory: PlatformAccessory<UnknownContext>, config: DeviceConfig, log: Logging): EcoFlowAccessory | null;
25
28
  }
package/dist/platform.js CHANGED
@@ -1,13 +1,9 @@
1
1
  import { Delta2Accessory } from './accessories/batteries/delta2Accessory.js';
2
2
  import { Delta2MaxAccessory } from './accessories/batteries/delta2maxAccessory.js';
3
+ import { CustomCharacteristic } from './characteristics/CustomCharacteristic.js';
3
4
  import { DeviceModel } from './config.js';
4
5
  import { Logger } from './helpers/logger.js';
5
6
  import { PLATFORM_NAME, PLUGIN_NAME } from './settings.js';
6
- /**
7
- * HomebridgePlatform
8
- * This class is the main constructor for your plugin, this is where you should
9
- * parse the user config and discover/register accessories with Homebridge.
10
- */
11
7
  export class EcoFlowHomebridgePlatform {
12
8
  commonLog;
13
9
  config;
@@ -23,7 +19,10 @@ export class EcoFlowHomebridgePlatform {
23
19
  this.api = api;
24
20
  this.ecoFlowConfig = this.config;
25
21
  this.Service = api.hap.Service;
26
- this.Characteristic = api.hap.Characteristic;
22
+ this.Characteristic = {
23
+ ...api.hap.Characteristic,
24
+ ...CustomCharacteristic,
25
+ };
27
26
  this.commonLog.debug('Finished initializing platform:', this.config.platform);
28
27
  // Homebridge 1.8.0 introduced a `log.success` method that can be used to log success messages
29
28
  // For users that are on a version prior to 1.8.0, we need a 'polyfill' for this method
@@ -51,6 +50,7 @@ export class EcoFlowHomebridgePlatform {
51
50
  registerDevices() {
52
51
  const logs = {};
53
52
  const configuredAccessories = [];
53
+ const configuredEcoFlowAccessories = [];
54
54
  if (!this.ecoFlowConfig.devices) {
55
55
  return;
56
56
  }
@@ -68,29 +68,41 @@ export class EcoFlowHomebridgePlatform {
68
68
  // see if an accessory with the same uuid has already been registered and restored from
69
69
  // the cached devices we stored in the `configureAccessory` method above
70
70
  let accessory = this.accessories.find(accessory => accessory.UUID === uuid);
71
+ let ecoFlowAccessory = null;
71
72
  if (accessory) {
72
73
  log.info('Restoring existing accessory from cache');
73
- this.createAccessory(accessory, config, log);
74
+ ecoFlowAccessory = this.createAccessory(accessory, config, log);
74
75
  }
75
76
  else {
76
77
  log.info('Adding new accessory');
77
78
  accessory = new this.api.platformAccessory(config.name, uuid);
78
79
  accessory.context.deviceConfig = config;
79
- this.createAccessory(accessory, config, log);
80
+ ecoFlowAccessory = this.createAccessory(accessory, config, log);
80
81
  // link the accessory to your platform
81
82
  this.api.registerPlatformAccessories(PLUGIN_NAME, PLATFORM_NAME, [accessory]);
82
83
  }
83
84
  configuredAccessories.push(accessory);
85
+ if (ecoFlowAccessory) {
86
+ configuredEcoFlowAccessories.push(ecoFlowAccessory);
87
+ }
84
88
  logs[accessory.displayName] = log;
85
89
  }
86
- this.cleanupDevices(configuredAccessories, logs);
90
+ this.cleanupDevices(configuredAccessories, configuredEcoFlowAccessories, logs);
87
91
  }
88
- cleanupDevices(configuredAccessories, logs) {
92
+ cleanupDevices(configuredAccessories, configuredEcoFlowAccessories, logs) {
93
+ const removedAccessories = [];
89
94
  this.accessories
90
95
  .filter(accessory => !configuredAccessories.includes(accessory))
91
96
  .forEach(accessory => {
92
97
  logs[accessory.displayName].info('Removing obsolete accessory');
93
98
  this.api.unregisterPlatformAccessories(PLUGIN_NAME, PLATFORM_NAME, [accessory]);
99
+ removedAccessories.push(accessory);
100
+ });
101
+ configuredEcoFlowAccessories
102
+ .filter(ecoFlowAccessory => !removedAccessories.includes(ecoFlowAccessory.accessory))
103
+ .forEach(ecoFlowAccessory => {
104
+ logs[ecoFlowAccessory.accessory.displayName].info('Initializing accessory');
105
+ ecoFlowAccessory.initialize();
94
106
  });
95
107
  }
96
108
  createAccessory(accessory, config, log) {
@@ -105,7 +117,7 @@ export class EcoFlowHomebridgePlatform {
105
117
  default:
106
118
  log.warn(`"${config.model}" is not supported. Ignoring the device`);
107
119
  }
108
- ecoFlowAccessory?.initialize();
120
+ return ecoFlowAccessory;
109
121
  }
110
122
  }
111
123
  //# sourceMappingURL=platform.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"platform.js","sourceRoot":"","sources":["../src/platform.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"platform.js","sourceRoot":"","sources":["../src/platform.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,7 @@
1
- import { Service } from 'homebridge';
1
+ import { Characteristic, Service } from 'homebridge';
2
2
  import { ServiceBase } from './serviceBase.js';
3
3
  export declare class AccessoryInformationService extends ServiceBase {
4
4
  protected createService(): Service;
5
+ protected addCharacteristics(): Characteristic[];
5
6
  private getVersion;
6
7
  }
@@ -4,14 +4,22 @@ import { fileURLToPath } from 'url';
4
4
  import { ServiceBase } from './serviceBase.js';
5
5
  export class AccessoryInformationService extends ServiceBase {
6
6
  createService() {
7
- const service = this.ecoFlowAccessory.accessory.getService(this.ecoFlowAccessory.platform.Service.AccessoryInformation) ||
8
- this.ecoFlowAccessory.accessory.addService(this.ecoFlowAccessory.platform.Service.AccessoryInformation);
9
- service
10
- .setCharacteristic(this.ecoFlowAccessory.platform.Characteristic.Manufacturer, 'EcoFlow')
11
- .setCharacteristic(this.ecoFlowAccessory.platform.Characteristic.Model, this.ecoFlowAccessory.config.model)
12
- .setCharacteristic(this.ecoFlowAccessory.platform.Characteristic.SerialNumber, this.ecoFlowAccessory.config.serialNumber)
13
- .setCharacteristic(this.ecoFlowAccessory.platform.Characteristic.FirmwareRevision, this.getVersion());
14
- return service;
7
+ return this.getOrAddService(this.platform.Service.AccessoryInformation, 'Information');
8
+ }
9
+ addCharacteristics() {
10
+ const characteristics = [
11
+ this.addCharacteristic(this.platform.Characteristic.Manufacturer),
12
+ this.addCharacteristic(this.platform.Characteristic.Model),
13
+ this.addCharacteristic(this.platform.Characteristic.SerialNumber),
14
+ this.addCharacteristic(this.platform.Characteristic.FirmwareRevision),
15
+ this.addCharacteristic(this.platform.Characteristic.Identify),
16
+ ];
17
+ this.service
18
+ .setCharacteristic(this.platform.Characteristic.Manufacturer, 'EcoFlow')
19
+ .setCharacteristic(this.platform.Characteristic.Model, this.ecoFlowAccessory.config.model)
20
+ .setCharacteristic(this.platform.Characteristic.SerialNumber, this.ecoFlowAccessory.config.serialNumber)
21
+ .setCharacteristic(this.platform.Characteristic.FirmwareRevision, this.getVersion());
22
+ return characteristics;
15
23
  }
16
24
  getVersion() {
17
25
  const filename = fileURLToPath(import.meta.url);
@@ -1 +1 @@
1
- {"version":3,"file":"accessoryInformationService.js","sourceRoot":"","sources":["../../src/services/accessoryInformationService.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,CAAC;AAEpB,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AACpC,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAE/C,MAAM,OAAO,2BAA4B,SAAQ,WAAW;IACvC,aAAa;QAC9B,MAAM,OAAO,GACX,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,OAAO,CAAC,oBAAoB,CAAC;YACvG,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,OAAO,CAAC,oBAAoB,CAAC,CAAC;QAE1G,OAAO;aACJ,iBAAiB,CAAC,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,cAAc,CAAC,YAAY,EAAE,SAAS,CAAC;aACxF,iBAAiB,CAAC,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,cAAc,CAAC,KAAK,EAAE,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,KAAK,CAAC;aAC1G,iBAAiB,CAChB,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,cAAc,CAAC,YAAY,EAC1D,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,YAAY,CAC1C;aACA,iBAAiB,CAAC,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,cAAc,CAAC,gBAAgB,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC;QACxG,OAAO,OAAO,CAAC;IACjB,CAAC;IAEO,UAAU;QAChB,MAAM,QAAQ,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAChD,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QACvC,MAAM,eAAe,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,oBAAoB,CAAC,CAAC;QACpE,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,eAAe,EAAE,MAAM,CAAC,CAAC,CAAC;QACzE,OAAO,WAAW,EAAE,OAAO,CAAC;IAC9B,CAAC;CACF"}
1
+ {"version":3,"file":"accessoryInformationService.js","sourceRoot":"","sources":["../../src/services/accessoryInformationService.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,CAAC;AAEpB,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AACpC,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAE/C,MAAM,OAAO,2BAA4B,SAAQ,WAAW;IACvC,aAAa;QAC9B,OAAO,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,oBAAoB,EAAE,aAAa,CAAC,CAAC;IACzF,CAAC;IAEkB,kBAAkB;QACnC,MAAM,eAAe,GAAG;YACtB,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,YAAY,CAAC;YACjE,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,KAAK,CAAC;YAC1D,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,YAAY,CAAC;YACjE,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,gBAAgB,CAAC;YACrE,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,QAAQ,CAAC;SAC9D,CAAC;QAEF,IAAI,CAAC,OAAO;aACT,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,YAAY,EAAE,SAAS,CAAC;aACvE,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,KAAK,EAAE,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,KAAK,CAAC;aACzF,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,YAAY,EAAE,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,YAAY,CAAC;aACvG,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,gBAAgB,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC;QACvF,OAAO,eAAe,CAAC;IACzB,CAAC;IAEO,UAAU;QAChB,MAAM,QAAQ,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAChD,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QACvC,MAAM,eAAe,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,oBAAoB,CAAC,CAAC;QACpE,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,eAAe,EAAE,MAAM,CAAC,CAAC,CAAC;QACzE,OAAO,WAAW,EAAE,OAAO,CAAC;IAC9B,CAAC;CACF"}
@@ -1,7 +1,8 @@
1
- import { Service } from 'homebridge';
1
+ import { Characteristic, Service } from 'homebridge';
2
2
  import { ServiceBase } from './serviceBase.js';
3
- export declare class BatteryService extends ServiceBase {
3
+ export declare class BatteryStatusService extends ServiceBase {
4
4
  protected createService(): Service;
5
+ protected addCharacteristics(): Characteristic[];
5
6
  updateStatusLowBattery(batteryLevel: number): void;
6
7
  updateBatteryLevel(batteryLevel: number): void;
7
8
  updateChargingState(chargingPower: number): void;
@@ -0,0 +1,32 @@
1
+ import { ServiceBase } from './serviceBase.js';
2
+ export class BatteryStatusService extends ServiceBase {
3
+ createService() {
4
+ return this.getOrAddService(this.platform.Service.Battery, this.ecoFlowAccessory.config.name);
5
+ }
6
+ addCharacteristics() {
7
+ return [
8
+ this.addCharacteristic(this.platform.Characteristic.StatusLowBattery),
9
+ this.addCharacteristic(this.platform.Characteristic.BatteryLevel),
10
+ this.addCharacteristic(this.platform.Characteristic.ChargingState),
11
+ ];
12
+ }
13
+ updateStatusLowBattery(batteryLevel) {
14
+ const statusLowBattery = batteryLevel < 20;
15
+ this.log.debug('Status Low Battery ->', statusLowBattery);
16
+ this.service
17
+ .getCharacteristic(this.platform.Characteristic.StatusLowBattery)
18
+ .updateValue(statusLowBattery
19
+ ? this.platform.Characteristic.StatusLowBattery.BATTERY_LEVEL_LOW
20
+ : this.platform.Characteristic.StatusLowBattery.BATTERY_LEVEL_NORMAL);
21
+ }
22
+ updateBatteryLevel(batteryLevel) {
23
+ this.log.debug('BatteryLevel ->', batteryLevel);
24
+ this.service.getCharacteristic(this.platform.Characteristic.BatteryLevel).updateValue(batteryLevel);
25
+ }
26
+ updateChargingState(chargingPower) {
27
+ const isCharging = chargingPower > 0;
28
+ this.log.debug('ChargingState ->', isCharging);
29
+ this.service.getCharacteristic(this.platform.Characteristic.ChargingState).updateValue(isCharging);
30
+ }
31
+ }
32
+ //# sourceMappingURL=batteryStatusService.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"batteryStatusService.js","sourceRoot":"","sources":["../../src/services/batteryStatusService.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAE/C,MAAM,OAAO,oBAAqB,SAAQ,WAAW;IAChC,aAAa;QAC9B,OAAO,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAChG,CAAC;IAEkB,kBAAkB;QACnC,OAAO;YACL,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,gBAAgB,CAAC;YACrE,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,YAAY,CAAC;YACjE,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,aAAa,CAAC;SACnE,CAAC;IACJ,CAAC;IAEM,sBAAsB,CAAC,YAAoB;QAChD,MAAM,gBAAgB,GAAG,YAAY,GAAG,EAAE,CAAC;QAC3C,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,uBAAuB,EAAE,gBAAgB,CAAC,CAAC;QAC1D,IAAI,CAAC,OAAO;aACT,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,gBAAgB,CAAC;aAChE,WAAW,CACV,gBAAgB;YACd,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,gBAAgB,CAAC,iBAAiB;YACjE,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,gBAAgB,CAAC,oBAAoB,CACvE,CAAC;IACN,CAAC;IAEM,kBAAkB,CAAC,YAAoB;QAC5C,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,iBAAiB,EAAE,YAAY,CAAC,CAAC;QAChD,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,YAAY,CAAC,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC;IACtG,CAAC;IAEM,mBAAmB,CAAC,aAAqB;QAC9C,MAAM,UAAU,GAAG,aAAa,GAAG,CAAC,CAAC;QACrC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,kBAAkB,EAAE,UAAU,CAAC,CAAC;QAC/C,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,aAAa,CAAC,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;IACrG,CAAC;CACF"}
@@ -1,4 +1,4 @@
1
- import { Service } from 'homebridge';
1
+ import { Characteristic, CharacteristicValue, Service, WithUUID } from 'homebridge';
2
2
  import { EcoFlowAccessory } from '../accessories/ecoFlowAccessory.js';
3
3
  import { ServiceBase } from './serviceBase.js';
4
4
  export interface MqttSetEnabledMessageParams {
@@ -8,10 +8,17 @@ export declare abstract class OutletsServiceBase extends ServiceBase {
8
8
  private readonly serviceSubType;
9
9
  constructor(serviceSubType: string, ecoFlowAccessory: EcoFlowAccessory);
10
10
  updateState(state: boolean): void;
11
- updateInUse(isInUse: boolean): void;
11
+ updateOutputConsumption(watt: number): void;
12
+ updateInputConsumption(watt: number): void;
13
+ updateBatteryLevel(batteryLevel: number): void;
12
14
  protected createService(): Service;
15
+ protected addCharacteristics(): Characteristic[];
13
16
  protected abstract setOn(value: boolean, revert: () => void): Promise<void>;
14
17
  protected sendOn<TParams>(moduleType: number, operateType: string, params: TParams, revert: () => void): Promise<void>;
15
- private addCharacteristics;
16
- private getOrAddService;
18
+ protected updateCharacteristic(characteristic: WithUUID<{
19
+ new (): Characteristic;
20
+ }>, name: string, value: CharacteristicValue): void;
21
+ private tryAddCustomCharacteristic;
22
+ private updateCustomCharacteristic;
23
+ private get serviceName();
17
24
  }
@@ -1,3 +1,4 @@
1
+ import { AdditionalBatteryCharacteristicType as CharacteristicType } from '../config.js';
1
2
  import { ServiceBase } from './serviceBase.js';
2
3
  export class OutletsServiceBase extends ServiceBase {
3
4
  serviceSubType;
@@ -6,33 +7,56 @@ export class OutletsServiceBase extends ServiceBase {
6
7
  this.serviceSubType = serviceSubType;
7
8
  }
8
9
  updateState(state) {
9
- this.log.debug(`${this.serviceSubType} State ->`, state);
10
- this.service.getCharacteristic(this.ecoFlowAccessory.platform.Characteristic.On).updateValue(state);
10
+ this.updateCharacteristic(this.platform.Characteristic.On, 'State', state);
11
11
  }
12
- updateInUse(isInUse) {
13
- this.log.debug(`${this.serviceSubType} InUse ->`, isInUse);
14
- this.service.getCharacteristic(this.ecoFlowAccessory.platform.Characteristic.OutletInUse).updateValue(isInUse);
12
+ updateOutputConsumption(watt) {
13
+ this.updateCharacteristic(this.platform.Characteristic.OutletInUse, 'InUse', watt > 0);
14
+ this.updateCustomCharacteristic(this.platform.Characteristic.PowerConsumption.OutputConsumptionWatts, 'Output Consumption, W', watt, CharacteristicType.OutputConsumptionInWatts);
15
15
  }
16
- createService() {
17
- const service = this.getOrAddService(this.ecoFlowAccessory.config.name, this.serviceSubType);
18
- this.addCharacteristics(service);
19
- return service;
16
+ updateInputConsumption(watt) {
17
+ this.updateCustomCharacteristic(this.platform.Characteristic.PowerConsumption.InputConsumptionWatts, 'Input Consumption, W', watt, CharacteristicType.InputConsumptionInWatts);
20
18
  }
21
- sendOn(moduleType, operateType, params, revert) {
22
- return this.ecoFlowAccessory.sendSetCommand(moduleType, operateType, params, revert);
19
+ updateBatteryLevel(batteryLevel) {
20
+ this.updateCustomCharacteristic(this.platform.Characteristic.BatteryLevel, 'Battery Level, %', batteryLevel, CharacteristicType.BatteryLevel);
23
21
  }
24
- addCharacteristics(service) {
25
- service.getCharacteristic(this.ecoFlowAccessory.platform.Characteristic.On).onSet(value => {
22
+ createService() {
23
+ return this.getOrAddServiceById(this.platform.Service.Outlet, this.serviceName, this.serviceSubType);
24
+ }
25
+ addCharacteristics() {
26
+ const onCharacteristic = this.addCharacteristic(this.platform.Characteristic.On);
27
+ onCharacteristic.onSet(value => {
26
28
  const newValue = value;
27
29
  this.setOn(newValue, () => this.updateState(!newValue));
28
30
  });
31
+ const characteristics = [
32
+ this.addCharacteristic(this.platform.Characteristic.OutletInUse),
33
+ onCharacteristic,
34
+ this.tryAddCustomCharacteristic(this.platform.Characteristic.PowerConsumption.InputConsumptionWatts, CharacteristicType.InputConsumptionInWatts),
35
+ this.tryAddCustomCharacteristic(this.platform.Characteristic.PowerConsumption.OutputConsumptionWatts, CharacteristicType.OutputConsumptionInWatts),
36
+ this.tryAddCustomCharacteristic(this.platform.Characteristic.BatteryLevel, CharacteristicType.BatteryLevel),
37
+ ];
38
+ this.service.setCharacteristic(this.platform.Characteristic.Name, this.serviceName);
39
+ return characteristics.filter(characteristic => characteristic !== null);
40
+ }
41
+ sendOn(moduleType, operateType, params, revert) {
42
+ return this.ecoFlowAccessory.sendSetCommand(moduleType, operateType, params, revert);
43
+ }
44
+ updateCharacteristic(characteristic, name, value) {
45
+ super.updateCharacteristic(characteristic, `${this.serviceSubType} ${name}`, value);
46
+ }
47
+ tryAddCustomCharacteristic(characteristic, characteristicType) {
48
+ if (this.ecoFlowAccessory.config.battery?.additionalCharacteristics?.includes(characteristicType)) {
49
+ return this.addCharacteristic(characteristic);
50
+ }
51
+ return null;
52
+ }
53
+ updateCustomCharacteristic(characteristic, name, value, characteristicType) {
54
+ if (this.ecoFlowAccessory.config.battery?.additionalCharacteristics?.includes(characteristicType)) {
55
+ super.updateCharacteristic(characteristic, name, value);
56
+ }
29
57
  }
30
- getOrAddService(deviceName, serviceSubType) {
31
- const serviceName = deviceName + ' ' + serviceSubType;
32
- const service = this.ecoFlowAccessory.accessory.getServiceById(this.ecoFlowAccessory.platform.Service.Outlet, serviceSubType) ||
33
- this.ecoFlowAccessory.accessory.addService(this.ecoFlowAccessory.platform.Service.Outlet, serviceName, serviceSubType);
34
- service.setCharacteristic(this.ecoFlowAccessory.platform.Characteristic.Name, serviceName);
35
- return service;
58
+ get serviceName() {
59
+ return `${this.ecoFlowAccessory.config.name} ${this.serviceSubType}`;
36
60
  }
37
61
  }
38
62
  //# sourceMappingURL=outletServiceBase.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"outletServiceBase.js","sourceRoot":"","sources":["../../src/services/outletServiceBase.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAM/C,MAAM,OAAgB,kBAAmB,SAAQ,WAAW;IAEvC;IADnB,YACmB,cAAsB,EACvC,gBAAkC;QAElC,KAAK,CAAC,gBAAgB,CAAC,CAAC;QAHP,mBAAc,GAAd,cAAc,CAAQ;IAIzC,CAAC;IAEM,WAAW,CAAC,KAAc;QAC/B,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,cAAc,WAAW,EAAE,KAAK,CAAC,CAAC;QACzD,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;IACtG,CAAC;IAEM,WAAW,CAAC,OAAgB;QACjC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,cAAc,WAAW,EAAE,OAAO,CAAC,CAAC;QAC3D,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;IACjH,CAAC;IAEkB,aAAa;QAC9B,MAAM,OAAO,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;QAC7F,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC;QACjC,OAAO,OAAO,CAAC;IACjB,CAAC;IAIS,MAAM,CACd,UAAkB,EAClB,WAAmB,EACnB,MAAe,EACf,MAAkB;QAElB,OAAO,IAAI,CAAC,gBAAgB,CAAC,cAAc,CAAC,UAAU,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IACvF,CAAC;IAEO,kBAAkB,CAAC,OAAgB;QACzC,OAAO,CAAC,iBAAiB,CAAC,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE;YACxF,MAAM,QAAQ,GAAG,KAAgB,CAAC;YAClC,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;QAC1D,CAAC,CAAC,CAAC;IACL,CAAC;IAEO,eAAe,CAAC,UAAkB,EAAE,cAAsB;QAChE,MAAM,WAAW,GAAG,UAAU,GAAG,GAAG,GAAG,cAAc,CAAC;QACtD,MAAM,OAAO,GACX,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,EAAE,cAAc,CAAC;YAC7G,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,UAAU,CACxC,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,EAC7C,WAAW,EACX,cAAc,CACf,CAAC;QAEJ,OAAO,CAAC,iBAAiB,CAAC,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,cAAc,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;QAE3F,OAAO,OAAO,CAAC;IACjB,CAAC;CACF"}
1
+ {"version":3,"file":"outletServiceBase.js","sourceRoot":"","sources":["../../src/services/outletServiceBase.ts"],"names":[],"mappings":"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"}
@@ -1,11 +1,24 @@
1
- import { Logging, Service } from 'homebridge';
1
+ import { Characteristic, CharacteristicValue, Logging, Service, WithUUID } from 'homebridge';
2
2
  import { EcoFlowAccessory } from '../accessories/ecoFlowAccessory.js';
3
+ import { EcoFlowHomebridgePlatform } from '../platform.js';
3
4
  export declare abstract class ServiceBase {
4
5
  protected readonly ecoFlowAccessory: EcoFlowAccessory;
5
6
  protected readonly log: Logging;
7
+ protected readonly platform: EcoFlowHomebridgePlatform;
8
+ protected characteristics: Characteristic[];
6
9
  private _service;
7
10
  constructor(ecoFlowAccessory: EcoFlowAccessory);
8
11
  initialize(): void;
12
+ cleanupCharacteristics(): void;
9
13
  get service(): Service;
10
14
  protected abstract createService(): Service;
15
+ protected abstract addCharacteristics(): Characteristic[];
16
+ protected addCharacteristic(characteristic: WithUUID<{
17
+ new (): Characteristic;
18
+ }>): Characteristic;
19
+ protected getOrAddService(service: WithUUID<typeof Service>, displayName?: string): Service;
20
+ protected getOrAddServiceById(service: WithUUID<typeof Service>, serviceName: string, serviceSubType: string): Service;
21
+ protected updateCharacteristic(characteristic: WithUUID<{
22
+ new (): Characteristic;
23
+ }>, name: string, value: CharacteristicValue): void;
11
24
  }
@@ -1,17 +1,52 @@
1
1
  export class ServiceBase {
2
2
  ecoFlowAccessory;
3
3
  log;
4
+ platform;
5
+ characteristics = [];
4
6
  _service = null;
5
7
  constructor(ecoFlowAccessory) {
6
8
  this.ecoFlowAccessory = ecoFlowAccessory;
7
9
  this.log = ecoFlowAccessory.log;
10
+ this.platform = ecoFlowAccessory.platform;
8
11
  }
9
12
  initialize() {
10
13
  this._service = this.createService();
14
+ this.characteristics = this.addCharacteristics();
15
+ this.characteristics.push(this.addCharacteristic(this.platform.Characteristic.Name));
16
+ }
17
+ cleanupCharacteristics() {
18
+ this.service.characteristics
19
+ .filter(characteristic => !this.characteristics.includes(characteristic))
20
+ .forEach(characteristic => {
21
+ this.log.warn(`[${this.service.displayName}] Removing obsolete characteristic:`, characteristic.displayName);
22
+ this.service.removeCharacteristic(characteristic);
23
+ });
11
24
  }
12
25
  // Getter for service
13
26
  get service() {
14
27
  return this._service;
15
28
  }
29
+ addCharacteristic(characteristic) {
30
+ const existingCharacteristic = this.service.getCharacteristic(characteristic);
31
+ if (!existingCharacteristic) {
32
+ return this.service.addCharacteristic(characteristic);
33
+ }
34
+ return existingCharacteristic;
35
+ }
36
+ getOrAddService(service, displayName) {
37
+ const result = this.ecoFlowAccessory.accessory.getService(service) ||
38
+ this.ecoFlowAccessory.accessory.addService(service, displayName, service.UUID);
39
+ result.displayName = displayName ?? result.displayName;
40
+ return result;
41
+ }
42
+ getOrAddServiceById(service, serviceName, serviceSubType) {
43
+ const result = this.ecoFlowAccessory.accessory.getServiceById(service, serviceSubType) ||
44
+ this.ecoFlowAccessory.accessory.addService(service, serviceName, serviceSubType);
45
+ return result;
46
+ }
47
+ updateCharacteristic(characteristic, name, value) {
48
+ this.log.debug(`${name} ->`, value);
49
+ this.service.getCharacteristic(characteristic).updateValue(value);
50
+ }
16
51
  }
17
52
  //# sourceMappingURL=serviceBase.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"serviceBase.js","sourceRoot":"","sources":["../../src/services/serviceBase.ts"],"names":[],"mappings":"AAGA,MAAM,OAAgB,WAAW;IAIA;IAHZ,GAAG,CAAU;IACxB,QAAQ,GAAmB,IAAI,CAAC;IAExC,YAA+B,gBAAkC;QAAlC,qBAAgB,GAAhB,gBAAgB,CAAkB;QAC/D,IAAI,CAAC,GAAG,GAAG,gBAAgB,CAAC,GAAG,CAAC;IAClC,CAAC;IAEM,UAAU;QACf,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;IACvC,CAAC;IAED,qBAAqB;IACrB,IAAW,OAAO;QAChB,OAAO,IAAI,CAAC,QAAS,CAAC;IACxB,CAAC;CAGF"}
1
+ {"version":3,"file":"serviceBase.js","sourceRoot":"","sources":["../../src/services/serviceBase.ts"],"names":[],"mappings":"AAIA,MAAM,OAAgB,WAAW;IAMA;IALZ,GAAG,CAAU;IACb,QAAQ,CAA4B;IAC7C,eAAe,GAAqB,EAAE,CAAC;IACzC,QAAQ,GAAmB,IAAI,CAAC;IAExC,YAA+B,gBAAkC;QAAlC,qBAAgB,GAAhB,gBAAgB,CAAkB;QAC/D,IAAI,CAAC,GAAG,GAAG,gBAAgB,CAAC,GAAG,CAAC;QAChC,IAAI,CAAC,QAAQ,GAAG,gBAAgB,CAAC,QAAQ,CAAC;IAC5C,CAAC;IAEM,UAAU;QACf,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;QACrC,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,kBAAkB,EAAE,CAAC;QACjD,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC;IACvF,CAAC;IAEM,sBAAsB;QAC3B,IAAI,CAAC,OAAO,CAAC,eAAe;aACzB,MAAM,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC;aACxE,OAAO,CAAC,cAAc,CAAC,EAAE;YACxB,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,WAAW,qCAAqC,EAAE,cAAc,CAAC,WAAW,CAAC,CAAC;YAC7G,IAAI,CAAC,OAAO,CAAC,oBAAoB,CAAC,cAAc,CAAC,CAAC;QACpD,CAAC,CAAC,CAAC;IACP,CAAC;IAED,qBAAqB;IACrB,IAAW,OAAO;QAChB,OAAO,IAAI,CAAC,QAAS,CAAC;IACxB,CAAC;IAMS,iBAAiB,CAAC,cAAoD;QAC9E,MAAM,sBAAsB,GAAG,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,cAAc,CAAC,CAAC;QAC9E,IAAI,CAAC,sBAAsB,EAAE,CAAC;YAC5B,OAAO,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,cAAc,CAAC,CAAC;QACxD,CAAC;QAED,OAAO,sBAAsB,CAAC;IAChC,CAAC;IAES,eAAe,CAAC,OAAiC,EAAE,WAAoB;QAC/E,MAAM,MAAM,GACV,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,UAAU,CAAC,OAAO,CAAC;YACnD,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,UAAU,CAAC,OAAO,EAAE,WAAW,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;QACjF,MAAM,CAAC,WAAW,GAAG,WAAW,IAAI,MAAM,CAAC,WAAW,CAAC;QAEvD,OAAO,MAAM,CAAC;IAChB,CAAC;IAES,mBAAmB,CAC3B,OAAiC,EACjC,WAAmB,EACnB,cAAsB;QAEtB,MAAM,MAAM,GACV,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,cAAc,CAAC,OAAO,EAAE,cAAc,CAAC;YACvE,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,UAAU,CAAC,OAAO,EAAE,WAAW,EAAE,cAAc,CAAC,CAAC;QAEnF,OAAO,MAAM,CAAC;IAChB,CAAC;IAES,oBAAoB,CAC5B,cAAoD,EACpD,IAAY,EACZ,KAA0B;QAE1B,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,IAAI,KAAK,EAAE,KAAK,CAAC,CAAC;QACpC,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,cAAc,CAAC,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;IACpE,CAAC;CACF"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "displayName": "Homebridge Ecoflow",
3
3
  "name": "@pietrolubini/homebridge-ecoflow",
4
- "version": "1.1.0",
4
+ "version": "1.2.0",
5
5
  "description": "Homebridge plugin for EcoFlow devices",
6
6
  "license": "MIT",
7
7
  "author": "PietroLubini",
@@ -1,29 +0,0 @@
1
- import { ServiceBase } from './serviceBase.js';
2
- export class BatteryService extends ServiceBase {
3
- createService() {
4
- const service = this.ecoFlowAccessory.accessory.getService(this.ecoFlowAccessory.platform.Service.Battery) ||
5
- this.ecoFlowAccessory.accessory.addService(this.ecoFlowAccessory.platform.Service.Battery, this.ecoFlowAccessory.config.name);
6
- return service;
7
- }
8
- updateStatusLowBattery(batteryLevel) {
9
- const statusLowBattery = batteryLevel < 20;
10
- this.log.debug('Status Low Battery ->', statusLowBattery);
11
- this.service
12
- .getCharacteristic(this.ecoFlowAccessory.platform.Characteristic.StatusLowBattery)
13
- .updateValue(statusLowBattery
14
- ? this.ecoFlowAccessory.platform.Characteristic.StatusLowBattery.BATTERY_LEVEL_LOW
15
- : this.ecoFlowAccessory.platform.Characteristic.StatusLowBattery.BATTERY_LEVEL_NORMAL);
16
- }
17
- updateBatteryLevel(batteryLevel) {
18
- this.log.debug('BatteryLevel ->', batteryLevel);
19
- this.service
20
- .getCharacteristic(this.ecoFlowAccessory.platform.Characteristic.BatteryLevel)
21
- .updateValue(batteryLevel);
22
- }
23
- updateChargingState(chargingPower) {
24
- const isCharging = chargingPower > 0;
25
- this.log.debug('ChargingState ->', isCharging);
26
- this.service.getCharacteristic(this.ecoFlowAccessory.platform.Characteristic.ChargingState).updateValue(isCharging);
27
- }
28
- }
29
- //# sourceMappingURL=batteryService.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"batteryService.js","sourceRoot":"","sources":["../../src/services/batteryService.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAE/C,MAAM,OAAO,cAAe,SAAQ,WAAW;IAC1B,aAAa;QAC9B,MAAM,OAAO,GACX,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC;YAC1F,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,UAAU,CACxC,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,EAC9C,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,IAAI,CAClC,CAAC;QACJ,OAAO,OAAO,CAAC;IACjB,CAAC;IAEM,sBAAsB,CAAC,YAAoB;QAChD,MAAM,gBAAgB,GAAG,YAAY,GAAG,EAAE,CAAC;QAC3C,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,uBAAuB,EAAE,gBAAgB,CAAC,CAAC;QAC1D,IAAI,CAAC,OAAO;aACT,iBAAiB,CAAC,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,cAAc,CAAC,gBAAgB,CAAC;aACjF,WAAW,CACV,gBAAgB;YACd,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,cAAc,CAAC,gBAAgB,CAAC,iBAAiB;YAClF,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,cAAc,CAAC,gBAAgB,CAAC,oBAAoB,CACxF,CAAC;IACN,CAAC;IAEM,kBAAkB,CAAC,YAAoB;QAC5C,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,iBAAiB,EAAE,YAAY,CAAC,CAAC;QAChD,IAAI,CAAC,OAAO;aACT,iBAAiB,CAAC,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,cAAc,CAAC,YAAY,CAAC;aAC7E,WAAW,CAAC,YAAY,CAAC,CAAC;IAC/B,CAAC;IAEM,mBAAmB,CAAC,aAAqB;QAC9C,MAAM,UAAU,GAAG,aAAa,GAAG,CAAC,CAAC;QACrC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,kBAAkB,EAAE,UAAU,CAAC,CAAC;QAC/C,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,cAAc,CAAC,aAAa,CAAC,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;IACtH,CAAC;CACF"}