homebridge-easy-mqtt 1.4.1-beta.1 → 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 (132) hide show
  1. package/CHANGELOG.md +8 -1
  2. package/README.md +84 -5
  3. package/config.schema.json +76 -1
  4. package/dist/accessory/abstract/base.d.ts +2 -2
  5. package/dist/accessory/abstract/base.js +5 -25
  6. package/dist/accessory/abstract/base.js.map +1 -1
  7. package/dist/accessory/abstract/common.d.ts +17 -6
  8. package/dist/accessory/abstract/common.js +136 -28
  9. package/dist/accessory/abstract/common.js.map +1 -1
  10. package/dist/accessory/abstract/mqtt.d.ts +2 -0
  11. package/dist/accessory/abstract/mqtt.js +13 -12
  12. package/dist/accessory/abstract/mqtt.js.map +1 -1
  13. package/dist/accessory/addons/filter.d.ts +0 -1
  14. package/dist/accessory/addons/filter.js +1 -13
  15. package/dist/accessory/addons/filter.js.map +1 -1
  16. package/dist/accessory/characteristic/characteristic.d.ts +3 -0
  17. package/dist/accessory/characteristic/characteristic.js +23 -0
  18. package/dist/accessory/characteristic/characteristic.js.map +1 -0
  19. package/dist/accessory/characteristic/custom.d.ts +1 -0
  20. package/dist/accessory/characteristic/custom.js +3 -0
  21. package/dist/accessory/characteristic/custom.js.map +1 -1
  22. package/dist/accessory/characteristic/eve.d.ts +6 -0
  23. package/dist/accessory/characteristic/eve.js +24 -0
  24. package/dist/accessory/characteristic/eve.js.map +1 -0
  25. package/dist/accessory/climate/active.d.ts +0 -4
  26. package/dist/accessory/climate/active.js +4 -36
  27. package/dist/accessory/climate/active.js.map +1 -1
  28. package/dist/accessory/climate/fan2.d.ts +1 -12
  29. package/dist/accessory/climate/fan2.js +22 -101
  30. package/dist/accessory/climate/fan2.js.map +1 -1
  31. package/dist/accessory/climate/heaterCooler.d.ts +1 -11
  32. package/dist/accessory/climate/heaterCooler.js +24 -100
  33. package/dist/accessory/climate/heaterCooler.js.map +1 -1
  34. package/dist/accessory/climate/purifier.d.ts +1 -11
  35. package/dist/accessory/climate/purifier.js +20 -90
  36. package/dist/accessory/climate/purifier.js.map +1 -1
  37. package/dist/accessory/climate/temperatureControl.d.ts +2 -1
  38. package/dist/accessory/climate/temperatureControl.js +3 -3
  39. package/dist/accessory/climate/temperatureControl.js.map +1 -1
  40. package/dist/accessory/climate/thermostat.d.ts +1 -9
  41. package/dist/accessory/climate/thermostat.js +24 -77
  42. package/dist/accessory/climate/thermostat.js.map +1 -1
  43. package/dist/accessory/garage.d.ts +1 -9
  44. package/dist/accessory/garage.js +19 -85
  45. package/dist/accessory/garage.js.map +1 -1
  46. package/dist/accessory/lock.d.ts +1 -5
  47. package/dist/accessory/lock.js +23 -57
  48. package/dist/accessory/lock.js.map +1 -1
  49. package/dist/accessory/onoff/lightbulb.d.ts +1 -2
  50. package/dist/accessory/onoff/lightbulb.js +7 -13
  51. package/dist/accessory/onoff/lightbulb.js.map +1 -1
  52. package/dist/accessory/onoff/onoff.d.ts +2 -4
  53. package/dist/accessory/onoff/onoff.js +28 -32
  54. package/dist/accessory/onoff/onoff.js.map +1 -1
  55. package/dist/accessory/onoff/outlet.d.ts +1 -1
  56. package/dist/accessory/onoff/outlet.js +3 -3
  57. package/dist/accessory/onoff/outlet.js.map +1 -1
  58. package/dist/accessory/onoff/switch.d.ts +1 -2
  59. package/dist/accessory/onoff/switch.js +0 -3
  60. package/dist/accessory/onoff/switch.js.map +1 -1
  61. package/dist/accessory/position/blind.d.ts +1 -2
  62. package/dist/accessory/position/blind.js +5 -11
  63. package/dist/accessory/position/blind.js.map +1 -1
  64. package/dist/accessory/position/position.d.ts +0 -7
  65. package/dist/accessory/position/position.js +11 -62
  66. package/dist/accessory/position/position.js.map +1 -1
  67. package/dist/accessory/security.d.ts +3 -7
  68. package/dist/accessory/security.js +37 -69
  69. package/dist/accessory/security.js.map +1 -1
  70. package/dist/accessory/sensor/air.d.ts +1 -5
  71. package/dist/accessory/sensor/air.js +14 -46
  72. package/dist/accessory/sensor/air.js.map +1 -1
  73. package/dist/accessory/sensor/carbonDioxide.d.ts +1 -1
  74. package/dist/accessory/sensor/carbonDioxide.js +3 -3
  75. package/dist/accessory/sensor/carbonDioxide.js.map +1 -1
  76. package/dist/accessory/sensor/carbonMonoxide.d.ts +1 -1
  77. package/dist/accessory/sensor/carbonMonoxide.js +3 -3
  78. package/dist/accessory/sensor/carbonMonoxide.js.map +1 -1
  79. package/dist/accessory/sensor/contact.d.ts +1 -1
  80. package/dist/accessory/sensor/contact.js +18 -5
  81. package/dist/accessory/sensor/contact.js.map +1 -1
  82. package/dist/accessory/sensor/humidity.d.ts +1 -1
  83. package/dist/accessory/sensor/humidity.js +7 -4
  84. package/dist/accessory/sensor/humidity.js.map +1 -1
  85. package/dist/accessory/sensor/leak.d.ts +1 -1
  86. package/dist/accessory/sensor/leak.js +3 -3
  87. package/dist/accessory/sensor/leak.js.map +1 -1
  88. package/dist/accessory/sensor/light.d.ts +1 -1
  89. package/dist/accessory/sensor/light.js +3 -3
  90. package/dist/accessory/sensor/light.js.map +1 -1
  91. package/dist/accessory/sensor/motion.d.ts +1 -1
  92. package/dist/accessory/sensor/motion.js +7 -4
  93. package/dist/accessory/sensor/motion.js.map +1 -1
  94. package/dist/accessory/sensor/occupancy.d.ts +1 -1
  95. package/dist/accessory/sensor/occupancy.js +3 -3
  96. package/dist/accessory/sensor/occupancy.js.map +1 -1
  97. package/dist/accessory/sensor/sensor.d.ts +0 -2
  98. package/dist/accessory/sensor/sensor.js +2 -26
  99. package/dist/accessory/sensor/sensor.js.map +1 -1
  100. package/dist/accessory/sensor/smoke.d.ts +1 -1
  101. package/dist/accessory/sensor/smoke.js +3 -3
  102. package/dist/accessory/sensor/smoke.js.map +1 -1
  103. package/dist/accessory/sensor/temperature.d.ts +1 -1
  104. package/dist/accessory/sensor/temperature.js +7 -4
  105. package/dist/accessory/sensor/temperature.js.map +1 -1
  106. package/dist/accessory/valve.d.ts +1 -5
  107. package/dist/accessory/valve.js +7 -41
  108. package/dist/accessory/valve.js.map +1 -1
  109. package/dist/homebridge/platform.js +8 -4
  110. package/dist/homebridge/platform.js.map +1 -1
  111. package/dist/homebridge-ui/public/index.html +1 -1
  112. package/dist/homebridge-ui/public/ui.js +1 -1
  113. package/dist/i18n/en.d.ts +19 -5
  114. package/dist/i18n/en.js +20 -6
  115. package/dist/i18n/en.js.map +1 -1
  116. package/dist/i18n/fr.d.ts +19 -5
  117. package/dist/i18n/i18n.d.ts +19 -5
  118. package/dist/i18n/it.d.ts +19 -5
  119. package/dist/i18n/ro.d.ts +19 -5
  120. package/dist/i18n/template.d.ts +19 -5
  121. package/dist/i18n/vi.d.ts +19 -5
  122. package/dist/model/enums.d.ts +12 -1
  123. package/dist/model/enums.js +12 -0
  124. package/dist/model/enums.js.map +1 -1
  125. package/dist/model/history.d.ts +32 -0
  126. package/dist/model/history.js +128 -0
  127. package/dist/model/history.js.map +1 -0
  128. package/dist/model/mqtt.d.ts +1 -0
  129. package/dist/model/mqtt.js +37 -11
  130. package/dist/model/mqtt.js.map +1 -1
  131. package/dist/model/types.d.ts +15 -3
  132. package/package.json +2 -1
