@marcel2215/homebridge-supla-plugin 2.1.9 → 2.1.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 (84) hide show
  1. package/config.schema.json +26 -0
  2. package/dist/Accesories/ActionTriggerAccessory.d.ts.map +1 -1
  3. package/dist/Accesories/ActionTriggerAccessory.js +2 -2
  4. package/dist/Accesories/ActionTriggerAccessory.js.map +1 -1
  5. package/dist/Accesories/AirQualityAccessory.d.ts.map +1 -1
  6. package/dist/Accesories/AirQualityAccessory.js +2 -2
  7. package/dist/Accesories/AirQualityAccessory.js.map +1 -1
  8. package/dist/Accesories/ContactSensorAccessory.d.ts.map +1 -1
  9. package/dist/Accesories/ContactSensorAccessory.js +6 -6
  10. package/dist/Accesories/ContactSensorAccessory.js.map +1 -1
  11. package/dist/Accesories/DimmerAccessory.d.ts +2 -0
  12. package/dist/Accesories/DimmerAccessory.d.ts.map +1 -1
  13. package/dist/Accesories/DimmerAccessory.js +17 -7
  14. package/dist/Accesories/DimmerAccessory.js.map +1 -1
  15. package/dist/Accesories/DimmerRgbLightAccessory.d.ts.map +1 -1
  16. package/dist/Accesories/DimmerRgbLightAccessory.js +11 -11
  17. package/dist/Accesories/DimmerRgbLightAccessory.js.map +1 -1
  18. package/dist/Accesories/DoorAccessory.d.ts.map +1 -1
  19. package/dist/Accesories/DoorAccessory.js +4 -4
  20. package/dist/Accesories/DoorAccessory.js.map +1 -1
  21. package/dist/Accesories/ElectricityMeterAccessory.d.ts.map +1 -1
  22. package/dist/Accesories/ElectricityMeterAccessory.js +2 -2
  23. package/dist/Accesories/ElectricityMeterAccessory.js.map +1 -1
  24. package/dist/Accesories/FacadeBlindAccessory.d.ts +15 -0
  25. package/dist/Accesories/FacadeBlindAccessory.d.ts.map +1 -1
  26. package/dist/Accesories/FacadeBlindAccessory.js +229 -46
  27. package/dist/Accesories/FacadeBlindAccessory.js.map +1 -1
  28. package/dist/Accesories/GarageDoorOpenerAccesory.d.ts +2 -0
  29. package/dist/Accesories/GarageDoorOpenerAccesory.d.ts.map +1 -1
  30. package/dist/Accesories/GarageDoorOpenerAccesory.js +15 -5
  31. package/dist/Accesories/GarageDoorOpenerAccesory.js.map +1 -1
  32. package/dist/Accesories/GateAccessory.d.ts +19 -3
  33. package/dist/Accesories/GateAccessory.d.ts.map +1 -1
  34. package/dist/Accesories/GateAccessory.js +177 -28
  35. package/dist/Accesories/GateAccessory.js.map +1 -1
  36. package/dist/Accesories/GateLockAccessory.d.ts +11 -0
  37. package/dist/Accesories/GateLockAccessory.d.ts.map +1 -1
  38. package/dist/Accesories/GateLockAccessory.js +132 -19
  39. package/dist/Accesories/GateLockAccessory.js.map +1 -1
  40. package/dist/Accesories/LeakSensorAccessory.d.ts.map +1 -1
  41. package/dist/Accesories/LeakSensorAccessory.js +2 -2
  42. package/dist/Accesories/LeakSensorAccessory.js.map +1 -1
  43. package/dist/Accesories/LightBulbAccesory.d.ts +2 -0
  44. package/dist/Accesories/LightBulbAccesory.d.ts.map +1 -1
  45. package/dist/Accesories/LightBulbAccesory.js +15 -5
  46. package/dist/Accesories/LightBulbAccesory.js.map +1 -1
  47. package/dist/Accesories/PressureAccessory.d.ts.map +1 -1
  48. package/dist/Accesories/PressureAccessory.js +2 -2
  49. package/dist/Accesories/PressureAccessory.js.map +1 -1
  50. package/dist/Accesories/RGBLightBulbAccesory.d.ts.map +1 -1
  51. package/dist/Accesories/RGBLightBulbAccesory.js +8 -8
  52. package/dist/Accesories/RGBLightBulbAccesory.js.map +1 -1
  53. package/dist/Accesories/RollerShutterAccessory.d.ts +10 -0
  54. package/dist/Accesories/RollerShutterAccessory.d.ts.map +1 -1
  55. package/dist/Accesories/RollerShutterAccessory.js +187 -26
  56. package/dist/Accesories/RollerShutterAccessory.js.map +1 -1
  57. package/dist/Accesories/SwitchAccessory.d.ts +2 -0
  58. package/dist/Accesories/SwitchAccessory.d.ts.map +1 -1
  59. package/dist/Accesories/SwitchAccessory.js +15 -5
  60. package/dist/Accesories/SwitchAccessory.js.map +1 -1
  61. package/dist/Accesories/TemperatureAccessory.d.ts.map +1 -1
  62. package/dist/Accesories/TemperatureAccessory.js +2 -2
  63. package/dist/Accesories/TemperatureAccessory.js.map +1 -1
  64. package/dist/Accesories/TemperatureHumidityAccessory.d.ts.map +1 -1
  65. package/dist/Accesories/TemperatureHumidityAccessory.js +3 -3
  66. package/dist/Accesories/TemperatureHumidityAccessory.js.map +1 -1
  67. package/dist/Accesories/ThermostatAccessory.d.ts.map +1 -1
  68. package/dist/Accesories/ThermostatAccessory.js +10 -10
  69. package/dist/Accesories/ThermostatAccessory.js.map +1 -1
  70. package/dist/Accesories/ValveAccessory.d.ts.map +1 -1
  71. package/dist/Accesories/ValveAccessory.js +4 -4
  72. package/dist/Accesories/ValveAccessory.js.map +1 -1
  73. package/dist/Accesories/WicketAccesory.d.ts.map +1 -1
  74. package/dist/Accesories/WicketAccesory.js +2 -2
  75. package/dist/Accesories/WicketAccesory.js.map +1 -1
  76. package/dist/Heplers/SuplaMqttClient.d.ts +4 -1
  77. package/dist/Heplers/SuplaMqttClient.d.ts.map +1 -1
  78. package/dist/Heplers/SuplaMqttClient.js +74 -39
  79. package/dist/Heplers/SuplaMqttClient.js.map +1 -1
  80. package/dist/platform.d.ts +33 -1
  81. package/dist/platform.d.ts.map +1 -1
  82. package/dist/platform.js +433 -37
  83. package/dist/platform.js.map +1 -1
  84. package/package.json +1 -1
@@ -18,27 +18,31 @@ class LightAccesory {
18
18
  this.service.getCharacteristic(this.platform.Characteristic.On)
19
19
  .onGet(this.handleOnGet.bind(this))
20
20
  .onSet(this.handleOnSet.bind(this));
21
+ this.platform.registerOwnerCleanup(this.accessory.UUID, () => {
22
+ this.clearUpdateTimer();
23
+ });
21
24
  this.platform.registerMqttHandler(`${this.context.topic}/state/on`, (message) => {
22
25
  this.platform.log.info(`Light ${this.context.channelCaption} state changed to ${message.toString()}`);
23
26
  this.state = this.platform.parseBoolean(message.toString());
24
27
  this.service.updateCharacteristic(this.platform.Characteristic.On, this.state);
25
- });
28
+ }, this.accessory.UUID);
26
29
  this.platform.registerMqttHandler(`${this.context.topic}/state/connected`, (message) => {
27
30
  this.connected = this.platform.parseBoolean(message.toString());
28
31
  this.updateFault();
29
- });
32
+ }, this.accessory.UUID);
30
33
  this.platform.registerMqttHandler(`${this.context.topic}/state/overcurrent_relay_off`, (message) => {
31
34
  this.overcurrent = this.platform.parseBoolean(message.toString());
32
35
  this.updateFault();
33
- });
36
+ }, this.accessory.UUID);
34
37
  }
35
38
  async handleOnGet() {
36
39
  return this.state;
37
40
  }
38
41
  async handleOnSet(value) {
39
42
  this.platform.log.debug(`Publishing ${this.context.topic}/set/on = ${value.toString()}`);
40
- this.platform.MqttClient.client.publish(`${this.context.topic}/set/on`, value.toString());
41
- setTimeout(() => {
43
+ this.platform.publishCommand(`${this.context.topic}/set/on`, value.toString());
44
+ this.clearUpdateTimer();
45
+ this.updateTimer = setTimeout(() => {
42
46
  this.service.updateCharacteristic(this.platform.Characteristic.On, this.state);
43
47
  }, 300);
44
48
  }
@@ -46,6 +50,12 @@ class LightAccesory {
46
50
  const fault = this.connected && !this.overcurrent ? 0 : 1;
47
51
  this.service.updateCharacteristic(this.platform.Characteristic.StatusFault, fault);
48
52
  }
53
+ clearUpdateTimer() {
54
+ if (this.updateTimer) {
55
+ clearTimeout(this.updateTimer);
56
+ this.updateTimer = undefined;
57
+ }
58
+ }
49
59
  }
50
60
  exports.LightAccesory = LightAccesory;
51
61
  //# sourceMappingURL=LightBulbAccesory.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"LightBulbAccesory.js","sourceRoot":"","sources":["../../src/Accesories/LightBulbAccesory.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"LightBulbAccesory.js","sourceRoot":"","sources":["../../src/Accesories/LightBulbAccesory.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"PressureAccessory.d.ts","sourceRoot":"","sources":["../../src/Accesories/PressureAccessory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAW,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAC7E,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,mBAAmB,EAAE,MAAM,gCAAgC,CAAC;AAErE,qBAAa,iBAAiB;IAM1B,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,SAAS;IAC1B,OAAO,CAAC,QAAQ,CAAC,OAAO;IAP1B,OAAO,CAAC,OAAO,CAAU;IACzB,OAAO,CAAC,KAAK,CAAU;IACvB,OAAO,CAAC,SAAS,CAAQ;gBAGN,QAAQ,EAAE,aAAa,EACvB,SAAS,EAAE,iBAAiB,EAC5B,OAAO,EAAE,mBAAmB;IAuCzC,cAAc,IAAI,OAAO,CAAC,mBAAmB,CAAC;IAIpD,OAAO,CAAC,KAAK;CAGd"}
1
+ {"version":3,"file":"PressureAccessory.d.ts","sourceRoot":"","sources":["../../src/Accesories/PressureAccessory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAW,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAC7E,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,mBAAmB,EAAE,MAAM,gCAAgC,CAAC;AAErE,qBAAa,iBAAiB;IAM1B,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,SAAS;IAC1B,OAAO,CAAC,QAAQ,CAAC,OAAO;IAP1B,OAAO,CAAC,OAAO,CAAU;IACzB,OAAO,CAAC,KAAK,CAAU;IACvB,OAAO,CAAC,SAAS,CAAQ;gBAGN,QAAQ,EAAE,aAAa,EACvB,SAAS,EAAE,iBAAiB,EAC5B,OAAO,EAAE,mBAAmB;IAyCzC,cAAc,IAAI,OAAO,CAAC,mBAAmB,CAAC;IAIpD,OAAO,CAAC,KAAK;CAGd"}
@@ -22,11 +22,11 @@ class PressureAccessory {
22
22
  this.value = this.clamp(value, 0.0001, 100000);
23
23
  this.service.updateCharacteristic(this.platform.Characteristic.CurrentAmbientLightLevel, this.value);
24
24
  }
25
- });
25
+ }, this.accessory.UUID);
26
26
  this.platform.registerMqttHandler(`${this.context.topic}/state/connected`, (message) => {
27
27
  this.connected = this.platform.parseBoolean(message.toString());
28
28
  this.service.updateCharacteristic(this.platform.Characteristic.StatusFault, this.connected ? 0 : 1);
29
- });
29
+ }, this.accessory.UUID);
30
30
  }
