@marcel2215/homebridge-supla-plugin 2.1.28 → 2.1.30

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 (120) hide show
  1. package/README.md +67 -1
  2. package/config.schema.json +92 -75
  3. package/dist/Accesories/ActionTriggerAccessory.d.ts +0 -1
  4. package/dist/Accesories/ActionTriggerAccessory.d.ts.map +1 -1
  5. package/dist/Accesories/ActionTriggerAccessory.js +15 -9
  6. package/dist/Accesories/ActionTriggerAccessory.js.map +1 -1
  7. package/dist/Accesories/AirQualityAccessory.d.ts +3 -1
  8. package/dist/Accesories/AirQualityAccessory.d.ts.map +1 -1
  9. package/dist/Accesories/AirQualityAccessory.js +47 -5
  10. package/dist/Accesories/AirQualityAccessory.js.map +1 -1
  11. package/dist/Accesories/ContactSensorAccessory.d.ts +3 -1
  12. package/dist/Accesories/ContactSensorAccessory.d.ts.map +1 -1
  13. package/dist/Accesories/ContactSensorAccessory.js +32 -4
  14. package/dist/Accesories/ContactSensorAccessory.js.map +1 -1
  15. package/dist/Accesories/DimmerAccessory.d.ts +4 -2
  16. package/dist/Accesories/DimmerAccessory.d.ts.map +1 -1
  17. package/dist/Accesories/DimmerAccessory.js +51 -14
  18. package/dist/Accesories/DimmerAccessory.js.map +1 -1
  19. package/dist/Accesories/DimmerRgbLightAccessory.d.ts +10 -2
  20. package/dist/Accesories/DimmerRgbLightAccessory.d.ts.map +1 -1
  21. package/dist/Accesories/DimmerRgbLightAccessory.js +149 -26
  22. package/dist/Accesories/DimmerRgbLightAccessory.js.map +1 -1
  23. package/dist/Accesories/DoorAccessory.d.ts +14 -1
  24. package/dist/Accesories/DoorAccessory.d.ts.map +1 -1
  25. package/dist/Accesories/DoorAccessory.js +146 -20
  26. package/dist/Accesories/DoorAccessory.js.map +1 -1
  27. package/dist/Accesories/ElectricityMeterAccessory.d.ts +13 -1
  28. package/dist/Accesories/ElectricityMeterAccessory.d.ts.map +1 -1
  29. package/dist/Accesories/ElectricityMeterAccessory.js +127 -12
  30. package/dist/Accesories/ElectricityMeterAccessory.js.map +1 -1
  31. package/dist/Accesories/FacadeBlindAccessory.d.ts +6 -0
  32. package/dist/Accesories/FacadeBlindAccessory.d.ts.map +1 -1
  33. package/dist/Accesories/FacadeBlindAccessory.js +205 -64
  34. package/dist/Accesories/FacadeBlindAccessory.js.map +1 -1
  35. package/dist/Accesories/FrontGateFsm.d.ts +74 -68
  36. package/dist/Accesories/FrontGateFsm.d.ts.map +1 -1
  37. package/dist/Accesories/FrontGateFsm.js +563 -403
  38. package/dist/Accesories/FrontGateFsm.js.map +1 -1
  39. package/dist/Accesories/GarageDoorOpenerAccesory.d.ts +12 -3
  40. package/dist/Accesories/GarageDoorOpenerAccesory.d.ts.map +1 -1
  41. package/dist/Accesories/GarageDoorOpenerAccesory.js +168 -21
  42. package/dist/Accesories/GarageDoorOpenerAccesory.js.map +1 -1
  43. package/dist/Accesories/GateAccessory.d.ts +12 -2
  44. package/dist/Accesories/GateAccessory.d.ts.map +1 -1
  45. package/dist/Accesories/GateAccessory.js +245 -90
  46. package/dist/Accesories/GateAccessory.js.map +1 -1
  47. package/dist/Accesories/GateLockAccessory.d.ts +17 -1
  48. package/dist/Accesories/GateLockAccessory.d.ts.map +1 -1
  49. package/dist/Accesories/GateLockAccessory.js +375 -50
  50. package/dist/Accesories/GateLockAccessory.js.map +1 -1
  51. package/dist/Accesories/LeakSensorAccessory.d.ts +3 -1
  52. package/dist/Accesories/LeakSensorAccessory.d.ts.map +1 -1
  53. package/dist/Accesories/LeakSensorAccessory.js +32 -4
  54. package/dist/Accesories/LeakSensorAccessory.js.map +1 -1
  55. package/dist/Accesories/LightBulbAccesory.d.ts +3 -2
  56. package/dist/Accesories/LightBulbAccesory.d.ts.map +1 -1
  57. package/dist/Accesories/LightBulbAccesory.js +41 -12
  58. package/dist/Accesories/LightBulbAccesory.js.map +1 -1
  59. package/dist/Accesories/PressureAccessory.d.ts +3 -1
  60. package/dist/Accesories/PressureAccessory.d.ts.map +1 -1
  61. package/dist/Accesories/PressureAccessory.js +28 -5
  62. package/dist/Accesories/PressureAccessory.js.map +1 -1
  63. package/dist/Accesories/RGBLightBulbAccesory.d.ts +9 -0
  64. package/dist/Accesories/RGBLightBulbAccesory.d.ts.map +1 -1
  65. package/dist/Accesories/RGBLightBulbAccesory.js +137 -17
  66. package/dist/Accesories/RGBLightBulbAccesory.js.map +1 -1
  67. package/dist/Accesories/RollerShutterAccessory.d.ts +6 -0
  68. package/dist/Accesories/RollerShutterAccessory.d.ts.map +1 -1
  69. package/dist/Accesories/RollerShutterAccessory.js +221 -75
  70. package/dist/Accesories/RollerShutterAccessory.js.map +1 -1
  71. package/dist/Accesories/SwitchAccessory.d.ts +3 -2
  72. package/dist/Accesories/SwitchAccessory.d.ts.map +1 -1
  73. package/dist/Accesories/SwitchAccessory.js +41 -12
  74. package/dist/Accesories/SwitchAccessory.js.map +1 -1
  75. package/dist/Accesories/TemperatureAccessory.d.ts +3 -1
  76. package/dist/Accesories/TemperatureAccessory.d.ts.map +1 -1
  77. package/dist/Accesories/TemperatureAccessory.js +28 -5
  78. package/dist/Accesories/TemperatureAccessory.js.map +1 -1
  79. package/dist/Accesories/TemperatureHumidityAccessory.d.ts +5 -1
  80. package/dist/Accesories/TemperatureHumidityAccessory.d.ts.map +1 -1
  81. package/dist/Accesories/TemperatureHumidityAccessory.js +40 -9
  82. package/dist/Accesories/TemperatureHumidityAccessory.js.map +1 -1
  83. package/dist/Accesories/ThermostatAccessory.d.ts +18 -1
  84. package/dist/Accesories/ThermostatAccessory.d.ts.map +1 -1
  85. package/dist/Accesories/ThermostatAccessory.js +193 -34
  86. package/dist/Accesories/ThermostatAccessory.js.map +1 -1
  87. package/dist/Accesories/ValveAccessory.d.ts +5 -2
  88. package/dist/Accesories/ValveAccessory.d.ts.map +1 -1
  89. package/dist/Accesories/ValveAccessory.js +47 -8
  90. package/dist/Accesories/ValveAccessory.js.map +1 -1
  91. package/dist/Accesories/WicketAccesory.d.ts +18 -3
  92. package/dist/Accesories/WicketAccesory.d.ts.map +1 -1
  93. package/dist/Accesories/WicketAccesory.js +154 -14
  94. package/dist/Accesories/WicketAccesory.js.map +1 -1
  95. package/dist/Heplers/ColorConverters.d.ts +2 -2
  96. package/dist/Heplers/ColorConverters.d.ts.map +1 -1
  97. package/dist/Heplers/ColorConverters.js +7 -3
  98. package/dist/Heplers/ColorConverters.js.map +1 -1
  99. package/dist/Heplers/DisplayName.d.ts +15 -0
  100. package/dist/Heplers/DisplayName.d.ts.map +1 -0
  101. package/dist/Heplers/DisplayName.js +174 -0
  102. package/dist/Heplers/DisplayName.js.map +1 -0
  103. package/dist/Heplers/SuplaChannelContext.d.ts +3 -1
  104. package/dist/Heplers/SuplaChannelContext.d.ts.map +1 -1
  105. package/dist/Heplers/SuplaChannelContext.js +3 -1
  106. package/dist/Heplers/SuplaChannelContext.js.map +1 -1
  107. package/dist/Heplers/SuplaMqttClient.d.ts +11 -3
  108. package/dist/Heplers/SuplaMqttClient.d.ts.map +1 -1
  109. package/dist/Heplers/SuplaMqttClient.js +215 -112
  110. package/dist/Heplers/SuplaMqttClient.js.map +1 -1
  111. package/dist/Heplers/SuplaMqttClientContext.d.ts +2 -1
  112. package/dist/Heplers/SuplaMqttClientContext.d.ts.map +1 -1
  113. package/dist/Heplers/SuplaMqttClientContext.js +2 -1
  114. package/dist/Heplers/SuplaMqttClientContext.js.map +1 -1
  115. package/dist/platform.d.ts +92 -36
  116. package/dist/platform.d.ts.map +1 -1
  117. package/dist/platform.js +1253 -235
  118. package/dist/platform.js.map +1 -1
  119. package/package.json +10 -5
  120. package/config.json +0 -3
