homebridge-easy-mqtt 1.2.0-beta.2 → 1.2.0-beta.4

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 (47) hide show
  1. package/CHANGELOG.md +3 -0
  2. package/config.schema.json +230 -114
  3. package/dist/accessory/abstract/base.d.ts +12 -33
  4. package/dist/accessory/abstract/base.js +54 -132
  5. package/dist/accessory/abstract/base.js.map +1 -1
  6. package/dist/accessory/abstract/mqtt.d.ts +36 -0
  7. package/dist/accessory/abstract/mqtt.js +154 -0
  8. package/dist/accessory/abstract/mqtt.js.map +1 -0
  9. package/dist/accessory/lock.d.ts +2 -2
  10. package/dist/accessory/lock.js +11 -9
  11. package/dist/accessory/lock.js.map +1 -1
  12. package/dist/accessory/onoff/lightbulb.js +1 -1
  13. package/dist/accessory/onoff/lightbulb.js.map +1 -1
  14. package/dist/accessory/onoff/onoff.d.ts +3 -3
  15. package/dist/accessory/onoff/onoff.js +7 -7
  16. package/dist/accessory/onoff/onoff.js.map +1 -1
  17. package/dist/accessory/onoff/outlet.js +1 -1
  18. package/dist/accessory/onoff/outlet.js.map +1 -1
  19. package/dist/accessory/onoff/switch.js +1 -1
  20. package/dist/accessory/onoff/switch.js.map +1 -1
  21. package/dist/accessory/security.d.ts +2 -2
  22. package/dist/accessory/security.js +7 -6
  23. package/dist/accessory/security.js.map +1 -1
  24. package/dist/accessory/temperatureSensor.d.ts +2 -2
  25. package/dist/accessory/temperatureSensor.js +3 -3
  26. package/dist/accessory/temperatureSensor.js.map +1 -1
  27. package/dist/homebridge/platform.d.ts +2 -2
  28. package/dist/homebridge/platform.js +20 -20
  29. package/dist/homebridge/platform.js.map +1 -1
  30. package/dist/homebridge-ui/public/index.html +1 -1
  31. package/dist/homebridge-ui/public/ui.js +1 -1
  32. package/dist/i18n/en.d.ts +10 -10
  33. package/dist/i18n/en.js +11 -11
  34. package/dist/i18n/en.js.map +1 -1
  35. package/dist/i18n/i18n.d.ts +10 -10
  36. package/dist/i18n/template.d.ts +10 -10
  37. package/dist/model/enums.d.ts +2 -0
  38. package/dist/model/enums.js +2 -0
  39. package/dist/model/enums.js.map +1 -1
  40. package/dist/model/types.d.ts +11 -12
  41. package/dist/tools/validation.d.ts +2 -2
  42. package/dist/tools/validation.js +1 -2
  43. package/dist/tools/validation.js.map +1 -1
  44. package/package.json +1 -1
  45. package/dist/accessory/abstract/statusActive.d.ts +0 -10
  46. package/dist/accessory/abstract/statusActive.js +0 -29
  47. package/dist/accessory/abstract/statusActive.js.map +0 -1
@@ -1,5 +1,9 @@
1
1
  declare const REPLACE_THIS_WITH_ISO_CODE: {
2
2
  accessory: {
3
+ badBatteryLevel: string;
4
+ batteryLevel: string;
5
+ batteryLow: string;
6
+ batteryNotLow: string;
3
7
  missingRequired: string;
4
8
  statusActive: string;
5
9
  statusInactive: string;
@@ -10,7 +14,6 @@ declare const REPLACE_THIS_WITH_ISO_CODE: {
10
14
  support: string;
11
15
  thankYou: string;
12
16
  description: {
13
- disableLogging: string;
14
17
  options: string;
15
18
  topics: string;
16
19
  verbose: string;
@@ -29,15 +32,12 @@ declare const REPLACE_THIS_WITH_ISO_CODE: {
29
32
  accessory: string;
30
33
  broker: string;
31
34
  disableLogging: string;
32
- info: string;
33
35
  name: string;
34
- manufacturer: string;
35
- model: string;
36
- mqtt: string;
37
36
  options: string;
38
37
  password: string;
39
38
  sourceUnits: string;
40
- serialNumber: string;
39
+ topicGetBatteryLevel: string;
40
+ topicGetBatteryLow: string;
41
41
  topicGetStatusActive: string;
42
42
  topicGetCurrentLockState: string;
43
43
  topicGetOutletInUse: string;
@@ -62,6 +62,7 @@ declare const REPLACE_THIS_WITH_ISO_CODE: {
62
62
  topics: string;
63
63
  type: string;
64
64
  username: string;
65
+ valueBatteryLow: string;
65
66
  valueStatusActive: string;
66
67
  valueLockStateJammed: string;
67
68
  valueOutletInUse: string;
@@ -79,7 +80,6 @@ declare const REPLACE_THIS_WITH_ISO_CODE: {
79
80
  valueFault: string;
80
81
  values: string;
81
82
  verbose: string;
82
- version: string;
83
83
  };
84
84
  };
85
85
  lightbulb: {
@@ -97,7 +97,7 @@ declare const REPLACE_THIS_WITH_ISO_CODE: {
97
97
  futureSaturation: string;
98
98
  };
99
99
  lock: {
100
- badTarget: string;
100
+ badValue: string;
101
101
  stateCurrentSecured: string;
102
102
  stateCurrentUnsecured: string;
103
103
  stateFutureSecured: string;
@@ -120,11 +120,11 @@ declare const REPLACE_THIS_WITH_ISO_CODE: {
120
120
  reconnectInSeconds: string;
121
121
  };
122
122
  onOff: {
123
- badValue: string;
124
123
  stateFutureOff: string;
125
124
  stateFutureOn: string;
126
125
  stateOn: string;
127
126
  stateOff: string;
127
+ unknownValue: string;
128
128
  };
129
129
  outlet: {
130
130
  badValue: string;
@@ -132,7 +132,7 @@ declare const REPLACE_THIS_WITH_ISO_CODE: {
132
132
  notInUse: string;
133
133
  };
134
134
  security: {
135
- badTarget: string;
135
+ badValue: string;
136
136
  isTampered: string;
137
137
  hasFault: string;
138
138
  noStateValues: string;
@@ -7,6 +7,7 @@ export declare enum AccessoryType {
7
7
  TemperatureSensor = "TemperatureSensor"
8
8
  }
9
9
  export declare enum CharacteristicKey {
10
+ BatteryLevel = "BatteryLevel",
10
11
  Brightness = "Brightness",
11
12
  ColorTemperature = "ColorTemperature",
12
13
  Hue = "Hue",
@@ -19,6 +20,7 @@ export declare enum CharacteristicKey {
19
20
  SecuritySystemTargetState = "SecuritySystemTargetState",
20
21
  StatusActive = "StatusActive",
21
22
  StatusFault = "StatusFault",
23
+ StatusLowBattery = "StatusLowBattery",
22
24
  StatusTampered = "StatusTampered"
23
25
  }
24
26
  export declare enum TemperatureUnits {
@@ -9,6 +9,7 @@ export var AccessoryType;
9
9
  })(AccessoryType || (AccessoryType = {}));
10
10
  export var CharacteristicKey;
11
11
  (function (CharacteristicKey) {
12
+ CharacteristicKey["BatteryLevel"] = "BatteryLevel";
12
13
  CharacteristicKey["Brightness"] = "Brightness";
13
14
  CharacteristicKey["ColorTemperature"] = "ColorTemperature";
14
15
  CharacteristicKey["Hue"] = "Hue";
@@ -21,6 +22,7 @@ export var CharacteristicKey;
21
22
  CharacteristicKey["SecuritySystemTargetState"] = "SecuritySystemTargetState";
22
23
  CharacteristicKey["StatusActive"] = "StatusActive";
23
24
  CharacteristicKey["StatusFault"] = "StatusFault";
25
+ CharacteristicKey["StatusLowBattery"] = "StatusLowBattery";
24
26
  CharacteristicKey["StatusTampered"] = "StatusTampered";
25
27
  })(CharacteristicKey || (CharacteristicKey = {}));
26
28
  export var TemperatureUnits;
@@ -1 +1 @@
1
- {"version":3,"file":"enums.js","sourceRoot":"","sources":["../../src/model/enums.ts"],"names":[],"mappings":"AAAA,MAAM,CAAN,IAAY,aAOX;AAPD,WAAY,aAAa;IACvB,wCAAuB,CAAA;IACvB,gDAA+B,CAAA;IAC/B,kCAAiB,CAAA;IACjB,kDAAiC,CAAA;IACjC,kCAAiB,CAAA;IACjB,wDAAuC,CAAA;AACzC,CAAC,EAPW,aAAa,KAAb,aAAa,QAOxB;AAED,MAAM,CAAN,IAAY,iBAcX;AAdD,WAAY,iBAAiB;IAC3B,8CAAyB,CAAA;IACzB,0DAAqC,CAAA;IACrC,gCAAW,CAAA;IACX,0DAAqC,CAAA;IACrC,wDAAmC,CAAA;IACnC,8BAAS,CAAA;IACT,gDAA2B,CAAA;IAC3B,8CAAyB,CAAA;IACzB,8EAAyD,CAAA;IACzD,4EAAuD,CAAA;IACvD,kDAA6B,CAAA;IAC7B,gDAA2B,CAAA;IAC3B,sDAAiC,CAAA;AACnC,CAAC,EAdW,iBAAiB,KAAjB,iBAAiB,QAc5B;AAED,MAAM,CAAN,IAAY,gBAGX;AAHD,WAAY,gBAAgB;IAC1B,iCAAa,CAAA;IACb,oCAAgB,CAAA;AAClB,CAAC,EAHW,gBAAgB,KAAhB,gBAAgB,QAG3B"}
1
+ {"version":3,"file":"enums.js","sourceRoot":"","sources":["../../src/model/enums.ts"],"names":[],"mappings":"AAAA,MAAM,CAAN,IAAY,aAOX;AAPD,WAAY,aAAa;IACvB,wCAAuB,CAAA;IACvB,gDAA+B,CAAA;IAC/B,kCAAiB,CAAA;IACjB,kDAAiC,CAAA;IACjC,kCAAiB,CAAA;IACjB,wDAAuC,CAAA;AACzC,CAAC,EAPW,aAAa,KAAb,aAAa,QAOxB;AAED,MAAM,CAAN,IAAY,iBAgBX;AAhBD,WAAY,iBAAiB;IAC3B,kDAA6B,CAAA;IAC7B,8CAAyB,CAAA;IACzB,0DAAqC,CAAA;IACrC,gCAAW,CAAA;IACX,0DAAqC,CAAA;IACrC,wDAAmC,CAAA;IACnC,8BAAS,CAAA;IACT,gDAA2B,CAAA;IAC3B,8CAAyB,CAAA;IACzB,8EAAyD,CAAA;IACzD,4EAAuD,CAAA;IACvD,kDAA6B,CAAA;IAC7B,gDAA2B,CAAA;IAC3B,0DAAqC,CAAA;IACrC,sDAAiC,CAAA;AACnC,CAAC,EAhBW,iBAAiB,KAAjB,iBAAiB,QAgB5B;AAED,MAAM,CAAN,IAAY,gBAGX;AAHD,WAAY,gBAAgB;IAC1B,iCAAa,CAAA;IACb,oCAAgB,CAAA;AAClB,CAAC,EAHW,gBAAgB,KAAhB,gBAAgB,QAG3B"}
@@ -2,21 +2,17 @@ import { PlatformConfig as HBPlatformConfig } from 'homebridge';
2
2
  export type ServiceType = typeof import('homebridge').Service;
3
3
  export type CharacteristicType = typeof import('homebridge').Characteristic;
4
4
  import { AccessoryType, TemperatureUnits } from './enums.js';
5
+ import { Assertable } from '../tools/validation.js';
5
6
  export type PlatformConfig = HBPlatformConfig & {
6
- accessories?: AccessoryConfig[];
7
+ accessories?: BaseAccessoryConfig[];
7
8
  };
8
9
  export type TemperatureConfig = {
9
10
  temperatureUnits?: TemperatureUnits;
10
11
  };
11
- export type Assertable = {};
12
12
  export type InfoConfig = Assertable & {
13
13
  id: string;
14
14
  name: string;
15
15
  type: AccessoryType;
16
- manufacturer?: string;
17
- model?: string;
18
- serialNumber?: string;
19
- version?: string;
20
16
  };
21
17
  export type MQTTConfig = Assertable & {
22
18
  broker: string;
@@ -24,16 +20,19 @@ export type MQTTConfig = Assertable & {
24
20
  password?: string;
25
21
  options?: string;
26
22
  };
27
- export type AccessoryConfig = Assertable & {
23
+ export type MQTTAccessoryConfig = Assertable & {
28
24
  mqtt: MQTTConfig;
29
25
  info: InfoConfig;
30
26
  disableLogging: boolean;
31
27
  };
32
- export type StatusActiveConfig = AccessoryConfig & {
28
+ export type BaseAccessoryConfig = MQTTAccessoryConfig & {
29
+ topicGetBatteryLevel?: string;
30
+ topicGetBatteryLow?: string;
33
31
  topicGetStatusActive?: string;
32
+ valueBatteryLow?: string;
34
33
  valueStatusActive?: string;
35
34
  };
36
- export type LockMechanismConfig = StatusActiveConfig & {
35
+ export type LockMechanismConfig = BaseAccessoryConfig & {
37
36
  topicGetCurrentLockState: string;
38
37
  topicGetTargetLockState: string;
39
38
  topicSetTargetLockState: string;
@@ -44,7 +43,7 @@ export type LockMechanismConfig = StatusActiveConfig & {
44
43
  valueLockStateUnsecured: string;
45
44
  valueLockStateJammed?: string;
46
45
  };
47
- export type OnOffConfig = StatusActiveConfig & {
46
+ export type OnOffConfig = BaseAccessoryConfig & {
48
47
  topicGetOn: string;
49
48
  topicSetOn: string;
50
49
  valueOn: string;
@@ -64,7 +63,7 @@ export type OutletConfig = OnOffConfig & {
64
63
  topicGetOutletInUse?: string;
65
64
  valueOutletInUse?: string;
66
65
  };
67
- export type SecuritySystemConfig = StatusActiveConfig & {
66
+ export type SecuritySystemConfig = BaseAccessoryConfig & {
68
67
  topicGetCurrentSecurityState: string;
69
68
  topicGetTargetSecurityState: string;
70
69
  topicSetTargetSecurityState: string;
@@ -79,6 +78,6 @@ export type SecuritySystemConfig = StatusActiveConfig & {
79
78
  valueFault?: string;
80
79
  };
81
80
  export type SwitchConfig = OnOffConfig & {};
82
- export type TemperatureSensorConfig = StatusActiveConfig & TemperatureConfig & {
81
+ export type TemperatureSensorConfig = BaseAccessoryConfig & TemperatureConfig & {
83
82
  topicGetCurrentTemperature: string;
84
83
  };
@@ -1,3 +1,3 @@
1
1
  import { Log } from './log.js';
2
- import { Assertable } from '../model/types.js';
3
- export declare function assert(log: Log, caller: string, assertable: Assertable, ...keys: (keyof any)[]): boolean;
2
+ export type Assertable = {};
3
+ export declare function assert<A extends Assertable>(log: Log, caller: string, assertable: A, ...keys: (keyof A)[]): boolean;
@@ -1,10 +1,9 @@
1
1
  import { strings } from '../i18n/i18n.js';
2
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
3
2
  export function assert(log, caller, assertable, ...keys) {
4
3
  let valid = true;
5
4
  for (const key of keys) {
6
5
  if (assertable[key] === undefined) {
7
- log.error(strings.accessory.missingRequired, caller, key);
6
+ log.error(strings.accessory.missingRequired, caller, `'${String(key)}'`);
8
7
  valid = false;
9
8
  }
10
9
  }
@@ -1 +1 @@
1
- {"version":3,"file":"validation.js","sourceRoot":"","sources":["../../src/tools/validation.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAI1C,8DAA8D;AAC9D,MAAM,UAAU,MAAM,CAAC,GAAQ,EAAE,MAAc,EAAE,UAAsB,EAAE,GAAG,IAAmB;IAC7F,IAAI,KAAK,GAAG,IAAI,CAAC;IACjB,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,IAAK,UAAsC,CAAC,GAAa,CAAC,KAAK,SAAS,EAAE,CAAC;YACzE,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,eAAe,EAAE,MAAM,EAAE,GAAG,CAAC,CAAC;YAC1D,KAAK,GAAG,KAAK,CAAC;QAChB,CAAC;IACH,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC"}
1
+ {"version":3,"file":"validation.js","sourceRoot":"","sources":["../../src/tools/validation.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAM1C,MAAM,UAAU,MAAM,CAAuB,GAAQ,EAAE,MAAc,EAAE,UAAa,EAAE,GAAG,IAAiB;IACxG,IAAI,KAAK,GAAG,IAAI,CAAC;IACjB,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,IAAI,UAAU,CAAC,GAAG,CAAC,KAAK,SAAS,EAAE,CAAC;YAClC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,eAAe,EAAE,MAAM,EAAE,IAAI,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YACzE,KAAK,GAAG,KAAK,CAAC;QAChB,CAAC;IACH,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC"}
package/package.json CHANGED
@@ -4,7 +4,7 @@
4
4
  "displayName": "Homebridge Easy MQTT",
5
5
  "description": "Homebridge plugin for easy control of MQTT devices",
6
6
  "type": "module",
7
- "version": "1.2.0-beta.2",
7
+ "version": "1.2.0-beta.4",
8
8
  "homepage": "https://github.com/mpatfield/homebridge-easy-mqtt#readme",
9
9
  "repository": {
10
10
  "type": "git",
@@ -1,10 +0,0 @@
1
- import { PlatformAccessory } from 'homebridge';
2
- import { MQTTAccessory } from './base.js';
3
- import { CharacteristicType, StatusActiveConfig, ServiceType } from '../../model/types.js';
4
- import { Log } from '../../tools/log.js';
5
- export declare abstract class StatusActiveAccessory<C extends StatusActiveConfig = StatusActiveConfig> extends MQTTAccessory<C> {
6
- constructor(Service: ServiceType, Characteristic: CharacteristicType, accessory: PlatformAccessory, config: C, log: Log, className: string);
7
- protected addTopicHandlers(): void;
8
- private getStatusActive;
9
- private onStatusActiveUpdate;
10
- }
@@ -1,29 +0,0 @@
1
- import { MQTTAccessory } from './base.js';
2
- import { strings } from '../../i18n/i18n.js';
3
- import { CharacteristicKey } from '../../model/enums.js';
4
- export class StatusActiveAccessory extends MQTTAccessory {
5
- constructor(Service, Characteristic, accessory, config, log, className) {
6
- super(Service, Characteristic, accessory, config, log, className);
7
- this.set(CharacteristicKey.StatusActive, true);
8
- this.bind(Characteristic.StatusActive, 'topicGetStatusActive', this.getStatusActive.bind(this));
9
- }
10
- addTopicHandlers() {
11
- this.addTopicHandler('topicGetStatusActive', this.onStatusActiveUpdate.bind(this), false);
12
- }
13
- async getStatusActive() {
14
- return this.get(CharacteristicKey.StatusActive);
15
- }
16
- async onStatusActiveUpdate(topic, value) {
17
- const statusActive = value === this.getPrimitiveValue('valueStatusActive');
18
- if (!this.onUpdate(CharacteristicKey.StatusActive, statusActive)) {
19
- return;
20
- }
21
- if (statusActive) {
22
- this.logIfDesired(strings.accessory.statusActive);
23
- }
24
- else {
25
- this.log.warning(strings.accessory.statusInactive, this.name);
26
- }
27
- }
28
- }
29
- //# sourceMappingURL=statusActive.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"statusActive.js","sourceRoot":"","sources":["../../../src/accessory/abstract/statusActive.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAE1C,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAE7C,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAKzD,MAAM,OAAgB,qBAAyE,SAAQ,aAAgB;IAErH,YAAY,OAAoB,EAAE,cAAkC,EAAE,SAA4B,EAAE,MAAS,EAAE,GAAQ,EAAE,SAAiB;QACxI,KAAK,CAAC,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,SAAS,CAAC,CAAC;QAElE,IAAI,CAAC,GAAG,CAAC,iBAAiB,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC;QAE/C,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,YAAY,EAAE,sBAAsB,EAAE,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IAClG,CAAC;IAES,gBAAgB;QACxB,IAAI,CAAC,eAAe,CAAC,sBAAsB,EAAE,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,KAAK,CAAC,CAAC;IAC5F,CAAC;IAEO,KAAK,CAAC,eAAe;QAC3B,OAAO,IAAI,CAAC,GAAG,CAAC,iBAAiB,CAAC,YAAY,CAAC,CAAC;IAClD,CAAC;IAEO,KAAK,CAAC,oBAAoB,CAAC,KAAa,EAAE,KAAqB;QAErE,MAAM,YAAY,GAAG,KAAK,KAAK,IAAI,CAAC,iBAAiB,CAAC,mBAAmB,CAAC,CAAC;QAC3E,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,iBAAiB,CAAC,YAAY,EAAE,YAAY,CAAC,EAAE,CAAC;YACjE,OAAO;QACT,CAAC;QAED,IAAI,YAAY,EAAE,CAAC;YACjB,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;QACpD,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,cAAc,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;QAChE,CAAC;IACH,CAAC;CACF"}