homebridge-easy-mqtt 1.4.0-beta.2 → 1.4.0-beta.21

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 (125) hide show
  1. package/CHANGELOG.md +21 -3
  2. package/README.md +271 -24
  3. package/config.schema.json +2309 -342
  4. package/dist/accessory/abstract/base.js +5 -5
  5. package/dist/accessory/abstract/base.js.map +1 -1
  6. package/dist/accessory/abstract/common.d.ts +42 -0
  7. package/dist/accessory/abstract/common.js +169 -0
  8. package/dist/accessory/abstract/common.js.map +1 -0
  9. package/dist/accessory/abstract/helper.d.ts +1 -0
  10. package/dist/accessory/abstract/helper.js +25 -0
  11. package/dist/accessory/abstract/helper.js.map +1 -1
  12. package/dist/accessory/abstract/mqtt.d.ts +15 -26
  13. package/dist/accessory/abstract/mqtt.js +29 -148
  14. package/dist/accessory/abstract/mqtt.js.map +1 -1
  15. package/dist/accessory/addons/addon.d.ts +24 -0
  16. package/dist/accessory/addons/addon.js +52 -0
  17. package/dist/accessory/addons/addon.js.map +1 -0
  18. package/dist/accessory/addons/filter.d.ts +11 -0
  19. package/dist/accessory/addons/filter.js +37 -0
  20. package/dist/accessory/addons/filter.js.map +1 -0
  21. package/dist/accessory/climate/active.d.ts +11 -0
  22. package/dist/accessory/climate/active.js +44 -0
  23. package/dist/accessory/climate/active.js.map +1 -0
  24. package/dist/accessory/climate/fan2.d.ts +20 -0
  25. package/dist/accessory/climate/fan2.js +122 -0
  26. package/dist/accessory/climate/fan2.js.map +1 -0
  27. package/dist/accessory/climate/heaterCooler.d.ts +2 -6
  28. package/dist/accessory/climate/heaterCooler.js +7 -39
  29. package/dist/accessory/climate/heaterCooler.js.map +1 -1
  30. package/dist/accessory/climate/purifier.d.ts +19 -0
  31. package/dist/accessory/climate/purifier.js +114 -0
  32. package/dist/accessory/climate/purifier.js.map +1 -0
  33. package/dist/accessory/climate/{climate.d.ts → temperatureControl.d.ts} +4 -3
  34. package/dist/accessory/climate/temperatureControl.js +35 -0
  35. package/dist/accessory/climate/temperatureControl.js.map +1 -0
  36. package/dist/accessory/climate/thermostat.d.ts +2 -2
  37. package/dist/accessory/climate/thermostat.js +11 -10
  38. package/dist/accessory/climate/thermostat.js.map +1 -1
  39. package/dist/accessory/garage.d.ts +17 -0
  40. package/dist/accessory/garage.js +110 -0
  41. package/dist/accessory/garage.js.map +1 -0
  42. package/dist/accessory/lock.d.ts +2 -2
  43. package/dist/accessory/lock.js +3 -3
  44. package/dist/accessory/lock.js.map +1 -1
  45. package/dist/accessory/onoff/lightbulb.js +4 -4
  46. package/dist/accessory/onoff/lightbulb.js.map +1 -1
  47. package/dist/accessory/onoff/onoff.js +1 -1
  48. package/dist/accessory/onoff/onoff.js.map +1 -1
  49. package/dist/accessory/onoff/outlet.js +1 -1
  50. package/dist/accessory/onoff/outlet.js.map +1 -1
  51. package/dist/accessory/position/blind.d.ts +10 -0
  52. package/dist/accessory/position/blind.js +22 -0
  53. package/dist/accessory/position/blind.js.map +1 -0
  54. package/dist/accessory/position/position.d.ts +14 -0
  55. package/dist/accessory/position/position.js +80 -0
  56. package/dist/accessory/position/position.js.map +1 -0
  57. package/dist/accessory/security.js +4 -4
  58. package/dist/accessory/security.js.map +1 -1
  59. package/dist/accessory/sensor/air.d.ts +14 -0
  60. package/dist/accessory/sensor/air.js +96 -0
  61. package/dist/accessory/sensor/air.js.map +1 -0
  62. package/dist/accessory/sensor/carbonDioxide.js +3 -3
  63. package/dist/accessory/sensor/carbonDioxide.js.map +1 -1
  64. package/dist/accessory/sensor/carbonMonoxide.js +3 -3
  65. package/dist/accessory/sensor/carbonMonoxide.js.map +1 -1
  66. package/dist/accessory/sensor/contact.js +1 -1
  67. package/dist/accessory/sensor/contact.js.map +1 -1
  68. package/dist/accessory/sensor/humidity.js +1 -1
  69. package/dist/accessory/sensor/humidity.js.map +1 -1
  70. package/dist/accessory/sensor/leak.js +1 -1
  71. package/dist/accessory/sensor/leak.js.map +1 -1
  72. package/dist/accessory/sensor/light.d.ts +9 -0
  73. package/dist/accessory/sensor/light.js +13 -0
  74. package/dist/accessory/sensor/light.js.map +1 -0
  75. package/dist/accessory/sensor/motion.js +1 -1
  76. package/dist/accessory/sensor/motion.js.map +1 -1
  77. package/dist/accessory/sensor/occupancy.js +1 -1
  78. package/dist/accessory/sensor/occupancy.js.map +1 -1
  79. package/dist/accessory/sensor/sensor.js +4 -4
  80. package/dist/accessory/sensor/sensor.js.map +1 -1
  81. package/dist/accessory/sensor/smoke.js +1 -1
  82. package/dist/accessory/sensor/smoke.js.map +1 -1
  83. package/dist/accessory/sensor/temperature.js +1 -1
  84. package/dist/accessory/sensor/temperature.js.map +1 -1
  85. package/dist/accessory/valve.d.ts +14 -0
  86. package/dist/accessory/valve.js +71 -0
  87. package/dist/accessory/valve.js.map +1 -0
  88. package/dist/homebridge/platform.js +5 -3
  89. package/dist/homebridge/platform.js.map +1 -1
  90. package/dist/homebridge-ui/public/index.html +1 -1
  91. package/dist/homebridge-ui/public/ui.js +1 -1
  92. package/dist/i18n/en.d.ts +203 -0
  93. package/dist/i18n/en.js +226 -23
  94. package/dist/i18n/en.js.map +1 -1
  95. package/dist/i18n/fr.d.ts +468 -0
  96. package/dist/i18n/fr.js +265 -0
  97. package/dist/i18n/fr.js.map +1 -1
  98. package/dist/i18n/i18n.d.ts +206 -1
  99. package/dist/i18n/i18n.js +12 -0
  100. package/dist/i18n/i18n.js.map +1 -1
  101. package/dist/i18n/ro.d.ts +889 -0
  102. package/dist/i18n/ro.js +381 -0
  103. package/dist/i18n/ro.js.map +1 -0
  104. package/dist/i18n/template.d.ts +205 -2
  105. package/dist/i18n/template.js +3 -3
  106. package/dist/i18n/template.js.map +1 -1
  107. package/dist/i18n/vi.d.ts +1034 -0
  108. package/dist/i18n/vi.js +526 -0
  109. package/dist/i18n/vi.js.map +1 -0
  110. package/dist/model/enums.d.ts +49 -5
  111. package/dist/model/enums.js +50 -5
  112. package/dist/model/enums.js.map +1 -1
  113. package/dist/model/mqtt.d.ts +5 -4
  114. package/dist/model/mqtt.js +41 -25
  115. package/dist/model/mqtt.js.map +1 -1
  116. package/dist/model/types.d.ts +141 -24
  117. package/dist/tools/properties.d.ts +11 -0
  118. package/dist/tools/properties.js +73 -0
  119. package/dist/tools/properties.js.map +1 -0
  120. package/dist/tools/temperature.d.ts +7 -3
  121. package/dist/tools/temperature.js +20 -9
  122. package/dist/tools/temperature.js.map +1 -1
  123. package/package.json +1 -1
  124. package/dist/accessory/climate/climate.js +0 -31
  125. package/dist/accessory/climate/climate.js.map +0 -1