@@ -2,12 +2,12 @@ import { SensorAccessory } from './sensor.js';
2
2
  import { strings } from '../../i18n/i18n.js';
3
3
  import { AccessoryType, HKCharacteristicKey } from '../../model/enums.js';
4
4
  export class OccupancySensorAccessory extends SensorAccessory {
5
+ getAccessoryType() {
6
+ return AccessoryType.OccupancySensor;
7
+ }
5
8
  constructor(dependency) {
6
9
  super(dependency);
7
10
  this.setup(HKCharacteristicKey.OccupancyDetected, dependency.Characteristic.OccupancyDetected.OCCUPANCY_NOT_DETECTED, 'topicGetOccupancyDetected', this.bindOnUpdateNumericBoolean(HKCharacteristicKey.OccupancyDetected, 'valueOccupancyDetected', strings.sensor.occupancy.active, strings.sensor.occupancy.inactive), true);
8
11
  }
9
- getAccessoryType() {
10
- return AccessoryType.OccupancySensor;
11
- }
12
12
  }
13
13
  //# sourceMappingURL=occupancy.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"occupancy.js","sourceRoot":"","sources":["../../../src/accessory/sensor/occupancy.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,wBAAyB,SAAQ,eAAsC;IAElF,YACE,UAA0D;QAC1D,KAAK,CAAC,UAAU,CAAC,CAAC;QAElB,IAAI,CAAC,KAAK,CAAC,mBAAmB,CAAC,iBAAiB,EAAE,UAAU,CAAC,cAAc,CAAC,iBAAiB,CAAC,sBAAsB,EAClH,2BAA2B,EAC3B,IAAI,CAAC,0BAA0B,CAC7B,mBAAmB,CAAC,iBAAiB,EACrC,wBAAwB,EACxB,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,EACrE,IAAI,CAAC,CAAC;IACV,CAAC;IAES,gBAAgB;QACxB,OAAO,aAAa,CAAC,eAAe,CAAC;IACvC,CAAC;CACF"}
