@fastybird/smart-panel-backend 0.1.0-alpha.6 → 0.3.0-alpha.0

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 (86) hide show
  1. package/dist/migrations/1000000000000-InitialSetup.js +22 -12
  2. package/dist/migrations/1000000000000-InitialSetup.js.map +1 -1
  3. package/dist/modules/devices/services/devices-type-mapper.service.d.ts +1 -1
  4. package/dist/modules/devices/services/devices.service.d.ts +1 -0
  5. package/dist/modules/devices/services/devices.service.js +22 -23
  6. package/dist/modules/devices/services/devices.service.js.map +1 -1
  7. package/dist/modules/system/commands/update-panel.command.js +7 -12
  8. package/dist/modules/system/commands/update-panel.command.js.map +1 -1
  9. package/dist/modules/system/services/update.service.d.ts +2 -0
  10. package/dist/modules/system/services/update.service.js +37 -17
  11. package/dist/modules/system/services/update.service.js.map +1 -1
  12. package/dist/plugins/devices-shelly-ng/delegates/delegates-manager.service.d.ts +11 -1
  13. package/dist/plugins/devices-shelly-ng/delegates/delegates-manager.service.js +226 -49
  14. package/dist/plugins/devices-shelly-ng/delegates/delegates-manager.service.js.map +1 -1
  15. package/dist/plugins/devices-shelly-ng/devices-shelly-ng.constants.d.ts +5 -0
  16. package/dist/plugins/devices-shelly-ng/devices-shelly-ng.constants.js +10 -1
  17. package/dist/plugins/devices-shelly-ng/devices-shelly-ng.constants.js.map +1 -1
  18. package/dist/plugins/devices-shelly-ng/devices-shelly-ng.plugin.d.ts +5 -1
  19. package/dist/plugins/devices-shelly-ng/devices-shelly-ng.plugin.js +22 -3
  20. package/dist/plugins/devices-shelly-ng/devices-shelly-ng.plugin.js.map +1 -1
  21. package/dist/plugins/devices-shelly-ng/dto/create-device.dto.d.ts +1 -1
  22. package/dist/plugins/devices-shelly-ng/dto/create-device.dto.js +11 -12
  23. package/dist/plugins/devices-shelly-ng/dto/create-device.dto.js.map +1 -1
  24. package/dist/plugins/devices-shelly-ng/dto/update-device.dto.d.ts +2 -1
  25. package/dist/plugins/devices-shelly-ng/dto/update-device.dto.js +19 -4
  26. package/dist/plugins/devices-shelly-ng/dto/update-device.dto.js.map +1 -1
  27. package/dist/plugins/devices-shelly-ng/entities/devices-shelly-ng.entity.d.ts +6 -1
  28. package/dist/plugins/devices-shelly-ng/entities/devices-shelly-ng.entity.js +38 -6
  29. package/dist/plugins/devices-shelly-ng/entities/devices-shelly-ng.entity.js.map +1 -1
  30. package/dist/plugins/devices-shelly-ng/entities/shelly-ng-device-address.entity.d.ts +10 -0
  31. package/dist/plugins/devices-shelly-ng/entities/shelly-ng-device-address.entity.js +69 -0
  32. package/dist/plugins/devices-shelly-ng/entities/shelly-ng-device-address.entity.js.map +1 -0
  33. package/dist/plugins/devices-shelly-ng/services/database-discoverer.service.d.ts +3 -1
  34. package/dist/plugins/devices-shelly-ng/services/database-discoverer.service.js +19 -7
  35. package/dist/plugins/devices-shelly-ng/services/database-discoverer.service.js.map +1 -1
  36. package/dist/plugins/devices-shelly-ng/services/device-address.service.d.ts +22 -0
  37. package/dist/plugins/devices-shelly-ng/services/device-address.service.js +149 -0
  38. package/dist/plugins/devices-shelly-ng/services/device-address.service.js.map +1 -0
  39. package/dist/plugins/devices-shelly-ng/services/device-manager.service.d.ts +3 -1
  40. package/dist/plugins/devices-shelly-ng/services/device-manager.service.js +20 -7
  41. package/dist/plugins/devices-shelly-ng/services/device-manager.service.js.map +1 -1
  42. package/dist/plugins/devices-shelly-ng/services/shelly-ng.service.js +18 -3
  43. package/dist/plugins/devices-shelly-ng/services/shelly-ng.service.js.map +1 -1
  44. package/dist/plugins/devices-shelly-ng/subscribers/device-entity.subscriber.d.ts +6 -2
  45. package/dist/plugins/devices-shelly-ng/subscribers/device-entity.subscriber.js +75 -6
  46. package/dist/plugins/devices-shelly-ng/subscribers/device-entity.subscriber.js.map +1 -1
  47. package/dist/plugins/devices-zigbee2mqtt/devices-zigbee2mqtt.constants.d.ts +4 -0
  48. package/dist/plugins/devices-zigbee2mqtt/devices-zigbee2mqtt.constants.js +5 -1
  49. package/dist/plugins/devices-zigbee2mqtt/devices-zigbee2mqtt.constants.js.map +1 -1
  50. package/dist/plugins/devices-zigbee2mqtt/devices-zigbee2mqtt.openapi.d.ts +2 -2
  51. package/dist/plugins/devices-zigbee2mqtt/devices-zigbee2mqtt.openapi.js +2 -0
  52. package/dist/plugins/devices-zigbee2mqtt/devices-zigbee2mqtt.openapi.js.map +1 -1
  53. package/dist/plugins/devices-zigbee2mqtt/devices-zigbee2mqtt.plugin.js +11 -6
  54. package/dist/plugins/devices-zigbee2mqtt/devices-zigbee2mqtt.plugin.js.map +1 -1
  55. package/dist/plugins/devices-zigbee2mqtt/dto/update-config.dto.d.ts +10 -0
  56. package/dist/plugins/devices-zigbee2mqtt/dto/update-config.dto.js +117 -3
  57. package/dist/plugins/devices-zigbee2mqtt/dto/update-config.dto.js.map +1 -1
  58. package/dist/plugins/devices-zigbee2mqtt/interfaces/zigbee2mqtt.interface.d.ts +8 -0
  59. package/dist/plugins/devices-zigbee2mqtt/mappings/definitions/covers.yaml +5 -4
  60. package/dist/plugins/devices-zigbee2mqtt/models/config.model.d.ts +10 -0
  61. package/dist/plugins/devices-zigbee2mqtt/models/config.model.js +108 -3
  62. package/dist/plugins/devices-zigbee2mqtt/models/config.model.js.map +1 -1
  63. package/dist/plugins/devices-zigbee2mqtt/platforms/zigbee2mqtt.device.platform.d.ts +3 -4
  64. package/dist/plugins/devices-zigbee2mqtt/platforms/zigbee2mqtt.device.platform.js +11 -22
  65. package/dist/plugins/devices-zigbee2mqtt/platforms/zigbee2mqtt.device.platform.js.map +1 -1
  66. package/dist/plugins/devices-zigbee2mqtt/services/base-client-adapter.d.ts +35 -0
  67. package/dist/plugins/devices-zigbee2mqtt/services/base-client-adapter.js +265 -0
  68. package/dist/plugins/devices-zigbee2mqtt/services/base-client-adapter.js.map +1 -0
  69. package/dist/plugins/devices-zigbee2mqtt/services/device-mapper.service.js +6 -5
  70. package/dist/plugins/devices-zigbee2mqtt/services/device-mapper.service.js.map +1 -1
  71. package/dist/plugins/devices-zigbee2mqtt/services/mqtt-client-adapter.service.d.ts +4 -26
  72. package/dist/plugins/devices-zigbee2mqtt/services/mqtt-client-adapter.service.js +16 -265
  73. package/dist/plugins/devices-zigbee2mqtt/services/mqtt-client-adapter.service.js.map +1 -1
  74. package/dist/plugins/devices-zigbee2mqtt/services/virtual-property.types.js +0 -16
  75. package/dist/plugins/devices-zigbee2mqtt/services/virtual-property.types.js.map +1 -1
  76. package/dist/plugins/devices-zigbee2mqtt/services/ws-client-adapter.service.d.ts +14 -0
  77. package/dist/plugins/devices-zigbee2mqtt/services/ws-client-adapter.service.js +199 -0
  78. package/dist/plugins/devices-zigbee2mqtt/services/ws-client-adapter.service.js.map +1 -0
  79. package/dist/plugins/devices-zigbee2mqtt/services/zigbee2mqtt-config-validator.service.d.ts +2 -0
  80. package/dist/plugins/devices-zigbee2mqtt/services/zigbee2mqtt-config-validator.service.js +69 -0
  81. package/dist/plugins/devices-zigbee2mqtt/services/zigbee2mqtt-config-validator.service.js.map +1 -1
  82. package/dist/plugins/devices-zigbee2mqtt/services/zigbee2mqtt.service.d.ts +8 -1
  83. package/dist/plugins/devices-zigbee2mqtt/services/zigbee2mqtt.service.js +86 -32
  84. package/dist/plugins/devices-zigbee2mqtt/services/zigbee2mqtt.service.js.map +1 -1
  85. package/dist/tsconfig.build.tsbuildinfo +1 -1
  86. package/package.json +2 -2
