homebridge-easy-mqtt 1.1.0 → 1.2.0-beta.1

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 (64) hide show
  1. package/CHANGELOG.md +14 -1
  2. package/README.md +18 -2
  3. package/config.schema.json +167 -78
  4. package/dist/accessory/abstract/base.d.ts +32 -0
  5. package/dist/accessory/abstract/base.js +129 -0
  6. package/dist/accessory/abstract/base.js.map +1 -0
  7. package/dist/accessory/abstract/statusActive.d.ts +10 -0
  8. package/dist/accessory/abstract/statusActive.js +30 -0
  9. package/dist/accessory/abstract/statusActive.js.map +1 -0
  10. package/dist/accessory/lock.d.ts +6 -10
  11. package/dist/accessory/lock.js +41 -67
  12. package/dist/accessory/lock.js.map +1 -1
  13. package/dist/accessory/onoff/lightbulb.d.ts +21 -0
  14. package/dist/accessory/onoff/lightbulb.js +87 -0
  15. package/dist/accessory/onoff/lightbulb.js.map +1 -0
  16. package/dist/accessory/onoff/onoff.d.ts +13 -0
  17. package/dist/accessory/onoff/onoff.js +54 -0
  18. package/dist/accessory/onoff/onoff.js.map +1 -0
  19. package/dist/accessory/onoff/outlet.d.ts +13 -0
  20. package/dist/accessory/onoff/outlet.js +44 -0
  21. package/dist/accessory/onoff/outlet.js.map +1 -0
  22. package/dist/accessory/{switch.d.ts → onoff/switch.d.ts} +4 -4
  23. package/dist/accessory/{switch.js → onoff/switch.js} +2 -2
  24. package/dist/accessory/onoff/switch.js.map +1 -0
  25. package/dist/accessory/security.d.ts +22 -0
  26. package/dist/accessory/security.js +143 -0
  27. package/dist/accessory/security.js.map +1 -0
  28. package/dist/accessory/temperatureSensor.d.ts +4 -6
  29. package/dist/accessory/temperatureSensor.js +11 -15
  30. package/dist/accessory/temperatureSensor.js.map +1 -1
  31. package/dist/homebridge/platform.js +13 -8
  32. package/dist/homebridge/platform.js.map +1 -1
  33. package/dist/homebridge-ui/public/index.html +2 -2
  34. package/dist/i18n/en.d.ts +40 -2
  35. package/dist/i18n/en.js +73 -35
  36. package/dist/i18n/en.js.map +1 -1
  37. package/dist/i18n/i18n.d.ts +40 -2
  38. package/dist/i18n/template.d.ts +40 -2
  39. package/dist/model/enums.d.ts +23 -0
  40. package/dist/model/enums.js +25 -0
  41. package/dist/model/enums.js.map +1 -1
  42. package/dist/model/mqtt.d.ts +3 -3
  43. package/dist/model/mqtt.js +17 -10
  44. package/dist/model/mqtt.js.map +1 -1
  45. package/dist/model/types.d.ts +16 -2
  46. package/dist/tools/primitive.d.ts +3 -3
  47. package/dist/tools/primitive.js.map +1 -1
  48. package/package.json +1 -1
  49. package/dist/accessory/base.d.ts +0 -25
  50. package/dist/accessory/base.js +0 -59
  51. package/dist/accessory/base.js.map +0 -1
  52. package/dist/accessory/lightbulb.d.ts +0 -30
  53. package/dist/accessory/lightbulb.js +0 -106
  54. package/dist/accessory/lightbulb.js.map +0 -1
  55. package/dist/accessory/onoff.d.ts +0 -15
  56. package/dist/accessory/onoff.js +0 -57
  57. package/dist/accessory/onoff.js.map +0 -1
  58. package/dist/accessory/outlet.d.ts +0 -16
  59. package/dist/accessory/outlet.js +0 -59
  60. package/dist/accessory/outlet.js.map +0 -1
  61. package/dist/accessory/statusActive.d.ts +0 -14
  62. package/dist/accessory/statusActive.js +0 -41
  63. package/dist/accessory/statusActive.js.map +0 -1
  64. package/dist/accessory/switch.js.map +0 -1
