homebridge-easy-mqtt 1.4.0-beta.1 → 1.4.0-beta.11

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 (66) hide show
  1. package/CHANGELOG.md +10 -2
  2. package/README.md +170 -25
  3. package/config.schema.json +985 -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 +7 -25
  12. package/dist/accessory/abstract/mqtt.js +13 -148
  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 +25 -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 +72 -0
  48. package/dist/i18n/en.js +72 -0
  49. package/dist/i18n/en.js.map +1 -1
  50. package/dist/i18n/fr.d.ts +72 -0
  51. package/dist/i18n/i18n.d.ts +74 -1
  52. package/dist/i18n/i18n.js +6 -0
  53. package/dist/i18n/i18n.js.map +1 -1
  54. package/dist/i18n/ro.d.ts +758 -0
  55. package/dist/i18n/ro.js +381 -0
  56. package/dist/i18n/ro.js.map +1 -0
  57. package/dist/i18n/template.d.ts +72 -0
  58. package/dist/model/enums.d.ts +25 -2
  59. package/dist/model/enums.js +25 -0
  60. package/dist/model/enums.js.map +1 -1
  61. package/dist/model/mqtt.d.ts +5 -4
  62. package/dist/model/mqtt.js +38 -22
  63. package/dist/model/mqtt.js.map +1 -1
  64. package/dist/model/types.d.ts +69 -23
  65. package/package.json +1 -1
  66. package/dist/accessory/climate/climate.js.map +0 -1
package/CHANGELOG.md CHANGED
@@ -2,14 +2,22 @@
2
2
 
3
3
  All notable changes to homebridge-dummy will be documented in this file.
4
4
 
5
- ## 1.4.0-beta.1 (2025-09-XX)
5
+ ## 1.4.0-beta.10 (2025-09-23)
6
6
 
7
7
  ### Added
