homebridge-easy-mqtt 1.4.0-beta.11 → 1.4.0-beta.13

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 (53) hide show
  1. package/CHANGELOG.md +4 -2
  2. package/README.md +32 -2
  3. package/config.schema.json +256 -3
  4. package/dist/accessory/abstract/base.js +1 -1
  5. package/dist/accessory/abstract/base.js.map +1 -1
  6. package/dist/accessory/abstract/common.d.ts +13 -9
  7. package/dist/accessory/abstract/common.js +13 -14
  8. package/dist/accessory/abstract/common.js.map +1 -1
  9. package/dist/accessory/abstract/helper.d.ts +1 -0
  10. package/dist/accessory/abstract/helper.js +9 -2
  11. package/dist/accessory/abstract/helper.js.map +1 -1
  12. package/dist/accessory/abstract/mqtt.d.ts +11 -4
  13. package/dist/accessory/abstract/mqtt.js +25 -9
  14. package/dist/accessory/abstract/mqtt.js.map +1 -1
  15. package/dist/accessory/addons/addon.d.ts +19 -7
  16. package/dist/accessory/addons/addon.js +39 -12
  17. package/dist/accessory/addons/addon.js.map +1 -1
  18. package/dist/accessory/addons/filter.d.ts +6 -6
  19. package/dist/accessory/addons/filter.js +6 -5
  20. package/dist/accessory/addons/filter.js.map +1 -1
  21. package/dist/accessory/climate/heaterCooler.js +1 -1
  22. package/dist/accessory/climate/heaterCooler.js.map +1 -1
  23. package/dist/accessory/climate/purifier.js +1 -1
  24. package/dist/accessory/climate/purifier.js.map +1 -1
  25. package/dist/accessory/climate/thermostat.js +1 -1
  26. package/dist/accessory/climate/thermostat.js.map +1 -1
  27. package/dist/accessory/garage.d.ts +17 -0
  28. package/dist/accessory/garage.js +110 -0
  29. package/dist/accessory/garage.js.map +1 -0
  30. package/dist/accessory/lock.d.ts +2 -2
  31. package/dist/accessory/lock.js +3 -3
  32. package/dist/accessory/lock.js.map +1 -1
  33. package/dist/homebridge/platform.js +4 -2
  34. package/dist/homebridge/platform.js.map +1 -1
  35. package/dist/homebridge-ui/public/index.html +1 -1
  36. package/dist/homebridge-ui/public/ui.js +1 -1
  37. package/dist/i18n/en.d.ts +33 -0
  38. package/dist/i18n/en.js +33 -0
  39. package/dist/i18n/en.js.map +1 -1
  40. package/dist/i18n/fr.d.ts +33 -0
  41. package/dist/i18n/i18n.d.ts +33 -0
  42. package/dist/i18n/ro.d.ts +33 -0
  43. package/dist/i18n/template.d.ts +33 -0
  44. package/dist/model/enums.d.ts +4 -0
  45. package/dist/model/enums.js +4 -0
  46. package/dist/model/enums.js.map +1 -1
  47. package/dist/model/mqtt.js +21 -21
  48. package/dist/model/mqtt.js.map +1 -1
  49. package/dist/model/types.d.ts +20 -1
  50. package/dist/tools/properties.d.ts +11 -0
  51. package/dist/tools/properties.js +73 -0
  52. package/dist/tools/properties.js.map +1 -0
  53. package/package.json +1 -1
package/CHANGELOG.md CHANGED
@@ -2,16 +2,18 @@
2
2
 
3
3
  All notable changes to homebridge-dummy will be documented in this file.
4
4
 
5
- ## 1.4.0-beta.10 (2025-09-23)
5
+ ## 1.4.0-beta.13 (2025-09-24)
6
6
 
7
7
  ### Added
8
- - Support for Air Purifier, HeaterCooler, LightSensor, and Valve
8
+ - Support for Air Purifier, GarageDoorOpener, HeaterCooler, LightSensor, and Valve
9
9
  - FilterMaintenance to climate control accessories