@@ -14,14 +14,13 @@ declare const translations: {
14
14
  };
15
15
  config: {
16
16
  continue: string;
17
- optional: string;
17
+ required: string;
18
18
  support: string;
19
19
  thankYou: string;
20
20
  description: {
21
21
  disableLogging: string;
22
22
  options: string;
23
23
  topics: string;
24
- valueStatusActive: string;
25
24
  verbose: string;
26
25
  };
27
26
  enumNames: {
@@ -31,6 +30,7 @@ declare const translations: {
31
30
  lockMechanism: string;
32
31
  outlet: string;
33
32
  switch: string;
33
+ securitySystem: string;
34
34
  temperatureSensor: string;
35
35
  };
36
36
  title: {
@@ -63,6 +63,11 @@ declare const translations: {
63
63
  topicSetOn: string;
64
64
  topicSetTargetState: string;
65
65
  topicGetCurrentTemperature: string;
66
+ topicGetCurrentSecurityState: string;
67
+ topicGetTargetSecurityState: string;
68
+ topicSetTargetSecurityState: string;
69
+ topicGetStatusTampered: string;
70
+ topicGetStatusFault: string;
66
71
  topics: string;
67
72
  type: string;
68
73
  username: string;
@@ -74,12 +79,23 @@ declare const translations: {
74
79
  valueOn: string;
75
80
  valueLockStateSecured: string;
76
81
  valueLockStateUnsecured: string;
82
+ valueArmStay: string;
83
+ valueArmAway: string;
84
+ valueArmNight: string;
85
+ valueDisarm: string;
86
+ valueAlarmTriggered: string;
87
+ valueTampered: string;
88
+ valueFault: string;
77
89
  values: string;
78
90
  verbose: string;
79
91
  version: string;
80
92
  };
81
93
  };
82
94
  lightbulb: {
95
+ badBrightness: string;
96
+ badColorTemperature: string;
97
+ badHue: string;
98
+ badSaturation: string;
83
99
  brightness: string;
84
100
  futureBrightness: string;
85
101
  hue: string;
@@ -113,17 +129,38 @@ declare const translations: {
113
129
  reconnectInSeconds: string;
114
130
  };
115
131
  onOff: {
132
+ badValue: string;
116
133
  stateFutureOff: string;
117
134
  stateFutureOn: string;
118
135
  stateOn: string;
119
136
  stateOff: string;
120
137
  };
121
138
  outlet: {
139
+ badValue: string;
122
140
  futureInUse: string;
123
141
  futureNotInUse: string;
124
142
  inUse: string;
125
143
  notInUse: string;
126
144
  };
145
+ security: {
146
+ badTarget: string;
147
+ isTampered: string;
148
+ hasFault: string;
149
+ noStateValues: string;
150
+ noFault: string;
151
+ notTampered: string;
152
+ stateCurrentArmAway: string;
153
+ stateCurrentArmNight: string;
154
+ stateCurrentArmStay: string;
155
+ stateCurrentAlarmTriggered: string;
156
+ stateCurrentDisarm: string;
157
+ stateFutureArmAway: string;
158
+ stateFutureArmNight: string;
159
+ stateFutureArmStay: string;
160
+ stateFutureDisarm: string;
161
+ stateUnknown: string;
162
+ unknownValue: string;
163
+ };
127
164
  startup: {
128
165
  complete: string;
129
166
  newAccessory: string;
@@ -133,6 +170,7 @@ declare const translations: {
133
170
  welcome: string[];
134
171
  };
135
172
  temperatureSensor: {
173
+ badValue: string;
136
174
  temperature: string;
137
175
  };
138
176
  };
@@ -6,14 +6,13 @@ declare const REPLACE_THIS_WITH_ISO_CODE: {
6
6
  };
7
7
  config: {
8
8
  continue: string;
9
- optional: string;
9
+ required: string;
10
10
  support: string;
11
11
  thankYou: string;
12
12
  description: {
13
13
  disableLogging: string;
14
14
  options: string;
15
15
  topics: string;
16
- valueStatusActive: string;
17
16
  verbose: string;
18
17
  };
19
18
  enumNames: {
@@ -23,6 +22,7 @@ declare const REPLACE_THIS_WITH_ISO_CODE: {
23
22
  lockMechanism: string;
24
23
  outlet: string;
25
24
  switch: string;
25
+ securitySystem: string;
26
26
  temperatureSensor: string;
27
27
  };
28
28
  title: {
@@ -55,6 +55,11 @@ declare const REPLACE_THIS_WITH_ISO_CODE: {
55
55
  topicSetOn: string;
56
56
  topicSetTargetState: string;
57
57
  topicGetCurrentTemperature: string;
58
+ topicGetCurrentSecurityState: string;
59
+ topicGetTargetSecurityState: string;
60
+ topicSetTargetSecurityState: string;
61
+ topicGetStatusTampered: string;
62
+ topicGetStatusFault: string;
58
63
  topics: string;
59
64
  type: string;
60
65
  username: string;
@@ -66,12 +71,23 @@ declare const REPLACE_THIS_WITH_ISO_CODE: {
66
71
  valueOn: string;
67
72
  valueLockStateSecured: string;
68
73
  valueLockStateUnsecured: string;
74
+ valueArmStay: string;
75
+ valueArmAway: string;
76
+ valueArmNight: string;
77
+ valueDisarm: string;
78
+ valueAlarmTriggered: string;
79
+ valueTampered: string;
80
+ valueFault: string;
69
81
  values: string;
70
82
  verbose: string;
71
83
  version: string;
72
84
  };
73
85
  };
74
86
  lightbulb: {
87
+ badBrightness: string;
88
+ badColorTemperature: string;
89
+ badHue: string;
90
+ badSaturation: string;
75
91
  brightness: string;
76
92
  futureBrightness: string;
77
93
  hue: string;
@@ -105,17 +121,38 @@ declare const REPLACE_THIS_WITH_ISO_CODE: {
105
121
  reconnectInSeconds: string;
106
122
  };
107
123
  onOff: {
124
+ badValue: string;
108
125
  stateFutureOff: string;
109
126
  stateFutureOn: string;
110
127
  stateOn: string;
111
128
  stateOff: string;
112
129
  };
113
130
  outlet: {
131
+ badValue: string;
114
132
  futureInUse: string;
115
133
  futureNotInUse: string;
116
134
  inUse: string;
117
135
  notInUse: string;
118
136
  };
137
+ security: {
138
+ badTarget: string;
139
+ isTampered: string;
140
+ hasFault: string;
141
+ noStateValues: string;
142
+ noFault: string;
143
+ notTampered: string;
144
+ stateCurrentArmAway: string;
145
+ stateCurrentArmNight: string;
146
+ stateCurrentArmStay: string;
147
+ stateCurrentAlarmTriggered: string;
148
+ stateCurrentDisarm: string;
149
+ stateFutureArmAway: string;
150
+ stateFutureArmNight: string;
151
+ stateFutureArmStay: string;
152
+ stateFutureDisarm: string;
153
+ stateUnknown: string;
154
+ unknownValue: string;
155
+ };
119
156
  startup: {
120
157
  complete: string;
121
158
  newAccessory: string;
@@ -125,6 +162,7 @@ declare const REPLACE_THIS_WITH_ISO_CODE: {
125
162
  welcome: string[];
126
163
  };
127
164
  temperatureSensor: {
165
+ badValue: string;
128
166
  temperature: string;
129
167
  };
130
168
  };
@@ -1,3 +1,26 @@
1
+ export declare enum AccessoryType {
2
+ Lightbulb = "Lightbulb",
3
+ LockMechanism = "LockMechanism",
4
+ Outlet = "Outlet",
5
+ SecuritySystem = "SecuritySystem",
6
+ Switch = "Switch",
7
+ TemperatureSensor = "TemperatureSensor"
8
+ }
9
+ export declare enum CharacteristicKey {
10
+ Brightness = "Brightness",
11
+ ColorTemperature = "ColorTemperature",
12
+ Hue = "Hue",
13
+ LockCurrentState = "LockCurrentState",
14
+ LockTargetState = "LockTargetState",
15
+ On = "On",
16
+ OutletInUse = "OutletInUse",
17
+ Saturation = "Saturation",
18
+ SecuritySystemCurrentState = "SecuritySystemCurrentState",
19
+ SecuritySystemTargetState = "SecuritySystemTargetState",
20
+ StatusActive = "StatusActive",
21
+ StatusFault = "StatusFault",
22
+ StatusTampered = "StatusTampered"
23
+ }
1
24
  export declare enum TemperatureUnits {
2
25
  CELSIUS = "C",
3
26
  FAHRENHEIT = "F"
@@ -1,3 +1,28 @@
1
+ export var AccessoryType;
2
+ (function (AccessoryType) {
3
+ AccessoryType["Lightbulb"] = "Lightbulb";
4
+ AccessoryType["LockMechanism"] = "LockMechanism";
5
+ AccessoryType["Outlet"] = "Outlet";
6
+ AccessoryType["SecuritySystem"] = "SecuritySystem";
7
+ AccessoryType["Switch"] = "Switch";
8
+ AccessoryType["TemperatureSensor"] = "TemperatureSensor";
9
+ })(AccessoryType || (AccessoryType = {}));
10
+ export var CharacteristicKey;
11
+ (function (CharacteristicKey) {
12
+ CharacteristicKey["Brightness"] = "Brightness";
13
+ CharacteristicKey["ColorTemperature"] = "ColorTemperature";
14
+ CharacteristicKey["Hue"] = "Hue";
15
+ CharacteristicKey["LockCurrentState"] = "LockCurrentState";
16
+ CharacteristicKey["LockTargetState"] = "LockTargetState";
17
+ CharacteristicKey["On"] = "On";
18
+ CharacteristicKey["OutletInUse"] = "OutletInUse";
19
+ CharacteristicKey["Saturation"] = "Saturation";
20
+ CharacteristicKey["SecuritySystemCurrentState"] = "SecuritySystemCurrentState";
21
+ CharacteristicKey["SecuritySystemTargetState"] = "SecuritySystemTargetState";
22
+ CharacteristicKey["StatusActive"] = "StatusActive";
23
+ CharacteristicKey["StatusFault"] = "StatusFault";
24
+ CharacteristicKey["StatusTampered"] = "StatusTampered";
25
+ })(CharacteristicKey || (CharacteristicKey = {}));
1
26
  export var TemperatureUnits;
2
27
  (function (TemperatureUnits) {
3
28
  TemperatureUnits["CELSIUS"] = "C";
@@ -1 +1 @@
1
- {"version":3,"file":"enums.js","sourceRoot":"","sources":["../../src/model/enums.ts"],"names":[],"mappings":"AAAA,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,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,7 +1,7 @@
1
+ import { PrimitiveTypes } from 'homebridge';
1
2
  import { MQTTConfig } from './types.js';
2
3
  import { Log } from '../tools/log.js';
3
- import { Primitive } from '../tools/primitive.js';
4
- type MQTTMessageHandler = (topic: string, value: Primitive) => void;
4
+ type MQTTMessageHandler = (topic: string, value: PrimitiveTypes) => void;
5
5
  export declare class MQTT {
6
6
  private readonly log;
7
7
  private readonly config;
@@ -16,7 +16,7 @@ export declare class MQTT {
16
16
  teardown(): void;
17
17
  connect(): void;
18
18
  subscribe(topic: string, handler: MQTTMessageHandler): void;
19
- publish(topic: string, value: Primitive): void;
19
+ publish(topic: string, value: PrimitiveTypes): void;
20
20
  private messageReceived;
21
21
  private connectionClosed;
22
22
  private reconnect;
@@ -96,27 +96,34 @@ export class MQTT {
96
96
  messageReceived(topic, message) {
97
97
  this.reconnectCount = 0;
98
98
  try {
99
+ message = message.trim();
99
100
  this.log.ifVerbose(strings.mqtt.receivedMessage, this.caller, topic, message);
100
101
  const listener = this.listeners.get(topic);
101
102
  if (!listener) {
102
103
  this.log.ifVerbose(strings.mqtt.noListeners, this.caller, topic);
103
104
  return;
104
105
  }
105
- let value = JSON.parse(message);
106
- for (const pathPart of listener.jsonPath) {
107
- if (value && typeof value === 'object' && pathPart in value) {
108
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
109
- value = value[pathPart];
110
- }
111
- else {
112
- value = undefined;
113
- break;
106
+ let value;
107
+ if (message.startsWith('{')) {
108
+ value = JSON.parse(message);
109
+ for (const pathPart of listener.jsonPath) {
110
+ if (value && typeof value === 'object' && pathPart in value) {
111
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
112
+ value = value[pathPart];
113
+ }
114
+ else {
115
+ value = undefined;
116
+ break;
117
+ }
114
118
  }
115
119
  }
120
+ else {
121
+ value = message;
122
+ }
116
123
  listener.handler(topic, toPrimitive(value));
117
124
  }
118
125
  catch (e) {
119
- this.log.error(strings.mqtt.parseFailed, this.caller, message);
126
+ this.log.error(strings.mqtt.parseFailed, this.caller, `\n${message}`);
120
127
  }
121
128
  }
122
129
  connectionClosed() {
@@ -1 +1 @@
1
- {"version":3,"file":"mqtt.js","sourceRoot":"","sources":["../../src/model/mqtt.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"mqtt.js","sourceRoot":"","sources":["../../src/model/mqtt.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  import { PlatformConfig as HBPlatformConfig } from 'homebridge';
2
2
  export type ServiceType = typeof import('homebridge').Service;
3
3
  export type CharacteristicType = typeof import('homebridge').Characteristic;
4
- import { TemperatureUnits } from './enums.js';
4
+ import { AccessoryType, TemperatureUnits } from './enums.js';
5
5
  export type PlatformConfig = HBPlatformConfig & {
6
6
  accessories?: AccessoryConfig[];
7
7
  };
@@ -12,7 +12,7 @@ export type Assertable = {};
12
12
  export type InfoConfig = Assertable & {
13
13
  id: string;
14
14
  name: string;
15
- type: string;
15
+ type: AccessoryType;
16
16
  manufacturer?: string;
17
17
  model?: string;
18
18
  serialNumber?: string;
@@ -63,6 +63,20 @@ export type OutletConfig = OnOffConfig & {
63
63
  valueOutletInUse?: string;
64
64
  valueOutletNotInUse?: string;
65
65
  };
66
+ export type SecuritySystemConfig = StatusActiveConfig & {
67
+ topicGetCurrentSecurityState: string;
68
+ topicGetTargetSecurityState: string;
69
+ topicSetTargetSecurityState: string;
70
+ topicGetStatusTampered?: string;
71
+ topicGetStatusFault?: string;
72
+ valueArmStay?: string;
73
+ valueArmAway?: string;
74
+ valueArmNight?: string;
75
+ valueDisarm?: string;
76
+ valueAlarmTriggered?: string;
77
+ valueTampered?: string;
78
+ valueFault?: string;
79
+ };
66
80
  export type SwitchConfig = OnOffConfig & {};
67
81
  export type TemperatureSensorConfig = StatusActiveConfig & TemperatureConfig & {
68
82
  topicGetCurrentTemperature: string;
@@ -1,3 +1,3 @@
1
- export type Primitive = string | number | boolean;
2
- export declare function toPrimitive(value: any): Primitive;
3
- export declare function toNumber(primitive: Primitive): number;
1
+ import { PrimitiveTypes } from 'homebridge';
2
+ export declare function toPrimitive(value: any): PrimitiveTypes;
3
+ export declare function toNumber(primitive: PrimitiveTypes): number;
@@ -1 +1 @@
1
- {"version":3,"file":"primitive.js","sourceRoot":"","sources":["../../src/tools/primitive.ts"],"names":[],"mappings":"AAGA,8DAA8D;AAC9D,MAAM,UAAU,WAAW,CAAC,KAAU;IAEpC,IAAI,OAAO,KAAK,KAAK,SAAS,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC5D,OAAO,KAAK,CAAC;IACf,CAAC;IAED,IAAI,KAAK,KAAK,MAAM,EAAE,CAAC;QACrB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,KAAK,KAAK,OAAO,EAAE,CAAC;QACtB,OAAO,KAAK,CAAC;IACf,CAAC;IAED,MAAM,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IAC1B,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;QACvC,OAAO,GAAG,CAAC;IACb,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,UAAU,QAAQ,CAAC,SAAoB;IAC3C,IAAI,OAAO,SAAS,KAAK,QAAQ,EAAE,CAAC;QAClC,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,OAAO,MAAM,CAAC,SAAS,CAAC,CAAC;AAC3B,CAAC"}
1
+ {"version":3,"file":"primitive.js","sourceRoot":"","sources":["../../src/tools/primitive.ts"],"names":[],"mappings":"AAEA,8DAA8D;AAC9D,MAAM,UAAU,WAAW,CAAC,KAAU;IAEpC,IAAI,OAAO,KAAK,KAAK,SAAS,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC5D,OAAO,KAAK,CAAC;IACf,CAAC;IAED,IAAI,KAAK,KAAK,MAAM,EAAE,CAAC;QACrB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,KAAK,KAAK,OAAO,EAAE,CAAC;QACtB,OAAO,KAAK,CAAC;IACf,CAAC;IAED,MAAM,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IAC1B,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;QACvC,OAAO,GAAG,CAAC;IACb,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,UAAU,QAAQ,CAAC,SAAyB;IAChD,IAAI,OAAO,SAAS,KAAK,QAAQ,EAAE,CAAC;QAClC,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,OAAO,MAAM,CAAC,SAAS,CAAC,CAAC;AAC3B,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.1.0",
7
+ "version": "1.2.0-beta.1",
8
8
  "homepage": "https://github.com/mpatfield/homebridge-easy-mqtt#readme",
9
9
  "repository": {
10
10
  "type": "git",
@@ -1,25 +0,0 @@
1
- import { PlatformAccessory } from 'homebridge';
2
- import { AccessoryConfig, CharacteristicType, ServiceType } from '../model/types.js';
3
- import { Log } from '../tools/log.js';
4
- import { Primitive } from '../tools/primitive.js';
5
- export type TopicHandler = {
6
- topic: string;
7
- handler: ((topic: string, value: Primitive) => Promise<void>);
8
- };
9
- export declare function makeHandler(topic: string, handler: (topic: string, value: Primitive) => Promise<void>): TopicHandler;
10
- export declare abstract class MQTTAccessory {
11
- protected readonly Service: ServiceType;
12
- protected readonly Characteristic: CharacteristicType;
13
- protected readonly accessory: PlatformAccessory;
14
- protected readonly config: AccessoryConfig;
15
- protected readonly log: Log;
16
- private readonly mqttClient;
17
- constructor(Service: ServiceType, Characteristic: CharacteristicType, accessory: PlatformAccessory, config: AccessoryConfig, log: Log, caller: string);
18
- private onMQTTConnect;
19
- protected abstract get topicHandlers(): TopicHandler[];
20
- protected get name(): string;
21
- protected publish(topic: string, value: Primitive): void;
22
- teardown(): void;
23
- protected assert(...keys: (keyof any)[]): boolean;
24
- protected logIfDesired(message: string, ...parameters: string[]): void;
25
- }
@@ -1,59 +0,0 @@
1
- import { PLATFORM_NAME } from '../homebridge/settings.js';
2
- import { MQTT } from '../model/mqtt.js';
3
- import getVersion from '../tools/version.js';
4
- import { assert } from '../tools/validation.js';
5
- export function makeHandler(topic, handler) {
6
- return { topic, handler };
7
- }
8
- export class MQTTAccessory {
9
- Service;
10
- Characteristic;
11
- accessory;
12
- config;
13
- log;
14
- mqttClient;
15
- constructor(Service, Characteristic, accessory, config, log, caller) {
16
- this.Service = Service;
17
- this.Characteristic = Characteristic;
18
- this.accessory = accessory;
19
- this.config = config;
20
- this.log = log;
21
- const name = config.info.name;
22
- if (this.assert('mqtt')) {
23
- this.mqttClient = new MQTT(log, config.mqtt, this.onMQTTConnect.bind(this), name);
24
- this.mqttClient.connect();
25
- }
26
- accessory.getService(Service.AccessoryInformation)
27
- .setCharacteristic(Characteristic.Name, name)
28
- .setCharacteristic(Characteristic.ConfiguredName, name)
29
- .setCharacteristic(Characteristic.Manufacturer, config.info.manufacturer ?? 'Homebridge')
30
- .setCharacteristic(Characteristic.SerialNumber, config.info.serialNumber ?? `${PLATFORM_NAME}:${name}`)
31
- .setCharacteristic(Characteristic.Model, config.info.model ?? caller)
32
- .setCharacteristic(Characteristic.FirmwareRevision, config.info.version ?? getVersion());
33
- }
34
- async onMQTTConnect() {
35
- this.topicHandlers.forEach(topicHandler => {
36
- this.mqttClient?.subscribe(topicHandler.topic, topicHandler.handler);
37
- });
38
- }
39
- get name() {
40
- return this.config.info.name;
41
- }
42
- publish(topic, value) {
43
- this.mqttClient?.publish(topic, value);
44
- }
45
- teardown() {
46
- this.mqttClient?.teardown();
47
- }
48
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
49
- assert(...keys) {
50
- return assert(this.log, this.name, this.config, ...keys);
51
- }
52
- logIfDesired(message, ...parameters) {
53
- if (this.config.disableLogging) {
54
- return;
55
- }
56
- this.log.always(message, ...parameters);
57
- }
58
- }
59
- //# sourceMappingURL=base.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"base.js","sourceRoot":"","sources":["../../src/accessory/base.ts"],"names":[],"mappings":"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"}
@@ -1,30 +0,0 @@
1
- import { PlatformAccessory, Service } from 'homebridge';
2
- import { TopicHandler } from './base.js';
3
- import { OnOffAccessory } from './onoff.js';
4
- import { CharacteristicType, LightbulbConfig, ServiceType } from '../model/types.js';
5
- import { Log } from '../tools/log.js';
6
- export declare class LightbulbAccessory extends OnOffAccessory {
7
- private readonly lightbulbConfig;
8
- private brightness;
9
- private hue;
10
- private colorTemperature;
11
- private saturation;
12
- constructor(Service: ServiceType, Characteristic: CharacteristicType, accessory: PlatformAccessory, lightbulbConfig: LightbulbConfig, log: Log);
13
- protected getAccessoryService(): Service;
14
- protected get topicHandlers(): TopicHandler[];
15
- private getBrightness;
16
- private getHue;
17
- private getColorTemperature;
18
- private getSaturation;
19
- private onBrightnessUpdate;
20
- private setBrightness;
21
- private onHueUpdate;
22
- private setHue;
23
- private onColorTemperatureUpdate;
24
- private setColorTemperature;
25
- private onSaturationUpdate;
26
- private setSaturation;
27
- private _onUpdate;
28
- private _set;
29
- private toCharacteristicKey;
30
- }
@@ -1,106 +0,0 @@
1
- import { makeHandler } from './base.js';
2
- import { OnOffAccessory } from './onoff.js';
3
- import { strings } from '../i18n/i18n.js';
4
- import { toPrimitive } from '../tools/primitive.js';
5
- export class LightbulbAccessory extends OnOffAccessory {
6
- lightbulbConfig;
7
- brightness = 100;
8
- hue = 0;
9
- colorTemperature = 500;
10
- saturation = 100;
11
- constructor(Service, Characteristic, accessory, lightbulbConfig, log) {
12
- super(Service, Characteristic, accessory, lightbulbConfig, log, LightbulbAccessory.name);
13
- this.lightbulbConfig = lightbulbConfig;
14
- this.accessoryService.getCharacteristic(this.Characteristic.Brightness)
15
- .onGet(this.getBrightness.bind(this))
16
- .onSet(this.setBrightness.bind(this));
17
- this.accessoryService.getCharacteristic(this.Characteristic.Hue)
18
- .onGet(this.getHue.bind(this))
19
- .onSet(this.setHue.bind(this));
20
- this.accessoryService.getCharacteristic(this.Characteristic.ColorTemperature)
21
- .onGet(this.getColorTemperature.bind(this))
22
- .onSet(this.setColorTemperature.bind(this));
23
- this.accessoryService.getCharacteristic(this.Characteristic.Saturation)
24
- .onGet(this.getSaturation.bind(this))
25
- .onSet(this.setSaturation.bind(this));
26
- }
27
- getAccessoryService() {
28
- return this.accessory.getService(this.Service.Lightbulb) || this.accessory.addService(this.Service.Lightbulb);
29
- }
30
- get topicHandlers() {
31
- const topicHandlers = super.topicHandlers;
32
- if (this.lightbulbConfig.topicGetBrightness) {
33
- topicHandlers.push(makeHandler(this.lightbulbConfig.topicGetBrightness, this.onBrightnessUpdate.bind(this)));
34
- }
35
- if (this.lightbulbConfig.topicGetHue) {
36
- topicHandlers.push(makeHandler(this.lightbulbConfig.topicGetHue, this.onHueUpdate.bind(this)));
37
- }
38
- if (this.lightbulbConfig.topicGetColorTemperature) {
39
- topicHandlers.push(makeHandler(this.lightbulbConfig.topicGetColorTemperature, this.onColorTemperatureUpdate.bind(this)));
40
- }
41
- if (this.lightbulbConfig.topicGetSaturation) {
42
- topicHandlers.push(makeHandler(this.lightbulbConfig.topicGetSaturation, this.onSaturationUpdate.bind(this)));
43
- }
44
- return topicHandlers;
45
- }
46
- async getBrightness() {
47
- return this.brightness;
48
- }
49
- async getHue() {
50
- return this.hue;
51
- }
52
- async getColorTemperature() {
53
- return this.colorTemperature;
54
- }
55
- async getSaturation() {
56
- return this.saturation;
57
- }
58
- async onBrightnessUpdate(topic, value) {
59
- this._onUpdate('brightness', value, strings.lightbulb.brightness);
60
- }
61
- async setBrightness(value) {
62
- this._set('topicSetBrightness', 'brightness', value, strings.lightbulb.futureBrightness);
63
- }
64
- async onHueUpdate(topic, value) {
65
- this._onUpdate('hue', value, strings.lightbulb.hue);
66
- }
67
- async setHue(value) {
68
- this._set('topicSetHue', 'hue', value, strings.lightbulb.futureHue);
69
- }
70
- async onColorTemperatureUpdate(topic, value) {
71
- this._onUpdate('colorTemperature', value, strings.lightbulb.colorTemperature);
72
- }
73
- async setColorTemperature(value) {
74
- this._set('topicSetColorTemperature', 'colorTemperature', value, strings.lightbulb.futureColorTemperature);
75
- }
76
- async onSaturationUpdate(topic, value) {
77
- this._onUpdate('saturation', value, strings.lightbulb.saturation);
78
- }
79
- async setSaturation(value) {
80
- this._set('topicSetSaturation', 'saturation', value, strings.lightbulb.futureSaturation);
81
- }
82
- async _onUpdate(propertyKey, value, logString) {
83
- if (value === this[propertyKey]) {
84
- return;
85
- }
86
- this[propertyKey] = value;
87
- const characteristicKey = this.toCharacteristicKey(propertyKey);
88
- this.accessoryService.updateCharacteristic(this.Characteristic[characteristicKey], value);
89
- this.logIfDesired(logString, this.name, value.toString());
90
- }
91
- _set(topic, propertyKey, value, logString) {
92
- if (!this.assert(topic)) {
93
- return;
94
- }
95
- this[propertyKey] = value;
96
- this.logIfDesired(logString, this.name, value.toString());
97
- const characteristicKey = this.toCharacteristicKey(propertyKey);
98
- this.accessoryService.updateCharacteristic(this.Characteristic[characteristicKey], value);
99
- this.publish(this.lightbulbConfig[topic], toPrimitive(value));
100
- }
101
- toCharacteristicKey(key) {
102
- const capitalized = key.charAt(0).toUpperCase() + key.slice(1);
103
- return capitalized;
104
- }
105
- }
106
- //# sourceMappingURL=lightbulb.js.map