@uboness/homebridge-mqtt 0.0.2 → 0.0.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (37) hide show
  1. package/CHANGELOG.md +4 -0
  2. package/README.md +116 -2
  3. package/dist/MqttDevice.d.ts.map +1 -1
  4. package/dist/MqttDevice.js +4 -2
  5. package/dist/MqttDevice.js.map +1 -1
  6. package/dist/service/StatefulScene.d.ts +12 -0
  7. package/dist/service/StatefulScene.d.ts.map +1 -0
  8. package/dist/service/StatefulScene.js +27 -0
  9. package/dist/service/StatefulScene.js.map +1 -0
  10. package/dist/service/StatelessScene.d.ts +12 -0
  11. package/dist/service/StatelessScene.d.ts.map +1 -0
  12. package/dist/service/StatelessScene.js +27 -0
  13. package/dist/service/StatelessScene.js.map +1 -0
  14. package/dist/service/characteristic/archetype/common.d.ts +1 -1
  15. package/dist/service/characteristic/archetype/common.d.ts.map +1 -1
  16. package/dist/service/characteristic/archetype/common.js +3 -0
  17. package/dist/service/characteristic/archetype/common.js.map +1 -1
  18. package/dist/service/characteristic/index.d.ts +4 -1
  19. package/dist/service/characteristic/index.d.ts.map +1 -1
  20. package/dist/service/characteristic/index.js +4 -1
  21. package/dist/service/characteristic/index.js.map +1 -1
  22. package/dist/service/characteristic/momentaryOn.d.ts +10 -0
  23. package/dist/service/characteristic/momentaryOn.d.ts.map +1 -0
  24. package/dist/service/characteristic/momentaryOn.js +21 -0
  25. package/dist/service/characteristic/momentaryOn.js.map +1 -0
  26. package/dist/service/characteristic/mqttBridge.d.ts +5 -0
  27. package/dist/service/characteristic/mqttBridge.d.ts.map +1 -0
  28. package/dist/service/characteristic/mqttBridge.js +15 -0
  29. package/dist/service/characteristic/mqttBridge.js.map +1 -0
  30. package/dist/service/characteristic/stickyOn.d.ts +11 -0
  31. package/dist/service/characteristic/stickyOn.d.ts.map +1 -0
  32. package/dist/service/characteristic/stickyOn.js +29 -0
  33. package/dist/service/characteristic/stickyOn.js.map +1 -0
  34. package/dist/service/index.d.ts.map +1 -1
  35. package/dist/service/index.js +4 -0
  36. package/dist/service/index.js.map +1 -1
  37. package/package.json +1 -1
package/CHANGELOG.md CHANGED
@@ -2,6 +2,10 @@
2
2
 
3
3
  All notable changes to this project will be documented in this file. See [commit-and-tag-version](https://github.com/absolute-version/commit-and-tag-version) for commit guidelines.
4
4
 
5
+ ## [0.0.4](https://github.com/uboness/{{name}}/compare/v0.0.3...v0.0.4) (2025-01-26)
6
+
7
+ ## [0.0.3](https://github.com/uboness/{{name}}/compare/v0.0.2...v0.0.3) (2025-01-25)
8
+
5
9
  ## [0.0.2](https://github.com/uboness/{{name}}/compare/v0.0.1...v0.0.2) (2025-01-25)
6
10
 
7
11
  ## 0.0.1 (2025-01-25)
package/README.md CHANGED
@@ -1307,13 +1307,35 @@ Other values can be converted using a converter (as shown below).
1307
1307
  "topics": {
1308
1308
  "lockTargetState": {
1309
1309
  "get": "<read_topic>",
1310
- "get": "<write_topic>",
1310
+ "set": "<write_topic>",
1311
1311
  "converter"?: "boolean" | { "secured": "<value indicating 'secured'>", "unsecured": "value indicating 'unsecured'" } // a boolean 'true' indicates 'secured'
1312
1312
  }
1313
1313
  }
1314
1314
  }
1315
1315
  ```
1316
1316
 
1317
+
1318
+ ### <code style="color: green">momentaryOn</code>
1319
+
1320
+ This is a special case of an 'on' characteristic when turned on it immediately turns back off.
1321
+ When turned on, it publishes the configured value to the configured topic.
1322
+
1323
+ #### Services
1324
+ - [stateless-scene](#stateless-scene)
1325
+
1326
+ #### Configuration
1327
+
1328
+ ```typescript
1329
+ {
1330
+ "topics": {
1331
+ "momentaryOn": {
1332
+ "get": "<read_topic>",
1333
+ "value": number | string | boolean // the published value
1334
+ }
1335
+ }
1336
+ }
1337
+ ```
1338
+
1317
1339
  ### <code style="color: green">motionDetected</code>
1318
1340
 
1319
1341
  Indicates if a sensor detected motion. By default, will look for `true` (indicating "detected")
@@ -1944,6 +1966,29 @@ This characteristic is optional on all sensor services.
1944
1966
  }
1945
1967
  ```
1946
1968
 