31
31
  async handleValueGet() {
32
32
  return this.value;
@@ -1 +1 @@
1
- {"version":3,"file":"PressureAccessory.js","sourceRoot":"","sources":["../../src/Accesories/PressureAccessory.ts"],"names":[],"mappings":";;;AAIA,MAAa,iBAAiB;IAK5B,YACmB,QAAuB,EACvB,SAA4B,EAC5B,OAA4B;QAF5B,aAAQ,GAAR,QAAQ,CAAe;QACvB,cAAS,GAAT,SAAS,CAAmB;QAC5B,YAAO,GAAP,OAAO,CAAqB;QANvC,UAAK,GAAG,MAAM,CAAC;QACf,cAAS,GAAG,IAAI,CAAC;QAOvB,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,oBAAoB,CAAE;aACnE,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,YAAY,EAAE,OAAO,CAAC;aACrE,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,KAAK,EAAE,gBAAgB,CAAC,CAAC;QAE3E,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,WAAW,CAAC;eACtE,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;QAElE,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,IAAI,EAAE,SAAS,CAAC,WAAW,CAAC,CAAC;QAEzF,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,wBAAwB,CAAC;aAClF,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QAEzC,IAAI,CAAC,QAAQ,CAAC,mBAAmB,CAC/B,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,cAAc,EACnC,CAAC,OAAO,EAAE,EAAE;YACV,MAAM,KAAK,GAAG,UAAU,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC;YAC7C,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE;gBACxB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;gBAC/C,IAAI,CAAC,OAAO,CAAC,oBAAoB,CAC/B,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,wBAAwB,EACrD,IAAI,CAAC,KAAK,CACX,CAAC;aACH;QACH,CAAC,CACF,CAAC;QACF,IAAI,CAAC,QAAQ,CAAC,mBAAmB,CAC/B,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,kBAAkB,EACvC,CAAC,OAAO,EAAE,EAAE;YACV,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC;YAChE,IAAI,CAAC,OAAO,CAAC,oBAAoB,CAC/B,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,WAAW,EACxC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CACvB,CAAC;QACJ,CAAC,CACF,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,cAAc;QAClB,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;IAEO,KAAK,CAAC,KAAa,EAAE,GAAW,EAAE,GAAW;QACnD,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC;IAC7C,CAAC;CACF;AAtDD,8CAsDC"}
1
+ {"version":3,"file":"PressureAccessory.js","sourceRoot":"","sources":["../../src/Accesories/PressureAccessory.ts"],"names":[],"mappings":";;;AAIA,MAAa,iBAAiB;IAK5B,YACmB,QAAuB,EACvB,SAA4B,EAC5B,OAA4B;QAF5B,aAAQ,GAAR,QAAQ,CAAe;QACvB,cAAS,GAAT,SAAS,CAAmB;QAC5B,YAAO,GAAP,OAAO,CAAqB;QANvC,UAAK,GAAG,MAAM,CAAC;QACf,cAAS,GAAG,IAAI,CAAC;QAOvB,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,oBAAoB,CAAE;aACnE,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,YAAY,EAAE,OAAO,CAAC;aACrE,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,KAAK,EAAE,gBAAgB,CAAC,CAAC;QAE3E,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,WAAW,CAAC;eACtE,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;QAElE,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,IAAI,EAAE,SAAS,CAAC,WAAW,CAAC,CAAC;QAEzF,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,wBAAwB,CAAC;aAClF,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QAEzC,IAAI,CAAC,QAAQ,CAAC,mBAAmB,CAC/B,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,cAAc,EACnC,CAAC,OAAO,EAAE,EAAE;YACV,MAAM,KAAK,GAAG,UAAU,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC;YAC7C,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE;gBACxB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;gBAC/C,IAAI,CAAC,OAAO,CAAC,oBAAoB,CAC/B,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,wBAAwB,EACrD,IAAI,CAAC,KAAK,CACX,CAAC;aACH;QACH,CAAC,EACD,IAAI,CAAC,SAAS,CAAC,IAAI,CACpB,CAAC;QACF,IAAI,CAAC,QAAQ,CAAC,mBAAmB,CAC/B,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,kBAAkB,EACvC,CAAC,OAAO,EAAE,EAAE;YACV,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC;YAChE,IAAI,CAAC,OAAO,CAAC,oBAAoB,CAC/B,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,WAAW,EACxC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CACvB,CAAC;QACJ,CAAC,EACD,IAAI,CAAC,SAAS,CAAC,IAAI,CACpB,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,cAAc;QAClB,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;IAEO,KAAK,CAAC,KAAa,EAAE,GAAW,EAAE,GAAW;QACnD,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC;IAC7C,CAAC;CACF;AAxDD,8CAwDC"}
@@ -1 +1 @@
1
- {"version":3,"file":"RGBLightBulbAccesory.d.ts","sourceRoot":"","sources":["../../src/Accesories/RGBLightBulbAccesory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAW,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAC7E,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAE5C,OAAO,EAAC,mBAAmB,EAAC,MAAM,gCAAgC,CAAC;AAEnE,qBAAa,gBAAgB;IASzB,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,SAAS;IAC1B,OAAO,CAAC,QAAQ,CAAC,OAAO;IAV1B,OAAO,CAAC,OAAO,CAAU;IACzB,OAAO,CAAC,KAAK,CAAS;IACtB,OAAO,CAAC,GAAG,CAAsB;IACjC,OAAO,CAAC,GAAG,CAAsB;IACjC,OAAO,CAAC,SAAS,CAAQ;gBAIN,QAAQ,EAAE,aAAa,EACvB,SAAS,EAAE,iBAAiB,EAC5B,OAAO,EAAE,mBAAmB;IA6DzC,WAAW,IAAI,OAAO,CAAC,mBAAmB,CAAC;IAI3C,WAAW,CAAC,KAAK,EAAE,mBAAmB;IAStC,mBAAmB,IAAI,OAAO,CAAC,mBAAmB,CAAC;IAInD,mBAAmB,CAAC,KAAK,EAAE,mBAAmB;IAS9C,YAAY,IAAI,OAAO,CAAC,mBAAmB,CAAC;IAI5C,YAAY,CAAC,KAAK,EAAE,mBAAmB;IAWvC,mBAAmB,IAAI,OAAO,CAAC,mBAAmB,CAAC;IAInD,mBAAmB,CAAC,KAAK,EAAE,mBAAmB;IAWpD,OAAO,CAAC,WAAW;CAKpB"}
1
+ {"version":3,"file":"RGBLightBulbAccesory.d.ts","sourceRoot":"","sources":["../../src/Accesories/RGBLightBulbAccesory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAW,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAC7E,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAE5C,OAAO,EAAC,mBAAmB,EAAC,MAAM,gCAAgC,CAAC;AAEnE,qBAAa,gBAAgB;IASzB,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,SAAS;IAC1B,OAAO,CAAC,QAAQ,CAAC,OAAO;IAV1B,OAAO,CAAC,OAAO,CAAU;IACzB,OAAO,CAAC,KAAK,CAAS;IACtB,OAAO,CAAC,GAAG,CAAsB;IACjC,OAAO,CAAC,GAAG,CAAsB;IACjC,OAAO,CAAC,SAAS,CAAQ;gBAIN,QAAQ,EAAE,aAAa,EACvB,SAAS,EAAE,iBAAiB,EAC5B,OAAO,EAAE,mBAAmB;IAiEzC,WAAW,IAAI,OAAO,CAAC,mBAAmB,CAAC;IAI3C,WAAW,CAAC,KAAK,EAAE,mBAAmB;IAStC,mBAAmB,IAAI,OAAO,CAAC,mBAAmB,CAAC;IAInD,mBAAmB,CAAC,KAAK,EAAE,mBAAmB;IAS9C,YAAY,IAAI,OAAO,CAAC,mBAAmB,CAAC;IAI5C,YAAY,CAAC,KAAK,EAAE,mBAAmB;IAWvC,mBAAmB,IAAI,OAAO,CAAC,mBAAmB,CAAC;IAInD,mBAAmB,CAAC,KAAK,EAAE,mBAAmB;IAWpD,OAAO,CAAC,WAAW;CAKpB"}
@@ -32,34 +32,34 @@ class RGBLightAccesory {
32
32
  this.platform.registerMqttHandler(`${this.context.topic}/state/on`, (message) => {
33
33
  this.state = this.platform.parseBoolean(message.toString());
34
34
  this.service.updateCharacteristic(this.platform.Characteristic.On, this.state);
35
- });
35
+ }, this.accessory.UUID);
36
36
  this.platform.registerMqttHandler(`${this.context.topic}/state/color`, (message) => {
37
37
  this.rgb = (0, ColorConverters_1.HexToRGB)(message.toString());
38
38
  this.hsv = (0, ColorConverters_1.RGBtoHSV)(this.rgb.r, this.rgb.g, this.rgb.b);
39
39
  this.updateColor();
40
- });
40
+ }, this.accessory.UUID);
41
41
  this.platform.registerMqttHandler(`${this.context.topic}/state/color_brightness`, (message) => {
42
42
  this.hsv.v = parseInt(message.toString(), 10);
43
43
  this.updateColor();
44
- });
44
+ }, this.accessory.UUID);
45
45
  this.platform.registerMqttHandler(`${this.context.topic}/state/connected`, (message) => {
46
46
  this.connected = this.platform.parseBoolean(message.toString());
47
47
  this.service.updateCharacteristic(this.platform.Characteristic.StatusFault, this.connected ? 0 : 1);
48
- });
48
+ }, this.accessory.UUID);
49
49
  }
