@pietrolubini/homebridge-ecoflow 1.2.0 → 1.3.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 (205) hide show
  1. package/.gitattributes +7 -0
  2. package/.prettierrc.json +1 -0
  3. package/README.md +154 -24
  4. package/config.schema.json +73 -2
  5. package/dist/accessories/batteries/batteryAccessoryBase.d.ts +26 -0
  6. package/dist/accessories/batteries/batteryAccessoryBase.js +126 -0
  7. package/dist/accessories/batteries/batteryAccessoryBase.js.map +1 -0
  8. package/dist/accessories/batteries/batteryAccessoryBase.spec.d.ts +1 -0
  9. package/dist/accessories/batteries/delta2Accessory.d.ts +2 -2
  10. package/dist/accessories/batteries/delta2Accessory.js +6 -2
  11. package/dist/accessories/batteries/delta2Accessory.js.map +1 -1
  12. package/dist/accessories/batteries/delta2maxAccessory.d.ts +2 -2
  13. package/dist/accessories/batteries/delta2maxAccessory.js +6 -2
  14. package/dist/accessories/batteries/delta2maxAccessory.js.map +1 -1
  15. package/dist/accessories/batteries/interfaces/httpApiBatteryContracts.d.ts +33 -0
  16. package/dist/accessories/batteries/interfaces/httpApiBatteryContracts.js +3 -0
  17. package/dist/accessories/batteries/interfaces/httpApiBatteryContracts.js.map +1 -0
  18. package/dist/accessories/batteries/interfaces/mqttApiBatteryContracts.d.ts +36 -0
  19. package/dist/accessories/batteries/interfaces/mqttApiBatteryContracts.js +18 -0
  20. package/dist/accessories/batteries/interfaces/mqttApiBatteryContracts.js.map +1 -0
  21. package/dist/accessories/batteries/services/outletAcService.d.ts +8 -0
  22. package/dist/accessories/batteries/services/outletAcService.js +24 -0
  23. package/dist/accessories/batteries/services/outletAcService.js.map +1 -0
  24. package/dist/accessories/batteries/services/outletAcService.spec.d.ts +1 -0
  25. package/dist/accessories/batteries/services/outletBatteryServiceBase.d.ts +5 -0
  26. package/dist/accessories/batteries/services/outletBatteryServiceBase.js +18 -0
  27. package/dist/accessories/batteries/services/outletBatteryServiceBase.js.map +1 -0
  28. package/dist/accessories/batteries/services/outletCarService.d.ts +6 -0
  29. package/dist/accessories/batteries/services/outletCarService.js +17 -0
  30. package/dist/accessories/batteries/services/outletCarService.js.map +1 -0
  31. package/dist/accessories/batteries/services/outletCarService.spec.d.ts +1 -0
  32. package/dist/accessories/batteries/services/outletUsbService.d.ts +6 -0
  33. package/dist/accessories/batteries/services/outletUsbService.js +15 -0
  34. package/dist/accessories/batteries/services/outletUsbService.js.map +1 -0
  35. package/dist/accessories/batteries/services/outletUsbService.spec.d.ts +1 -0
  36. package/dist/accessories/batteries/simulations/batterySimulator.d.ts +6 -0
  37. package/dist/accessories/batteries/simulations/batterySimulator.js +60 -0
  38. package/dist/accessories/batteries/simulations/batterySimulator.js.map +1 -0
  39. package/dist/accessories/ecoFlowAccessoryBase.d.ts +41 -0
  40. package/dist/accessories/ecoFlowAccessoryBase.js +114 -0
  41. package/dist/accessories/ecoFlowAccessoryBase.js.map +1 -0
  42. package/dist/accessories/ecoFlowAccessoryBase.spec.d.ts +1 -0
  43. package/dist/accessories/ecoFlowAccessoryWithQuotaBase.d.ts +15 -0
  44. package/dist/accessories/ecoFlowAccessoryWithQuotaBase.js +34 -0
  45. package/dist/accessories/ecoFlowAccessoryWithQuotaBase.js.map +1 -0
  46. package/dist/accessories/ecoFlowAccessoryWithQuotaBase.spec.d.ts +1 -0
  47. package/dist/accessories/powerstream/interfaces/httpApiPowerStreamContracts.d.ts +16 -0
  48. package/dist/accessories/powerstream/interfaces/httpApiPowerStreamContracts.js +3 -0
  49. package/dist/accessories/powerstream/interfaces/httpApiPowerStreamContracts.js.map +1 -0
  50. package/dist/accessories/powerstream/interfaces/mqttApiPowerStreamContracts.d.ts +41 -0
  51. package/dist/accessories/powerstream/interfaces/mqttApiPowerStreamContracts.js +21 -0
  52. package/dist/accessories/powerstream/interfaces/mqttApiPowerStreamContracts.js.map +1 -0
  53. package/dist/accessories/powerstream/powerStreamAccessory.d.ts +26 -0
  54. package/dist/accessories/powerstream/powerStreamAccessory.js +113 -0
  55. package/dist/accessories/powerstream/powerStreamAccessory.js.map +1 -0
  56. package/dist/accessories/powerstream/powerStreamAccessory.spec.d.ts +1 -0
  57. package/dist/accessories/powerstream/services/brightnessService.d.ts +7 -0
  58. package/dist/accessories/powerstream/services/brightnessService.js +27 -0
  59. package/dist/accessories/powerstream/services/brightnessService.js.map +1 -0
  60. package/dist/accessories/powerstream/services/brightnessService.spec.d.ts +1 -0
  61. package/dist/accessories/powerstream/services/outletInvService.d.ts +7 -0
  62. package/dist/accessories/powerstream/services/outletInvService.js +14 -0
  63. package/dist/accessories/powerstream/services/outletInvService.js.map +1 -0
  64. package/dist/accessories/powerstream/services/outletInvService.spec.d.ts +1 -0
  65. package/dist/accessories/powerstream/services/outletService.d.ts +8 -0
  66. package/dist/accessories/powerstream/services/outletService.js +14 -0
  67. package/dist/accessories/powerstream/services/outletService.js.map +1 -0
  68. package/dist/accessories/powerstream/services/outletService.spec.d.ts +1 -0
  69. package/dist/accessories/powerstream/services/powerDemandService.d.ts +7 -0
  70. package/dist/accessories/powerstream/services/powerDemandService.js +27 -0
  71. package/dist/accessories/powerstream/services/powerDemandService.js.map +1 -0
  72. package/dist/accessories/powerstream/services/powerDemandService.spec.d.ts +1 -0
  73. package/dist/accessories/powerstream/simulations/powerStreamSimulator.d.ts +6 -0
  74. package/dist/accessories/powerstream/simulations/powerStreamSimulator.js +39 -0
  75. package/dist/accessories/powerstream/simulations/powerStreamSimulator.js.map +1 -0
  76. package/dist/apis/containers/deviceInfo.d.ts +13 -0
  77. package/dist/apis/containers/deviceInfo.js +23 -0
  78. package/dist/apis/containers/deviceInfo.js.map +1 -0
  79. package/dist/apis/containers/deviceInfo.spec.d.ts +1 -0
  80. package/dist/apis/containers/mqttClientContainer.d.ts +17 -0
  81. package/dist/apis/containers/mqttClientContainer.js +45 -0
  82. package/dist/apis/containers/mqttClientContainer.js.map +1 -0
  83. package/dist/apis/containers/mqttClientContainer.spec.d.ts +1 -0
  84. package/dist/apis/containers/mqttDevice.d.ts +15 -0
  85. package/dist/apis/containers/mqttDevice.js +43 -0
  86. package/dist/apis/containers/mqttDevice.js.map +1 -0
  87. package/dist/apis/containers/mqttDevice.spec.d.ts +1 -0
  88. package/dist/apis/ecoFlowHttpApiManager.d.ts +13 -0
  89. package/dist/apis/{ecoFlowHttpApi.js → ecoFlowHttpApiManager.js} +58 -44
  90. package/dist/apis/ecoFlowHttpApiManager.js.map +1 -0
  91. package/dist/apis/ecoFlowHttpApiManager.spec.d.ts +1 -0
  92. package/dist/apis/ecoFlowMqttApiManager.d.ts +25 -0
  93. package/dist/apis/ecoFlowMqttApiManager.js +152 -0
  94. package/dist/apis/ecoFlowMqttApiManager.js.map +1 -0
  95. package/dist/apis/ecoFlowMqttApiManager.spec.d.ts +1 -0
  96. package/dist/apis/interfaces/httpApiContracts.d.ts +30 -0
  97. package/dist/apis/interfaces/httpApiContracts.js +9 -0
  98. package/dist/apis/interfaces/httpApiContracts.js.map +1 -0
  99. package/dist/apis/interfaces/mqttApiContracts.d.ts +26 -0
  100. package/dist/apis/interfaces/mqttApiContracts.js +9 -0
  101. package/dist/apis/interfaces/mqttApiContracts.js.map +1 -0
  102. package/dist/apis/simulations/mockMqttClient.d.ts +15 -0
  103. package/dist/apis/simulations/mockMqttClient.js +59 -0
  104. package/dist/apis/simulations/mockMqttClient.js.map +1 -0
  105. package/dist/apis/simulations/mockMqttClient.spec.d.ts +1 -0
  106. package/dist/apis/simulations/simulator.d.ts +13 -0
  107. package/dist/apis/simulations/simulator.js +26 -0
  108. package/dist/apis/simulations/simulator.js.map +1 -0
  109. package/dist/characteristics/customCharacteristic.d.ts +18 -0
  110. package/dist/characteristics/customCharacteristic.js +94 -0
  111. package/dist/characteristics/customCharacteristic.js.map +1 -0
  112. package/dist/characteristics/customCharacteristic.spec.d.ts +1 -0
  113. package/dist/config.d.ts +33 -4
  114. package/dist/config.js +18 -4
  115. package/dist/config.js.map +1 -1
  116. package/dist/helpers/logger.js +5 -1
  117. package/dist/helpers/logger.js.map +1 -1
  118. package/dist/helpers/logger.spec.d.ts +1 -0
  119. package/dist/helpers/machineIdProvider.d.ts +4 -0
  120. package/dist/helpers/machineIdProvider.js +19 -0
  121. package/dist/helpers/machineIdProvider.js.map +1 -0
  122. package/dist/helpers/machineIdProvider.spec.d.ts +1 -0
  123. package/dist/helpers/tests/accessoryTestHelper.d.ts +5 -0
  124. package/dist/helpers/tests/serviceTestHelper.d.ts +6 -0
  125. package/dist/helpers/tests/sleep.d.ts +1 -0
  126. package/dist/homebridge-ui/public/index.d.ts +2 -0
  127. package/dist/homebridge-ui/public/index.html +6 -0
  128. package/dist/homebridge-ui/public/index.js +1 -0
  129. package/dist/homebridge-ui/public/index.spec.d.ts +1 -0
  130. package/dist/homebridge-ui/public/interfaces/contracts.d.ts +13 -0
  131. package/dist/homebridge-ui/public/interfaces/homebridge.d.ts +52 -0
  132. package/dist/homebridge-ui/public/renderers/componentRenderer.d.ts +6 -0
  133. package/dist/homebridge-ui/public/renderers/componentRenderer.spec.d.ts +1 -0
  134. package/dist/homebridge-ui/public/renderers/pluginConfigDevicesRenderer.d.ts +20 -0
  135. package/dist/homebridge-ui/public/renderers/pluginConfigDevicesRenderer.spec.d.ts +1 -0
  136. package/dist/homebridge-ui/public/renderers/pluginConfigNameRenderer.d.ts +5 -0
  137. package/dist/homebridge-ui/public/renderers/pluginConfigNameRenderer.spec.d.ts +1 -0
  138. package/dist/homebridge-ui/public/renderers/pluginConfigRenderer.d.ts +6 -0
  139. package/dist/homebridge-ui/public/renderers/pluginConfigRenderer.spec.d.ts +1 -0
  140. package/dist/homebridge-ui/public/renderers/pluginConfigRendererBase.d.ts +9 -0
  141. package/dist/index.js +7 -4
  142. package/dist/index.js.map +1 -1
  143. package/dist/index.spec.d.ts +1 -0
  144. package/dist/platform.d.ts +12 -8
  145. package/dist/platform.js +91 -30
  146. package/dist/platform.js.map +1 -1
  147. package/dist/platform.spec.d.ts +1 -0
  148. package/dist/services/accessoryInformationService.d.ts +5 -3
  149. package/dist/services/accessoryInformationService.js +15 -12
  150. package/dist/services/accessoryInformationService.js.map +1 -1
  151. package/dist/services/accessoryInformationService.spec.d.ts +1 -0
  152. package/dist/services/batteryStatusService.d.ts +6 -4
  153. package/dist/services/batteryStatusService.js +19 -17
  154. package/dist/services/batteryStatusService.js.map +1 -1
  155. package/dist/services/batteryStatusService.spec.d.ts +1 -0
  156. package/dist/services/fanServiceBase.d.ts +16 -0
  157. package/dist/services/fanServiceBase.js +42 -0
  158. package/dist/services/fanServiceBase.js.map +1 -0
  159. package/dist/services/fanServiceBase.spec.d.ts +1 -0
  160. package/dist/services/lightBulbServiceBase.d.ts +16 -0
  161. package/dist/services/lightBulbServiceBase.js +42 -0
  162. package/dist/services/lightBulbServiceBase.js.map +1 -0
  163. package/dist/services/lightBulbServiceBase.spec.d.ts +1 -0
  164. package/dist/services/outletServiceBase.d.ts +7 -15
  165. package/dist/services/outletServiceBase.js +20 -28
  166. package/dist/services/outletServiceBase.js.map +1 -1
  167. package/dist/services/outletServiceBase.spec.d.ts +1 -0
  168. package/dist/services/serviceBase.d.ts +10 -5
  169. package/dist/services/serviceBase.js +31 -8
  170. package/dist/services/serviceBase.js.map +1 -1
  171. package/dist/settings.js +5 -2
  172. package/dist/settings.js.map +1 -1
  173. package/docs/images/plugin_icon.png +0 -0
  174. package/jest.config.ts +46 -0
  175. package/junit.xml +843 -0
  176. package/package.json +42 -12
  177. package/tsconfig.build.json +5 -0
  178. package/tsconfig.spec.json +8 -0
  179. package/dist/accessories/batteries/batteryAccessory.d.ts +0 -59
  180. package/dist/accessories/batteries/batteryAccessory.js +0 -120
  181. package/dist/accessories/batteries/batteryAccessory.js.map +0 -1
  182. package/dist/accessories/ecoFlowAccessory.d.ts +0 -42
  183. package/dist/accessories/ecoFlowAccessory.js +0 -116
  184. package/dist/accessories/ecoFlowAccessory.js.map +0 -1
  185. package/dist/apis/ecoFlowHttpApi.d.ts +0 -46
  186. package/dist/apis/ecoFlowHttpApi.js.map +0 -1
  187. package/dist/apis/ecoFlowMqttApi.d.ts +0 -53
  188. package/dist/apis/ecoFlowMqttApi.js +0 -100
  189. package/dist/apis/ecoFlowMqttApi.js.map +0 -1
  190. package/dist/characteristics/CustomCharacteristic.d.ts +0 -16
  191. package/dist/characteristics/CustomCharacteristic.js +0 -78
  192. package/dist/characteristics/CustomCharacteristic.js.map +0 -1
  193. package/dist/helpers/machineId.d.ts +0 -2
  194. package/dist/helpers/machineId.js +0 -15
  195. package/dist/helpers/machineId.js.map +0 -1
  196. package/dist/helpers/machineIdHelper.cjs +0 -5
  197. package/dist/services/outletAcService.d.ts +0 -8
  198. package/dist/services/outletAcService.js +0 -17
  199. package/dist/services/outletAcService.js.map +0 -1
  200. package/dist/services/outletCarService.d.ts +0 -6
  201. package/dist/services/outletCarService.js +0 -12
  202. package/dist/services/outletCarService.js.map +0 -1
  203. package/dist/services/outletUsbService.d.ts +0 -6
  204. package/dist/services/outletUsbService.js +0 -10
  205. package/dist/services/outletUsbService.js.map +0 -1