8
- - Support for HeaterCooler
8
+ - Support for Air Purifier, HeaterCooler, LightSensor, and Valve
9
+ - FilterMaintenance to climate control accessories
10
+ - Broker, username, and password can be set via environment variables ([documentation](https://github.com/mpatfield/homebridge-easy-mqtt#environment-variables))
11
+ - Publish arbitrary MQTT messages on connect ([documentation] (https://github.com/mpatfield/homebridge-easy-mqtt#mqtt-onconnect))
12
+ - Traduceri în limba română. Mulțumesc, [@rursache](https://github.com/sponsors/rursache)!
9
13
 
10
14
  ### Changed
11
15
  - Optimized MQTT connections by sharing across multiple accessories when possible
12
16
  - Previously, every accessory had its own connection
17
+ - Better field validation in config UI (Thank you, [@justjam2013](https://github.com/sponsors/justjam2013) for teaching me this!)
18
+
19
+ ### Fixed
20
+ - Config UI rendering issue when migrating deprecated fields
13
21
 
14
22
  ### Notes
15
23
  Would you like to see Homebridge Easy MQTT in your language? Please consider [getting involved](https://github.com/mpatfield/homebridge-easy-mqtt/issues/4). No coding experience required!
package/README.md CHANGED
@@ -64,7 +64,14 @@ Using the Homebridge Config UI is the easiest way to set up this plugin. However
64
64
  "broker": "string",
65
65
  "username": "string",
66
66
  "password": "string",
67
- "options": "string"
67
+ "options": "string",
68
+ "onConnect": [
69
+ {
70
+ "topic": "string",
71
+ "message": "string",
72
+ }
73
+
74
+ ]
68
75
  },
69
76
  "customCharacteristics": [
70
77
  {
@@ -97,10 +104,21 @@ Required fields are marked with an asterisk (*)
97
104
  - `version` - The accessory software version which will display in HomeKit device details
98
105
 
99
106
  ### MQTT:
100
- - `broker*` - The URL and port to use for communicating with your MQTT device
107
+ - `broker` - The URL and port to use for communicating with your MQTT device, defaults to `mqtt://127.0.0.1:1883/`
101
108
  - `username` - Username
102
109
  - `password` - Password
103
110
  - `options` - See [MQTT Options](#mqtt-options) below
111
+ - `onConnect` - See [MQTT OnConnect](#mqtt-onconnect) below
112
+
113
+ #### Environment Variables
114
+
115
+ Alternatively, you may set the following environment variables for broker, username, and password:
116
+
117
+ - `EASYMQTT_BROKER` - expects a fully formed url, `protocol://host:port/` where port is optional
118
+ - `EASYMQTT_USERNAME`
119
+ - `EASYMQTT_PASSWORD`
120
+
121
+ Note that setting the this information in the JSON config will override the environment variables.
104
122
 
105
123
  ## Topics & Values
106
124
 
@@ -110,6 +128,8 @@ You may define topics using a JSONPath dot notation to assist the parser in find
110
128
 
111
129
  As with topics, you will also need to populate the appropriate values based on the type. Note that while they are defined as strings, they will be auto-converted to the appropriate primitives (e.g. boolean or number) where appropriate.
112
130
 
131
+ These values are used for both determining current state and, where appropriate, publishing the new state to MQTT
132
+
113
133
  ### General Purpose
114
134
  - `topicGetStatusActive` - Whether or not the accessory is connected/reachable
115
135
  - `topicGetBatteryLow` - Wether or not the accessory has a low battery
@@ -118,12 +138,12 @@ As with topics, you will also need to populate the appropriate values based on t
118
138
  - `valueBatteryLow` - Accessory has a low battery level
119
139
 
120
140
  ### On/Off Accessories
141
+
142
+ #### Lightbulb
121
143
  - `topicGetOn*` - The current state of the outlet, i.e. on/off
122
144
  - `topicSetOn*` - For setting the state of the outlet
123
145
  - `valueOn*` - Turned on, e.g. "true", or "1", or "On"
124
146
  - `valueOff*` - Turned off, e.g. "false", or "0", or "Off"
125
-
126
- #### Lightbulb
127
147
  - `topicGetBrightness` - The current brightness as a percent
128
148
  - `topicSetBrightness` - For setting the brightness
129
149
  - `topicGetColorTemperature` - The current color temperature of the lightbulb
@@ -134,76 +154,178 @@ As with topics, you will also need to populate the appropriate values based on t
134
154
  - `topicSetSaturation` - For setting the saturation setting of the lightbulb
135
155
 
136
156
  #### Outlet
157
+ - `topicGetOn*` - The current state of the outlet, i.e. on/off
158
+ - `topicSetOn*` - For setting the state of the outlet
159
+ - `valueOn*` - Turned on, e.g. "true", or "1", or "On"
160
+ - `valueOff*` - Turned off, e.g. "false", or "0", or "Off"
137
161
  - `topicGetOutletInUse` - Whether or not the outlet is currently being used
138
162
  - `valueOutletInUse` - Currently being used, e.g. "true", or "1", or "On"
139
163
 
140
164
  #### Switch
141
- -
165
+ - `topicGetOn*` - The current state of the outlet, i.e. on/off
166
+ - `topicSetOn*` - For setting the state of the outlet
167
+ - `valueOn*` - Turned on, e.g. "true", or "1", or "On"
168
+ - `valueOff*` - Turned off, e.g. "false", or "0", or "Off"
142
169
 
143
170
  ### Sensors
144
- - `topicGetStatusFault` - Whether or not the sensor has a generic fault
145
- - `topicGetStatusTampered` - Whether or not the sensor has been tampered with
146
- - `valueFault` - Accessory has a fault
147
- - `valueTampered` - Accessory has been tampered with
148
171
 
149
172
  #### CarbonDioxideSensor
150
173
  - `topicGetCarbonDioxideDetected*` - Whether or not the sensor has detected carbon dioxide
151
174
  - `topicGetCarbonDioxideLevel` - The current carbon dioxide level
152
175
  - `topicGetCarbonDioxidePeakLevel` - The peak carbon dioxide level
176
+ - `topicGetStatusFault` - Whether or not the sensor has a generic fault
177
+ - `topicGetStatusTampered` - Whether or not the sensor has been tampered with
153
178
  - `valueCarbonDioxideDetected*` - Accessory has detected carbon dioxide
179
+ - `valueFault` - Accessory has a fault
180
+ - `valueTampered` - Accessory has been tampered with
154
181
 
155
182
  #### CarbonMonoxideSensor
156
183
  - `topicGetCarbonMonoxideDetected*` - Whether or not the sensor has detected carbon monoxide
157
184
  - `topicGetCarbonMonoxideLevel` - The current carbon monoxide level
158
185
  - `topicGetCarbonMonoxidePeakLevel` - The peak carbon monoxide level
186
+ - `topicGetStatusFault` - Whether or not the sensor has a generic fault
187
+ - `topicGetStatusTampered` - Whether or not the sensor has been tampered with
159
188
  - `valueCarbonMonoxideDetected*` - Accessory has detected carbon monoxide
189
+ - `valueFault` - Accessory has a fault
190
+ - `valueTampered` - Accessory has been tampered with
160
191
 
161
192
  #### ContactSensor
162
193
  - `topicGetContactSensorState*` - Whether or not sensor has detected contact
194
+ - `topicGetStatusFault` - Whether or not the sensor has a generic fault
195
+ - `topicGetStatusTampered` - Whether or not the sensor has been tampered with
163
196
  - `valueContactDetected*` - Accessory has detected contact
197
+ - `valueFault` - Accessory has a fault
198
+ - `valueTampered` - Accessory has been tampered with
164
199
 
165
200
  ### HumiditySensor
166
- - `topicGetCurrentRelativeHumidity` - The current relatively humidity
201
+ - `topicGetCurrentRelativeHumidity*` - The current relatively humidity
202
+ - `topicGetStatusFault` - Whether or not the sensor has a generic fault
203
+ - `topicGetStatusTampered` - Whether or not the sensor has been tampered with
204
+ - `valueFault` - Accessory has a fault
205
+ - `valueTampered` - Accessory has been tampered with
167
206
 
168
207
  #### LeakSensor
169
208
  - `topicGetLeakDetected*` - Whether or not sensor has detected a leak
209
+ - `topicGetStatusFault` - Whether or not the sensor has a generic fault
210
+ - `topicGetStatusTampered` - Whether or not the sensor has been tampered with
170
211
  - `valueLeakDetected*` - Accessory has detected a leak
212
+ - `valueFault` - Accessory has a fault
213
+ - `valueTampered` - Accessory has been tampered with
214
+
215
+ #### LightSensor
216
+ - `topicGetCurrentAmbientLightLevel*` - The current light level in lux units
217
+ - `topicGetStatusFault` - Whether or not the sensor has a generic fault
218
+ - `topicGetStatusTampered` - Whether or not the sensor has been tampered with
219
+ - `valueFault` - Accessory has a fault
220
+ - `valueTampered` - Accessory has been tampered with
171
221
 
172
222
  #### MotionSensor
173
223
  - `topicGetMotionDetected*` - Whether or not sensor has detected motion
224
+ - `topicGetStatusFault` - Whether or not the sensor has a generic fault
225
+ - `topicGetStatusTampered` - Whether or not the sensor has been tampered with
174
226
  - `valueMotionDetected*` - Accessory has detected motion
227
+ - `valueFault` - Accessory has a fault
228
+ - `valueTampered` - Accessory has been tampered with
175
229
 
176
230
  #### OccupancySensor
177
231
  - `topicGetOccupancyDetected*` - Whether or not sensor has detected occupancy
232
+ - `topicGetStatusFault` - Whether or not the sensor has a generic fault
233
+ - `topicGetStatusTampered` - Whether or not the sensor has been tampered with
178
234
  - `valueOccupancyDetected*` - Accessory has detected occupancy
235
+ - `valueFault` - Accessory has a fault
236
+ - `valueTampered` - Accessory has been tampered with
179
237
 
180
238
  #### SmokeSensor
181
239
  - `topicGetSmokeDetected*` - Whether or not sensor has detected smoke
240
+ - `topicGetStatusFault` - Whether or not the sensor has a generic fault
241
+ - `topicGetStatusTampered` - Whether or not the sensor has been tampered with
182
242
  - `valueSmokeDetected*` - Accessory has detected smoke
243
+ - `valueFault` - Accessory has a fault
244
+ - `valueTampered` - Accessory has been tampered with
183
245
 
184
246
  #### TemperatureSensor
185
247
  - `topicGetCurrentTemperature*` - The current temperature of the sensor
186
248
  - `temperatureUnits` - The temperature units of the incoming value supplied by the sensor, `C` for Celsius (default) `F` for Fahrenheit
249
+ - `topicGetStatusFault` - Whether or not the sensor has a generic fault
250
+ - `topicGetStatusTampered` - Whether or not the sensor has been tampered with
251
+ - `valueFault` - Accessory has a fault
252
+ - `valueTampered` - Accessory has been tampered with
187
253
 
188
254
  ### Climate Controllers
255
+
256
+ #### Thermostat
189
257
  - `temperatureUnits` - The temperature units of the incoming value supplied by the thermostat, `C` for Celsius (default) `F` for Fahrenheit
258
+ - `topicGetCurrentTemperature*` - Get the current temperature
259
+ - `topicGetCurrentHeatingCoolingState*` - Get the current mode (i.e. cooling, heating, off)
260
+ - `topicGetTargetHeatingCoolingState*` - Get the target mode (i.e. auto, cooling, heating, off)
261
+ - `topicSetTargetHeatingCoolingState*` - Set the target mode (i.e. auto, cooling, heating, off)
262
+ - `topicGetTargetTemperature*` - Get the target temperature
263
+ - `topicSetTargetTemperature*` - Set the target temperature
190
264
  - `topicGetCoolingThresholdTemperature` - Get the cooling threshold temperature
191
265
  - `topicSetCoolingThresholdTemperature` - Set the cooling threshold temparture
192
266
  - `topicGetHeatingThresholdTemperature` - Get the heating threshold temperature
193
267
  - `topicSetHeatingThresholdTemperature` - Set the heating threshold temperature
268
+ - `topicGetCurrentRelativeHumidity` - Get the current humidity
269
+ - `topicGetTargetRelativeHumidity` - Get the target humidity
270
+ - `topicSetTargetRelativeHumidity` - Set the target humidity
271
+ - `topicGetFilterChangeIndication` - Whether or not the filter needs to be changed. *Required if other filter topics are defined.
272
+ - `topicGetFilterLifeLevel` - Filter life remaining as a percentage
273
+ - `topicResetFilterIndication` - Used to reset the filter
274
+ - `valueModeAuto` - Auto mode
275
+ - `valueModeCool` - Cool mode
276
+ - `valueModeHeat` - Heat mode
277
+ - `valueModeOff` - Thermostat off
278
+ - `valueFilterChange` - Indicates that the filter needs to be changed. *Required if `topicGetFilterChangeIndication` is defined.
279
+
280
+ #### Air Purifier
281
+ - `topicGetActive*` - Get whether or not the accessory is currently active
282
+ - `topicSetActive*` - Set whether or not the accessory is currently active
283
+ - `topicGetCurrentPurifierState*` - Get the current mode (i.e. inactive, idle, purifying)
284
+ - `topicGetTargetPurifierState*` - Get the target mode (i.e. auto, manual)
285
+ - `topicSetTargetPurifierState*` - Set the target mode (i.e. auto, manual)
286
+ - `topicGetLockPhysicalControls` - Get whether or not the physical controls are locked
287
+ - `topicSetLockPhysicalControls` - Set whether or not the physical controls are locked
288
+ - `topicGetRotationSpeed` - Get the rotation speed as a percentage
289
+ - `topicSetRotationSpeed` - Set the rotation speed as a percentage
290
+ - `topicGetSwingMode` - Get whether or not accessory is oscillating
291
+ - `topicSetSwingMode` - Set whether or not accessory is oscillating
292
+ - `topicGetFilterChangeIndication` - Whether or not the filter needs to be changed. *Required if other filter topics are defined.
293
+ - `topicGetFilterLifeLevel` - Filter life remaining as a percentage
294
+ - `topicResetFilterIndication` - Used to reset the filter
295
+ - `valueStateActive*` - Accessory is currently active
296
+ - `valueStateInactive*` - Accessory is currently inactive
297
+ - `valueModeAuto` - Auto target mode
298
+ - `valueModeIdle` - Idle mode
299
+ - `valueModeInactive` - Inactive mode
300
+ - `valueModeManual` - Manual target mode
301
+ - `valueModePurifying` - Purifying mode
302
+ - `valueControlLock` - Physical controls are locked
303
+ - `valueControlUnlock` - Physical controls are unlocked
304
+ - `valueSwingEnabled` - Accessory is oscillating
305
+ - `valueSwingDisabled` - Accessory is not oscillating
306
+ - `valueFilterChange` - Indicates that the filter needs to be changed. *Required if `topicGetFilterChangeIndication` is defined.
194
307
 
195
308
  #### HeaterCooler
309
+ - `temperatureUnits` - The temperature units of the incoming value supplied by the thermostat, `C` for Celsius (default) `F` for Fahrenheit
196
310
  - `topicGetActive*` - Get whether or not the accessory is currently active
197
311
  - `topicSetActive*` - Set whether or not the accessory is currently active
312
+ - `topicGetCurrentTemperature*` - Get the current temperature
198
313
  - `topicGetCurrentHeaterCoolerState*` - Get the current mode (i.e. inactive, idle, heating, cooling)
199
314
  - `topicGetTargetHeaterCoolerState*` - Get the target mode (i.e. auto, heat, cool)
200
315
  - `topicSetTargetHeaterCoolerState*` - Set the target mode (i.e. auto, heat, cool)
316
+ - `topicGetCoolingThresholdTemperature` - Get the cooling threshold temperature
317
+ - `topicSetCoolingThresholdTemperature` - Set the cooling threshold temparture
318
+ - `topicGetHeatingThresholdTemperature` - Get the heating threshold temperature
319
+ - `topicSetHeatingThresholdTemperature` - Set the heating threshold temperature
201
320
  - `topicGetLockPhysicalControls` - Get whether or not the physical controls are locked
202
321
  - `topicSetLockPhysicalControls` - Set whether or not the physical controls are locked
203
322
  - `topicGetRotationSpeed` - Get the rotation speed as a percentage
204
323
  - `topicSetRotationSpeed` - Set the rotation speed as a percentage
205
324
  - `topicGetSwingMode` - Get whether or not accessory is oscillating
206
325
  - `topicSetSwingMode` - Set whether or not accessory is oscillating
326
+ - `topicGetFilterChangeIndication` - Whether or not the filter needs to be changed. *Required if other filter topics are defined.
327
+ - `topicGetFilterLifeLevel` - Filter life remaining as a percentage
328
+ - `topicResetFilterIndication` - Used to reset the filter
207
329
  - `valueStateActive*` - Accessory is currently active
208
330
  - `valueStateInactive*` - Accessory is currently inactive
209
331
  - `valueModeAuto` - Mode is auto
@@ -215,21 +337,7 @@ As with topics, you will also need to populate the appropriate values based on t
215
337
  - `valueControlUnlock` - Physical controls are unlocked
216
338
  - `valueSwingEnabled` - Accessory is oscillating
217
339
  - `valueSwingDisabled` - Accessory is not oscillating
218
-
219
- #### Thermostat
220
- - `topicGetCurrentHeatingCoolingState*` - Get the current mode (i.e. cooling, heating, off)
221
- - `topicGetTargetHeatingCoolingState*` - Get the target mode (i.e. auto, cooling, heating, off)
222
- - `topicSetTargetHeatingCoolingState*` - Set the target mode (i.e. auto, cooling, heating, off)
223
- - `topicGetCurrentTemperature*` - Get the current temperature
224
- - `topicGetTargetTemperature*` - Get the target temperature
225
- - `topicSetTargetTemperature*` - Set the target temperature
226
- - `topicGetCurrentRelativeHumidity` - Get the current humidity
227
- - `topicGetTargetRelativeHumidity` - Get the target humidity
228
- - `topicSetTargetRelativeHumidity` - Set the target humidity
229
- - `valueModeAuto` - Auto mode
230
- - `valueModeCool` - Cool mode
231
- - `valueModeHeat` - Heat mode
232
- - `valueModeOff` - Thermostat off
340
+ - `valueFilterChange` - Indicates that the filter needs to be changed. *Required if `topicGetFilterChangeIndication` is defined.
233
341
 
234
342
  ### Others
235
343
 
@@ -255,6 +363,24 @@ As with topics, you will also need to populate the appropriate values based on t
255
363
  - `valueFault` - Accessory has a fault
256
364
  - `valueTampered` - Accessory has been tampered with
257
365
 
366
+ #### Valve
367
+ - `valveType` - One of `GENERIC_VALVE` (default), `IRRIGATION`, `SHOWER_HEAD`, or `WATER_FAUCET`
368
+ - `topicGetValveActive*` - For getting whether or not the valve is active
369
+ - `topicSetValveActive*` - For setting whether or not the valve is active
370
+ - `topicGetValveInUse*` - For getting whether or not the valve is in use
371
+ - `topicGetStatusFault` - For getting whether or not there is a fault
372
+ - `topicGetValveIsConfigured` - For getting wether or not valve is configured
373
+ - `topicSetValveIsConfigured` - For setting wether or not valve is configured
374
+ - `topicGetValveSetDuration` - For getting the set duration in seconds
375
+ - `topicSetValveSetDuration` - For setting the set duration in seconds
376
+ - `topicGetValveRemainingDuration` - For getting the time remaining in seconds
377
+ - `valueActive*` - Valve is active, e.g. "true", or "1", or "active"
378
+ - `valueInactive*` - Valve is not active e.g. "false", or "0", or "active"
379
+ - `valueInUse*` - Valve is in use, e.g. "true", or "1", or "used"
380
+ - `valueConfigured` - Valve is configured, e.g. "true", or "1", or "configured"
381
+ - `valueNotConfigured` - Valve is not configured, e.g. "false", or "0", or "unconfigured"
382
+ - `valueFault` - Valve has a fault, e.g. "error", or "-1"
383
+
258
384
  ## Logging/Debugging:
259
385
 
260
386
  By default, devices will log activity, for example when a Switch is turned on or a LockMechanism is unlocked.
@@ -275,6 +401,25 @@ You are able to pass in any arbitrary MQTT options via `mqtt.options` in the con
275
401
  "options": "{ \"protocolVersion\": \"4\", \"clientId\": \"my-client-id\", \"rejectUnauthorized\": true }"
276
402
  ```
277
403
 
404
+ ## MQTT OnConnect
405
+
406
+ Accessories can be configured to publish any number of arbitratry messages to the MQTT server on connect. This can be useful to invoke accessories to give updates on their current status.
407
+
408
+ Each entry should have a topic and a message:
409
+
410
+ ```
411
+ "onConnect": [
412
+ {
413
+ "topic": "some/arbitrary/topic",
414
+ "message": "connected",
415
+ },
416
+ {
417
+ "topic": "another/arbitrary/topic",
418
+ "message": "{ \"value\": \"can also be json\" }",
419
+ }
420
+ ]
421
+ ```
422
+
278
423
  ## JSONPaths
279
424
 
280
425
  For some devices, the desired values in the MQTT messages are embedded within a JSON object. For example, here is the MQTT message for my door lock that is received when the door is locked: