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.
- package/CHANGELOG.md +21 -3
- package/README.md +271 -24
- package/config.schema.json +2309 -342
- package/dist/accessory/abstract/base.js +5 -5
- package/dist/accessory/abstract/base.js.map +1 -1
- package/dist/accessory/abstract/common.d.ts +42 -0
- package/dist/accessory/abstract/common.js +169 -0
- package/dist/accessory/abstract/common.js.map +1 -0
- package/dist/accessory/abstract/helper.d.ts +1 -0
- package/dist/accessory/abstract/helper.js +25 -0
- package/dist/accessory/abstract/helper.js.map +1 -1
- package/dist/accessory/abstract/mqtt.d.ts +15 -26
- package/dist/accessory/abstract/mqtt.js +29 -148
- package/dist/accessory/abstract/mqtt.js.map +1 -1
- package/dist/accessory/addons/addon.d.ts +24 -0
- package/dist/accessory/addons/addon.js +52 -0
- package/dist/accessory/addons/addon.js.map +1 -0
- package/dist/accessory/addons/filter.d.ts +11 -0
- package/dist/accessory/addons/filter.js +37 -0
- package/dist/accessory/addons/filter.js.map +1 -0
- package/dist/accessory/climate/active.d.ts +11 -0
- package/dist/accessory/climate/active.js +44 -0
- package/dist/accessory/climate/active.js.map +1 -0
- package/dist/accessory/climate/fan2.d.ts +20 -0
- package/dist/accessory/climate/fan2.js +122 -0
- package/dist/accessory/climate/fan2.js.map +1 -0
- package/dist/accessory/climate/heaterCooler.d.ts +2 -6
- package/dist/accessory/climate/heaterCooler.js +7 -39
- package/dist/accessory/climate/heaterCooler.js.map +1 -1
- package/dist/accessory/climate/purifier.d.ts +19 -0
- package/dist/accessory/climate/purifier.js +114 -0
- package/dist/accessory/climate/purifier.js.map +1 -0
- package/dist/accessory/climate/{climate.d.ts → temperatureControl.d.ts} +4 -3
- package/dist/accessory/climate/temperatureControl.js +35 -0
- package/dist/accessory/climate/temperatureControl.js.map +1 -0
- package/dist/accessory/climate/thermostat.d.ts +2 -2
- package/dist/accessory/climate/thermostat.js +11 -10
- package/dist/accessory/climate/thermostat.js.map +1 -1
- package/dist/accessory/garage.d.ts +17 -0
- package/dist/accessory/garage.js +110 -0
- package/dist/accessory/garage.js.map +1 -0
- package/dist/accessory/lock.d.ts +2 -2
- package/dist/accessory/lock.js +3 -3
- package/dist/accessory/lock.js.map +1 -1
- package/dist/accessory/onoff/lightbulb.js +4 -4
- package/dist/accessory/onoff/lightbulb.js.map +1 -1
- package/dist/accessory/onoff/onoff.js +1 -1
- package/dist/accessory/onoff/onoff.js.map +1 -1
- package/dist/accessory/onoff/outlet.js +1 -1
- package/dist/accessory/onoff/outlet.js.map +1 -1
- package/dist/accessory/position/blind.d.ts +10 -0
- package/dist/accessory/position/blind.js +22 -0
- package/dist/accessory/position/blind.js.map +1 -0
- package/dist/accessory/position/position.d.ts +14 -0
- package/dist/accessory/position/position.js +80 -0
- package/dist/accessory/position/position.js.map +1 -0
- package/dist/accessory/security.js +4 -4
- package/dist/accessory/security.js.map +1 -1
- package/dist/accessory/sensor/air.d.ts +14 -0
- package/dist/accessory/sensor/air.js +96 -0
- package/dist/accessory/sensor/air.js.map +1 -0
- package/dist/accessory/sensor/carbonDioxide.js +3 -3
- package/dist/accessory/sensor/carbonDioxide.js.map +1 -1
- package/dist/accessory/sensor/carbonMonoxide.js +3 -3
- package/dist/accessory/sensor/carbonMonoxide.js.map +1 -1
- package/dist/accessory/sensor/contact.js +1 -1
- package/dist/accessory/sensor/contact.js.map +1 -1
- package/dist/accessory/sensor/humidity.js +1 -1
- package/dist/accessory/sensor/humidity.js.map +1 -1
- package/dist/accessory/sensor/leak.js +1 -1
- package/dist/accessory/sensor/leak.js.map +1 -1
- package/dist/accessory/sensor/light.d.ts +9 -0
- package/dist/accessory/sensor/light.js +13 -0
- package/dist/accessory/sensor/light.js.map +1 -0
- package/dist/accessory/sensor/motion.js +1 -1
- package/dist/accessory/sensor/motion.js.map +1 -1
- package/dist/accessory/sensor/occupancy.js +1 -1
- package/dist/accessory/sensor/occupancy.js.map +1 -1
- package/dist/accessory/sensor/sensor.js +4 -4
- package/dist/accessory/sensor/sensor.js.map +1 -1
- package/dist/accessory/sensor/smoke.js +1 -1
- package/dist/accessory/sensor/smoke.js.map +1 -1
- package/dist/accessory/sensor/temperature.js +1 -1
- package/dist/accessory/sensor/temperature.js.map +1 -1
- package/dist/accessory/valve.d.ts +14 -0
- package/dist/accessory/valve.js +71 -0
- package/dist/accessory/valve.js.map +1 -0
- package/dist/homebridge/platform.js +5 -3
- package/dist/homebridge/platform.js.map +1 -1
- package/dist/homebridge-ui/public/index.html +1 -1
- package/dist/homebridge-ui/public/ui.js +1 -1
- package/dist/i18n/en.d.ts +203 -0
- package/dist/i18n/en.js +226 -23
- package/dist/i18n/en.js.map +1 -1
- package/dist/i18n/fr.d.ts +468 -0
- package/dist/i18n/fr.js +265 -0
- package/dist/i18n/fr.js.map +1 -1
- package/dist/i18n/i18n.d.ts +206 -1
- package/dist/i18n/i18n.js +12 -0
- package/dist/i18n/i18n.js.map +1 -1
- package/dist/i18n/ro.d.ts +889 -0
- package/dist/i18n/ro.js +381 -0
- package/dist/i18n/ro.js.map +1 -0
- package/dist/i18n/template.d.ts +205 -2
- package/dist/i18n/template.js +3 -3
- package/dist/i18n/template.js.map +1 -1
- package/dist/i18n/vi.d.ts +1034 -0
- package/dist/i18n/vi.js +526 -0
- package/dist/i18n/vi.js.map +1 -0
- package/dist/model/enums.d.ts +49 -5
- package/dist/model/enums.js +50 -5
- package/dist/model/enums.js.map +1 -1
- package/dist/model/mqtt.d.ts +5 -4
- package/dist/model/mqtt.js +41 -25
- package/dist/model/mqtt.js.map +1 -1
- package/dist/model/types.d.ts +141 -24
- package/dist/tools/properties.d.ts +11 -0
- package/dist/tools/properties.js +73 -0
- package/dist/tools/properties.js.map +1 -0
- package/dist/tools/temperature.d.ts +7 -3
- package/dist/tools/temperature.js +20 -9
- package/dist/tools/temperature.js.map +1 -1
- package/package.json +1 -1
- package/dist/accessory/climate/climate.js +0 -31
- package/dist/accessory/climate/climate.js.map +0 -1
package/dist/model/types.d.ts
CHANGED
|
@@ -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,
|
|
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
|
|
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
|
|
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
|
|
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
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
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
|
-
|
|
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
|
-
|
|
2
|
-
|
|
3
|
-
|
|
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
|
-
|
|
2
|
-
|
|
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
|
-
|
|
11
|
+
}
|
|
12
|
+
;
|
|
13
|
+
function celsiusToFahrenheit(celsius) {
|
|
6
14
|
return Math.round((celsius * 9 / 5) + 32);
|
|
7
|
-
}
|
|
8
|
-
|
|
15
|
+
}
|
|
16
|
+
;
|
|
17
|
+
export function toCelsius(temp, units) {
|
|
9
18
|
return units === TemperatureUnits.FAHRENHEIT ? fahrenheitToCelsius(temp) : temp;
|
|
10
|
-
}
|
|
11
|
-
|
|
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,
|
|
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.
|
|
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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"}
|