package/dist/platform.js CHANGED
@@ -1,10 +1,19 @@
1
- import { Delta2Accessory } from './accessories/batteries/delta2Accessory.js';
2
- import { Delta2MaxAccessory } from './accessories/batteries/delta2maxAccessory.js';
3
- import { CustomCharacteristic } from './characteristics/CustomCharacteristic.js';
4
- import { DeviceModel } from './config.js';
5
- import { Logger } from './helpers/logger.js';
6
- import { PLATFORM_NAME, PLUGIN_NAME } from './settings.js';
7
- export class EcoFlowHomebridgePlatform {
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.EcoFlowHomebridgePlatform = void 0;
4
+ const delta2Accessory_1 = require("@ecoflow/accessories/batteries/delta2Accessory");
5
+ const delta2maxAccessory_1 = require("@ecoflow/accessories/batteries/delta2maxAccessory");
6
+ const batterySimulator_1 = require("@ecoflow/accessories/batteries/simulations/batterySimulator");
7
+ const powerStreamAccessory_1 = require("@ecoflow/accessories/powerstream/powerStreamAccessory");
8
+ const powerStreamSimulator_1 = require("@ecoflow/accessories/powerstream/simulations/powerStreamSimulator");
9
+ const ecoFlowHttpApiManager_1 = require("@ecoflow/apis/ecoFlowHttpApiManager");
10
+ const ecoFlowMqttApiManager_1 = require("@ecoflow/apis/ecoFlowMqttApiManager");
11
+ const customCharacteristic_1 = require("@ecoflow/characteristics/customCharacteristic");
12
+ const config_1 = require("@ecoflow/config");
13
+ const logger_1 = require("@ecoflow/helpers/logger");
14
+ const machineIdProvider_1 = require("@ecoflow/helpers/machineIdProvider");
15
+ const settings_1 = require("@ecoflow/settings");
16
+ class EcoFlowHomebridgePlatform {
8
17
  commonLog;
9
18
  config;
10
19
  api;
@@ -13,15 +22,18 @@ export class EcoFlowHomebridgePlatform {
13
22
  Characteristic;
14
23
  // this is used to track restored cached accessories
15
24
  accessories = [];
25
+ httpApiManager = new ecoFlowHttpApiManager_1.EcoFlowHttpApiManager();
26
+ mqttApiManager = new ecoFlowMqttApiManager_1.EcoFlowMqttApiManager(this.httpApiManager, new machineIdProvider_1.MachineIdProvider());
16
27
  constructor(commonLog, config, api) {
17
28
  this.commonLog = commonLog;
18
29
  this.config = config;
19
30
  this.api = api;
31
+ EcoFlowHomebridgePlatform.InitCustomCharacteristics(api.hap);
20
32
  this.ecoFlowConfig = this.config;
21
33
  this.Service = api.hap.Service;
22
34
  this.Characteristic = {
23
35
  ...api.hap.Characteristic,
24
- ...CustomCharacteristic,
36
+ ...customCharacteristic_1.CustomCharacteristics,
25
37
  };
26
38
  this.commonLog.debug('Finished initializing platform:', this.config.platform);
27
39
  // Homebridge 1.8.0 introduced a `log.success` method that can be used to log success messages
@@ -34,10 +46,13 @@ export class EcoFlowHomebridgePlatform {
34
46
  // in order to ensure they weren't added to homebridge already. This event can also be used
35
47
  // to start discovery of new accessories.
36
48
  this.api.on('didFinishLaunching', () => {
37
- this.commonLog.debug('Executed didFinishLaunching callback');
38
49
  this.registerDevices();
39
50
  });
40
51
  }
52
+ static InitCustomCharacteristics(hap) {
53
+ customCharacteristic_1.CustomCharacteristics.PowerConsumption.InputConsumptionWatts = (0, customCharacteristic_1.InputConsumptionWattFactory)(hap);
54
+ customCharacteristic_1.CustomCharacteristics.PowerConsumption.OutputConsumptionWatts = (0, customCharacteristic_1.OutputConsumptionWattFactory)(hap);
55
+ }
41
56
  /**
42
57
  * This function is invoked when homebridge restores cached accessories from disk at startup.
43
58
  * It should be used to set up event handlers for characteristics and update respective values.
@@ -47,15 +62,39 @@ export class EcoFlowHomebridgePlatform {
47
62
  // add the restored accessory to the accessories cache, so we can track if it has already been registered
48
63
  this.accessories.push(accessory);
49
64
  }
65
+ validateDeviceConfig(config) {
66
+ if (config.disabled === true) {
67
+ return 'Device is disabled';
68
+ }
69
+ if (config.name === undefined) {
70
+ return "Device's 'name' must be configured";
71
+ }
72
+ if (config.serialNumber === undefined) {
73
+ return "Device's 'serialNumber' must be configured";
74
+ }
75
+ if (config.accessKey === undefined) {
76
+ return "Device's 'accessKey' must be configured";
77
+ }
78
+ if (config.secretKey === undefined) {
79
+ return "Device's 'secretKey' must be configured";
80
+ }
81
+ return undefined;
82
+ }
50
83
  registerDevices() {
51
84
  const logs = {};
52
85
  const configuredAccessories = [];
53
86
  const configuredEcoFlowAccessories = [];
54
87
  if (!this.ecoFlowConfig.devices) {
88
+ this.commonLog.warn('Devices are not configured');
55
89
  return;
56
90
  }
57
91
  for (const config of this.ecoFlowConfig.devices) {
58
- const log = Logger.create(this.commonLog, config.name);
92
+ const log = logger_1.Logger.create(this.commonLog, config.name);
93
+ const validationMessage = this.validateDeviceConfig(config);
94
+ if (validationMessage !== undefined) {
95
+ log.warn(`${validationMessage}. Ignoring the device`);
96
+ continue;
97
+ }
59
98
  const existingAccessory = configuredAccessories.find(accessory => accessory.context.deviceConfig.serialNumber === config.serialNumber);
60
99
  if (existingAccessory) {
61
100
  log.warn(`Device with the same SN (${config.serialNumber}) already exists. Ignoring the device`);
@@ -74,12 +113,7 @@ export class EcoFlowHomebridgePlatform {
74
113
  ecoFlowAccessory = this.createAccessory(accessory, config, log);
75
114
  }
76
115
  else {
77
- log.info('Adding new accessory');
78
- accessory = new this.api.platformAccessory(config.name, uuid);
79
- accessory.context.deviceConfig = config;
80
- ecoFlowAccessory = this.createAccessory(accessory, config, log);
81
- // link the accessory to your platform
82
- this.api.registerPlatformAccessories(PLUGIN_NAME, PLATFORM_NAME, [accessory]);
116
+ ({ accessory, ecoFlowAccessory } = this.addNewDevice(log, config, uuid));
83
117
  }
84
118
  configuredAccessories.push(accessory);
85
119
  if (ecoFlowAccessory) {
@@ -89,35 +123,62 @@ export class EcoFlowHomebridgePlatform {
89
123
  }
90
124
  this.cleanupDevices(configuredAccessories, configuredEcoFlowAccessories, logs);
91
125
  }
126
+ addNewDevice(log, config, uuid) {
127
+ log.info('Adding new accessory');
128
+ const accessory = new this.api.platformAccessory(config.name, uuid);
129
+ accessory.context.deviceConfig = config;
130
+ const ecoFlowAccessory = this.createAccessory(accessory, config, log);
131
+ if (ecoFlowAccessory) {
132
+ this.api.registerPlatformAccessories(settings_1.PLUGIN_NAME, settings_1.PLATFORM_NAME, [accessory]);
133
+ }
134
+ return { accessory, ecoFlowAccessory };
135
+ }
92
136
  cleanupDevices(configuredAccessories, configuredEcoFlowAccessories, logs) {
93
137
  const removedAccessories = [];
94
138
  this.accessories
95
139
  .filter(accessory => !configuredAccessories.includes(accessory))
96
140
  .forEach(accessory => {
97
- logs[accessory.displayName].info('Removing obsolete accessory');
98
- this.api.unregisterPlatformAccessories(PLUGIN_NAME, PLATFORM_NAME, [accessory]);
141
+ this.commonLog.info('Removing obsolete accessory:', accessory.displayName);
142
+ this.api.unregisterPlatformAccessories(settings_1.PLUGIN_NAME, settings_1.PLATFORM_NAME, [accessory]);
99
143
  removedAccessories.push(accessory);
100
144
  });
101
- configuredEcoFlowAccessories
102
- .filter(ecoFlowAccessory => !removedAccessories.includes(ecoFlowAccessory.accessory))
103
- .forEach(ecoFlowAccessory => {
104
- logs[ecoFlowAccessory.accessory.displayName].info('Initializing accessory');
105
- ecoFlowAccessory.initialize();
106
- });
145
+ const ecoFlowAccessories = configuredEcoFlowAccessories.filter(ecoFlowAccessory => !removedAccessories.includes(ecoFlowAccessory.accessory));
146
+ this.initialize(ecoFlowAccessories, logs);
147
+ }
148
+ async initialize(accessories, logs) {
149
+ for (const accessory of accessories) {
150
+ logs[accessory.accessory.displayName].info('Initializing accessory');
151
+ await accessory.initialize();
152
+ if (accessory.config.simulate !== true) {
153
+ await accessory.initializeDefaultValues();
154
+ }
155
+ await accessory.cleanupServices();
156
+ }
107
157
  }
108
158
  createAccessory(accessory, config, log) {
109
- let ecoFlowAccessory = null;
159
+ let EcoFlowAccessoryType = null;
160
+ let EcoFlowAccessorySimulatorType = undefined;
110
161
  switch (config.model) {
111
- case DeviceModel.Delta2Max:
112
- ecoFlowAccessory = new Delta2MaxAccessory(this, accessory, config, log);
162
+ case config_1.DeviceModel.Delta2Max:
163
+ EcoFlowAccessoryType = delta2maxAccessory_1.Delta2MaxAccessory;
164
+ EcoFlowAccessorySimulatorType = batterySimulator_1.BatterySimulator;
165
+ break;
166
+ case config_1.DeviceModel.Delta2:
167
+ EcoFlowAccessoryType = delta2Accessory_1.Delta2Accessory;
168
+ EcoFlowAccessorySimulatorType = batterySimulator_1.BatterySimulator;
113
169
  break;
114
- case DeviceModel.Delta2:
115
- ecoFlowAccessory = new Delta2Accessory(this, accessory, config, log);
170
+ case config_1.DeviceModel.PowerStream:
171
+ EcoFlowAccessoryType = powerStreamAccessory_1.PowerStreamAccessory;
172
+ EcoFlowAccessorySimulatorType = powerStreamSimulator_1.PowerStreamSimulator;
116
173
  break;
117
174
  default:
118
175
  log.warn(`"${config.model}" is not supported. Ignoring the device`);
119
176
  }
120
- return ecoFlowAccessory;
177
+ config.simulator = EcoFlowAccessorySimulatorType;
178
+ return EcoFlowAccessoryType === null
179
+ ? null
180
+ : new EcoFlowAccessoryType(this, accessory, config, log, this.httpApiManager, this.mqttApiManager);
121
181
  }
122
182
  }
183
+ exports.EcoFlowHomebridgePlatform = EcoFlowHomebridgePlatform;
123
184
  //# 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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"}
@@ -0,0 +1 @@
1
+ export {};
@@ -1,7 +1,9 @@
1
- import { Characteristic, Service } from 'homebridge';
2
- import { ServiceBase } from './serviceBase.js';
1
+ import { EcoFlowAccessoryBase } from '@ecoflow/accessories/ecoFlowAccessoryBase';
2
+ import { ServiceBase } from '@ecoflow/services/serviceBase';
3
+ import { Characteristic } from 'homebridge';
3
4
  export declare class AccessoryInformationService extends ServiceBase {
4
- protected createService(): Service;
5
+ protected readonly ecoFlowAccessory: EcoFlowAccessoryBase;
6
+ constructor(ecoFlowAccessory: EcoFlowAccessoryBase);
5
7
  protected addCharacteristics(): Characteristic[];
6
8
  private getVersion;
7
9
  }
@@ -1,10 +1,15 @@
1
- import fs from 'fs';
2
- import path from 'path';
3
- import { fileURLToPath } from 'url';
4
- import { ServiceBase } from './serviceBase.js';
5
- export class AccessoryInformationService extends ServiceBase {
6
- createService() {
7
- return this.getOrAddService(this.platform.Service.AccessoryInformation, 'Information');
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.AccessoryInformationService = void 0;
4
+ const serviceBase_1 = require("@ecoflow/services/serviceBase");
5
+ const fs_1 = require("fs");
6
+ const path_1 = require("path");
7
+ const packageJsonPath = (0, path_1.join)(__dirname, '../../package.json');
8
+ class AccessoryInformationService extends serviceBase_1.ServiceBase {
9
+ ecoFlowAccessory;
10
+ constructor(ecoFlowAccessory) {
11
+ super(ecoFlowAccessory.platform.Service.AccessoryInformation, ecoFlowAccessory);
12
+ this.ecoFlowAccessory = ecoFlowAccessory;
8
13
  }
9
14
  addCharacteristics() {
10
15
  const characteristics = [
@@ -22,11 +27,9 @@ export class AccessoryInformationService extends ServiceBase {
22
27
  return characteristics;
23
28
  }
24
29
  getVersion() {
25
- const filename = fileURLToPath(import.meta.url);
26
- const dirname = path.dirname(filename);
27
- const packageJsonPath = path.resolve(dirname, '../../package.json');
28
- const packageData = JSON.parse(fs.readFileSync(packageJsonPath, 'utf8'));
29
- return packageData?.version;
30
+ const packageJson = JSON.parse((0, fs_1.readFileSync)(packageJsonPath, 'utf-8'));
31
+ return packageJson?.version;
30
32
  }
31
33
  }
34
+ exports.AccessoryInformationService = AccessoryInformationService;
32
35
  //# sourceMappingURL=accessoryInformationService.js.map
@@ -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,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
+ {"version":3,"file":"accessoryInformationService.js","sourceRoot":"","sources":["../../src/services/accessoryInformationService.ts"],"names":[],"mappings":";;;AACA,+DAA4D;AAC5D,2BAAkC;AAElC,+BAA4B;AAE5B,MAAM,eAAe,GAAG,IAAA,WAAI,EAAC,SAAS,EAAE,oBAAoB,CAAC,CAAC;AAE9D,MAAa,2BAA4B,SAAQ,yBAAW;IAC3B;IAA/B,YAA+B,gBAAsC;QACnE,KAAK,CAAC,gBAAgB,CAAC,QAAQ,CAAC,OAAO,CAAC,oBAAoB,EAAE,gBAAgB,CAAC,CAAC;QADnD,qBAAgB,GAAhB,gBAAgB,CAAsB;IAErE,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,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,IAAA,iBAAY,EAAC,eAAe,EAAE,OAAO,CAAC,CAAC,CAAC;QACvE,OAAO,WAAW,EAAE,OAAO,CAAC;IAC9B,CAAC;CACF;AA1BD,kEA0BC"}
@@ -1,9 +1,11 @@
1
- import { Characteristic, Service } from 'homebridge';
2
- import { ServiceBase } from './serviceBase.js';
1
+ import { EcoFlowAccessoryBase } from '@ecoflow/accessories/ecoFlowAccessoryBase';
2
+ import { ServiceBase } from '@ecoflow/services/serviceBase';
3
+ import { Characteristic } from 'homebridge';
3
4
  export declare class BatteryStatusService extends ServiceBase {
4
- protected createService(): Service;
5
+ protected readonly ecoFlowAccessory: EcoFlowAccessoryBase;
6
+ constructor(ecoFlowAccessory: EcoFlowAccessoryBase, serviceSubType?: string);
5
7
  protected addCharacteristics(): Characteristic[];
6
- updateStatusLowBattery(batteryLevel: number): void;
7
8
  updateBatteryLevel(batteryLevel: number): void;
8
9
  updateChargingState(chargingPower: number): void;
10
+ private updateStatusLowBattery;
9
11
  }
@@ -1,7 +1,12 @@
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);
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.BatteryStatusService = void 0;
4
+ const serviceBase_1 = require("@ecoflow/services/serviceBase");
5
+ class BatteryStatusService extends serviceBase_1.ServiceBase {
6
+ ecoFlowAccessory;
7
+ constructor(ecoFlowAccessory, serviceSubType) {
8
+ super(ecoFlowAccessory.platform.Service.Battery, ecoFlowAccessory, serviceSubType);
9
+ this.ecoFlowAccessory = ecoFlowAccessory;
5
10
  }
6
11
  addCharacteristics() {
7
12
  return [
@@ -10,23 +15,20 @@ export class BatteryStatusService extends ServiceBase {
10
15
  this.addCharacteristic(this.platform.Characteristic.ChargingState),
11
16
  ];
12
17
  }
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
18
  updateBatteryLevel(batteryLevel) {
23
- this.log.debug('BatteryLevel ->', batteryLevel);
24
- this.service.getCharacteristic(this.platform.Characteristic.BatteryLevel).updateValue(batteryLevel);
19
+ this.updateCharacteristic(this.platform.Characteristic.BatteryLevel, 'BatteryLevel', batteryLevel);
20
+ this.updateStatusLowBattery(batteryLevel);
25
21
  }
26
22
  updateChargingState(chargingPower) {
27
23
  const isCharging = chargingPower > 0;
28
- this.log.debug('ChargingState ->', isCharging);
29
- this.service.getCharacteristic(this.platform.Characteristic.ChargingState).updateValue(isCharging);
24
+ this.updateCharacteristic(this.platform.Characteristic.ChargingState, 'ChargingState', isCharging);
25
+ }
26
+ updateStatusLowBattery(batteryLevel) {
27
+ const statusLowBattery = batteryLevel < 20
28
+ ? this.platform.Characteristic.StatusLowBattery.BATTERY_LEVEL_LOW
29
+ : this.platform.Characteristic.StatusLowBattery.BATTERY_LEVEL_NORMAL;
30
+ this.updateCharacteristic(this.platform.Characteristic.StatusLowBattery, 'StatusLowBattery', statusLowBattery);
30
31
  }
31
32
  }
33
+ exports.BatteryStatusService = BatteryStatusService;
32
34
  //# sourceMappingURL=batteryStatusService.js.map
@@ -1 +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
+ {"version":3,"file":"batteryStatusService.js","sourceRoot":"","sources":["../../src/services/batteryStatusService.ts"],"names":[],"mappings":";;;AACA,+DAA4D;AAG5D,MAAa,oBAAqB,SAAQ,yBAAW;IAE9B;IADrB,YACqB,gBAAsC,EACzD,cAAuB;QAEvB,KAAK,CAAC,gBAAgB,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,EAAE,gBAAgB,EAAE,cAAc,CAAC,CAAC;QAHhE,qBAAgB,GAAhB,gBAAgB,CAAsB;IAI3D,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,kBAAkB,CAAC,YAAoB;QAC5C,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,YAAY,EAAE,cAAc,EAAE,YAAY,CAAC,CAAC;QACnG,IAAI,CAAC,sBAAsB,CAAC,YAAY,CAAC,CAAC;IAC5C,CAAC;IAEM,mBAAmB,CAAC,aAAqB;QAC9C,MAAM,UAAU,GAAG,aAAa,GAAG,CAAC,CAAC;QACrC,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,aAAa,EAAE,eAAe,EAAE,UAAU,CAAC,CAAC;IACrG,CAAC;IAEO,sBAAsB,CAAC,YAAoB;QACjD,MAAM,gBAAgB,GACpB,YAAY,GAAG,EAAE;YACf,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,gBAAgB,CAAC,iBAAiB;YACjE,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,gBAAgB,CAAC,oBAAoB,CAAC;QACzE,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,gBAAgB,EAAE,kBAAkB,EAAE,gBAAgB,CAAC,CAAC;IACjH,CAAC;CACF;AAjCD,oDAiCC"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,16 @@
1
+ import { EcoFlowAccessoryBase } from '@ecoflow/accessories/ecoFlowAccessoryBase';
2
+ import { ServiceBase } from '@ecoflow/services/serviceBase';
3
+ import { Characteristic } from 'homebridge';
4
+ export declare abstract class FanServiceBase extends ServiceBase {
5
+ protected readonly ecoFlowAccessory: EcoFlowAccessoryBase;
6
+ private readonly maxRotationSpeed;
7
+ private currentRotationSpeed;
8
+ private rotationSpeedCharacteristic;
9
+ constructor(ecoFlowAccessory: EcoFlowAccessoryBase, maxRotationSpeed: number, serviceSubType: string);
10
+ protected addCharacteristics(): Characteristic[];
11
+ updateState(state: boolean): void;
12
+ updateRotationSpeed(value: number): void;
13
+ protected setRotationSpeed(value: number): void;
14
+ protected abstract processOnSetOn(value: boolean, revert: () => void): Promise<void>;
15
+ protected abstract processOnSetRotationSpeed(value: number, revert: () => void): Promise<void>;
16
+ }
@@ -0,0 +1,42 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.FanServiceBase = void 0;
4
+ const serviceBase_1 = require("@ecoflow/services/serviceBase");
5
+ class FanServiceBase extends serviceBase_1.ServiceBase {
6
+ ecoFlowAccessory;
7
+ maxRotationSpeed;
8
+ currentRotationSpeed = 0;
9
+ rotationSpeedCharacteristic = null;
10
+ constructor(ecoFlowAccessory, maxRotationSpeed, serviceSubType) {
11
+ super(ecoFlowAccessory.platform.Service.Fan, ecoFlowAccessory, serviceSubType);
12
+ this.ecoFlowAccessory = ecoFlowAccessory;
13
+ this.maxRotationSpeed = maxRotationSpeed;
14
+ }
15
+ addCharacteristics() {
16
+ const onCharacteristic = this.addCharacteristic(this.platform.Characteristic.On);
17
+ onCharacteristic.onSet(value => {
18
+ const newValue = value;
19
+ this.processOnSetOn(newValue, () => this.updateState(!newValue));
20
+ });
21
+ this.rotationSpeedCharacteristic = this.addCharacteristic(this.platform.Characteristic.RotationSpeed);
22
+ this.rotationSpeedCharacteristic.onSet(percents => {
23
+ const prevRotationSpeed = this.currentRotationSpeed;
24
+ this.currentRotationSpeed = this.covertPercentsToValue(percents, this.maxRotationSpeed);
25
+ this.processOnSetRotationSpeed(this.currentRotationSpeed, () => this.updateRotationSpeed(prevRotationSpeed));
26
+ });
27
+ return [onCharacteristic, this.rotationSpeedCharacteristic];
28
+ }
29
+ updateState(state) {
30
+ this.updateCharacteristic(this.platform.Characteristic.On, 'State', state);
31
+ }
32
+ updateRotationSpeed(value) {
33
+ const percents = this.covertValueToPercents(value, this.maxRotationSpeed);
34
+ this.updateCharacteristic(this.platform.Characteristic.RotationSpeed, 'RotationSpeed', percents);
35
+ this.currentRotationSpeed = value;
36
+ }
37
+ setRotationSpeed(value) {
38
+ this.rotationSpeedCharacteristic?.setValue(value);
39
+ }
40
+ }
41
+ exports.FanServiceBase = FanServiceBase;
42
+ //# sourceMappingURL=fanServiceBase.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fanServiceBase.js","sourceRoot":"","sources":["../../src/services/fanServiceBase.ts"],"names":[],"mappings":";;;AACA,+DAA4D;AAG5D,MAAsB,cAAe,SAAQ,yBAAW;IAKjC;IACF;IALX,oBAAoB,GAAG,CAAC,CAAC;IACzB,2BAA2B,GAA0B,IAAI,CAAC;IAElE,YACqB,gBAAsC,EACxC,gBAAwB,EACzC,cAAsB;QAEtB,KAAK,CAAC,gBAAgB,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,EAAE,gBAAgB,EAAE,cAAc,CAAC,CAAC;QAJ5D,qBAAgB,GAAhB,gBAAgB,CAAsB;QACxC,qBAAgB,GAAhB,gBAAgB,CAAQ;IAI3C,CAAC;IAEkB,kBAAkB;QACnC,MAAM,gBAAgB,GAAG,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC;QACjF,gBAAgB,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE;YAC7B,MAAM,QAAQ,GAAG,KAAgB,CAAC;YAClC,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;QACnE,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,2BAA2B,GAAG,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,aAAa,CAAC,CAAC;QACtG,IAAI,CAAC,2BAA2B,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE;YAChD,MAAM,iBAAiB,GAAG,IAAI,CAAC,oBAAoB,CAAC;YACpD,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,qBAAqB,CAAC,QAAkB,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC;YAClG,IAAI,CAAC,yBAAyB,CAAC,IAAI,CAAC,oBAAoB,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,mBAAmB,CAAC,iBAAiB,CAAC,CAAC,CAAC;QAC/G,CAAC,CAAC,CAAC;QAEH,OAAO,CAAC,gBAAgB,EAAE,IAAI,CAAC,2BAA2B,CAAC,CAAC;IAC9D,CAAC;IAEM,WAAW,CAAC,KAAc;QAC/B,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;IAC7E,CAAC;IAEM,mBAAmB,CAAC,KAAa;QACtC,MAAM,QAAQ,GAAG,IAAI,CAAC,qBAAqB,CAAC,KAAK,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC;QAC1E,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,aAAa,EAAE,eAAe,EAAE,QAAQ,CAAC,CAAC;QACjG,IAAI,CAAC,oBAAoB,GAAG,KAAK,CAAC;IACpC,CAAC;IAES,gBAAgB,CAAC,KAAa;QACtC,IAAI,CAAC,2BAA2B,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC;IACpD,CAAC;CAKF;AA9CD,wCA8CC"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,16 @@
1
+ import { EcoFlowAccessoryBase } from '@ecoflow/accessories/ecoFlowAccessoryBase';
2
+ import { ServiceBase } from '@ecoflow/services/serviceBase';
3
+ import { Characteristic } from 'homebridge';
4
+ export declare abstract class LightBulbServiceBase extends ServiceBase {
5
+ protected readonly ecoFlowAccessory: EcoFlowAccessoryBase;
6
+ private readonly maxBrightness;
7
+ private currentBrightness;
8
+ private brightnessCharacteristic;
9
+ constructor(ecoFlowAccessory: EcoFlowAccessoryBase, maxBrightness: number, serviceSubType: string);
10
+ protected addCharacteristics(): Characteristic[];
11
+ updateState(state: boolean): void;
12
+ updateBrightness(value: number): void;
13
+ protected setBrightness(value: number): void;
14
+ protected abstract processOnSetOn(value: boolean, revert: () => void): Promise<void>;
15
+ protected abstract processOnSetBrightness(value: number, revert: () => void): Promise<void>;
16
+ }
@@ -0,0 +1,42 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.LightBulbServiceBase = void 0;
4
+ const serviceBase_1 = require("@ecoflow/services/serviceBase");
5
+ class LightBulbServiceBase extends serviceBase_1.ServiceBase {
6
+ ecoFlowAccessory;
7
+ maxBrightness;
8
+ currentBrightness = 0;
9
+ brightnessCharacteristic = null;
10
+ constructor(ecoFlowAccessory, maxBrightness, serviceSubType) {
11
+ super(ecoFlowAccessory.platform.Service.Lightbulb, ecoFlowAccessory, serviceSubType);
12
+ this.ecoFlowAccessory = ecoFlowAccessory;
13
+ this.maxBrightness = maxBrightness;
14
+ }
15
+ addCharacteristics() {
16
+ const onCharacteristic = this.addCharacteristic(this.platform.Characteristic.On);
17
+ onCharacteristic.onSet(value => {
18
+ const newValue = value;
19
+ this.processOnSetOn(newValue, () => this.updateState(!newValue));
20
+ });
21
+ this.brightnessCharacteristic = this.addCharacteristic(this.platform.Characteristic.Brightness);
22
+ this.brightnessCharacteristic.onSet(percents => {
23
+ const prevBrightness = this.currentBrightness;
24
+ this.currentBrightness = this.covertPercentsToValue(percents, this.maxBrightness);
25
+ this.processOnSetBrightness(this.currentBrightness, () => this.updateBrightness(prevBrightness));
26
+ });
27
+ return [onCharacteristic, this.brightnessCharacteristic];
28
+ }
29
+ updateState(state) {
30
+ this.updateCharacteristic(this.platform.Characteristic.On, 'State', state);
31
+ }
32
+ updateBrightness(value) {
33
+ const percents = this.covertValueToPercents(value, this.maxBrightness);
34
+ this.updateCharacteristic(this.platform.Characteristic.Brightness, 'Brightness', percents);
35
+ this.currentBrightness = value;
36
+ }
37
+ setBrightness(value) {
38
+ this.brightnessCharacteristic?.setValue(value);
39
+ }
40
+ }
41
+ exports.LightBulbServiceBase = LightBulbServiceBase;
42
+ //# sourceMappingURL=lightBulbServiceBase.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lightBulbServiceBase.js","sourceRoot":"","sources":["../../src/services/lightBulbServiceBase.ts"],"names":[],"mappings":";;;AACA,+DAA4D;AAG5D,MAAsB,oBAAqB,SAAQ,yBAAW;IAKvC;IACF;IALX,iBAAiB,GAAG,CAAC,CAAC;IACtB,wBAAwB,GAA0B,IAAI,CAAC;IAE/D,YACqB,gBAAsC,EACxC,aAAqB,EACtC,cAAsB;QAEtB,KAAK,CAAC,gBAAgB,CAAC,QAAQ,CAAC,OAAO,CAAC,SAAS,EAAE,gBAAgB,EAAE,cAAc,CAAC,CAAC;QAJlE,qBAAgB,GAAhB,gBAAgB,CAAsB;QACxC,kBAAa,GAAb,aAAa,CAAQ;IAIxC,CAAC;IAEkB,kBAAkB;QACnC,MAAM,gBAAgB,GAAG,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC;QACjF,gBAAgB,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE;YAC7B,MAAM,QAAQ,GAAG,KAAgB,CAAC;YAClC,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;QACnE,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,wBAAwB,GAAG,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC;QAChG,IAAI,CAAC,wBAAwB,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE;YAC7C,MAAM,cAAc,GAAG,IAAI,CAAC,iBAAiB,CAAC;YAC9C,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,qBAAqB,CAAC,QAAkB,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;YAC5F,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,iBAAiB,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,gBAAgB,CAAC,cAAc,CAAC,CAAC,CAAC;QACnG,CAAC,CAAC,CAAC;QAEH,OAAO,CAAC,gBAAgB,EAAE,IAAI,CAAC,wBAAwB,CAAC,CAAC;IAC3D,CAAC;IAEM,WAAW,CAAC,KAAc;QAC/B,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;IAC7E,CAAC;IAEM,gBAAgB,CAAC,KAAa;QACnC,MAAM,QAAQ,GAAG,IAAI,CAAC,qBAAqB,CAAC,KAAK,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;QACvE,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,UAAU,EAAE,YAAY,EAAE,QAAQ,CAAC,CAAC;QAC3F,IAAI,CAAC,iBAAiB,GAAG,KAAK,CAAC;IACjC,CAAC;IAES,aAAa,CAAC,KAAa;QACnC,IAAI,CAAC,wBAAwB,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC;IACjD,CAAC;CAKF;AA9CD,oDA8CC"}
@@ -0,0 +1 @@
1
+ export {};
@@ -1,24 +1,16 @@
1
- import { Characteristic, CharacteristicValue, Service, WithUUID } from 'homebridge';
2
- import { EcoFlowAccessory } from '../accessories/ecoFlowAccessory.js';
3
- import { ServiceBase } from './serviceBase.js';
4
- export interface MqttSetEnabledMessageParams {
5
- enabled: number;
6
- }
7
- export declare abstract class OutletsServiceBase extends ServiceBase {
8
- private readonly serviceSubType;
9
- constructor(serviceSubType: string, ecoFlowAccessory: EcoFlowAccessory);
1
+ import { EcoFlowAccessoryBase } from '@ecoflow/accessories/ecoFlowAccessoryBase';
2
+ import { AdditionalBatteryCharacteristicType as CharacteristicType } from '@ecoflow/config';
3
+ import { ServiceBase } from '@ecoflow/services/serviceBase';
4
+ import { Characteristic } from 'homebridge';
5
+ export declare abstract class OutletServiceBase extends ServiceBase {
6
+ private readonly additionalCharacteristics?;
7
+ constructor(ecoFlowAccessory: EcoFlowAccessoryBase, serviceSubType: string, additionalCharacteristics?: CharacteristicType[] | undefined);
10
8
  updateState(state: boolean): void;
11
9
  updateOutputConsumption(watt: number): void;
12
10
  updateInputConsumption(watt: number): void;
13
11
  updateBatteryLevel(batteryLevel: number): void;
14
- protected createService(): Service;
15
12
  protected addCharacteristics(): Characteristic[];
16
13
  protected abstract setOn(value: boolean, revert: () => void): Promise<void>;
17
- protected sendOn<TParams>(moduleType: number, operateType: string, params: TParams, revert: () => void): Promise<void>;
18
- protected updateCharacteristic(characteristic: WithUUID<{
19
- new (): Characteristic;
20
- }>, name: string, value: CharacteristicValue): void;
21
14
  private tryAddCustomCharacteristic;
22
15
  private updateCustomCharacteristic;
23
- private get serviceName();
24
16
  }