@fastybird/smart-panel-backend 1.1.0-alpha.2 → 1.1.0-alpha.3

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.
@@ -47,6 +47,9 @@ const coerceNumberSafe = (input, opts = {}) => {
47
47
  if (input === null) {
48
48
  return opts.allowNull ? null : 0;
49
49
  }
50
+ if (typeof input !== 'number' && typeof input !== 'string' && typeof input !== 'boolean') {
51
+ return null;
52
+ }
50
53
  if (typeof input === 'number') {
51
54
  if (!Number.isFinite(input)) {
52
55
  return 0;
@@ -1 +1 @@
1
- {"version":3,"file":"transform.utils.js","sourceRoot":"","sources":["../../../src/common/utils/transform.utils.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"transform.utils.js","sourceRoot":"","sources":["../../../src/common/utils/transform.utils.ts"],"names":[],"mappings":"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"}
@@ -58,6 +58,8 @@ export declare class DelegatesManagerService {
58
58
  private applyTransformer;
59
59
  private handleChange;
60
60
  private setDefaultPropertyValue;
61
+ private wireElectricalChannels;
62
+ private wireMeterProperty;
61
63
  private determineCategory;
62
64
  private handleNumericChange;
63
65
  private scheduleWrite;
@@ -199,60 +199,7 @@ let DelegatesManagerService = DelegatesManagerService_1 = class DelegatesManager
199
199
  await comp.set(val);
200
200
  return true;
201
201
  });
202
- if (typeof comp.aenergy !== 'undefined') {
203
- const electricalEnergy = await this.channelsService.findOneBy('identifier', `energy:${comp.id}`, device.id, devices_shelly_ng_constants_1.DEVICES_SHELLY_NG_TYPE);
204
- if (electricalEnergy === null) {
205
- }
206
- else {
207
- const consumption = await this.channelsPropertiesService.findOneBy('identifier', 'aenergy', electricalEnergy.id);
208
- if (consumption === null) {
209
- }
210
- else {
211
- await this.setDefaultPropertyValue(device.id, consumption, (0, transform_utils_2.toEnergy)(comp.aenergy));
212
- this.changeHandlers.set(`${delegate.id}|${comp.key}|aenergy`, (val) => {
213
- this.handleNumericChange(comp.key, 'aenergy', consumption.id, val, (n) => this.handleChange(consumption, (0, transform_utils_2.toEnergy)(n), false));
214
- });
215
- }
216
- }
217
- }
218
- if (typeof comp.apower !== 'undefined') {
219
- const electricalPower = await this.channelsService.findOneBy('identifier', `power:${comp.id}`, device.id, devices_shelly_ng_constants_1.DEVICES_SHELLY_NG_TYPE);
220
- if (electricalPower === null) {
221
- }
222
- else {
223
- const power = await this.channelsPropertiesService.findOneBy('identifier', 'apower', electricalPower.id);
224
- if (power === null) {
225
- }
226
- else {
227
- await this.setDefaultPropertyValue(device.id, power, Math.max(0, comp.apower));
228
- this.changeHandlers.set(`${delegate.id}|${comp.key}|apower`, (val) => {
229
- this.handleNumericChange(comp.key, 'apower', power.id, val, (n) => this.handleChange(power, Math.max(0, n), false));
230
- });
231
- if (typeof comp.voltage !== 'undefined') {
232
- const voltage = await this.channelsPropertiesService.findOneBy('identifier', 'voltage', electricalPower.id);
233
- if (voltage === null) {
234
- }
235
- else {
236
- await this.setDefaultPropertyValue(device.id, voltage, comp.voltage);
237
- this.changeHandlers.set(`${delegate.id}|${comp.key}|voltage`, (val) => {
238
- this.handleNumericChange(comp.key, 'voltage', voltage.id, val, (n) => this.handleChange(voltage, n, false));
239
- });
240
- }
241
- }
242
- if (typeof comp.current !== 'undefined') {
243
- const current = await this.channelsPropertiesService.findOneBy('identifier', 'current', electricalPower.id);
244
- if (current === null) {
245
- }
246
- else {
247
- await this.setDefaultPropertyValue(device.id, current, comp.current);
248
- this.changeHandlers.set(`${delegate.id}|${comp.key}|current`, (val) => {
249
- this.handleNumericChange(comp.key, 'current', current.id, val, (n) => this.handleChange(current, n, false));
250
- });
251
- }
252
- }
253
- }
254
- }
255
- }
202
+ await this.wireElectricalChannels(delegate, device, comp);
256
203
  }
257
204
  if (this.insertGeneration.get(shelly.id) !== generation)
258
205
  return delegate;
@@ -314,6 +261,7 @@ let DelegatesManagerService = DelegatesManagerService_1 = class DelegatesManager
314
261
  await comp.stop();
315
262
  return true;
316
263
  });
264
+ await this.wireElectricalChannels(delegate, device, comp);
317
265
  }
318
266
  if (this.insertGeneration.get(shelly.id) !== generation)
319
267
  return delegate;
@@ -362,6 +310,7 @@ let DelegatesManagerService = DelegatesManagerService_1 = class DelegatesManager
362
310
  return true;
363
311
  });
364
312
  }
313
+ await this.wireElectricalChannels(delegate, device, comp);
365
314
  }
366
315
  if (this.insertGeneration.get(shelly.id) !== generation)
367
316
  return delegate;
@@ -495,6 +444,7 @@ let DelegatesManagerService = DelegatesManagerService_1 = class DelegatesManager
495
444
  ]);
496
445
  return true;
497
446
  });
447
+ await this.wireElectricalChannels(delegate, device, comp);
498
448
  }
499
449
  if (this.insertGeneration.get(shelly.id) !== generation)
500
450
  return delegate;
@@ -653,6 +603,7 @@ let DelegatesManagerService = DelegatesManagerService_1 = class DelegatesManager
653
603
  ], Math.round((0, transform_utils_1.clampNumber)(whiteValue, 0, 255)));
654
604
  return true;
655
605
  });
606
+ await this.wireElectricalChannels(delegate, device, comp);
656
607
  }
657
608
  if (this.insertGeneration.get(shelly.id) !== generation)
658
609
  return delegate;
@@ -746,6 +697,7 @@ let DelegatesManagerService = DelegatesManagerService_1 = class DelegatesManager
746
697
  await comp.set(outputValue, Math.round((0, transform_utils_1.clampNumber)(brightnessValue, 0, 100)), Math.round((0, transform_utils_1.clampNumber)(ctValue, 2_700, 6_500)));
747
698
  return true;
748
699
  });
700
+ await this.wireElectricalChannels(delegate, device, comp);
749
701
  }
750
702
  if (this.insertGeneration.get(shelly.id) !== generation)
751
703
  return delegate;
@@ -800,54 +752,59 @@ let DelegatesManagerService = DelegatesManagerService_1 = class DelegatesManager
800
752
  if (this.insertGeneration.get(shelly.id) !== generation)
801
753
  return delegate;
802
754
  for (const comp of delegate.pm1.values()) {
803
- const electricalPower = await this.channelsService.findOneBy('identifier', `power:${comp.id}`, device.id, devices_shelly_ng_constants_1.DEVICES_SHELLY_NG_TYPE);
804
- if (electricalPower === null) {
805
- continue;
806
- }
807
- const power = await this.channelsPropertiesService.findOneBy('identifier', 'apower', electricalPower.id);
808
- if (power === null) {
809
- throw new devices_shelly_ng_exceptions_1.DevicesShellyNgNotFoundException('Failed to load electrical power channel property');
810
- }
811
- await this.setDefaultPropertyValue(device.id, power, Math.max(0, comp.apower));
812
- this.changeHandlers.set(`${delegate.id}|${comp.key}|apower`, (val) => {
813
- this.handleNumericChange(comp.key, 'apower', power.id, val, (n) => this.handleChange(power, Math.max(0, n), false));
814
- });
815
- if (typeof comp.voltage !== 'undefined') {
816
- const voltage = await this.channelsPropertiesService.findOneBy('identifier', 'voltage', electricalPower.id);
817
- if (voltage === null) {
818
- throw new devices_shelly_ng_exceptions_1.DevicesShellyNgNotFoundException('Failed to load electrical power voltage channel property');
819
- }
820
- await this.setDefaultPropertyValue(device.id, voltage, comp.voltage);
821
- this.changeHandlers.set(`${delegate.id}|${comp.key}|voltage`, (val) => {
822
- this.handleNumericChange(comp.key, 'voltage', voltage.id, val, (n) => this.handleChange(voltage, n, false));
823
- });
824
- }
825
- if (typeof comp.current !== 'undefined') {
826
- const current = await this.channelsPropertiesService.findOneBy('identifier', 'current', electricalPower.id);
827
- if (current === null) {
828
- throw new devices_shelly_ng_exceptions_1.DevicesShellyNgNotFoundException('Failed to load electrical power current channel property');
829
- }
830
- await this.setDefaultPropertyValue(device.id, current, comp.current);
831
- this.changeHandlers.set(`${delegate.id}|${comp.key}|current`, (val) => {
832
- this.handleNumericChange(comp.key, 'current', current.id, val, (n) => this.handleChange(current, n, false));
833
- });
834
- }
835
- if (typeof comp.aenergy !== 'undefined') {
836
- const electricalEnergy = await this.channelsService.findOneBy('identifier', `energy:${comp.id}`, device.id, devices_shelly_ng_constants_1.DEVICES_SHELLY_NG_TYPE);
837
- if (electricalEnergy === null) {
838
- }
839
- else {
840
- const consumption = await this.channelsPropertiesService.findOneBy('identifier', 'aenergy', electricalEnergy.id);
841
- if (consumption === null) {
842
- }
843
- else {
844
- await this.setDefaultPropertyValue(device.id, consumption, (0, transform_utils_2.toEnergy)(comp.aenergy));
845
- this.changeHandlers.set(`${delegate.id}|${comp.key}|aenergy`, (val) => {
846
- this.handleNumericChange(comp.key, 'aenergy', consumption.id, val, (n) => this.handleChange(consumption, (0, transform_utils_2.toEnergy)(n), false));
847
- });
848
- }
849
- }
850
- }
755
+ await this.wireElectricalChannels(delegate, device, comp);
756
+ }
757
+ if (this.insertGeneration.get(shelly.id) !== generation)
758
+ return delegate;
759
+ for (const comp of delegate.em.values()) {
760
+ const phases = [
761
+ { id: 'a', power: comp.a_act_power, voltage: comp.a_voltage, current: comp.a_current, freq: comp.a_freq },
762
+ { id: 'b', power: comp.b_act_power, voltage: comp.b_voltage, current: comp.b_current, freq: comp.b_freq },
763
+ { id: 'c', power: comp.c_act_power, voltage: comp.c_voltage, current: comp.c_current, freq: comp.c_freq },
764
+ ];
765
+ for (const phase of phases) {
766
+ const channelIdentifier = `power:${comp.id}:${phase.id}`;
767
+ await this.wireMeterProperty(delegate, device, comp.key, channelIdentifier, `${phase.id}_act_power`, `${phase.id}_act_power`, phase.power, true);
768
+ await this.wireMeterProperty(delegate, device, comp.key, channelIdentifier, `${phase.id}_voltage`, `${phase.id}_voltage`, phase.voltage, true);
769
+ await this.wireMeterProperty(delegate, device, comp.key, channelIdentifier, `${phase.id}_current`, `${phase.id}_current`, phase.current, true);
770
+ await this.wireMeterProperty(delegate, device, comp.key, channelIdentifier, `${phase.id}_freq`, `${phase.id}_freq`, phase.freq, true);
771
+ }
772
+ const totalChannelIdentifier = `power:${comp.id}:total`;
773
+ await this.wireMeterProperty(delegate, device, comp.key, totalChannelIdentifier, 'total_act_power', 'total_act_power', comp.total_act_power, true);
774
+ await this.wireMeterProperty(delegate, device, comp.key, totalChannelIdentifier, 'total_current', 'total_current', comp.total_current, true);
775
+ }
776
+ if (this.insertGeneration.get(shelly.id) !== generation)
777
+ return delegate;
778
+ for (const comp of delegate.emData.values()) {
779
+ const phases = [
780
+ { id: 'a', energy: comp.a_total_act_energy, returned: comp.a_total_act_ret_energy },
781
+ { id: 'b', energy: comp.b_total_act_energy, returned: comp.b_total_act_ret_energy },
782
+ { id: 'c', energy: comp.c_total_act_energy, returned: comp.c_total_act_ret_energy },
783
+ ];
784
+ for (const phase of phases) {
785
+ const channelIdentifier = `energy:${comp.id}:${phase.id}`;
786
+ await this.wireMeterProperty(delegate, device, comp.key, channelIdentifier, `${phase.id}_total_act_energy`, `${phase.id}_total_act_energy`, phase.energy, false);
787
+ await this.wireMeterProperty(delegate, device, comp.key, channelIdentifier, `${phase.id}_total_act_ret_energy`, `${phase.id}_total_act_ret_energy`, phase.returned, false);
788
+ }
789
+ const totalChannelIdentifier = `energy:${comp.id}:total`;
790
+ await this.wireMeterProperty(delegate, device, comp.key, totalChannelIdentifier, 'total_act', 'total_act', comp.total_act, false);
791
+ await this.wireMeterProperty(delegate, device, comp.key, totalChannelIdentifier, 'total_act_ret', 'total_act_ret', comp.total_act_ret, false);
792
+ }
793
+ if (this.insertGeneration.get(shelly.id) !== generation)
794
+ return delegate;
795
+ for (const comp of delegate.em1.values()) {
796
+ const channelIdentifier = `power:${comp.id}`;
797
+ await this.wireMeterProperty(delegate, device, comp.key, channelIdentifier, 'act_power', 'act_power', comp.act_power, true);
798
+ await this.wireMeterProperty(delegate, device, comp.key, channelIdentifier, 'voltage', 'voltage', comp.voltage, true);
799
+ await this.wireMeterProperty(delegate, device, comp.key, channelIdentifier, 'current', 'current', comp.current, true);
800
+ await this.wireMeterProperty(delegate, device, comp.key, channelIdentifier, 'freq', 'freq', comp.freq, true);
801
+ }
802
+ if (this.insertGeneration.get(shelly.id) !== generation)
803
+ return delegate;
804
+ for (const comp of delegate.em1Data.values()) {
805
+ const channelIdentifier = `energy:${comp.id}`;
806
+ await this.wireMeterProperty(delegate, device, comp.key, channelIdentifier, 'total_act_energy', 'total_act_energy', comp.total_act_energy, false);
807
+ await this.wireMeterProperty(delegate, device, comp.key, channelIdentifier, 'total_act_ret_energy', 'total_act_ret_energy', comp.total_act_ret_energy, false);
851
808
  }
