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

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 (219) hide show
  1. package/dist/app.module.js +5 -0
  2. package/dist/app.module.js.map +1 -1
  3. package/dist/migrations/1000000000000-InitialSetup.js +23 -13
  4. package/dist/migrations/1000000000000-InitialSetup.js.map +1 -1
  5. package/dist/migrations/1000000000001-AddSceneIcon.d.ts +6 -0
  6. package/dist/migrations/1000000000001-AddSceneIcon.js +22 -0
  7. package/dist/migrations/1000000000001-AddSceneIcon.js.map +1 -0
  8. package/dist/modules/auth/auth.module.js +1 -1
  9. package/dist/modules/auth/auth.module.js.map +1 -1
  10. package/dist/modules/dashboard/dashboard.module.js +1 -1
  11. package/dist/modules/dashboard/dashboard.module.js.map +1 -1
  12. package/dist/modules/devices/services/devices-type-mapper.service.d.ts +1 -1
  13. package/dist/modules/devices/services/devices.service.d.ts +1 -0
  14. package/dist/modules/devices/services/devices.service.js +22 -23
  15. package/dist/modules/devices/services/devices.service.js.map +1 -1
  16. package/dist/modules/scenes/dto/create-scene.dto.d.ts +1 -0
  17. package/dist/modules/scenes/dto/create-scene.dto.js +13 -0
  18. package/dist/modules/scenes/dto/create-scene.dto.js.map +1 -1
  19. package/dist/modules/scenes/dto/update-scene.dto.d.ts +1 -0
  20. package/dist/modules/scenes/dto/update-scene.dto.js +13 -0
  21. package/dist/modules/scenes/dto/update-scene.dto.js.map +1 -1
  22. package/dist/modules/scenes/entities/scenes.entity.d.ts +1 -0
  23. package/dist/modules/scenes/entities/scenes.entity.js +13 -0
  24. package/dist/modules/scenes/entities/scenes.entity.js.map +1 -1
  25. package/dist/modules/storage/models/config.model.js +2 -4
  26. package/dist/modules/storage/models/config.model.js.map +1 -1
  27. package/dist/modules/storage/storage.constants.d.ts +2 -0
  28. package/dist/modules/storage/storage.constants.js +3 -1
  29. package/dist/modules/storage/storage.constants.js.map +1 -1
  30. package/dist/modules/storage/storage.module.js +1 -3
  31. package/dist/modules/storage/storage.module.js.map +1 -1
  32. package/dist/modules/system/commands/update-panel.command.js +7 -12
  33. package/dist/modules/system/commands/update-panel.command.js.map +1 -1
  34. package/dist/modules/system/services/update.service.d.ts +2 -0
  35. package/dist/modules/system/services/update.service.js +37 -17
  36. package/dist/modules/system/services/update.service.js.map +1 -1
  37. package/dist/plugins/data-sources-device-channel/data-sources-device-channel.plugin.js +1 -1
  38. package/dist/plugins/data-sources-device-channel/data-sources-device-channel.plugin.js.map +1 -1
  39. package/dist/plugins/data-sources-weather/data-sources-weather.plugin.js +1 -1
  40. package/dist/plugins/data-sources-weather/data-sources-weather.plugin.js.map +1 -1
  41. package/dist/plugins/devices-home-assistant/devices-home-assistant.openapi.d.ts +2 -2
  42. package/dist/plugins/devices-home-assistant/devices-home-assistant.plugin.js +3 -1
  43. package/dist/plugins/devices-home-assistant/devices-home-assistant.plugin.js.map +1 -1
  44. package/dist/plugins/devices-home-assistant/dto/helper-mapping-preview.dto.d.ts +1 -0
  45. package/dist/plugins/devices-home-assistant/dto/helper-mapping-preview.dto.js +14 -0
  46. package/dist/plugins/devices-home-assistant/dto/helper-mapping-preview.dto.js.map +1 -1
  47. package/dist/plugins/devices-home-assistant/models/config.model.d.ts +1 -0
  48. package/dist/plugins/devices-home-assistant/models/config.model.js +12 -0
  49. package/dist/plugins/devices-home-assistant/models/config.model.js.map +1 -1
  50. package/dist/plugins/devices-home-assistant/platforms/home-assistant.device.platform.d.ts +3 -1
  51. package/dist/plugins/devices-home-assistant/platforms/home-assistant.device.platform.js +14 -2
  52. package/dist/plugins/devices-home-assistant/platforms/home-assistant.device.platform.js.map +1 -1
  53. package/dist/plugins/devices-home-assistant/services/device-adoption.service.js +2 -2
  54. package/dist/plugins/devices-home-assistant/services/device-adoption.service.js.map +1 -1
  55. package/dist/plugins/devices-home-assistant/services/ha-supervisor.service.d.ts +10 -0
  56. package/dist/plugins/devices-home-assistant/services/ha-supervisor.service.js +47 -0
  57. package/dist/plugins/devices-home-assistant/services/ha-supervisor.service.js.map +1 -0
  58. package/dist/plugins/devices-home-assistant/services/helper-adoption.service.js +1 -7
  59. package/dist/plugins/devices-home-assistant/services/helper-adoption.service.js.map +1 -1
  60. package/dist/plugins/devices-home-assistant/services/home-assistant-config-validator.service.d.ts +3 -1
  61. package/dist/plugins/devices-home-assistant/services/home-assistant-config-validator.service.js +9 -3
  62. package/dist/plugins/devices-home-assistant/services/home-assistant-config-validator.service.js.map +1 -1
  63. package/dist/plugins/devices-home-assistant/services/home-assistant.http.service.d.ts +3 -1
  64. package/dist/plugins/devices-home-assistant/services/home-assistant.http.service.js +19 -7
  65. package/dist/plugins/devices-home-assistant/services/home-assistant.http.service.js.map +1 -1
  66. package/dist/plugins/devices-home-assistant/services/home-assistant.ws.service.d.ts +3 -1
  67. package/dist/plugins/devices-home-assistant/services/home-assistant.ws.service.js +23 -4
  68. package/dist/plugins/devices-home-assistant/services/home-assistant.ws.service.js.map +1 -1
  69. package/dist/plugins/devices-reterminal/devices-reterminal.plugin.js +1 -1
  70. package/dist/plugins/devices-reterminal/devices-reterminal.plugin.js.map +1 -1
  71. package/dist/plugins/devices-shelly-ng/delegates/delegates-manager.service.d.ts +11 -1
  72. package/dist/plugins/devices-shelly-ng/delegates/delegates-manager.service.js +226 -49
  73. package/dist/plugins/devices-shelly-ng/delegates/delegates-manager.service.js.map +1 -1
  74. package/dist/plugins/devices-shelly-ng/devices-shelly-ng.constants.d.ts +5 -0
  75. package/dist/plugins/devices-shelly-ng/devices-shelly-ng.constants.js +10 -1
  76. package/dist/plugins/devices-shelly-ng/devices-shelly-ng.constants.js.map +1 -1
  77. package/dist/plugins/devices-shelly-ng/devices-shelly-ng.plugin.d.ts +5 -1
  78. package/dist/plugins/devices-shelly-ng/devices-shelly-ng.plugin.js +23 -4
  79. package/dist/plugins/devices-shelly-ng/devices-shelly-ng.plugin.js.map +1 -1
  80. package/dist/plugins/devices-shelly-ng/dto/create-device.dto.d.ts +1 -1
  81. package/dist/plugins/devices-shelly-ng/dto/create-device.dto.js +11 -12
  82. package/dist/plugins/devices-shelly-ng/dto/create-device.dto.js.map +1 -1
  83. package/dist/plugins/devices-shelly-ng/dto/update-device.dto.d.ts +2 -1
  84. package/dist/plugins/devices-shelly-ng/dto/update-device.dto.js +19 -4
  85. package/dist/plugins/devices-shelly-ng/dto/update-device.dto.js.map +1 -1
  86. package/dist/plugins/devices-shelly-ng/entities/devices-shelly-ng.entity.d.ts +6 -1
  87. package/dist/plugins/devices-shelly-ng/entities/devices-shelly-ng.entity.js +38 -6
  88. package/dist/plugins/devices-shelly-ng/entities/devices-shelly-ng.entity.js.map +1 -1
  89. package/dist/plugins/devices-shelly-ng/entities/shelly-ng-device-address.entity.d.ts +10 -0
  90. package/dist/plugins/devices-shelly-ng/entities/shelly-ng-device-address.entity.js +69 -0
  91. package/dist/plugins/devices-shelly-ng/entities/shelly-ng-device-address.entity.js.map +1 -0
  92. package/dist/plugins/devices-shelly-ng/services/database-discoverer.service.d.ts +3 -1
  93. package/dist/plugins/devices-shelly-ng/services/database-discoverer.service.js +19 -7
  94. package/dist/plugins/devices-shelly-ng/services/database-discoverer.service.js.map +1 -1
  95. package/dist/plugins/devices-shelly-ng/services/device-address.service.d.ts +22 -0
  96. package/dist/plugins/devices-shelly-ng/services/device-address.service.js +149 -0
  97. package/dist/plugins/devices-shelly-ng/services/device-address.service.js.map +1 -0
  98. package/dist/plugins/devices-shelly-ng/services/device-manager.service.d.ts +3 -1
  99. package/dist/plugins/devices-shelly-ng/services/device-manager.service.js +20 -7
  100. package/dist/plugins/devices-shelly-ng/services/device-manager.service.js.map +1 -1
  101. package/dist/plugins/devices-shelly-ng/services/shelly-ng.service.js +18 -3
  102. package/dist/plugins/devices-shelly-ng/services/shelly-ng.service.js.map +1 -1
  103. package/dist/plugins/devices-shelly-ng/subscribers/device-entity.subscriber.d.ts +6 -2
  104. package/dist/plugins/devices-shelly-ng/subscribers/device-entity.subscriber.js +75 -6
  105. package/dist/plugins/devices-shelly-ng/subscribers/device-entity.subscriber.js.map +1 -1
  106. package/dist/plugins/devices-shelly-v1/devices-shelly-v1.plugin.js +1 -1
  107. package/dist/plugins/devices-shelly-v1/devices-shelly-v1.plugin.js.map +1 -1
  108. package/dist/plugins/devices-third-party/devices-third-party.plugin.js +1 -1
  109. package/dist/plugins/devices-third-party/devices-third-party.plugin.js.map +1 -1
  110. package/dist/plugins/devices-wled/devices-wled.plugin.js +1 -1
  111. package/dist/plugins/devices-wled/devices-wled.plugin.js.map +1 -1
  112. package/dist/plugins/devices-zigbee2mqtt/devices-zigbee2mqtt.constants.d.ts +4 -0
  113. package/dist/plugins/devices-zigbee2mqtt/devices-zigbee2mqtt.constants.js +5 -1
  114. package/dist/plugins/devices-zigbee2mqtt/devices-zigbee2mqtt.constants.js.map +1 -1
  115. package/dist/plugins/devices-zigbee2mqtt/devices-zigbee2mqtt.openapi.d.ts +2 -2
  116. package/dist/plugins/devices-zigbee2mqtt/devices-zigbee2mqtt.openapi.js +2 -0
  117. package/dist/plugins/devices-zigbee2mqtt/devices-zigbee2mqtt.openapi.js.map +1 -1
  118. package/dist/plugins/devices-zigbee2mqtt/devices-zigbee2mqtt.plugin.js +12 -7
  119. package/dist/plugins/devices-zigbee2mqtt/devices-zigbee2mqtt.plugin.js.map +1 -1
  120. package/dist/plugins/devices-zigbee2mqtt/dto/update-config.dto.d.ts +10 -0
  121. package/dist/plugins/devices-zigbee2mqtt/dto/update-config.dto.js +117 -3
  122. package/dist/plugins/devices-zigbee2mqtt/dto/update-config.dto.js.map +1 -1
  123. package/dist/plugins/devices-zigbee2mqtt/interfaces/zigbee2mqtt.interface.d.ts +8 -0
  124. package/dist/plugins/devices-zigbee2mqtt/mappings/definitions/covers.yaml +5 -4
  125. package/dist/plugins/devices-zigbee2mqtt/models/config.model.d.ts +10 -0
  126. package/dist/plugins/devices-zigbee2mqtt/models/config.model.js +108 -3
  127. package/dist/plugins/devices-zigbee2mqtt/models/config.model.js.map +1 -1
  128. package/dist/plugins/devices-zigbee2mqtt/platforms/zigbee2mqtt.device.platform.d.ts +3 -4
  129. package/dist/plugins/devices-zigbee2mqtt/platforms/zigbee2mqtt.device.platform.js +11 -22
  130. package/dist/plugins/devices-zigbee2mqtt/platforms/zigbee2mqtt.device.platform.js.map +1 -1
  131. package/dist/plugins/devices-zigbee2mqtt/services/base-client-adapter.d.ts +35 -0
  132. package/dist/plugins/devices-zigbee2mqtt/services/base-client-adapter.js +265 -0
  133. package/dist/plugins/devices-zigbee2mqtt/services/base-client-adapter.js.map +1 -0
  134. package/dist/plugins/devices-zigbee2mqtt/services/device-mapper.service.js +6 -5
  135. package/dist/plugins/devices-zigbee2mqtt/services/device-mapper.service.js.map +1 -1
  136. package/dist/plugins/devices-zigbee2mqtt/services/mqtt-client-adapter.service.d.ts +4 -26
  137. package/dist/plugins/devices-zigbee2mqtt/services/mqtt-client-adapter.service.js +16 -265
  138. package/dist/plugins/devices-zigbee2mqtt/services/mqtt-client-adapter.service.js.map +1 -1
  139. package/dist/plugins/devices-zigbee2mqtt/services/virtual-property.types.js +0 -16
  140. package/dist/plugins/devices-zigbee2mqtt/services/virtual-property.types.js.map +1 -1
  141. package/dist/plugins/devices-zigbee2mqtt/services/ws-client-adapter.service.d.ts +14 -0
  142. package/dist/plugins/devices-zigbee2mqtt/services/ws-client-adapter.service.js +199 -0
  143. package/dist/plugins/devices-zigbee2mqtt/services/ws-client-adapter.service.js.map +1 -0
  144. package/dist/plugins/devices-zigbee2mqtt/services/zigbee2mqtt-config-validator.service.d.ts +2 -0
  145. package/dist/plugins/devices-zigbee2mqtt/services/zigbee2mqtt-config-validator.service.js +69 -0
  146. package/dist/plugins/devices-zigbee2mqtt/services/zigbee2mqtt-config-validator.service.js.map +1 -1
  147. package/dist/plugins/devices-zigbee2mqtt/services/zigbee2mqtt.service.d.ts +8 -1
  148. package/dist/plugins/devices-zigbee2mqtt/services/zigbee2mqtt.service.js +86 -32
  149. package/dist/plugins/devices-zigbee2mqtt/services/zigbee2mqtt.service.js.map +1 -1
  150. package/dist/{modules/storage/plugins/influx-v1/influx-v1.update-config.dto.d.ts → plugins/influx-v1/dto/update-config.dto.d.ts} +1 -1
  151. package/dist/{modules/storage/plugins/influx-v1/influx-v1.update-config.dto.js → plugins/influx-v1/dto/update-config.dto.js} +3 -3
  152. package/dist/plugins/influx-v1/dto/update-config.dto.js.map +1 -0
  153. package/dist/plugins/influx-v1/influx-v1.constants.js.map +1 -0
  154. package/dist/{modules/storage/plugins → plugins}/influx-v1/influx-v1.openapi.d.ts +1 -1
  155. package/dist/plugins/influx-v1/influx-v1.openapi.js +7 -0
  156. package/dist/plugins/influx-v1/influx-v1.openapi.js.map +1 -0
  157. package/dist/{modules/storage/plugins/influx-v1/influx-v1.module.d.ts → plugins/influx-v1/influx-v1.plugin.d.ts} +6 -6
  158. package/dist/{modules/storage/plugins/influx-v1/influx-v1.module.js → plugins/influx-v1/influx-v1.plugin.js} +22 -22
  159. package/dist/plugins/influx-v1/influx-v1.plugin.js.map +1 -0
  160. package/dist/{modules/storage/plugins/influx-v1/influx-v1.config.model.d.ts → plugins/influx-v1/models/config.model.d.ts} +1 -1
  161. package/dist/{modules/storage/plugins/influx-v1/influx-v1.config.model.js → plugins/influx-v1/models/config.model.js} +3 -3
  162. package/dist/plugins/influx-v1/models/config.model.js.map +1 -0
  163. package/dist/{modules/storage/plugins/influx-v1/influx-v1.plugin.d.ts → plugins/influx-v1/services/influx-v1.storage.d.ts} +3 -3
  164. package/dist/{modules/storage/plugins/influx-v1/influx-v1.plugin.js → plugins/influx-v1/services/influx-v1.storage.js} +9 -9
  165. package/dist/plugins/influx-v1/services/influx-v1.storage.js.map +1 -0
  166. package/dist/{modules/storage/plugins/memory/memory.update-config.dto.d.ts → plugins/memory-storage/dto/update-config.dto.d.ts} +1 -1
  167. package/dist/{modules/storage/plugins/memory/memory.update-config.dto.js → plugins/memory-storage/dto/update-config.dto.js} +5 -5
  168. package/dist/plugins/memory-storage/dto/update-config.dto.js.map +1 -0
  169. package/dist/{modules/storage/plugins/memory/memory.constants.js → plugins/memory-storage/memory-storage.constants.js} +1 -1
  170. package/dist/plugins/memory-storage/memory-storage.constants.js.map +1 -0
  171. package/dist/{modules/storage/plugins/memory/memory.openapi.d.ts → plugins/memory-storage/memory-storage.openapi.d.ts} +1 -1
  172. package/dist/plugins/memory-storage/memory-storage.openapi.js +7 -0
  173. package/dist/plugins/memory-storage/memory-storage.openapi.js.map +1 -0
  174. package/dist/plugins/memory-storage/memory-storage.plugin.d.ts +13 -0
  175. package/dist/{modules/storage/plugins/memory/memory.module.js → plugins/memory-storage/memory-storage.plugin.js} +24 -24
  176. package/dist/plugins/memory-storage/memory-storage.plugin.js.map +1 -0
  177. package/dist/{modules/storage/plugins/memory/memory.config.model.d.ts → plugins/memory-storage/models/config.model.d.ts} +1 -1
  178. package/dist/{modules/storage/plugins/memory/memory.config.model.js → plugins/memory-storage/models/config.model.js} +5 -5
  179. package/dist/plugins/memory-storage/models/config.model.js.map +1 -0
  180. package/dist/{modules/storage/plugins/memory → plugins/memory-storage/services}/in-memory-timeseries.store.d.ts +1 -1
  181. package/dist/{modules/storage/plugins/memory → plugins/memory-storage/services}/in-memory-timeseries.store.js +3 -3
  182. package/dist/plugins/memory-storage/services/in-memory-timeseries.store.js.map +1 -0
  183. package/dist/plugins/memory-storage/services/influxql-parser.js.map +1 -0
  184. package/dist/{modules/storage/plugins/memory/memory.plugin.d.ts → plugins/memory-storage/services/memory-storage.storage.d.ts} +3 -3
  185. package/dist/{modules/storage/plugins/memory/memory.plugin.js → plugins/memory-storage/services/memory-storage.storage.js} +8 -8
  186. package/dist/plugins/memory-storage/services/memory-storage.storage.js.map +1 -0
  187. package/dist/plugins/simulator/simulator.plugin.js +4 -4
  188. package/dist/plugins/simulator/simulator.plugin.js.map +1 -1
  189. package/dist/plugins/tiles-device-preview/tiles-device-preview.plugin.js +1 -1
  190. package/dist/plugins/tiles-device-preview/tiles-device-preview.plugin.js.map +1 -1
  191. package/dist/plugins/tiles-scene/tiles-scene.plugin.js +1 -1
  192. package/dist/plugins/tiles-scene/tiles-scene.plugin.js.map +1 -1
  193. package/dist/plugins/tiles-time/tiles-time.plugin.js +1 -1
  194. package/dist/plugins/weather-openweathermap-onecall/weather-openweathermap-onecall.plugin.js +1 -1
  195. package/dist/plugins/weather-openweathermap-onecall/weather-openweathermap-onecall.plugin.js.map +1 -1
  196. package/dist/tsconfig.build.tsbuildinfo +1 -1
  197. package/package.json +2 -2
  198. package/dist/modules/storage/plugins/influx-v1/influx-v1.config.model.js.map +0 -1
  199. package/dist/modules/storage/plugins/influx-v1/influx-v1.constants.js.map +0 -1
  200. package/dist/modules/storage/plugins/influx-v1/influx-v1.module.js.map +0 -1
  201. package/dist/modules/storage/plugins/influx-v1/influx-v1.openapi.js +0 -7
  202. package/dist/modules/storage/plugins/influx-v1/influx-v1.openapi.js.map +0 -1
  203. package/dist/modules/storage/plugins/influx-v1/influx-v1.plugin.js.map +0 -1
  204. package/dist/modules/storage/plugins/influx-v1/influx-v1.update-config.dto.js.map +0 -1
  205. package/dist/modules/storage/plugins/memory/in-memory-timeseries.store.js.map +0 -1
  206. package/dist/modules/storage/plugins/memory/influxql-parser.js.map +0 -1
  207. package/dist/modules/storage/plugins/memory/memory.config.model.js.map +0 -1
  208. package/dist/modules/storage/plugins/memory/memory.constants.js.map +0 -1
  209. package/dist/modules/storage/plugins/memory/memory.module.d.ts +0 -13
  210. package/dist/modules/storage/plugins/memory/memory.module.js.map +0 -1
  211. package/dist/modules/storage/plugins/memory/memory.openapi.js +0 -7
  212. package/dist/modules/storage/plugins/memory/memory.openapi.js.map +0 -1
  213. package/dist/modules/storage/plugins/memory/memory.plugin.js.map +0 -1
  214. package/dist/modules/storage/plugins/memory/memory.update-config.dto.js.map +0 -1
  215. /package/dist/{modules/storage/plugins → plugins}/influx-v1/influx-v1.constants.d.ts +0 -0
  216. /package/dist/{modules/storage/plugins → plugins}/influx-v1/influx-v1.constants.js +0 -0
  217. /package/dist/{modules/storage/plugins/memory/memory.constants.d.ts → plugins/memory-storage/memory-storage.constants.d.ts} +0 -0
  218. /package/dist/{modules/storage/plugins/memory → plugins/memory-storage/services}/influxql-parser.d.ts +0 -0
  219. /package/dist/{modules/storage/plugins/memory → plugins/memory-storage/services}/influxql-parser.js +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"virtual-property.types.js","sourceRoot":"","sources":["../../../../src/plugins/devices-zigbee2mqtt/services/virtual-property.types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"virtual-property.types.js","sourceRoot":"","sources":["../../../../src/plugins/devices-zigbee2mqtt/services/virtual-property.types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ import { Z2mSetPayload, Z2mWsConfig } from '../interfaces/zigbee2mqtt.interface';
2
+ import { Z2mBaseClientAdapter } from './base-client-adapter';
3
+ export declare class Z2mWsClientAdapterService extends Z2mBaseClientAdapter {
4
+ private ws;
5
+ private config;
6
+ constructor();
7
+ connect(config: Z2mWsConfig): Promise<void>;
8
+ disconnect(): Promise<void>;
9
+ publishCommand(friendlyName: string, payload: Z2mSetPayload): Promise<boolean>;
10
+ requestState(friendlyName: string, properties?: string[]): Promise<boolean>;
11
+ private buildWsUrl;
12
+ private handleWsMessage;
13
+ private scheduleReconnect;
14
+ }
@@ -0,0 +1,199 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ var __importDefault = (this && this.__importDefault) || function (mod) {
12
+ return (mod && mod.__esModule) ? mod : { "default": mod };
13
+ };
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ exports.Z2mWsClientAdapterService = void 0;
16
+ const ws_1 = __importDefault(require("ws"));
17
+ const common_1 = require("@nestjs/common");
18
+ const base_client_adapter_1 = require("./base-client-adapter");
19
+ let Z2mWsClientAdapterService = class Z2mWsClientAdapterService extends base_client_adapter_1.Z2mBaseClientAdapter {
20
+ constructor() {
21
+ super('WsClientAdapter');
22
+ this.ws = null;
23
+ this.config = null;
24
+ }
25
+ async connect(config) {
26
+ this.configBaseTopic = config.baseTopic;
27
+ this.clearReconnectTimer();
28
+ await this.disconnect();
29
+ this.config = config;
30
+ const wsUrl = this.buildWsUrl(config);
31
+ this.logger.log(`Connecting to Zigbee2MQTT WebSocket: ${wsUrl}`);
32
+ return new Promise((resolve, reject) => {
33
+ let settled = false;
34
+ try {
35
+ const timeoutId = setTimeout(() => {
36
+ if (!settled && !this.connected) {
37
+ settled = true;
38
+ this.logger.error('WebSocket connection timed out');
39
+ this.ws?.terminate();
40
+ this.ws = null;
41
+ reject(new Error('WebSocket connection timed out'));
42
+ }
43
+ }, config.connectTimeout);
44
+ this.ws = new ws_1.default(wsUrl);
45
+ this.ws.on('open', () => {
46
+ clearTimeout(timeoutId);
47
+ settled = true;
48
+ this.logger.log('Connected to Zigbee2MQTT WebSocket');
49
+ this.connected = true;
50
+ resolve();
51
+ });
52
+ this.ws.on('error', (error) => {
53
+ clearTimeout(timeoutId);
54
+ this.logger.error('WebSocket client error', {
55
+ message: error.message,
56
+ });
57
+ if (!settled && !this.connected) {
58
+ settled = true;
59
+ reject(error);
60
+ }
61
+ });
62
+ this.ws.on('close', () => {
63
+ clearTimeout(timeoutId);
64
+ const wasConnected = this.connected;
65
+ this.connected = false;
66
+ this.bridgeOnline = false;
67
+ this.ws = null;
68
+ this.logger.log('Disconnected from Zigbee2MQTT WebSocket');
69
+ if (wasConnected) {
70
+ this.scheduleReconnect();
71
+ }
72
+ });
73
+ this.ws.on('message', (data) => {
74
+ this.handleWsMessage(data);
75
+ });
76
+ }
77
+ catch (error) {
78
+ this.logger.error('Failed to create WebSocket client', {
79
+ message: error instanceof Error ? error.message : String(error),
80
+ });
81
+ reject(error instanceof Error ? error : new Error(String(error)));
82
+ }
83
+ });
84
+ }
85
+ async disconnect() {
86
+ this.clearReconnectTimer();
87
+ this.connected = false;
88
+ this.bridgeOnline = false;
89
+ this.config = null;
90
+ if (this.ws) {
91
+ this.logger.log('Disconnecting from Zigbee2MQTT WebSocket');
92
+ await new Promise((resolve) => {
93
+ if (!this.ws) {
94
+ resolve();
95
+ return;
96
+ }
97
+ const closingWs = this.ws;
98
+ closingWs.removeAllListeners();
99
+ const forceCloseTimer = setTimeout(() => {
100
+ closingWs.terminate();
101
+ if (this.ws === closingWs) {
102
+ this.ws = null;
103
+ }
104
+ resolve();
105
+ }, 2000);
106
+ closingWs.on('close', () => {
107
+ clearTimeout(forceCloseTimer);
108
+ if (this.ws === closingWs) {
109
+ this.ws = null;
110
+ }
111
+ resolve();
112
+ });
113
+ closingWs.close();
114
+ });
115
+ }
116
+ this.resetState();
117
+ }
118
+ async publishCommand(friendlyName, payload) {
119
+ if (!this.ws || !this.connected) {
120
+ this.logger.warn('Cannot publish: not connected to Zigbee2MQTT WebSocket');
121
+ return false;
122
+ }
123
+ const topic = `${friendlyName}/set`;
124
+ const message = { topic, payload };
125
+ this.logger.debug(`Sending WS command to ${topic}: ${JSON.stringify(payload)}`);
126
+ return new Promise((resolve) => {
127
+ this.ws?.send(JSON.stringify(message), (error) => {
128
+ if (error) {
129
+ this.logger.error(`Failed to send WS command to ${topic}`, {
130
+ message: error.message,
131
+ });
132
+ resolve(false);
133
+ }
134
+ else {
135
+ resolve(true);
136
+ }
137
+ });
138
+ });
139
+ }
140
+ async requestState(friendlyName, properties = []) {
141
+ if (!this.ws || !this.connected) {
142
+ return false;
143
+ }
144
+ const topic = `${friendlyName}/get`;
145
+ const payload = properties.length > 0 ? Object.fromEntries(properties.map((p) => [p, ''])) : { state: '' };
146
+ const message = { topic, payload };
147
+ return new Promise((resolve) => {
148
+ this.ws?.send(JSON.stringify(message), (error) => {
149
+ resolve(!error);
150
+ });
151
+ });
152
+ }
153
+ buildWsUrl(config) {
154
+ const protocol = config.secure ? 'wss' : 'ws';
155
+ return `${protocol}://${config.host}:${config.port}/api`;
156
+ }
157
+ handleWsMessage(data) {
158
+ try {
159
+ const raw = typeof data === 'string' ? data : Buffer.from(data).toString('utf-8');
160
+ const wsMessage = JSON.parse(raw);
161
+ if (!wsMessage.topic) {
162
+ this.logger.debug('Received WS message without topic, ignoring');
163
+ return;
164
+ }
165
+ const payloadStr = typeof wsMessage.payload === 'string' ? wsMessage.payload : JSON.stringify(wsMessage.payload);
166
+ this.handleMessage(wsMessage.topic, payloadStr, true);
167
+ }
168
+ catch (error) {
169
+ this.logger.warn('Failed to parse WebSocket message', {
170
+ message: error instanceof Error ? error.message : String(error),
171
+ });
172
+ }
173
+ }
174
+ scheduleReconnect() {
175
+ if (this.reconnectTimer || !this.config) {
176
+ return;
177
+ }
178
+ const interval = this.config.reconnectInterval;
179
+ this.logger.log(`Scheduling WebSocket reconnection in ${interval}ms`);
180
+ this.reconnectTimer = setTimeout(() => {
181
+ this.reconnectTimer = null;
182
+ if (!this.connected && this.config) {
183
+ this.connect(this.config).catch((error) => {
184
+ const errorMessage = error instanceof Error ? error.message : JSON.stringify(error);
185
+ this.logger.error('WebSocket reconnection failed', {
186
+ message: errorMessage,
187
+ });
188
+ this.scheduleReconnect();
189
+ });
190
+ }
191
+ }, interval);
192
+ }
193
+ };
194
+ exports.Z2mWsClientAdapterService = Z2mWsClientAdapterService;
195
+ exports.Z2mWsClientAdapterService = Z2mWsClientAdapterService = __decorate([
196
+ (0, common_1.Injectable)(),
197
+ __metadata("design:paramtypes", [])
198
+ ], Z2mWsClientAdapterService);
199
+ //# sourceMappingURL=ws-client-adapter.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ws-client-adapter.service.js","sourceRoot":"","sources":["../../../../src/plugins/devices-zigbee2mqtt/services/ws-client-adapter.service.ts"],"names":[],"mappings":"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"}
@@ -8,4 +8,6 @@ export declare class Zigbee2mqttConfigValidatorService implements IPluginConfigV
8
8
  constructor(pluginConfigValidator: PluginConfigValidatorService);
9
9
  onModuleInit(): void;
10
10
  validate(config: Record<string, unknown>): Promise<IConfigValidationResult>;
11
+ private validateMqtt;
12
+ private validateWs;
11
13
  }