@@ -1,7 +1,8 @@
1
1
  import { PlatformConfig as HBPlatformConfig } from 'homebridge';
2
2
  export type ServiceType = typeof import('homebridge').Service;
3
3
  export type CharacteristicType = typeof import('homebridge').Characteristic;
4
- import { AccessoryType, TemperatureUnits } from './enums.js';
4
+ import { AccessoryType, ValveType } from './enums.js';
5
+ import { TemperatureUnits } from '../tools/temperature.js';
5
6
  import { Assertable } from '../tools/validation.js';
6
7
  export type PlatformConfig = HBPlatformConfig & {
7
8
  accessories?: BaseAccessoryConfig[];
@@ -9,13 +10,21 @@ export type PlatformConfig = HBPlatformConfig & {
9
10
  export type TemperatureConfig = {
10
11
  temperatureUnits?: TemperatureUnits;
11
12
  };
13
+ export type AddonConfig = Assertable & {};
14
+ export type FilterMaintenanceConfig = AddonConfig & {
15
+ topicGetFilterChangeIndication: string;
16
+ topicGetFilterLifeLevel?: string;
17
+ topicResetFilterIndication?: string;
18
+ valueFilterChange: string;
19
+ valueFilterReset: string;
20
+ };
12
21
  type ErrorStatusConfig = {
13
22
  topicGetStatusFault?: string;
14
23
  topicGetStatusTampered?: string;
15
24
  valueFault?: string;
16
25
  valueTampered?: string;
17
26
  };
18
- type InfoConfig = Assertable & {
27
+ export type InfoConfig = Assertable & {
19
28
  id: string;
20
29
  name: string;
21
30
  type: AccessoryType;
@@ -27,16 +36,22 @@ type AdditionalInfoConfig = InfoConfig & {
27
36
  serialNumber?: string;
28
37
  version?: string;
29
38
  };
39
+ export type MQTTMessage = Assertable & {
40
+ topic: string;
41
+ message: string;
42
+ };
30
43
  export type MQTTConfig = Assertable & {
31
- broker: string;
44
+ broker?: string;
32
45
  username?: string;
33
46
  password?: string;
34
47
  options?: string;
48
+ onConnect?: MQTTMessage[];
35
49
  };
36
50
  export type MQTTAccessoryConfig = Assertable & {
37
- mqtt: MQTTConfig;
38
51
  info: InfoConfig;
52
+ mqtt?: MQTTConfig;
39
53
  customCharacteristics?: CustomCharacteristicConfig[];
54
+ resetOnRestart?: boolean;
40
55
  disableLogging: boolean;
41
56
  };
42
57
  export type CustomCharacteristicConfig = Assertable & {
@@ -75,6 +90,21 @@ export type OutletConfig = OnOffConfig & {
75
90
  };
76
91
  export type SwitchConfig = OnOffConfig & {};
77
92
  export type SensorConfig = BaseAccessoryConfig & ErrorStatusConfig & {};
93
+ export type AirSensorConfig = SensorConfig & {
94
+ topicGetAirQuality: string;
95
+ topicGetNitrogenDioxideDensity?: string;
96
+ topicGetOzoneDensity?: string;
97
+ topicGetPM10Density?: string;
98
+ topicGetPM2_5Density?: string;
99
+ topicGetSulphurDioxideDensity?: string;
100
+ topicGetVOCDensity?: string;
101
+ valueAQExcellent?: string;
102
+ valueAQFair?: string;
103
+ valueAQGood?: string;
104
+ valueAQInferior?: string;
105
+ valueAQPoor?: string;
106
+ valueAQUnknown?: string;
107
+ };
78
108
  export type COSensorConfig = SensorConfig & {
79
109
  topicGetCarbonMonoxideDetected: string;
80
110
  topicGetCarbonMonoxideLevel?: string;
@@ -98,6 +128,9 @@ export type LeakSensorConfig = SensorConfig & {
98
128
  topicGetLeakDetected: string;
99
129
  valueLeakDetected: string;
100
130
  };
131
+ export type LightSensorConfig = SensorConfig & {
132
+ topicGetCurrentAmbientLightLevel: string;
133
+ };
101
134
  export type MotionSensorConfig = SensorConfig & {
102
135
  topicGetMotionDetected: string;
103
136
  valueMotionDetected: string;
@@ -113,50 +146,116 @@ export type SmokeSensorConfig = SensorConfig & {
113
146
  export type TemperatureSensorConfig = SensorConfig & TemperatureConfig & {
114
147
  topicGetCurrentTemperature: string;
115
148
  };
116
- export type ClimateControlConfig = BaseAccessoryConfig & TemperatureConfig & {
149
+ export type TemperatureControlConfig = BaseAccessoryConfig & TemperatureConfig & {
117
150
  topicGetCoolingThresholdTemperature?: string;
118
151
  topicGetCurrentTemperature: string;
119
152
  topicGetHeatingThresholdTemperature?: string;
120
153
  topicSetCoolingThresholdTemperature?: string;
121
154
  topicSetHeatingThresholdTemperature?: string;
122
155
  };
123
- export type HeaterCoolerConfig = ClimateControlConfig & {
156
+ export type ThermostatConfig = TemperatureControlConfig & {
157
+ topicGetCurrentHeatingCoolingState: string;
158
+ topicGetCurrentRelativeHumidity?: string;
159
+ topicGetTargetHeatingCoolingState: string;
160
+ topicGetTargetRelativeHumidity?: string;
161
+ topicGetTargetTemperature: string;
162
+ topicSetTargetHeatingCoolingState: string;
163
+ topicSetTargetRelativeHumidity?: string;
164
+ topicSetTargetTemperature: string;
165
+ valueModeAuto?: string;
166
+ valueModeCool?: string;
167
+ valueModeHeat?: string;
168
+ valueModeOff?: string;
169
+ };
170
+ export type ActiveClimateConfig = TemperatureControlConfig & {
124
171
  topicGetActive: string;
125
- topicGetCurrentHeaterCoolerState: string;
126
172
  topicGetLockPhysicalControls?: string;
127
173
  topicGetRotationSpeed?: string;
128
174
  topicGetSwingMode?: string;
129
- topicGetTargetHeaterCoolerState: string;
130
175
  topicSetActive: string;
131
176
  topicSetLockPhysicalControls?: string;
132
177
  topicSetRotationSpeed?: string;
133
178
  topicSetSwingMode?: string;
134
- topicSetTargetHeaterCoolerState: string;
135
179
  valueControlLock?: string;
136
180
  valueControlUnlock?: string;
137
- valueModeAuto?: string;
138
- valueModeCool?: string;
139
- valueModeHeat?: string;
140
- valueModeIdle?: string;
141
- valueModeInactive?: string;
142
181
  valueStateActive: string;
143
182
  valueStateInactive: string;
144
183
  valueSwingEnabled?: string;
145
184
  valueSwingDisabled?: string;
146
185
  };
147
- export type ThermostatConfig = ClimateControlConfig & {
148
- topicGetCurrentHeatingCoolingState: string;
149
- topicGetCurrentRelativeHumidity?: string;
150
- topicGetTargetHeatingCoolingState: string;
151
- topicGetTargetRelativeHumidity?: string;
152
- topicGetTargetTemperature: string;
153
- topicSetTargetHeatingCoolingState: string;
154
- topicSetTargetRelativeHumidity?: string;
155
- topicSetTargetTemperature: string;
186
+ export type FanV2Config = ActiveClimateConfig & {
187
+ topicGetCurrentFanState?: string;
188
+ topicGetRotationDirection?: string;
189
+ topicGetTargetFanState?: string;
190
+ topicSetRotationDirection?: string;
191
+ topicSetTargetFanState?: string;
192
+ valueDirectionClockwise?: string;
193
+ valueDirectionCounterClockwise?: string;
194
+ valueModeAuto?: string;
195
+ valueModeBlowing?: string;
196
+ valueModeIdle?: string;
197
+ valueModeInactive?: string;
198
+ valueModeManual?: string;
199
+ };
200
+ export type HeaterCoolerConfig = ActiveClimateConfig & FilterMaintenanceConfig & {
201
+ topicGetCurrentHeaterCoolerState: string;
202
+ topicGetTargetHeaterCoolerState: string;
203
+ topicSetTargetHeaterCoolerState: string;
156
204
  valueModeAuto?: string;
157
205
  valueModeCool?: string;
158
206
  valueModeHeat?: string;
159
- valueModeOff?: string;
207
+ valueModeIdle?: string;
208
+ valueModeInactive?: string;
209
+ };
210
+ export type PurifierConfig = ActiveClimateConfig & FilterMaintenanceConfig & {
211
+ topicGetCurrentPurifierState: string;
212
+ topicGetTargetPurifierState: string;
213
+ topicSetTargetPurifierState: string;
214
+ valueModeAuto?: string;
215
+ valueModeIdle?: string;
216
+ valueModeInactive?: string;
217
+ valueModeManual?: string;
218
+ valueModePurifying?: string;
219
+ };
220
+ export type GarageDoorConfig = LockConfig & {
221
+ topicGetCurrentDoorState: string;
222
+ topicGetCurrentLockState?: string;
223
+ topicGetObstructionDetected: string;
224
+ topicGetTargetDoorState: string;
225
+ topicGetTargetLockState?: string;
226
+ topicSetTargetDoorState: string;
227
+ topicSetTargetLockState?: string;
228
+ valueDoorObstructed: string;
229
+ valueDoorStateClosed?: string;
230
+ valueDoorStateClosing?: string;
231
+ valueDoorStateOpen?: string;
232
+ valueDoorStateOpening?: string;
233
+ valueDoorStateStopped?: string;
234
+ valueLockStateJammed?: string;
235
+ valueLockStateSecured?: string;
236
+ valueLockStateUnsecured?: string;
237
+ };
238
+ export type PositionConfig = BaseAccessoryConfig & {
239
+ topicGetCurrentPosition: string;
240
+ topicSetHoldPosition?: string;
241
+ topicGetObstructionDetected?: string;
242
+ topicGetPositionState: string;
243
+ topicGetTargetPosition: string;
244
+ topicSetTargetPosition: string;
245
+ valuePositionHold?: string;
246
+ valuePositionDecreasing?: string;
247
+ valuePositionIncreasing?: string;
248
+ valuePositionObstructed?: string;
249
+ valuePositionResume?: string;
250
+ valuePositionStopped?: string;
251
+ };
252
+ export type BlindConfig = PositionConfig & {
253
+ topicGetCurrentHorizontalTiltAngle?: string;
254
+ topicGetCurrentVerticalTiltAngle?: string;
255
+ topicGetTargetHorizontalTiltAngle?: string;
256
+ topicGetTargetVerticalTiltAngle?: string;
257
+ topicSetTargetHorizontalTiltAngle?: string;
258
+ topicSetTargetVerticalTiltAngle?: string;
160
259
  };
161
260
  export type LockConfig = BaseAccessoryConfig & {
162
261
  topicGetCurrentLockState: string;
@@ -179,4 +278,22 @@ export type SecurityConfig = BaseAccessoryConfig & ErrorStatusConfig & {
179
278
  valueDisarm?: string;
180
279
  valueAlarmTriggered?: string;
181
280
  };
281
+ export type ValveConfig = BaseAccessoryConfig & {
282
+ valveType?: ValveType;
283
+ topicGetStatusFault?: string;
284
+ topicGetValveActive: string;
285
+ topicGetValveInUse: string;
286
+ topicGetValveIsConfigured?: string;
287
+ topicGetValveRemainingDuration?: string;
288
+ topicGetValveSetDuration?: string;
289
+ topicSetValveActive: string;
290
+ topicSetValveIsConfigured?: string;
291
+ topicSetValveSetDuration?: string;
292
+ valueActive: string;
293
+ valueConfigured?: string;
294
+ valueFault?: string;
295
+ valueInactive: string;
296
+ valueInUse: string;
297
+ valueNotConfigured?: string;
298
+ };
182
299
  export {};
@@ -0,0 +1,11 @@
1
+ import { CharacteristicValue } from 'homebridge';
2
+ import { CharacteristicKey } from '../model/enums.js';
3
+ export declare class Properties {
4
+ private readonly identifier;
5
+ private readonly useStorage;
6
+ static initStorage(persistPath: string): Promise<void>;
7
+ private readonly properties;
8
+ constructor(identifier: string, useStorage: boolean);
9
+ get(key: CharacteristicKey): CharacteristicValue | undefined;
10
+ set(key: CharacteristicKey, value: CharacteristicValue): void;
11
+ }
@@ -0,0 +1,73 @@
1
+ import storage from 'node-persist';
2
+ function propertyStorageKey(id) {
3
+ return `${id}:Properties`;
4
+ }
5
+ const PRELOAD_KEYS_UUID = 'a6ac8cc1-5112-41c9-98b8-198601281ebb';
6
+ const PRELOAD_KEYS = new Set;
7
+ const PRELOADED = new Map;
8
+ function cacheKey(key) {
9
+ if (PRELOAD_KEYS.has(key)) {
10
+ return;
11
+ }
12
+ PRELOAD_KEYS.add(key);
13
+ const keysArray = Array.from(PRELOAD_KEYS);
14
+ const keysJson = JSON.stringify(keysArray);
15
+ storage.set(PRELOAD_KEYS_UUID, keysJson);
16
+ }
17
+ export class Properties {
18
+ identifier;
19
+ useStorage;
20
+ static async initStorage(persistPath) {
21
+ await storage.init({ dir: persistPath, forgiveParseErrors: true });
22
+ const keysJson = await storage.get(PRELOAD_KEYS_UUID);
23
+ if (keysJson === undefined) {
24
+ return;
25
+ }
26
+ try {
27
+ const keysArray = JSON.parse(keysJson);
28
+ keysArray.forEach(key => PRELOAD_KEYS.add(key));
29
+ }
30
+ catch {
31
+ // ignore
32
+ }
33
+ for (const key of PRELOAD_KEYS) {
34
+ try {
35
+ const propertiesJson = await storage.get(key);
36
+ if (propertiesJson === undefined) {
37
+ continue;
38
+ }
39
+ const array = JSON.parse(propertiesJson);
40
+ const properties = new Map(array);
41
+ PRELOADED.set(key, properties);
42
+ }
43
+ catch {
44
+ // ignore
45
+ }
46
+ }
47
+ }
48
+ properties = new Map();
49
+ constructor(identifier, useStorage) {
50
+ this.identifier = identifier;
51
+ this.useStorage = useStorage;
52
+ if (!useStorage) {
53
+ return;
54
+ }
55
+ const key = propertyStorageKey(identifier);
56
+ this.properties = PRELOADED.get(key) ?? this.properties;
57
+ }
58
+ get(key) {
59
+ return this.properties.get(key);
60
+ }
61
+ set(key, value) {
62
+ this.properties.set(key, value);
63
+ if (!this.useStorage) {
64
+ return;
65
+ }
66
+ const storageKey = propertyStorageKey(this.identifier);
67
+ cacheKey(storageKey);
68
+ const propertiesArray = Array.from(this.properties.entries());
69
+ const propertiesJson = JSON.stringify(propertiesArray);
70
+ storage.set(storageKey, propertiesJson);
71
+ }
72
+ }
73
+ //# sourceMappingURL=properties.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"properties.js","sourceRoot":"","sources":["../../src/tools/properties.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,7 @@
1
- import { TemperatureUnits } from '../model/enums.js';
2
- export declare const toCelsius: (temp: number, units: TemperatureUnits) => number;
3
- export declare const fromCelsius: (temp: number, units: TemperatureUnits) => number;
1
+ export declare enum TemperatureUnits {
2
+ CELSIUS = "C",
3
+ FAHRENHEIT = "F"
4
+ }
5
+ export declare function temperatureUnits(units?: TemperatureUnits): TemperatureUnits;
6
+ export declare function toCelsius(temp: number, units: TemperatureUnits): number;
7
+ export declare function fromCelsius(temp: number, units: TemperatureUnits): number;
@@ -1,14 +1,25 @@
1
- import { TemperatureUnits } from '../model/enums.js';
2
- const fahrenheitToCelsius = (fahrenheit) => {
1
+ export var TemperatureUnits;
2
+ (function (TemperatureUnits) {
3
+ TemperatureUnits["CELSIUS"] = "C";
4
+ TemperatureUnits["FAHRENHEIT"] = "F";
5
+ })(TemperatureUnits || (TemperatureUnits = {}));
6
+ export function temperatureUnits(units) {
7
+ return units === TemperatureUnits.FAHRENHEIT ? TemperatureUnits.FAHRENHEIT : TemperatureUnits.CELSIUS;
8
+ }
9
+ function fahrenheitToCelsius(fahrenheit) {
3
10
  return Number(((fahrenheit - 32) * 5 / 9).toFixed(1));
4
- };
5
- const celsiusToFahrenheit = (celsius) => {
11
+ }
12
+ ;
13
+ function celsiusToFahrenheit(celsius) {
6
14
  return Math.round((celsius * 9 / 5) + 32);
7
- };
8
- export const toCelsius = (temp, units) => {
15
+ }
16
+ ;
17
+ export function toCelsius(temp, units) {
9
18
  return units === TemperatureUnits.FAHRENHEIT ? fahrenheitToCelsius(temp) : temp;
10
- };
11
- export const fromCelsius = (temp, units) => {
19
+ }
20
+ ;
21
+ export function fromCelsius(temp, units) {
12
22
  return units === TemperatureUnits.FAHRENHEIT ? celsiusToFahrenheit(temp) : temp;
13
- };
23
+ }
24
+ ;
14
25
  //# sourceMappingURL=temperature.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"temperature.js","sourceRoot":"","sources":["../../src/tools/temperature.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAErD,MAAM,mBAAmB,GAAG,CAAC,UAAkB,EAAU,EAAE;IACzD,OAAO,MAAM,CAAC,CAAC,CAAC,UAAU,GAAG,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;AACxD,CAAC,CAAC;AACF,MAAM,mBAAmB,GAAG,CAAC,OAAe,EAAU,EAAE;IACtD,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC;AAC5C,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,IAAY,EAAE,KAAuB,EAAU,EAAE;IACzE,OAAO,KAAK,KAAK,gBAAgB,CAAC,UAAU,CAAC,CAAC,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AAClF,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,IAAY,EAAE,KAAuB,EAAU,EAAE;IAC3E,OAAO,KAAK,KAAK,gBAAgB,CAAC,UAAU,CAAC,CAAC,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AAClF,CAAC,CAAC"}
1
+ {"version":3,"file":"temperature.js","sourceRoot":"","sources":["../../src/tools/temperature.ts"],"names":[],"mappings":"AAAA,MAAM,CAAN,IAAY,gBAGX;AAHD,WAAY,gBAAgB;IAC1B,iCAAa,CAAA;IACb,oCAAgB,CAAA;AAClB,CAAC,EAHW,gBAAgB,KAAhB,gBAAgB,QAG3B;AAED,MAAM,UAAU,gBAAgB,CAAC,KAAwB;IACvD,OAAO,KAAK,KAAK,gBAAgB,CAAC,UAAU,CAAC,CAAC,CAAC,gBAAgB,CAAC,UAAU,CAAC,CAAC,CAAC,gBAAgB,CAAC,OAAO,CAAC;AACxG,CAAC;AAED,SAAS,mBAAmB,CAAC,UAAkB;IAC7C,OAAO,MAAM,CAAC,CAAC,CAAC,UAAU,GAAG,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;AACxD,CAAC;AAAA,CAAC;AACF,SAAS,mBAAmB,CAAC,OAAe;IAC1C,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC;AAC5C,CAAC;AAAA,CAAC;AAEF,MAAM,UAAU,SAAS,CAAC,IAAY,EAAE,KAAuB;IAC7D,OAAO,KAAK,KAAK,gBAAgB,CAAC,UAAU,CAAC,CAAC,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AAClF,CAAC;AAAA,CAAC;AAEF,MAAM,UAAU,WAAW,CAAC,IAAY,EAAE,KAAuB;IAC/D,OAAO,KAAK,KAAK,gBAAgB,CAAC,UAAU,CAAC,CAAC,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AAClF,CAAC;AAAA,CAAC"}
package/package.json CHANGED
@@ -4,7 +4,7 @@
4
4
  "displayName": "Homebridge Easy MQTT",
5
5
  "description": "Homebridge plugin for easy control of MQTT devices",
6
6
  "type": "module",
7
- "version": "1.4.0-beta.2",
7
+ "version": "1.4.0-beta.21",
8
8
  "homepage": "https://github.com/mpatfield/homebridge-easy-mqtt#readme",
9
9
  "repository": {
10
10
  "type": "git",
@@ -1,31 +0,0 @@
1
- import { BaseAccessory } from '../abstract/base.js';
2
- import { strings } from '../../i18n/i18n.js';
3
- import { CharacteristicKey, TemperatureUnits } from '../../model/enums.js';
4
- import { fromCelsius } from '../../tools/temperature.js';
5
- export const DEFAULT_TEMPERATURE = 10;
6
- const DEFAULT_COOLING_THRESHOLD = 25;
7
- const DEFAULT_HEATING_THRESHOLD = 20;
8
- export class ClimateControlAccessory extends BaseAccessory {
9
- constructor(Service, Characteristic, accessory, config, log, isGrouped) {
10
- super(Service, Characteristic, accessory, config, log, isGrouped);
11
- this.setCharacteristicValue(CharacteristicKey.TemperatureDisplayUnits, this.temperatureUnits === TemperatureUnits.FAHRENHEIT ? 1 : 0);
12
- this.setupCharacteristic(CharacteristicKey.CurrentTemperature, DEFAULT_TEMPERATURE, 'topicGetCurrentTemperature', this.bindTemperatureUpdate(config, CharacteristicKey.CurrentTemperature, strings.climate.temperatureUpdate), true);
13
- this.setupCharacteristic(CharacteristicKey.CoolingThresholdTemperature, DEFAULT_COOLING_THRESHOLD, 'topicGetCoolingThresholdTemperature', this.bindTemperatureUpdate(config, CharacteristicKey.CoolingThresholdTemperature, strings.climate.coolingThreshold), false, 'topicSetCoolingThresholdTemperature', this.bindOnSetThreshold(CharacteristicKey.CoolingThresholdTemperature, 'topicSetCoolingThresholdTemperature', strings.climate.coolingThresholdFuture));
14
- this.setupCharacteristic(CharacteristicKey.HeatingThresholdTemperature, DEFAULT_HEATING_THRESHOLD, 'topicGetHeatingThresholdTemperature', this.bindTemperatureUpdate(config, CharacteristicKey.HeatingThresholdTemperature, strings.climate.heatingThreshold), false, 'topicSetHeatingThresholdTemperature', this.bindOnSetThreshold(CharacteristicKey.HeatingThresholdTemperature, 'topicSetHeatingThresholdTemperature', strings.climate.heatingThresholdFuture));
15
- }
16
- get temperatureUnits() {
17
- return this.config.temperatureUnits ?? TemperatureUnits.CELSIUS;
18
- }
19
- bindOnSetThreshold(charKey, topic, logTemplate) {
20
- return (async (value) => {
21
- const temperature = this.temperatureFromCV(value);
22
- const logString = logTemplate.replace('%d°%s', `${temperature}°${this.temperatureUnits}`);
23
- this.onSet(charKey, value, temperature, topic, logString);
24
- }).bind(this);
25
- }
26
- temperatureFromCV(value) {
27
- const celsiusTemperature = value;
28
- return this.temperatureUnits === TemperatureUnits.FAHRENHEIT ? fromCelsius(celsiusTemperature, this.temperatureUnits) : celsiusTemperature;
29
- }
30
- }
31
- //# sourceMappingURL=climate.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"climate.js","sourceRoot":"","sources":["../../../src/accessory/climate/climate.ts"],"names":[],"mappings":"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"}