1969
+ ### <code style="color: green">stickyOn</code>
1970
+
1971
+ This is a special case of an 'on' characteristic that is associated with a value. When turned on,
1972
+ it publishes this value to the configured `set` topic, and it stays turned on until it receives a
1973
+ different value from the configured `get` topic. Trying to force it off will cause it to "silently" turn back
1974
+ on ("silently" in that it will not publish the value to the `set` topic).
1975
+
1976
+ #### Services
1977
+ - [stateful-scene](#stateful-scene)
1978
+
1979
+ #### Configuration
1980
+
1981
+ ```typescript
1982
+ {
1983
+ "topics": {
1984
+ "stickyOn": {
1985
+ "get": "<read_topic>",
1986
+ "set": "<write_topic>",
1987
+ "value": number | string | boolean // the published value
1988
+ }
1989
+ }
1990
+ }
1991
+ ```
1947
1992
 
1948
1993
  ### <code style="color: green">swingMode</code>
1949
1994
 
@@ -2310,6 +2355,8 @@ Other values can be converted using the [Percentages](#percentages-) converter.
2310
2355
  - [security-system](#security-system)
2311
2356
  - [smoke-sensor](#smoke-sensor)
2312
2357
  - [speaker](#speaker)
2358
+ - [stateful-scene](#stateful-scene)
2359
+ - [stateless-scene](#stateless-scene)
2313
2360
  - [switch](#switch)
2314
2361
  - [temperature-sensor](#temperature-sensor)
2315
2362
  - [thermostat](#thermostat)
@@ -3289,6 +3336,73 @@ Characteristics:
3289
3336
  }
3290
3337
  ```
3291
3338
 
3339
+ ### stateful-scene
3340
+
3341
+ This can be a useful tool to implement a multi-state switch over a single topic. For example,
3342
+ if there is a device that can have 3 states = `off`, `low` and `high`. These states are published
3343
+ to a single topic. You can then set up a `stateful-scene` device. The primary service will
3344
+ represent the `off` state, and two additional `stateful-scene` sub-services will represent the other
3345
+ `low` and `high` states. This will translate to a HomeKit grouped accessory with 3 switches where
3346
+ only the switch representing the current state can be on at any given time. Trying to turn it off
3347
+ will fail - it will only turn off if you turn on any of the other switches (which effectively changing
3348
+ the state of the device).
3349
+
3350
+ Characteristics:
3351
+ - [stickyOn](#code-stylecolor-greenstickyOncode) (required)
3352
+ - [statusFault](#code-stylecolor-greenstatusFaultcode) (optional)
3353
+ - [faultMessage](#code-stylecolor-greenfaultMessagecode) (optional)
3354
+
3355
+ ```json
3356
+ {
3357
+ "name": "<custom name>",
3358
+ "type": "speaker",
3359
+ "topics": {
3360
+ "stickyOn": { // required
3361
+ "get": "<read_topic>",
3362
+ "set": "<write_topic>",
3363
+ "value": string | number | boolean // the published value
3364
+ },
3365
+ "statusFault"?: { // optional
3366
+ "get": "<read_topic>",
3367
+ "converter"?: "boolean" | { "on": "'fault' value", "off": "'no fault' value"}
3368
+ },
3369
+ "faultMessage"?: { // optional
3370
+ "get": "<topic>"
3371
+ }
3372
+ }
3373
+ }
3374
+ ```
3375
+
3376
+ ### stateless-scene
3377
+
3378
+ This can be useful to define a device that simply triggers a scene. It only publishes a value and
3379
+ ignores any other values that are published on the MQTT broker.
3380
+
3381
+ Characteristics:
3382
+ - [momentaryOn](#code-stylecolor-greenmomentaryOncode) (required)
3383
+ - [statusFault](#code-stylecolor-greenstatusFaultcode) (optional)
3384
+ - [faultMessage](#code-stylecolor-greenfaultMessagecode) (optional)
3385
+
3386
+ ```json
3387
+ {
3388
+ "name": "<custom name>",
3389
+ "type": "speaker",
3390
+ "topics": {
3391
+ "momentaryOn": { // required
3392
+ "set": "<write_topic>",
3393
+ "value": string | number | boolean // the published value
3394
+ },
3395
+ "statusFault"?: { // optional
3396
+ "get": "<read_topic>",
3397
+ "converter"?: "boolean" | { "on": "'fault' value", "off": "'no fault' value"}
3398
+ },
3399
+ "faultMessage"?: { // optional
3400
+ "get": "<topic>"
3401
+ }
3402
+ }
3403
+ }
3404
+ ```
3405
+
3292
3406
  ### switch
3293
3407
 
3294
3408
  Characteristics:
@@ -3299,7 +3413,7 @@ Characteristics:
3299
3413
  ```json
3300
3414
  {
3301
3415
  "name": "<custom name>",
3302
- "type": "outlet",
3416
+ "type": "switch",
3303
3417
  "topics": {
3304
3418
  "on": { // required
3305
3419
  "get": "<read_topic>",
@@ -1 +1 @@
1
- {"version":3,"file":"MqttDevice.d.ts","sourceRoot":"","sources":["../src/MqttDevice.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAC/C,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AACtC,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAC9B,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAEjD,qBAAa,UAAU;IAEnB,QAAQ,CAAC,QAAQ,EAAE,YAAY,CAAC;IAChC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC;IACpB,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAC,MAAM,CAAC;IACnC,QAAQ,CAAC,SAAS,EAAE,iBAAiB,CAAC;IACtC,QAAQ,CAAC,cAAc,EAAE,WAAW,CAAC;IACrC,QAAQ,CAAC,QAAQ,EAAE,WAAW,EAAE,CAAC;IACjC,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IAEzB,OAAO,CAAC,UAAU,CAAS;gBAEf,QAAQ,EAAE,YAAY,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,iBAAiB,EAAE,MAAM,EAAE,UAAU,CAAC,MAAM,EAAE,cAAc,EAAE,WAAW,EAAE,QAAQ,GAAE,WAAW,EAAO;IAoBlK,IAAI,EAAE,WAEL;IAED,IAAI,IAAI,WAEP;IAED,IAAI,IAAI,WAEP;IAED,IAAI,SAAS,IAIY,OAAO,CAF/B;IAED,IAAI,SAAS,CAAC,SAAS,EAAE,OAAO,EAI/B;IAEK,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAM/B;AAED,yBAAiB,UAAU,CAAC;IAExB;;;;;;;;OAQG;IACH,KAAY,MAAM,GAAG,WAAW,CAAC,MAAM,GAAG;QACtC,EAAE,EAAE,MAAM,CAAC;QACX,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,QAAQ,CAAC,EAAE,KAAK,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;KACxC,CAAA;IAED,KAAY,eAAe,GAAG,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,CAAC;CAEpF"}
1
+ {"version":3,"file":"MqttDevice.d.ts","sourceRoot":"","sources":["../src/MqttDevice.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAC/C,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AACtC,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAC9B,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEjD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAEjD,qBAAa,UAAU;IAEnB,QAAQ,CAAC,QAAQ,EAAE,YAAY,CAAC;IAChC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC;IACpB,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAC,MAAM,CAAC;IACnC,QAAQ,CAAC,SAAS,EAAE,iBAAiB,CAAC;IACtC,QAAQ,CAAC,cAAc,EAAE,WAAW,CAAC;IACrC,QAAQ,CAAC,QAAQ,EAAE,WAAW,EAAE,CAAC;IACjC,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IAEzB,OAAO,CAAC,UAAU,CAAS;gBAEf,QAAQ,EAAE,YAAY,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,iBAAiB,EAAE,MAAM,EAAE,UAAU,CAAC,MAAM,EAAE,cAAc,EAAE,WAAW,EAAE,QAAQ,GAAE,WAAW,EAAO;IAqBlK,IAAI,EAAE,WAEL;IAED,IAAI,IAAI,WAEP;IAED,IAAI,IAAI,WAEP;IAED,IAAI,SAAS,IAIY,OAAO,CAF/B;IAED,IAAI,SAAS,CAAC,SAAS,EAAE,OAAO,EAI/B;IAEK,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAM/B;AAED,yBAAiB,UAAU,CAAC;IAExB;;;;;;;;OAQG;IACH,KAAY,MAAM,GAAG,WAAW,CAAC,MAAM,GAAG;QACtC,EAAE,EAAE,MAAM,CAAC;QACX,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,QAAQ,CAAC,EAAE,KAAK,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;KACxC,CAAA;IAED,KAAY,eAAe,GAAG,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,CAAC;CAEpF"}
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.MqttDevice = void 0;
4
+ const index_1 = require("./service/characteristic/index");
4
5
  class MqttDevice {
5
6
  constructor(platform, mqtt, accessory, config, primaryService, services = []) {
6
7
  this._connected = false;
@@ -13,8 +14,9 @@ class MqttDevice {
13
14
  this.primaryService.hap.setPrimaryService(true);
14
15
  this.services = services;
15
16
  this.primaryService.hap.setCharacteristic(platform.Characteristic.Name, accessory.displayName);
16
- accessory.getService(platform.Service.AccessoryInformation)
17
- .setCharacteristic(platform.Characteristic.Name, accessory.displayName)
17
+ const info = accessory.getService(platform.Service.AccessoryInformation);
18
+ (0, index_1.mqttBridge)(platform, mqtt, info).setValue(mqtt.id);
19
+ info.setCharacteristic(platform.Characteristic.Name, accessory.displayName)
18
20
  .setCharacteristic(platform.Characteristic.Manufacturer, 'mqtt')
19
21
  .setCharacteristic(platform.Characteristic.Model, config.type)
20
22
  .setCharacteristic(platform.Characteristic.SerialNumber, config.id);
@@ -1 +1 @@
1
- {"version":3,"file":"MqttDevice.js","sourceRoot":"","sources":["../src/MqttDevice.ts"],"names":[],"mappings":";;;AAMA,MAAa,UAAU;IAYnB,YAAY,QAAsB,EAAE,IAAU,EAAE,SAA4B,EAAE,MAAyB,EAAE,cAA2B,EAAE,WAA0B,EAAE;QAF1J,eAAU,GAAG,KAAK,CAAC;QAGvB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,cAAc,GAAG,cAAc,CAAC;QACrC,IAAI,CAAC,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;QAC9D,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;QAChD,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,iBAAiB,CAAC,QAAQ,CAAC,cAAc,CAAC,IAAI,EAAE,SAAS,CAAC,WAAW,CAAC,CAAC;QAE/F,SAAS,CAAC,UAAU,CAAC,QAAQ,CAAC,OAAO,CAAC,oBAAoB,CAAE;aACvD,iBAAiB,CAAC,QAAQ,CAAC,cAAc,CAAC,IAAI,EAAE,SAAS,CAAC,WAAW,CAAC;aACtE,iBAAiB,CAAC,QAAQ,CAAC,cAAc,CAAC,YAAY,EAAE,MAAM,CAAC;aAC/D,iBAAiB,CAAC,QAAQ,CAAC,cAAc,CAAC,KAAK,EAAE,MAAM,CAAC,IAAI,CAAC;aAC7D,iBAAiB,CAAC,QAAQ,CAAC,cAAc,CAAC,YAAY,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC;QAExE,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC;IACjC,CAAC;IAED,IAAI,EAAE;QACF,OAAO,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;IAC1B,CAAC;IAED,IAAI,IAAI;QACJ,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;IAC5B,CAAC;IAED,IAAI,IAAI;QACJ,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;IAC5B,CAAC;IAED,IAAI,SAAS;QACT,OAAO,IAAI,CAAC,UAAU,CAAC;IAC3B,CAAC;IAED,IAAI,SAAS,CAAC,SAAkB;QAC5B,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;QAC5B,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;QAC5C,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,CAAC;IACtE,CAAC;IAED,KAAK,CAAC,KAAK;QACP,MAAM,OAAO,CAAC,GAAG,CAAC;YACd,IAAI,CAAC,cAAc,CAAC,OAAO;YAC3B,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;SACzC,CAAC,CAAC;IACP,CAAC;CACJ;AA5DD,gCA4DC"}
1
+ {"version":3,"file":"MqttDevice.js","sourceRoot":"","sources":["../src/MqttDevice.ts"],"names":[],"mappings":";;;AAIA,0DAA4D;AAG5D,MAAa,UAAU;IAYnB,YAAY,QAAsB,EAAE,IAAU,EAAE,SAA4B,EAAE,MAAyB,EAAE,cAA2B,EAAE,WAA0B,EAAE;QAF1J,eAAU,GAAG,KAAK,CAAC;QAGvB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,cAAc,GAAG,cAAc,CAAC;QACrC,IAAI,CAAC,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;QAC9D,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;QAChD,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,iBAAiB,CAAC,QAAQ,CAAC,cAAc,CAAC,IAAI,EAAE,SAAS,CAAC,WAAW,CAAC,CAAC;QAE/F,MAAM,IAAI,GAAG,SAAS,CAAC,UAAU,CAAC,QAAQ,CAAC,OAAO,CAAC,oBAAoB,CAAC,CAAC;QACzE,IAAA,kBAAU,EAAC,QAAQ,EAAE,IAAI,EAAE,IAAK,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACpD,IAAK,CAAC,iBAAiB,CAAC,QAAQ,CAAC,cAAc,CAAC,IAAI,EAAE,SAAS,CAAC,WAAW,CAAC;aACvE,iBAAiB,CAAC,QAAQ,CAAC,cAAc,CAAC,YAAY,EAAE,MAAM,CAAC;aAC/D,iBAAiB,CAAC,QAAQ,CAAC,cAAc,CAAC,KAAK,EAAE,MAAM,CAAC,IAAI,CAAC;aAC7D,iBAAiB,CAAC,QAAQ,CAAC,cAAc,CAAC,YAAY,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC;QAExE,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC;IACjC,CAAC;IAED,IAAI,EAAE;QACF,OAAO,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;IAC1B,CAAC;IAED,IAAI,IAAI;QACJ,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;IAC5B,CAAC;IAED,IAAI,IAAI;QACJ,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;IAC5B,CAAC;IAED,IAAI,SAAS;QACT,OAAO,IAAI,CAAC,UAAU,CAAC;IAC3B,CAAC;IAED,IAAI,SAAS,CAAC,SAAkB;QAC5B,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;QAC5B,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;QAC5C,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,CAAC;IACtE,CAAC;IAED,KAAK,CAAC,KAAK;QACP,MAAM,OAAO,CAAC,GAAG,CAAC;YACd,IAAI,CAAC,cAAc,CAAC,OAAO;YAC3B,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;SACzC,CAAC,CAAC;IACP,CAAC;CACJ;AA7DD,gCA6DC"}
@@ -0,0 +1,12 @@
1
+ import { StickyOn } from './characteristic/index.js';
2
+ import { MqttService } from './MqttService.js';
3
+ export declare namespace StatefulScene {
4
+ const TYPE: "stateful-scene";
5
+ type Config = MqttService.Config & {
6
+ type: typeof TYPE;
7
+ name: string;
8
+ topics: StickyOn & MqttService.StandardTopics;
9
+ };
10
+ const create: MqttService.Factory;
11
+ }
12
+ //# sourceMappingURL=StatefulScene.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StatefulScene.d.ts","sourceRoot":"","sources":["../../src/service/StatefulScene.ts"],"names":[],"mappings":"AAAA,OAAO,EAAsC,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AACzF,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAG/C,yBAAiB,aAAa,CAAC;IAEpB,MAAM,IAAI,kBAA4B,CAAC;IAE9C,KAAY,MAAM,GAAG,WAAW,CAAC,MAAM,GAAG;QACtC,IAAI,EAAE,OAAO,IAAI,CAAC;QAClB,IAAI,EAAE,MAAM,CAAC;QACb,MAAM,EAAE,QAAQ,GAAG,WAAW,CAAC,cAAc,CAAA;KAChD,CAAC;IAEK,MAAM,MAAM,EAAE,WAAW,CAAC,OAmBhC,CAAC;CACL"}
@@ -0,0 +1,27 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.StatefulScene = void 0;
4
+ const index_js_1 = require("./characteristic/index.js");
5
+ const until_js_1 = require("./until.js");
6
+ var StatefulScene;
7
+ (function (StatefulScene) {
8
+ StatefulScene.TYPE = 'stateful-scene';
9
+ StatefulScene.create = async (platform, mqtt, accessory, serviceConfig, primary) => {
10
+ if (serviceConfig.type !== StatefulScene.TYPE) {
11
+ throw new Error(`StatelessScene factory expects a '${StatefulScene.TYPE}' config`);
12
+ }
13
+ const config = serviceConfig;
14
+ const { service, cleanup, online, ctx } = await (0, until_js_1.defineService)(platform, mqtt, accessory, platform.Service.Switch, serviceConfig, primary);
15
+ if (!config.topics.stickyOn) {
16
+ throw new Error(`Could not create Button service [${config.name}] for device [${accessory.context.deviceId}]. Missing 'stickyOn' topics`);
17
+ }
18
+ cleanup.push(await (0, index_js_1.stickyOn)(platform, mqtt, accessory, service, config.topics.stickyOn, ctx));
19
+ return {
20
+ config,
21
+ hap: service,
22
+ dispose: () => cleanup.detach(),
23
+ setConnected: value => online.setValue(value)
24
+ };
25
+ };
26
+ })(StatefulScene = exports.StatefulScene || (exports.StatefulScene = {}));
27
+ //# sourceMappingURL=StatefulScene.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StatefulScene.js","sourceRoot":"","sources":["../../src/service/StatefulScene.ts"],"names":[],"mappings":";;;AAAA,wDAAyF;AAEzF,yCAA2C;AAE3C,IAAiB,aAAa,CA8B7B;AA9BD,WAAiB,aAAa;IAEb,kBAAI,GAAG,gBAAyB,CAAC;IAQjC,oBAAM,GAAwB,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE,aAAa,EAAE,OAAO,EAAE,EAAE;QACnG,IAAI,aAAa,CAAC,IAAI,KAAK,cAAA,IAAI,EAAE;YAC7B,MAAM,IAAI,KAAK,CAAC,qCAAqC,cAAA,IAAI,UAAU,CAAC,CAAC;SACxE;QACD,MAAM,MAAM,GAAG,aAAuB,CAAC;QAEvC,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,MAAM,IAAA,wBAAa,EAAC,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,CAAC,OAAO,CAAC,MAAM,EAAE,aAAa,EAAE,OAAO,CAAC,CAAC;QAE1I,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE;YACzB,MAAM,IAAI,KAAK,CAAC,oCAAoC,MAAM,CAAC,IAAI,iBAAiB,SAAS,CAAC,OAAO,CAAC,QAAQ,8BAA8B,CAAC,CAAC;SAC7I;QACD,OAAO,CAAC,IAAI,CAAC,MAAM,IAAA,mBAAQ,EAAC,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,CAAC;QAE9F,OAAO;YACH,MAAM;YACN,GAAG,EAAE,OAAO;YACZ,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,MAAM,EAAE;YAC/B,YAAY,EAAE,KAAK,CAAC,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC;SAChD,CAAC;IACN,CAAC,CAAC;AACN,CAAC,EA9BgB,aAAa,GAAb,qBAAa,KAAb,qBAAa,QA8B7B"}
@@ -0,0 +1,12 @@
1
+ import { MomentaryOn } from './characteristic/index.js';
2
+ import { MqttService } from './MqttService.js';
3
+ export declare namespace StatelessScene {
4
+ const TYPE: "stateless-scene";
5
+ type Config = MqttService.Config & {
6
+ type: typeof TYPE;
7
+ name: string;
8
+ topics: MomentaryOn & MqttService.StandardTopics;
9
+ };
10
+ const create: MqttService.Factory;
11
+ }
12
+ //# sourceMappingURL=StatelessScene.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StatelessScene.d.ts","sourceRoot":"","sources":["../../src/service/StatelessScene.ts"],"names":[],"mappings":"AAAA,OAAO,EAAe,WAAW,EAAE,MAAM,2BAA2B,CAAC;AACrE,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAG/C,yBAAiB,cAAc,CAAC;IAErB,MAAM,IAAI,mBAA6B,CAAC;IAE/C,KAAY,MAAM,GAAG,WAAW,CAAC,MAAM,GAAG;QACtC,IAAI,EAAE,OAAO,IAAI,CAAC;QAClB,IAAI,EAAE,MAAM,CAAC;QACb,MAAM,EACF,WAAW,GACX,WAAW,CAAC,cAAc,CAAA;KACjC,CAAC;IAEK,MAAM,MAAM,EAAE,WAAW,CAAC,OAmBhC,CAAC;CACL"}
@@ -0,0 +1,27 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.StatelessScene = void 0;
4
+ const index_js_1 = require("./characteristic/index.js");
5
+ const until_js_1 = require("./until.js");
6
+ var StatelessScene;
7
+ (function (StatelessScene) {
8
+ StatelessScene.TYPE = 'stateless-scene';
9
+ StatelessScene.create = async (platform, mqtt, accessory, serviceConfig, primary) => {
10
+ if (serviceConfig.type !== StatelessScene.TYPE) {
11
+ throw new Error(`StatelessScene factory expects a '${StatelessScene.TYPE}' config`);
12
+ }
13
+ const config = serviceConfig;
14
+ const { service, cleanup, online, ctx } = await (0, until_js_1.defineService)(platform, mqtt, accessory, platform.Service.Switch, serviceConfig, primary);
15
+ if (!config.topics.momentaryOn) {
16
+ throw new Error(`Could not create Button service [${config.name}] for device [${accessory.context.deviceId}]. Missing 'momentaryOn' topics`);
17
+ }
18
+ cleanup.push(await (0, index_js_1.momentaryOn)(platform, mqtt, accessory, service, config.topics.momentaryOn, ctx));
19
+ return {
20
+ config,
21
+ hap: service,
22
+ dispose: () => cleanup.detach(),
23
+ setConnected: value => online.setValue(value)
24
+ };
25
+ };
26
+ })(StatelessScene = exports.StatelessScene || (exports.StatelessScene = {}));
27
+ //# sourceMappingURL=StatelessScene.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StatelessScene.js","sourceRoot":"","sources":["../../src/service/StatelessScene.ts"],"names":[],"mappings":";;;AAAA,wDAAqE;AAErE,yCAA2C;AAE3C,IAAiB,cAAc,CAgC9B;AAhCD,WAAiB,cAAc;IAEd,mBAAI,GAAG,iBAA0B,CAAC;IAUlC,qBAAM,GAAwB,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE,aAAa,EAAE,OAAO,EAAE,EAAE;QACnG,IAAI,aAAa,CAAC,IAAI,KAAK,eAAA,IAAI,EAAE;YAC7B,MAAM,IAAI,KAAK,CAAC,qCAAqC,eAAA,IAAI,UAAU,CAAC,CAAC;SACxE;QACD,MAAM,MAAM,GAAG,aAAuB,CAAC;QAEvC,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,MAAM,IAAA,wBAAa,EAAC,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,CAAC,OAAO,CAAC,MAAM,EAAE,aAAa,EAAE,OAAO,CAAC,CAAC;QAE1I,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,WAAW,EAAE;YAC5B,MAAM,IAAI,KAAK,CAAC,oCAAoC,MAAM,CAAC,IAAI,iBAAiB,SAAS,CAAC,OAAO,CAAC,QAAQ,iCAAiC,CAAC,CAAC;SAChJ;QACD,OAAO,CAAC,IAAI,CAAC,MAAM,IAAA,sBAAW,EAAC,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC,CAAC;QAEpG,OAAO;YACH,MAAM;YACN,GAAG,EAAE,OAAO;YACZ,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,MAAM,EAAE;YAC/B,YAAY,EAAE,KAAK,CAAC,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC;SAChD,CAAC;IACN,CAAC,CAAC;AACN,CAAC,EAhCgB,cAAc,GAAd,sBAAc,KAAd,sBAAc,QAgC9B"}
@@ -17,5 +17,5 @@ export type JsonTopicValue<T = any> = {
17
17
  stringify(value: T): string;
18
18
  parse(value: string): T;
19
19
  };
20
- export declare const parseMqttValue: (value: string) => string | number | boolean;
20
+ export declare const parseMqttValue: (value: string | number | boolean) => string | number | boolean;
21
21
  //# sourceMappingURL=common.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"common.d.ts","sourceRoot":"","sources":["../../../../src/service/characteristic/archetype/common.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,mBAAmB,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAC3E,OAAO,EAAE,UAAU,EAAW,QAAQ,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAC/E,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AACxD,OAAO,EAAE,qBAAqB,EAAE,MAAM,UAAU,CAAC;AAEjD,MAAM,MAAM,QAAQ,GAAG,QAAQ,CAAC;IAAE,QAAO,cAAc,CAAA;CAAE,CAAC,CAAC;AAC3D,MAAM,MAAM,eAAe,GAAG,CAAC,QAAQ,EAAE,YAAY,KAAK,QAAQ,CAAC;AAEnE,MAAM,MAAM,wBAAwB,GAAG,cAAc,GAAG,UAAU,CAAC;AACnE,MAAM,MAAM,0BAA0B,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,KAAK,EAAE,mBAAmB,EAAE,GAAG,EAAE,GAAG,KAAK,UAAU,CAAC,IAAI,CAAC,KAAK,UAAU,CAAC;AAC3I,yBAAiB,wBAAwB,CAAC;IAC/B,MAAM,KAAK,SAAU,cAAc,cAAc,UAAU,OAAM,0BAA0B,gCAIjG,CAAA;CACJ;AAED,eAAO,MAAM,UAAU,UAAW,MAAM,OAAO,qBAAqB,KAAG,CAAE,MAAM,EAAE,SAAS,cAAc,CAAC,EAAE,MAAM,CAoBhH,CAAC;AAEF,MAAM,MAAM,cAAc,CAAC,CAAC,GAAG,GAAG,IAAI;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,KAAK,EAAE,CAAC,GAAG,MAAM,CAAC;IAC5B,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,CAAC,CAAC;CAC3B,CAAA;AAED,eAAO,MAAM,cAAc,UAAW,MAAM,8BAY3C,CAAC"}
1
+ {"version":3,"file":"common.d.ts","sourceRoot":"","sources":["../../../../src/service/characteristic/archetype/common.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,mBAAmB,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAC3E,OAAO,EAAE,UAAU,EAAgC,QAAQ,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AACpG,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AACxD,OAAO,EAAE,qBAAqB,EAAE,MAAM,UAAU,CAAC;AAEjD,MAAM,MAAM,QAAQ,GAAG,QAAQ,CAAC;IAAE,QAAO,cAAc,CAAA;CAAE,CAAC,CAAC;AAC3D,MAAM,MAAM,eAAe,GAAG,CAAC,QAAQ,EAAE,YAAY,KAAK,QAAQ,CAAC;AAEnE,MAAM,MAAM,wBAAwB,GAAG,cAAc,GAAG,UAAU,CAAC;AACnE,MAAM,MAAM,0BAA0B,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,KAAK,EAAE,mBAAmB,EAAE,GAAG,EAAE,GAAG,KAAK,UAAU,CAAC,IAAI,CAAC,KAAK,UAAU,CAAC;AAC3I,yBAAiB,wBAAwB,CAAC;IAC/B,MAAM,KAAK,SAAU,cAAc,cAAc,UAAU,OAAM,0BAA0B,gCAIjG,CAAA;CACJ;AAED,eAAO,MAAM,UAAU,UAAW,MAAM,OAAO,qBAAqB,KAAG,CAAE,MAAM,EAAE,SAAS,cAAc,CAAC,EAAE,MAAM,CAoBhH,CAAC;AAEF,MAAM,MAAM,cAAc,CAAC,CAAC,GAAG,GAAG,IAAI;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,KAAK,EAAE,CAAC,GAAG,MAAM,CAAC;IAC5B,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,CAAC,CAAC;CAC3B,CAAA;AAED,eAAO,MAAM,cAAc,UAAW,MAAM,GAAG,MAAM,GAAG,OAAO,8BAe9D,CAAC"}
@@ -32,6 +32,9 @@ const parseTopic = (topic, ctx) => {
32
32
  };
33
33
  exports.parseTopic = parseTopic;
34
34
  const parseMqttValue = (value) => {
35
+ if ((0, common_js_1.isNumber)(value) || (0, common_js_1.isBoolean)(value)) {
36
+ return value;
37
+ }
35
38
  const num = parseFloat(value);
36
39
  if (!Number.isNaN(num)) {
37
40
  return num;
@@ -1 +1 @@
1
- {"version":3,"file":"common.js","sourceRoot":"","sources":["../../../../src/service/characteristic/archetype/common.ts"],"names":[],"mappings":";;;AACA,kDAA+E;AAS/E,IAAiB,wBAAwB,CAMxC;AAND,WAAiB,wBAAwB;IACxB,8BAAK,GAAG,CAAC,IAAoB,EAAE,UAAsB,EAAE,KAAiC,CAAC,GAAG,EAAE,CAAC,sBAAU,CAAC,IAAI,CAAC,EAAE,EAAE;QAC3H,IAAY,CAAC,MAAM,GAAG,GAAG,EAAE,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC;QAChD,IAAY,CAAC,EAAE,GAAG,EAAE,CAAC;QACtB,OAAO,IAAmC,CAAC;IAC/C,CAAC,CAAA;AACL,CAAC,EANgB,wBAAwB,GAAxB,gCAAwB,KAAxB,gCAAwB,QAMxC;AAEM,MAAM,UAAU,GAAG,CAAC,KAAa,EAAE,GAA0B,EAAgD,EAAE;IAClH,MAAM,CAAC,GAAG,KAAK,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;IACjC,IAAI,CAAC,GAAG,CAAC,EAAE;QACP,OAAO,CAAE,KAAK,EAAE,SAAS,EAAE,KAAK,CAAE,CAAC;KACtC;IACD,MAAM,MAAM,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACrC,MAAM,IAAI,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IACpC,MAAM,IAAI,GAAmB;QACzB,IAAI;QACJ,SAAS,CAAC,KAAK;YACX,MAAM,IAAI,GAAG,EAAE,CAAC;YAChB,mBAAO,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,IAAA,sBAAc,EAAC,KAAK,CAAC,CAAC,CAAC;YAC/C,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QAChC,CAAC;QACD,KAAK,CAAC,KAAa;YACf,OAAO,mBAAO,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,IAAI,CAAC,CAAC;QAChD,CAAC;KACJ,CAAC;IAEF,OAAO,CAAE,MAAM,EAAE,IAAI,EAAE,KAAK,CAAE,CAAC;AACnC,CAAC,CAAC;AApBW,QAAA,UAAU,cAoBrB;AAQK,MAAM,cAAc,GAAG,CAAC,KAAa,EAAE,EAAE;IAC5C,MAAM,GAAG,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC;IAC9B,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;QACpB,OAAO,GAAG,CAAC;KACd;IACD,IAAI,KAAK,KAAK,MAAM,EAAE;QAClB,OAAO,IAAI,CAAC;KACf;IACD,IAAI,KAAK,KAAK,OAAO,EAAE;QACnB,OAAO,KAAK,CAAC;KAChB;IACD,OAAO,KAAK,CAAC;AACjB,CAAC,CAAC;AAZW,QAAA,cAAc,kBAYzB"}
1
+ {"version":3,"file":"common.js","sourceRoot":"","sources":["../../../../src/service/characteristic/archetype/common.ts"],"names":[],"mappings":";;;AACA,kDAAoG;AASpG,IAAiB,wBAAwB,CAMxC;AAND,WAAiB,wBAAwB;IACxB,8BAAK,GAAG,CAAC,IAAoB,EAAE,UAAsB,EAAE,KAAiC,CAAC,GAAG,EAAE,CAAC,sBAAU,CAAC,IAAI,CAAC,EAAE,EAAE;QAC3H,IAAY,CAAC,MAAM,GAAG,GAAG,EAAE,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC;QAChD,IAAY,CAAC,EAAE,GAAG,EAAE,CAAC;QACtB,OAAO,IAAmC,CAAC;IAC/C,CAAC,CAAA;AACL,CAAC,EANgB,wBAAwB,GAAxB,gCAAwB,KAAxB,gCAAwB,QAMxC;AAEM,MAAM,UAAU,GAAG,CAAC,KAAa,EAAE,GAA0B,EAAgD,EAAE;IAClH,MAAM,CAAC,GAAG,KAAK,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;IACjC,IAAI,CAAC,GAAG,CAAC,EAAE;QACP,OAAO,CAAE,KAAK,EAAE,SAAS,EAAE,KAAK,CAAE,CAAC;KACtC;IACD,MAAM,MAAM,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACrC,MAAM,IAAI,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IACpC,MAAM,IAAI,GAAmB;QACzB,IAAI;QACJ,SAAS,CAAC,KAAK;YACX,MAAM,IAAI,GAAG,EAAE,CAAC;YAChB,mBAAO,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,IAAA,sBAAc,EAAC,KAAK,CAAC,CAAC,CAAC;YAC/C,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QAChC,CAAC;QACD,KAAK,CAAC,KAAa;YACf,OAAO,mBAAO,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,IAAI,CAAC,CAAC;QAChD,CAAC;KACJ,CAAC;IAEF,OAAO,CAAE,MAAM,EAAE,IAAI,EAAE,KAAK,CAAE,CAAC;AACnC,CAAC,CAAC;AApBW,QAAA,UAAU,cAoBrB;AAQK,MAAM,cAAc,GAAG,CAAC,KAAgC,EAAE,EAAE;IAC/D,IAAI,IAAA,oBAAQ,EAAC,KAAK,CAAC,IAAI,IAAA,qBAAS,EAAC,KAAK,CAAC,EAAE;QACrC,OAAO,KAAK,CAAC;KAChB;IACD,MAAM,GAAG,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC;IAC9B,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;QACpB,OAAO,GAAG,CAAC;KACd;IACD,IAAI,KAAK,KAAK,MAAM,EAAE;QAClB,OAAO,IAAI,CAAC;KACf;IACD,IAAI,KAAK,KAAK,OAAO,EAAE;QACnB,OAAO,KAAK,CAAC;KAChB;IACD,OAAO,KAAK,CAAC;AACjB,CAAC,CAAC;AAfW,QAAA,cAAc,kBAezB"}
@@ -45,8 +45,10 @@ export * from './securitySystemTargetState.js';
45
45
  export * from './securitySystemAlarmType.js';
46
46
  export * from './smokeDetected.js';
47
47
  export * from './faultMessage';
48
- export * from './mute.js';
48
+ export * from './momentaryOn.js';
49
49
  export * from './motionDetected.js';
50
+ export * from './mute.js';
51
+ export * from './mqttBridge.js';
50
52
  export * from './mqttOnline.js';
51
53
  export * from './no2Density.js';
52
54
  export * from './ozoneDensity.js';
@@ -63,6 +65,7 @@ export * from './relativeHumidityDehumidifierThreshold.js';
63
65
  export * from './statusFault.js';
64
66
  export * from './statusTampered.js';
65
67
  export * from './statusLowBattery.js';
68
+ export * from './stickyOn.js';
66
69
  export * from './so2Density.js';
67
70
  export * from './targetFanState.js';
68
71
  export * from './targetHeatingCoolingState.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/service/characteristic/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/service/characteristic/index.ts"],"names":[],"mappings":"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"}
@@ -57,8 +57,10 @@ __exportStar(require("./securitySystemTargetState.js"), exports);
57
57
  __exportStar(require("./securitySystemAlarmType.js"), exports);
58
58
  __exportStar(require("./smokeDetected.js"), exports);
59
59
  __exportStar(require("./faultMessage"), exports);
60
- __exportStar(require("./mute.js"), exports);
60
+ __exportStar(require("./momentaryOn.js"), exports);
61
61
  __exportStar(require("./motionDetected.js"), exports);
62
+ __exportStar(require("./mute.js"), exports);
63
+ __exportStar(require("./mqttBridge.js"), exports);
62
64
  __exportStar(require("./mqttOnline.js"), exports);
63
65
  __exportStar(require("./no2Density.js"), exports);
64
66
  __exportStar(require("./ozoneDensity.js"), exports);
@@ -75,6 +77,7 @@ __exportStar(require("./relativeHumidityDehumidifierThreshold.js"), exports);
75
77
  __exportStar(require("./statusFault.js"), exports);
76
78
  __exportStar(require("./statusTampered.js"), exports);
77
79
  __exportStar(require("./statusLowBattery.js"), exports);
80
+ __exportStar(require("./stickyOn.js"), exports);
78
81
  __exportStar(require("./so2Density.js"), exports);
79
82
  __exportStar(require("./targetFanState.js"), exports);
80
83
  __exportStar(require("./targetHeatingCoolingState.js"), exports);
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/service/characteristic/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAUA,iDAAgE;AAAvD,oHAAA,wBAAwB,OAAA;AACjC,8CAA4B;AAC5B,kDAAgC;AAChC,oDAAkC;AAClC,kDAAgC;AAChC,qDAAmC;AACnC,0DAAwC;AACxC,8DAA4C;AAC5C,6DAA2C;AAC3C,2DAAyC;AACzC,+DAA6C;AAC7C,8DAA4C;AAC5C,wDAAsC;AACtC,kEAAgD;AAChD,kEAAgD;AAChD,uDAAqC;AACrC,uDAAqC;AACrC,0DAAwC;AACxC,gEAA8C;AAC9C,+DAA6C;AAC7C,0EAAwD;AACxD,gEAA8C;AAC9C,2CAAyB;AACzB,4DAA0C;AAC1C,0CAAwB;AACxB,yDAAuC;AACvC,qDAAmC;AACnC,kDAAgC;AAChC,iDAA+B;AAC/B,0DAAwC;AACxC,oDAAkC;AAClC,wDAAsC;AACtC,uDAAqC;AACrC,8CAA4B;AAC5B,yDAAuC;AACvC,mDAAiC;AACjC,kEAAgD;AAChD,iEAA+C;AAC/C,+DAA6C;AAC7C,qDAAmC;AACnC,iDAA+B;AAC/B,4CAA0B;AAC1B,sDAAoC;AACpC,kDAAgC;AAChC,kDAAgC;AAChC,oDAAkC;AAClC,2DAAyC;AACzC,oDAAkC;AAClC,qDAAmC;AACnC,+DAA6C;AAC7C,mDAAiC;AACjC,mDAAiC;AACjC,mEAAiD;AACjD,mEAAiD;AACjD,2EAAyD;AACzD,6EAA2D;AAC3D,mDAAiC;AACjC,sDAAoC;AACpC,wDAAsC;AACtC,kDAAgC;AAChC,sDAAoC;AACpC,iEAA+C;AAC/C,yEAAuD;AACvD,iEAA+C;AAC/C,wDAAsC;AACtC,sDAAoC;AACpC,8DAA4C;AAC5C,+DAA6C;AAC7C,+DAA6C;AAC7C,kDAAgC;AAChC,kDAAgC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/service/characteristic/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAUA,iDAAgE;AAAvD,oHAAA,wBAAwB,OAAA;AACjC,8CAA4B;AAC5B,kDAAgC;AAChC,oDAAkC;AAClC,kDAAgC;AAChC,qDAAmC;AACnC,0DAAwC;AACxC,8DAA4C;AAC5C,6DAA2C;AAC3C,2DAAyC;AACzC,+DAA6C;AAC7C,8DAA4C;AAC5C,wDAAsC;AACtC,kEAAgD;AAChD,kEAAgD;AAChD,uDAAqC;AACrC,uDAAqC;AACrC,0DAAwC;AACxC,gEAA8C;AAC9C,+DAA6C;AAC7C,0EAAwD;AACxD,gEAA8C;AAC9C,2CAAyB;AACzB,4DAA0C;AAC1C,0CAAwB;AACxB,yDAAuC;AACvC,qDAAmC;AACnC,kDAAgC;AAChC,iDAA+B;AAC/B,0DAAwC;AACxC,oDAAkC;AAClC,wDAAsC;AACtC,uDAAqC;AACrC,8CAA4B;AAC5B,yDAAuC;AACvC,mDAAiC;AACjC,kEAAgD;AAChD,iEAA+C;AAC/C,+DAA6C;AAC7C,qDAAmC;AACnC,iDAA+B;AAC/B,mDAAiC;AACjC,sDAAoC;AACpC,4CAA0B;AAC1B,kDAAgC;AAChC,kDAAgC;AAChC,kDAAgC;AAChC,oDAAkC;AAClC,2DAAyC;AACzC,oDAAkC;AAClC,qDAAmC;AACnC,+DAA6C;AAC7C,mDAAiC;AACjC,mDAAiC;AACjC,mEAAiD;AACjD,mEAAiD;AACjD,2EAAyD;AACzD,6EAA2D;AAC3D,mDAAiC;AACjC,sDAAoC;AACpC,wDAAsC;AACtC,gDAA8B;AAC9B,kDAAgC;AAChC,sDAAoC;AACpC,iEAA+C;AAC/C,yEAAuD;AACvD,iEAA+C;AAC/C,wDAAsC;AACtC,sDAAoC;AACpC,8DAA4C;AAC5C,+DAA6C;AAC7C,+DAA6C;AAC7C,kDAAgC;AAChC,kDAAgC"}
@@ -0,0 +1,10 @@
1
+ import { CharacteristicConfigurator } from './index';
2
+ export type MomentaryOn = {
3
+ momentaryOn: MomentaryOnConfig;
4
+ };
5
+ export type MomentaryOnConfig = {
6
+ set: string;
7
+ value: string | number | boolean;
8
+ };
9
+ export declare const momentaryOn: CharacteristicConfigurator<MomentaryOnConfig>;
10
+ //# sourceMappingURL=momentaryOn.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"momentaryOn.d.ts","sourceRoot":"","sources":["../../../src/service/characteristic/momentaryOn.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,0BAA0B,EAAE,MAAM,SAAS,CAAC;AAErD,MAAM,MAAM,WAAW,GAAG;IACtB,WAAW,EAAE,iBAAiB,CAAA;CACjC,CAAA;AAED,MAAM,MAAM,iBAAiB,GAAG;IAC5B,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAA;CACnC,CAAA;AAED,eAAO,MAAM,WAAW,EAAE,0BAA0B,CAAC,iBAAiB,CAarE,CAAA"}
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.momentaryOn = void 0;
4
+ const common_js_1 = require("../../common.js");
5
+ const index_js_1 = require("./archetype/index.js");
6
+ const momentaryOn = async (platform, mqtt, accessory, service, config, ctx) => {
7
+ var _a, _b;
8
+ const [setTopic, setJson, fullSetTopic] = (0, index_js_1.parseTopic)(config.set, ctx);
9
+ const publishedValue = (_a = setJson === null || setJson === void 0 ? void 0 : setJson.stringify(config.value)) !== null && _a !== void 0 ? _a : `${config.value}`;
10
+ const on = ((_b = service.getCharacteristic(platform.Characteristic.On)) !== null && _b !== void 0 ? _b : service.addCharacteristic(platform.Characteristic.On))
11
+ .onSet(value => {
12
+ if (value) {
13
+ (0, common_js_1.nextTick)(() => on.updateValue(false));
14
+ platform.logger.debug(`Publishing [${mqtt.id}][${accessory.displayName}][${service.displayName}][momentaryOn][${config.value}] value [${publishedValue}] to topic [${fullSetTopic}]`);
15
+ mqtt.publish(setTopic, publishedValue);
16
+ }
17
+ });
18
+ return index_js_1.DetachableCharacteristic.mixin(on, common_js_1.Detachable.NOOP);
19
+ };
20
+ exports.momentaryOn = momentaryOn;
21
+ //# sourceMappingURL=momentaryOn.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"momentaryOn.js","sourceRoot":"","sources":["../../../src/service/characteristic/momentaryOn.ts"],"names":[],"mappings":";;;AAAA,+CAAuD;AACvD,mDAA4E;AAYrE,MAAM,WAAW,GAAkD,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAqC,EAAE;;IACnK,MAAM,CAAE,QAAQ,EAAE,OAAO,EAAE,YAAY,CAAE,GAAG,IAAA,qBAAU,EAAC,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IACxE,MAAM,cAAc,GAAG,MAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,mCAAI,GAAG,MAAM,CAAC,KAAK,EAAE,CAAC;IAC7E,MAAM,EAAE,GAAG,CAAC,MAAA,OAAO,CAAC,iBAAiB,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC,mCAAI,OAAO,CAAC,iBAAiB,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC;SACtH,KAAK,CAAC,KAAK,CAAC,EAAE;QACX,IAAI,KAAK,EAAE;YACP,IAAA,oBAAQ,EAAC,GAAG,EAAE,CAAC,EAAE,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC;YACtC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,eAAe,IAAI,CAAC,EAAE,KAAK,SAAS,CAAC,WAAW,KAAK,OAAO,CAAC,WAAW,kBAAkB,MAAM,CAAC,KAAK,YAAY,cAAc,eAAe,YAAY,GAAG,CAAC,CAAC;YACtL,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,cAAc,CAAC,CAAC;SAC1C;IACL,CAAC,CAAC,CAAA;IAEN,OAAO,mCAAwB,CAAC,KAAK,CAAC,EAAE,EAAE,sBAAU,CAAC,IAAI,CAAC,CAAC;AAC/D,CAAC,CAAA;AAbY,QAAA,WAAW,eAavB"}
@@ -0,0 +1,5 @@
1
+ import { Characteristic, Service } from 'homebridge';
2
+ import { Mqtt } from '../../Mqtt';
3
+ import { MqttPlatform } from '../../MqttPlatform.js';
4
+ export declare const mqttBridge: (platform: MqttPlatform, mqtt: Mqtt, service: Service) => Characteristic;
5
+ //# sourceMappingURL=mqttBridge.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mqttBridge.d.ts","sourceRoot":"","sources":["../../../src/service/characteristic/mqttBridge.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAkB,OAAO,EAAE,MAAM,YAAY,CAAC;AACrE,OAAO,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAClC,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAKrD,eAAO,MAAM,UAAU,aAAc,YAAY,QAAQ,IAAI,WAAW,OAAO,KAAG,cAQjF,CAAC"}
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.mqttBridge = void 0;
4
+ const DISPLAY_NAME = 'MQTT Bridge';
5
+ const UUID = '78d6605d-be4b-4ef9-9170-e7dfc632da4a';
6
+ const mqttBridge = (platform, mqtt, service) => {
7
+ var _a;
8
+ const bridge = new platform.Characteristic(DISPLAY_NAME, UUID, {
9
+ format: "string" /* Formats.STRING */,
10
+ perms: ["pr" /* Perms.PAIRED_READ */, "ev" /* Perms.NOTIFY */]
11
+ });
12
+ return ((_a = service.getCharacteristic(DISPLAY_NAME)) !== null && _a !== void 0 ? _a : service.addCharacteristic(bridge));
13
+ };
14
+ exports.mqttBridge = mqttBridge;
15
+ //# sourceMappingURL=mqttBridge.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mqttBridge.js","sourceRoot":"","sources":["../../../src/service/characteristic/mqttBridge.ts"],"names":[],"mappings":";;;AAIA,MAAM,YAAY,GAAG,aAAa,CAAC;AACnC,MAAM,IAAI,GAAG,sCAAsC,CAAC;AAE7C,MAAM,UAAU,GAAG,CAAC,QAAsB,EAAE,IAAU,EAAE,OAAgB,EAAkB,EAAE;;IAE/F,MAAM,MAAM,GAAG,IAAI,QAAQ,CAAC,cAAc,CAAC,YAAY,EAAE,IAAI,EAAE;QAC3D,MAAM,+BAAgB;QACtB,KAAK,EAAE,uDAAmC;KAC7C,CAAC,CAAC;IAEH,OAAO,CAAC,MAAA,OAAO,CAAC,iBAAiB,CAAC,YAAY,CAAC,mCAAI,OAAO,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC,CAAC;AAC1F,CAAC,CAAC;AARW,QAAA,UAAU,cAQrB"}
@@ -0,0 +1,11 @@
1
+ import { CharacteristicConfigurator } from './index';
2
+ export type StickyOn = {
3
+ stickyOn: StickyOnConfig;
4
+ };
5
+ export type StickyOnConfig = {
6
+ set: string;
7
+ get: string;
8
+ value: string | number | boolean;
9
+ };
10
+ export declare const stickyOn: CharacteristicConfigurator<StickyOnConfig>;
11
+ //# sourceMappingURL=stickyOn.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stickyOn.d.ts","sourceRoot":"","sources":["../../../src/service/characteristic/stickyOn.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,0BAA0B,EAAE,MAAM,SAAS,CAAC;AAErD,MAAM,MAAM,QAAQ,GAAG;IACnB,QAAQ,EAAE,cAAc,CAAA;CAC3B,CAAA;AAED,MAAM,MAAM,cAAc,GAAG;IACzB,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAA;CACnC,CAAA;AAED,eAAO,MAAM,QAAQ,EAAE,0BAA0B,CAAC,cAAc,CAuB/D,CAAC"}
@@ -0,0 +1,29 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.stickyOn = void 0;
4
+ const common_js_1 = require("../../common.js");
5
+ const index_js_1 = require("./archetype/index.js");
6
+ const stickyOn = async (platform, mqtt, accessory, service, config, ctx) => {
7
+ var _a, _b;
8
+ const [setTopic, setJson, fullSetTopic] = (0, index_js_1.parseTopic)(config.set, ctx);
9
+ const [getTopic, getJson, fullGetTopic] = (0, index_js_1.parseTopic)(config.get, ctx);
10
+ const publishedValue = (_a = setJson === null || setJson === void 0 ? void 0 : setJson.stringify(config.value)) !== null && _a !== void 0 ? _a : `${config.value}`;
11
+ const on = ((_b = service.getCharacteristic(platform.Characteristic.On)) !== null && _b !== void 0 ? _b : service.addCharacteristic(platform.Characteristic.On))
12
+ .onSet(value => {
13
+ if (!value) {
14
+ (0, common_js_1.nextTick)(() => on.updateValue(true));
15
+ return;
16
+ }
17
+ platform.logger.debug(`Publishing [${mqtt.id}][${accessory.displayName}][${service.displayName}][stickyOn][${config.value}] value [${publishedValue}] to topic [${fullSetTopic}]`);
18
+ mqtt.publish(setTopic, publishedValue);
19
+ });
20
+ const detachable = await mqtt.subscribe(getTopic, value => {
21
+ const mqttValue = !getJson ? (0, index_js_1.parseMqttValue)(value) : getJson.parse(value);
22
+ const hapValue = `${mqttValue}` === `${config.value}`;
23
+ platform.logger.debug(`Setting [${mqtt.id}][${accessory.displayName}][${service.displayName}][stickyOn][${config.value}] to [${hapValue}] with MQTT value [${mqttValue}] from topic [${fullGetTopic}]`);
24
+ on.updateValue(hapValue);
25
+ });
26
+ return index_js_1.DetachableCharacteristic.mixin(on, detachable);
27
+ };
28
+ exports.stickyOn = stickyOn;
29
+ //# sourceMappingURL=stickyOn.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stickyOn.js","sourceRoot":"","sources":["../../../src/service/characteristic/stickyOn.ts"],"names":[],"mappings":";;;AAAA,+CAA2C;AAC3C,mDAA4F;AAarF,MAAM,QAAQ,GAA+C,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAqC,EAAE;;IAC7J,MAAM,CAAE,QAAQ,EAAE,OAAO,EAAE,YAAY,CAAE,GAAG,IAAA,qBAAU,EAAC,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IACxE,MAAM,CAAE,QAAQ,EAAE,OAAO,EAAE,YAAY,CAAE,GAAG,IAAA,qBAAU,EAAC,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IACxE,MAAM,cAAc,GAAG,MAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,mCAAI,GAAG,MAAM,CAAC,KAAK,EAAE,CAAC;IAE7E,MAAM,EAAE,GAAG,CAAC,MAAA,OAAO,CAAC,iBAAiB,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC,mCAAI,OAAO,CAAC,iBAAiB,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC;SACtH,KAAK,CAAC,KAAK,CAAC,EAAE;QACX,IAAI,CAAC,KAAK,EAAE;YACR,IAAA,oBAAQ,EAAC,GAAG,EAAE,CAAC,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC;YACrC,OAAO;SACV;QACD,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,eAAe,IAAI,CAAC,EAAE,KAAK,SAAS,CAAC,WAAW,KAAK,OAAO,CAAC,WAAW,eAAe,MAAM,CAAC,KAAK,YAAY,cAAc,eAAe,YAAY,GAAG,CAAC,CAAC;QACnL,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,cAAc,CAAC,CAAC;IAC3C,CAAC,CAAC,CAAC;IAEP,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,KAAK,CAAC,EAAE;QACtD,MAAM,SAAS,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,IAAA,yBAAc,EAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAC1E,MAAM,QAAQ,GAAG,GAAG,SAAS,EAAE,KAAK,GAAG,MAAM,CAAC,KAAK,EAAE,CAAC;QACtD,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,YAAY,IAAI,CAAC,EAAE,KAAK,SAAS,CAAC,WAAW,KAAK,OAAO,CAAC,WAAW,eAAe,MAAM,CAAC,KAAK,SAAS,QAAQ,sBAAsB,SAAS,iBAAiB,YAAY,GAAG,CAAC,CAAC;QACxM,EAAE,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;IAC7B,CAAC,CAAC,CAAC;IAEH,OAAO,mCAAwB,CAAC,KAAK,CAAC,EAAE,EAAE,UAAU,CAAC,CAAC;AAC1D,CAAC,CAAC;AAvBW,QAAA,QAAQ,YAuBnB"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/service/index.ts"],"names":[],"mappings":"AAiBA,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAY/C,cAAc,kBAAkB,CAAA;AAEhC,eAAO,MAAM,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,OAAO,CA4BxD,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/service/index.ts"],"names":[],"mappings":"AAiBA,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAc/C,cAAc,kBAAkB,CAAA;AAEhC,eAAO,MAAM,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,OAAO,CA8BxD,CAAA"}
@@ -37,11 +37,13 @@ const Outlet_js_1 = require("./Outlet.js");
37
37
  const SecuritySystem_js_1 = require("./SecuritySystem.js");
38
38
  const SmokeSensor_js_1 = require("./SmokeSensor.js");
39
39
  const Speaker_js_1 = require("./Speaker.js");
40
+ const StatefulScene_1 = require("./StatefulScene");
40
41
  const Switch_js_1 = require("./Switch.js");
41
42
  const TemperatureSensor_js_1 = require("./TemperatureSensor.js");
42
43
  const Thermostat_js_1 = require("./Thermostat.js");
43
44
  const Window_1 = require("./Window");
44
45
  const WindowCovering_js_1 = require("./WindowCovering.js");
46
+ const StatelessScene_js_1 = require("./StatelessScene.js");
45
47
  __exportStar(require("./MqttService.js"), exports);
46
48
  exports.Services = {
47
49
  [AirQualitySensor_js_1.AirQualitySensor.TYPE]: AirQualitySensor_js_1.AirQualitySensor.create,
@@ -66,6 +68,8 @@ exports.Services = {
66
68
  [SecuritySystem_js_1.SecuritySystem.TYPE]: SecuritySystem_js_1.SecuritySystem.create,
67
69
  [SmokeSensor_js_1.SmokeSensor.TYPE]: SmokeSensor_js_1.SmokeSensor.create,
68
70
  [Speaker_js_1.Speaker.TYPE]: Speaker_js_1.Speaker.create,
71
+ [StatelessScene_js_1.StatelessScene.TYPE]: StatelessScene_js_1.StatelessScene.create,
72
+ [StatefulScene_1.StatefulScene.TYPE]: StatefulScene_1.StatefulScene.create,
69
73
  [Switch_js_1.Switch.TYPE]: Switch_js_1.Switch.create,
70
74
  [TemperatureSensor_js_1.TemperatureSensor.TYPE]: TemperatureSensor_js_1.TemperatureSensor.create,
71
75
  [Thermostat_js_1.Thermostat.TYPE]: Thermostat_js_1.Thermostat.create,
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/service/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,+DAAyD;AACzD,6CAAuC;AACvC,2CAAqC;AACrC,iDAA2C;AAC3C,yDAAmD;AACnD,+CAAyC;AACzC,iCAA8B;AAC9B,yCAAsC;AACtC,qCAA+B;AAC/B,2EAAqE;AACrE,2DAAqD;AACrD,mDAA6C;AAC7C,iDAA2C;AAC3C,qDAA+C;AAC/C,yDAAmD;AACnD,mDAA6C;AAC7C,uDAAiD;AAEjD,6DAAuD;AACvD,2CAAqC;AACrC,2DAAqD;AACrD,qDAA+C;AAC/C,6CAAuC;AACvC,2CAAqC;AACrC,iEAA2D;AAC3D,mDAA6C;AAC7C,qCAAkC;AAClC,2DAAqD;AAErD,mDAAgC;AAEnB,QAAA,QAAQ,GAAwC;IACzD,CAAC,sCAAgB,CAAC,IAAI,CAAC,EAAW,sCAAgB,CAAC,MAAM;IACzD,CAAC,oBAAO,CAAC,IAAI,CAAC,EAAoB,oBAAO,CAAC,MAAM;IAChD,CAAC,kBAAM,CAAC,IAAI,CAAC,EAAqB,kBAAM,CAAC,MAAM;IAC/C,CAAC,sBAAQ,CAAC,IAAI,CAAC,EAAmB,sBAAQ,CAAC,MAAM;IACjD,CAAC,wBAAS,CAAC,IAAI,CAAC,EAAkB,wBAAS,CAAC,MAAM;IAClD,CAAC,gCAAa,CAAC,IAAI,CAAC,EAAc,gCAAa,CAAC,MAAM;IACtD,CAAC,WAAI,CAAC,IAAI,CAAC,EAAuB,WAAI,CAAC,MAAM;IAC7C,CAAC,mBAAQ,CAAC,IAAI,CAAC,EAAmB,mBAAQ,CAAC,MAAM;IACjD,CAAC,YAAG,CAAC,IAAI,CAAC,EAAwB,YAAG,CAAC,MAAM;IAC5C,CAAC,kDAAsB,CAAC,IAAI,CAAC,EAAK,kDAAsB,CAAC,MAAM;IAC/D,CAAC,kCAAc,CAAC,IAAI,CAAC,EAAa,kCAAc,CAAC,MAAM;IACvD,CAAC,0BAAU,CAAC,IAAI,CAAC,EAAiB,0BAAU,CAAC,MAAM;IACnD,CAAC,wBAAS,CAAC,IAAI,CAAC,EAAkB,wBAAS,CAAC,MAAM;IAClD,CAAC,4BAAW,CAAC,IAAI,CAAC,EAAgB,4BAAW,CAAC,MAAM;IACpD,CAAC,gCAAa,CAAC,IAAI,CAAC,EAAc,gCAAa,CAAC,MAAM;IACtD,CAAC,0BAAU,CAAC,IAAI,CAAC,EAAiB,0BAAU,CAAC,MAAM;IACnD,CAAC,8BAAY,CAAC,IAAI,CAAC,EAAe,8BAAY,CAAC,MAAM;IACrD,CAAC,oCAAe,CAAC,IAAI,CAAC,EAAY,oCAAe,CAAC,MAAM;IACxD,CAAC,kBAAM,CAAC,IAAI,CAAC,EAAqB,kBAAM,CAAC,MAAM;IAC/C,CAAC,kCAAc,CAAC,IAAI,CAAC,EAAa,kCAAc,CAAC,MAAM;IACvD,CAAC,4BAAW,CAAC,IAAI,CAAC,EAAgB,4BAAW,CAAC,MAAM;IACpD,CAAC,oBAAO,CAAC,IAAI,CAAC,EAAoB,oBAAO,CAAC,MAAM;IAChD,CAAC,kBAAM,CAAC,IAAI,CAAC,EAAqB,kBAAM,CAAC,MAAM;IAC/C,CAAC,wCAAiB,CAAC,IAAI,CAAC,EAAU,wCAAiB,CAAC,MAAM;IAC1D,CAAC,0BAAU,CAAC,IAAI,CAAC,EAAiB,0BAAU,CAAC,MAAM;IACnD,CAAC,eAAM,CAAC,IAAI,CAAC,EAAqB,eAAM,CAAC,MAAM;IAC/C,CAAC,kCAAc,CAAC,IAAI,CAAC,EAAa,kCAAc,CAAC,MAAM;CAC1D,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/service/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,+DAAyD;AACzD,6CAAuC;AACvC,2CAAqC;AACrC,iDAA2C;AAC3C,yDAAmD;AACnD,+CAAyC;AACzC,iCAA8B;AAC9B,yCAAsC;AACtC,qCAA+B;AAC/B,2EAAqE;AACrE,2DAAqD;AACrD,mDAA6C;AAC7C,iDAA2C;AAC3C,qDAA+C;AAC/C,yDAAmD;AACnD,mDAA6C;AAC7C,uDAAiD;AAEjD,6DAAuD;AACvD,2CAAqC;AACrC,2DAAqD;AACrD,qDAA+C;AAC/C,6CAAuC;AACvC,mDAAgD;AAChD,2CAAqC;AACrC,iEAA2D;AAC3D,mDAA6C;AAC7C,qCAAkC;AAClC,2DAAqD;AACrD,2DAAoD;AAEpD,mDAAgC;AAEnB,QAAA,QAAQ,GAAwC;IACzD,CAAC,sCAAgB,CAAC,IAAI,CAAC,EAAW,sCAAgB,CAAC,MAAM;IACzD,CAAC,oBAAO,CAAC,IAAI,CAAC,EAAoB,oBAAO,CAAC,MAAM;IAChD,CAAC,kBAAM,CAAC,IAAI,CAAC,EAAqB,kBAAM,CAAC,MAAM;IAC/C,CAAC,sBAAQ,CAAC,IAAI,CAAC,EAAmB,sBAAQ,CAAC,MAAM;IACjD,CAAC,wBAAS,CAAC,IAAI,CAAC,EAAkB,wBAAS,CAAC,MAAM;IAClD,CAAC,gCAAa,CAAC,IAAI,CAAC,EAAc,gCAAa,CAAC,MAAM;IACtD,CAAC,WAAI,CAAC,IAAI,CAAC,EAAuB,WAAI,CAAC,MAAM;IAC7C,CAAC,mBAAQ,CAAC,IAAI,CAAC,EAAmB,mBAAQ,CAAC,MAAM;IACjD,CAAC,YAAG,CAAC,IAAI,CAAC,EAAwB,YAAG,CAAC,MAAM;IAC5C,CAAC,kDAAsB,CAAC,IAAI,CAAC,EAAK,kDAAsB,CAAC,MAAM;IAC/D,CAAC,kCAAc,CAAC,IAAI,CAAC,EAAa,kCAAc,CAAC,MAAM;IACvD,CAAC,0BAAU,CAAC,IAAI,CAAC,EAAiB,0BAAU,CAAC,MAAM;IACnD,CAAC,wBAAS,CAAC,IAAI,CAAC,EAAkB,wBAAS,CAAC,MAAM;IAClD,CAAC,4BAAW,CAAC,IAAI,CAAC,EAAgB,4BAAW,CAAC,MAAM;IACpD,CAAC,gCAAa,CAAC,IAAI,CAAC,EAAc,gCAAa,CAAC,MAAM;IACtD,CAAC,0BAAU,CAAC,IAAI,CAAC,EAAiB,0BAAU,CAAC,MAAM;IACnD,CAAC,8BAAY,CAAC,IAAI,CAAC,EAAe,8BAAY,CAAC,MAAM;IACrD,CAAC,oCAAe,CAAC,IAAI,CAAC,EAAY,oCAAe,CAAC,MAAM;IACxD,CAAC,kBAAM,CAAC,IAAI,CAAC,EAAqB,kBAAM,CAAC,MAAM;IAC/C,CAAC,kCAAc,CAAC,IAAI,CAAC,EAAa,kCAAc,CAAC,MAAM;IACvD,CAAC,4BAAW,CAAC,IAAI,CAAC,EAAgB,4BAAW,CAAC,MAAM;IACpD,CAAC,oBAAO,CAAC,IAAI,CAAC,EAAoB,oBAAO,CAAC,MAAM;IAChD,CAAC,kCAAc,CAAC,IAAI,CAAC,EAAa,kCAAc,CAAC,MAAM;IACvD,CAAC,6BAAa,CAAC,IAAI,CAAC,EAAc,6BAAa,CAAC,MAAM;IACtD,CAAC,kBAAM,CAAC,IAAI,CAAC,EAAqB,kBAAM,CAAC,MAAM;IAC/C,CAAC,wCAAiB,CAAC,IAAI,CAAC,EAAU,wCAAiB,CAAC,MAAM;IAC1D,CAAC,0BAAU,CAAC,IAAI,CAAC,EAAiB,0BAAU,CAAC,MAAM;IACnD,CAAC,eAAM,CAAC,IAAI,CAAC,EAAqB,eAAM,CAAC,MAAM;IAC/C,CAAC,kCAAc,CAAC,IAAI,CAAC,EAAa,kCAAc,CAAC,MAAM;CAC1D,CAAA"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@uboness/homebridge-mqtt",
3
- "version": "0.0.2",
3
+ "version": "0.0.4",
4
4
  "author": "uboness",
5
5
  "publishConfig": {
6
6
  "@uboness:registry": "https://registry.npmjs.org "