@@ -8,9 +8,13 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
8
8
  var __metadata = (this && this.__metadata) || function (k, v) {
9
9
  if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
10
  };
11
+ var __importDefault = (this && this.__importDefault) || function (mod) {
12
+ return (mod && mod.__esModule) ? mod : { "default": mod };
13
+ };
11
14
  Object.defineProperty(exports, "__esModule", { value: true });
12
15
  exports.Zigbee2mqttConfigValidatorService = void 0;
13
16
  const mqtt_1 = require("mqtt");
17
+ const ws_1 = __importDefault(require("ws"));
14
18
  const common_1 = require("@nestjs/common");
15
19
  const logger_1 = require("../../../common/logger");
16
20
  const plugin_config_validator_service_1 = require("../../../modules/config/services/plugin-config-validator.service");
@@ -25,6 +29,13 @@ let Zigbee2mqttConfigValidatorService = class Zigbee2mqttConfigValidatorService
25
29
  this.pluginConfigValidator.register(this);
26
30
  }
27
31
  async validate(config) {
32
+ const connectionType = (config['connectionType'] ?? config['connection_type']) || 'mqtt';
33
+ if (connectionType === 'ws') {
34
+ return this.validateWs(config);
35
+ }
36
+ return this.validateMqtt(config);
37
+ }
38
+ async validateMqtt(config) {
28
39
  const mqtt = config['mqtt'];
29
40
  if (!mqtt) {
30
41
  return { valid: false, errors: [{ message: 'MQTT configuration is required' }] };
@@ -93,6 +104,64 @@ let Zigbee2mqttConfigValidatorService = class Zigbee2mqttConfigValidatorService
93
104
  });
94
105
  });
95
106
  }
107
+ async validateWs(config) {
108
+ const wsConfig = config['ws'];
109
+ if (!wsConfig) {
110
+ return { valid: false, errors: [{ message: 'WebSocket configuration is required' }] };
111
+ }
112
+ const host = wsConfig['host'];
113
+ const port = wsConfig['port'] || 8080;
114
+ const secure = wsConfig['secure'] === true;
115
+ if (!host) {
116
+ return { valid: false, errors: [{ message: 'WebSocket host is required', field: 'ws.host' }] };
117
+ }
118
+ const protocol = secure ? 'wss' : 'ws';
119
+ const wsUrl = `${protocol}://${host}:${port}/api`;
120
+ return new Promise((resolve) => {
121
+ const timeoutMs = 10000;
122
+ let settled = false;
123
+ const settle = (result) => {
124
+ if (settled)
125
+ return;
126
+ settled = true;
127
+ try {
128
+ ws.terminate();
129
+ }
130
+ catch {
131
+ }
132
+ resolve(result);
133
+ };
134
+ const timer = setTimeout(() => {
135
+ settle({
136
+ valid: false,
137
+ errors: [
138
+ {
139
+ message: 'Connection timed out — check Zigbee2MQTT host and port',
140
+ field: 'ws.host',
141
+ },
142
+ ],
143
+ });
144
+ }, timeoutMs);
145
+ const ws = new ws_1.default(wsUrl);
146
+ ws.on('open', () => {
147
+ clearTimeout(timer);
148
+ settle({ valid: true });
149
+ });
150
+ ws.on('error', (err) => {
151
+ clearTimeout(timer);
152
+ this.logger.error(`WebSocket connection test failed: ${err.message}`);
153
+ settle({
154
+ valid: false,
155
+ errors: [
156
+ {
157
+ message: `Cannot connect to Zigbee2MQTT WebSocket: ${err.message}`,
158
+ field: 'ws.host',
159
+ },
160
+ ],
161
+ });
162
+ });
163
+ });
164
+ }
96
165
  };