@@ -124,9 +124,18 @@ let UpdateService = UpdateService_1 = class UpdateService {
124
124
  error: this.updateStatus.error,
125
125
  });
126
126
  }
127
- async checkServerUpdate(channel = 'latest') {
128
- const cached = this.cachedServerInfo.get(channel);
129
- const cacheTime = this.serverCacheTimestamp.get(channel) ?? 0;
127
+ detectChannel(version) {
128
+ const v = version ?? this.getCurrentVersion();
129
+ if (v.includes('-alpha'))
130
+ return 'alpha';
131
+ if (v.includes('-beta'))
132
+ return 'beta';
133
+ return 'latest';
134
+ }
135
+ async checkServerUpdate(channel) {
136
+ const resolvedChannel = channel ?? this.detectChannel();
137
+ const cached = this.cachedServerInfo.get(resolvedChannel);
138
+ const cacheTime = this.serverCacheTimestamp.get(resolvedChannel) ?? 0;
130
139
  if (cached && Date.now() - cacheTime < this.CACHE_TTL_MS) {
131
140
  return cached;
132
141
  }
@@ -135,10 +144,10 @@ let UpdateService = UpdateService_1 = class UpdateService {
135
144
  try {
136
145
  let latestVersion = null;
137
146
  if (installType === 'image') {
138
- latestVersion = await this.fetchLatestVersionFromGitHub(channel);
147
+ latestVersion = await this.fetchLatestVersionFromGitHub(resolvedChannel);
139
148
  }
140
149
  else {
141
- latestVersion = await this.fetchLatestVersionFromNpm(channel);
150
+ latestVersion = await this.fetchLatestVersionFromNpm(resolvedChannel);
142
151
  }
143
152
  let updateAvailable = false;
144
153
  let updateType = null;
@@ -155,8 +164,8 @@ let UpdateService = UpdateService_1 = class UpdateService {
155
164
  updateAvailable,
156
165
  updateType,
157
166
  };
158
- this.cachedServerInfo.set(channel, result);
159
- this.serverCacheTimestamp.set(channel, Date.now());
167
+ this.cachedServerInfo.set(resolvedChannel, result);
168
+ this.serverCacheTimestamp.set(resolvedChannel, Date.now());
160
169
  return result;
161
170
  }
162
171
  catch (error) {
@@ -172,16 +181,25 @@ let UpdateService = UpdateService_1 = class UpdateService {
172
181
  }
173
182
  async fetchLatestVersionFromGitHub(channel) {
174
183
  if (channel === 'latest') {
175
- const response = await fetch(this.GITHUB_VERSION_JSON_URL, {
176
- headers: { 'User-Agent': 'FastyBird-SmartPanel' },
177
- signal: AbortSignal.timeout(UpdateService_1.FETCH_TIMEOUT_MS),
178
- });
179
- if (!response.ok) {
180
- throw new Error(`GitHub version.json returned ${response.status}`);
184
+ try {
185
+ const response = await fetch(this.GITHUB_VERSION_JSON_URL, {
186
+ headers: { 'User-Agent': 'FastyBird-SmartPanel' },
187
+ signal: AbortSignal.timeout(UpdateService_1.FETCH_TIMEOUT_MS),
188
+ });
189
+ if (response.ok) {
190
+ const data = (await response.json());
191
+ return data.version?.replace(/^v/, '') ?? null;
192
+ }
193
+ this.logger.debug(`Direct version.json returned ${response.status}, falling back to releases API`);
194
+ }
195
+ catch {
196
+ this.logger.debug('Direct version.json fetch failed, falling back to releases API');
181
197
  }
182
- const data = (await response.json());
183
- return data.version?.replace(/^v/, '') ?? null;
198
+ return this.fetchVersionFromReleasesApi(channel, false);
184
199
  }
200
+ return this.fetchVersionFromReleasesApi(channel, true);
201
+ }
202
+ async fetchVersionFromReleasesApi(channel, prereleaseOnly) {
185
203
  const response = await fetch(`${this.GITHUB_PRERELEASE_API_URL}?per_page=20`, {
186
204
  headers: {
187
205
  Accept: 'application/vnd.github.v3+json',
@@ -194,7 +212,9 @@ let UpdateService = UpdateService_1 = class UpdateService {
194
212
  }
195
213
  const releases = (await response.json());
196
214
  for (const release of releases) {
197
- if (!release.prerelease)
215
+ if (prereleaseOnly && !release.prerelease)
216
+ continue;
217
+ if (!prereleaseOnly && release.prerelease)
198
218
  continue;
199
219
  const versionAsset = release.assets.find((a) => a.name === 'version.json');
200
220
  if (!versionAsset)
@@ -263,7 +283,7 @@ let UpdateService = UpdateService_1 = class UpdateService {
263
283
  this.logger.warn(`No assets found in release v${cleanVersion}`);
264
284
  return null;
265
285
  }
266
- const backendAsset = assets.find((a) => a.name.includes('backend') && a.name.endsWith('.tar.gz'));
286
+ const backendAsset = assets.find((a) => a.name.startsWith('smart-panel-server-') && a.name.endsWith('.tar.gz'));
267
287
  if (!backendAsset) {
268
288
  this.logger.warn(`No backend tarball found in release v${cleanVersion}`);
269
289
  return null;
@@ -1 +1 @@
1
- {"version":3,"file":"update.service.js","sourceRoot":"","sources":["../../../../src/modules/system/services/update.service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"update.service.js","sourceRoot":"","sources":["../../../../src/modules/system/services/update.service.ts"],"names":[],"mappings":"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"}
@@ -5,6 +5,7 @@ import { DeviceConnectivityService } from '../../../modules/devices/services/dev
5
5
  import { DevicesService } from '../../../modules/devices/services/devices.service';
6
6
  import { ShellyNgChannelEntity, ShellyNgChannelPropertyEntity, ShellyNgDeviceEntity } from '../entities/devices-shelly-ng.entity';
7
7
  import { PropertyMappingStorageService, TransformerRegistry } from '../mappings';
8
+ import { DeviceAddressService } from '../services/device-address.service';
8
9
  import { DeviceManagerService } from '../services/device-manager.service';
9
10
  import { ShellyDeviceDelegate } from './shelly-device.delegate';
10
11
  type MaybeNet = {
@@ -21,6 +22,7 @@ export declare class DelegatesManagerService {
21
22
  private readonly channelsPropertiesService;
22
23
  private readonly deviceConnectivityService;
23
24
  private readonly deviceManagerService;
25
+ private readonly deviceAddressService;
24
26
  private readonly propertyMappingStorage;
25
27
  private readonly transformerRegistry;
26
28
  private readonly logger;
@@ -33,9 +35,14 @@ export declare class DelegatesManagerService {
33
35
  private readonly pendingWrites;
34
36
  private readonly propertiesMap;
35
37
  private readonly delegateDeviceIds;
38
+ private readonly delegateToIdentifier;
39
+ private readonly identifierToDelegates;
40
+ private readonly delegateConnectedState;
36
41
  private readonly insertGeneration;
37
42
  private readonly deviceLocks;
38
- constructor(devicesService: DevicesService, channelsService: ChannelsService, channelsPropertiesService: ChannelsPropertiesService, deviceConnectivityService: DeviceConnectivityService, deviceManagerService: DeviceManagerService, propertyMappingStorage: PropertyMappingStorageService, transformerRegistry: TransformerRegistry);
43
+ private readonly canonicalMacLocks;
44
+ private readonly connectedDelegatesPerDevice;
45
+ constructor(devicesService: DevicesService, channelsService: ChannelsService, channelsPropertiesService: ChannelsPropertiesService, deviceConnectivityService: DeviceConnectivityService, deviceManagerService: DeviceManagerService, deviceAddressService: DeviceAddressService, propertyMappingStorage: PropertyMappingStorageService, transformerRegistry: TransformerRegistry);
39
46
  get(id: Device['id']): ShellyDeviceDelegate | undefined;
40
47
  insert(shelly: Device & MaybeNet, force?: boolean): Promise<ShellyDeviceDelegate>;
41
48
  private performInsert;
@@ -53,8 +60,11 @@ export declare class DelegatesManagerService {
53
60
  private handleNumericChange;
54
61
  private scheduleWrite;
55
62
  private writeValueToProperty;
63
+ private resolvePropertyHandler;
64
+ private resolveChannelHandler;
56
65
  detach(): void;
57
66
  destroy(): void;
67
+ private withCanonicalMacLock;
58
68
  private withDeviceLock;
59
69
  }
60
70
  export {};
@@ -24,16 +24,18 @@ const devices_shelly_ng_exceptions_1 = require("../devices-shelly-ng.exceptions"
24
24
  const update_channel_property_dto_1 = require("../dto/update-channel-property.dto");
25
25
  const mappings_1 = require("../mappings");
26
26
  const transformers_1 = require("../mappings/transformers/transformers");
27
+ const device_address_service_1 = require("../services/device-address.service");
27
28
  const device_manager_service_1 = require("../services/device-manager.service");
28
29
  const transform_utils_2 = require("../utils/transform.utils");
29
30
  const shelly_device_delegate_1 = require("./shelly-device.delegate");
30
31
  let DelegatesManagerService = class DelegatesManagerService {
31
- constructor(devicesService, channelsService, channelsPropertiesService, deviceConnectivityService, deviceManagerService, propertyMappingStorage, transformerRegistry) {
32
+ constructor(devicesService, channelsService, channelsPropertiesService, deviceConnectivityService, deviceManagerService, deviceAddressService, propertyMappingStorage, transformerRegistry) {
32
33
  this.devicesService = devicesService;
33
34
  this.channelsService = channelsService;
34
35
  this.channelsPropertiesService = channelsPropertiesService;
35
36
  this.deviceConnectivityService = deviceConnectivityService;
36
37
  this.deviceManagerService = deviceManagerService;
38
+ this.deviceAddressService = deviceAddressService;
37
39
  this.propertyMappingStorage = propertyMappingStorage;
38
40
  this.transformerRegistry = transformerRegistry;
39
41
  this.logger = (0, logger_1.createExtensionLogger)(devices_shelly_ng_constants_1.DEVICES_SHELLY_NG_PLUGIN_NAME, 'DelegatesManagerService');
@@ -46,8 +48,13 @@ let DelegatesManagerService = class DelegatesManagerService {
46
48
  this.pendingWrites = new Map();
47
49
  this.propertiesMap = new Map();
48
50
  this.delegateDeviceIds = new Map();
51
+ this.delegateToIdentifier = new Map();
52
+ this.identifierToDelegates = new Map();
53
+ this.delegateConnectedState = new Map();
49
54
  this.insertGeneration = new Map();
50
55
  this.deviceLocks = new Map();
56
+ this.canonicalMacLocks = new Map();
57
+ this.connectedDelegatesPerDevice = new Map();
51
58
  }
52
59
  get(id) {
53
60
  return this.delegates.get(id);
@@ -68,34 +75,57 @@ let DelegatesManagerService = class DelegatesManagerService {
68
75
  this.insertGeneration.set(shelly.id, generation);
69
76
  const delegate = new shelly_device_delegate_1.ShellyDeviceDelegate(shelly);
70
77
  this.delegates.set(shelly.id, delegate);
71
- const hostname = shelly.wifi?.sta_ip ?? shelly.ethernet?.ip ?? null;
72
- if (hostname === null) {
78
+ const wifiIp = shelly.wifi?.sta_ip ?? null;
79
+ const ethernetIp = shelly.ethernet?.ip ?? null;
80
+ if (ethernetIp === null && wifiIp === null) {
73
81
  throw new devices_shelly_ng_exceptions_1.DevicesShellyNgException('Missing device hostname or IP address');
74
82
  }
75
- let device = await this.devicesService.findOneBy('identifier', shelly.id, devices_shelly_ng_constants_1.DEVICES_SHELLY_NG_TYPE);
76
- let isNewDevice = false;
77
- if (device === null) {
78
- try {
79
- device = await this.devicesService.create({
80
- type: devices_shelly_ng_constants_1.DEVICES_SHELLY_NG_TYPE,
81
- category: this.determineCategory(delegate),
82
- identifier: shelly.id,
83
- hostname,
84
- name: shelly.system.config.device.name ?? shelly.modelName,
85
- });
86
- isNewDevice = true;
83
+ const canonicalMac = shelly.system?.config?.device?.mac ?? null;
84
+ const { device: resolvedDevice, isNewDevice } = await this.withCanonicalMacLock(canonicalMac, async () => {
85
+ let dev = await this.devicesService.findOneBy('identifier', shelly.id, devices_shelly_ng_constants_1.DEVICES_SHELLY_NG_TYPE);
86
+ if (!dev && canonicalMac) {
87
+ dev = (await this.deviceAddressService.findDeviceByCanonicalMac(canonicalMac)) ?? null;
88
+ if (dev) {
89
+ this.logger.log(`Device=${shelly.id} matched existing device=${dev.identifier} by canonical MAC=${canonicalMac} (multi-interface merge)`, { resource: dev.id });
90
+ }
87
91
  }
88
- catch (error) {
89
- device = await this.devicesService.findOneBy('identifier', shelly.id, devices_shelly_ng_constants_1.DEVICES_SHELLY_NG_TYPE);
90
- if (device === null) {
91
- throw error;
92
+ let created = false;
93
+ if (dev === null) {
94
+ try {
95
+ dev = await this.devicesService.create({
96
+ type: devices_shelly_ng_constants_1.DEVICES_SHELLY_NG_TYPE,
97
+ category: this.determineCategory(delegate),
98
+ identifier: shelly.id,
99
+ name: shelly.system.config.device.name ?? shelly.modelName,
100
+ });
101
+ created = true;
102
+ }
103
+ catch (error) {
104
+ dev = await this.devicesService.findOneBy('identifier', shelly.id, devices_shelly_ng_constants_1.DEVICES_SHELLY_NG_TYPE);
105
+ if (!dev && canonicalMac) {
106
+ dev = (await this.deviceAddressService.findDeviceByCanonicalMac(canonicalMac)) ?? null;
107
+ }
108
+ if (dev === null) {
109
+ throw error;
110
+ }
92
111
  }
93
112
  }
94
- }
113
+ if (canonicalMac && dev.canonicalMac !== (0, device_address_service_1.normalizeMac)(canonicalMac)) {
114
+ await this.deviceAddressService.setCanonicalMac(dev.id, canonicalMac);
115
+ }
116
+ return { device: dev, isNewDevice: created };
117
+ });
118
+ let device = resolvedDevice;
95
119
  this.delegateDeviceIds.set(delegate.id, device.id);
96
- if (isNewDevice) {
120
+ this.delegateToIdentifier.set(delegate.id, device.identifier);
121
+ const delegateSet = this.identifierToDelegates.get(device.identifier) ?? new Set();
122
+ delegateSet.add(delegate.id);
123
+ this.identifierToDelegates.set(device.identifier, delegateSet);
124
+ await this.deviceAddressService.syncAddresses(device.id, wifiIp, ethernetIp);
125
+ const existingChannel = await this.channelsService.findOneBy('category', devices_constants_1.ChannelCategory.DEVICE_INFORMATION, device.id, devices_shelly_ng_constants_1.DEVICES_SHELLY_NG_TYPE);
126
+ if (isNewDevice || existingChannel === null) {
97
127
  await this.deviceManagerService.createOrUpdate(device.id);
98
- device = await this.devicesService.findOneBy('identifier', shelly.id, devices_shelly_ng_constants_1.DEVICES_SHELLY_NG_TYPE);
128
+ device = await this.devicesService.findOne(device.id, devices_shelly_ng_constants_1.DEVICES_SHELLY_NG_TYPE);
99
129
  if (device === null) {
100
130
  throw new devices_shelly_ng_exceptions_1.DevicesShellyNgException('Device not found after provisioning');
101
131
  }
@@ -839,27 +869,84 @@ let DelegatesManagerService = class DelegatesManagerService {
839
869
  delegate.on('value', valueHandler);
840
870
  this.delegateValueHandlers.set(delegate.id, valueHandler);
841
871
  const connectionHandler = (state) => {
842
- this.deviceConnectivityService
843
- .setConnectionState(device.id, {
844
- state: state === null ? devices_constants_1.ConnectionState.UNKNOWN : state ? devices_constants_1.ConnectionState.CONNECTED : devices_constants_1.ConnectionState.DISCONNECTED,
845
- })
846
- .then(() => {
847
- if (state) {
872
+ const deviceDbId = this.delegateDeviceIds.get(delegate.id) ?? device.id;
873
+ const wasConnected = this.delegateConnectedState.get(delegate.id) ?? false;
874
+ if (state === true) {
875
+ if (wasConnected)
876
+ return;
877
+ this.delegateConnectedState.set(delegate.id, true);
878
+ const count = (this.connectedDelegatesPerDevice.get(deviceDbId) ?? 0) + 1;
879
+ this.connectedDelegatesPerDevice.set(deviceDbId, count);
880
+ this.deviceConnectivityService
881
+ .setConnectionState(deviceDbId, { state: devices_constants_1.ConnectionState.CONNECTED })
882
+ .catch((err) => {
883
+ this.logger.error(`Failed to set state=${devices_constants_1.ConnectionState.CONNECTED} for device=${delegate.id}`, {
884
+ resource: deviceDbId,
885
+ message: err.message,
886
+ stack: err.stack,
887
+ });
888
+ });
889
+ }
890
+ else if (state === false) {
891
+ if (!wasConnected)
892
+ return;
893
+ this.delegateConnectedState.set(delegate.id, false);
894
+ const count = Math.max(0, (this.connectedDelegatesPerDevice.get(deviceDbId) ?? 1) - 1);
895
+ this.connectedDelegatesPerDevice.set(deviceDbId, count);
896
+ if (count === 0) {
897
+ this.deviceConnectivityService
898
+ .setConnectionState(deviceDbId, { state: devices_constants_1.ConnectionState.DISCONNECTED })
899
+ .catch((err) => {
900
+ this.logger.error(`Failed to set state=DISCONNECTED for device=${delegate.id}`, {
901
+ resource: deviceDbId,
902
+ message: err.message,
903
+ stack: err.stack,
904
+ });
905
+ });
848
906
  }
849
907
  else {
908
+ this.logger.debug(`Device=${delegate.id} disconnected but ${count} other delegate(s) still connected`, {
909
+ resource: deviceDbId,
910
+ });
850
911
  }
851
- })
852
- .catch((err) => {
853
- this.logger.error(`Failed to set state=${state ? devices_constants_1.ConnectionState.CONNECTED : devices_constants_1.ConnectionState.DISCONNECTED} for device=${delegate.id}`, {
854
- resource: device.id,
855
- message: err.message,
856
- stack: err.stack,
857
- });
858
- });
912
+ }
913
+ else {
914
+ const identifier = this.delegateToIdentifier.get(delegate.id);
915
+ const siblingDelegates = identifier ? this.identifierToDelegates.get(identifier) : undefined;
916
+ const otherDelegatesRemain = siblingDelegates ? siblingDelegates.size > 1 : false;
917
+ const targetState = otherDelegatesRemain ? devices_constants_1.ConnectionState.DISCONNECTED : devices_constants_1.ConnectionState.UNKNOWN;
918
+ if (wasConnected) {
919
+ const count = Math.max(0, (this.connectedDelegatesPerDevice.get(deviceDbId) ?? 1) - 1);
920
+ this.connectedDelegatesPerDevice.set(deviceDbId, count);
921
+ if (count === 0) {
922
+ this.deviceConnectivityService
923
+ .setConnectionState(deviceDbId, { state: targetState })
924
+ .catch((err) => {
925
+ this.logger.error(`Failed to set state=${targetState} for device=${delegate.id}`, {
926
+ resource: deviceDbId,
927
+ message: err.message,
928
+ stack: err.stack,
929
+ });
930
+ });
931
+ }
932
+ }
933
+ else if ((this.connectedDelegatesPerDevice.get(deviceDbId) ?? 0) === 0) {
934
+ this.deviceConnectivityService.setConnectionState(deviceDbId, { state: targetState }).catch((err) => {
935
+ this.logger.error(`Failed to set state=${targetState} for device=${delegate.id}`, {
936
+ resource: deviceDbId,
937
+ message: err.message,
938
+ stack: err.stack,
939
+ });
940
+ });
941
+ }
942
+ this.delegateConnectedState.delete(delegate.id);
943
+ }
859
944
  };
860
945
  delegate.on('connected', connectionHandler);
861
946
  this.delegateConnectionHandlers.set(delegate.id, connectionHandler);
862
- connectionHandler(true);
947
+ if (delegate.connected) {
948
+ connectionHandler(true);
949
+ }
863
950
  this.logger.log(`Attached Shelly device=${delegate.id}`, { resource: device.id });
864
951
  return delegate;
865
952
  }
@@ -881,15 +968,21 @@ let DelegatesManagerService = class DelegatesManagerService {
881
968
  }
882
969
  else {
883
970
  const deviceDbId = this.delegateDeviceIds.get(deviceId) ?? deviceId;
884
- void this.deviceConnectivityService
885
- .setConnectionState(deviceDbId, { state: devices_constants_1.ConnectionState.UNKNOWN })
886
- .catch((err) => {
887
- this.logger.warn(`Failed to mark device=${delegate.id} as disconnected while removing delegate`, {
888
- resource: delegate.id,
889
- message: err.message,
890
- stack: err.stack,
971
+ if ((this.connectedDelegatesPerDevice.get(deviceDbId) ?? 0) === 0) {
972
+ const identifier = this.delegateToIdentifier.get(deviceId);
973
+ const siblingDelegates = identifier ? this.identifierToDelegates.get(identifier) : undefined;
974
+ const otherDelegatesRemain = siblingDelegates ? siblingDelegates.size > 1 : false;
975
+ const targetState = otherDelegatesRemain ? devices_constants_1.ConnectionState.DISCONNECTED : devices_constants_1.ConnectionState.UNKNOWN;
976
+ void this.deviceConnectivityService
977
+ .setConnectionState(deviceDbId, { state: targetState })
978
+ .catch((err) => {
979
+ this.logger.warn(`Failed to mark device=${delegate.id} as ${targetState} while removing delegate`, {
980
+ resource: delegate.id,
981
+ message: err.message,
982
+ stack: err.stack,
983
+ });
891
984
  });
892
- });
985
+ }
893
986
  }
894
987
  if (valueHandler) {
895
988
  delegate.off('value', valueHandler);
@@ -914,6 +1007,20 @@ let DelegatesManagerService = class DelegatesManagerService {
914
1007
  this.setChannelsHandlers.delete(key);
915
1008
  }
916
1009
  }
1010
+ const identifier = this.delegateToIdentifier.get(deviceId);
1011
+ if (identifier) {
1012
+ const delegateSet = this.identifierToDelegates.get(identifier);
1013
+ if (delegateSet) {
1014
+ delegateSet.delete(deviceId);
1015
+ if (delegateSet.size === 0) {
1016
+ this.identifierToDelegates.delete(identifier);
1017
+ const deviceDbId = this.delegateDeviceIds.get(deviceId);
1018
+ if (deviceDbId) {
1019
+ this.connectedDelegatesPerDevice.delete(deviceDbId);
1020
+ }
1021
+ }
1022
+ }
1023
+ }
917
1024
  const ids = this.propertiesMap.get(deviceId);
918
1025
  if (ids) {
919
1026
  for (const pid of ids) {
@@ -923,12 +1030,13 @@ let DelegatesManagerService = class DelegatesManagerService {
923
1030
  this.propertiesMap.delete(deviceId);
924
1031
  }
925
1032
  this.delegateDeviceIds.delete(deviceId);
1033
+ this.delegateToIdentifier.delete(deviceId);
926
1034
  this.insertGeneration.delete(deviceId);
927
1035
  this.delegates.delete(deviceId);
928
1036
  this.logger.log(`Detached Shelly device=${deviceId}`, { resource: deviceId });
929
1037
  }
930
1038
  async setChannelValue(device, channel, updates) {
931
- const handler = this.setChannelsHandlers.get(`${device.identifier}|${channel.id}`);
1039
+ const handler = this.resolveChannelHandler(device.identifier, channel.id);
932
1040
  if (!handler) {
933
1041
  return Promise.reject(new devices_shelly_ng_exceptions_1.DevicesShellyNgNotImplementedException('Multiple property writes are not supported by the component.'));
934
1042
  }
@@ -946,7 +1054,7 @@ let DelegatesManagerService = class DelegatesManagerService {
946
1054
  return handler(transformedUpdates);
947
1055
  }
948
1056
  async setPropertyValue(device, property, value) {
949
- const handler = this.setPropertiesHandlers.get(`${device.identifier}|${property.id}`);
1057
+ const handler = this.resolvePropertyHandler(device.identifier, property.id);
950
1058
  if (!handler) {
951
1059
  this.logger.warn(`Trying to write to device=${device.identifier} to not writable property=${property.id} value=${value}`, { resource: device.id });
952
1060
  return Promise.resolve(false);
@@ -1067,10 +1175,51 @@ let DelegatesManagerService = class DelegatesManagerService {
1067
1175
  value,
1068
1176
  }));
1069
1177
  }
1178
+ resolvePropertyHandler(deviceIdentifier, propertyId) {
1179
+ const delegateIds = this.identifierToDelegates.get(deviceIdentifier);
1180
+ if (!delegateIds)
1181
+ return undefined;
1182
+ let fallback;
1183
+ for (const delegateId of delegateIds) {
1184
+ const handler = this.setPropertiesHandlers.get(`${delegateId}|${propertyId}`);
1185
+ if (!handler)
1186
+ continue;
1187
+ if (this.delegateConnectedState.get(delegateId))
1188
+ return handler;
1189
+ fallback ??= handler;
1190
+ }
1191
+ return fallback;
1192
+ }
1193
+ resolveChannelHandler(deviceIdentifier, channelId) {
1194
+ const delegateIds = this.identifierToDelegates.get(deviceIdentifier);
1195
+ if (!delegateIds)
1196
+ return undefined;
1197
+ let fallback;
1198
+ for (const delegateId of delegateIds) {
1199
+ const handler = this.setChannelsHandlers.get(`${delegateId}|${channelId}`);
1200
+ if (!handler)
1201
+ continue;
1202
+ if (this.delegateConnectedState.get(delegateId))
1203
+ return handler;
1204
+ fallback ??= handler;
1205
+ }
1206
+ return fallback;
1207
+ }
1070
1208
  detach() {
1071
- for (const [deviceId] of this.delegates.entries()) {
1072
- this.performRemove(deviceId);
1209
+ for (const [, delegate] of this.delegates.entries()) {
1210
+ const valueHandler = this.delegateValueHandlers.get(delegate.id);
1211
+ const connectionHandler = this.delegateConnectionHandlers.get(delegate.id);
1212
+ if (valueHandler) {
1213
+ delegate.off('value', valueHandler);
1214
+ }
1215
+ if (connectionHandler) {
1216
+ delegate.off('connected', connectionHandler);
1217
+ }
1073
1218
  }
1219
+ this.delegates.clear();
1220
+ this.delegateValueHandlers.clear();
1221
+ this.delegateConnectionHandlers.clear();
1222
+ this.delegateDeviceIds.clear();
1074
1223
  this.changeHandlers.clear();
1075
1224
  this.setPropertiesHandlers.clear();
1076
1225
  this.setChannelsHandlers.clear();
@@ -1080,10 +1229,37 @@ let DelegatesManagerService = class DelegatesManagerService {
1080
1229
  }
1081
1230
  this.pendingWrites.clear();
1082
1231
  this.deviceLocks.clear();
1232
+ this.canonicalMacLocks.clear();
1233
+ this.connectedDelegatesPerDevice.clear();
1234
+ this.delegateToIdentifier.clear();
1235
+ this.identifierToDelegates.clear();
1236
+ this.delegateConnectedState.clear();
1237
+ this.insertGeneration.clear();
1083
1238
  }
1084
1239
  destroy() {
1085
1240
  this.detach();
1086
1241
  }
1242
+ async withCanonicalMacLock(canonicalMac, fn) {
1243
+ if (!canonicalMac) {
1244
+ return fn();
1245
+ }
1246
+ const pending = this.canonicalMacLocks.get(canonicalMac) ?? Promise.resolve();
1247
+ let resolveLock;
1248
+ const lock = new Promise((r) => {
1249
+ resolveLock = r;
1250
+ });
1251
+ this.canonicalMacLocks.set(canonicalMac, lock);
1252
+ await pending.catch(() => { });
1253
+ try {
1254
+ return await fn();
1255
+ }
1256
+ finally {
1257
+ resolveLock();
1258
+ if (this.canonicalMacLocks.get(canonicalMac) === lock) {
1259
+ this.canonicalMacLocks.delete(canonicalMac);
1260
+ }
1261
+ }
1262
+ }
1087
1263
  async withDeviceLock(deviceId, fn) {
1088
1264
  const pending = this.deviceLocks.get(deviceId) ?? Promise.resolve();
1089
1265
  let resolveLock;
@@ -1111,6 +1287,7 @@ exports.DelegatesManagerService = DelegatesManagerService = __decorate([
1111
1287
  channels_properties_service_1.ChannelsPropertiesService,
1112
1288
  device_connectivity_service_1.DeviceConnectivityService,
1113
1289
  device_manager_service_1.DeviceManagerService,
1290
+ device_address_service_1.DeviceAddressService,
1114
1291
  mappings_1.PropertyMappingStorageService,
1115
1292
  mappings_1.TransformerRegistry])
1116
1293
  ], DelegatesManagerService);