homebridge-easy-mqtt 1.4.0-beta.0 → 1.4.0-beta.10

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 (68) hide show
  1. package/CHANGELOG.md +14 -2
  2. package/README.md +170 -25
  3. package/config.schema.json +989 -38
  4. package/dist/accessory/abstract/base.js +1 -1
  5. package/dist/accessory/abstract/base.js.map +1 -1
  6. package/dist/accessory/abstract/common.d.ts +38 -0
  7. package/dist/accessory/abstract/common.js +159 -0
  8. package/dist/accessory/abstract/common.js.map +1 -0
  9. package/dist/accessory/abstract/helper.js +9 -0
  10. package/dist/accessory/abstract/helper.js.map +1 -1
  11. package/dist/accessory/abstract/mqtt.d.ts +6 -24
  12. package/dist/accessory/abstract/mqtt.js +14 -150
  13. package/dist/accessory/abstract/mqtt.js.map +1 -1
  14. package/dist/accessory/addons/addon.d.ts +12 -0
  15. package/dist/accessory/addons/addon.js +23 -0
  16. package/dist/accessory/addons/addon.js.map +1 -0
  17. package/dist/accessory/addons/filter.d.ts +11 -0
  18. package/dist/accessory/addons/filter.js +36 -0
  19. package/dist/accessory/addons/filter.js.map +1 -0
  20. package/dist/accessory/climate/active.d.ts +11 -0
  21. package/dist/accessory/climate/active.js +44 -0
  22. package/dist/accessory/climate/active.js.map +1 -0
  23. package/dist/accessory/climate/heaterCooler.d.ts +2 -6
  24. package/dist/accessory/climate/heaterCooler.js +5 -37
  25. package/dist/accessory/climate/heaterCooler.js.map +1 -1
  26. package/dist/accessory/climate/purifier.d.ts +19 -0
  27. package/dist/accessory/climate/purifier.js +114 -0
  28. package/dist/accessory/climate/purifier.js.map +1 -0
  29. package/dist/accessory/climate/{climate.d.ts → temperatureControl.d.ts} +3 -2
  30. package/dist/accessory/climate/{climate.js → temperatureControl.js} +7 -5
  31. package/dist/accessory/climate/temperatureControl.js.map +1 -0
  32. package/dist/accessory/climate/thermostat.d.ts +2 -2
  33. package/dist/accessory/climate/thermostat.js +5 -2
  34. package/dist/accessory/climate/thermostat.js.map +1 -1
  35. package/dist/accessory/sensor/light.d.ts +9 -0
  36. package/dist/accessory/sensor/light.js +13 -0
  37. package/dist/accessory/sensor/light.js.map +1 -0
  38. package/dist/accessory/sensor/sensor.js +2 -2
  39. package/dist/accessory/sensor/sensor.js.map +1 -1
  40. package/dist/accessory/valve.d.ts +14 -0
  41. package/dist/accessory/valve.js +71 -0
  42. package/dist/accessory/valve.js.map +1 -0
  43. package/dist/homebridge/platform.js +1 -1
  44. package/dist/homebridge/platform.js.map +1 -1
  45. package/dist/homebridge-ui/public/index.html +1 -1
  46. package/dist/homebridge-ui/public/ui.js +1 -1
  47. package/dist/i18n/en.d.ts +78 -5
  48. package/dist/i18n/en.js +86 -13
  49. package/dist/i18n/en.js.map +1 -1
  50. package/dist/i18n/fr.d.ts +78 -19
  51. package/dist/i18n/fr.js +0 -14
  52. package/dist/i18n/fr.js.map +1 -1
  53. package/dist/i18n/i18n.d.ts +80 -6
  54. package/dist/i18n/i18n.js +6 -0
  55. package/dist/i18n/i18n.js.map +1 -1
  56. package/dist/i18n/ro.d.ts +758 -0
  57. package/dist/i18n/ro.js +381 -0
  58. package/dist/i18n/ro.js.map +1 -0
  59. package/dist/i18n/template.d.ts +78 -5
  60. package/dist/model/enums.d.ts +25 -2
  61. package/dist/model/enums.js +25 -0
  62. package/dist/model/enums.js.map +1 -1
  63. package/dist/model/mqtt.d.ts +11 -6
  64. package/dist/model/mqtt.js +100 -44
  65. package/dist/model/mqtt.js.map +1 -1
  66. package/dist/model/types.d.ts +69 -23
  67. package/package.json +1 -1
  68. package/dist/accessory/climate/climate.js.map +0 -1