97
166
  exports.Zigbee2mqttConfigValidatorService = Zigbee2mqttConfigValidatorService;
98
167
  exports.Zigbee2mqttConfigValidatorService = Zigbee2mqttConfigValidatorService = __decorate([
@@ -1 +1 @@
1
- {"version":3,"file":"zigbee2mqtt-config-validator.service.js","sourceRoot":"","sources":["../../../../src/plugins/devices-zigbee2mqtt/services/zigbee2mqtt-config-validator.service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"zigbee2mqtt-config-validator.service.js","sourceRoot":"","sources":["../../../../src/plugins/devices-zigbee2mqtt/services/zigbee2mqtt-config-validator.service.ts"],"names":[],"mappings":"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"}
@@ -3,11 +3,14 @@ import { DeviceConnectivityService } from '../../../modules/devices/services/dev
3
3
  import { DevicesService } from '../../../modules/devices/services/devices.service';
4
4
  import { ConfigChangeResult, IManagedPluginService, ServiceState } from '../../../modules/extensions/services/managed-plugin-service.interface';
5
5
  import { PluginServiceManagerService } from '../../../modules/extensions/services/plugin-service-manager.service';
6
+ import { Z2mBaseClientAdapter } from './base-client-adapter';
6
7
  import { Z2mDeviceMapperService } from './device-mapper.service';
7
8
  import { Z2mMqttClientAdapterService } from './mqtt-client-adapter.service';
9
+ import { Z2mWsClientAdapterService } from './ws-client-adapter.service';
8
10
  export declare class Zigbee2mqttService implements IManagedPluginService {
9
11
  private readonly configService;
10
12
  private readonly mqttAdapter;
13
+ private readonly wsAdapter;
11
14
  private readonly deviceMapper;
12
15
  private readonly devicesService;
13
16
  private readonly deviceConnectivityService;
@@ -23,7 +26,9 @@ export declare class Zigbee2mqttService implements IManagedPluginService {
23
26
  private pendingDevices;
24
27
  private isSyncing;
25
28
  private transformersRestored;
26
- constructor(configService: ConfigService, mqttAdapter: Z2mMqttClientAdapterService, deviceMapper: Z2mDeviceMapperService, devicesService: DevicesService, deviceConnectivityService: DeviceConnectivityService, pluginServiceManager: PluginServiceManagerService);
29
+ private activeAdapter;
30
+ constructor(configService: ConfigService, mqttAdapter: Z2mMqttClientAdapterService, wsAdapter: Z2mWsClientAdapterService, deviceMapper: Z2mDeviceMapperService, devicesService: DevicesService, deviceConnectivityService: DeviceConnectivityService, pluginServiceManager: PluginServiceManagerService);
31
+ getActiveAdapter(): Z2mBaseClientAdapter;
27
32
  start(): Promise<void>;
28
33
  stop(): Promise<void>;
29
34
  getState(): ServiceState;
@@ -36,7 +41,9 @@ export declare class Zigbee2mqttService implements IManagedPluginService {
36
41
  private initialize;
37
42
  private doStart;
38
43
  private doStop;
44
+ private registerCallbacks;
39
45
  private buildMqttConfig;
46
+ private buildWsConfig;
40
47
  private handleBridgeOnline;
41
48
  private handleBridgeOffline;
42
49
  private handleDevicesReceived;
@@ -20,10 +20,12 @@ const plugin_service_manager_service_1 = require("../../../modules/extensions/se
20
20
  const devices_zigbee2mqtt_constants_1 = require("../devices-zigbee2mqtt.constants");
21
21
  const device_mapper_service_1 = require("./device-mapper.service");
22
22
  const mqtt_client_adapter_service_1 = require("./mqtt-client-adapter.service");
23
+ const ws_client_adapter_service_1 = require("./ws-client-adapter.service");
23
24
  let Zigbee2mqttService = class Zigbee2mqttService {
24
- constructor(configService, mqttAdapter, deviceMapper, devicesService, deviceConnectivityService, pluginServiceManager) {
25
+ constructor(configService, mqttAdapter, wsAdapter, deviceMapper, devicesService, deviceConnectivityService, pluginServiceManager) {
25
26
  this.configService = configService;
26
27
  this.mqttAdapter = mqttAdapter;
28
+ this.wsAdapter = wsAdapter;
27
29
  this.deviceMapper = deviceMapper;
28
30
  this.devicesService = devicesService;
29
31
  this.deviceConnectivityService = deviceConnectivityService;
@@ -39,15 +41,11 @@ let Zigbee2mqttService = class Zigbee2mqttService {
39
41
  this.pendingDevices = null;
40
42
  this.isSyncing = false;
41
43
  this.transformersRestored = false;
42
- this.mqttAdapter.setCallbacks({
43
- onBridgeOnline: () => this.handleBridgeOnline(),
44
- onBridgeOffline: () => this.handleBridgeOffline(),
45
- onDevicesReceived: (devices) => this.handleDevicesReceived(devices),
46
- onDeviceStateChanged: (friendlyName, state) => this.handleDeviceStateChanged(friendlyName, state),
47
- onDeviceAvailabilityChanged: (friendlyName, available) => this.handleDeviceAvailabilityChanged(friendlyName, available),
48
- onDeviceJoined: (ieeeAddress, friendlyName) => this.handleDeviceJoined(ieeeAddress, friendlyName),
49
- onDeviceLeft: (ieeeAddress, friendlyName) => this.handleDeviceLeft(ieeeAddress, friendlyName),
50
- });
44
+ this.activeAdapter = this.mqttAdapter;
45
+ this.registerCallbacks(this.activeAdapter);
46
+ }
47
+ getActiveAdapter() {
48
+ return this.activeAdapter;
51
49
  }
52
50
  async start() {
53
51
  await this.withLock(async () => {
@@ -99,21 +97,39 @@ let Zigbee2mqttService = class Zigbee2mqttService {
99
97
  if (this.state === 'started' && this.pluginConfig) {
100
98
  const oldConfig = this.pluginConfig;
101
99
  const newConfig = this.configService.getPluginConfig(devices_zigbee2mqtt_constants_1.DEVICES_ZIGBEE2MQTT_PLUGIN_NAME);
102
- const mqttChanged = oldConfig.mqtt.host !== newConfig.mqtt.host ||
103
- oldConfig.mqtt.port !== newConfig.mqtt.port ||
104
- oldConfig.mqtt.username !== newConfig.mqtt.username ||
105
- oldConfig.mqtt.password !== newConfig.mqtt.password ||
106
- oldConfig.mqtt.baseTopic !== newConfig.mqtt.baseTopic ||
107
- oldConfig.mqtt.clientId !== newConfig.mqtt.clientId;
108
- const tlsChanged = oldConfig.tls.enabled !== newConfig.tls.enabled ||
109
- oldConfig.tls.rejectUnauthorized !== newConfig.tls.rejectUnauthorized ||
110
- oldConfig.tls.ca !== newConfig.tls.ca ||
111
- oldConfig.tls.cert !== newConfig.tls.cert ||
112
- oldConfig.tls.key !== newConfig.tls.key;
113
- if (mqttChanged || tlsChanged) {
114
- this.logger.log('Config changed, restart required');
100
+ if (oldConfig.connectionType !== newConfig.connectionType) {
101
+ this.logger.log('Connection type changed, restart required');
115
102
  return Promise.resolve({ restartRequired: true });
116
103
  }
104
+ if (newConfig.connectionType === 'mqtt') {
105
+ const mqttChanged = oldConfig.mqtt.host !== newConfig.mqtt.host ||
106
+ oldConfig.mqtt.port !== newConfig.mqtt.port ||
107
+ oldConfig.mqtt.username !== newConfig.mqtt.username ||
108
+ oldConfig.mqtt.password !== newConfig.mqtt.password ||
109
+ oldConfig.mqtt.baseTopic !== newConfig.mqtt.baseTopic ||
110
+ oldConfig.mqtt.clientId !== newConfig.mqtt.clientId;
111
+ const tlsChanged = oldConfig.tls.enabled !== newConfig.tls.enabled ||
112
+ oldConfig.tls.rejectUnauthorized !== newConfig.tls.rejectUnauthorized ||
113
+ oldConfig.tls.ca !== newConfig.tls.ca ||
114
+ oldConfig.tls.cert !== newConfig.tls.cert ||
115
+ oldConfig.tls.key !== newConfig.tls.key;
116
+ if (mqttChanged || tlsChanged) {
117
+ this.logger.log('MQTT config changed, restart required');
118
+ return Promise.resolve({ restartRequired: true });
119
+ }
120
+ }
121
+ else {
122
+ const wsChanged = oldConfig.ws.host !== newConfig.ws.host ||
123
+ oldConfig.ws.port !== newConfig.ws.port ||
124
+ oldConfig.ws.baseTopic !== newConfig.ws.baseTopic ||
125
+ oldConfig.ws.secure !== newConfig.ws.secure ||
126
+ oldConfig.ws.connectTimeout !== newConfig.ws.connectTimeout ||
127
+ oldConfig.ws.reconnectInterval !== newConfig.ws.reconnectInterval;
128
+ if (wsChanged) {
129
+ this.logger.log('WebSocket config changed, restart required');
130
+ return Promise.resolve({ restartRequired: true });
131
+ }
132
+ }
117
133
  return Promise.resolve({ restartRequired: false });
118
134
  }
119
135
  this.pluginConfig = null;
@@ -126,16 +142,16 @@ let Zigbee2mqttService = class Zigbee2mqttService {
126
142
  }
127
143
  }
128
144
  isBridgeOnline() {
129
- return this.mqttAdapter.isBridgeOnline();
145
+ return this.activeAdapter.isBridgeOnline();
130
146
  }
131
147
  getRegisteredDevices() {
132
- return this.mqttAdapter.getRegisteredDevices();
148
+ return this.activeAdapter.getRegisteredDevices();
133
149
  }
134
150
  async requestDeviceState(friendlyName) {
135
- return this.mqttAdapter.requestState(friendlyName);
151
+ return this.activeAdapter.requestState(friendlyName);
136
152
  }
137
153
  getCachedState(friendlyName) {
138
- return this.mqttAdapter.getCachedState(friendlyName);
154
+ return this.activeAdapter.getCachedState(friendlyName);
139
155
  }
140
156
  async initialize() {
141
157
  const devices = await this.devicesService.findAll(devices_zigbee2mqtt_constants_1.DEVICES_ZIGBEE2MQTT_TYPE);
@@ -149,8 +165,23 @@ let Zigbee2mqttService = class Zigbee2mqttService {
149
165
  this.state = 'starting';
150
166
  this.logger.log('Starting Zigbee2MQTT plugin service');
151
167
  try {
152
- const mqttConfig = this.buildMqttConfig();
153
- await this.mqttAdapter.connect(mqttConfig);
168
+ const config = this.config;
169
+ const previousAdapter = this.activeAdapter;
170
+ this.activeAdapter = config.connectionType === 'ws' ? this.wsAdapter : this.mqttAdapter;
171
+ if (this.activeAdapter !== previousAdapter) {
172
+ previousAdapter.setCallbacks({});
173
+ this.registerCallbacks(this.activeAdapter);
174
+ }
175
+ if (config.connectionType === 'ws') {
176
+ const wsConfig = this.buildWsConfig();
177
+ this.logger.log('Using WebSocket connection to Zigbee2MQTT');
178
+ await this.activeAdapter.connect(wsConfig);
179
+ }
180
+ else {
181
+ const mqttConfig = this.buildMqttConfig();
182
+ this.logger.log('Using MQTT connection to Zigbee2MQTT');
183
+ await this.activeAdapter.connect(mqttConfig);
184
+ }
154
185
  this.logger.log('Zigbee2MQTT plugin service started successfully');
155
186
  this.state = 'started';
156
187
  }
@@ -168,7 +199,7 @@ let Zigbee2mqttService = class Zigbee2mqttService {
168
199
  this.transformersRestored = false;
169
200
  this.logger.log('Stopping Zigbee2MQTT plugin service');
170
201
  try {
171
- await this.mqttAdapter.disconnect();
202
+ await this.activeAdapter.disconnect();
172
203
  const devices = await this.devicesService.findAll(devices_zigbee2mqtt_constants_1.DEVICES_ZIGBEE2MQTT_TYPE);
173
204
  for (const device of devices) {
174
205
  await this.deviceConnectivityService.setConnectionState(device.id, {
@@ -185,6 +216,17 @@ let Zigbee2mqttService = class Zigbee2mqttService {
185
216
  this.state = 'stopped';
186
217
  }
187
218
  }
219
+ registerCallbacks(adapter) {
220
+ adapter.setCallbacks({
221
+ onBridgeOnline: () => this.handleBridgeOnline(),
222
+ onBridgeOffline: () => this.handleBridgeOffline(),
223
+ onDevicesReceived: (devices) => this.handleDevicesReceived(devices),
224
+ onDeviceStateChanged: (friendlyName, state) => this.handleDeviceStateChanged(friendlyName, state),
225
+ onDeviceAvailabilityChanged: (friendlyName, available) => this.handleDeviceAvailabilityChanged(friendlyName, available),
226
+ onDeviceJoined: (ieeeAddress, friendlyName) => this.handleDeviceJoined(ieeeAddress, friendlyName),
227
+ onDeviceLeft: (ieeeAddress, friendlyName) => this.handleDeviceLeft(ieeeAddress, friendlyName),
228
+ });
229
+ }
188
230
  buildMqttConfig() {
189
231
  const config = this.config;
190
232
  return {
@@ -209,6 +251,17 @@ let Zigbee2mqttService = class Zigbee2mqttService {
209
251
  : undefined,
210
252
  };
211
253
  }
254
+ buildWsConfig() {
255
+ const config = this.config;
256
+ return {
257
+ host: config.ws.host,
258
+ port: config.ws.port,
259
+ baseTopic: config.ws.baseTopic,
260
+ secure: config.ws.secure,
261
+ connectTimeout: config.ws.connectTimeout,
262
+ reconnectInterval: config.ws.reconnectInterval,
263
+ };
264
+ }
212
265
  async handleBridgeOnline() {
213
266
  this.logger.log('Bridge is online');
214
267
  this.bridgeOnline = true;
@@ -249,12 +302,12 @@ let Zigbee2mqttService = class Zigbee2mqttService {
249
302
  this.pendingDevices = devices;
250
303
  return;
251
304
  }
252
- const registeredDevices = this.mqttAdapter.getRegisteredDevices();
305
+ const registeredDevices = this.activeAdapter.getRegisteredDevices();
253
306
  await this.deviceMapper.restoreTransformersForExistingDevices(registeredDevices);
254
307
  this.transformersRestored = true;
255
308
  const existingDevices = await this.devicesService.findAll(devices_zigbee2mqtt_constants_1.DEVICES_ZIGBEE2MQTT_TYPE);
256
309
  for (const device of existingDevices) {
257
- const cachedState = this.mqttAdapter.getCachedState(device.identifier);
310
+ const cachedState = this.activeAdapter.getCachedState(device.identifier);
258
311
  if (Object.keys(cachedState).length > 0) {
259
312
  try {
260
313
  await this.deviceMapper.updateDeviceState(device.identifier, cachedState);
@@ -369,6 +422,7 @@ exports.Zigbee2mqttService = Zigbee2mqttService = __decorate([
369
422
  (0, common_1.Injectable)(),
370
423
  __metadata("design:paramtypes", [config_service_1.ConfigService,
371
424
  mqtt_client_adapter_service_1.Z2mMqttClientAdapterService,
425
+ ws_client_adapter_service_1.Z2mWsClientAdapterService,
372
426
  device_mapper_service_1.Z2mDeviceMapperService,
373
427
  devices_service_1.DevicesService,
374
428
  device_connectivity_service_1.DeviceConnectivityService,