10
10
  - Broker, username, and password can be set via environment variables ([documentation](https://github.com/mpatfield/homebridge-easy-mqtt#environment-variables))
11
11
  - Publish arbitrary MQTT messages on connect ([documentation] (https://github.com/mpatfield/homebridge-easy-mqtt#mqtt-onconnect))
12
12
  - Traduceri în limba română. Mulțumesc, [@rursache](https://github.com/sponsors/rursache)!
13
13
 
14
14
  ### Changed
15
+ - ⚠️ All accessory states are now saved across plugin/Homebridge restarts
16
+ - If you want to keep the old behavior, select the `Reset on Restart` option for each accessory you want to reset
15
17
  - Optimized MQTT connections by sharing across multiple accessories when possible
16
18
  - Previously, every accessory had its own connection
17
19
  - Better field validation in config UI (Thank you, [@justjam2013](https://github.com/sponsors/justjam2013) for teaching me this!)
package/README.md CHANGED
@@ -25,12 +25,16 @@ This plugin is designed to be a simple replacement for the fantastic [homebridge
25
25
 
26
26
  **HomebridgeEasyMQTT** currently supports the following accessory types but will be expanded over time as more use cases are requested. If there is an accessory type you'd like to see supported, please [create an issue in GitHub](https://github.com/mpatfield/homebridge-easy-mqtt/issues/new/choose).
27
27
 
28
+ - `AirPurifier`
28
29
  - `CarbonDioxideSensor`
29
30
  - `CarbonMonoxideSensor`
30
31
  - `ContactSensor`
32
+ - `GarageDoorOpener`
33
+ - `HeaterCooler`
31
34
  - `HumiditySensor`
32
35
  - `LeakSensor`
33
36
  - `Lightbulb`
37
+ - `LightSensor`
34
38
  - `LockMechanism`
35
39
  - `MotionSensor`
36
40
  - `OccupancySensor`
@@ -40,6 +44,7 @@ This plugin is designed to be a simple replacement for the fantastic [homebridge
40
44
  - `Switch`
41
45
  - `TemperatureSensor`
42
46
  - `Thermostat`
47
+ - `Valve`
43
48
 
44
49
  ## Configuration
45
50
 
@@ -82,6 +87,7 @@ Using the Homebridge Config UI is the easiest way to set up this plugin. However
82
87
  }
83
88
 
84
89
  ],
90
+ "resetOnRestart": false,
85
91
  "disableLogging": false,
86
92
  … // See Topics & Values below for additional attributes for each accessory type
87
93
  ],
@@ -95,7 +101,7 @@ Required fields are marked with an asterisk (*)
95
101
  ### Info
96
102
  - `id*` - A unique ID to identify this accessory. Changing this value will result in a new accessory.
97
103
  - `name*` - The display name for the accessory in HomeKit
98
- - `type*` - The type of accessory, currently Lightbulb, LockMechanism, Outlet, SecuritySystem, Switch, and Temperature Sensor are supported
104
+ - `type*` - The type of accessory. See list of currently supported types above.
99
105
  - `group` - Items sharing the same group name will be grouped together in the Home app UI
100
106
  - ⚠️ Changing the group name will require you to reconfigure any HomeKit scenes/automations for those accessories
101
107
  - `manufacturer` - The accessory manufacturer which will display in HomeKit device details
@@ -277,7 +283,7 @@ These values are used for both determining current state and, where appropriate,
277
283
  - `valueModeOff` - Thermostat off
278
284
  - `valueFilterChange` - Indicates that the filter needs to be changed. *Required if `topicGetFilterChangeIndication` is defined.
279
285
 
280
- #### Air Purifier
286
+ #### AirPurifier
281
287
  - `topicGetActive*` - Get whether or not the accessory is currently active
282
288
  - `topicSetActive*` - Set whether or not the accessory is currently active
283
289
  - `topicGetCurrentPurifierState*` - Get the current mode (i.e. inactive, idle, purifying)
@@ -341,6 +347,24 @@ These values are used for both determining current state and, where appropriate,
341
347
 
342
348
  ### Others
343
349
 
350
+ #### GarageDoorOpener
351
+ - `topicGetCurrentDoorState*` - Current state of the garage door, i.e. open/opening/closed/closing/stopped
352
+ - `topicGetTargetDoorState*` - Target state of the garage door, i.e. open/closed
353
+ - `topicSetTargetDoorState*` - Set the target door state, i.e. open/closed
354
+ - `topicGetObstructionDetected*` - Whether or not the garage door is obstructed
355
+ - `topicGetCurrentLockState` - The current state of the garage lock, i.e. locked/unlocked
356
+ - `topicGetTargetLockState` - The target (i.e. desired) state of the garage lock
357
+ - `topicSetTargetLockState` - For setting the target (i.e. desired) state of the garage lock
358
+ - `valueDoorObstructed*` - Door is obstructed
359
+ - `valueDoorStateClosed` - Door is closed
360
+ - `valueDoorStateClosing` - Door is closing
361
+ - `valueDoorStateOpen` - Door is open
362
+ - `valueDoorStateOpening` - Door is opening
363
+ - `valueDoorStateStopped` - Door is stopped
364
+ - `valueLockStateJammed` - Door lock is jammed
365
+ - `valueLockStateSecured` - Door is locked
366
+ - `valueLockStateUnsecured` - Door is unlocked
367
+
344
368
  #### LockMechanism
345
369
  - `topicGetCurrentLockState*` - The current state of the lock, i.e. locked/unlocked
346
370
  - `topicGetTargetLockState*` - The target (i.e. desired) state of the lock
@@ -516,6 +540,12 @@ Due to the complexity, this was intentionally left out of the plugin config UI,
516
540
 
517
541
  Since `customCharacteristics` is an array, you may define as many custom characteristics as you wish.
518
542
 
543
+ ## Persistance
544
+
545
+ By default, all accessory values are saved and reloaded when the plugin restarts. However, you may override this behavior by selecting `Reset on Restart` option and accessories will be reset to defaults whenever the plugin or Homebridge restarts.
546
+
547
+ - `"resetOnRestart": true`
548
+
519
549
  ## Credits
520
550
 
521
551
  [@arachnetech](https://github.com/arachnetech) for the fantastic [homebridge-mqttthing](https://github.com/arachnetech/homebridge-mqttthing) plugin which serves as the main inspiration for this project
@@ -21,8 +21,8 @@
21
21
  "type": {
22
22
  "type": "string",
23
23
  "title": "${config.title.type}",
24
- "enum": [ "AirPurifier", "CarbonMonoxideSensor", "CarbonDioxideSensor", "ContactSensor", "HeaterCooler", "HumiditySensor", "LeakSensor", "Lightbulb", "LightSensor", "LockMechanism", "MotionSensor", "OccupancySensor", "Outlet", "SecuritySystem", "SmokeSensor", "Switch", "TemperatureSensor", "Thermostat", "Valve"],
25
- "enumNames": ["${config.enumNames.airPurifier}", "${config.enumNames.carbonMonoxideSensor}", "${config.enumNames.carbonDioxideSensor}", "${config.enumNames.contactSensor}", "${config.enumNames.heaterCooler}", "${config.enumNames.humiditySensor}", "${config.enumNames.leakSensor}", "${config.enumNames.lightbulb}", "${config.enumNames.lightSensor}", "${config.enumNames.lockMechanism}", "${config.enumNames.motionSensor}", "${config.enumNames.occupancySensor}", "${config.enumNames.outlet}", "${config.enumNames.securitySystem}", "${config.enumNames.smokeSensor}", "${config.enumNames.switch}", "${config.enumNames.temperatureSensor}", "${config.enumNames.thermostat}", "${config.enumNames.valve}"],
24
+ "enum": [ "AirPurifier", "CarbonMonoxideSensor", "CarbonDioxideSensor", "ContactSensor", "GarageDoorOpener", "HeaterCooler", "HumiditySensor", "LeakSensor", "Lightbulb", "LightSensor", "LockMechanism", "MotionSensor", "OccupancySensor", "Outlet", "SecuritySystem", "SmokeSensor", "Switch", "TemperatureSensor", "Thermostat", "Valve"],
25
+ "enumNames": ["${config.enumNames.airPurifier}", "${config.enumNames.carbonMonoxideSensor}", "${config.enumNames.carbonDioxideSensor}", "${config.enumNames.contactSensor}", "${config.enumNames.garageDoorOpener}", "${config.enumNames.heaterCooler}", "${config.enumNames.humiditySensor}", "${config.enumNames.leakSensor}", "${config.enumNames.lightbulb}", "${config.enumNames.lightSensor}", "${config.enumNames.lockMechanism}", "${config.enumNames.motionSensor}", "${config.enumNames.occupancySensor}", "${config.enumNames.outlet}", "${config.enumNames.securitySystem}", "${config.enumNames.smokeSensor}", "${config.enumNames.switch}", "${config.enumNames.temperatureSensor}", "${config.enumNames.thermostat}", "${config.enumNames.valve}"],
26
26
  "required": true
27
27
  },
28
28
  "group": {
@@ -422,6 +422,22 @@
422
422
  "type": "string",
423
423
  "title": "${config.title.topicResetFilterIndication}"
424
424
  },
425
+ "topicGetCurrentDoorState": {
426
+ "type": "string",
427
+ "title": "${config.title.topicGetCurrentDoorState}"
428
+ },
429
+ "topicGetObstructionDetected": {
430
+ "type": "string",
431
+ "title": "${config.title.topicGetObstructionDetected}"
432
+ },
433
+ "topicGetTargetDoorState": {
434
+ "type": "string",
435
+ "title": "${config.title.topicGetTargetDoorState}"
436
+ },
437
+ "topicSetTargetDoorState": {
438
+ "type": "string",
439
+ "title": "${config.title.topicSetTargetDoorState}"
440
+ },
425
441
  "valueBatteryLow": {
426
442
  "type": "string",
427
443
  "title": "${config.title.valueBatteryLow}"
@@ -594,6 +610,34 @@
594
610
  "type": "string",
595
611
  "title": "${config.title.valueFilterReset}"
596
612
  },
613
+ "valueDoorObstructed": {
614
+ "type": "string",
615
+ "title": "${config.title.valueDoorObstructed}"
616
+ },
617
+ "valueDoorStateClosed": {
618
+ "type": "string",
619
+ "title": "${config.title.valueDoorStateClosed}"
620
+ },
621
+ "valueDoorStateClosing": {
622
+ "type": "string",
623
+ "title": "${config.title.valueDoorStateClosing}"
624
+ },
625
+ "valueDoorStateOpen": {
626
+ "type": "string",
627
+ "title": "${config.title.valueDoorStateOpen}"
628
+ },
629
+ "valueDoorStateOpening": {
630
+ "type": "string",
631
+ "title": "${config.title.valueDoorStateOpening}"
632
+ },
633
+ "valueDoorStateStopped": {
634
+ "type": "string",
635
+ "title": "${config.title.valueDoorStateStopped}"
636
+ },
637
+ "resetOnRestart": {
638
+ "type": "boolean",
639
+ "title": "${config.title.resetOnRestart}"
640
+ },
597
641
  "disableLogging": {
598
642
  "type": "boolean",
599
643
  "title": "${config.title.disableLogging}"
@@ -879,6 +923,26 @@
879
923
  ]
880
924
  }
881
925
  },
926
+ {
927
+ "if": {
928
+ "properties": {
929
+ "info": {
930
+ "properties": {
931
+ "type" : {
932
+ "const": "GarageDoorOpener"
933
+ }
934
+ }
935
+ }
936
+ }
937
+ },
938
+ "then": {
939
+ "required": ["topicGetCurrentDoorState", "topicGetTargetDoorState", "topicSetTargetDoorState", "topicGetObstructionDetected", "valueDoorObstructed"],
940
+ "anyOf": [
941
+ { "required": ["valueDoorStateOpen"] },
942
+ { "required": ["valueDoorStateClosed"] }
943
+ ]
944
+ }
945
+ },
882
946
  {
883
947
  "if": {
884
948
  "properties": {
@@ -1114,6 +1178,45 @@
1114
1178
  "then": {
1115
1179
  "required": ["topicGetFilterChangeIndication", "valueFilterReset"]
1116
1180
  }
1181
+ },
1182
+ {
1183
+ "if": {
1184
+ "properties": {
1185
+ "topicGetCurrentLockState": {
1186
+ "minLength": 1
1187
+ }
1188
+ },
1189
+ "required": ["topicGetCurrentLockState"]
1190
+ },
1191
+ "then": {
1192
+ "required": ["valueLockStateSecured", "valueLockStateUnsecured"]
1193
+ }
1194
+ },
1195
+ {
1196
+ "if": {
1197
+ "properties": {
1198
+ "topicGetTargetLockState": {
1199
+ "minLength": 1
1200
+ }
1201
+ },
1202
+ "required": ["topicGetTargetLockState"]
1203
+ },
1204
+ "then": {
1205
+ "required": ["topicGetCurrentLockState", "topicSetTargetLockState"]
1206
+ }
1207
+ },
1208
+ {
1209
+ "if": {
1210
+ "properties": {
1211
+ "topicSetTargetLockState": {
1212
+ "minLength": 1
1213
+ }
1214
+ },
1215
+ "required": ["topicSetTargetLockState"]
1216
+ },
1217
+ "then": {
1218
+ "required": ["topicGetTargetLockState"]
1219
+ }
1117
1220
  }
1118
1221
  ]
1119
1222
  },
@@ -1192,7 +1295,21 @@
1192
1295
  ]
1193
1296
  },
1194
1297
  "accessories[].mqtt.options",
1195
- "accessories[].disableLogging",
1298
+ {
1299
+ "type": "div",
1300
+ "displayFlex": true,
1301
+ "flex-direction": "row",
1302
+ "items": [
1303
+ {
1304
+ "key": "accessories[].resetOnRestart",
1305
+ "flex": "0 0 25%"
1306
+ },
1307
+ {
1308
+ "key": "accessories[].disableLogging",
1309
+ "flex": "0 0 25%"
1310
+ }
1311
+ ]
1312
+ },
1196
1313
  {
1197
1314
  "type": "fieldset",
1198
1315
  "title": "${config.title.topics}",
@@ -1201,6 +1318,74 @@
1201
1318
  "functionBody": "return model.accessories?.[arguments[1]]?.info?.type !== undefined;"
1202
1319
  },
1203
1320
  "items": [
1321
+ {
1322
+ "type": "fieldset",
1323
+ "notitle": true,
1324
+ "condition": {
1325
+ "functionBody": "return model.accessories?.[arguments[1]]?.info?.type === 'GarageDoorOpener';"
1326
+ },
1327
+ "items": [
1328
+ {
1329
+ "type": "div",
1330
+ "displayFlex": true,
1331
+ "flex-direction": "row",
1332
+ "items": [
1333
+ {
1334
+ "key": "accessories[].topicGetCurrentDoorState",
1335
+ "flex": "0 0 50%"
1336
+ },
1337
+ {
1338
+ "key": "accessories[].topicGetObstructionDetected",
1339
+ "flex": "0 0 50%"
1340
+ }
1341
+ ]
1342
+ },
1343
+ {
1344
+ "type": "div",
1345
+ "displayFlex": true,
1346
+ "flex-direction": "row",
1347
+ "items": [
1348
+ {
1349
+ "key": "accessories[].topicGetTargetDoorState",
1350
+ "flex": "0 0 50%"
1351
+ },
1352
+ {
1353
+ "key": "accessories[].topicSetTargetDoorState",
1354
+ "flex": "0 0 50%"
1355
+ }
1356
+ ]
1357
+ },
1358
+ {
1359
+ "type": "div",
1360
+ "displayFlex": true,
1361
+ "flex-direction": "row",
1362
+ "items": [
1363
+ {
1364
+ "key": "accessories[].topicGetCurrentLockState",
1365
+ "title": "${config.title.topicGetCurrentLockStateOptional}",
1366
+ "flex": "0 0 50%"
1367
+ }
1368
+ ]
1369
+ },
1370
+ {
1371
+ "type": "div",
1372
+ "displayFlex": true,
1373
+ "flex-direction": "row",
1374
+ "items": [
1375
+ {
1376
+ "key": "accessories[].topicGetTargetLockState",
1377
+ "title": "${config.title.topicGetTargetLockStateOptional}",
1378
+ "flex": "0 0 50%"
1379
+ },
1380
+ {
1381
+ "key": "accessories[].topicSetTargetLockState",
1382
+ "title": "${config.title.topicSetTargetLockStateOptional}",
1383
+ "flex": "0 0 50%"
1384
+ }
1385
+ ]
1386
+ }
1387
+ ]
1388
+ },
1204
1389
  {
1205
1390
  "type": "fieldset",
1206
1391
  "notitle": true,
@@ -2207,6 +2392,74 @@
2207
2392
  }
2208
2393
  ]
2209
2394
  },
2395
+ {
2396
+ "type": "fieldset",
2397
+ "notitle": true,
2398
+ "condition": {
2399
+ "functionBody": "return model.accessories?.[arguments[1]]?.info?.type === 'GarageDoorOpener';"
2400
+ },
2401
+ "items": [
2402
+ {
2403
+ "type": "div",
2404
+ "displayFlex": true,
2405
+ "flex-direction": "row",
2406
+ "items": [
2407
+ {
2408
+ "key": "accessories[].valueDoorStateOpen",
2409
+ "flex": "0 0 25%"
2410
+ },
2411
+ {
2412
+ "key": "accessories[].valueDoorStateClosed",
2413
+ "flex": "0 0 25%"
2414
+ },
2415
+ {
2416
+ "key": "accessories[].valueDoorStateOpening",
2417
+ "flex": "0 0 25%"
2418
+ },
2419
+ {
2420
+ "key": "accessories[].valueDoorStateClosing",
2421
+ "flex": "0 0 25%"
2422
+ }
2423
+ ]
2424
+ },
2425
+ {
2426
+ "type": "div",
2427
+ "displayFlex": true,
2428
+ "flex-direction": "row",
2429
+ "items": [
2430
+ {
2431
+ "key": "accessories[].valueDoorStateStopped",
2432
+ "flex": "0 0 25%"
2433
+ },
2434
+ {
2435
+ "key": "accessories[].valueDoorObstructed",
2436
+ "flex": "0 0 25%"
2437
+ }
2438
+ ]
2439
+ },
2440
+ {
2441
+ "type": "div",
2442
+ "displayFlex": true,
2443
+ "flex-direction": "row",
2444
+ "items": [
2445
+ {
2446
+ "key": "accessories[].valueLockStateSecured",
2447
+ "title": "${config.title.valueLockStateSecuredOptional}",
2448
+ "flex": "0 0 25%"
2449
+ },
2450
+ {
2451
+ "key": "accessories[].valueLockStateUnsecured",
2452
+ "title": "${config.title.valueLockStateUnsecuredOptional}",
2453
+ "flex": "0 0 25%"
2454
+ },
2455
+ {
2456
+ "key": "accessories[].valueLockStateJammed",
2457
+ "flex": "0 0 25%"
2458
+ }
2459
+ ]
2460
+ }
2461
+ ]
2462
+ },
2210
2463
  {
2211
2464
  "type": "div",
2212
2465
  "displayFlex": true,
@@ -13,7 +13,7 @@ export class BaseAccessory extends MQTTAccessory {
13
13
  .setCharacteristic(Characteristic.ConfiguredName, config.info.name)
14
14
  .setCharacteristic(Characteristic.Manufacturer, config.info.manufacturer ?? PLATFORM_NAME)
15
15
  .setCharacteristic(Characteristic.Model, config.info.model ?? config.info.type)
16
- .setCharacteristic(Characteristic.SerialNumber, config.info.serialNumber ?? config.info.id)
16
+ .setCharacteristic(Characteristic.SerialNumber, config.info.serialNumber ?? this.identifier)
17
17
  .setCharacteristic(Characteristic.FirmwareRevision, config.info.version ?? getVersion());
18
18
  }
19
19
  this.setupCharacteristic(CharacteristicKey.BatteryLevel, 100, 'topicGetBatteryLevel', this.bindOnUpdateNumeric(CharacteristicKey.BatteryLevel, strings.accessory.batteryLevel), false);
@@ -1 +1 @@
1
- {"version":3,"file":"base.js","sourceRoot":"","sources":["../../../src/accessory/abstract/base.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"base.js","sourceRoot":"","sources":["../../../src/accessory/abstract/base.ts"],"names":[],"mappings":"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"}
@@ -3,6 +3,7 @@ import { CharacteristicKey } from '../../model/enums.js';
3
3
  import { CharacteristicType, TemperatureConfig } from '../../model/types.js';
4
4
  import { Log, LogType } from '../../tools/log.js';
5
5
  import { Assertable } from '../../tools/validation.js';
6
+ import { Properties } from '../../tools/properties.js';
6
7
  type OnUpdateHandler = (topic: string, value: PrimitiveTypes) => (Promise<void>);
7
8
  export type TopicHandler = {
8
9
  topic: string;
@@ -10,22 +11,25 @@ export type TopicHandler = {
10
11
  };
11
12
  export type PublishHandler = (topic: string, value: PrimitiveTypes) => void;
12
13
  export declare abstract class Common<C extends Assertable> {
13
- protected readonly Characteristic: CharacteristicType;
14
- protected readonly log: Log;
15
- private readonly disableLogging;
16
- protected readonly config: C;
17
- protected readonly name: string;
18
- private readonly publishHandler;
19
- protected readonly properties: Map<string, CharacteristicValue>;
14
+ readonly name: string;
15
+ private _properties;
20
16
  readonly topicHandlers: TopicHandler[];
21
- constructor(Characteristic: CharacteristicType, log: Log, disableLogging: boolean, config: C, name: string, publishHandler: PublishHandler);
17
+ constructor(name: string);
22
18
  protected abstract get service(): Service;
19
+ protected abstract get Characteristic(): CharacteristicType;
20
+ protected abstract get log(): Log;
21
+ protected abstract get disableLogging(): boolean;
22
+ protected abstract get config(): C;
23
+ protected abstract get identifier(): string;
24
+ protected abstract get useStoredProperties(): boolean;
25
+ protected abstract publish(rawTopic: string, value: PrimitiveTypes): void;
26
+ protected get properties(): Properties;
23
27
  protected assert(...keys: (keyof C)[]): boolean;
24
28
  protected getRawValue(property: keyof C, assert?: boolean): string | undefined;
25
29
  protected getPrimitiveValue(property: keyof C, assert?: boolean): PrimitiveTypes | undefined;
26
30
  protected addTopicHandlers(topicHandlers: TopicHandler[]): void;
27
31
  protected setupCharacteristic(characteristicKey: CharacteristicKey, defaultValue: CharacteristicValue, getTopicKey: keyof C, onUpdateHandler: OnUpdateHandler, assertGetTopic?: boolean, setTopicKey?: keyof C | undefined, onSetHandler?: CharacteristicSetHandler | undefined): Characteristic | undefined;
28
- protected setupCharacteristicOnGet(characteristicKey: CharacteristicKey, defaultValue: CharacteristicValue, getTopicKey: keyof C, onUpdateHandler: OnUpdateHandler, assertGetTopic?: boolean): Characteristic | undefined;
32
+ private setupCharacteristicOnGet;
29
33
  protected setupCharacteristicOnSet(characteristicKey: CharacteristicKey, setTopicKey?: keyof C | undefined, onSetHandler?: CharacteristicSetHandler | undefined): void;
30
34
  protected bindOnUpdateNumeric(charKey: CharacteristicKey, logTemplate: string): OnUpdateHandler;
31
35
  protected bindOnUpdateNumericBoolean(charKey: CharacteristicKey, valueKey: keyof C, logTrue: string, logFalse: string): OnUpdateHandler;
@@ -4,22 +4,19 @@ import { LogType } from '../../tools/log.js';
4
4
  import { toNumber, toPrimitive } from '../../tools/primitive.js';
5
5
  import { assert } from '../../tools/validation.js';
6
6
  import { toCelsius } from '../../tools/temperature.js';
7
+ import { Properties } from '../../tools/properties.js';
7
8
  export class Common {
8
- Characteristic;
9
- log;
10
- disableLogging;
11
- config;
12
9
  name;
13
- publishHandler;
14
- properties = new Map();
10
+ _properties = undefined;
15
11
  topicHandlers = [];
16
- constructor(Characteristic, log, disableLogging, config, name, publishHandler) {
17
- this.Characteristic = Characteristic;
18
- this.log = log;
19
- this.disableLogging = disableLogging;
20
- this.config = config;
12
+ constructor(name) {
21
13
  this.name = name;
22
- this.publishHandler = publishHandler;
14
+ }
15
+ get properties() {
16
+ if (this._properties === undefined) {
17
+ this._properties = new Properties(this.identifier, this.useStoredProperties);
18
+ }
19
+ return this._properties;
23
20
  }
24
21
  assert(...keys) {
25
22
  return assert(this.log, this.name, this.config, ...keys);
@@ -63,8 +60,10 @@ export class Common {
63
60
  }
64
61
  return;
65
62
  }
63
+ const startingValue = (this.useStoredProperties && this.properties.get(characteristicKey)) ?? defaultValue;
66
64
  const characteristic = this.service.getCharacteristic(this.Characteristic[characteristicKey]);
67
- this.properties.set(characteristicKey, defaultValue);
65
+ characteristic.setValue(startingValue);
66
+ this.properties.set(characteristicKey, startingValue);
68
67
  characteristic.onGet(async () => {
69
68
  return this.properties.get(characteristicKey) ?? null;
70
69
  });
@@ -132,7 +131,7 @@ export class Common {
132
131
  }
133
132
  this.properties.set(key, value);
134
133
  this.service.updateCharacteristic(this.Characteristic[key], value);
135
- this.publishHandler(this.config[topic], publish);
134
+ this.publish(this.config[topic], publish);
136
135
  }
137
136
  logIfDesired(levelOrMessage, ...rest) {
138
137
  if (this.disableLogging) {
@@ -1 +1 @@
1
- {"version":3,"file":"common.js","sourceRoot":"","sources":["../../../src/accessory/abstract/common.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"common.js","sourceRoot":"","sources":["../../../src/accessory/abstract/common.ts"],"names":[],"mappings":"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"}
@@ -2,4 +2,5 @@ import { PlatformAccessory } from 'homebridge';
2
2
  import { BaseAccessory } from './base.js';
3
3
  import * as Configs from '../../model/types.js';
4
4
  import { Log } from '../../tools/log.js';
5
+ export declare function createIdentifier(info: Configs.InfoConfig): string;
5
6
  export declare function createAccessory(Service: Configs.ServiceType, Characteristic: Configs.CharacteristicType, platformAccessory: PlatformAccessory, accessoryConfig: Configs.BaseAccessoryConfig, log: Log, isGrouped?: boolean): BaseAccessory | undefined;
@@ -1,5 +1,6 @@
1
1
  import { strings } from '../../i18n/i18n.js';
2
2
  import { AccessoryType } from '../../model/enums.js';
3
+ import { GarageDoorAccessory } from '../garage.js';
3
4
  import { LockMechanismAccessory } from '../lock.js';
4
5
  import { SecuritySystemAccessory } from '../security.js';
5
6
  import { HeaterCoolerAccessory } from '../climate/heaterCooler.js';
@@ -19,18 +20,24 @@ import { OccupancySensorAccessory } from '../sensor/occupancy.js';
19
20
  import { SmokeSensorAccessory } from '../sensor/smoke.js';
20
21
  import { TemperatureSensorAccessory } from '../sensor/temperature.js';
21
22
  import { ValveAccessory } from '../valve.js';
23
+ import { PLUGIN_NAME } from '../../homebridge/settings.js';
24
+ export function createIdentifier(info) {
25
+ return info.id ?? `${PLUGIN_NAME}:${info.type}:${info.name}`;
26
+ }
22
27
  export function createAccessory(Service, Characteristic, platformAccessory, accessoryConfig, log, isGrouped = false) {
23
28
  switch (accessoryConfig.info.type) {
29
+ case AccessoryType.AirPurifier:
30
+ return new PurifierAccessory(Service, Characteristic, platformAccessory, accessoryConfig, log, isGrouped);
24
31
  case AccessoryType.CarbonDioxideSensor:
25
32
  return new CO2SensorAccessory(Service, Characteristic, platformAccessory, accessoryConfig, log, isGrouped);
26
33
  case AccessoryType.CarbonMonoxideSensor:
27
34
  return new COSensorAccessory(Service, Characteristic, platformAccessory, accessoryConfig, log, isGrouped);
28
35
  case AccessoryType.ContactSensor:
29
36
  return new ContactSensorAccessory(Service, Characteristic, platformAccessory, accessoryConfig, log, isGrouped);
37
+ case AccessoryType.GarageDoorOpener:
38
+ return new GarageDoorAccessory(Service, Characteristic, platformAccessory, accessoryConfig, log, isGrouped);
30
39
  case AccessoryType.HeaterCooler:
31
40
  return new HeaterCoolerAccessory(Service, Characteristic, platformAccessory, accessoryConfig, log, isGrouped);
32
- case AccessoryType.AirPurifier:
33
- return new PurifierAccessory(Service, Characteristic, platformAccessory, accessoryConfig, log, isGrouped);
34
41
  case AccessoryType.HumiditySensor:
35
42
  return new HumiditySensorAccessory(Service, Characteristic, platformAccessory, accessoryConfig, log, isGrouped);
36
43
  case AccessoryType.LeakSensor:
@@ -1 +1 @@
1
- {"version":3,"file":"helper.js","sourceRoot":"","sources":["../../../src/accessory/abstract/helper.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"helper.js","sourceRoot":"","sources":["../../../src/accessory/abstract/helper.ts"],"names":[],"mappings":"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"}