1
+ {"version":3,"file":"occupancy.js","sourceRoot":"","sources":["../../../src/accessory/sensor/occupancy.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,wBAAyB,SAAQ,eAAsC;IAExE,gBAAgB;QACxB,OAAO,aAAa,CAAC,eAAe,CAAC;IACvC,CAAC;IAED,YACE,UAA0D;QAC1D,KAAK,CAAC,UAAU,CAAC,CAAC;QAElB,IAAI,CAAC,KAAK,CAAC,mBAAmB,CAAC,iBAAiB,EAAE,UAAU,CAAC,cAAc,CAAC,iBAAiB,CAAC,sBAAsB,EAClH,2BAA2B,EAC3B,IAAI,CAAC,0BAA0B,CAC7B,mBAAmB,CAAC,iBAAiB,EACrC,wBAAwB,EACxB,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,EACrE,IAAI,CAAC,CAAC;IACV,CAAC;CACF"}
@@ -2,6 +2,4 @@ import { BaseAccessory } from '../abstract/base.js';
2
2
  import { MQTTAccessoryDependency, SensorConfig } from '../../model/types.js';
3
3
  export declare abstract class SensorAccessory<C extends SensorConfig = SensorConfig> extends BaseAccessory<C> {
4
4
  constructor(dependency: MQTTAccessoryDependency<C>);
5
- private onTamperedUpdate;
6
- private onFaultUpdate;
7
5
  }
@@ -5,32 +5,8 @@ import { LogType } from '../../tools/log.js';
5
5
  export class SensorAccessory extends BaseAccessory {
6
6
  constructor(dependency) {
7
7
  super(dependency);
8
- this.setup(HKCharacteristicKey.StatusTampered, dependency.Characteristic.StatusTampered.NOT_TAMPERED, 'topicGetStatusTampered', this.onTamperedUpdate.bind(this), false);
9
- this.setup(HKCharacteristicKey.StatusFault, dependency.Characteristic.StatusFault.NO_FAULT, 'topicGetStatusFault', this.onFaultUpdate.bind(this), false);
10
- }
11
- async onTamperedUpdate(topic, value) {
12
- const tampered = value === this.getPrimitiveValue('valueTampered') ? 1 : 0;
13
- if (!this.onUpdate(HKCharacteristicKey.StatusTampered, tampered)) {
14
- return;
15
- }
16
- if (tampered) {
17
- this.logIfDesired(LogType.WARNING, strings.error.isTampered);
18
- }
19
- else {
20
- this.logIfDesired(strings.error.notTampered);
21
- }
22
- }
23
- async onFaultUpdate(topic, value) {
24
- const fault = value === this.getPrimitiveValue('valueFault') ? 1 : 0;
25
- if (!this.onUpdate(HKCharacteristicKey.StatusFault, fault)) {
26
- return;
27
- }
28
- if (fault) {
29
- this.logIfDesired(LogType.WARNING, strings.error.hasFault);
30
- }
31
- else {
32
- this.logIfDesired(strings.error.noFault);
33
- }
8
+ this.setup(HKCharacteristicKey.StatusTampered, dependency.Characteristic.StatusTampered.NOT_TAMPERED, 'topicGetStatusTampered', this.bindOnUpdateBooleanSingle(HKCharacteristicKey.StatusTampered, 'valueTampered', strings.error.isTampered, strings.error.notTampered, LogType.WARNING), false);
9
+ this.setup(HKCharacteristicKey.StatusFault, dependency.Characteristic.StatusFault.NO_FAULT, 'topicGetStatusFault', this.bindOnUpdateBooleanSingle(HKCharacteristicKey.StatusFault, 'valueFault', strings.error.hasFault, strings.error.noFault, LogType.WARNING), false);
34
10
  }
35
11
  }
36
12
  //# sourceMappingURL=sensor.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"sensor.js","sourceRoot":"","sources":["../../../src/accessory/sensor/sensor.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAE7C,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAG3D,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAE7C,MAAM,OAAgB,eAAuD,SAAQ,aAAgB;IAEnG,YAAY,UAAsC;QAChD,KAAK,CAAC,UAAU,CAAC,CAAC;QAElB,IAAI,CAAC,KAAK,CAAC,mBAAmB,CAAC,cAAc,EAAE,UAAU,CAAC,cAAc,CAAC,cAAc,CAAC,YAAY,EAClG,wBAAwB,EAAE,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,KAAK,CAAC,CAAC;QAErE,IAAI,CAAC,KAAK,CAAC,mBAAmB,CAAC,WAAW,EAAE,UAAU,CAAC,cAAc,CAAC,WAAW,CAAC,QAAQ,EACxF,qBAAqB,EAAE,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,KAAK,CAAC,CAAC;IACjE,CAAC;IAEO,KAAK,CAAC,gBAAgB,CAAC,KAAa,EAAE,KAAqB;QAEjE,MAAM,QAAQ,GAAG,KAAK,KAAK,IAAI,CAAC,iBAAiB,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC3E,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,mBAAmB,CAAC,cAAc,EAAE,QAAQ,CAAC,EAAE,CAAC;YACjE,OAAO;QACT,CAAC;QAED,IAAI,QAAQ,EAAE,CAAC;YACb,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;QAC/D,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;QAC/C,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,aAAa,CAAC,KAAa,EAAE,KAAqB;QAE9D,MAAM,KAAK,GAAG,KAAK,KAAK,IAAI,CAAC,iBAAiB,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACrE,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,mBAAmB,CAAC,WAAW,EAAE,KAAK,CAAC,EAAE,CAAC;YAC3D,OAAO;QACT,CAAC;QAED,IAAI,KAAK,EAAE,CAAC;YACV,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;QAC7D,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAC3C,CAAC;IACH,CAAC;CACF"}
1
+ {"version":3,"file":"sensor.js","sourceRoot":"","sources":["../../../src/accessory/sensor/sensor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAE7C,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAG3D,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAE7C,MAAM,OAAgB,eAAuD,SAAQ,aAAgB;IAEnG,YAAY,UAAsC;QAChD,KAAK,CAAC,UAAU,CAAC,CAAC;QAElB,IAAI,CAAC,KAAK,CAAC,mBAAmB,CAAC,cAAc,EAAE,UAAU,CAAC,cAAc,CAAC,cAAc,CAAC,YAAY,EAClG,wBAAwB,EACxB,IAAI,CAAC,yBAAyB,CAAC,mBAAmB,CAAC,cAAc,EAAE,eAAe,EAChF,OAAO,CAAC,KAAK,CAAC,UAAU,EAAE,OAAO,CAAC,KAAK,CAAC,WAAW,EAAE,OAAO,CAAC,OAAO,CAAC,EACvE,KAAK,CACN,CAAC;QAEF,IAAI,CAAC,KAAK,CAAC,mBAAmB,CAAC,WAAW,EAAE,UAAU,CAAC,cAAc,CAAC,WAAW,CAAC,QAAQ,EACxF,qBAAqB,EACrB,IAAI,CAAC,yBAAyB,CAAC,mBAAmB,CAAC,WAAW,EAAE,YAAY,EAC1E,OAAO,CAAC,KAAK,CAAC,QAAQ,EAAE,OAAO,CAAC,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC,EACjE,KAAK,CACN,CAAC;IACJ,CAAC;CACF"}
@@ -2,6 +2,6 @@ import { SensorAccessory } from './sensor.js';
2
2
  import { AccessoryType } from '../../model/enums.js';
3
3
  import { MQTTAccessoryDependency, SmokeSensorConfig } from '../../model/types.js';
4
4
  export declare class SmokeSensorAccessory extends SensorAccessory<SmokeSensorConfig> {
5
- constructor(dependency: MQTTAccessoryDependency<SmokeSensorConfig>);
6
5
  protected getAccessoryType(): AccessoryType;
6
+ constructor(dependency: MQTTAccessoryDependency<SmokeSensorConfig>);
7
7
  }
@@ -2,12 +2,12 @@ import { SensorAccessory } from './sensor.js';
2
2
  import { strings } from '../../i18n/i18n.js';
3
3
  import { AccessoryType, HKCharacteristicKey } from '../../model/enums.js';
4
4
  export class SmokeSensorAccessory extends SensorAccessory {
5
+ getAccessoryType() {
6
+ return AccessoryType.SmokeSensor;
7
+ }
5
8
  constructor(dependency) {
6
9
  super(dependency);
7
10
  this.setup(HKCharacteristicKey.SmokeDetected, dependency.Characteristic.SmokeDetected.SMOKE_NOT_DETECTED, 'topicGetSmokeDetected', this.bindOnUpdateNumericBoolean(HKCharacteristicKey.SmokeDetected, 'valueSmokeDetected', strings.sensor.smoke.active, strings.sensor.smoke.inactive), true);
8
11
  }
9
- getAccessoryType() {
10
- return AccessoryType.SmokeSensor;
11
- }
12
12
  }
13
13
  //# sourceMappingURL=smoke.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"smoke.js","sourceRoot":"","sources":["../../../src/accessory/sensor/smoke.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,oBAAqB,SAAQ,eAAkC;IAE1E,YAAY,UAAsD;QAChE,KAAK,CAAC,UAAU,CAAC,CAAC;QAElB,IAAI,CAAC,KAAK,CAAC,mBAAmB,CAAC,aAAa,EAAE,UAAU,CAAC,cAAc,CAAC,aAAa,CAAC,kBAAkB,EACtG,uBAAuB,EACvB,IAAI,CAAC,0BAA0B,CAAC,mBAAmB,CAAC,aAAa,EAAE,oBAAoB,EAAE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,EACpJ,IAAI,CAAC,CAAC;IACV,CAAC;IAES,gBAAgB;QACxB,OAAO,aAAa,CAAC,WAAW,CAAC;IACnC,CAAC;CACF"}
1
+ {"version":3,"file":"smoke.js","sourceRoot":"","sources":["../../../src/accessory/sensor/smoke.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,oBAAqB,SAAQ,eAAkC;IAEhE,gBAAgB;QACxB,OAAO,aAAa,CAAC,WAAW,CAAC;IACnC,CAAC;IAED,YAAY,UAAsD;QAChE,KAAK,CAAC,UAAU,CAAC,CAAC;QAElB,IAAI,CAAC,KAAK,CAAC,mBAAmB,CAAC,aAAa,EAAE,UAAU,CAAC,cAAc,CAAC,aAAa,CAAC,kBAAkB,EACtG,uBAAuB,EACvB,IAAI,CAAC,0BAA0B,CAAC,mBAAmB,CAAC,aAAa,EAAE,oBAAoB,EAAE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,EACpJ,IAAI,CAAC,CAAC;IACV,CAAC;CACF"}
@@ -2,6 +2,6 @@ import { SensorAccessory } from './sensor.js';
2
2
  import { AccessoryType } from '../../model/enums.js';
3
3
  import { MQTTAccessoryDependency, TemperatureSensorConfig } from '../../model/types.js';
4
4
  export declare class TemperatureSensorAccessory extends SensorAccessory<TemperatureSensorConfig> {
5
- constructor(dependency: MQTTAccessoryDependency<TemperatureSensorConfig>);
6
5
  protected getAccessoryType(): AccessoryType;
6
+ constructor(dependency: MQTTAccessoryDependency<TemperatureSensorConfig>);
7
7
  }
@@ -1,13 +1,16 @@
1
1
  import { SensorAccessory } from './sensor.js';
2
2
  import { strings } from '../../i18n/i18n.js';
3
3
  import { AccessoryType, HKCharacteristicKey } from '../../model/enums.js';
4
+ import { HistoryType } from '../../model/history.js';
4
5
  export class TemperatureSensorAccessory extends SensorAccessory {
5
- constructor(dependency) {
6
- super(dependency);
7
- this.setup(HKCharacteristicKey.CurrentTemperature, 0, 'topicGetCurrentTemperature', this.bindOnUpdateTemperature(dependency.config, HKCharacteristicKey.CurrentTemperature, strings.climate.temperatureUpdate), true);
8
- }
9
6
  getAccessoryType() {
10
7
  return AccessoryType.TemperatureSensor;
11
8
  }
9
+ constructor(dependency) {
10
+ super(dependency);
11
+ this.setup(HKCharacteristicKey.CurrentTemperature, 0, 'topicGetCurrentTemperature', this.bindOnUpdateTemperature(dependency.config, HKCharacteristicKey.CurrentTemperature, strings.climate.temperatureUpdate, (value) => {
12
+ this.recordHistory(HistoryType.WEATHER, { temp: value });
13
+ }), true);
14
+ }
12
15
  }
13
16
  //# sourceMappingURL=temperature.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"temperature.js","sourceRoot":"","sources":["../../../src/accessory/sensor/temperature.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,0BAA2B,SAAQ,eAAwC;IAEtF,YACE,UAA4D;QAC5D,KAAK,CAAC,UAAU,CAAC,CAAC;QAElB,IAAI,CAAC,KAAK,CAAC,mBAAmB,CAAC,kBAAkB,EAAE,CAAC,EAAE,4BAA4B,EAChF,IAAI,CAAC,uBAAuB,CAAC,UAAU,CAAC,MAAM,EAAE,mBAAmB,CAAC,kBAAkB,EAAE,OAAO,CAAC,OAAO,CAAC,iBAAiB,CAAC,EAAE,IAAI,CAAC,CAAC;IACtI,CAAC;IAES,gBAAgB;QACxB,OAAO,aAAa,CAAC,iBAAiB,CAAC;IACzC,CAAC;CACF"}
1
+ {"version":3,"file":"temperature.js","sourceRoot":"","sources":["../../../src/accessory/sensor/temperature.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,0BAA2B,SAAQ,eAAwC;IAE5E,gBAAgB;QACxB,OAAO,aAAa,CAAC,iBAAiB,CAAC;IACzC,CAAC;IAED,YACE,UAA4D;QAC5D,KAAK,CAAC,UAAU,CAAC,CAAC;QAElB,IAAI,CAAC,KAAK,CAAC,mBAAmB,CAAC,kBAAkB,EAAE,CAAC,EAAE,4BAA4B,EAChF,IAAI,CAAC,uBAAuB,CAAC,UAAU,CAAC,MAAM,EAAE,mBAAmB,CAAC,kBAAkB,EAAE,OAAO,CAAC,OAAO,CAAC,iBAAiB,EAAE,CAAC,KAAK,EAAE,EAAE;YACnI,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,OAAO,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAE,CAAC;QAC5D,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;IACd,CAAC;CACF"}
@@ -2,11 +2,7 @@ import { BaseAccessory } from './abstract/base.js';
2
2
  import { AccessoryType } from '../model/enums.js';
3
3
  import { MQTTAccessoryDependency, ValveConfig } from '../model/types.js';
4
4
  export declare class ValveAccessory extends BaseAccessory<ValveConfig> {
5
- constructor(dependency: MQTTAccessoryDependency<ValveConfig>);
6
5
  protected getAccessoryType(): AccessoryType;
7
- private onFaultUpdate;
8
- private onSetActive;
9
- private onSetSetDuration;
10
- private onSetIsConfigured;
6
+ constructor(dependency: MQTTAccessoryDependency<ValveConfig>);
11
7
  private toValveTypeCV;
12
8
  }
@@ -3,52 +3,18 @@ import { strings } from '../i18n/i18n.js';
3
3
  import { AccessoryType, HKCharacteristicKey, ValveType } from '../model/enums.js';
4
4
  import { LogType } from '../tools/log.js';
5
5
  export class ValveAccessory extends BaseAccessory {
6
+ getAccessoryType() {
7
+ return AccessoryType.Valve;
8
+ }
6
9
  constructor(dependency) {
7
10
  super(dependency);
8
11
  this.setCharacteristicValue(HKCharacteristicKey.ValveType, this.toValveTypeCV(this.config.valveType));
9
- this.setup(HKCharacteristicKey.Active, dependency.Characteristic.Active.INACTIVE, 'topicGetValveActive', this.bindOnUpdateNumericBoolean(HKCharacteristicKey.Active, 'valueActive', strings.valve.active, strings.valve.inactive), true, 'topicSetValveActive', this.onSetActive.bind(this));
12
+ this.setup(HKCharacteristicKey.Active, dependency.Characteristic.Active.INACTIVE, 'topicGetValveActive', this.bindOnUpdateNumericBoolean(HKCharacteristicKey.Active, 'valueActive', strings.valve.active, strings.valve.inactive), true, 'topicSetValveActive', this.bindOnSetBoolean(HKCharacteristicKey.Active, 'topicSetValveActive', 'valueActive', 'valueInactive', dependency.Characteristic.Active.ACTIVE, strings.valve.activeSet, strings.valve.inactiveSet));
10
13
  this.setup(HKCharacteristicKey.InUse, dependency.Characteristic.InUse.NOT_IN_USE, 'topicGetValveInUse', this.bindOnUpdateNumericBoolean(HKCharacteristicKey.InUse, 'valueInUse', strings.valve.inUse, strings.valve.notInUse), true);
11
- this.setup(HKCharacteristicKey.StatusFault, dependency.Characteristic.StatusFault.NO_FAULT, 'topicGetStatusFault', this.onFaultUpdate.bind(this), false);
12
- this.setup(HKCharacteristicKey.SetDuration, 0, 'topicGetValveSetDuration', this.bindOnUpdateNumeric(HKCharacteristicKey.SetDuration, strings.valve.setDuration), false, 'topicSetValveSetDuration', this.onSetSetDuration.bind(this));
14
+ this.setup(HKCharacteristicKey.StatusFault, dependency.Characteristic.StatusFault.NO_FAULT, 'topicGetStatusFault', this.bindOnUpdateBooleanSingle(HKCharacteristicKey.StatusFault, 'valueFault', strings.error.hasFault, strings.error.noFault, LogType.WARNING), false);
15
+ this.setup(HKCharacteristicKey.SetDuration, 0, 'topicGetValveSetDuration', this.bindOnUpdateNumeric(HKCharacteristicKey.SetDuration, strings.valve.setDuration), false, 'topicSetValveSetDuration', this.bindOnSetNumeric(HKCharacteristicKey.SetDuration, 'topicSetValveSetDuration', strings.valve.setDurationFuture));
13
16
  this.setup(HKCharacteristicKey.RemainingDuration, 0, 'topicGetValveRemainingDuration', this.bindOnUpdateNumeric(HKCharacteristicKey.RemainingDuration, strings.valve.durationRemaining), false);
14
- this.setup(HKCharacteristicKey.IsConfigured, dependency.Characteristic.IsConfigured.NOT_CONFIGURED, 'topicGetValveIsConfigured', this.bindOnUpdateNumericBoolean(HKCharacteristicKey.IsConfigured, 'valueConfigured', strings.valve.configured, strings.valve.notConfigured), false, 'topicSetValveIsConfigured', this.onSetIsConfigured.bind(this));
15
- }
16
- getAccessoryType() {
17
- return AccessoryType.Valve;
18
- }
19
- async onFaultUpdate(topic, value) {
20
- const fault = value === this.getPrimitiveValue('valueFault') ? 1 : 0;
21
- if (!this.onUpdate(HKCharacteristicKey.StatusFault, fault)) {
22
- return;
23
- }
24
- if (fault) {
25
- this.logIfDesired(LogType.WARNING, strings.error.hasFault);
26
- }
27
- else {
28
- this.logIfDesired(strings.error.noFault);
29
- }
30
- }
31
- async onSetActive(value) {
32
- if (!this.assert('valueActive', 'valueInactive')) {
33
- return;
34
- }
35
- const active = value === this.Characteristic.Active.ACTIVE;
36
- const logString = active ? strings.valve.activeSet : strings.valve.inactiveSet;
37
- const publish = active ? this.config.valueActive : this.config.valueInactive;
38
- this.onSet(HKCharacteristicKey.Active, value, publish, 'topicSetValveActive', logString);
39
- }
40
- async onSetSetDuration(value) {
41
- const logString = strings.valve.setDurationFuture.replace('%d', value.toString());
42
- this.onSet(HKCharacteristicKey.SetDuration, value, value, 'topicSetValveSetDuration', logString);
43
- }
44
- async onSetIsConfigured(value) {
45
- if (!this.assert('valueConfigured', 'valueNotConfigured')) {
46
- return;
47
- }
48
- const isConfigured = value === this.Characteristic.IsConfigured.CONFIGURED;
49
- const logString = isConfigured ? strings.valve.configuredFuture : strings.valve.notConfiguredFuture;
50
- const publish = isConfigured ? this.config.valueConfigured : this.config.valueNotConfigured;
51
- this.onSet(HKCharacteristicKey.IsConfigured, value, publish, 'topicSetValveIsConfigured', logString);
17
+ this.setup(HKCharacteristicKey.IsConfigured, dependency.Characteristic.IsConfigured.NOT_CONFIGURED, 'topicGetValveIsConfigured', this.bindOnUpdateNumericBoolean(HKCharacteristicKey.IsConfigured, 'valueConfigured', strings.valve.configured, strings.valve.notConfigured), false, 'topicSetValveIsConfigured', this.bindOnSetBoolean(HKCharacteristicKey.IsConfigured, 'topicSetValveIsConfigured', 'valueConfigured', 'valueNotConfigured', dependency.Characteristic.IsConfigured.CONFIGURED, strings.valve.configuredFuture, strings.valve.notConfiguredFuture));
52
18
  }
53
19
  toValveTypeCV(value) {
54
20
  if (value === undefined) {
@@ -1 +1 @@
1
- {"version":3,"file":"valve.js","sourceRoot":"","sources":["../../src/accessory/valve.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"valve.js","sourceRoot":"","sources":["../../src/accessory/valve.ts"],"names":[],"mappings":"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"}
@@ -1,11 +1,13 @@
1
1
  import { PLATFORM_NAME, PLUGIN_NAME } from './settings.js';
2
2
  import { GroupAccessory } from '../accessory/abstract/group.js';
3
3
  import { createAccessory, createIdentifier } from '../accessory/abstract/helper.js';
4
+ import { initEveCharacteristics } from '../accessory/characteristic/eve.js';
4
5
  import { setLanguage, strings } from '../i18n/i18n.js';
6
+ import { History } from '../model/history.js';
5
7
  import { Log } from '../tools/log.js';
6
- import getVersion from '../tools/version.js';
7
- import { assert } from '../tools/validation.js';
8
8
  import { Properties } from '../tools/properties.js';
9
+ import { assert } from '../tools/validation.js';
10
+ import getVersion from '../tools/version.js';
9
11
  export class HomebridgeEasyMQTT {
10
12
  config;
11
13
  api;
@@ -19,6 +21,7 @@ export class HomebridgeEasyMQTT {
19
21
  setLanguage(userLang);
20
22
  this.log = new Log(logger, config.verbose);
21
23
  this.log.always('v%s | System %s | Node %s | HB v%s | HAPNodeJS v%s', getVersion(), process.platform, process.version, api.serverVersion, api.hap.HAPLibraryVersion());
24
+ initEveCharacteristics(api);
22
25
  this.api.on('didFinishLaunching', () => {
23
26
  this.setup();
24
27
  });
@@ -44,6 +47,7 @@ export class HomebridgeEasyMQTT {
44
47
  const groups = new Map();
45
48
  const Service = this.api.hap.Service;
46
49
  const Characteristic = this.api.hap.Characteristic;
50
+ const history = new History(this.api, this.log);
47
51
  for (const accessoryConfig of this.config.accessories) {
48
52
  if (!assert(this.log, PLATFORM_NAME, accessoryConfig, 'info') ||
49
53
  !assert(this.log, PLATFORM_NAME, accessoryConfig.info, 'name', 'type')) {
@@ -59,7 +63,7 @@ export class HomebridgeEasyMQTT {
59
63
  const id = createIdentifier(accessoryConfig.info);
60
64
  const uuid = this.api.hap.uuid.generate(id);
61
65
  const platformAccessory = this.createPlatformAccessory(accessoryConfig.info.name, uuid);
62
- const dependency = { Service, Characteristic, platformAccessory, log: this.log };
66
+ const dependency = { Service, Characteristic, platformAccessory, log: this.log, history: history };
63
67
  const accessory = createAccessory(dependency, accessoryConfig);
64
68
  if (accessory === undefined) {
65
69
  continue;
@@ -70,7 +74,7 @@ export class HomebridgeEasyMQTT {
70
74
  for (const groupName of groups.keys()) {
71
75
  const uuid = this.api.hap.uuid.generate(groupName);
72
76
  const platformAccessory = this.createPlatformAccessory(groupName, uuid);
73
- const dependency = { Service, Characteristic, platformAccessory, log: this.log };
77
+ const dependency = { Service, Characteristic, platformAccessory, log: this.log, history: history };
74
78
  const configs = groups.get(groupName);
75
79
  const groupAccessory = new GroupAccessory(dependency, groupName, configs);
76
80
  keepIdentifiers.add(uuid);
@@ -1 +1 @@
1
- {"version":3,"file":"platform.js","sourceRoot":"","sources":["../../src/homebridge/platform.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"platform.js","sourceRoot":"","sources":["../../src/homebridge/platform.ts"],"names":[],"mappings":"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"}
@@ -24,4 +24,4 @@
24
24
 
25
25
  <footer id="footer" class="text-center" style="display: none; font-style: italic; font-size: 0.9em;" i18n="required"></footer>
26
26
 
27
- <script src="ui.js?v=1.4.1-beta.1"></script>
27
+ <script src="ui.js?v=1.5.0-beta.0"></script>
@@ -1 +1 @@
1
- "use strict";(()=>{var l={arrow:"&rarr;",easy_mqtt:"Easy MQTT",github:'<a target="_blank" href="https://github.com/mpatfield/homebridge-easy-mqtt/">GitHub</a>'};function m(n){document.querySelectorAll("[i18n]").forEach(t=>{let o=t.getAttribute("i18n"),r=n.config[o],e=t.getAttribute("i18n_replace");e&&(r=r.replace("%s",l[e])),t.innerHTML=r})}function S(n){let t=["span","label","legend","option","p"];Array.from(window.parent.document.querySelectorAll(t.join(","))).sort((r,e)=>t.indexOf(r.tagName.toLowerCase())-t.indexOf(e.tagName.toLowerCase())).forEach(r=>{let e=r.innerHTML;e=e.replaceAll(/\$\{config\.(title|description|enumNames)\.([^}]+)\}/g,(d,i,a)=>n.config[i]&&typeof n.config[i]=="object"&&a in n.config[i]?n.config[i][a]:d),r.innerHTML!==e&&(r.innerHTML=e)})}function u(n){let t=Array.from(window.parent.document.querySelectorAll("fieldset legend"));for(let o of t){let e=o.closest("fieldset")?.querySelector('input[type="text"][name="name"]');e&&o.textContent!==(e.value||n.config.title.accessory)&&(o.textContent=e.value!==""?e.value:n.config.title.accessory),e&&!e.dataset.accessoryNameListener&&(e.addEventListener("input",()=>u(n)),e.dataset.accessoryNameListener="true")}}function f(){if(typeof crypto<"u"){if(crypto.randomUUID)return crypto.randomUUID();if(crypto.getRandomValues)return"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,n=>{let t=crypto.getRandomValues(new Uint8Array(1))[0]&15;return(n==="x"?t:t&3|8).toString(16)})}return"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,n=>{let t=Math.random()*16|0;return(n==="x"?t:t&3|8).toString(16)})}function x(n){let t=!1;n.accessories?.forEach(o=>{if(o.info.id===void 0){let r=f();o.info.id=r,t=!0}}),t&&homebridge.updatePluginConfig([n])}async function s(n){let t=!1;for(let o of n)for(let r of o.accessories??[]){if(r.info.type!=="LockMechanism")continue;let e=r;e.topicGetLockCurrentState!==void 0&&(e.topicGetCurrentLockState=e.topicGetLockCurrentState,e.topicGetLockCurrentState=void 0,t=!0),e.topicGetLockTargetState!==void 0&&(e.topicGetTargetLockState=e.topicGetLockTargetState,e.topicGetLockTargetState=void 0,t=!0),e.topicSetTargetState!==void 0&&(e.topicSetTargetLockState=e.topicSetTargetState,e.topicSetTargetState=void 0,t=!0)}t&&await homebridge.updatePluginConfig(n)}function g(n){document.getElementById("pageIntro").style.display="none",document.getElementById("support").style.display="block",document.getElementById("footer").style.display="block",new MutationObserver(()=>{S(n),u(n)}).observe(window.parent.document.body,{childList:!0,subtree:!0}),homebridge.addEventListener("configChanged",o=>{let r=o.data;r.length&&x(r[0])}),homebridge.showSchemaForm(),homebridge.hideSpinner(),homebridge.enableSaveButton()}function p(n){document.getElementById("introContinue").addEventListener("click",async()=>{g(n)}),document.getElementById("pageIntro").style.display="block",homebridge.hideSpinner()}homebridge.disableSaveButton(),homebridge.showSpinner();(async()=>{let n=await homebridge.i18nCurrentLang(),t=await homebridge.request("i18n",n);m(t);let o=await homebridge.getPluginConfig();o.length?(await s(o),g(t)):(await homebridge.updatePluginConfig([{name:l.easy_mqtt}]),p(t))})();})();
1
+ "use strict";(()=>{var l={arrow:"&rarr;",easy_mqtt:"Easy MQTT",github:'<a target="_blank" href="https://github.com/mpatfield/homebridge-easy-mqtt/">GitHub</a>'};function m(n){document.querySelectorAll("[i18n]").forEach(t=>{let o=t.getAttribute("i18n"),r=n.config[o],e=t.getAttribute("i18n_replace");e&&(r=r.replace("%s",l[e])),t.innerHTML=r})}function S(n){let t=["span","label","legend","option","p"];Array.from(window.parent.document.querySelectorAll(t.join(","))).sort((r,e)=>t.indexOf(r.tagName.toLowerCase())-t.indexOf(e.tagName.toLowerCase())).forEach(r=>{let e=r.innerHTML;e=e.replaceAll(/\$\{config\.(title|description|enumNames)\.([^}]+)\}/g,(d,i,a)=>n.config[i]&&typeof n.config[i]=="object"&&a in n.config[i]?n.config[i][a]:d),r.innerHTML!==e&&(r.innerHTML=e)})}function u(n){let t=Array.from(window.parent.document.querySelectorAll("fieldset legend"));for(let o of t){let e=o.closest("fieldset")?.querySelector('input[type="text"][name="name"]');e&&o.textContent!==(e.value||n.config.title.accessory)&&(o.textContent=e.value!==""?e.value:n.config.title.accessory),e&&!e.dataset.accessoryNameListener&&(e.addEventListener("input",()=>u(n)),e.dataset.accessoryNameListener="true")}}function f(){if(typeof crypto<"u"){if(crypto.randomUUID)return crypto.randomUUID();if(crypto.getRandomValues)return"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,n=>{let t=crypto.getRandomValues(new Uint8Array(1))[0]&15;return(n==="x"?t:t&3|8).toString(16)})}return"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,n=>{let t=Math.random()*16|0;return(n==="x"?t:t&3|8).toString(16)})}function s(n){let t=!1;n.accessories?.forEach(o=>{if(o.info.id===void 0){let r=f();o.info.id=r,t=!0}}),t&&homebridge.updatePluginConfig([n])}async function x(n){let t=!1;for(let o of n)for(let r of o.accessories??[]){if(r.info.type!=="LockMechanism")continue;let e=r;e.topicGetLockCurrentState!==void 0&&(e.topicGetCurrentLockState=e.topicGetLockCurrentState,e.topicGetLockCurrentState=void 0,t=!0),e.topicGetLockTargetState!==void 0&&(e.topicGetTargetLockState=e.topicGetLockTargetState,e.topicGetLockTargetState=void 0,t=!0),e.topicSetTargetState!==void 0&&(e.topicSetTargetLockState=e.topicSetTargetState,e.topicSetTargetState=void 0,t=!0)}t&&await homebridge.updatePluginConfig(n)}function g(n){document.getElementById("pageIntro").style.display="none",document.getElementById("support").style.display="block",document.getElementById("footer").style.display="block",new MutationObserver(()=>{S(n),u(n)}).observe(window.parent.document.body,{childList:!0,subtree:!0}),homebridge.addEventListener("configChanged",o=>{let r=o.data;r.length&&s(r[0])}),homebridge.showSchemaForm(),homebridge.hideSpinner(),homebridge.enableSaveButton()}function p(n){document.getElementById("introContinue").addEventListener("click",async()=>{g(n)}),document.getElementById("pageIntro").style.display="block",homebridge.hideSpinner()}homebridge.disableSaveButton(),homebridge.showSpinner();(async()=>{let n=await homebridge.i18nCurrentLang(),t=await homebridge.request("i18n",n);m(t);let o=await homebridge.getPluginConfig();o.length?(await x(o),g(t)):(await homebridge.updatePluginConfig([{name:l.easy_mqtt}]),p(t))})();})();
package/dist/i18n/en.d.ts CHANGED
@@ -98,6 +98,7 @@ declare const en: {
98
98
  broker: string;
99
99
  disableLogging: string;
100
100
  group: string;
101
+ historyEnabled: string;
101
102
  maximum: string;
102
103
  name: string;
103
104
  options: string;
@@ -120,6 +121,7 @@ declare const en: {
120
121
  topicGetContactSensorState: string;
121
122
  topicGetCoolingThresholdTemperature: string;
122
123
  topicGetCurrentAmbientLightLevel: string;
124
+ topicGetCurrentConsumption: string;
123
125
  topicGetCurrentDoorState: string;
124
126
  topicGetCurrentFanState: string;
125
127
  topicGetCurrentHeaterCoolerState: string;
@@ -134,6 +136,7 @@ declare const en: {
134
136
  topicGetCurrentSecurityState: string;
135
137
  topicGetCurrentTemperature: string;
136
138
  topicGetCurrentVerticalTiltAngle: string;
139
+ topicGetElectricCurrent: string;
137
140
  topicGetFilterChangeIndication: string;
138
141
  topicGetFilterLifeLevel: string;
139
142
  topicGetHeatingThresholdTemperature: string;
@@ -174,12 +177,14 @@ declare const en: {
174
177
  topicGetTargetSecurityState: string;
175
178
  topicGetTargetTemperature: string;
176
179
  topicGetTargetVerticalTiltAngle: string;
180
+ topicGetTotalConsumption: string;
177
181
  topicGetValveActive: string;
178
182
  topicGetValveInUse: string;
179
183
  topicGetValveIsConfigured: string;
180
184
  topicGetValveRemainingDuration: string;
181
185
  topicGetValveSetDuration: string;
182
186
  topicGetVOCDensity: string;
187
+ topicGetVoltage: string;
183
188
  topicGetVolume: string;
184
189
  topicResetFilterIndication: string;
185
190
  topicSetActive: string;
@@ -327,7 +332,6 @@ declare const en: {
327
332
  stateInactive: string;
328
333
  stateManual: string;
329
334
  stateUnknown: string;
330
- unknownValue: string;
331
335
  };
332
336
  filter: {
333
337
  change: string;
@@ -347,7 +351,6 @@ declare const en: {
347
351
  stateOpenFuture: string;
348
352
  stateOpening: string;
349
353
  stateStopped: string;
350
- stateUnknown: string;
351
354
  unknownValue: string;
352
355
  unobstructed: string;
353
356
  };
@@ -364,6 +367,12 @@ declare const en: {
364
367
  stateUnknown: string;
365
368
  unknownValue: string;
366
369
  };
370
+ history: {
371
+ cleanup: string;
372
+ cleanupFailed: string;
373
+ entry: string;
374
+ updatedCharacteristic: string;
375
+ };
367
376
  lightbulb: {
368
377
  brightnessPercent: string;
369
378
  brightnessPercentFuture: string;
@@ -400,18 +409,24 @@ declare const en: {
400
409
  receivedMessage: string;
401
410
  reconnectMinutes: string;
402
411
  reconnectSeconds: string;
412
+ transformFailed: string;
413
+ transformedValue: string;
403
414
  };
404
415
  onOff: {
405
416
  stateOff: string;
406
417
  stateOffFuture: string;
407
418
  stateOn: string;
408
419
  stateOnFuture: string;
409
- unknownValue: string;
410
420
  };
411
421
  outlet: {
412
422
  badValue: string;
423
+ currentConsumption: string;
424
+ electricCurrent: string;
413
425
  inUse: string;
414
426
  notInUse: string;
427
+ totalConsumption: string;
428
+ totalConsumptionReset: string;
429
+ voltage: string;
415
430
  };
416
431
  position: {
417
432
  blind: {
@@ -431,7 +446,6 @@ declare const en: {
431
446
  stateDecreasing: string;
432
447
  stateIncreasing: string;
433
448
  stateStopped: string;
434
- stateUnknown: string;
435
449
  targetPercent: string;
436
450
  targetPercentSet: string;
437
451
  targetValue: string;
@@ -449,7 +463,6 @@ declare const en: {
449
463
  stateManual: string;
450
464
  statePurifying: string;
451
465
  stateUnknown: string;
452
- unknownValue: string;
453
466
  };
454
467
  security: {
455
468
  badValue: string;
@@ -498,6 +511,7 @@ declare const en: {
498
511
  contact: {
499
512
  active: string;
500
513
  inactive: string;
514
+ timesOpenedReset: string;
501
515
  };
502
516
  leak: {
503
517
  active: string;
package/dist/i18n/en.js CHANGED
@@ -98,6 +98,7 @@ const en = {
98
98
  broker: 'Broker',
99
99
  disableLogging: 'Disable Logging',
100
100
  group: 'Group',
101
+ historyEnabled: 'Enable History',
101
102
  maximum: 'Maximum',
102
103
  name: 'Name',
103
104
  options: 'Options',
@@ -120,6 +121,7 @@ const en = {
120
121
  topicGetContactSensorState: 'Get Contact Detected*',
121
122
  topicGetCoolingThresholdTemperature: 'Get Cooling Threshold',
122
123
  topicGetCurrentAmbientLightLevel: 'Get Current Light Level*',
124
+ topicGetCurrentConsumption: 'Get Watts (Eve-only)',
123
125
  topicGetCurrentDoorState: 'Get Current Door State*',
124
126
  topicGetCurrentFanState: 'Get Current Mode',
125
127
  topicGetCurrentHeaterCoolerState: 'Get Current Mode*',
@@ -134,6 +136,7 @@ const en = {
134
136
  topicGetCurrentSecurityState: 'Get Current State*',
135
137
  topicGetCurrentTemperature: 'Get Current Temperature*',
136
138
  topicGetCurrentVerticalTiltAngle: 'Get Vertical Angle',
139
+ topicGetElectricCurrent: 'Get Amps (Eve-only)',
137
140
  topicGetFilterChangeIndication: 'Filter Change Indication',
138
141
  topicGetFilterLifeLevel: 'Filter Life Remaining',
139
142
  topicGetHeatingThresholdTemperature: 'Get Heating Threshold',
@@ -174,12 +177,14 @@ const en = {
174
177
  topicGetTargetSecurityState: 'Get Target State*',
175
178
  topicGetTargetTemperature: 'Get Target Temperature*',
176
179
  topicGetTargetVerticalTiltAngle: 'Get Target Vertical Angle',
180
+ topicGetTotalConsumption: 'Get kWh (Eve-only)',
177
181
  topicGetValveActive: 'Get Active*',
178
182
  topicGetValveInUse: 'Get In Use*',
179
183
  topicGetValveIsConfigured: 'Get Is Configured',
180
184
  topicGetValveRemainingDuration: 'Get Duration Remaining',
181
185
  topicGetValveSetDuration: 'Get Duration',
182
186
  topicGetVOCDensity: 'Get VOC',
187
+ topicGetVoltage: 'Get Voltage (Eve-only)',
183
188
  topicGetVolume: 'Get Volume',
184
189
  topicResetFilterIndication: 'Reset Filter',
185
190
  topicSetActive: 'Set Active*',
@@ -327,7 +332,6 @@ const en = {
327
332
  stateInactive: '%s is inactive', // accessory name
328
333
  stateManual: 'Setting %s to manual…', // accessory name
329
334
  stateUnknown: '%s state is unknown', // accessory name
330
- unknownValue: '%s unable to determine fan state from value %s. Ignoring…', // accessory name, value
331
335
  },
332
336
  filter: {
333
337
  change: '%s filter requires maintenance', // accessory name
@@ -347,7 +351,6 @@ const en = {
347
351
  stateOpenFuture: 'Opening %s…', // accessory name
348
352
  stateOpening: '%s is opening', // accessory name
349
353
  stateStopped: '%s is stopped', // accessory name
350
- stateUnknown: '%s state is unknown', // accessory name
351
354
  unknownValue: '%s unable to determine door state from value %s. Ignoring…', // accessory name, value
352
355
  unobstructed: '%s is unobstructed', // accessory name
353
356
  },
@@ -364,6 +367,12 @@ const en = {
364
367
  stateUnknown: '%s state is unknown', // accessory name
365
368
  unknownValue: '%s unable to determine heater/cooler state from value %s. Ignoring…', // accessory name, value
366
369
  },
370
+ history: {
371
+ cleanup: 'Removing history for %s', // accessory name
372
+ cleanupFailed: 'Unable to remove history for %s. Try manually removing the file %s from your Homebridge \'persist\' directory.', // accessory name, filename
373
+ entry: '%s logging history entry:', // accessory name
374
+ updatedCharacteristic: '%s updated %s with value %s', // accessory name, characteristic name, value
375
+ },
367
376
  lightbulb: {
368
377
  brightnessPercent: '%s brightness is %d%', // accessory name, number
369
378
  brightnessPercentFuture: 'Setting %s brightness to %d%…', // accessory name, number
@@ -400,18 +409,24 @@ const en = {
400
409
  receivedMessage: 'Received message on %s with topic %s', // host, topic
401
410
  reconnectMinutes: 'Will attempt to reconnect to %s in %s minutes…', // host, number
402
411
  reconnectSeconds: 'Will attempt to reconnect to %s in %s seconds…', // host, number
412
+ transformFailed: 'Unable to execute transform:',
413
+ transformedValue: 'Transforming value from %s to %s', // number, number
403
414
  },
404
415
  onOff: {
405
416
  stateOff: '%s is off', // accessory name
406
417
  stateOffFuture: 'Turning off %s…', // accessory name
407
418
  stateOn: '%s is on', // accessory name
408
419
  stateOnFuture: 'Turning on %s…', // accessory name
409
- unknownValue: '%s unable to determine on/off state from %s. Ignoring…', // accessory name, value
410
420
  },
411
421
  outlet: {
412
422
  badValue: '%s unable to get in-use state for %s', // accessory name, value
423
+ currentConsumption: '%s consumption is %dW', // accessory name, value
424
+ electricCurrent: '%s current is %dA', // accessory name, value
413
425
  inUse: '%s is in use', // accessory name
414
426
  notInUse: '%s is not in use', // accessory name
427
+ totalConsumption: '%s consumption is %dkWh', // accessory name, value
428
+ totalConsumptionReset: '%s consumption has been reset', // accessory name
429
+ voltage: '%s voltage is %dV', // accessory name, value
415
430
  },
416
431
  position: {
417
432
  blind: {
@@ -431,7 +446,6 @@ const en = {
431
446
  stateDecreasing: '%s position is decreasing', // accessory name
432
447
  stateIncreasing: '%s position is increasing', // accessory name
433
448
  stateStopped: '%s position is stopped', // accessory name
434
- stateUnknown: '%s position state is unknown', // accessory name
435
449
  targetPercent: '%s target position is %d%', // accessory name, number
436
450
  targetPercentSet: 'Setting %s target position to %d%…', // accessory name, number
437
451
  targetValue: '%s target position is %d', // accessory name, number
@@ -449,7 +463,6 @@ const en = {
449
463
  stateManual: 'Setting %s to manual…', // accessory name
450
464
  statePurifying: '%s is purifying', // accessory name
451
465
  stateUnknown: '%s state is unknown', // accessory name
452
- unknownValue: '%s unable to determine air purifier state from value %s. Ignoring…', // accessory name, value
453
466
  },
454
467
  security: {
455
468
  badValue: '%s missing value for security state %s', // accessory name, value
@@ -498,10 +511,11 @@ const en = {
498
511
  contact: {
499
512
  active: '%s detected contact', // accessory name
500
513
  inactive: '%s stopped detecting contact', // accessory name
514
+ timesOpenedReset: '%s open count has been reset', // accessory name
501
515
  },
502
516
  leak: {
503
517
  active: '%s detected a leak', // accessory name
504
- inactive: '%s stopped detecting leaks', // accessory name
518
+ inactive: '%s stopped detecting the leak', // accessory name
505
519
  },
506
520
  light: {
507
521
  level: '%s current light level is %d lx', // accessory name, number