@@ -9,16 +9,19 @@ class DoorAccessory {
9
9
  this.currentPosition = 0;
10
10
  this.targetPosition = 0;
11
11
  this.positionState = this.platform.Characteristic.PositionState.STOPPED;
12
- this.connected = true;
12
+ this.connected = false;
13
+ this.hasPosition = false;
14
+ this.hasHi = false;
15
+ this.hasPartialHi = false;
13
16
  this.hi = false;
14
17
  this.partialHi = false;
18
+ this.hiRevision = 0;
19
+ this.partialHiRevision = 0;
20
+ this.pendingHiRevision = 0;
21
+ this.pendingPartialHiRevision = 0;
15
22
  this.accessory.getService(this.platform.Service.AccessoryInformation)
16
23
  .setCharacteristic(this.platform.Characteristic.Manufacturer, 'Supla')
17
24
  .setCharacteristic(this.platform.Characteristic.Model, 'DoorController');
18
- const legacyGarage = this.accessory.getService(this.platform.Service.GarageDoorOpener);
19
- if (legacyGarage) {
20
- this.accessory.removeService(legacyGarage);
21
- }
22
25
  this.service = this.accessory.getService(this.platform.Service.Door)
23
26
  || this.accessory.addService(this.platform.Service.Door);
24
27
  this.service.setCharacteristic(this.platform.Characteristic.Name, accessory.displayName);
@@ -29,27 +32,80 @@ class DoorAccessory {
29
32
  .onSet(this.handleTargetPositionSet.bind(this));
30
33
  this.service.getCharacteristic(this.platform.Characteristic.PositionState)
31
34
  .onGet(this.handlePositionStateGet.bind(this));
32
- this.platform.registerMqttHandler(`${this.context.topic}/state/hi`, (message) => {
33
- this.hi = this.platform.parseBoolean(message.toString());
34
- this.updatePositionsFromState();
35
+ this.platform.registerOwnerCleanup?.(this.accessory.UUID, () => this.clearPendingTimer());
36
+ this.platform.registerMqttHandler(`${this.context.topic}/state/hi`, (message, _topic, packet) => {
37
+ if (this.pendingTimer && packet?.retain === true) {
38
+ return;
39
+ }
40
+ const hi = this.platform.parseBooleanStrict(message.toString());
41
+ if (hi === undefined) {
42
+ return;
43
+ }
44
+ this.hi = hi;
45
+ this.hasHi = true;
46
+ if (packet?.retain !== true) {
47
+ this.hiRevision += 1;
48
+ }
49
+ if (this.hasPartialHi && this.hasCoherentPendingSnapshot()) {
50
+ this.updatePositionsFromState();
51
+ }
35
52
  }, this.accessory.UUID);
36
- this.platform.registerMqttHandler(`${this.context.topic}/state/partial_hi`, (message) => {
37
- this.partialHi = this.platform.parseBoolean(message.toString());
38
- this.updatePositionsFromState();
53
+ this.platform.registerMqttHandler(`${this.context.topic}/state/partial_hi`, (message, _topic, packet) => {
54
+ if (this.pendingTimer && packet?.retain === true) {
55
+ return;
56
+ }
57
+ const partialHi = this.platform.parseBooleanStrict(message.toString());
58
+ if (partialHi === undefined) {
59
+ return;
60
+ }
61
+ this.partialHi = partialHi;
62
+ this.hasPartialHi = true;
63
+ if (packet?.retain !== true) {
64
+ this.partialHiRevision += 1;
65
+ }
66
+ if (this.hasHi && this.hasCoherentPendingSnapshot()) {
67
+ this.updatePositionsFromState();
68
+ }
39
69
  }, this.accessory.UUID);
40
70
  this.platform.registerMqttHandler(`${this.context.topic}/state/connected`, (message) => {
41
- this.connected = this.platform.parseBoolean(message.toString());
42
- this.service.updateCharacteristic(this.platform.Characteristic.StatusFault, this.connected ? 0 : 1);
71
+ const connected = this.platform.parseBooleanStrict(message.toString());
72
+ if (connected === undefined) {
73
+ return;
74
+ }
75
+ this.connected = connected;
76
+ if (!connected) {
77
+ this.invalidateState();
78
+ }
79
+ }, this.accessory.UUID);
80
+ this.platform.registerMqttTransportHandler?.((transportConnected) => {
81
+ if (!transportConnected) {
82
+ this.connected = false;
83
+ this.invalidateState();
84
+ }
43
85
  }, this.accessory.UUID);
44
86
  }
45
87
  async handleCurrentPositionGet() {
88
+ this.assertAvailable();
46
89
  return this.currentPosition;
47
90
  }
48
91
  async handleTargetPositionGet() {
92
+ this.assertAvailable();
49
93
  return this.targetPosition;
50
94
  }
51
95
  async handleTargetPositionSet(value) {
52
- const target = this.clamp(value, 0, 100);
96
+ const target = value;
97
+ if (!Number.isFinite(target) || (target !== 0 && target !== 100)) {
98
+ throw new this.platform.api.hap.HapStatusError(-70410 /* this.platform.api.hap.HAPStatus.INVALID_VALUE_IN_REQUEST */);
99
+ }
100
+ if (this.pendingTarget !== undefined) {
101
+ throw new this.platform.api.hap.HapStatusError(-70403 /* this.platform.api.hap.HAPStatus.RESOURCE_BUSY */);
102
+ }
103
+ this.assertAvailable();
104
+ if (target === this.currentPosition) {
105
+ return;
106
+ }
107
+ const previousTarget = this.targetPosition;
108
+ const previousState = this.positionState;
53
109
  this.targetPosition = target;
54
110
  if (this.targetPosition > this.currentPosition) {
55
111
  this.positionState = this.platform.Characteristic.PositionState.INCREASING;
@@ -62,14 +118,39 @@ class DoorAccessory {
62
118
  }
63
119
  this.service.updateCharacteristic(this.platform.Characteristic.TargetPosition, this.targetPosition);
64
120
  this.service.updateCharacteristic(this.platform.Characteristic.PositionState, this.positionState);
65
- const action = this.targetPosition <= 10 ? 'close' : 'open';
121
+ const action = this.targetPosition === 0 ? 'close' : 'open';
122
+ this.pendingTarget = target;
123
+ this.pendingHiRevision = this.hiRevision;
124
+ this.pendingPartialHiRevision = this.partialHiRevision;
125
+ this.armPendingTimer();
66
126
  this.platform.log.debug(`Publishing ${this.context.topic}/execute_action = ${action}`);
67
- this.platform.publishCommand(`${this.context.topic}/execute_action`, action);
127
+ try {
128
+ await this.platform.publishActionAsync(`${this.context.topic}/execute_action`, action);
129
+ }
130
+ catch (error) {
131
+ if (this.platform.isPublishCompletionUnknown?.(error)) {
132
+ throw error;
133
+ }
134
+ if (this.pendingTarget === undefined) {
135
+ // A fresh two-sensor snapshot can confirm the physical result before
136
+ // the MQTT callback reports an error. Keep that authoritative state.
137
+ throw error;
138
+ }
139
+ this.pendingTarget = undefined;
140
+ this.clearPendingTimer();
141
+ this.targetPosition = previousTarget;
142
+ this.positionState = previousState;
143
+ this.service.updateCharacteristic(this.platform.Characteristic.TargetPosition, this.targetPosition);
144
+ this.service.updateCharacteristic(this.platform.Characteristic.PositionState, this.positionState);
145
+ throw error;
146
+ }
68
147
  }
69
148
  async handlePositionStateGet() {
149
+ this.assertAvailable();
70
150
  return this.positionState;
71
151
  }
72
152
  updatePositionsFromState() {
153
+ this.hasPosition = true;
73
154
  if (this.hi) {
74
155
  this.currentPosition = 0;
75
156
  }
@@ -79,14 +160,59 @@ class DoorAccessory {
79
160
  else {
80
161
  this.currentPosition = 100;
81
162
  }
82
- this.targetPosition = this.currentPosition;
83
- this.positionState = this.platform.Characteristic.PositionState.STOPPED;
163
+ if (this.pendingTarget === undefined || this.currentPosition === this.pendingTarget) {
164
+ this.pendingTarget = undefined;
165
+ this.clearPendingTimer();
166
+ this.targetPosition = this.currentPosition;
167
+ this.positionState = this.platform.Characteristic.PositionState.STOPPED;
168
+ }
169
+ else {
170
+ this.targetPosition = this.pendingTarget;
171
+ this.positionState = this.targetPosition > this.currentPosition
172
+ ? this.platform.Characteristic.PositionState.INCREASING
173
+ : this.platform.Characteristic.PositionState.DECREASING;
174
+ this.pendingHiRevision = this.hiRevision;
175
+ this.pendingPartialHiRevision = this.partialHiRevision;
176
+ }
84
177
  this.service.updateCharacteristic(this.platform.Characteristic.CurrentPosition, this.currentPosition);
85
178
  this.service.updateCharacteristic(this.platform.Characteristic.TargetPosition, this.targetPosition);
86
179
  this.service.updateCharacteristic(this.platform.Characteristic.PositionState, this.positionState);
87
180
  }
88
- clamp(value, min, max) {
89
- return Math.min(Math.max(value, min), max);
181
+ assertAvailable() {
182
+ if (!this.connected || !this.hasPosition) {
183
+ throw new this.platform.api.hap.HapStatusError(-70402 /* this.platform.api.hap.HAPStatus.SERVICE_COMMUNICATION_FAILURE */);
184
+ }
185
+ }
186
+ hasCoherentPendingSnapshot() {
187
+ return this.pendingTarget === undefined
188
+ || (this.hiRevision > this.pendingHiRevision
189
+ && this.partialHiRevision > this.pendingPartialHiRevision);
190
+ }
191
+ armPendingTimer() {
192
+ this.clearPendingTimer();
193
+ this.pendingTimer = setTimeout(() => {
194
+ this.pendingTimer = undefined;
195
+ this.pendingTarget = undefined;
196
+ this.targetPosition = this.currentPosition;
197
+ this.positionState = this.platform.Characteristic.PositionState.STOPPED;
198
+ this.service.updateCharacteristic(this.platform.Characteristic.TargetPosition, this.targetPosition);
199
+ this.service.updateCharacteristic(this.platform.Characteristic.PositionState, this.positionState);
200
+ this.platform.log.warn(`Door ${this.accessory.displayName} did not report a confirming state within 15000ms.`);
201
+ }, 15000);
202
+ }
203
+ clearPendingTimer() {
204
+ if (this.pendingTimer) {
205
+ clearTimeout(this.pendingTimer);
206
+ this.pendingTimer = undefined;
207
+ }
208
+ }
209
+ invalidateState() {
210
+ this.hasPosition = false;
211
+ this.hasHi = false;
212
+ this.hasPartialHi = false;
213
+ this.pendingTarget = undefined;
214
+ this.clearPendingTimer();
215
+ this.positionState = this.platform.Characteristic.PositionState.STOPPED;
90
216
  }
91
217
  }
92
218
  exports.DoorAccessory = DoorAccessory;
@@ -1 +1 @@
1
- {"version":3,"file":"DoorAccessory.js","sourceRoot":"","sources":["../../src/Accesories/DoorAccessory.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"DoorAccessory.js","sourceRoot":"","sources":["../../src/Accesories/DoorAccessory.ts"],"names":[],"mappings":"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"}
@@ -8,10 +8,22 @@ export declare class ElectricityMeterAccessory {
8
8
  private service;
9
9
  private value;
10
10
  private connected;
11
- private selectedMetricIndex;
11
+ private hasValue;
12
+ private selectedMetric?;
13
+ private readonly metricValues;
14
+ private readonly metricSelectionCandidates;
15
+ private metricSelectionMaxTimer?;
16
+ private metricSelectionMaxWaitMs;
12
17
  private readonly metricPriority;
13
18
  constructor(platform: SuplaPlatform, accessory: PlatformAccessory, context: SuplaChannelContext);
14
19
  handleValueGet(): Promise<CharacteristicValue>;
15
20
  private clamp;
21
+ private armMetricSelectionTimers;
22
+ private finalizeMetricSelection;
23
+ private applySelectedMetricValue;
24
+ private invalidateMetricEpoch;
25
+ private clearMetricSelectionTimers;
26
+ private updateServiceLabel;
27
+ private updateFault;
16
28
  }
17
29
  //# sourceMappingURL=ElectricityMeterAccessory.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ElectricityMeterAccessory.d.ts","sourceRoot":"","sources":["../../src/Accesories/ElectricityMeterAccessory.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,yBAAyB;IAkBlC,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,SAAS;IAC1B,OAAO,CAAC,QAAQ,CAAC,OAAO;IAnB1B,OAAO,CAAC,OAAO,CAAU;IACzB,OAAO,CAAC,KAAK,CAAU;IACvB,OAAO,CAAC,SAAS,CAAQ;IACzB,OAAO,CAAC,mBAAmB,CAA2B;IACtD,OAAO,CAAC,QAAQ,CAAC,cAAc,CAU7B;gBAGiB,QAAQ,EAAE,aAAa,EACvB,SAAS,EAAE,iBAAiB,EAC5B,OAAO,EAAE,mBAAmB;IA+CzC,cAAc,IAAI,OAAO,CAAC,mBAAmB,CAAC;IAIpD,OAAO,CAAC,KAAK;CAGd"}
1
+ {"version":3,"file":"ElectricityMeterAccessory.d.ts","sourceRoot":"","sources":["../../src/Accesories/ElectricityMeterAccessory.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;AAGrE,qBAAa,yBAAyB;IAuBlC,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,SAAS;IAC1B,OAAO,CAAC,QAAQ,CAAC,OAAO;IAxB1B,OAAO,CAAC,OAAO,CAAU;IACzB,OAAO,CAAC,KAAK,CAAU;IACvB,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,cAAc,CAAC,CAAS;IAChC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAA6B;IAC1D,OAAO,CAAC,QAAQ,CAAC,yBAAyB,CAAqB;IAC/D,OAAO,CAAC,uBAAuB,CAAC,CAAiB;IACjD,OAAO,CAAC,wBAAwB,CAAQ;IACxC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAU7B;gBAGiB,QAAQ,EAAE,aAAa,EACvB,SAAS,EAAE,iBAAiB,EAC5B,OAAO,EAAE,mBAAmB;IAuEzC,cAAc,IAAI,OAAO,CAAC,mBAAmB,CAAC;IASpD,OAAO,CAAC,KAAK;IAIb,OAAO,CAAC,wBAAwB;IAchC,OAAO,CAAC,uBAAuB;IA6B/B,OAAO,CAAC,wBAAwB;IAiBhC,OAAO,CAAC,qBAAqB;IAS7B,OAAO,CAAC,0BAA0B;IAOlC,OAAO,CAAC,kBAAkB;IAe1B,OAAO,CAAC,WAAW;CAQpB"}
@@ -1,14 +1,18 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.ElectricityMeterAccessory = void 0;
4
+ const DisplayName_1 = require("../Heplers/DisplayName");
4
5
  class ElectricityMeterAccessory {
5
6
  constructor(platform, accessory, context) {
6
7
  this.platform = platform;
7
8
  this.accessory = accessory;
8
9
  this.context = context;
9
10
  this.value = 0.0001;
10
- this.connected = true;
11
- this.selectedMetricIndex = Number.MAX_SAFE_INTEGER;
11
+ this.connected = false;
12
+ this.hasValue = false;
13
+ this.metricValues = new Map();
14
+ this.metricSelectionCandidates = new Set();
15
+ this.metricSelectionMaxWaitMs = 4000;
12
16
  this.metricPriority = [
13
17
  'total_forward_active_power',
14
18
  'active_power',
@@ -26,32 +30,143 @@ class ElectricityMeterAccessory {
26
30
  this.service = this.accessory.getService(this.platform.Service.LightSensor)
27
31
  || this.accessory.addService(this.platform.Service.LightSensor);
28
32
  this.service.setCharacteristic(this.platform.Characteristic.Name, accessory.displayName);
33
+ const persistedMetric = this.accessory.context.suplaElectricityMetric;
34
+ if (typeof persistedMetric === 'string' && this.metricPriority.includes(persistedMetric)) {
35
+ this.selectedMetric = persistedMetric;
36
+ this.updateServiceLabel();
37
+ }
38
+ else if (persistedMetric !== undefined) {
39
+ this.platform.log.warn(`Ignoring invalid persisted electricity metric for ${this.accessory.displayName}: ` +
40
+ `${String(persistedMetric)}`);
41
+ }
29
42
  this.service.getCharacteristic(this.platform.Characteristic.CurrentAmbientLightLevel)
30
43
  .onGet(this.handleValueGet.bind(this));
44
+ this.platform.registerOwnerCleanup(this.accessory.UUID, () => {
45
+ this.clearMetricSelectionTimers();
46
+ });
31
47
  this.platform.registerMqttHandler(`${this.context.topic}/state/connected`, (message) => {
32
- this.connected = this.platform.parseBoolean(message.toString());
33
- this.service.updateCharacteristic(this.platform.Characteristic.StatusFault, this.connected ? 0 : 1);
48
+ const connected = this.platform.parseBooleanStrict(message.toString());
49
+ if (connected === undefined) {
50
+ return;
51
+ }
52
+ this.connected = connected;
53
+ if (!connected) {
54
+ this.invalidateMetricEpoch();
55
+ }
56
+ this.updateFault();
34
57
  }, this.accessory.UUID);
35
- this.metricPriority.forEach((key, metricIndex) => {
36
- this.platform.registerMqttHandler(`${this.context.topic}/state/${key}`, (message) => {
37
- const value = parseFloat(message.toString());
38
- if (Number.isNaN(value)) {
58
+ this.metricPriority.forEach((key) => {
59
+ this.platform.registerMqttHandler(`${this.context.topic}/state/${key}`, (message, _topic, packet) => {
60
+ const value = this.platform.parseFiniteNumberStrict(message.toString());
61
+ if (value === undefined) {
39
62
  return;
40
63
  }
41
- if (metricIndex <= this.selectedMetricIndex) {
42
- this.selectedMetricIndex = metricIndex;
43
- this.value = this.clamp(value, 0.0001, 100000);
44
- this.service.updateCharacteristic(this.platform.Characteristic.CurrentAmbientLightLevel, this.value);
64
+ this.metricValues.set(key, value);
65
+ if (this.selectedMetric === undefined && packet?.retain === true) {
66
+ this.metricSelectionCandidates.add(key);
67
+ this.armMetricSelectionTimers();
45
68
  }
69
+ this.applySelectedMetricValue();
46
70
  }, this.accessory.UUID);
47
71
  });
72
+ this.platform.registerMqttTransportHandler?.((transportConnected) => {
73
+ if (!transportConnected) {
74
+ this.connected = false;
75
+ this.invalidateMetricEpoch();
76
+ this.updateFault();
77
+ }
78
+ }, this.accessory.UUID);
79
+ this.updateFault();
48
80
  }
49
81
  async handleValueGet() {
82
+ if (!this.connected || !this.hasValue) {
83
+ throw new this.platform.api.hap.HapStatusError(-70402 /* this.platform.api.hap.HAPStatus.SERVICE_COMMUNICATION_FAILURE */);
84
+ }
50
85
  return this.value;
51
86
  }
52
87
  clamp(value, min, max) {
53
88
  return Math.min(Math.max(value, min), max);
54
89
  }
90
+ armMetricSelectionTimers() {
91
+ if (this.selectedMetric !== undefined) {
92
+ return;
93
+ }
94
+ if (!this.metricSelectionMaxTimer) {
95
+ // Retained topics are independent MQTT publications. A quiet gap does not
96
+ // prove inventory completion, so select only after the full bounded
97
+ // collection window and then apply the stable priority order.
98
+ this.metricSelectionMaxTimer = setTimeout(() => {
99
+ this.finalizeMetricSelection();
100
+ }, this.metricSelectionMaxWaitMs);
101
+ }
102
+ }
103
+ finalizeMetricSelection() {
104
+ this.clearMetricSelectionTimers();
105
+ if (this.selectedMetric !== undefined) {
106
+ return;
107
+ }
108
+ const nextMetric = this.metricPriority.find(metric => this.metricSelectionCandidates.has(metric));
109
+ if (!nextMetric) {
110
+ return;
111
+ }
112
+ const previousContextMetric = this.accessory.context.suplaElectricityMetric;
113
+ this.accessory.context.suplaElectricityMetric = nextMetric;
114
+ try {
115
+ // Persist the semantic choice before exposing it. The LightSensor value
116
+ // must never silently change units after a restart or retained-message reorder.
117
+ this.platform.api.updatePlatformAccessories([this.accessory]);
118
+ }
119
+ catch (error) {
120
+ this.accessory.context.suplaElectricityMetric = previousContextMetric;
121
+ this.platform.log.error(`Failed to persist electricity metric selection for ${this.accessory.displayName}: ` +
122
+ `${error.message}`);
123
+ return;
124
+ }
125
+ this.selectedMetric = nextMetric;
126
+ this.metricSelectionCandidates.clear();
127
+ this.updateServiceLabel();
128
+ this.applySelectedMetricValue();
129
+ }
130
+ applySelectedMetricValue() {
131
+ if (this.selectedMetric === undefined) {
132
+ return;
133
+ }
134
+ const selectedValue = this.metricValues.get(this.selectedMetric);
135
+ if (selectedValue === undefined) {
136
+ return;
137
+ }
138
+ this.value = this.clamp(selectedValue, 0.0001, 100000);
139
+ this.hasValue = true;
140
+ this.service.updateCharacteristic(this.platform.Characteristic.CurrentAmbientLightLevel, this.value);
141
+ this.updateFault();
142
+ }
143
+ invalidateMetricEpoch() {
144
+ this.hasValue = false;
145
+ this.metricValues.clear();
146
+ if (this.selectedMetric === undefined) {
147
+ this.metricSelectionCandidates.clear();
148
+ this.clearMetricSelectionTimers();
149
+ }
150
+ }
151
+ clearMetricSelectionTimers() {
152
+ if (this.metricSelectionMaxTimer) {
153
+ clearTimeout(this.metricSelectionMaxTimer);
154
+ this.metricSelectionMaxTimer = undefined;
155
+ }
156
+ }
157
+ updateServiceLabel() {
158
+ if (!this.selectedMetric) {
159
+ return;
160
+ }
161
+ const serviceName = (0, DisplayName_1.homeKitElectricityServiceName)(this.accessory.displayName, this.selectedMetric);
162
+ this.service.displayName = serviceName;
163
+ this.service.setCharacteristic(this.platform.Characteristic.Name, serviceName);
164
+ }
165
+ updateFault() {
166
+ this.service.updateCharacteristic(this.platform.Characteristic.StatusFault, this.connected && this.hasValue
167
+ ? this.platform.Characteristic.StatusFault.NO_FAULT
168
+ : this.platform.Characteristic.StatusFault.GENERAL_FAULT);
169
+ }
55
170
  }
56
171
  exports.ElectricityMeterAccessory = ElectricityMeterAccessory;
57
172
  //# sourceMappingURL=ElectricityMeterAccessory.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ElectricityMeterAccessory.js","sourceRoot":"","sources":["../../src/Accesories/ElectricityMeterAccessory.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ElectricityMeterAccessory.js","sourceRoot":"","sources":["../../src/Accesories/ElectricityMeterAccessory.ts"],"names":[],"mappings":"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"}
@@ -13,6 +13,7 @@ export declare class FacadeBlindAccessory {
13
13
  private targetTiltAngle;
14
14
  private connected;
15
15
  private stopTimer?;
16
+ private pendingStop?;
16
17
  private readonly baseTopic;
17
18
  private hasReceivedPosition;
18
19
  private hasReceivedTilt;
@@ -36,6 +37,7 @@ export declare class FacadeBlindAccessory {
36
37
  private clearPendingNoProgressTimeout;
37
38
  private clearPendingTarget;
38
39
  private clearStopTimer;
40
+ private cancelStopTimer;
39
41
  private scheduleMotionStopTimer;
40
42
  private clearMotionStopTimer;
41
43
  private disposeTimers;
@@ -55,5 +57,9 @@ export declare class FacadeBlindAccessory {
55
57
  private clamp;
56
58
  private resolveAction;
57
59
  private scheduleStopIfNeeded;
60
+ private readPersistedStop;
61
+ private setPendingStop;
62
+ private resumePendingStop;
63
+ private publishPendingStop;
58
64
  }
59
65
  //# sourceMappingURL=FacadeBlindAccessory.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"FacadeBlindAccessory.d.ts","sourceRoot":"","sources":["../../src/Accesories/FacadeBlindAccessory.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,oBAAoB;IAsB7B,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,SAAS;IAC1B,OAAO,CAAC,QAAQ,CAAC,OAAO;IAvB1B,OAAO,CAAC,OAAO,CAAU;IACzB,OAAO,CAAC,eAAe,CAAK;IAC5B,OAAO,CAAC,cAAc,CAAK;IAC3B,OAAO,CAAC,aAAa,CAAsD;IAC3E,OAAO,CAAC,gBAAgB,CAAK;IAC7B,OAAO,CAAC,eAAe,CAAK;IAC5B,OAAO,CAAC,SAAS,CAAQ;IACzB,OAAO,CAAC,SAAS,CAAC,CAAiB;IACnC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IACnC,OAAO,CAAC,mBAAmB,CAAS;IACpC,OAAO,CAAC,eAAe,CAAS;IAChC,OAAO,CAAC,qBAAqB,CAAC,CAAS;IACvC,OAAO,CAAC,sBAAsB,CAAK;IACnC,OAAO,CAAC,kBAAkB,CAAC,CAAiB;IAC5C,OAAO,CAAC,sBAAsB,CAAC,CAAiB;IAChD,OAAO,CAAC,mBAAmB,CAAC,CAAS;IACrC,OAAO,CAAC,eAAe,CAAC,CAAiB;IACzC,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,iBAAiB,CAAK;gBAGX,QAAQ,EAAE,aAAa,EACvB,SAAS,EAAE,iBAAiB,EAC5B,OAAO,EAAE,mBAAmB;IA2HzC,wBAAwB,IAAI,OAAO,CAAC,mBAAmB,CAAC;IAKxD,uBAAuB,IAAI,OAAO,CAAC,mBAAmB,CAAC;IAKvD,uBAAuB,CAAC,KAAK,EAAE,mBAAmB;IA6DlD,qBAAqB,CAAC,KAAK,EAAE,mBAAmB;IAkCtD,OAAO,CAAC,eAAe;IAiFvB,OAAO,CAAC,sBAAsB;IA8B9B,OAAO,CAAC,gCAAgC;IAgCxC,OAAO,CAAC,mBAAmB;IAmC3B,OAAO,CAAC,6BAA6B;IAOrC,OAAO,CAAC,kBAAkB;IAe1B,OAAO,CAAC,cAAc;IAOtB,OAAO,CAAC,uBAAuB;IAqB/B,OAAO,CAAC,oBAAoB;IAO5B,OAAO,CAAC,aAAa;IAMrB,OAAO,CAAC,SAAS;IAWjB,OAAO,CAAC,yBAAyB;IAejC,OAAO,CAAC,gBAAgB;IAqBlB,sBAAsB,IAAI,OAAO,CAAC,mBAAmB,CAAC;IAKtD,oBAAoB,IAAI,OAAO,CAAC,mBAAmB,CAAC;IAKpD,mBAAmB,IAAI,OAAO,CAAC,mBAAmB,CAAC;IAKnD,mBAAmB,CAAC,KAAK,EAAE,mBAAmB;IAkBpD,OAAO,CAAC,uBAAuB;IAQ/B,OAAO,CAAC,mBAAmB;IAQ3B,OAAO,CAAC,UAAU;IAIlB,OAAO,CAAC,MAAM;IAId,OAAO,CAAC,WAAW;IAInB,OAAO,CAAC,WAAW;IAInB,OAAO,CAAC,KAAK;IAIb,OAAO,CAAC,aAAa;IAWrB,OAAO,CAAC,oBAAoB;CAyB7B"}
1
+ {"version":3,"file":"FacadeBlindAccessory.d.ts","sourceRoot":"","sources":["../../src/Accesories/FacadeBlindAccessory.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;AASrE,qBAAa,oBAAoB;IAuB7B,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,SAAS;IAC1B,OAAO,CAAC,QAAQ,CAAC,OAAO;IAxB1B,OAAO,CAAC,OAAO,CAAU;IACzB,OAAO,CAAC,eAAe,CAAK;IAC5B,OAAO,CAAC,cAAc,CAAK;IAC3B,OAAO,CAAC,aAAa,CAAsD;IAC3E,OAAO,CAAC,gBAAgB,CAAK;IAC7B,OAAO,CAAC,eAAe,CAAK;IAC5B,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,SAAS,CAAC,CAAiB;IACnC,OAAO,CAAC,WAAW,CAAC,CAAwB;IAC5C,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IACnC,OAAO,CAAC,mBAAmB,CAAS;IACpC,OAAO,CAAC,eAAe,CAAS;IAChC,OAAO,CAAC,qBAAqB,CAAC,CAAS;IACvC,OAAO,CAAC,sBAAsB,CAAK;IACnC,OAAO,CAAC,kBAAkB,CAAC,CAAiB;IAC5C,OAAO,CAAC,sBAAsB,CAAC,CAAiB;IAChD,OAAO,CAAC,mBAAmB,CAAC,CAAS;IACrC,OAAO,CAAC,eAAe,CAAC,CAAiB;IACzC,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,iBAAiB,CAAK;gBAGX,QAAQ,EAAE,aAAa,EACvB,SAAS,EAAE,iBAAiB,EAC5B,OAAO,EAAE,mBAAmB;IAsIzC,wBAAwB,IAAI,OAAO,CAAC,mBAAmB,CAAC;IAKxD,uBAAuB,IAAI,OAAO,CAAC,mBAAmB,CAAC;IAKvD,uBAAuB,CAAC,KAAK,EAAE,mBAAmB;IAyGlD,qBAAqB,CAAC,KAAK,EAAE,mBAAmB;IA+BtD,OAAO,CAAC,eAAe;IA0FvB,OAAO,CAAC,sBAAsB;IA8B9B,OAAO,CAAC,gCAAgC;IAgCxC,OAAO,CAAC,mBAAmB;IAkC3B,OAAO,CAAC,6BAA6B;IAOrC,OAAO,CAAC,kBAAkB;IAe1B,OAAO,CAAC,cAAc;IAqBtB,OAAO,CAAC,eAAe;IAOvB,OAAO,CAAC,uBAAuB;IAqB/B,OAAO,CAAC,oBAAoB;IAO5B,OAAO,CAAC,aAAa;IAMrB,OAAO,CAAC,SAAS;IAWjB,OAAO,CAAC,yBAAyB;IAejC,OAAO,CAAC,gBAAgB;IAmBlB,sBAAsB,IAAI,OAAO,CAAC,mBAAmB,CAAC;IAKtD,oBAAoB,IAAI,OAAO,CAAC,mBAAmB,CAAC;IAKpD,mBAAmB,IAAI,OAAO,CAAC,mBAAmB,CAAC;IAKnD,mBAAmB,CAAC,KAAK,EAAE,mBAAmB;IAoBpD,OAAO,CAAC,uBAAuB;IAQ/B,OAAO,CAAC,mBAAmB;IAQ3B,OAAO,CAAC,UAAU;IAIlB,OAAO,CAAC,MAAM;IAId,OAAO,CAAC,WAAW;IAInB,OAAO,CAAC,WAAW;IAInB,OAAO,CAAC,KAAK;IAIb,OAAO,CAAC,aAAa;IAWrB,OAAO,CAAC,oBAAoB;IAkB5B,OAAO,CAAC,iBAAiB;IAqBzB,OAAO,CAAC,cAAc;IAoBtB,OAAO,CAAC,iBAAiB;YAYX,kBAAkB;CAyBjC"}