homebridge-easy-mqtt 1.4.1-beta.0 → 1.5.0-beta.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 (154) hide show
  1. package/CHANGELOG.md +9 -1
  2. package/README.md +102 -6
  3. package/config.schema.json +216 -7
  4. package/dist/accessory/abstract/base.d.ts +4 -6
  5. package/dist/accessory/abstract/base.js +17 -37
  6. package/dist/accessory/abstract/base.js.map +1 -1
  7. package/dist/accessory/abstract/common.d.ts +18 -4
  8. package/dist/accessory/abstract/common.js +165 -9
  9. package/dist/accessory/abstract/common.js.map +1 -1
  10. package/dist/accessory/abstract/group.d.ts +2 -4
  11. package/dist/accessory/abstract/group.js +11 -11
  12. package/dist/accessory/abstract/group.js.map +1 -1
  13. package/dist/accessory/abstract/helper.d.ts +3 -5
  14. package/dist/accessory/abstract/helper.js +34 -30
  15. package/dist/accessory/abstract/helper.js.map +1 -1
  16. package/dist/accessory/abstract/mqtt.d.ts +11 -8
  17. package/dist/accessory/abstract/mqtt.js +41 -33
  18. package/dist/accessory/abstract/mqtt.js.map +1 -1
  19. package/dist/accessory/addons/filter.d.ts +0 -1
  20. package/dist/accessory/addons/filter.js +6 -18
  21. package/dist/accessory/addons/filter.js.map +1 -1
  22. package/dist/accessory/button/button.d.ts +6 -0
  23. package/dist/accessory/{button.js → button/button.js} +6 -10
  24. package/dist/accessory/button/button.js.map +1 -0
  25. package/dist/accessory/button/doorbell.d.ts +7 -0
  26. package/dist/accessory/button/doorbell.js +25 -0
  27. package/dist/accessory/button/doorbell.js.map +1 -0
  28. package/dist/accessory/button/stateless.d.ts +6 -0
  29. package/dist/accessory/button/stateless.js +8 -0
  30. package/dist/accessory/button/stateless.js.map +1 -0
  31. package/dist/accessory/characteristic/characteristic.d.ts +3 -0
  32. package/dist/accessory/characteristic/characteristic.js +23 -0
  33. package/dist/accessory/characteristic/characteristic.js.map +1 -0
  34. package/dist/accessory/{abstract/customCharacteristic.d.ts → characteristic/custom.d.ts} +1 -0
  35. package/dist/accessory/{abstract/customCharacteristic.js → characteristic/custom.js} +4 -1
  36. package/dist/accessory/characteristic/custom.js.map +1 -0
  37. package/dist/accessory/characteristic/eve.d.ts +6 -0
  38. package/dist/accessory/characteristic/eve.js +24 -0
  39. package/dist/accessory/characteristic/eve.js.map +1 -0
  40. package/dist/accessory/climate/active.d.ts +2 -8
  41. package/dist/accessory/climate/active.js +9 -41
  42. package/dist/accessory/climate/active.js.map +1 -1
  43. package/dist/accessory/climate/fan2.d.ts +2 -15
  44. package/dist/accessory/climate/fan2.js +30 -109
  45. package/dist/accessory/climate/fan2.js.map +1 -1
  46. package/dist/accessory/climate/heaterCooler.d.ts +2 -14
  47. package/dist/accessory/climate/heaterCooler.js +32 -108
  48. package/dist/accessory/climate/heaterCooler.js.map +1 -1
  49. package/dist/accessory/climate/purifier.d.ts +2 -14
  50. package/dist/accessory/climate/purifier.js +27 -97
  51. package/dist/accessory/climate/purifier.js.map +1 -1
  52. package/dist/accessory/climate/temperatureControl.d.ts +5 -5
  53. package/dist/accessory/climate/temperatureControl.js +8 -8
  54. package/dist/accessory/climate/temperatureControl.js.map +1 -1
  55. package/dist/accessory/climate/thermostat.d.ts +2 -12
  56. package/dist/accessory/climate/thermostat.js +31 -84
  57. package/dist/accessory/climate/thermostat.js.map +1 -1
  58. package/dist/accessory/garage.d.ts +2 -12
  59. package/dist/accessory/garage.js +27 -93
  60. package/dist/accessory/garage.js.map +1 -1
  61. package/dist/accessory/lock.d.ts +2 -8
  62. package/dist/accessory/lock.js +28 -62
  63. package/dist/accessory/lock.js.map +1 -1
  64. package/dist/accessory/onoff/lightbulb.d.ts +2 -5
  65. package/dist/accessory/onoff/lightbulb.js +12 -18
  66. package/dist/accessory/onoff/lightbulb.js.map +1 -1
  67. package/dist/accessory/onoff/onoff.d.ts +4 -8
  68. package/dist/accessory/onoff/onoff.js +30 -34
  69. package/dist/accessory/onoff/onoff.js.map +1 -1
  70. package/dist/accessory/onoff/outlet.d.ts +2 -4
  71. package/dist/accessory/onoff/outlet.js +5 -5
  72. package/dist/accessory/onoff/outlet.js.map +1 -1
  73. package/dist/accessory/onoff/switch.d.ts +1 -4
  74. package/dist/accessory/onoff/switch.js +0 -3
  75. package/dist/accessory/onoff/switch.js.map +1 -1
  76. package/dist/accessory/position/blind.d.ts +2 -5
  77. package/dist/accessory/position/blind.js +7 -13
  78. package/dist/accessory/position/blind.js.map +1 -1
  79. package/dist/accessory/position/position.d.ts +2 -11
  80. package/dist/accessory/position/position.js +20 -71
  81. package/dist/accessory/position/position.js.map +1 -1
  82. package/dist/accessory/security.d.ts +4 -10
  83. package/dist/accessory/security.js +49 -81
  84. package/dist/accessory/security.js.map +1 -1
  85. package/dist/accessory/sensor/air.d.ts +2 -8
  86. package/dist/accessory/sensor/air.js +35 -67
  87. package/dist/accessory/sensor/air.js.map +1 -1
  88. package/dist/accessory/sensor/carbonDioxide.d.ts +2 -4
  89. package/dist/accessory/sensor/carbonDioxide.js +7 -7
  90. package/dist/accessory/sensor/carbonDioxide.js.map +1 -1
  91. package/dist/accessory/sensor/carbonMonoxide.d.ts +2 -4
  92. package/dist/accessory/sensor/carbonMonoxide.js +7 -7
  93. package/dist/accessory/sensor/carbonMonoxide.js.map +1 -1
  94. package/dist/accessory/sensor/contact.d.ts +2 -4
  95. package/dist/accessory/sensor/contact.js +20 -7
  96. package/dist/accessory/sensor/contact.js.map +1 -1
  97. package/dist/accessory/sensor/humidity.d.ts +2 -4
  98. package/dist/accessory/sensor/humidity.js +8 -5
  99. package/dist/accessory/sensor/humidity.js.map +1 -1
  100. package/dist/accessory/sensor/leak.d.ts +2 -4
  101. package/dist/accessory/sensor/leak.js +5 -5
  102. package/dist/accessory/sensor/leak.js.map +1 -1
  103. package/dist/accessory/sensor/light.d.ts +2 -4
  104. package/dist/accessory/sensor/light.js +5 -5
  105. package/dist/accessory/sensor/light.js.map +1 -1
  106. package/dist/accessory/sensor/motion.d.ts +2 -4
  107. package/dist/accessory/sensor/motion.js +8 -5
  108. package/dist/accessory/sensor/motion.js.map +1 -1
  109. package/dist/accessory/sensor/occupancy.d.ts +2 -4
  110. package/dist/accessory/sensor/occupancy.js +5 -5
  111. package/dist/accessory/sensor/occupancy.js.map +1 -1
  112. package/dist/accessory/sensor/sensor.d.ts +2 -6
  113. package/dist/accessory/sensor/sensor.js +5 -29
  114. package/dist/accessory/sensor/sensor.js.map +1 -1
  115. package/dist/accessory/sensor/smoke.d.ts +2 -4
  116. package/dist/accessory/sensor/smoke.js +5 -5
  117. package/dist/accessory/sensor/smoke.js.map +1 -1
  118. package/dist/accessory/sensor/temperature.d.ts +2 -4
  119. package/dist/accessory/sensor/temperature.js +8 -5
  120. package/dist/accessory/sensor/temperature.js.map +1 -1
  121. package/dist/accessory/valve.d.ts +2 -8
  122. package/dist/accessory/valve.js +10 -44
  123. package/dist/accessory/valve.js.map +1 -1
  124. package/dist/homebridge/platform.js +10 -4
  125. package/dist/homebridge/platform.js.map +1 -1
  126. package/dist/homebridge-ui/public/index.html +1 -1
  127. package/dist/homebridge-ui/public/ui.js +1 -1
  128. package/dist/i18n/en.d.ts +41 -5
  129. package/dist/i18n/en.js +43 -7
  130. package/dist/i18n/en.js.map +1 -1
  131. package/dist/i18n/fr.d.ts +41 -5
  132. package/dist/i18n/i18n.d.ts +41 -5
  133. package/dist/i18n/it.d.ts +41 -5
  134. package/dist/i18n/ro.d.ts +41 -5
  135. package/dist/i18n/template.d.ts +41 -5
  136. package/dist/i18n/vi.d.ts +41 -5
  137. package/dist/model/enums.d.ts +17 -2
  138. package/dist/model/enums.js +92 -77
  139. package/dist/model/enums.js.map +1 -1
  140. package/dist/model/history.d.ts +32 -0
  141. package/dist/model/history.js +128 -0
  142. package/dist/model/history.js.map +1 -0
  143. package/dist/model/mqtt.d.ts +1 -0
  144. package/dist/model/mqtt.js +37 -11
  145. package/dist/model/mqtt.js.map +1 -1
  146. package/dist/model/types.d.ts +39 -4
  147. package/dist/tools/log.d.ts +1 -1
  148. package/dist/tools/log.js.map +1 -1
  149. package/dist/tools/properties.js +1 -1
  150. package/dist/tools/properties.js.map +1 -1
  151. package/package.json +2 -1
  152. package/dist/accessory/abstract/customCharacteristic.js.map +0 -1
  153. package/dist/accessory/button.d.ts +0 -10
  154. package/dist/accessory/button.js.map +0 -1
@@ -1,105 +1,73 @@
1
1
  import { BaseAccessory } from './abstract/base.js';
2
2
  import { strings } from '../i18n/i18n.js';
3
- import { AccessoryType, CharacteristicKey } from '../model/enums.js';
3
+ import { AccessoryType, HKCharacteristicKey } from '../model/enums.js';
4
4
  import { LogType } from '../tools/log.js';
5
5
  export class SecuritySystemAccessory extends BaseAccessory {
6
- STATE_MAP;
7
- constructor(Service, Characteristic, accessory, config, log, isGrouped) {
8
- super(Service, Characteristic, accessory, config, log, isGrouped);
9
- this.STATE_MAP = new Map([
10
- ['valueArmStay', Characteristic.SecuritySystemCurrentState.STAY_ARM],
11
- ['valueArmAway', Characteristic.SecuritySystemCurrentState.AWAY_ARM],
12
- ['valueArmNight', Characteristic.SecuritySystemCurrentState.NIGHT_ARM],
13
- ['valueDisarm', Characteristic.SecuritySystemCurrentState.DISARMED],
14
- ['valueAlarmTriggered', Characteristic.SecuritySystemCurrentState.ALARM_TRIGGERED],
6
+ STATES;
7
+ CURRENT_STRINGS;
8
+ getAccessoryType() {
9
+ return AccessoryType.SecuritySystem;
10
+ }
11
+ constructor(dependency) {
12
+ super(dependency);
13
+ this.STATES = new Map([
14
+ ['valueArmStay', dependency.Characteristic.SecuritySystemCurrentState.STAY_ARM],
15
+ ['valueArmAway', dependency.Characteristic.SecuritySystemCurrentState.AWAY_ARM],
16
+ ['valueArmNight', dependency.Characteristic.SecuritySystemCurrentState.NIGHT_ARM],
17
+ ['valueDisarm', dependency.Characteristic.SecuritySystemCurrentState.DISARMED],
18
+ ['valueAlarmTriggered', dependency.Characteristic.SecuritySystemCurrentState.ALARM_TRIGGERED],
19
+ ]);
20
+ this.CURRENT_STRINGS = new Map([
21
+ [dependency.Characteristic.SecuritySystemCurrentState.STAY_ARM, strings.security.stateStay],
22
+ [dependency.Characteristic.SecuritySystemCurrentState.AWAY_ARM, strings.security.stateAway],
23
+ [dependency.Characteristic.SecuritySystemCurrentState.NIGHT_ARM, strings.security.stateNight],
24
+ [dependency.Characteristic.SecuritySystemCurrentState.DISARMED, strings.security.stateDisarmed],
25
+ [dependency.Characteristic.SecuritySystemCurrentState.ALARM_TRIGGERED, strings.security.stateTriggered],
15
26
  ]);
16
- const validCurrentStates = Array.from(this.STATE_MAP.keys()).filter((key) => this.getRawValue(key, false) !== undefined);
27
+ const validCurrentStates = Array.from(this.STATES.keys()).filter((key) => this.getRawValue(key, false) !== undefined);
17
28
  if (validCurrentStates.length === 0) {
18
29
  this.log.error(strings.security.noStateValues, this.name);
19
30
  return;
20
31
  }
21
- this.setup(CharacteristicKey.SecuritySystemCurrentState, Characteristic.SecuritySystemCurrentState.DISARMED, 'topicGetCurrentSecurityState', this.onCurrentStateUpdate.bind(this), true)?.setProps({ validValues: validCurrentStates.map((key) => this.STATE_MAP.get(key)) });
32
+ this.setup(HKCharacteristicKey.SecuritySystemCurrentState, dependency.Characteristic.SecuritySystemCurrentState.DISARMED, 'topicGetCurrentSecurityState', this.onCurrentStateUpdate.bind(this), true)?.setProps({ validValues: validCurrentStates.map((key) => this.STATES.get(key)) });
22
33
  const validTargetStates = validCurrentStates.filter((key) => key !== 'valueAlarmTriggered');
23
- this.setup(CharacteristicKey.SecuritySystemTargetState, Characteristic.SecuritySystemTargetState.DISARM, 'topicGetTargetSecurityState', this.onTargetStateUpdate.bind(this), true, 'topicSetTargetSecurityState', this.onSetTargetState.bind(this))?.setProps({ validValues: validTargetStates.map((key) => this.STATE_MAP.get(key)) });
24
- this.setup(CharacteristicKey.StatusTampered, Characteristic.StatusTampered.NOT_TAMPERED, 'topicGetStatusTampered', this.bindOnUpdateNumericBoolean(CharacteristicKey.StatusTampered, 'valueTampered', strings.error.isTampered, strings.error.notTampered), false);
25
- this.setup(CharacteristicKey.StatusFault, Characteristic.StatusFault.NO_FAULT, 'topicGetStatusFault', this.bindOnUpdateNumericBoolean(CharacteristicKey.StatusFault, 'valueFault', strings.error.hasFault, strings.error.noFault), false);
26
- }
27
- getAccessoryType() {
28
- return AccessoryType.SecuritySystem;
34
+ const futureStrings = new Map([
35
+ [dependency.Characteristic.SecuritySystemCurrentState.STAY_ARM, strings.security.stateStayFuture],
36
+ [dependency.Characteristic.SecuritySystemCurrentState.AWAY_ARM, strings.security.stateAwayFuture],
37
+ [dependency.Characteristic.SecuritySystemCurrentState.NIGHT_ARM, strings.security.stateNightFuture],
38
+ [dependency.Characteristic.SecuritySystemCurrentState.DISARMED, strings.security.stateDisarmFuture],
39
+ ]);
40
+ this.setup(HKCharacteristicKey.SecuritySystemTargetState, dependency.Characteristic.SecuritySystemTargetState.DISARM, 'topicGetTargetSecurityState', this.bindOnUpdateState(HKCharacteristicKey.SecuritySystemTargetState, this.STATES, futureStrings, strings.security.unknownValue), true, 'topicSetTargetSecurityState', this.bindOnSetState(HKCharacteristicKey.SecuritySystemTargetState, 'topicSetTargetSecurityState', this.STATES, futureStrings, strings.security.badValue))?.setProps({ validValues: validTargetStates.map((key) => this.STATES.get(key)) });
41
+ this.setup(HKCharacteristicKey.StatusTampered, dependency.Characteristic.StatusTampered.NOT_TAMPERED, 'topicGetStatusTampered', this.bindOnUpdateNumericBoolean(HKCharacteristicKey.StatusTampered, 'valueTampered', strings.error.isTampered, strings.error.notTampered), false);
42
+ this.setup(HKCharacteristicKey.StatusFault, dependency.Characteristic.StatusFault.NO_FAULT, 'topicGetStatusFault', this.bindOnUpdateNumericBoolean(HKCharacteristicKey.StatusFault, 'valueFault', strings.error.hasFault, strings.error.noFault), false);
29
43
  }
30
- async onCurrentStateUpdate(topic, value) {
31
- const current = this.toCVState(value);
44
+ async onCurrentStateUpdate(_topic, value) {
45
+ let current;
46
+ for (const valueKey of this.STATES.keys()) {
47
+ if (value === this.getPrimitiveValue(valueKey, false)) {
48
+ current = this.STATES.get(valueKey);
49
+ break;
50
+ }
51
+ }
32
52
  if (current === undefined) {
53
+ this.logIfDesired(strings.security.unknownValue, `'${value}'`);
33
54
  return;
34
55
  }
35
56
  if (current <= this.Characteristic.SecuritySystemTargetState.DISARM) {
36
- this.onUpdate(CharacteristicKey.SecuritySystemTargetState, current);
57
+ this.onUpdate(HKCharacteristicKey.SecuritySystemTargetState, current);
37
58
  }
38
- if (!this.onUpdate(CharacteristicKey.SecuritySystemCurrentState, current)) {
59
+ if (!this.onUpdate(HKCharacteristicKey.SecuritySystemCurrentState, current)) {
39
60
  return;
40
61
  }
41
- if (current === this.Characteristic.SecuritySystemCurrentState.ALARM_TRIGGERED) {
42
- this.logIfDesired(LogType.ERROR, this.stateStringForCV(current));
43
- }
44
- else {
45
- this.logIfDesired(this.stateStringForCV(current));
46
- }
47
- }
48
- async onTargetStateUpdate(topic, value) {
49
- const target = this.toCVState(value);
50
- if (target === undefined) {
51
- return;
52
- }
53
- this.onUpdate(CharacteristicKey.SecuritySystemTargetState, target, this.stateStringForCV(target, true));
54
- }
55
- async onSetTargetState(value) {
56
- const target = this.fromCVState(value);
57
- if (target === undefined) {
62
+ const logString = this.CURRENT_STRINGS.get(current);
63
+ if (!logString) {
58
64
  return;
59
65
  }
60
- this.onSet(CharacteristicKey.SecuritySystemTargetState, value, target, 'topicSetTargetSecurityState', this.stateStringForCV(value, true));
61
- }
62
- fromCVState(value) {
63
- let primative = undefined;
64
- this.STATE_MAP.forEach((test, key) => {
65
- if (value === test) {
66
- primative = this.getPrimitiveValue(key);
67
- }
68
- });
69
- if (primative === undefined) {
70
- this.log.error(strings.security.badValue, this.name, `'${value}'`);
71
- }
72
- return primative;
73
- }
74
- toCVState(value) {
75
- switch (value) {
76
- case this.getPrimitiveValue('valueArmStay', false):
77
- return this.STATE_MAP.get('valueArmStay');
78
- case this.getPrimitiveValue('valueArmAway', false):
79
- return this.STATE_MAP.get('valueArmAway');
80
- case this.getPrimitiveValue('valueArmNight', false):
81
- return this.STATE_MAP.get('valueArmNight');
82
- case this.getPrimitiveValue('valueDisarm', false):
83
- return this.STATE_MAP.get('valueDisarm');
84
- case this.getPrimitiveValue('valueAlarmTriggered', false):
85
- return this.STATE_MAP.get('valueAlarmTriggered');
66
+ if (current === this.Characteristic.SecuritySystemCurrentState.ALARM_TRIGGERED) {
67
+ this.logIfDesired(LogType.ERROR, logString);
86
68
  }
87
- this.logIfDesired(strings.security.unknownValue, `'${value}'`);
88
- }
89
- stateStringForCV(state, future = false) {
90
- switch (state) {
91
- case this.Characteristic.SecuritySystemCurrentState.STAY_ARM:
92
- return future ? strings.security.stateStayFuture : strings.security.stateStay;
93
- case this.Characteristic.SecuritySystemCurrentState.AWAY_ARM:
94
- return future ? strings.security.stateAwayFuture : strings.security.stateAway;
95
- case this.Characteristic.SecuritySystemCurrentState.NIGHT_ARM:
96
- return future ? strings.security.stateNightFuture : strings.security.stateNight;
97
- case this.Characteristic.SecuritySystemCurrentState.DISARMED:
98
- return future ? strings.security.stateDisarmFuture : strings.security.stateDisarmed;
99
- case this.Characteristic.SecuritySystemCurrentState.ALARM_TRIGGERED:
100
- return strings.security.stateTriggered;
101
- default:
102
- return strings.security.stateUnknown;
69
+ else {
70
+ this.logIfDesired(logString);
103
71
  }
104
72
  }
105
73
  }
@@ -1 +1 @@
1
- {"version":3,"file":"security.js","sourceRoot":"","sources":["../../src/accessory/security.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"security.js","sourceRoot":"","sources":["../../src/accessory/security.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAEnD,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAE1C,OAAO,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAGvE,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAE1C,MAAM,OAAO,uBAAwB,SAAQ,aAA6B;IAEvD,MAAM,CAAoC;IAC1C,eAAe,CAAmC;IAEzD,gBAAgB;QACxB,OAAO,aAAa,CAAC,cAAc,CAAC;IACtC,CAAC;IAED,YAAY,UAAmD;QAC7D,KAAK,CAAC,UAAU,CAAC,CAAC;QAElB,IAAI,CAAC,MAAM,GAAG,IAAI,GAAG,CAAC;YACpB,CAAC,cAAc,EAAE,UAAU,CAAC,cAAc,CAAC,0BAA0B,CAAC,QAAQ,CAAC;YAC/E,CAAC,cAAc,EAAE,UAAU,CAAC,cAAc,CAAC,0BAA0B,CAAC,QAAQ,CAAC;YAC/E,CAAC,eAAe,EAAE,UAAU,CAAC,cAAc,CAAC,0BAA0B,CAAC,SAAS,CAAC;YACjF,CAAC,aAAa,EAAE,UAAU,CAAC,cAAc,CAAC,0BAA0B,CAAC,QAAQ,CAAC;YAC9E,CAAC,qBAAqB,EAAE,UAAU,CAAC,cAAc,CAAC,0BAA0B,CAAC,eAAe,CAAC;SAC9F,CAAC,CAAC;QAEH,IAAI,CAAC,eAAe,GAAG,IAAI,GAAG,CAAC;YAC7B,CAAC,UAAU,CAAC,cAAc,CAAC,0BAA0B,CAAC,QAAQ,EAAE,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC;YAC3F,CAAC,UAAU,CAAC,cAAc,CAAC,0BAA0B,CAAC,QAAQ,EAAE,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC;YAC3F,CAAC,UAAU,CAAC,cAAc,CAAC,0BAA0B,CAAC,SAAS,EAAE,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC;YAC7F,CAAC,UAAU,CAAC,cAAc,CAAC,0BAA0B,CAAC,QAAQ,EAAE,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAC;YAC/F,CAAC,UAAU,CAAC,cAAc,CAAC,0BAA0B,CAAC,eAAe,EAAE,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAC;SACxG,CAAC,CAAC;QAEH,MAAM,kBAAkB,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,EAAE,KAAK,CAAC,KAAK,SAAS,CAAC,CAAC;QACtH,IAAI,kBAAkB,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACpC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,aAAa,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;YAC1D,OAAO;QACT,CAAC;QAED,IAAI,CAAC,KAAK,CAAC,mBAAmB,CAAC,0BAA0B,EAAE,UAAU,CAAC,cAAc,CAAC,0BAA0B,CAAC,QAAQ,EACtH,8BAA8B,EAAE,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,CAC3E,EAAE,QAAQ,CAAC,EAAE,WAAW,EAAE,kBAAkB,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAE,CAAC,EAAE,CAAC,CAAC;QAErF,MAAM,iBAAiB,GAAG,kBAAkB,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,KAAK,qBAAqB,CAAC,CAAC;QAE5F,MAAM,aAAa,GAAG,IAAI,GAAG,CAAC;YAC5B,CAAC,UAAU,CAAC,cAAc,CAAC,0BAA0B,CAAC,QAAQ,EAAE,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAC;YACjG,CAAC,UAAU,CAAC,cAAc,CAAC,0BAA0B,CAAC,QAAQ,EAAE,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAC;YACjG,CAAC,UAAU,CAAC,cAAc,CAAC,0BAA0B,CAAC,SAAS,EAAE,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAC;YACnG,CAAC,UAAU,CAAC,cAAc,CAAC,0BAA0B,CAAC,QAAQ,EAAE,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAC;SACpG,CAAC,CAAC;QAEH,IAAI,CAAC,KAAK,CAAC,mBAAmB,CAAC,yBAAyB,EAAE,UAAU,CAAC,cAAc,CAAC,yBAAyB,CAAC,MAAM,EAClH,6BAA6B,EAC7B,IAAI,CAAC,iBAAiB,CAAC,mBAAmB,CAAC,yBAAyB,EAAE,IAAI,CAAC,MAAM,EAAE,aAAa,EAAE,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC,EAChI,IAAI,EACJ,6BAA6B,EAC7B,IAAI,CAAC,cAAc,CAAC,mBAAmB,CAAC,yBAAyB,EAAE,6BAA6B,EAAE,IAAI,CAAC,MAAM,EAAE,aAAa,EAAE,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,CACzJ,EAAE,QAAQ,CAAC,EAAE,WAAW,EAAE,iBAAiB,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAE,CAAC,EAAE,CAAC,CAAC;QAEpF,IAAI,CAAC,KAAK,CAAC,mBAAmB,CAAC,cAAc,EAAE,UAAU,CAAC,cAAc,CAAC,cAAc,CAAC,YAAY,EAAE,wBAAwB,EAC5H,IAAI,CAAC,0BAA0B,CAAC,mBAAmB,CAAC,cAAc,EAAE,eAAe,EAAE,OAAO,CAAC,KAAK,CAAC,UAAU,EAAE,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,EACzI,KAAK,CACN,CAAC;QAEF,IAAI,CAAC,KAAK,CAAC,mBAAmB,CAAC,WAAW,EAAE,UAAU,CAAC,cAAc,CAAC,WAAW,CAAC,QAAQ,EAAE,qBAAqB,EAC/G,IAAI,CAAC,0BAA0B,CAAC,mBAAmB,CAAC,WAAW,EAAE,YAAY,EAAE,OAAO,CAAC,KAAK,CAAC,QAAQ,EAAE,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,EAC7H,KAAK,CACN,CAAC;IACJ,CAAC;IAEO,KAAK,CAAC,oBAAoB,CAAC,MAAc,EAAE,KAAqB;QAEtE,IAAI,OAAwC,CAAC;QAC7C,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC;YAC1C,IAAI,KAAK,KAAK,IAAI,CAAC,iBAAiB,CAAC,QAAQ,EAAE,KAAK,CAAC,EAAE,CAAC;gBACtD,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;gBACpC,MAAM;YACR,CAAC;QACH,CAAC;QAED,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;YAC1B,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,QAAQ,CAAC,YAAY,EAAE,IAAI,KAAK,GAAG,CAAC,CAAC;YAC/D,OAAO;QACT,CAAC;QAED,IAAI,OAAiB,IAAI,IAAI,CAAC,cAAc,CAAC,yBAAyB,CAAC,MAAM,EAAE,CAAC;YAC9E,IAAI,CAAC,QAAQ,CAAC,mBAAmB,CAAC,yBAAyB,EAAE,OAAO,CAAC,CAAC;QACxE,CAAC;QAED,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,mBAAmB,CAAC,0BAA0B,EAAE,OAAO,CAAC,EAAE,CAAC;YAC5E,OAAO;QACT,CAAC;QAED,MAAM,SAAS,GAAG,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QACpD,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,OAAO;QACT,CAAC;QAED,IAAI,OAAO,KAAK,IAAI,CAAC,cAAc,CAAC,0BAA0B,CAAC,eAAe,EAAE,CAAC;YAC/E,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;QAC9C,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;QAC/B,CAAC;IACH,CAAC;CACF"}
@@ -1,14 +1,8 @@
1
- import { PlatformAccessory } from 'homebridge';
2
1
  import { SensorAccessory } from './sensor.js';
3
2
  import { AccessoryType } from '../../model/enums.js';
4
- import { CharacteristicType, AirSensorConfig, ServiceType } from '../../model/types.js';
5
- import { Log } from '../../tools/log.js';
3
+ import { AirSensorConfig, MQTTAccessoryDependency } from '../../model/types.js';
6
4
  export declare class AirSensorAccessory extends SensorAccessory<AirSensorConfig> {
7
- private readonly STATE_MAP;
8
- constructor(Service: ServiceType, Characteristic: CharacteristicType, accessory: PlatformAccessory, config: AirSensorConfig, log: Log, isGrouped: boolean);
9
5
  protected getAccessoryType(): AccessoryType;
10
- private onAirQualityUpdate;
11
- private toCVState;
12
- private qualityStringForCV;
6
+ constructor(dependency: MQTTAccessoryDependency<AirSensorConfig>);
13
7
  private logTemplateForDensityKey;
14
8
  }
@@ -1,93 +1,61 @@
1
1
  import { SensorAccessory } from './sensor.js';
2
2
  import { strings } from '../../i18n/i18n.js';
3
- import { AccessoryType, CharacteristicKey } from '../../model/enums.js';
3
+ import { AccessoryType, HKCharacteristicKey } from '../../model/enums.js';
4
4
  const MAX_DENSITY = 5000;
5
5
  export class AirSensorAccessory extends SensorAccessory {
6
- STATE_MAP;
7
- constructor(Service, Characteristic, accessory, config, log, isGrouped) {
8
- super(Service, Characteristic, accessory, config, log, isGrouped);
9
- this.STATE_MAP = new Map([
10
- ['valueAQUnknown', Characteristic.AirQuality.UNKNOWN],
11
- ['valueAQExcellent', Characteristic.AirQuality.EXCELLENT],
12
- ['valueAQGood', Characteristic.AirQuality.GOOD],
13
- ['valueAQFair', Characteristic.AirQuality.FAIR],
14
- ['valueAQInferior', Characteristic.AirQuality.INFERIOR],
15
- ['valueAQPoor', Characteristic.AirQuality.POOR],
6
+ getAccessoryType() {
7
+ return AccessoryType.AirQualitySensor;
8
+ }
9
+ constructor(dependency) {
10
+ super(dependency);
11
+ const stateMap = new Map([
12
+ ['valueAQUnknown', dependency.Characteristic.AirQuality.UNKNOWN],
13
+ ['valueAQExcellent', dependency.Characteristic.AirQuality.EXCELLENT],
14
+ ['valueAQGood', dependency.Characteristic.AirQuality.GOOD],
15
+ ['valueAQFair', dependency.Characteristic.AirQuality.FAIR],
16
+ ['valueAQInferior', dependency.Characteristic.AirQuality.INFERIOR],
17
+ ['valueAQPoor', dependency.Characteristic.AirQuality.POOR],
16
18
  ]);
17
- const validStates = Array.from(this.STATE_MAP.keys()).filter((key) => this.getRawValue(key, false) !== undefined);
19
+ const stateStrings = new Map([
20
+ [dependency.Characteristic.AirQuality.EXCELLENT, strings.sensor.air.qualityExcellent],
21
+ [dependency.Characteristic.AirQuality.GOOD, strings.sensor.air.qualityGood],
22
+ [dependency.Characteristic.AirQuality.FAIR, strings.sensor.air.qualityFair],
23
+ [dependency.Characteristic.AirQuality.INFERIOR, strings.sensor.air.qualityInferior],
24
+ [dependency.Characteristic.AirQuality.POOR, strings.sensor.air.qualityPoor],
25
+ [dependency.Characteristic.AirQuality.UNKNOWN, strings.sensor.air.qualityUnknown],
26
+ ]);
27
+ const validStates = Array.from(stateMap.keys()).filter((key) => this.getRawValue(key, false) !== undefined);
18
28
  if (validStates.length === 0 || (validStates.length === 1 && validStates[0] === 'valueAQUnknown')) {
19
29
  this.log.error(strings.sensor.air.noStateValues, this.name);
20
30
  return;
21
31
  }
22
- this.setup(CharacteristicKey.AirQuality, Characteristic.AirQuality.UNKNOWN, 'topicGetAirQuality', this.onAirQualityUpdate.bind(this), true)?.setProps({ validValues: validStates.map((key) => this.STATE_MAP.get(key)) });
32
+ this.setup(HKCharacteristicKey.AirQuality, dependency.Characteristic.AirQuality.UNKNOWN, 'topicGetAirQuality', this.bindOnUpdateState(HKCharacteristicKey.AirQuality, stateMap, stateStrings, strings.sensor.air.unknownValue), true)?.setProps({ validValues: validStates.map((key) => stateMap.get(key)) });
23
33
  const densityMap = new Map([
24
- ['topicGetNitrogenDioxideDensity', CharacteristicKey.NitrogenDioxideDensity],
25
- ['topicGetOzoneDensity', CharacteristicKey.OzoneDensity],
26
- ['topicGetPM10Density', CharacteristicKey.PM10Density],
27
- ['topicGetPM2_5Density', CharacteristicKey.PM2_5Density],
28
- ['topicGetSulphurDioxideDensity', CharacteristicKey.SulphurDioxideDensity],
29
- ['topicGetVOCDensity', CharacteristicKey.VOCDensity],
34
+ ['topicGetNitrogenDioxideDensity', HKCharacteristicKey.NitrogenDioxideDensity],
35
+ ['topicGetOzoneDensity', HKCharacteristicKey.OzoneDensity],
36
+ ['topicGetPM10Density', HKCharacteristicKey.PM10Density],
37
+ ['topicGetPM2_5Density', HKCharacteristicKey.PM2_5Density],
38
+ ['topicGetSulphurDioxideDensity', HKCharacteristicKey.SulphurDioxideDensity],
39
+ ['topicGetVOCDensity', HKCharacteristicKey.VOCDensity],
30
40
  ]);
31
41
  densityMap.forEach((key, topic) => {
32
42
  this.setup(key, 0, topic, this.bindOnUpdateNumeric(key, this.logTemplateForDensityKey(key)), false)
33
43
  ?.setProps({ maxValue: MAX_DENSITY });
34
44
  });
35
45
  }
36
- getAccessoryType() {
37
- return AccessoryType.AirQualitySensor;
38
- }
39
- async onAirQualityUpdate(topic, value) {
40
- const current = this.toCVState(value);
41
- this.onUpdate(CharacteristicKey.AirQuality, current, this.qualityStringForCV(current));
42
- }
43
- toCVState(value) {
44
- switch (value) {
45
- case this.getPrimitiveValue('valueAQUnknown', false):
46
- return this.STATE_MAP.get('valueAQUnknown');
47
- case this.getPrimitiveValue('valueAQExcellent', false):
48
- return this.STATE_MAP.get('valueAQExcellent');
49
- case this.getPrimitiveValue('valueAQGood', false):
50
- return this.STATE_MAP.get('valueAQGood');
51
- case this.getPrimitiveValue('valueAQFair', false):
52
- return this.STATE_MAP.get('valueAQFair');
53
- case this.getPrimitiveValue('valueAQInferior', false):
54
- return this.STATE_MAP.get('valueAQInferior');
55
- case this.getPrimitiveValue('valueAQPoor', false):
56
- return this.STATE_MAP.get('valueAQPoor');
57
- }
58
- this.logIfDesired(strings.sensor.air.unknownValue, `'${value}'`);
59
- return this.STATE_MAP.get('valueAQUnknown');
60
- }
61
- qualityStringForCV(state) {
62
- switch (state) {
63
- case this.Characteristic.AirQuality.EXCELLENT:
64
- return strings.sensor.air.qualityExcellent;
65
- case this.Characteristic.AirQuality.GOOD:
66
- return strings.sensor.air.qualityGood;
67
- case this.Characteristic.AirQuality.FAIR:
68
- return strings.sensor.air.qualityFair;
69
- case this.Characteristic.AirQuality.INFERIOR:
70
- return strings.sensor.air.qualityInferior;
71
- case this.Characteristic.AirQuality.POOR:
72
- return strings.sensor.air.qualityPoor;
73
- case this.Characteristic.AirQuality.UNKNOWN:
74
- default:
75
- return strings.sensor.air.qualityUnknown;
76
- }
77
- }
78
46
  logTemplateForDensityKey(key) {
79
47
  switch (key) {
80
- case CharacteristicKey.NitrogenDioxideDensity:
48
+ case HKCharacteristicKey.NitrogenDioxideDensity:
81
49
  return strings.sensor.air.densityNitrogen;
82
- case CharacteristicKey.OzoneDensity:
50
+ case HKCharacteristicKey.OzoneDensity:
83
51
  return strings.sensor.air.densityOzone;
84
- case CharacteristicKey.PM10Density:
52
+ case HKCharacteristicKey.PM10Density:
85
53
  return strings.sensor.air.densityPM10;
86
- case CharacteristicKey.PM2_5Density:
54
+ case HKCharacteristicKey.PM2_5Density:
87
55
  return strings.sensor.air.densityPM2_5;
88
- case CharacteristicKey.SulphurDioxideDensity:
56
+ case HKCharacteristicKey.SulphurDioxideDensity:
89
57
  return strings.sensor.air.densitySulphur;
90
- case CharacteristicKey.VOCDensity:
58
+ case HKCharacteristicKey.VOCDensity:
91
59
  return strings.sensor.air.densityVOC;
92
60
  }
93
61
  throw new Error(`Missing log template for density key '${key}'`);
@@ -1 +1 @@
1
- {"version":3,"file":"air.js","sourceRoot":"","sources":["../../../src/accessory/sensor/air.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"air.js","sourceRoot":"","sources":["../../../src/accessory/sensor/air.ts"],"names":[],"mappings":"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"}
@@ -1,9 +1,7 @@
1
- import { PlatformAccessory } from 'homebridge';
2
1
  import { SensorAccessory } from './sensor.js';
3
2
  import { AccessoryType } from '../../model/enums.js';
4
- import { CharacteristicType, CO2SensorConfig, ServiceType } from '../../model/types.js';
5
- import { Log } from '../../tools/log.js';
3
+ import { CO2SensorConfig, MQTTAccessoryDependency } from '../../model/types.js';
6
4
  export declare class CO2SensorAccessory extends SensorAccessory<CO2SensorConfig> {
7
- constructor(Service: ServiceType, Characteristic: CharacteristicType, accessory: PlatformAccessory, config: CO2SensorConfig, log: Log, isGrouped: boolean);
8
5
  protected getAccessoryType(): AccessoryType;
6
+ constructor(dependency: MQTTAccessoryDependency<CO2SensorConfig>);
9
7
  }
@@ -1,15 +1,15 @@
1
1
  import { SensorAccessory } from './sensor.js';
2
2
  import { strings } from '../../i18n/i18n.js';
3
- import { AccessoryType, CharacteristicKey } from '../../model/enums.js';
3
+ import { AccessoryType, HKCharacteristicKey } from '../../model/enums.js';
4
4
  export class CO2SensorAccessory extends SensorAccessory {
5
- constructor(Service, Characteristic, accessory, config, log, isGrouped) {
6
- super(Service, Characteristic, accessory, config, log, isGrouped);
7
- this.setup(CharacteristicKey.CarbonDioxideDetected, Characteristic.CarbonDioxideDetected.CO2_LEVELS_NORMAL, 'topicGetCarbonDioxideDetected', this.bindOnUpdateNumericBoolean(CharacteristicKey.CarbonDioxideDetected, 'valueCarbonDioxideDetected', strings.sensor.carbonDioxide.active, strings.sensor.carbonDioxide.inactive), true);
8
- this.setup(CharacteristicKey.CarbonDioxideLevel, 0, 'topicGetCarbonDioxideLevel', this.bindOnUpdateNumeric(CharacteristicKey.CarbonDioxideLevel, strings.sensor.carbonDioxide.level), false);
9
- this.setup(CharacteristicKey.CarbonDioxidePeakLevel, 0, 'topicGetCarbonDioxidePeakLevel', this.bindOnUpdateNumeric(CharacteristicKey.CarbonDioxidePeakLevel, strings.sensor.carbonDioxide.peakLevel), false);
10
- }
11
5
  getAccessoryType() {
12
6
  return AccessoryType.CarbonDioxideSensor;
13
7
  }
8
+ constructor(dependency) {
9
+ super(dependency);
10
+ this.setup(HKCharacteristicKey.CarbonDioxideDetected, dependency.Characteristic.CarbonDioxideDetected.CO2_LEVELS_NORMAL, 'topicGetCarbonDioxideDetected', this.bindOnUpdateNumericBoolean(HKCharacteristicKey.CarbonDioxideDetected, 'valueCarbonDioxideDetected', strings.sensor.carbonDioxide.active, strings.sensor.carbonDioxide.inactive), true);
11
+ this.setup(HKCharacteristicKey.CarbonDioxideLevel, 0, 'topicGetCarbonDioxideLevel', this.bindOnUpdateNumeric(HKCharacteristicKey.CarbonDioxideLevel, strings.sensor.carbonDioxide.level), false);
12
+ this.setup(HKCharacteristicKey.CarbonDioxidePeakLevel, 0, 'topicGetCarbonDioxidePeakLevel', this.bindOnUpdateNumeric(HKCharacteristicKey.CarbonDioxidePeakLevel, strings.sensor.carbonDioxide.peakLevel), false);
13
+ }
14
14
  }
15
15
  //# sourceMappingURL=carbonDioxide.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"carbonDioxide.js","sourceRoot":"","sources":["../../../src/accessory/sensor/carbonDioxide.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAE9C,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAE7C,OAAO,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAKxE,MAAM,OAAO,kBAAmB,SAAQ,eAAgC;IAEtE,YAAY,OAAoB,EAAE,cAAkC,EAAE,SAA4B,EAAE,MAAuB,EAAE,GAAQ,EAAE,SAAkB;QACvJ,KAAK,CAAC,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,SAAS,CAAC,CAAC;QAElE,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,qBAAqB,EAAE,cAAc,CAAC,qBAAqB,CAAC,iBAAiB,EACxG,+BAA+B,EAC/B,IAAI,CAAC,0BAA0B,CAC7B,iBAAiB,CAAC,qBAAqB,EACvC,4BAA4B,EAC5B,OAAO,CAAC,MAAM,CAAC,aAAa,CAAC,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,aAAa,CAAC,QAAQ,CAAC,EAC7E,IAAI,CAAC,CAAC;QAER,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,kBAAkB,EAAE,CAAC,EAChD,4BAA4B,EAAE,IAAI,CAAC,mBAAmB,CAAC,iBAAiB,CAAC,kBAAkB,EAAE,OAAO,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,CAAC;QAE3I,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,sBAAsB,EAAE,CAAC,EACpD,gCAAgC,EAAE,IAAI,CAAC,mBAAmB,CAAC,iBAAiB,CAAC,sBAAsB,EAAE,OAAO,CAAC,MAAM,CAAC,aAAa,CAAC,SAAS,CAAC,EAAE,KAAK,CAAC,CAAC;IACzJ,CAAC;IAES,gBAAgB;QACxB,OAAO,aAAa,CAAC,mBAAmB,CAAC;IAC3C,CAAC;CACF"}
1
+ {"version":3,"file":"carbonDioxide.js","sourceRoot":"","sources":["../../../src/accessory/sensor/carbonDioxide.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAE9C,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAE7C,OAAO,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAG1E,MAAM,OAAO,kBAAmB,SAAQ,eAAgC;IAE5D,gBAAgB;QACxB,OAAO,aAAa,CAAC,mBAAmB,CAAC;IAC3C,CAAC;IAED,YAAY,UAAoD;QAC9D,KAAK,CAAC,UAAU,CAAC,CAAC;QAElB,IAAI,CAAC,KAAK,CAAC,mBAAmB,CAAC,qBAAqB,EAAE,UAAU,CAAC,cAAc,CAAC,qBAAqB,CAAC,iBAAiB,EACrH,+BAA+B,EAC/B,IAAI,CAAC,0BAA0B,CAC7B,mBAAmB,CAAC,qBAAqB,EACzC,4BAA4B,EAC5B,OAAO,CAAC,MAAM,CAAC,aAAa,CAAC,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,aAAa,CAAC,QAAQ,CAAC,EAC7E,IAAI,CAAC,CAAC;QAER,IAAI,CAAC,KAAK,CAAC,mBAAmB,CAAC,kBAAkB,EAAE,CAAC,EAClD,4BAA4B,EAAE,IAAI,CAAC,mBAAmB,CAAC,mBAAmB,CAAC,kBAAkB,EAAE,OAAO,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,CAAC;QAE7I,IAAI,CAAC,KAAK,CAAC,mBAAmB,CAAC,sBAAsB,EAAE,CAAC,EACtD,gCAAgC,EAAE,IAAI,CAAC,mBAAmB,CAAC,mBAAmB,CAAC,sBAAsB,EAAE,OAAO,CAAC,MAAM,CAAC,aAAa,CAAC,SAAS,CAAC,EAAE,KAAK,CAAC,CAAC;IAC3J,CAAC;CACF"}
@@ -1,9 +1,7 @@
1
- import { PlatformAccessory } from 'homebridge';
2
1
  import { SensorAccessory } from './sensor.js';
3
2
  import { AccessoryType } from '../../model/enums.js';
4
- import { CharacteristicType, COSensorConfig, ServiceType } from '../../model/types.js';
5
- import { Log } from '../../tools/log.js';
3
+ import { COSensorConfig, MQTTAccessoryDependency } from '../../model/types.js';
6
4
  export declare class COSensorAccessory extends SensorAccessory<COSensorConfig> {
7
- constructor(Service: ServiceType, Characteristic: CharacteristicType, accessory: PlatformAccessory, config: COSensorConfig, log: Log, isGrouped: boolean);
8
5
  protected getAccessoryType(): AccessoryType;
6
+ constructor(dependency: MQTTAccessoryDependency<COSensorConfig>);
9
7
  }
@@ -1,15 +1,15 @@
1
1
  import { SensorAccessory } from './sensor.js';
2
2
  import { strings } from '../../i18n/i18n.js';
3
- import { AccessoryType, CharacteristicKey } from '../../model/enums.js';
3
+ import { AccessoryType, HKCharacteristicKey } from '../../model/enums.js';
4
4
  export class COSensorAccessory extends SensorAccessory {
5
- constructor(Service, Characteristic, accessory, config, log, isGrouped) {
6
- super(Service, Characteristic, accessory, config, log, isGrouped);
7
- this.setup(CharacteristicKey.CarbonMonoxideDetected, Characteristic.CarbonMonoxideDetected.CO_LEVELS_NORMAL, 'topicGetCarbonMonoxideDetected', this.bindOnUpdateNumericBoolean(CharacteristicKey.CarbonMonoxideDetected, 'valueCarbonMonoxideDetected', strings.sensor.carbonMonoxide.active, strings.sensor.carbonMonoxide.inactive), true);
8
- this.setup(CharacteristicKey.CarbonMonoxideLevel, 0, 'topicGetCarbonMonoxideLevel', this.bindOnUpdateNumeric(CharacteristicKey.CarbonMonoxideLevel, strings.sensor.carbonMonoxide.level), false);
9
- this.setup(CharacteristicKey.CarbonMonoxidePeakLevel, 0, 'topicGetCarbonMonoxidePeakLevel', this.bindOnUpdateNumeric(CharacteristicKey.CarbonMonoxidePeakLevel, strings.sensor.carbonMonoxide.peakLevel), false);
10
- }
11
5
  getAccessoryType() {
12
6
  return AccessoryType.CarbonMonoxideSensor;
13
7
  }
8
+ constructor(dependency) {
9
+ super(dependency);
10
+ this.setup(HKCharacteristicKey.CarbonMonoxideDetected, dependency.Characteristic.CarbonMonoxideDetected.CO_LEVELS_NORMAL, 'topicGetCarbonMonoxideDetected', this.bindOnUpdateNumericBoolean(HKCharacteristicKey.CarbonMonoxideDetected, 'valueCarbonMonoxideDetected', strings.sensor.carbonMonoxide.active, strings.sensor.carbonMonoxide.inactive), true);
11
+ this.setup(HKCharacteristicKey.CarbonMonoxideLevel, 0, 'topicGetCarbonMonoxideLevel', this.bindOnUpdateNumeric(HKCharacteristicKey.CarbonMonoxideLevel, strings.sensor.carbonMonoxide.level), false);
12
+ this.setup(HKCharacteristicKey.CarbonMonoxidePeakLevel, 0, 'topicGetCarbonMonoxidePeakLevel', this.bindOnUpdateNumeric(HKCharacteristicKey.CarbonMonoxidePeakLevel, strings.sensor.carbonMonoxide.peakLevel), false);
13
+ }
14
14
  }
15
15
  //# sourceMappingURL=carbonMonoxide.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"carbonMonoxide.js","sourceRoot":"","sources":["../../../src/accessory/sensor/carbonMonoxide.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAE9C,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAE7C,OAAO,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAKxE,MAAM,OAAO,iBAAkB,SAAQ,eAA+B;IAEpE,YAAY,OAAoB,EAAE,cAAkC,EAAE,SAA4B,EAAE,MAAsB,EAAE,GAAQ,EAAE,SAAkB;QACtJ,KAAK,CAAC,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,SAAS,CAAC,CAAC;QAElE,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,sBAAsB,EAAE,cAAc,CAAC,sBAAsB,CAAC,gBAAgB,EACzG,gCAAgC,EAChC,IAAI,CAAC,0BAA0B,CAC7B,iBAAiB,CAAC,sBAAsB,EACxC,6BAA6B,EAC7B,OAAO,CAAC,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,cAAc,CAAC,QAAQ,CAAC,EAC/E,IAAI,CAAC,CAAC;QAER,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,mBAAmB,EAAE,CAAC,EACjD,6BAA6B,EAAE,IAAI,CAAC,mBAAmB,CAAC,iBAAiB,CAAC,mBAAmB,EAAE,OAAO,CAAC,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,CAAC;QAE9I,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,uBAAuB,EAAE,CAAC,EACrD,iCAAiC,EAAE,IAAI,CAAC,mBAAmB,CAAC,iBAAiB,CAAC,uBAAuB,EAAE,OAAO,CAAC,MAAM,CAAC,cAAc,CAAC,SAAS,CAAC,EAAE,KAAK,CAAC,CAAC;IAC5J,CAAC;IAES,gBAAgB;QACxB,OAAO,aAAa,CAAC,oBAAoB,CAAC;IAC5C,CAAC;CACF"}
1
+ {"version":3,"file":"carbonMonoxide.js","sourceRoot":"","sources":["../../../src/accessory/sensor/carbonMonoxide.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAE9C,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAE7C,OAAO,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAG1E,MAAM,OAAO,iBAAkB,SAAQ,eAA+B;IAE1D,gBAAgB;QACxB,OAAO,aAAa,CAAC,oBAAoB,CAAC;IAC5C,CAAC;IAED,YAAY,UAAmD;QAC7D,KAAK,CAAC,UAAU,CAAC,CAAC;QAElB,IAAI,CAAC,KAAK,CAAC,mBAAmB,CAAC,sBAAsB,EAAE,UAAU,CAAC,cAAc,CAAC,sBAAsB,CAAC,gBAAgB,EACtH,gCAAgC,EAChC,IAAI,CAAC,0BAA0B,CAC7B,mBAAmB,CAAC,sBAAsB,EAC1C,6BAA6B,EAC7B,OAAO,CAAC,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,cAAc,CAAC,QAAQ,CAAC,EAC/E,IAAI,CAAC,CAAC;QAER,IAAI,CAAC,KAAK,CAAC,mBAAmB,CAAC,mBAAmB,EAAE,CAAC,EACnD,6BAA6B,EAAE,IAAI,CAAC,mBAAmB,CAAC,mBAAmB,CAAC,mBAAmB,EAAE,OAAO,CAAC,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,CAAC;QAEhJ,IAAI,CAAC,KAAK,CAAC,mBAAmB,CAAC,uBAAuB,EAAE,CAAC,EACvD,iCAAiC,EAAE,IAAI,CAAC,mBAAmB,CAAC,mBAAmB,CAAC,uBAAuB,EAAE,OAAO,CAAC,MAAM,CAAC,cAAc,CAAC,SAAS,CAAC,EAAE,KAAK,CAAC,CAAC;IAC9J,CAAC;CACF"}
@@ -1,10 +1,8 @@
1
- import { PlatformAccessory } from 'homebridge';
2
1
  import { SensorAccessory } from './sensor.js';
3
2
  import { AccessoryType } from '../../model/enums.js';
4
- import { CharacteristicType, ContactSensorConfig, ServiceType } from '../../model/types.js';
5
- import { Log } from '../../tools/log.js';
3
+ import { ContactSensorConfig, MQTTAccessoryDependency } from '../../model/types.js';
6
4
  export declare class ContactSensorAccessory extends SensorAccessory<ContactSensorConfig> {
7
- constructor(Service: ServiceType, Characteristic: CharacteristicType, accessory: PlatformAccessory, config: ContactSensorConfig, log: Log, isGrouped: boolean);
8
5
  protected getAccessoryType(): AccessoryType;
6
+ constructor(dependency: MQTTAccessoryDependency<ContactSensorConfig>);
9
7
  private onContactStateUpdate;
10
8
  }
@@ -1,17 +1,30 @@
1
1
  import { SensorAccessory } from './sensor.js';
2
+ import { EVE_EPOCH } from '../characteristic/eve.js';
2
3
  import { strings } from '../../i18n/i18n.js';
3
- import { AccessoryType, CharacteristicKey } from '../../model/enums.js';
4
+ import { AccessoryType, EveCharacteristicKey, HKCharacteristicKey } from '../../model/enums.js';
5
+ import { HistoryType } from '../../model/history.js';
4
6
  export class ContactSensorAccessory extends SensorAccessory {
5
- constructor(Service, Characteristic, accessory, config, log, isGrouped) {
6
- super(Service, Characteristic, accessory, config, log, isGrouped);
7
- this.setup(CharacteristicKey.ContactSensorState, Characteristic.ContactSensorState.CONTACT_NOT_DETECTED, 'topicGetContactSensorState', this.onContactStateUpdate.bind(this), true);
8
- }
9
7
  getAccessoryType() {
10
8
  return AccessoryType.ContactSensor;
11
9
  }
10
+ constructor(dependency) {
11
+ super(dependency);
12
+ this.setup(HKCharacteristicKey.ContactSensorState, dependency.Characteristic.ContactSensorState.CONTACT_NOT_DETECTED, 'topicGetContactSensorState', this.onContactStateUpdate.bind(this), true);
13
+ this.setupTopicless(EveCharacteristicKey.OpenDuration, 0);
14
+ this.setupTopicless(EveCharacteristicKey.ClosedDuration, 0);
15
+ this.setupTopicless(EveCharacteristicKey.TimesOpened, 0);
16
+ this.setupTopicless(EveCharacteristicKey.ResetTotal, EVE_EPOCH, () => {
17
+ this.onUpdate(EveCharacteristicKey.TimesOpened, 0, strings.sensor.contact.timesOpenedReset);
18
+ });
19
+ }
12
20
  async onContactStateUpdate(topic, value) {
13
- const numeric = value === this.getPrimitiveValue('valueContactDetected') ? 0 : 1;
14
- this.onUpdate(CharacteristicKey.ContactSensorState, numeric, numeric ? strings.sensor.contact.inactive : strings.sensor.contact.active);
21
+ const numeric = value === this.getPrimitiveValue('valueContactDetected') ?
22
+ this.Characteristic.ContactSensorState.CONTACT_DETECTED : this.Characteristic.ContactSensorState.CONTACT_NOT_DETECTED;
23
+ this.onUpdate(HKCharacteristicKey.ContactSensorState, numeric, numeric ? strings.sensor.contact.inactive : strings.sensor.contact.active);
24
+ this.recordHistory(HistoryType.DOOR, { status: numeric }, true);
25
+ if (numeric === this.Characteristic.ContactSensorState.CONTACT_NOT_DETECTED) {
26
+ this.updateNumericValue(EveCharacteristicKey.TimesOpened, 1);
27
+ }
15
28
  }
16
29
  }
17
30
  //# sourceMappingURL=contact.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"contact.js","sourceRoot":"","sources":["../../../src/accessory/sensor/contact.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAE9C,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAE7C,OAAO,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAKxE,MAAM,OAAO,sBAAuB,SAAQ,eAAoC;IAE9E,YACE,OAAoB,EAAE,cAAkC,EAAE,SAA4B,EAAE,MAA2B,EAAE,GAAQ,EAAE,SAAkB;QACjJ,KAAK,CAAC,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,SAAS,CAAC,CAAC;QAElE,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,kBAAkB,EAAE,cAAc,CAAC,kBAAkB,CAAC,oBAAoB,EACrG,4BAA4B,EAAE,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC;IAC9E,CAAC;IAES,gBAAgB;QACxB,OAAO,aAAa,CAAC,aAAa,CAAC;IACrC,CAAC;IAEO,KAAK,CAAC,oBAAoB,CAAC,KAAa,EAAE,KAAqB;QACrE,MAAM,OAAO,GAAG,KAAK,KAAK,IAAI,CAAC,iBAAiB,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACjF,IAAI,CAAC,QAAQ,CAAC,iBAAiB,CAAC,kBAAkB,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IAC1I,CAAC;CACF"}
1
+ {"version":3,"file":"contact.js","sourceRoot":"","sources":["../../../src/accessory/sensor/contact.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAE9C,OAAO,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AAErD,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAE7C,OAAO,EAAE,aAAa,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAChG,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAGrD,MAAM,OAAO,sBAAuB,SAAQ,eAAoC;IAEpE,gBAAgB;QACxB,OAAO,aAAa,CAAC,aAAa,CAAC;IACrC,CAAC;IAED,YACE,UAAwD;QACxD,KAAK,CAAC,UAAU,CAAC,CAAC;QAElB,IAAI,CAAC,KAAK,CAAC,mBAAmB,CAAC,kBAAkB,EAAE,UAAU,CAAC,cAAc,CAAC,kBAAkB,CAAC,oBAAoB,EAClH,4BAA4B,EAAE,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC;QAE5E,IAAI,CAAC,cAAc,CAAC,oBAAoB,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC;QAE1D,IAAI,CAAC,cAAc,CAAC,oBAAoB,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC;QAE5D,IAAI,CAAC,cAAc,CAAC,oBAAoB,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;QAEzD,IAAI,CAAC,cAAc,CAAC,oBAAoB,CAAC,UAAU,EAAE,SAAS,EAAE,GAAG,EAAE;YACnE,IAAI,CAAC,QAAQ,CAAC,oBAAoB,CAAC,WAAW,EAAE,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC;QAC9F,CAAC,CAAC,CAAC;IACL,CAAC;IAEO,KAAK,CAAC,oBAAoB,CAAC,KAAa,EAAE,KAAqB;QACrE,MAAM,OAAO,GAAG,KAAK,KAAK,IAAI,CAAC,iBAAiB,CAAC,sBAAsB,CAAC,CAAC,CAAC;YACxE,IAAI,CAAC,cAAc,CAAC,kBAAkB,CAAC,gBAAgB,CAAC,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,kBAAkB,CAAC,oBAAoB,CAAC;QACxH,IAAI,CAAC,QAAQ,CAAC,mBAAmB,CAAC,kBAAkB,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QAE1I,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,IAAI,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,IAAI,CAAC,CAAC;QAEhE,IAAI,OAAO,KAAK,IAAI,CAAC,cAAc,CAAC,kBAAkB,CAAC,oBAAoB,EAAE,CAAC;YAC5E,IAAI,CAAC,kBAAkB,CAAC,oBAAoB,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;QAC/D,CAAC;IACH,CAAC;CACF"}
@@ -1,9 +1,7 @@
1
- import { PlatformAccessory } from 'homebridge';
2
1
  import { SensorAccessory } from './sensor.js';
3
2
  import { AccessoryType } from '../../model/enums.js';
4
- import { CharacteristicType, HumiditySensorConfig, ServiceType } from '../../model/types.js';
5
- import { Log } from '../../tools/log.js';
3
+ import { HumiditySensorConfig, MQTTAccessoryDependency } from '../../model/types.js';
6
4
  export declare class HumiditySensorAccessory extends SensorAccessory<HumiditySensorConfig> {
7
- constructor(Service: ServiceType, Characteristic: CharacteristicType, accessory: PlatformAccessory, config: HumiditySensorConfig, log: Log, isGrouped: boolean);
8
5
  protected getAccessoryType(): AccessoryType;
6
+ constructor(dependency: MQTTAccessoryDependency<HumiditySensorConfig>);
9
7
  }
@@ -1,13 +1,16 @@
1
1
  import { SensorAccessory } from './sensor.js';
2
2
  import { strings } from '../../i18n/i18n.js';
3
- import { AccessoryType, CharacteristicKey } from '../../model/enums.js';
3
+ import { AccessoryType, HKCharacteristicKey } from '../../model/enums.js';
4
+ import { HistoryType } from '../../model/history.js';
4
5
  export class HumiditySensorAccessory extends SensorAccessory {
5
- constructor(Service, Characteristic, accessory, config, log, isGrouped) {
6
- super(Service, Characteristic, accessory, config, log, isGrouped);
7
- this.setup(CharacteristicKey.CurrentRelativeHumidity, 0, 'topicGetCurrentRelativeHumidity', this.bindOnUpdateNumeric(CharacteristicKey.CurrentRelativeHumidity, strings.climate.humidityUpdate), true);
8
- }
9
6
  getAccessoryType() {
10
7
  return AccessoryType.HumiditySensor;
11
8
  }
9
+ constructor(dependency) {
10
+ super(dependency);
11
+ this.setup(HKCharacteristicKey.CurrentRelativeHumidity, 0, 'topicGetCurrentRelativeHumidity', this.bindOnUpdateNumeric(HKCharacteristicKey.CurrentRelativeHumidity, strings.climate.humidityUpdate, (value) => {
12
+ this.recordHistory(HistoryType.WEATHER, { humidity: value });
13
+ }), true);
14
+ }
12
15
  }
13
16
  //# sourceMappingURL=humidity.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"humidity.js","sourceRoot":"","sources":["../../../src/accessory/sensor/humidity.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAE9C,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAE7C,OAAO,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAKxE,MAAM,OAAO,uBAAwB,SAAQ,eAAqC;IAEhF,YACE,OAAoB,EAAE,cAAkC,EAAE,SAA4B,EAAE,MAA4B,EAAE,GAAQ,EAAE,SAAkB;QAClJ,KAAK,CAAC,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,SAAS,CAAC,CAAC;QAElE,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,uBAAuB,EAAE,CAAC,EACrD,iCAAiC,EAAE,IAAI,CAAC,mBAAmB,CAAC,iBAAiB,CAAC,uBAAuB,EAAE,OAAO,CAAC,OAAO,CAAC,cAAc,CAAC,EAAE,IAAI,CAAC,CAAC;IAClJ,CAAC;IAES,gBAAgB;QACxB,OAAO,aAAa,CAAC,cAAc,CAAC;IACtC,CAAC;CACF"}
1
+ {"version":3,"file":"humidity.js","sourceRoot":"","sources":["../../../src/accessory/sensor/humidity.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAE9C,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAE7C,OAAO,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAC1E,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAGrD,MAAM,OAAO,uBAAwB,SAAQ,eAAqC;IAEtE,gBAAgB;QACxB,OAAO,aAAa,CAAC,cAAc,CAAC;IACtC,CAAC;IAED,YACE,UAAyD;QACzD,KAAK,CAAC,UAAU,CAAC,CAAC;QAElB,IAAI,CAAC,KAAK,CAAC,mBAAmB,CAAC,uBAAuB,EAAE,CAAC,EACvD,iCAAiC,EACjC,IAAI,CAAC,mBAAmB,CAAC,mBAAmB,CAAC,uBAAuB,EAAE,OAAO,CAAC,OAAO,CAAC,cAAc,EAAE,CAAC,KAAK,EAAE,EAAE;YAC9G,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,OAAO,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAE,CAAC;QAChE,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;IACd,CAAC;CACF"}
@@ -1,9 +1,7 @@
1
- import { PlatformAccessory } from 'homebridge';
2
1
  import { SensorAccessory } from './sensor.js';
3
2
  import { AccessoryType } from '../../model/enums.js';
4
- import { CharacteristicType, LeakSensorConfig, ServiceType } from '../../model/types.js';
5
- import { Log } from '../../tools/log.js';
3
+ import { LeakSensorConfig, MQTTAccessoryDependency } from '../../model/types.js';
6
4
  export declare class LeakSensorAccessory extends SensorAccessory<LeakSensorConfig> {
7
- constructor(Service: ServiceType, Characteristic: CharacteristicType, accessory: PlatformAccessory, config: LeakSensorConfig, log: Log, isGrouped: boolean);
8
5
  protected getAccessoryType(): AccessoryType;
6
+ constructor(dependency: MQTTAccessoryDependency<LeakSensorConfig>);
9
7
  }