852
809
  if (this.insertGeneration.get(shelly.id) !== generation)
853
810
  return delegate;
@@ -1142,6 +1099,87 @@ let DelegatesManagerService = DelegatesManagerService_1 = class DelegatesManager
1142
1099
  }
1143
1100
  set.add(property.id);
1144
1101
  }
1102
+ async wireElectricalChannels(delegate, device, comp) {
1103
+ if (typeof comp.aenergy !== 'undefined') {
1104
+ const electricalEnergy = await this.channelsService.findOneBy('identifier', `energy:${comp.id}`, device.id, devices_shelly_ng_constants_1.DEVICES_SHELLY_NG_TYPE);
1105
+ if (electricalEnergy === null) {
1106
+ }
1107
+ else {
1108
+ const consumption = await this.channelsPropertiesService.findOneBy('identifier', 'aenergy', electricalEnergy.id);
1109
+ if (consumption === null) {
1110
+ }
1111
+ else {
1112
+ await this.setDefaultPropertyValue(device.id, consumption, (0, transform_utils_2.toEnergy)(comp.aenergy));
1113
+ this.changeHandlers.set(`${delegate.id}|${comp.key}|aenergy.total`, (val) => {
1114
+ this.handleNumericChange(comp.key, 'aenergy.total', consumption.id, val, (n) => this.handleChange(consumption, (0, transform_utils_2.toEnergy)(n), false));
1115
+ });
1116
+ }
1117
+ }
1118
+ }
1119
+ if (typeof comp.apower !== 'undefined' ||
1120
+ typeof comp.voltage !== 'undefined' ||
1121
+ typeof comp.current !== 'undefined') {
1122
+ const electricalPower = await this.channelsService.findOneBy('identifier', `power:${comp.id}`, device.id, devices_shelly_ng_constants_1.DEVICES_SHELLY_NG_TYPE);
1123
+ if (electricalPower === null) {
1124
+ }
1125
+ else {
1126
+ if (typeof comp.apower !== 'undefined') {
1127
+ const power = await this.channelsPropertiesService.findOneBy('identifier', 'apower', electricalPower.id);
1128
+ if (power === null) {
1129
+ }
1130
+ else {
1131
+ await this.setDefaultPropertyValue(device.id, power, Math.max(0, comp.apower));
1132
+ this.changeHandlers.set(`${delegate.id}|${comp.key}|apower`, (val) => {
1133
+ this.handleNumericChange(comp.key, 'apower', power.id, val, (n) => this.handleChange(power, Math.max(0, n), false));
1134
+ });
1135
+ }
1136
+ }
1137
+ if (typeof comp.voltage !== 'undefined') {
1138
+ const voltage = await this.channelsPropertiesService.findOneBy('identifier', 'voltage', electricalPower.id);
1139
+ if (voltage === null) {
1140
+ }
1141
+ else {
1142
+ await this.setDefaultPropertyValue(device.id, voltage, comp.voltage);
1143
+ this.changeHandlers.set(`${delegate.id}|${comp.key}|voltage`, (val) => {
1144
+ this.handleNumericChange(comp.key, 'voltage', voltage.id, val, (n) => this.handleChange(voltage, n, false));
1145
+ });
1146
+ }
1147
+ }
1148
+ if (typeof comp.current !== 'undefined') {
1149
+ const current = await this.channelsPropertiesService.findOneBy('identifier', 'current', electricalPower.id);
1150
+ if (current === null) {
1151
+ }
1152
+ else {
1153
+ await this.setDefaultPropertyValue(device.id, current, comp.current);
1154
+ this.changeHandlers.set(`${delegate.id}|${comp.key}|current`, (val) => {
1155
+ this.handleNumericChange(comp.key, 'current', current.id, val, (n) => this.handleChange(current, n, false));
1156
+ });
1157
+ }
1158
+ }
1159
+ }
1160
+ }
1161
+ }
1162
+ async wireMeterProperty(delegate, device, compKey, channelIdentifier, attr, propertyIdentifier, value, allowNull) {
1163
+ if (typeof value === 'undefined') {
1164
+ return;
1165
+ }
1166
+ const channel = await this.channelsService.findOneBy('identifier', channelIdentifier, device.id, devices_shelly_ng_constants_1.DEVICES_SHELLY_NG_TYPE);
1167
+ if (channel === null) {
1168
+ return;
1169
+ }
1170
+ const property = await this.channelsPropertiesService.findOneBy('identifier', propertyIdentifier, channel.id);
1171
+ if (property === null) {
1172
+ return;
1173
+ }
1174
+ if (value !== null) {
1175
+ await this.setDefaultPropertyValue(device.id, property, value);
1176
+ }
1177
+ this.changeHandlers.set(`${delegate.id}|${compKey}|${attr}`, (val) => {
1178
+ this.handleNumericChange(compKey, attr, property.id, val, (n) => this.handleChange(property, n, false), {
1179
+ allowNull,
1180
+ });
1181
+ });
1182
+ }
1145
1183
  determineCategory(delegate) {
1146
1184
  if (delegate.descriptor && delegate.descriptor.categories.length > 0) {
1147
1185
  return delegate.descriptor.categories[0];
@@ -1164,6 +1202,9 @@ let DelegatesManagerService = DelegatesManagerService_1 = class DelegatesManager
1164
1202
  return devices_constants_1.DeviceCategory.GENERIC;
1165
1203
  }
1166
1204
  handleNumericChange(compKey, attr, propertyId, val, write, opts) {
1205
+ if (val === null && opts?.allowNull) {
1206
+ return;
1207
+ }
1167
1208
  const n = (0, transform_utils_1.coerceNumberSafe)(val, opts);
1168
1209
  if (n === null || Number.isNaN(n)) {
1169
1210
  this.logger.warn(`Dropping invalid numeric update for ${compKey}.${attr} -> ${(0, transform_utils_1.safeToString)(val)} (property=${propertyId})`);