50
50
  async handleOnGet() {
51
51
  return this.state;
52
52
  }
53
53
  async handleOnSet(value) {
54
54
  this.platform.log.debug(`Publishing ${this.context.topic}/set/on = ${value.toString()}`);
55
- this.platform.MqttClient.client.publish(`${this.context.topic}/set/on`, value.toString());
55
+ this.platform.publishCommand(`${this.context.topic}/set/on`, value.toString());
56
56
  }
57
57
  async handleBrightnessGet() {
58
58
  return this.hsv.v;
59
59
  }
60
60
  async handleBrightnessSet(value) {
61
61
  this.platform.log.debug(`Publishing ${this.context.topic}/set/color_brightness = ${value.toString()}`);
62
- this.platform.MqttClient.client.publish(`${this.context.topic}/set/color_brightness`, value.toString());
62
+ this.platform.publishCommand(`${this.context.topic}/set/color_brightness`, value.toString());
63
63
  }
64
64
  async handleHueGet() {
65
65
  return this.hsv.h;
@@ -68,7 +68,7 @@ class RGBLightAccesory {
68
68
  this.hsv.h = value;
69
69
  this.rgb = (0, ColorConverters_1.HSVtoRGB)(this.hsv.h, this.hsv.s, this.hsv.v);
70
70
  this.platform.log.debug(`Publishing ${this.context.topic}/set/color = ${(0, ColorConverters_1.RGBToHex)(this.rgb.r, this.rgb.g, this.rgb.b)}`);
71
- this.platform.MqttClient.client.publish(`${this.context.topic}/set/color`, (0, ColorConverters_1.RGBToHex)(this.rgb.r, this.rgb.g, this.rgb.b));
71
+ this.platform.publishCommand(`${this.context.topic}/set/color`, (0, ColorConverters_1.RGBToHex)(this.rgb.r, this.rgb.g, this.rgb.b));
72
72
  }
73
73
  async handleSaturationGet() {
74
74
  return this.hsv.s;
@@ -77,7 +77,7 @@ class RGBLightAccesory {
77
77
  this.hsv.s = value;
78
78
  this.rgb = (0, ColorConverters_1.HSVtoRGB)(this.hsv.h, this.hsv.s, this.hsv.v);
79
79
  this.platform.log.debug(`Publishing ${this.context.topic}/set/color = ${(0, ColorConverters_1.RGBToHex)(this.rgb.r, this.rgb.g, this.rgb.b)}`);
80
- this.platform.MqttClient.client.publish(`${this.context.topic}/set/color`, (0, ColorConverters_1.RGBToHex)(this.rgb.r, this.rgb.g, this.rgb.b));
80
+ this.platform.publishCommand(`${this.context.topic}/set/color`, (0, ColorConverters_1.RGBToHex)(this.rgb.r, this.rgb.g, this.rgb.b));
81
81
  }
82
82
  updateColor() {
83
83
  this.service.updateCharacteristic(this.platform.Characteristic.Hue, this.hsv.h);
@@ -1 +1 @@
1
- {"version":3,"file":"RGBLightBulbAccesory.js","sourceRoot":"","sources":["../../src/Accesories/RGBLightBulbAccesory.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"RGBLightBulbAccesory.js","sourceRoot":"","sources":["../../src/Accesories/RGBLightBulbAccesory.ts"],"names":[],"mappings":";;;AAEA,gEAAkF;AAGlF,MAAa,gBAAgB;IAQ3B,YACmB,QAAuB,EACvB,SAA4B,EAC5B,OAA4B;QAF5B,aAAQ,GAAR,QAAQ,CAAe;QACvB,cAAS,GAAT,SAAS,CAAmB;QAC5B,YAAO,GAAP,OAAO,CAAqB;QATvC,UAAK,GAAG,KAAK,CAAC;QACd,QAAG,GAAG,EAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAC,CAAC;QACzB,QAAG,GAAG,EAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAC,CAAC;QACzB,cAAS,GAAG,IAAI,CAAC;QAQvB,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,oBAAoB,CAAE;aACnE,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,YAAY,EAAE,OAAO,CAAC;aACrE,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,KAAK,EAAE,oBAAoB,CAAC,CAAC;QAE/E,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,SAAS,CAAC;eACpE,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QAEhE,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,IAAI,EAAE,SAAS,CAAC,WAAW,CAAC,CAAC;QAEzF,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC;aAC5D,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;aAClC,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QAEtC,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,UAAU,CAAC;aACpE,KAAK,CAAC,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;aAC1C,KAAK,CAAC,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QAE9C,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,GAAG,CAAC;aAC7D,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;aACnC,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QAEvC,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,UAAU,CAAC;aACpE,KAAK,CAAC,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;aAC1C,KAAK,CAAC,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QAE9C,IAAI,CAAC,QAAQ,CAAC,mBAAmB,CAC/B,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,WAAW,EAChC,CAAC,OAAO,EAAE,EAAE;YACV,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC;YAC5D,IAAI,CAAC,OAAO,CAAC,oBAAoB,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;QACjF,CAAC,EACD,IAAI,CAAC,SAAS,CAAC,IAAI,CACpB,CAAC;QACF,IAAI,CAAC,QAAQ,CAAC,mBAAmB,CAC/B,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,cAAc,EACnC,CAAC,OAAO,EAAE,EAAE;YACV,IAAI,CAAC,GAAG,GAAG,IAAA,0BAAQ,EAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC;YACxC,IAAI,CAAC,GAAG,GAAG,IAAA,0BAAQ,EAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YACxD,IAAI,CAAC,WAAW,EAAE,CAAC;QACrB,CAAC,EACD,IAAI,CAAC,SAAS,CAAC,IAAI,CACpB,CAAC;QACF,IAAI,CAAC,QAAQ,CAAC,mBAAmB,CAC/B,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,yBAAyB,EAC9C,CAAC,OAAO,EAAE,EAAE;YACV,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,QAAQ,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC;YAC9C,IAAI,CAAC,WAAW,EAAE,CAAC;QACrB,CAAC,EACD,IAAI,CAAC,SAAS,CAAC,IAAI,CACpB,CAAC;QACF,IAAI,CAAC,QAAQ,CAAC,mBAAmB,CAC/B,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,kBAAkB,EACvC,CAAC,OAAO,EAAE,EAAE;YACV,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC;YAChE,IAAI,CAAC,OAAO,CAAC,oBAAoB,CAC/B,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,WAAW,EACxC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CACvB,CAAC;QACJ,CAAC,EACD,IAAI,CAAC,SAAS,CAAC,IAAI,CACpB,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,WAAW;QACf,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,KAA0B;QAC1C,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CACrB,cAAc,IAAI,CAAC,OAAO,CAAC,KAAK,aAAa,KAAK,CAAC,QAAQ,EAAE,EAAE,CAChE,CAAC;QACF,IAAI,CAAC,QAAQ,CAAC,cAAc,CAC1B,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,SAAS,EAC9B,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC;IACtB,CAAC;IAED,KAAK,CAAC,mBAAmB;QACvB,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;IACpB,CAAC;IAED,KAAK,CAAC,mBAAmB,CAAC,KAA0B;QAClD,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CACrB,cAAc,IAAI,CAAC,OAAO,CAAC,KAAK,2BAA2B,KAAK,CAAC,QAAQ,EAAE,EAAE,CAC9E,CAAC;QACF,IAAI,CAAC,QAAQ,CAAC,cAAc,CAC1B,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,uBAAuB,EAC5C,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC;IACtB,CAAC;IAED,KAAK,CAAC,YAAY;QAChB,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;IACpB,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,KAA0B;QAC3C,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,KAAe,CAAC;QAC7B,IAAI,CAAC,GAAG,GAAG,IAAA,0BAAQ,EAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QACxD,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CACrB,cAAc,IAAI,CAAC,OAAO,CAAC,KAAK,gBAAgB,IAAA,0BAAQ,EAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAC/F,CAAC;QACF,IAAI,CAAC,QAAQ,CAAC,cAAc,CAC1B,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,YAAY,EACjC,IAAA,0BAAQ,EAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IAClD,CAAC;IAED,KAAK,CAAC,mBAAmB;QACvB,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;IACpB,CAAC;IAED,KAAK,CAAC,mBAAmB,CAAC,KAA0B;QAClD,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,KAAe,CAAC;QAC7B,IAAI,CAAC,GAAG,GAAG,IAAA,0BAAQ,EAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QACxD,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CACrB,cAAc,IAAI,CAAC,OAAO,CAAC,KAAK,gBAAgB,IAAA,0BAAQ,EAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAC/F,CAAC;QACF,IAAI,CAAC,QAAQ,CAAC,cAAc,CAC1B,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,YAAY,EACjC,IAAA,0BAAQ,EAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IAClD,CAAC;IAEO,WAAW;QACjB,IAAI,CAAC,OAAO,CAAC,oBAAoB,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QAChF,IAAI,CAAC,OAAO,CAAC,oBAAoB,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,UAAU,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QACvF,IAAI,CAAC,OAAO,CAAC,oBAAoB,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,UAAU,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IACzF,CAAC;CACF;AAzID,4CAyIC"}
@@ -16,10 +16,14 @@ export declare class RollerShutterAccessory {
16
16
  private pendingTargetPosition?;
17
17
  private pendingTargetExpiresAt;
18
18
  private pendingTargetTimer?;
19
+ private motionStopTimer?;
20
+ private lastRawPosition?;
21
+ private jammed;
19
22
  constructor(platform: SuplaPlatform, accessory: PlatformAccessory, context: SuplaChannelContext);
20
23
  handleCurrentPositionGet(): Promise<CharacteristicValue>;
21
24
  handleTargetPositionGet(): Promise<CharacteristicValue>;
22
25
  handleTargetPositionSet(value: CharacteristicValue): Promise<void>;
26
+ handleHoldPositionSet(value: CharacteristicValue): Promise<void>;
23
27
  private applyShutUpdate;
24
28
  private updateConnection;
25
29
  private parseLegacyPayload;
@@ -30,7 +34,13 @@ export declare class RollerShutterAccessory {
30
34
  private getLegacyChannelId;
31
35
  private schedulePendingTimeout;
32
36
  private clearPendingTarget;
37
+ private clearStopTimer;
38
+ private scheduleMotionStopTimer;
39
+ private clearMotionStopTimer;
40
+ private disposeTimers;
41
+ private setJammed;
33
42
  handlePositionStateGet(): Promise<CharacteristicValue>;
43
+ private assertPositionAvailable;
34
44
  private toPosition;
35
45
  private toShut;
36
46
  private clamp;
@@ -1 +1 @@
1
- {"version":3,"file":"RollerShutterAccessory.d.ts","sourceRoot":"","sources":["../../src/Accesories/RollerShutterAccessory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAW,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAC7E,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,mBAAmB,EAAE,MAAM,gCAAgC,CAAC;AAErE,qBAAa,sBAAsB;IAc/B,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,SAAS;IAC1B,OAAO,CAAC,QAAQ,CAAC,OAAO;IAf1B,OAAO,CAAC,OAAO,CAAU;IACzB,OAAO,CAAC,eAAe,CAAK;IAC5B,OAAO,CAAC,cAAc,CAAK;IAC3B,OAAO,CAAC,aAAa,CAAsD;IAC3E,OAAO,CAAC,SAAS,CAAQ;IACzB,OAAO,CAAC,SAAS,CAAC,CAAiB;IACnC,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,mBAAmB,CAAS;IACpC,OAAO,CAAC,qBAAqB,CAAC,CAAS;IACvC,OAAO,CAAC,sBAAsB,CAAK;IACnC,OAAO,CAAC,kBAAkB,CAAC,CAAiB;gBAGzB,QAAQ,EAAE,aAAa,EACvB,SAAS,EAAE,iBAAiB,EAC5B,OAAO,EAAE,mBAAmB;IAwDzC,wBAAwB,IAAI,OAAO,CAAC,mBAAmB,CAAC;IAIxD,uBAAuB,IAAI,OAAO,CAAC,mBAAmB,CAAC;IAIvD,uBAAuB,CAAC,KAAK,EAAE,mBAAmB;IAqDxD,OAAO,CAAC,eAAe;IAkCvB,OAAO,CAAC,gBAAgB;IAQxB,OAAO,CAAC,kBAAkB;IAsB1B,OAAO,CAAC,oBAAoB;IAiB5B,OAAO,CAAC,aAAa;IAIrB,OAAO,CAAC,oBAAoB;IAI5B,OAAO,CAAC,qBAAqB;IAc7B,OAAO,CAAC,kBAAkB;IAa1B,OAAO,CAAC,sBAAsB;IA4B9B,OAAO,CAAC,kBAAkB;IAapB,sBAAsB,IAAI,OAAO,CAAC,mBAAmB,CAAC;IAI5D,OAAO,CAAC,UAAU;IAIlB,OAAO,CAAC,MAAM;IAId,OAAO,CAAC,KAAK;IAIb,OAAO,CAAC,aAAa;IAWrB,OAAO,CAAC,oBAAoB;CAyB7B"}
1
+ {"version":3,"file":"RollerShutterAccessory.d.ts","sourceRoot":"","sources":["../../src/Accesories/RollerShutterAccessory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAW,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAC7E,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,mBAAmB,EAAE,MAAM,gCAAgC,CAAC;AAErE,qBAAa,sBAAsB;IAiB/B,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,SAAS;IAC1B,OAAO,CAAC,QAAQ,CAAC,OAAO;IAlB1B,OAAO,CAAC,OAAO,CAAU;IACzB,OAAO,CAAC,eAAe,CAAK;IAC5B,OAAO,CAAC,cAAc,CAAK;IAC3B,OAAO,CAAC,aAAa,CAAsD;IAC3E,OAAO,CAAC,SAAS,CAAQ;IACzB,OAAO,CAAC,SAAS,CAAC,CAAiB;IACnC,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,mBAAmB,CAAS;IACpC,OAAO,CAAC,qBAAqB,CAAC,CAAS;IACvC,OAAO,CAAC,sBAAsB,CAAK;IACnC,OAAO,CAAC,kBAAkB,CAAC,CAAiB;IAC5C,OAAO,CAAC,eAAe,CAAC,CAAiB;IACzC,OAAO,CAAC,eAAe,CAAC,CAAS;IACjC,OAAO,CAAC,MAAM,CAAS;gBAGJ,QAAQ,EAAE,aAAa,EACvB,SAAS,EAAE,iBAAiB,EAC5B,OAAO,EAAE,mBAAmB;IAkEzC,wBAAwB,IAAI,OAAO,CAAC,mBAAmB,CAAC;IAKxD,uBAAuB,IAAI,OAAO,CAAC,mBAAmB,CAAC;IAKvD,uBAAuB,CAAC,KAAK,EAAE,mBAAmB;IA8DlD,qBAAqB,CAAC,KAAK,EAAE,mBAAmB;IAuCtD,OAAO,CAAC,eAAe;IA0EvB,OAAO,CAAC,gBAAgB;IAoBxB,OAAO,CAAC,kBAAkB;IAwB1B,OAAO,CAAC,oBAAoB;IAiB5B,OAAO,CAAC,aAAa;IAIrB,OAAO,CAAC,oBAAoB;IAI5B,OAAO,CAAC,qBAAqB;IAc7B,OAAO,CAAC,kBAAkB;IAa1B,OAAO,CAAC,sBAAsB;IA8B9B,OAAO,CAAC,kBAAkB;IAa1B,OAAO,CAAC,cAAc;IAOtB,OAAO,CAAC,uBAAuB;IAiB/B,OAAO,CAAC,oBAAoB;IAO5B,OAAO,CAAC,aAAa;IAMrB,OAAO,CAAC,SAAS;IAWX,sBAAsB,IAAI,OAAO,CAAC,mBAAmB,CAAC;IAK5D,OAAO,CAAC,uBAAuB;IAQ/B,OAAO,CAAC,UAAU;IAIlB,OAAO,CAAC,MAAM;IAId,OAAO,CAAC,KAAK;IAIb,OAAO,CAAC,aAAa;IAWrB,OAAO,CAAC,oBAAoB;CAyB7B"}
@@ -13,6 +13,7 @@ class RollerShutterAccessory {
13
13
  this.legacyMode = false;
14
14
  this.hasReceivedPosition = false;
15
15
  this.pendingTargetExpiresAt = 0;
16
+ this.jammed = false;
16
17
  this.accessory.getService(this.platform.Service.AccessoryInformation)
17
18
  .setCharacteristic(this.platform.Characteristic.Manufacturer, 'Supla')
18
19
  .setCharacteristic(this.platform.Characteristic.Model, 'RollerShutter');
@@ -22,10 +23,17 @@ class RollerShutterAccessory {
22
23
  this.service.getCharacteristic(this.platform.Characteristic.CurrentPosition)
23
24
  .onGet(this.handleCurrentPositionGet.bind(this));
24
25
  this.service.getCharacteristic(this.platform.Characteristic.TargetPosition)
26
+ .setProps({ minValue: 0, maxValue: 100, minStep: 1 })
25
27
  .onGet(this.handleTargetPositionGet.bind(this))
26
28
  .onSet(this.handleTargetPositionSet.bind(this));
27
29
  this.service.getCharacteristic(this.platform.Characteristic.PositionState)
28
30
  .onGet(this.handlePositionStateGet.bind(this));
31
+ this.service.getCharacteristic(this.platform.Characteristic.HoldPosition)
32
+ .onSet(this.handleHoldPositionSet.bind(this));
33
+ this.service.setCharacteristic(this.platform.Characteristic.StatusJammed, 0);
34
+ this.platform.registerOwnerCleanup(this.accessory.UUID, () => {
35
+ this.disposeTimers();
36
+ });
29
37
  this.legacyMode = this.isLegacyTopic();
30
38
  const statusTopic = this.legacyMode
31
39
  ? this.getLegacyStatusTopic()
@@ -48,22 +56,26 @@ class RollerShutterAccessory {
48
56
  if (!Number.isNaN(value)) {
49
57
  this.applyShutUpdate(value);
50
58
  }
51
- });
59
+ }, this.accessory.UUID);
52
60
  if (connectedTopic) {
53
61
  this.platform.registerMqttHandler(connectedTopic, (message) => {
54
62
  this.updateConnection(this.platform.parseBoolean(message.toString()));
55
- });
63
+ }, this.accessory.UUID);
56
64
  }
57
65
  }
58
66
  async handleCurrentPositionGet() {
67
+ this.assertPositionAvailable();
59
68
  return this.currentPosition;
60
69
  }
61
70
  async handleTargetPositionGet() {
71
+ this.assertPositionAvailable();
62
72
  return this.targetPosition;
63
73
  }
64
74
  async handleTargetPositionSet(value) {
65
75
  const target = value;
66
- this.targetPosition = this.clamp(target, 0, 100);
76
+ this.setJammed(false);
77
+ this.clearMotionStopTimer();
78
+ this.targetPosition = Math.round(this.clamp(target, 0, 100));
67
79
  if (this.targetPosition > this.currentPosition) {
68
80
  this.positionState = this.platform.Characteristic.PositionState.INCREASING;
69
81
  }
@@ -75,6 +87,11 @@ class RollerShutterAccessory {
75
87
  }
76
88
  this.service.updateCharacteristic(this.platform.Characteristic.TargetPosition, this.targetPosition);
77
89
  this.service.updateCharacteristic(this.platform.Characteristic.PositionState, this.positionState);
90
+ if (this.hasReceivedPosition && this.targetPosition === this.currentPosition) {
91
+ this.clearPendingTarget(false);
92
+ this.clearStopTimer();
93
+ return;
94
+ }
78
95
  if (this.targetPosition !== this.currentPosition) {
79
96
  this.pendingTargetPosition = this.targetPosition;
80
97
  this.schedulePendingTimeout(this.targetPosition, this.currentPosition);
@@ -87,11 +104,13 @@ class RollerShutterAccessory {
87
104
  return;
88
105
  }
89
106
  const controlMode = this.platform.getCoveringControlMode();
90
- const shutValue = this.toShut(this.targetPosition).toString();
91
- if (controlMode === 'set' || controlMode === 'hybrid') {
107
+ const shutValue = Math.round(this.toShut(this.targetPosition)).toString();
108
+ const isEndpoint = this.targetPosition === 0 || this.targetPosition === 100;
109
+ if ((controlMode === 'set' || controlMode === 'hybrid')
110
+ && !(controlMode === 'hybrid' && isEndpoint)) {
92
111
  const topic = `${this.context.topic}/${this.platform.getCoveringSetTopicSuffix()}`;
93
112
  this.platform.log.debug(`Publishing ${topic} = ${shutValue}`);
94
- this.platform.MqttClient.client.publish(topic, shutValue, (error) => {
113
+ this.platform.publishCommand(topic, shutValue, (error) => {
95
114
  if (error) {
96
115
  this.platform.log.error(`Publish failed for ${topic}: ${error.message}`);
97
116
  }
@@ -105,7 +124,7 @@ class RollerShutterAccessory {
105
124
  const action = this.resolveAction(this.targetPosition, this.currentPosition);
106
125
  if (action) {
107
126
  this.platform.log.debug(`Publishing ${actionTopic} = ${action}`);
108
- this.platform.MqttClient.client.publish(actionTopic, action, (error) => {
127
+ this.platform.publishCommand(actionTopic, action, (error) => {
109
128
  if (error) {
110
129
  this.platform.log.error(`Publish failed for ${actionTopic}: ${error.message}`);
111
130
  }
@@ -116,36 +135,128 @@ class RollerShutterAccessory {
116
135
  }
117
136
  }
118
137
  }
138
+ async handleHoldPositionSet(value) {
139
+ if (!value) {
140
+ return;
141
+ }
142
+ if (this.legacyMode) {
143
+ this.platform.log.debug(`HoldPosition ignored for legacy rollershutter ${this.accessory.displayName}`);
144
+ this.service.updateCharacteristic(this.platform.Characteristic.HoldPosition, 0);
145
+ return;
146
+ }
147
+ const controlMode = this.platform.getCoveringControlMode();
148
+ if (controlMode === 'set') {
149
+ this.platform.log.debug(`HoldPosition ignored (set mode) for ${this.accessory.displayName}`);
150
+ this.service.updateCharacteristic(this.platform.Characteristic.HoldPosition, 0);
151
+ return;
152
+ }
153
+ const stopAction = this.platform.getCoveringExecuteActionStop();
154
+ if (!stopAction) {
155
+ this.platform.log.debug(`HoldPosition ignored (no stop action) for ${this.accessory.displayName}`);
156
+ this.service.updateCharacteristic(this.platform.Characteristic.HoldPosition, 0);
157
+ return;
158
+ }
159
+ const actionTopic = `${this.context.topic}/execute_action`;
160
+ this.platform.log.debug(`Publishing ${actionTopic} = ${stopAction} (hold)`);
161
+ this.platform.publishCommand(actionTopic, stopAction, (error) => {
162
+ if (error) {
163
+ this.platform.log.error(`Publish failed for ${actionTopic}: ${error.message}`);
164
+ }
165
+ });
166
+ this.service.updateCharacteristic(this.platform.Characteristic.HoldPosition, 0);
167
+ this.clearPendingTarget(true);
168
+ this.clearStopTimer();
169
+ this.clearMotionStopTimer();
170
+ this.setJammed(false);
171
+ if (this.positionState !== this.platform.Characteristic.PositionState.STOPPED) {
172
+ this.positionState = this.platform.Characteristic.PositionState.STOPPED;
173
+ this.service.updateCharacteristic(this.platform.Characteristic.PositionState, this.positionState);
174
+ }
175
+ }
119
176
  applyShutUpdate(shutValue) {
120
- this.currentPosition = this.toPosition(shutValue);
121
- this.positionState = this.platform.Characteristic.PositionState.STOPPED;
177
+ var _a;
178
+ const previousTarget = this.targetPosition;
179
+ const previousState = this.positionState;
180
+ const rawPosition = this.toPosition(shutValue);
181
+ const previousRaw = (_a = this.lastRawPosition) !== null && _a !== void 0 ? _a : rawPosition;
182
+ const rawDelta = rawPosition - previousRaw;
183
+ const rawMovement = Math.abs(rawDelta) >= 0.05;
184
+ this.lastRawPosition = rawPosition;
185
+ const previousPosition = this.currentPosition;
186
+ this.currentPosition = Math.round(rawPosition);
187
+ let nextPositionState = this.platform.Characteristic.PositionState.STOPPED;
122
188
  const now = Date.now();
123
- if (!this.hasReceivedPosition) {
189
+ const firstUpdate = !this.hasReceivedPosition;
190
+ if (firstUpdate) {
124
191
  this.hasReceivedPosition = true;
125
- this.clearPendingTarget(false);
126
- this.targetPosition = this.currentPosition;
127
192
  }
128
- else if (this.pendingTargetPosition !== undefined) {
193
+ if (rawMovement || this.currentPosition !== previousPosition) {
194
+ this.setJammed(false);
195
+ }
196
+ if (this.pendingTargetPosition !== undefined) {
197
+ this.clearMotionStopTimer();
129
198
  const reached = Math.abs(this.pendingTargetPosition - this.currentPosition) <= 1;
130
199
  const expired = this.pendingTargetExpiresAt > 0 && now > this.pendingTargetExpiresAt;
131
200
  if (reached || expired) {
201
+ this.clearStopTimer();
132
202
  this.clearPendingTarget(false);
133
203
  this.targetPosition = this.currentPosition;
204
+ if (expired) {
205
+ this.setJammed(true);
206
+ }
134
207
  }
135
208
  else {
136
- this.schedulePendingTimeout(this.pendingTargetPosition, this.currentPosition);
209
+ if (rawMovement || firstUpdate) {
210
+ this.schedulePendingTimeout(this.pendingTargetPosition, this.currentPosition);
211
+ }
212
+ if (this.pendingTargetPosition > this.currentPosition) {
213
+ nextPositionState = this.platform.Characteristic.PositionState.INCREASING;
214
+ }
215
+ else if (this.pendingTargetPosition < this.currentPosition) {
216
+ nextPositionState = this.platform.Characteristic.PositionState.DECREASING;
217
+ }
137
218
  }
138
219
  }
139
220
  else {
221
+ this.clearPendingTarget(false);
222
+ this.clearStopTimer();
140
223
  this.targetPosition = this.currentPosition;
224
+ if (rawMovement) {
225
+ nextPositionState = rawDelta > 0
226
+ ? this.platform.Characteristic.PositionState.INCREASING
227
+ : this.platform.Characteristic.PositionState.DECREASING;
228
+ this.scheduleMotionStopTimer();
229
+ }
230
+ else {
231
+ this.clearMotionStopTimer();
232
+ }
233
+ }
234
+ this.positionState = nextPositionState;
235
+ if (this.currentPosition !== previousPosition) {
236
+ this.service.updateCharacteristic(this.platform.Characteristic.CurrentPosition, this.currentPosition);
237
+ }
238
+ if (this.targetPosition !== previousTarget) {
239
+ this.service.updateCharacteristic(this.platform.Characteristic.TargetPosition, this.targetPosition);
240
+ }
241
+ if (this.positionState !== previousState) {
242
+ this.service.updateCharacteristic(this.platform.Characteristic.PositionState, this.positionState);
141
243
  }
142
- this.service.updateCharacteristic(this.platform.Characteristic.CurrentPosition, this.currentPosition);
143
- this.service.updateCharacteristic(this.platform.Characteristic.TargetPosition, this.targetPosition);
144
- this.service.updateCharacteristic(this.platform.Characteristic.PositionState, this.positionState);
145
244
  }
146
245
  updateConnection(isConnected) {
147
246
  this.connected = isConnected;
148
247
  this.service.updateCharacteristic(this.platform.Characteristic.StatusFault, this.connected ? 0 : 1);
248
+ if (!this.connected) {
249
+ this.setJammed(false);
250
+ this.hasReceivedPosition = false;
251
+ this.lastRawPosition = undefined;
252
+ this.clearPendingTarget(true);
253
+ this.clearStopTimer();
254
+ this.clearMotionStopTimer();
255
+ if (this.positionState !== this.platform.Characteristic.PositionState.STOPPED) {
256
+ this.positionState = this.platform.Characteristic.PositionState.STOPPED;
257
+ this.service.updateCharacteristic(this.platform.Characteristic.PositionState, this.positionState);
258
+ }
259
+ }
149
260
  }
150
261
  parseLegacyPayload(payload) {
151
262
  let data;
@@ -160,9 +271,11 @@ class RollerShutterAccessory {
160
271
  }
161
272
  const record = data;
162
273
  const result = {};
163
- const shutValue = Number(record.shut);
164
- if (!Number.isNaN(shutValue)) {
165
- result.shut = shutValue;
274
+ if (record.shut !== null && typeof record.shut !== 'undefined') {
275
+ const shutValue = Number(record.shut);
276
+ if (!Number.isNaN(shutValue)) {
277
+ result.shut = shutValue;
278
+ }
166
279
  }
167
280
  if (typeof record.online !== 'undefined') {
168
281
  result.online = this.platform.parseBoolean(record.online);
@@ -179,7 +292,7 @@ class RollerShutterAccessory {
179
292
  const topic = this.getLegacyCommandTopic();
180
293
  const payload = JSON.stringify({ id: channelId, shut: shutValue });
181
294
  this.platform.log.debug(`Publishing ${topic} = ${payload}`);
182
- this.platform.MqttClient.client.publish(topic, payload, (error) => {
295
+ this.platform.publishCommand(topic, payload, (error) => {
183
296
  if (error) {
184
297
  this.platform.log.error(`Publish failed for ${topic}: ${error.message}`);
185
298
  }
@@ -218,7 +331,8 @@ class RollerShutterAccessory {
218
331
  const delta = Math.abs(target - current);
219
332
  let timeoutMs = 15000;
220
333
  if (travelTimeSeconds > 0 && delta > 0) {
221
- timeoutMs = Math.round((delta / 100) * travelTimeSeconds * 1000) + 1000;
334
+ const computed = Math.round((delta / 100) * travelTimeSeconds * 1000) + 1000;
335
+ timeoutMs = Math.max(5000, computed);
222
336
  }
223
337
  if (timeoutMs <= 0) {
224
338
  return;
@@ -229,12 +343,13 @@ class RollerShutterAccessory {
229
343
  }
230
344
  this.pendingTargetTimer = setTimeout(() => {
231
345
  this.pendingTargetTimer = undefined;
232
- this.pendingTargetPosition = undefined;
233
- this.pendingTargetExpiresAt = 0;
346
+ this.setJammed(true);
347
+ this.clearPendingTarget(true);
234
348
  if (this.positionState !== this.platform.Characteristic.PositionState.STOPPED) {
235
349
  this.positionState = this.platform.Characteristic.PositionState.STOPPED;
236
350
  this.service.updateCharacteristic(this.platform.Characteristic.PositionState, this.positionState);
237
351
  }
352
+ this.clearStopTimer();
238
353
  this.platform.log.debug(`No state updates for ${this.accessory.displayName} within ${timeoutMs}ms; marking STOPPED.`);
239
354
  }, timeoutMs);
240
355
  }
@@ -245,14 +360,60 @@ class RollerShutterAccessory {
245
360
  }
246
361
  this.pendingTargetPosition = undefined;
247
362
  this.pendingTargetExpiresAt = 0;
248
- if (syncTarget) {
363
+ if (syncTarget && this.targetPosition !== this.currentPosition) {
249
364
  this.targetPosition = this.currentPosition;
250
365
  this.service.updateCharacteristic(this.platform.Characteristic.TargetPosition, this.targetPosition);
251
366
  }
252
367
  }
368
+ clearStopTimer() {
369
+ if (this.stopTimer) {
370
+ clearTimeout(this.stopTimer);
371
+ this.stopTimer = undefined;
372
+ }
373
+ }
374
+ scheduleMotionStopTimer() {
375
+ const quietMs = 2500;
376
+ if (this.motionStopTimer) {
377
+ clearTimeout(this.motionStopTimer);
378
+ }
379
+ this.motionStopTimer = setTimeout(() => {
380
+ this.motionStopTimer = undefined;
381
+ if (this.pendingTargetPosition !== undefined) {
382
+ return;
383
+ }
384
+ if (this.positionState !== this.platform.Characteristic.PositionState.STOPPED) {
385
+ this.positionState = this.platform.Characteristic.PositionState.STOPPED;
386
+ this.service.updateCharacteristic(this.platform.Characteristic.PositionState, this.positionState);
387
+ }
388
+ }, quietMs);
389
+ }
390
+ clearMotionStopTimer() {
391
+ if (this.motionStopTimer) {
392
+ clearTimeout(this.motionStopTimer);
393
+ this.motionStopTimer = undefined;
394
+ }
395
+ }
396
+ disposeTimers() {
397
+ this.clearPendingTarget(false);
398
+ this.clearStopTimer();
399
+ this.clearMotionStopTimer();
400
+ }
401
+ setJammed(isJammed) {
402
+ if (this.jammed === isJammed) {
403
+ return;
404
+ }
405
+ this.jammed = isJammed;
406
+ this.service.updateCharacteristic(this.platform.Characteristic.StatusJammed, this.jammed ? 1 : 0);
407
+ }
253
408
  async handlePositionStateGet() {
409
+ this.assertPositionAvailable();
254
410
  return this.positionState;
255
411
  }
412
+ assertPositionAvailable() {
413
+ if (!this.connected || !this.hasReceivedPosition) {
414
+ throw new this.platform.api.hap.HapStatusError(-70402 /* this.platform.api.hap.HAPStatus.SERVICE_COMMUNICATION_FAILURE */);
415
+ }
416
+ }
256
417
  toPosition(shutValue) {
257
418
  return this.clamp(100 - shutValue, 0, 100);
258
419
  }
@@ -290,7 +451,7 @@ class RollerShutterAccessory {
290
451
  this.stopTimer = setTimeout(() => {
291
452
  const actionTopic = `${this.context.topic}/execute_action`;
292
453
  this.platform.log.debug(`Publishing ${actionTopic} = ${stopAction} (auto-stop)`);
293
- this.platform.MqttClient.client.publish(actionTopic, stopAction, (error) => {
454
+ this.platform.publishCommand(actionTopic, stopAction, (error) => {
294
455
  if (error) {
295
456
  this.platform.log.error(`Publish failed for ${actionTopic}: ${error.message}`);
296
457
  }