@@ -1,4 +1,5 @@
1
1
  export declare enum AccessoryType {
2
+ AirPurifier = "AirPurifier",
2
3
  CarbonDioxideSensor = "CarbonDioxideSensor",
3
4
  CarbonMonoxideSensor = "CarbonMonoxideSensor",
4
5
  ContactSensor = "ContactSensor",
@@ -6,6 +7,7 @@ export declare enum AccessoryType {
6
7
  HumiditySensor = "HumiditySensor",
7
8
  LeakSensor = "LeakSensor",
8
9
  Lightbulb = "Lightbulb",
10
+ LightSensor = "LightSensor",
9
11
  LockMechanism = "LockMechanism",
10
12
  MotionSensor = "MotionSensor",
11
13
  OccupancySensor = "OccupancySensor",
@@ -14,7 +16,11 @@ export declare enum AccessoryType {
14
16
  SmokeSensor = "SmokeSensor",
15
17
  Switch = "Switch",
16
18
  TemperatureSensor = "TemperatureSensor",
17
- Thermostat = "Thermostat"
19
+ Thermostat = "Thermostat",
20
+ Valve = "Valve"
21
+ }
22
+ export declare enum AddonType {
23
+ FilterMaintenance = "FilterMaintenance"
18
24
  }
19
25
  export declare enum CharacteristicKey {
20
26
  Active = "Active",
@@ -29,12 +35,18 @@ export declare enum CharacteristicKey {
29
35
  ColorTemperature = "ColorTemperature",
30
36
  ContactSensorState = "ContactSensorState",
31
37
  CoolingThresholdTemperature = "CoolingThresholdTemperature",
38
+ CurrentAmbientLightLevel = "CurrentAmbientLightLevel",
39
+ CurrentAirPurifierState = "CurrentAirPurifierState",
32
40
  CurrentHeaterCoolerState = "CurrentHeaterCoolerState",
33
41
  CurrentHeatingCoolingState = "CurrentHeatingCoolingState",
34
42
  CurrentRelativeHumidity = "CurrentRelativeHumidity",
35
43
  CurrentTemperature = "CurrentTemperature",
44
+ FilterChangeIndication = "FilterChangeIndication",
45
+ FilterLifeLevel = "FilterLifeLevel",
36
46
  HeatingThresholdTemperature = "HeatingThresholdTemperature",
37
47
  Hue = "Hue",
48
+ InUse = "InUse",
49
+ IsConfigured = "IsConfigured",
38
50
  LeakDetected = "LeakDetected",
39
51
  LockCurrentState = "LockCurrentState",
40
52
  LockPhysicalControls = "LockPhysicalControls",
@@ -43,23 +55,34 @@ export declare enum CharacteristicKey {
43
55
  OccupancyDetected = "OccupancyDetected",
44
56
  On = "On",
45
57
  OutletInUse = "OutletInUse",
58
+ RemainingDuration = "RemainingDuration",
59
+ ResetFilterIndication = "ResetFilterIndication",
46
60
  RotationSpeed = "RotationSpeed",
47
61
  Saturation = "Saturation",
48
62
  SecuritySystemCurrentState = "SecuritySystemCurrentState",
49
63
  SecuritySystemTargetState = "SecuritySystemTargetState",
64
+ SetDuration = "SetDuration",
50
65
  SmokeDetected = "SmokeDetected",
51
66
  StatusActive = "StatusActive",
52
67
  StatusFault = "StatusFault",
53
68
  StatusLowBattery = "StatusLowBattery",
54
69
  StatusTampered = "StatusTampered",
55
70
  SwingMode = "SwingMode",
71
+ TargetAirPurifierState = "TargetAirPurifierState",
56
72
  TargetHeaterCoolerState = "TargetHeaterCoolerState",
57
73
  TargetHeatingCoolingState = "TargetHeatingCoolingState",
58
74
  TargetRelativeHumidity = "TargetRelativeHumidity",
59
75
  TargetTemperature = "TargetTemperature",
60
- TemperatureDisplayUnits = "TemperatureDisplayUnits"
76
+ TemperatureDisplayUnits = "TemperatureDisplayUnits",
77
+ ValveType = "ValveType"
61
78
  }
62
79
  export declare enum TemperatureUnits {
63
80
  CELSIUS = "C",
64
81
  FAHRENHEIT = "F"
65
82
  }
83
+ export declare enum ValveType {
84
+ GENERIC_VALVE = "GENERIC_VALVE",
85
+ IRRIGATION = "IRRIGATION",
86
+ SHOWER_HEAD = "SHOWER_HEAD",
87
+ WATER_FAUCET = "WATER_FAUCET"
88
+ }
@@ -1,5 +1,6 @@
1
1
  export var AccessoryType;
2
2
  (function (AccessoryType) {
3
+ AccessoryType["AirPurifier"] = "AirPurifier";
3
4
  AccessoryType["CarbonDioxideSensor"] = "CarbonDioxideSensor";
4
5
  AccessoryType["CarbonMonoxideSensor"] = "CarbonMonoxideSensor";
5
6
  AccessoryType["ContactSensor"] = "ContactSensor";
@@ -7,6 +8,7 @@ export var AccessoryType;
7
8
  AccessoryType["HumiditySensor"] = "HumiditySensor";
8
9
  AccessoryType["LeakSensor"] = "LeakSensor";
9
10
  AccessoryType["Lightbulb"] = "Lightbulb";
11
+ AccessoryType["LightSensor"] = "LightSensor";
10
12
  AccessoryType["LockMechanism"] = "LockMechanism";
11
13
  AccessoryType["MotionSensor"] = "MotionSensor";
12
14
  AccessoryType["OccupancySensor"] = "OccupancySensor";
@@ -16,7 +18,12 @@ export var AccessoryType;
16
18
  AccessoryType["Switch"] = "Switch";
17
19
  AccessoryType["TemperatureSensor"] = "TemperatureSensor";
18
20
  AccessoryType["Thermostat"] = "Thermostat";
21
+ AccessoryType["Valve"] = "Valve";
19
22
  })(AccessoryType || (AccessoryType = {}));
23
+ export var AddonType;
24
+ (function (AddonType) {
25
+ AddonType["FilterMaintenance"] = "FilterMaintenance";
26
+ })(AddonType || (AddonType = {}));
20
27
  export var CharacteristicKey;
21
28
  (function (CharacteristicKey) {
22
29
  CharacteristicKey["Active"] = "Active";
@@ -31,12 +38,18 @@ export var CharacteristicKey;
31
38
  CharacteristicKey["ColorTemperature"] = "ColorTemperature";
32
39
  CharacteristicKey["ContactSensorState"] = "ContactSensorState";
33
40
  CharacteristicKey["CoolingThresholdTemperature"] = "CoolingThresholdTemperature";
41
+ CharacteristicKey["CurrentAmbientLightLevel"] = "CurrentAmbientLightLevel";
42
+ CharacteristicKey["CurrentAirPurifierState"] = "CurrentAirPurifierState";
34
43
  CharacteristicKey["CurrentHeaterCoolerState"] = "CurrentHeaterCoolerState";
35
44
  CharacteristicKey["CurrentHeatingCoolingState"] = "CurrentHeatingCoolingState";
36
45
  CharacteristicKey["CurrentRelativeHumidity"] = "CurrentRelativeHumidity";
37
46
  CharacteristicKey["CurrentTemperature"] = "CurrentTemperature";
47
+ CharacteristicKey["FilterChangeIndication"] = "FilterChangeIndication";
48
+ CharacteristicKey["FilterLifeLevel"] = "FilterLifeLevel";
38
49
  CharacteristicKey["HeatingThresholdTemperature"] = "HeatingThresholdTemperature";
39
50
  CharacteristicKey["Hue"] = "Hue";
51
+ CharacteristicKey["InUse"] = "InUse";
52
+ CharacteristicKey["IsConfigured"] = "IsConfigured";
40
53
  CharacteristicKey["LeakDetected"] = "LeakDetected";
41
54
  CharacteristicKey["LockCurrentState"] = "LockCurrentState";
42
55
  CharacteristicKey["LockPhysicalControls"] = "LockPhysicalControls";
@@ -45,25 +58,37 @@ export var CharacteristicKey;
45
58
  CharacteristicKey["OccupancyDetected"] = "OccupancyDetected";
46
59
  CharacteristicKey["On"] = "On";
47
60
  CharacteristicKey["OutletInUse"] = "OutletInUse";
61
+ CharacteristicKey["RemainingDuration"] = "RemainingDuration";
62
+ CharacteristicKey["ResetFilterIndication"] = "ResetFilterIndication";
48
63
  CharacteristicKey["RotationSpeed"] = "RotationSpeed";
49
64
  CharacteristicKey["Saturation"] = "Saturation";
50
65
  CharacteristicKey["SecuritySystemCurrentState"] = "SecuritySystemCurrentState";
51
66
  CharacteristicKey["SecuritySystemTargetState"] = "SecuritySystemTargetState";
67
+ CharacteristicKey["SetDuration"] = "SetDuration";
52
68
  CharacteristicKey["SmokeDetected"] = "SmokeDetected";
53
69
  CharacteristicKey["StatusActive"] = "StatusActive";
54
70
  CharacteristicKey["StatusFault"] = "StatusFault";
55
71
  CharacteristicKey["StatusLowBattery"] = "StatusLowBattery";
56
72
  CharacteristicKey["StatusTampered"] = "StatusTampered";
57
73
  CharacteristicKey["SwingMode"] = "SwingMode";
74
+ CharacteristicKey["TargetAirPurifierState"] = "TargetAirPurifierState";
58
75
  CharacteristicKey["TargetHeaterCoolerState"] = "TargetHeaterCoolerState";
59
76
  CharacteristicKey["TargetHeatingCoolingState"] = "TargetHeatingCoolingState";
60
77
  CharacteristicKey["TargetRelativeHumidity"] = "TargetRelativeHumidity";
61
78
  CharacteristicKey["TargetTemperature"] = "TargetTemperature";
62
79
  CharacteristicKey["TemperatureDisplayUnits"] = "TemperatureDisplayUnits";
80
+ CharacteristicKey["ValveType"] = "ValveType";
63
81
  })(CharacteristicKey || (CharacteristicKey = {}));
64
82
  export var TemperatureUnits;
65
83
  (function (TemperatureUnits) {
66
84
  TemperatureUnits["CELSIUS"] = "C";
67
85
  TemperatureUnits["FAHRENHEIT"] = "F";
68
86
  })(TemperatureUnits || (TemperatureUnits = {}));
87
+ export var ValveType;
88
+ (function (ValveType) {
89
+ ValveType["GENERIC_VALVE"] = "GENERIC_VALVE";
90
+ ValveType["IRRIGATION"] = "IRRIGATION";
91
+ ValveType["SHOWER_HEAD"] = "SHOWER_HEAD";
92
+ ValveType["WATER_FAUCET"] = "WATER_FAUCET";
93
+ })(ValveType || (ValveType = {}));
69
94
  //# sourceMappingURL=enums.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"enums.js","sourceRoot":"","sources":["../../src/model/enums.ts"],"names":[],"mappings":"AAAA,MAAM,CAAN,IAAY,aAiBX;AAjBD,WAAY,aAAa;IACvB,4DAA2C,CAAA;IAC3C,8DAA6C,CAAA;IAC7C,gDAA+B,CAAA;IAC/B,8CAA6B,CAAA;IAC7B,kDAAiC,CAAA;IACjC,0CAAyB,CAAA;IACzB,wCAAuB,CAAA;IACvB,gDAA+B,CAAA;IAC/B,8CAA6B,CAAA;IAC7B,oDAAmC,CAAA;IACnC,kCAAiB,CAAA;IACjB,kDAAiC,CAAA;IACjC,4CAA2B,CAAA;IAC3B,kCAAiB,CAAA;IACjB,wDAAuC,CAAA;IACvC,0CAAyB,CAAA;AAC3B,CAAC,EAjBW,aAAa,KAAb,aAAa,QAiBxB;AAED,MAAM,CAAN,IAAY,iBA0CX;AA1CD,WAAY,iBAAiB;IAC3B,sCAAiB,CAAA;IACjB,kDAA6B,CAAA;IAC7B,8CAAyB,CAAA;IACzB,oEAA+C,CAAA;IAC/C,8DAAyC,CAAA;IACzC,sEAAiD,CAAA;IACjD,sEAAiD,CAAA;IACjD,gEAA2C,CAAA;IAC3C,wEAAmD,CAAA;IACnD,0DAAqC,CAAA;IACrC,8DAAyC,CAAA;IACzC,gFAA2D,CAAA;IAC3D,0EAAqD,CAAA;IACrD,8EAAyD,CAAA;IACzD,wEAAmD,CAAA;IACnD,8DAAyC,CAAA;IACzC,gFAA2D,CAAA;IAC3D,gCAAW,CAAA;IACX,kDAA6B,CAAA;IAC7B,0DAAqC,CAAA;IACrC,kEAA6C,CAAA;IAC7C,wDAAmC,CAAA;IACnC,sDAAiC,CAAA;IACjC,4DAAuC,CAAA;IACvC,8BAAS,CAAA;IACT,gDAA2B,CAAA;IAC3B,oDAA+B,CAAA;IAC/B,8CAAyB,CAAA;IACzB,8EAAyD,CAAA;IACzD,4EAAuD,CAAA;IACvD,oDAA+B,CAAA;IAC/B,kDAA6B,CAAA;IAC7B,gDAA2B,CAAA;IAC3B,0DAAqC,CAAA;IACrC,sDAAiC,CAAA;IACjC,4CAAuB,CAAA;IACvB,wEAAmD,CAAA;IACnD,4EAAuD,CAAA;IACvD,sEAAiD,CAAA;IACjD,4DAAuC,CAAA;IACvC,wEAAmD,CAAA;AACrD,CAAC,EA1CW,iBAAiB,KAAjB,iBAAiB,QA0C5B;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,aAoBX;AApBD,WAAY,aAAa;IACvB,4CAA2B,CAAA;IAC3B,4DAA2C,CAAA;IAC3C,8DAA6C,CAAA;IAC7C,gDAA+B,CAAA;IAC/B,8CAA6B,CAAA;IAC7B,kDAAiC,CAAA;IACjC,0CAAyB,CAAA;IACzB,wCAAuB,CAAA;IACvB,4CAA2B,CAAA;IAC3B,gDAA+B,CAAA;IAC/B,8CAA6B,CAAA;IAC7B,oDAAmC,CAAA;IACnC,kCAAiB,CAAA;IACjB,kDAAiC,CAAA;IACjC,4CAA2B,CAAA;IAC3B,kCAAiB,CAAA;IACjB,wDAAuC,CAAA;IACvC,0CAAyB,CAAA;IACzB,gCAAe,CAAA;AACjB,CAAC,EApBW,aAAa,KAAb,aAAa,QAoBxB;AAED,MAAM,CAAN,IAAY,SAEX;AAFD,WAAY,SAAS;IACnB,oDAAuC,CAAA;AACzC,CAAC,EAFW,SAAS,KAAT,SAAS,QAEpB;AAED,MAAM,CAAN,IAAY,iBAqDX;AArDD,WAAY,iBAAiB;IAC3B,sCAAiB,CAAA;IACjB,kDAA6B,CAAA;IAC7B,8CAAyB,CAAA;IACzB,oEAA+C,CAAA;IAC/C,8DAAyC,CAAA;IACzC,sEAAiD,CAAA;IACjD,sEAAiD,CAAA;IACjD,gEAA2C,CAAA;IAC3C,wEAAmD,CAAA;IACnD,0DAAqC,CAAA;IACrC,8DAAyC,CAAA;IACzC,gFAA2D,CAAA;IAC3D,0EAAqD,CAAA;IACrD,wEAAmD,CAAA;IACnD,0EAAqD,CAAA;IACrD,8EAAyD,CAAA;IACzD,wEAAmD,CAAA;IACnD,8DAAyC,CAAA;IACzC,sEAAiD,CAAA;IACjD,wDAAmC,CAAA;IACnC,gFAA2D,CAAA;IAC3D,gCAAW,CAAA;IACX,oCAAe,CAAA;IACf,kDAA6B,CAAA;IAC7B,kDAA6B,CAAA;IAC7B,0DAAqC,CAAA;IACrC,kEAA6C,CAAA;IAC7C,wDAAmC,CAAA;IACnC,sDAAiC,CAAA;IACjC,4DAAuC,CAAA;IACvC,8BAAS,CAAA;IACT,gDAA2B,CAAA;IAC3B,4DAAuC,CAAA;IACvC,oEAA+C,CAAA;IAC/C,oDAA+B,CAAA;IAC/B,8CAAyB,CAAA;IACzB,8EAAyD,CAAA;IACzD,4EAAuD,CAAA;IACvD,gDAA2B,CAAA;IAC3B,oDAA+B,CAAA;IAC/B,kDAA6B,CAAA;IAC7B,gDAA2B,CAAA;IAC3B,0DAAqC,CAAA;IACrC,sDAAiC,CAAA;IACjC,4CAAuB,CAAA;IACvB,sEAAiD,CAAA;IACjD,wEAAmD,CAAA;IACnD,4EAAuD,CAAA;IACvD,sEAAiD,CAAA;IACjD,4DAAuC,CAAA;IACvC,wEAAmD,CAAA;IACnD,4CAAuB,CAAA;AACzB,CAAC,EArDW,iBAAiB,KAAjB,iBAAiB,QAqD5B;AAED,MAAM,CAAN,IAAY,gBAGX;AAHD,WAAY,gBAAgB;IAC1B,iCAAa,CAAA;IACb,oCAAgB,CAAA;AAClB,CAAC,EAHW,gBAAgB,KAAhB,gBAAgB,QAG3B;AAED,MAAM,CAAN,IAAY,SAKX;AALD,WAAY,SAAS;IACnB,4CAA+B,CAAA;IAC/B,sCAAyB,CAAA;IACzB,wCAA2B,CAAA;IAC3B,0CAA6B,CAAA;AAC/B,CAAC,EALW,SAAS,KAAT,SAAS,QAKpB"}
@@ -2,19 +2,24 @@ import { PrimitiveTypes } from 'homebridge';
2
2
  import { MQTTConfig } from './types.js';
3
3
  import { Log } from '../tools/log.js';
4
4
  type MQTTMessageHandler = (topic: string, value: PrimitiveTypes) => void;
5
+ type OnConnectCallback = ((client: MQTT) => (void));
5
6
  export declare class MQTT {
6
7
  private readonly log;
7
- private readonly config;
8
- private readonly onConnect;
9
- private readonly caller;
8
+ private readonly broker;
9
+ private readonly options;
10
+ private static readonly INSTANCES;
11
+ private readonly onConnectCallbacks;
12
+ private readonly onConnectMessages;
10
13
  private client;
11
14
  private shouldReconnect;
12
15
  private isReconnecting;
13
16
  private reconnectCount;
14
- private listeners;
15
- constructor(log: Log, config: MQTTConfig, onConnect: () => (void), caller: string);
17
+ private readonly listeners;
18
+ static connect(log: Log, config: MQTTConfig | undefined, caller: string, onConnect: OnConnectCallback): MQTT | undefined;
19
+ private constructor();
20
+ private get host();
21
+ private connect;
16
22
  teardown(): void;
17
- connect(): void;
18
23
  subscribe(topic: string, handler: MQTTMessageHandler): void;
19
24
  publish(rawTopic: string, value: PrimitiveTypes): void;
20
25
  private messageReceived;
@@ -1,10 +1,11 @@
1
+ import { createHash } from 'crypto';
1
2
  import mqtt from 'mqtt';
2
3
  import { strings } from '../i18n/i18n.js';
3
4
  import { LogType } from '../tools/log.js';
4
5
  import { toPrimitive } from '../tools/primitive.js';
5
6
  import { SECOND, MINUTE } from '../tools/time.js';
6
- import { assert } from '../tools/validation.js';
7
7
  const DELAYS = [5 * SECOND, 10 * SECOND, 30 * SECOND, 2 * MINUTE, 5 * MINUTE];
8
+ const DEFAULT_BROKER = 'mqtt://127.0.0.1/';
8
9
  function toTopicObject(rawTopic) {
9
10
  let base;
10
11
  let jsonPath;
@@ -29,61 +30,116 @@ class MQTTListener {
29
30
  }
30
31
  export class MQTT {
31
32
  log;
32
- config;
33
- onConnect;
34
- caller;
35
- client = null;
33
+ broker;
34
+ options;
35
+ static INSTANCES = new Map();
36
+ onConnectCallbacks = [];
37
+ onConnectMessages = new Map();
38
+ client = undefined;
36
39
  shouldReconnect = false;
37
40
  isReconnecting = false;
38
41
  reconnectCount = 0;
39
42
  listeners = new Map();
40
- constructor(log, config, onConnect, caller) {
41
- this.log = log;
42
- this.config = config;
43
- this.onConnect = onConnect;
44
- this.caller = caller;
45
- }
46
- teardown() {
47
- this.shouldReconnect = false;
48
- if (this.client) {
49
- this.client.end(true);
50
- this.client = null;
51
- }
52
- }
53
- connect() {
54
- if (!assert(this.log, this.caller, this.config, 'broker')) {
55
- return;
56
- }
57
- this.shouldReconnect = true;
43
+ static connect(log, config = undefined, caller, onConnect) {
58
44
  let additionalOptions = {};
45
+ const configOptions = config?.options ?? '{}';
59
46
  try {
60
- if (this.config.options) {
61
- additionalOptions = JSON.parse(this.config.options);
62
- }
47
+ additionalOptions = JSON.parse(configOptions);
63
48
  }
64
49
  catch (err) {
65
- this.log.error(`${strings.mqtt.badOptions}:\n"${this.config.options}"`, this.caller);
50
+ log.error(`${strings.mqttClient.badOptions}:\n"${configOptions}"`, this.caller);
51
+ return;
66
52
  }
67
53
  const options = {
68
54
  reconnectPeriod: 0,
69
- username: this.config.username,
70
- password: this.config.password,
55
+ username: config?.username ?? process.env.EASYMQTT_USERNAME,
56
+ password: config?.password ?? process.env.EASYMQTT_PASSWORD,
71
57
  ...additionalOptions,
72
58
  };
73
- this.client = mqtt.connect(this.config.broker, options);
59
+ let seed = DEFAULT_BROKER;
60
+ const broker = config?.broker ?? process.env.EASYMQTT_BROKER ?? DEFAULT_BROKER;
61
+ try {
62
+ const url = new URL(broker);
63
+ url.port = url.port.length ? url.port : '1883';
64
+ seed = `${url.protocol}//${url.host}|${JSON.stringify(options)}`;
65
+ }
66
+ catch (error) {
67
+ seed = broker;
68
+ }
69
+ const id = createHash('md5').update(seed).digest('hex').slice(0, 4);
70
+ let instance = MQTT.INSTANCES.get(id);
71
+ if (instance !== undefined) {
72
+ log.ifVerbose(strings.mqttClient.reuse, caller, id);
73
+ if (instance.client?.connected) {
74
+ onConnect(instance);
75
+ }
76
+ instance.onConnectCallbacks.push(onConnect);
77
+ const onConnectMessages = config?.onConnect;
78
+ if (onConnectMessages !== undefined) {
79
+ const errorLog = '\n[ { "topic": "example/topic", "message": "example message" } ]';
80
+ if (!Array.isArray(onConnectMessages)) {
81
+ log.error(strings.mqttClient.badMessages, errorLog);
82
+ }
83
+ else {
84
+ for (const message of onConnectMessages) {
85
+ if (message.topic === undefined || message.message === undefined) {
86
+ log.error(strings.mqttClient.badMessages, errorLog);
87
+ continue;
88
+ }
89
+ const key = `${message.topic}|${message.message}`;
90
+ instance?.onConnectMessages.set(key, message);
91
+ }
92
+ }
93
+ }
94
+ return instance;
95
+ }
96
+ log.ifVerbose(strings.mqttClient.new, caller, id);
97
+ instance = new MQTT(log, broker, options);
98
+ MQTT.INSTANCES.set(id, instance);
99
+ instance.onConnectCallbacks.push(onConnect);
100
+ instance.connect();
101
+ return instance;
102
+ }
103
+ constructor(log, broker, options) {
104
+ this.log = log;
105
+ this.broker = broker;
106
+ this.options = options;
107
+ }
108
+ get host() {
109
+ try {
110
+ const url = new URL(this.broker);
111
+ return url.host;
112
+ }
113
+ catch {
114
+ return this.broker;
115
+ }
116
+ }
117
+ connect() {
118
+ this.shouldReconnect = true;
119
+ this.client = mqtt.connect(this.broker, this.options);
74
120
  this.client.on('connect', () => {
75
- this.log.ifVerbose(strings.mqtt.connected, this.caller);
76
- this.onConnect();
121
+ this.log.ifVerbose(strings.mqttClient.connected, this.host);
122
+ this.onConnectCallbacks.forEach(callback => {
123
+ callback(this);
124
+ });
125
+ this.onConnectMessages.forEach(message => {
126
+ this.publish(message.topic, message.message);
127
+ });
77
128
  });
78
129
  this.client.on('message', (topic, message) => this.messageReceived(topic, message.toString()));
79
130
  this.client.on('close', () => this.connectionClosed());
80
131
  this.client.on('error', (error) => {
81
- this.log.ifVerbose(LogType.WARNING, strings.mqtt.clientError, this.caller, error);
132
+ this.log.ifVerbose(LogType.WARNING, `${strings.mqttClient.error}: ${error}`, this.host);
82
133
  });
83
134
  }
135
+ teardown() {
136
+ this.shouldReconnect = false;
137
+ this.client?.end(true);
138
+ this.client = undefined;
139
+ }
84
140
  subscribe(topic, handler) {
85
- if (!this.client) {
86
- this.log.error(strings.mqtt.notConnected, this.caller);
141
+ if (!this.client || !this.client.connected) {
142
+ this.log.error(strings.mqttClient.notConnected, this.host);
87
143
  return;
88
144
  }
89
145
  const mqttListener = new MQTTListener(topic, handler);
@@ -94,7 +150,7 @@ export class MQTT {
94
150
  }
95
151
  publish(rawTopic, value) {
96
152
  if (!this.client || !this.client.connected) {
97
- this.log.error(strings.mqtt.notConnected, this.caller);
153
+ this.log.error(strings.mqttClient.notConnected, this.host);
98
154
  return;
99
155
  }
100
156
  const topic = toTopicObject(rawTopic);
@@ -117,16 +173,16 @@ export class MQTT {
117
173
  message = value.toString();
118
174
  }
119
175
  this.client.publish(topic.base, message);
120
- this.log.ifVerbose(strings.mqtt.publish, this.caller, value, topic);
176
+ this.log.ifVerbose(`${strings.mqttClient.publish} — ${topic.base} ${message}`, this.host);
121
177
  }
122
178
  messageReceived(topic, message) {
123
179
  this.reconnectCount = 0;
124
180
  try {
125
181
  message = message.trim();
126
- this.log.ifVerbose(strings.mqtt.receivedMessage, this.caller, topic, message);
182
+ this.log.ifVerbose(strings.mqttClient.receivedMessage, this.host, topic, `\n${message}`);
127
183
  const listeners = this.listeners.get(topic);
128
184
  if (!listeners || listeners.length === 0) {
129
- this.log.ifVerbose(strings.mqtt.noListeners, this.caller, topic);
185
+ this.log.ifVerbose(strings.mqttClient.noListeners, this.host, topic);
130
186
  return;
131
187
  }
132
188
  for (const listener of listeners) {
@@ -151,11 +207,11 @@ export class MQTT {
151
207
  }
152
208
  }
153
209
  catch (e) {
154
- this.log.error(strings.mqtt.parseFailed, this.caller, `\n${message}`);
210
+ this.log.error(strings.mqttClient.parseFailed, this.host, `\n${message}`);
155
211
  }
156
212
  }
157
213
  connectionClosed() {
158
- this.log.ifVerbose(strings.mqtt.connectionClosed, this.caller);
214
+ this.log.ifVerbose(strings.mqttClient.connectionClosed, this.host);
159
215
  this.reconnect();
160
216
  }
161
217
  async reconnect() {
@@ -165,14 +221,14 @@ export class MQTT {
165
221
  this.isReconnecting = true;
166
222
  if (this.client) {
167
223
  this.client.end(true);
168
- this.client = null;
224
+ this.client = undefined;
169
225
  }
170
226
  const reconnectDelay = DELAYS[Math.min(this.reconnectCount, DELAYS.length - 1)];
171
227
  if (reconnectDelay < MINUTE) {
172
- this.log.ifVerbose(strings.mqtt.reconnectInSeconds, this.caller, reconnectDelay / SECOND);
228
+ this.log.ifVerbose(strings.mqttClient.reconnectSeconds, this.host, reconnectDelay / SECOND);
173
229
  }
174
230
  else {
175
- this.log.ifVerbose(strings.mqtt.reconnectInMinutes, this.caller, reconnectDelay / MINUTE);
231
+ this.log.ifVerbose(strings.mqttClient.reconnectMinutes, this.host, reconnectDelay / MINUTE);
176
232
  }
177
233
  this.reconnectCount++;
178
234
  setTimeout(() => {
@@ -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":"AAEA,OAAO,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AACpC,OAAO,IAAI,MAAM,MAAM,CAAC;AAIxB,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAE1C,OAAO,EAAO,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAElD,MAAM,MAAM,GAAG,CAAC,CAAC,GAAG,MAAM,EAAE,EAAE,GAAG,MAAM,EAAE,EAAE,GAAG,MAAM,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,GAAG,MAAM,CAAC,CAAC;AAE9E,MAAM,cAAc,GAAG,mBAAmB,CAAC;AAM3C,SAAS,aAAa,CAAC,QAAgB;IAErC,IAAI,IAAY,CAAC;IACjB,IAAI,QAAkB,CAAC;IAEvB,MAAM,KAAK,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IACpC,IAAI,KAAK,KAAK,CAAC,CAAC,EAAE,CAAC;QACjB,IAAI,GAAG,QAAQ,CAAC;QAChB,QAAQ,GAAG,EAAE,CAAC;IAChB,CAAC;SAAM,CAAC;QACN,IAAI,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;QAChC,QAAQ,GAAG,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACrE,CAAC;IAED,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC;AAC5C,CAAC;AAED,MAAM,YAAY;IAML;IAJX,KAAK,CAAQ;IAEb,YACE,QAAgB,EACP,OAA2B;QAA3B,YAAO,GAAP,OAAO,CAAoB;QAEpC,IAAI,CAAC,KAAK,GAAG,aAAa,CAAC,QAAQ,CAAC,CAAC;IACvC,CAAC;CACF;AAQD,MAAM,OAAO,IAAI;IA4FI;IACA;IACA;IA5FX,MAAM,CAAU,SAAS,GAAG,IAAI,GAAG,EAAgB,CAAC;IAE3C,kBAAkB,GAAwB,EAAE,CAAC;IAE7C,iBAAiB,GAAG,IAAI,GAAG,EAAuB,CAAC;IAE5D,MAAM,GAAgC,SAAS,CAAC;IAChD,eAAe,GAAG,KAAK,CAAC;IACxB,cAAc,GAAG,KAAK,CAAC;IACvB,cAAc,GAAG,CAAC,CAAC;IAEV,SAAS,GAAG,IAAI,GAAG,EAA0B,CAAC;IAE/D,MAAM,CAAC,OAAO,CAAC,GAAQ,EAAE,SAAiC,SAAS,EAAE,MAAc,EAAE,SAA4B;QAE/G,IAAI,iBAAiB,GAAG,EAAE,CAAC;QAE3B,MAAM,aAAa,GAAG,MAAM,EAAE,OAAO,IAAI,IAAI,CAAC;QAC9C,IAAI,CAAC;YACH,iBAAiB,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;QAChD,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,GAAG,CAAC,KAAK,CAAC,GAAG,OAAO,CAAC,UAAU,CAAC,UAAU,OAAO,aAAa,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;YAChF,OAAO;QACT,CAAC;QAED,MAAM,OAAO,GAAG;YACd,eAAe,EAAE,CAAC;YAClB,QAAQ,EAAE,MAAM,EAAE,QAAQ,IAAI,OAAO,CAAC,GAAG,CAAC,iBAAiB;YAC3D,QAAQ,EAAE,MAAM,EAAE,QAAQ,IAAI,OAAO,CAAC,GAAG,CAAC,iBAAiB;YAC3D,GAAG,iBAAiB;SACrB,CAAC;QAEF,IAAI,IAAI,GAAW,cAAc,CAAC;QAClC,MAAM,MAAM,GAAG,MAAM,EAAE,MAAM,IAAI,OAAO,CAAC,GAAG,CAAC,eAAe,IAAI,cAAc,CAAC;QAC/E,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC;YAC5B,GAAG,CAAC,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC;YAC/C,IAAI,GAAG,GAAG,GAAG,CAAC,QAAQ,KAAK,GAAG,CAAC,IAAI,IAAI,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,CAAC;QACnE,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,GAAG,MAAM,CAAC;QAChB,CAAC;QAED,MAAM,EAAE,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAEpE,IAAI,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACtC,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;YAC3B,GAAG,CAAC,SAAS,CAAC,OAAO,CAAC,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,CAAC,CAAC;YAEpD,IAAI,QAAQ,CAAC,MAAM,EAAE,SAAS,EAAE,CAAC;gBAC/B,SAAS,CAAC,QAAQ,CAAC,CAAC;YACtB,CAAC;YAED,QAAQ,CAAC,kBAAkB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YAE5C,MAAM,iBAAiB,GAAG,MAAM,EAAE,SAAS,CAAC;YAC5C,IAAI,iBAAiB,KAAK,SAAS,EAAE,CAAC;gBAEpC,MAAM,QAAQ,GAAG,kEAAkE,CAAC;gBACpF,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,iBAAiB,CAAC,EAAE,CAAC;oBACtC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;gBACtD,CAAC;qBAAM,CAAC;oBACN,KAAK,MAAM,OAAO,IAAI,iBAAiB,EAAE,CAAC;wBAExC,IAAI,OAAO,CAAC,KAAK,KAAK,SAAS,IAAI,OAAO,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;4BACjE,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;4BACpD,SAAS;wBACX,CAAC;wBAED,MAAM,GAAG,GAAG,GAAG,OAAO,CAAC,KAAK,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;wBAClD,QAAQ,EAAE,iBAAiB,CAAC,GAAG,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;oBAChD,CAAC;gBACH,CAAC;YACH,CAAC;YAED,OAAO,QAAQ,CAAC;QAClB,CAAC;QAED,GAAG,CAAC,SAAS,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE,CAAC,CAAC;QAElD,QAAQ,GAAG,IAAI,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;QAC1C,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC;QAEjC,QAAQ,CAAC,kBAAkB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAE5C,QAAQ,CAAC,OAAO,EAAE,CAAC;QAEnB,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,YACmB,GAAQ,EACR,MAAc,EACd,OAA4B;QAF5B,QAAG,GAAH,GAAG,CAAK;QACR,WAAM,GAAN,MAAM,CAAQ;QACd,YAAO,GAAP,OAAO,CAAqB;IAC5C,CAAC;IAEJ,IAAY,IAAI;QACd,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACjC,OAAO,GAAG,CAAC,IAAI,CAAC;QAClB,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,IAAI,CAAC,MAAM,CAAC;QACrB,CAAC;IACH,CAAC;IAEO,OAAO;QAEb,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;QAE5B,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;QAEtD,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,SAAS,EAAE,GAAG,EAAE;YAC7B,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,OAAO,CAAC,UAAU,CAAC,SAAS,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;YAE5D,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAE,QAAQ,CAAC,EAAE;gBAC1C,QAAQ,CAAC,IAAI,CAAC,CAAC;YACjB,CAAC,CAAC,CAAC;YAEH,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAE,OAAO,CAAC,EAAE;gBACxC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;YAC/C,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE,CAAC,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;QAE/F,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC,CAAC;QAEvD,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,KAAgB,EAAE,EAAE;YAC3C,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG,OAAO,CAAC,UAAU,CAAC,KAAK,KAAK,KAAK,EAAE,EAAG,IAAI,CAAC,IAAI,CAAC,CAAC;QAC3F,CAAC,CAAC,CAAC;IACL,CAAC;IAED,QAAQ;QACN,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC;QAC7B,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;QACvB,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC;IAC1B,CAAC;IAEM,SAAS,CAAC,KAAa,EAAE,OAA2B;QAEzD,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC;YAC3C,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,YAAY,EAAG,IAAI,CAAC,IAAI,CAAC,CAAC;YAC5D,OAAO;QACT,CAAC;QAED,MAAM,YAAY,GAAG,IAAI,YAAY,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;QAEtD,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAE/C,MAAM,cAAc,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;QACzE,cAAc,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QAClC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,YAAY,CAAC,KAAK,CAAC,IAAI,EAAE,cAAc,CAAC,CAAC;IAC9D,CAAC;IAED,OAAO,CAAC,QAAgB,EAAE,KAAqB;QAE7C,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC;YAC3C,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,YAAY,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;YAC3D,OAAO;QACT,CAAC;QAED,MAAM,KAAK,GAAG,aAAa,CAAC,QAAQ,CAAC,CAAC;QAEtC,IAAI,OAAe,CAAC;QACpB,IAAI,KAAK,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;YAE1B,IAAI,aAAa,GAA4B,EAAE,CAAC;YAEhD,MAAM,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;YAC7C,GAAG,CAAC;gBACF,MAAM,QAAQ,GAAG,SAAS,CAAC,GAAG,EAAG,CAAC;gBAClC,IAAI,SAAS,CAAC,MAAM,KAAK,KAAK,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBACnD,aAAa,CAAC,QAAQ,CAAC,GAAG,KAAK,CAAC;gBAClC,CAAC;qBAAM,CAAC;oBACN,aAAa,GAAG,EAAE,CAAC,QAAQ,CAAC,EAAE,aAAa,EAAE,CAAC;gBAChD,CAAC;YACH,CAAC,QAAQ,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE;YAE/B,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC;QAE1C,CAAC;aAAM,CAAC;YACN,OAAO,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAC;QAC7B,CAAC;QAED,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QAEzC,IAAI,CAAC,GAAG,CAAC,SAAS,CAAE,GAAG,OAAO,CAAC,UAAU,CAAC,OAAO,MAAM,KAAK,CAAC,IAAI,IAAI,OAAO,EAAE,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;IAC7F,CAAC;IAEO,eAAe,CAAC,KAAa,EAAE,OAAe;QAEpD,IAAI,CAAC,cAAc,GAAG,CAAC,CAAC;QAExB,IAAI,CAAC;YAEH,OAAO,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;YAEzB,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,OAAO,CAAC,UAAU,CAAC,eAAe,EAAE,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,OAAO,EAAE,CAAC,CAAC;YAEzF,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;YAC5C,IAAI,CAAC,SAAS,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACzC,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,OAAO,CAAC,UAAU,CAAC,WAAW,EAAE,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;gBACrE,OAAO;YACT,CAAC;YAED,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;gBAEjC,IAAI,KAAK,CAAC;gBACV,IAAI,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;oBAE5B,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;oBAE5B,KAAK,MAAM,QAAQ,IAAI,QAAQ,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;wBAC/C,IAAI,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,QAAQ,IAAI,KAAK,EAAE,CAAC;4BAC5D,8DAA8D;4BAC9D,KAAK,GAAI,KAAa,CAAC,QAAQ,CAAC,CAAC;wBACnC,CAAC;6BAAM,CAAC;4BACN,KAAK,GAAG,SAAS,CAAC;4BAClB,MAAM;wBACR,CAAC;oBACH,CAAC;gBAEH,CAAC;qBAAM,CAAC;oBACN,KAAK,GAAG,OAAO,CAAC;gBAClB,CAAC;gBAED,QAAQ,CAAC,OAAO,CAAC,KAAK,EAAE,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC;YAC9C,CAAC;QAEH,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,WAAW,EAAE,IAAI,CAAC,IAAI,EAAE,KAAK,OAAO,EAAE,CAAC,CAAC;QAC5E,CAAC;IACH,CAAC;IAEO,gBAAgB;QACtB,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,OAAO,CAAC,UAAU,CAAC,gBAAgB,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;QACnE,IAAI,CAAC,SAAS,EAAE,CAAC;IACnB,CAAC;IAEO,KAAK,CAAC,SAAS;QAErB,IAAI,CAAC,IAAI,CAAC,eAAe,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;YACjD,OAAO;QACT,CAAC;QAED,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;QAE3B,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAChB,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YACtB,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC;QAC1B,CAAC;QAED,MAAM,cAAc,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,cAAc,EAAE,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;QAChF,IAAI,cAAc,GAAG,MAAM,EAAE,CAAC;YAC5B,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,OAAO,CAAC,UAAU,CAAC,gBAAgB,EAAE,IAAI,CAAC,IAAI,EAAE,cAAc,GAAG,MAAM,CAAC,CAAC;QAC9F,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,OAAO,CAAC,UAAU,CAAC,gBAAgB,EAAE,IAAI,CAAC,IAAI,EAAE,cAAc,GAAG,MAAM,CAAC,CAAC;QAC9F,CAAC;QAED,IAAI,CAAC,cAAc,EAAE,CAAC;QAEtB,UAAU,CAAC,GAAG,EAAE;YACd,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC;YAC5B,IAAI,CAAC,OAAO,EAAE,CAAC;QACjB,CAAC,EAAE,cAAc,CAAC,CAAC;IACrB,CAAC"}
@@ -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 { AccessoryType, TemperatureUnits } from './enums.js';
4
+ import { AccessoryType, TemperatureUnits, ValveType } from './enums.js';
5
5
  import { Assertable } from '../tools/validation.js';
6
6
  export type PlatformConfig = HBPlatformConfig & {
7
7
  accessories?: BaseAccessoryConfig[];
@@ -9,6 +9,14 @@ export type PlatformConfig = HBPlatformConfig & {
9
9
  export type TemperatureConfig = {
10
10
  temperatureUnits?: TemperatureUnits;
11
11
  };
12
+ export type AddonConfig = Assertable & {};
13
+ export type FilterMaintenanceConfig = AddonConfig & {
14
+ topicGetFilterChangeIndication: string;
15
+ topicGetFilterLifeLevel?: string;
16
+ topicResetFilterIndication?: string;
17
+ valueFilterChange: string;
18
+ valueFilterReset: string;
19
+ };
12
20
  type ErrorStatusConfig = {
13
21
  topicGetStatusFault?: string;
14
22
  topicGetStatusTampered?: string;
@@ -27,15 +35,20 @@ type AdditionalInfoConfig = InfoConfig & {
27
35
  serialNumber?: string;
28
36
  version?: string;
29
37
  };
38
+ export type MQTTMessage = Assertable & {
39
+ topic: string;
40
+ message: string;
41
+ };
30
42
  export type MQTTConfig = Assertable & {
31
- broker: string;
43
+ broker?: string;
32
44
  username?: string;
33
45
  password?: string;
34
46
  options?: string;
47
+ onConnect?: MQTTMessage[];
35
48
  };
36
49
  export type MQTTAccessoryConfig = Assertable & {
37
- mqtt: MQTTConfig;
38
50
  info: InfoConfig;
51
+ mqtt?: MQTTConfig;
39
52
  customCharacteristics?: CustomCharacteristicConfig[];
40
53
  disableLogging: boolean;
41
54
  };
@@ -98,6 +111,9 @@ export type LeakSensorConfig = SensorConfig & {
98
111
  topicGetLeakDetected: string;
99
112
  valueLeakDetected: string;
100
113
  };
114
+ export type LightSensorConfig = SensorConfig & {
115
+ topicGetCurrentAmbientLightLevel: string;
116
+ };
101
117
  export type MotionSensorConfig = SensorConfig & {
102
118
  topicGetMotionDetected: string;
103
119
  valueMotionDetected: string;
@@ -113,50 +129,62 @@ export type SmokeSensorConfig = SensorConfig & {
113
129
  export type TemperatureSensorConfig = SensorConfig & TemperatureConfig & {
114
130
  topicGetCurrentTemperature: string;
115
131
  };
116
- export type ClimateControlConfig = BaseAccessoryConfig & TemperatureConfig & {
132
+ export type TemperatureControlConfig = BaseAccessoryConfig & TemperatureConfig & {
117
133
  topicGetCoolingThresholdTemperature?: string;
118
134
  topicGetCurrentTemperature: string;
119
135
  topicGetHeatingThresholdTemperature?: string;
120
136
  topicSetCoolingThresholdTemperature?: string;
121
137
  topicSetHeatingThresholdTemperature?: string;
122
138
  };
123
- export type HeaterCoolerConfig = ClimateControlConfig & {
139
+ export type ThermostatConfig = TemperatureControlConfig & FilterMaintenanceConfig & {
140
+ topicGetCurrentHeatingCoolingState: string;
141
+ topicGetCurrentRelativeHumidity?: string;
142
+ topicGetTargetHeatingCoolingState: string;
143
+ topicGetTargetRelativeHumidity?: string;
144
+ topicGetTargetTemperature: string;
145
+ topicSetTargetHeatingCoolingState: string;
146
+ topicSetTargetRelativeHumidity?: string;
147
+ topicSetTargetTemperature: string;
148
+ valueModeAuto?: string;
149
+ valueModeCool?: string;
150
+ valueModeHeat?: string;
151
+ valueModeOff?: string;
152
+ };
153
+ export type ActiveClimateConfig = TemperatureControlConfig & {
124
154
  topicGetActive: string;
125
- topicGetCurrentHeaterCoolerState: string;
126
155
  topicGetLockPhysicalControls?: string;
127
156
  topicGetRotationSpeed?: string;
128
157
  topicGetSwingMode?: string;
129
- topicGetTargetHeaterCoolerState: string;
130
158
  topicSetActive: string;
131
159
  topicSetLockPhysicalControls?: string;
132
160
  topicSetRotationSpeed?: string;
133
161
  topicSetSwingMode?: string;
134
- topicSetTargetHeaterCoolerState: string;
135
162
  valueControlLock?: string;
136
163
  valueControlUnlock?: string;
137
- valueModeAuto?: string;
138
- valueModeCool?: string;
139
- valueModeHeat?: string;
140
- valueModeIdle?: string;
141
- valueModeInactive?: string;
142
164
  valueStateActive: string;
143
165
  valueStateInactive: string;
144
166
  valueSwingEnabled?: string;
145
167
  valueSwingDisabled?: string;
146
168
  };
147
- export type ThermostatConfig = ClimateControlConfig & {
148
- topicGetCurrentHeatingCoolingState: string;
149
- topicGetCurrentRelativeHumidity?: string;
150
- topicGetTargetHeatingCoolingState: string;
151
- topicGetTargetRelativeHumidity?: string;
152
- topicGetTargetTemperature: string;
153
- topicSetTargetHeatingCoolingState: string;
154
- topicSetTargetRelativeHumidity?: string;
155
- topicSetTargetTemperature: string;
169
+ export type HeaterCoolerConfig = ActiveClimateConfig & FilterMaintenanceConfig & {
170
+ topicGetCurrentHeaterCoolerState: string;
171
+ topicGetTargetHeaterCoolerState: string;
172
+ topicSetTargetHeaterCoolerState: string;
156
173
  valueModeAuto?: string;
157
174
  valueModeCool?: string;
158
175
  valueModeHeat?: string;
159
- valueModeOff?: string;
176
+ valueModeIdle?: string;
177
+ valueModeInactive?: string;
178
+ };
179
+ export type PurifierConfig = ActiveClimateConfig & FilterMaintenanceConfig & {
180
+ topicGetCurrentPurifierState: string;
181
+ topicGetTargetPurifierState: string;
182
+ topicSetTargetPurifierState: string;
183
+ valueModeAuto?: string;
184
+ valueModeIdle?: string;
185
+ valueModeInactive?: string;
186
+ valueModeManual?: string;
187
+ valueModePurifying?: string;
160
188
  };
161
189
  export type LockConfig = BaseAccessoryConfig & {
162
190
  topicGetCurrentLockState: string;
@@ -179,4 +207,22 @@ export type SecurityConfig = BaseAccessoryConfig & ErrorStatusConfig & {
179
207
  valueDisarm?: string;
180
208
  valueAlarmTriggered?: string;
181
209
  };
210
+ export type ValveConfig = BaseAccessoryConfig & {
211
+ valveType?: ValveType;
212
+ topicGetStatusFault?: string;
213
+ topicGetValveActive: string;
214
+ topicGetValveInUse: string;
215
+ topicGetValveIsConfigured?: string;
216
+ topicGetValveRemainingDuration?: string;
217
+ topicGetValveSetDuration?: string;
218
+ topicSetValveActive: string;
219
+ topicSetValveIsConfigured?: string;
220
+ topicSetValveSetDuration?: string;
221
+ valueActive: string;
222
+ valueConfigured?: string;
223
+ valueFault?: string;
224
+ valueInactive: string;
225
+ valueInUse: string;
226
+ valueNotConfigured?: string;
227
+ };
182
228
  export {};
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.4.0-beta.0",
7
+ "version": "1.4.0-beta.10",
8
8
  "homepage": "https://github.com/mpatfield/homebridge-easy-mqtt#readme",
9
9
  "repository": {
10
10
  "type": "git",
@@ -1 +0,0 @@
1
- {"version":3,"file":"climate.js","sourceRoot":"","sources":["../../../src/accessory/climate/climate.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEpD,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAE7C,OAAO,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAI3E,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAEzD,MAAM,CAAC,MAAM,mBAAmB,GAAG,EAAE,CAAC;AACtC,MAAM,yBAAyB,GAAG,EAAE,CAAC;AACrC,MAAM,yBAAyB,GAAG,EAAE,CAAC;AAErC,MAAM,OAAgB,uBAA+E,SAAQ,aAAgB;IAE3H,YAAY,OAAoB,EAAE,cAAkC,EAAE,SAA4B,EAAE,MAAS,EAAE,GAAQ,EAAE,SAAkB;QACzI,KAAK,CAAC,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,SAAS,CAAC,CAAC;QAElE,IAAI,CAAC,sBAAsB,CAAC,iBAAiB,CAAC,uBAAuB,EAAE,IAAI,CAAC,gBAAgB,KAAK,gBAAgB,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAEtI,IAAI,CAAC,mBAAmB,CAAC,iBAAiB,CAAC,kBAAkB,EAAE,mBAAmB,EAAE,4BAA4B,EAC9G,IAAI,CAAC,qBAAqB,CAAC,MAAM,EAAE,iBAAiB,CAAC,kBAAkB,EAAE,OAAO,CAAC,OAAO,CAAC,iBAAiB,CAAC,EAAE,IAAI,CAAC,CAAC;QAErH,IAAI,CAAC,mBAAmB,CAAC,iBAAiB,CAAC,2BAA2B,EAAE,yBAAyB,EAC/F,qCAAqC,EACrC,IAAI,CAAC,qBAAqB,CAAC,MAAM,EAAE,iBAAiB,CAAC,2BAA2B,EAAE,OAAO,CAAC,OAAO,CAAC,gBAAgB,CAAC,EAAE,KAAK,EAC1H,qCAAqC,EACrC,IAAI,CAAC,kBAAkB,CAAC,iBAAiB,CAAC,2BAA2B,EAAE,qCAAqC,EAAE,OAAO,CAAC,OAAO,CAAC,sBAAsB,CAAC,CACtJ,CAAC;QAEF,IAAI,CAAC,mBAAmB,CAAC,iBAAiB,CAAC,2BAA2B,EAAE,yBAAyB,EAC/F,qCAAqC,EACrC,IAAI,CAAC,qBAAqB,CAAC,MAAM,EAAE,iBAAiB,CAAC,2BAA2B,EAAE,OAAO,CAAC,OAAO,CAAC,gBAAgB,CAAC,EAAE,KAAK,EAC1H,qCAAqC,EACrC,IAAI,CAAC,kBAAkB,CAAC,iBAAiB,CAAC,2BAA2B,EAAE,qCAAqC,EAAE,OAAO,CAAC,OAAO,CAAC,sBAAsB,CAAC,CACtJ,CAAC;IACJ,CAAC;IAED,IAAc,gBAAgB;QAC5B,OAAO,IAAI,CAAC,MAAM,CAAC,gBAAgB,IAAI,gBAAgB,CAAC,OAAO,CAAC;IAClE,CAAC;IAEO,kBAAkB,CAAC,OAA0B,EAAE,KAAiC,EAAE,WAAmB;QAC3G,OAAO,CAAC,KAAK,EAAE,KAA0B,EAAE,EAAE;YAC3C,MAAM,WAAW,GAAG,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;YAClD,MAAM,SAAS,GAAG,WAAW,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG,WAAW,IAAI,IAAI,CAAC,gBAAgB,EAAE,CAAC,CAAC;YAC1F,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,SAAS,CAAC,CAAC;QAC5D,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAChB,CAAC;IAES,iBAAiB,CAAC,KAA0B;QACpD,MAAM,kBAAkB,GAAG,KAAe,CAAC;QAC3C,OAAO,IAAI,CAAC,gBAAgB,KAAK,gBAAgB,CAAC,UAAU,CAAC,CAAC,CAAC,WAAW,CAAC,kBAAkB,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,kBAAkB,CAAC;IAC7I,CAAC;CACF"}