@fastybird/smart-panel-backend 1.1.0-alpha.0 → 1.1.0-alpha.2
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.
- package/dist/app.module.js +7 -0
- package/dist/app.module.js.map +1 -1
- package/dist/modules/devices/services/property-command.service.d.ts +8 -0
- package/dist/modules/devices/services/property-command.service.js +115 -0
- package/dist/modules/devices/services/property-command.service.js.map +1 -1
- package/dist/modules/mcp/oauth/mcp-oauth-provider.factory.js.map +1 -1
- package/dist/modules/remote-access/services/remote-access-proxy-contribution.service.js +4 -0
- package/dist/modules/remote-access/services/remote-access-proxy-contribution.service.js.map +1 -1
- package/dist/modules/remote-access/services/remote-access-status.service.d.ts +5 -1
- package/dist/modules/remote-access/services/remote-access-status.service.js +38 -4
- package/dist/modules/remote-access/services/remote-access-status.service.js.map +1 -1
- package/dist/modules/remote-access/services/remote-access-url.service.js +4 -0
- package/dist/modules/remote-access/services/remote-access-url.service.js.map +1 -1
- package/dist/modules/system/commands/command.utils.d.ts +2 -0
- package/dist/modules/system/commands/command.utils.js +14 -0
- package/dist/modules/system/commands/command.utils.js.map +1 -1
- package/dist/modules/system/commands/update-check.command.js +2 -3
- package/dist/modules/system/commands/update-check.command.js.map +1 -1
- package/dist/modules/system/commands/update-panel.command.js +2 -2
- package/dist/modules/system/commands/update-panel.command.js.map +1 -1
- package/dist/modules/system/commands/update-server.command.d.ts +1 -0
- package/dist/modules/system/commands/update-server.command.js +36 -11
- package/dist/modules/system/commands/update-server.command.js.map +1 -1
- package/dist/modules/system/dto/update-config.dto.d.ts +2 -1
- package/dist/modules/system/dto/update-config.dto.js +15 -0
- package/dist/modules/system/dto/update-config.dto.js.map +1 -1
- package/dist/modules/system/models/config.model.d.ts +2 -1
- package/dist/modules/system/models/config.model.js +13 -0
- package/dist/modules/system/models/config.model.js.map +1 -1
- package/dist/modules/system/services/update.service.d.ts +11 -1
- package/dist/modules/system/services/update.service.js +97 -35
- package/dist/modules/system/services/update.service.js.map +1 -1
- package/dist/modules/system/system.constants.d.ts +6 -0
- package/dist/modules/system/system.constants.js +8 -1
- package/dist/modules/system/system.constants.js.map +1 -1
- package/dist/modules/websocket/gateway/websocket.gateway.d.ts +3 -0
- package/dist/modules/websocket/gateway/websocket.gateway.js +39 -4
- package/dist/modules/websocket/gateway/websocket.gateway.js.map +1 -1
- package/dist/plugins/devices-homekit/controllers/homekit-bridge.controller.d.ts +14 -0
- package/dist/plugins/devices-homekit/controllers/homekit-bridge.controller.js +125 -0
- package/dist/plugins/devices-homekit/controllers/homekit-bridge.controller.js.map +1 -0
- package/dist/plugins/devices-homekit/devices-homekit.constants.d.ts +16 -0
- package/dist/plugins/devices-homekit/devices-homekit.constants.js +57 -0
- package/dist/plugins/devices-homekit/devices-homekit.constants.js.map +1 -0
- package/dist/plugins/devices-homekit/devices-homekit.exceptions.d.ts +12 -0
- package/dist/plugins/devices-homekit/devices-homekit.exceptions.js +32 -0
- package/dist/plugins/devices-homekit/devices-homekit.exceptions.js.map +1 -0
- package/dist/plugins/devices-homekit/devices-homekit.openapi.d.ts +6 -0
- package/dist/plugins/devices-homekit/devices-homekit.openapi.js +19 -0
- package/dist/plugins/devices-homekit/devices-homekit.openapi.js.map +1 -0
- package/dist/plugins/devices-homekit/devices-homekit.plugin.d.ts +24 -0
- package/dist/plugins/devices-homekit/devices-homekit.plugin.js +183 -0
- package/dist/plugins/devices-homekit/devices-homekit.plugin.js.map +1 -0
- package/dist/plugins/devices-homekit/dto/bridge-map.dto.d.ts +6 -0
- package/dist/plugins/devices-homekit/dto/bridge-map.dto.js +50 -0
- package/dist/plugins/devices-homekit/dto/bridge-map.dto.js.map +1 -0
- package/dist/plugins/devices-homekit/dto/update-config.dto.d.ts +11 -0
- package/dist/plugins/devices-homekit/dto/update-config.dto.js +138 -0
- package/dist/plugins/devices-homekit/dto/update-config.dto.js.map +1 -0
- package/dist/plugins/devices-homekit/listeners/homekit-event.listener.d.ts +8 -0
- package/dist/plugins/devices-homekit/listeners/homekit-event.listener.js +72 -0
- package/dist/plugins/devices-homekit/listeners/homekit-event.listener.js.map +1 -0
- package/dist/plugins/devices-homekit/mappers/base.mapper.d.ts +15 -0
- package/dist/plugins/devices-homekit/mappers/base.mapper.js +74 -0
- package/dist/plugins/devices-homekit/mappers/base.mapper.js.map +1 -0
- package/dist/plugins/devices-homekit/mappers/battery.mapper.d.ts +6 -0
- package/dist/plugins/devices-homekit/mappers/battery.mapper.js +130 -0
- package/dist/plugins/devices-homekit/mappers/battery.mapper.js.map +1 -0
- package/dist/plugins/devices-homekit/mappers/homekit-mapper.interface.d.ts +28 -0
- package/dist/plugins/devices-homekit/mappers/homekit-mapper.interface.js +3 -0
- package/dist/plugins/devices-homekit/mappers/homekit-mapper.interface.js.map +1 -0
- package/dist/plugins/devices-homekit/mappers/lightbulb.mapper.d.ts +9 -0
- package/dist/plugins/devices-homekit/mappers/lightbulb.mapper.js +115 -0
- package/dist/plugins/devices-homekit/mappers/lightbulb.mapper.js.map +1 -0
- package/dist/plugins/devices-homekit/mappers/lock.mapper.d.ts +10 -0
- package/dist/plugins/devices-homekit/mappers/lock.mapper.js +59 -0
- package/dist/plugins/devices-homekit/mappers/lock.mapper.js.map +1 -0
- package/dist/plugins/devices-homekit/mappers/outlet.mapper.d.ts +9 -0
- package/dist/plugins/devices-homekit/mappers/outlet.mapper.js +44 -0
- package/dist/plugins/devices-homekit/mappers/outlet.mapper.js.map +1 -0
- package/dist/plugins/devices-homekit/mappers/sensor.mapper.d.ts +10 -0
- package/dist/plugins/devices-homekit/mappers/sensor.mapper.js +168 -0
- package/dist/plugins/devices-homekit/mappers/sensor.mapper.js.map +1 -0
- package/dist/plugins/devices-homekit/mappers/switch.mapper.d.ts +9 -0
- package/dist/plugins/devices-homekit/mappers/switch.mapper.js +35 -0
- package/dist/plugins/devices-homekit/mappers/switch.mapper.js.map +1 -0
- package/dist/plugins/devices-homekit/mappers/thermostat-coordinator.d.ts +43 -0
- package/dist/plugins/devices-homekit/mappers/thermostat-coordinator.js +430 -0
- package/dist/plugins/devices-homekit/mappers/thermostat-coordinator.js.map +1 -0
- package/dist/plugins/devices-homekit/mappers/thermostat.mapper.d.ts +11 -0
- package/dist/plugins/devices-homekit/mappers/thermostat.mapper.js +97 -0
- package/dist/plugins/devices-homekit/mappers/thermostat.mapper.js.map +1 -0
- package/dist/plugins/devices-homekit/mappers/window-covering.mapper.d.ts +10 -0
- package/dist/plugins/devices-homekit/mappers/window-covering.mapper.js +94 -0
- package/dist/plugins/devices-homekit/mappers/window-covering.mapper.js.map +1 -0
- package/dist/plugins/devices-homekit/models/bridge-candidate.model.d.ts +15 -0
- package/dist/plugins/devices-homekit/models/bridge-candidate.model.js +150 -0
- package/dist/plugins/devices-homekit/models/bridge-candidate.model.js.map +1 -0
- package/dist/plugins/devices-homekit/models/bridge-status.model.d.ts +16 -0
- package/dist/plugins/devices-homekit/models/bridge-status.model.js +156 -0
- package/dist/plugins/devices-homekit/models/bridge-status.model.js.map +1 -0
- package/dist/plugins/devices-homekit/models/config.model.d.ts +12 -0
- package/dist/plugins/devices-homekit/models/config.model.js +134 -0
- package/dist/plugins/devices-homekit/models/config.model.js.map +1 -0
- package/dist/plugins/devices-homekit/services/homekit-actions.service.d.ts +14 -0
- package/dist/plugins/devices-homekit/services/homekit-actions.service.js +92 -0
- package/dist/plugins/devices-homekit/services/homekit-actions.service.js.map +1 -0
- package/dist/plugins/devices-homekit/services/homekit-bridge.service.d.ts +43 -0
- package/dist/plugins/devices-homekit/services/homekit-bridge.service.js +497 -0
- package/dist/plugins/devices-homekit/services/homekit-bridge.service.js.map +1 -0
- package/dist/plugins/devices-homekit/services/homekit-command.dispatcher.d.ts +11 -0
- package/dist/plugins/devices-homekit/services/homekit-command.dispatcher.js +68 -0
- package/dist/plugins/devices-homekit/services/homekit-command.dispatcher.js.map +1 -0
- package/dist/plugins/devices-homekit/services/homekit-mapper-registry.service.d.ts +34 -0
- package/dist/plugins/devices-homekit/services/homekit-mapper-registry.service.js +179 -0
- package/dist/plugins/devices-homekit/services/homekit-mapper-registry.service.js.map +1 -0
- package/dist/plugins/devices-homekit/services/homekit-wizard.service.d.ts +15 -0
- package/dist/plugins/devices-homekit/services/homekit-wizard.service.js +75 -0
- package/dist/plugins/devices-homekit/services/homekit-wizard.service.js.map +1 -0
- package/dist/plugins/devices-homekit/validators/is-not-forbidden-homekit-pin.validator.d.ts +2 -0
- package/dist/plugins/devices-homekit/validators/is-not-forbidden-homekit-pin.validator.js +30 -0
- package/dist/plugins/devices-homekit/validators/is-not-forbidden-homekit-pin.validator.js.map +1 -0
- package/dist/plugins/devices-shelly-ng/services/device-manager.service.js +5 -0
- package/dist/plugins/devices-shelly-ng/services/device-manager.service.js.map +1 -1
- package/dist/tsconfig.build.tsbuildinfo +1 -1
- package/package.json +5 -2
|
@@ -0,0 +1,125 @@
|
|
|
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 __param = (this && this.__param) || function (paramIndex, decorator) {
|
|
12
|
+
return function (target, key) { decorator(target, key, paramIndex); }
|
|
13
|
+
};
|
|
14
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
+
exports.HomeKitBridgeController = void 0;
|
|
16
|
+
const common_1 = require("@nestjs/common");
|
|
17
|
+
const swagger_1 = require("@nestjs/swagger");
|
|
18
|
+
const api_documentation_decorator_1 = require("../../../modules/swagger/decorators/api-documentation.decorator");
|
|
19
|
+
const roles_guard_1 = require("../../../modules/users/guards/roles.guard");
|
|
20
|
+
const users_constants_1 = require("../../../modules/users/users.constants");
|
|
21
|
+
const devices_homekit_constants_1 = require("../devices-homekit.constants");
|
|
22
|
+
const bridge_map_dto_1 = require("../dto/bridge-map.dto");
|
|
23
|
+
const bridge_candidate_model_1 = require("../models/bridge-candidate.model");
|
|
24
|
+
const bridge_status_model_1 = require("../models/bridge-status.model");
|
|
25
|
+
const homekit_bridge_service_1 = require("../services/homekit-bridge.service");
|
|
26
|
+
const homekit_wizard_service_1 = require("../services/homekit-wizard.service");
|
|
27
|
+
let HomeKitBridgeController = class HomeKitBridgeController {
|
|
28
|
+
constructor(bridgeService, wizardService) {
|
|
29
|
+
this.bridgeService = bridgeService;
|
|
30
|
+
this.wizardService = wizardService;
|
|
31
|
+
}
|
|
32
|
+
async getStatus() {
|
|
33
|
+
const status = await this.bridgeService.getStatus();
|
|
34
|
+
const response = new bridge_status_model_1.HomeKitBridgeStatusResponseModel();
|
|
35
|
+
response.data = status;
|
|
36
|
+
return response;
|
|
37
|
+
}
|
|
38
|
+
async resetPairing() {
|
|
39
|
+
await this.bridgeService.resetPairing();
|
|
40
|
+
const status = await this.bridgeService.getStatus();
|
|
41
|
+
const response = new bridge_status_model_1.HomeKitBridgeStatusResponseModel();
|
|
42
|
+
response.data = status;
|
|
43
|
+
return response;
|
|
44
|
+
}
|
|
45
|
+
async getCandidates() {
|
|
46
|
+
const candidates = await this.wizardService.getCandidates();
|
|
47
|
+
const response = new bridge_candidate_model_1.HomeKitCandidatesResponseModel();
|
|
48
|
+
response.data = candidates;
|
|
49
|
+
return response;
|
|
50
|
+
}
|
|
51
|
+
async mapDevices(body) {
|
|
52
|
+
await this.wizardService.mapDevices(body.data.device_ids);
|
|
53
|
+
const candidates = await this.wizardService.getCandidates();
|
|
54
|
+
const response = new bridge_candidate_model_1.HomeKitCandidatesResponseModel();
|
|
55
|
+
response.data = candidates;
|
|
56
|
+
return response;
|
|
57
|
+
}
|
|
58
|
+
};
|
|
59
|
+
exports.HomeKitBridgeController = HomeKitBridgeController;
|
|
60
|
+
__decorate([
|
|
61
|
+
(0, swagger_1.ApiOperation)({
|
|
62
|
+
tags: [devices_homekit_constants_1.DEVICES_HOMEKIT_PLUGIN_API_TAG_NAME],
|
|
63
|
+
summary: 'Get HomeKit Gateway bridge status',
|
|
64
|
+
description: 'Returns runtime bridge status, pairing status, pairing setup URI, and QR code data URL.',
|
|
65
|
+
operationId: 'get-devices-homekit-plugin-bridge-status',
|
|
66
|
+
}),
|
|
67
|
+
(0, api_documentation_decorator_1.ApiSuccessResponse)(bridge_status_model_1.HomeKitBridgeStatusResponseModel, 'HomeKit Gateway status was successfully retrieved'),
|
|
68
|
+
(0, api_documentation_decorator_1.ApiInternalServerErrorResponse)('Internal server error'),
|
|
69
|
+
(0, common_1.Get)('status'),
|
|
70
|
+
__metadata("design:type", Function),
|
|
71
|
+
__metadata("design:paramtypes", []),
|
|
72
|
+
__metadata("design:returntype", Promise)
|
|
73
|
+
], HomeKitBridgeController.prototype, "getStatus", null);
|
|
74
|
+
__decorate([
|
|
75
|
+
(0, swagger_1.ApiOperation)({
|
|
76
|
+
tags: [devices_homekit_constants_1.DEVICES_HOMEKIT_PLUGIN_API_TAG_NAME],
|
|
77
|
+
summary: 'Reset HomeKit pairing and generate fresh credentials',
|
|
78
|
+
description: 'Clears all existing paired Apple Home controllers, generates new MAC address, and unpairs the bridge.',
|
|
79
|
+
operationId: 'reset-devices-homekit-plugin-pairing',
|
|
80
|
+
}),
|
|
81
|
+
(0, api_documentation_decorator_1.ApiCreatedSuccessResponse)(bridge_status_model_1.HomeKitBridgeStatusResponseModel, 'HomeKit pairing was successfully reset'),
|
|
82
|
+
(0, api_documentation_decorator_1.ApiInternalServerErrorResponse)('Internal server error'),
|
|
83
|
+
(0, common_1.Post)('reset-pairing'),
|
|
84
|
+
__metadata("design:type", Function),
|
|
85
|
+
__metadata("design:paramtypes", []),
|
|
86
|
+
__metadata("design:returntype", Promise)
|
|
87
|
+
], HomeKitBridgeController.prototype, "resetPairing", null);
|
|
88
|
+
__decorate([
|
|
89
|
+
(0, swagger_1.ApiOperation)({
|
|
90
|
+
tags: [devices_homekit_constants_1.DEVICES_HOMEKIT_PLUGIN_API_TAG_NAME],
|
|
91
|
+
summary: 'Get all device candidates for HomeKit mapping',
|
|
92
|
+
description: 'Returns all registered Smart Panel devices with compatibility, suggested service type, and current mapping status.',
|
|
93
|
+
operationId: 'get-devices-homekit-plugin-candidates',
|
|
94
|
+
}),
|
|
95
|
+
(0, api_documentation_decorator_1.ApiSuccessResponse)(bridge_candidate_model_1.HomeKitCandidatesResponseModel, 'Device candidates were successfully retrieved'),
|
|
96
|
+
(0, api_documentation_decorator_1.ApiInternalServerErrorResponse)('Internal server error'),
|
|
97
|
+
(0, common_1.Get)('candidates'),
|
|
98
|
+
__metadata("design:type", Function),
|
|
99
|
+
__metadata("design:paramtypes", []),
|
|
100
|
+
__metadata("design:returntype", Promise)
|
|
101
|
+
], HomeKitBridgeController.prototype, "getCandidates", null);
|
|
102
|
+
__decorate([
|
|
103
|
+
(0, swagger_1.ApiOperation)({
|
|
104
|
+
tags: [devices_homekit_constants_1.DEVICES_HOMEKIT_PLUGIN_API_TAG_NAME],
|
|
105
|
+
summary: 'Update mapped devices bridged into HomeKit',
|
|
106
|
+
description: 'Updates the list of Smart Panel devices exposed to Apple Home, dynamically updating the active bridge.',
|
|
107
|
+
operationId: 'map-devices-homekit-plugin-candidates',
|
|
108
|
+
}),
|
|
109
|
+
(0, swagger_1.ApiBody)({ type: bridge_map_dto_1.ReqHomeKitMapDevicesDto }),
|
|
110
|
+
(0, api_documentation_decorator_1.ApiCreatedSuccessResponse)(bridge_candidate_model_1.HomeKitCandidatesResponseModel, 'Mapped devices were successfully updated'),
|
|
111
|
+
(0, api_documentation_decorator_1.ApiInternalServerErrorResponse)('Internal server error'),
|
|
112
|
+
(0, common_1.Post)('candidates/map'),
|
|
113
|
+
__param(0, (0, common_1.Body)()),
|
|
114
|
+
__metadata("design:type", Function),
|
|
115
|
+
__metadata("design:paramtypes", [bridge_map_dto_1.ReqHomeKitMapDevicesDto]),
|
|
116
|
+
__metadata("design:returntype", Promise)
|
|
117
|
+
], HomeKitBridgeController.prototype, "mapDevices", null);
|
|
118
|
+
exports.HomeKitBridgeController = HomeKitBridgeController = __decorate([
|
|
119
|
+
(0, swagger_1.ApiTags)(devices_homekit_constants_1.DEVICES_HOMEKIT_PLUGIN_API_TAG_NAME),
|
|
120
|
+
(0, common_1.Controller)('bridge'),
|
|
121
|
+
(0, roles_guard_1.Roles)(users_constants_1.UserRole.OWNER, users_constants_1.UserRole.ADMIN),
|
|
122
|
+
__metadata("design:paramtypes", [homekit_bridge_service_1.HomeKitBridgeService,
|
|
123
|
+
homekit_wizard_service_1.HomeKitWizardService])
|
|
124
|
+
], HomeKitBridgeController);
|
|
125
|
+
//# sourceMappingURL=homekit-bridge.controller.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"homekit-bridge.controller.js","sourceRoot":"","sources":["../../../../src/plugins/devices-homekit/controllers/homekit-bridge.controller.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
export declare const DEVICES_HOMEKIT_PLUGIN_PREFIX = "devices-homekit";
|
|
2
|
+
export declare const DEVICES_HOMEKIT_PLUGIN_NAME = "devices-homekit";
|
|
3
|
+
export declare const DEVICES_HOMEKIT_PLUGIN_API_TAG_NAME = "Devices HomeKit plugin";
|
|
4
|
+
export declare const DEVICES_HOMEKIT_PLUGIN_API_TAG_DESCRIPTION = "Endpoints for managing the HomeKit Gateway, bridging Smart Panel devices to Apple Home.";
|
|
5
|
+
export declare const DEVICES_HOMEKIT_PLUGIN_EVENT_PREFIX = "DevicesHomeKitPlugin";
|
|
6
|
+
export declare enum EventType {
|
|
7
|
+
BRIDGE_STATUS_CHANGED = "DevicesHomeKitPlugin.Bridge.StatusChanged"
|
|
8
|
+
}
|
|
9
|
+
export declare const DEFAULT_HOMEKIT_PORT = 51826;
|
|
10
|
+
export declare const DEFAULT_HOMEKIT_BRIDGE_NAME = "Smart Panel Bridge";
|
|
11
|
+
export declare const HOMEKIT_MAX_BRIDGED_ACCESSORIES = 149;
|
|
12
|
+
export declare const HOMEKIT_PAIRING_STORAGE_DIR = "homekit";
|
|
13
|
+
export declare const HOMEKIT_FORBIDDEN_PINS: Set<string>;
|
|
14
|
+
export declare function generateRandomHomeKitPin(): string;
|
|
15
|
+
export declare function generateRandomMacAddress(): string;
|
|
16
|
+
export declare function generateRandomSetupId(): string;
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.HOMEKIT_FORBIDDEN_PINS = exports.HOMEKIT_PAIRING_STORAGE_DIR = exports.HOMEKIT_MAX_BRIDGED_ACCESSORIES = exports.DEFAULT_HOMEKIT_BRIDGE_NAME = exports.DEFAULT_HOMEKIT_PORT = exports.EventType = exports.DEVICES_HOMEKIT_PLUGIN_EVENT_PREFIX = exports.DEVICES_HOMEKIT_PLUGIN_API_TAG_DESCRIPTION = exports.DEVICES_HOMEKIT_PLUGIN_API_TAG_NAME = exports.DEVICES_HOMEKIT_PLUGIN_NAME = exports.DEVICES_HOMEKIT_PLUGIN_PREFIX = void 0;
|
|
4
|
+
exports.generateRandomHomeKitPin = generateRandomHomeKitPin;
|
|
5
|
+
exports.generateRandomMacAddress = generateRandomMacAddress;
|
|
6
|
+
exports.generateRandomSetupId = generateRandomSetupId;
|
|
7
|
+
const crypto_1 = require("crypto");
|
|
8
|
+
exports.DEVICES_HOMEKIT_PLUGIN_PREFIX = 'devices-homekit';
|
|
9
|
+
exports.DEVICES_HOMEKIT_PLUGIN_NAME = 'devices-homekit';
|
|
10
|
+
exports.DEVICES_HOMEKIT_PLUGIN_API_TAG_NAME = 'Devices HomeKit plugin';
|
|
11
|
+
exports.DEVICES_HOMEKIT_PLUGIN_API_TAG_DESCRIPTION = 'Endpoints for managing the HomeKit Gateway, bridging Smart Panel devices to Apple Home.';
|
|
12
|
+
exports.DEVICES_HOMEKIT_PLUGIN_EVENT_PREFIX = 'DevicesHomeKitPlugin';
|
|
13
|
+
var EventType;
|
|
14
|
+
(function (EventType) {
|
|
15
|
+
EventType["BRIDGE_STATUS_CHANGED"] = "DevicesHomeKitPlugin.Bridge.StatusChanged";
|
|
16
|
+
})(EventType || (exports.EventType = EventType = {}));
|
|
17
|
+
exports.DEFAULT_HOMEKIT_PORT = 51826;
|
|
18
|
+
exports.DEFAULT_HOMEKIT_BRIDGE_NAME = 'Smart Panel Bridge';
|
|
19
|
+
exports.HOMEKIT_MAX_BRIDGED_ACCESSORIES = 149;
|
|
20
|
+
exports.HOMEKIT_PAIRING_STORAGE_DIR = 'homekit';
|
|
21
|
+
exports.HOMEKIT_FORBIDDEN_PINS = new Set([
|
|
22
|
+
'000-00-000',
|
|
23
|
+
'111-11-111',
|
|
24
|
+
'222-22-222',
|
|
25
|
+
'333-33-333',
|
|
26
|
+
'444-44-444',
|
|
27
|
+
'555-55-555',
|
|
28
|
+
'666-66-666',
|
|
29
|
+
'777-77-777',
|
|
30
|
+
'888-88-888',
|
|
31
|
+
'999-99-999',
|
|
32
|
+
'123-45-678',
|
|
33
|
+
'876-54-321',
|
|
34
|
+
]);
|
|
35
|
+
function generateRandomHomeKitPin() {
|
|
36
|
+
let pin;
|
|
37
|
+
do {
|
|
38
|
+
const num = (0, crypto_1.randomInt)(0, 100_000_000).toString().padStart(8, '0');
|
|
39
|
+
pin = `${num.slice(0, 3)}-${num.slice(3, 5)}-${num.slice(5, 8)}`;
|
|
40
|
+
} while (exports.HOMEKIT_FORBIDDEN_PINS.has(pin));
|
|
41
|
+
return pin;
|
|
42
|
+
}
|
|
43
|
+
function generateRandomMacAddress() {
|
|
44
|
+
const bytes = (0, crypto_1.randomBytes)(6);
|
|
45
|
+
bytes[0] = (bytes[0] & 0xfe) | 0x02;
|
|
46
|
+
return Array.from(bytes)
|
|
47
|
+
.map((b) => b.toString(16).padStart(2, '0').toUpperCase())
|
|
48
|
+
.join(':');
|
|
49
|
+
}
|
|
50
|
+
function generateRandomSetupId() {
|
|
51
|
+
const chars = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ';
|
|
52
|
+
const bytes = (0, crypto_1.randomBytes)(4);
|
|
53
|
+
return Array.from(bytes)
|
|
54
|
+
.map((b) => chars[b % chars.length])
|
|
55
|
+
.join('');
|
|
56
|
+
}
|
|
57
|
+
//# sourceMappingURL=devices-homekit.constants.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"devices-homekit.constants.js","sourceRoot":"","sources":["../../../src/plugins/devices-homekit/devices-homekit.constants.ts"],"names":[],"mappings":";;;AAgDA,4DAQC;AAUD,4DAOC;AASD,sDAMC;AAxFD,mCAAgD;AAEnC,QAAA,6BAA6B,GAAG,iBAAiB,CAAC;AAElD,QAAA,2BAA2B,GAAG,iBAAiB,CAAC;AAEhD,QAAA,mCAAmC,GAAG,wBAAwB,CAAC;AAE/D,QAAA,0CAA0C,GACtD,yFAAyF,CAAC;AAE9E,QAAA,mCAAmC,GAAG,sBAAsB,CAAC;AAE1E,IAAY,SAEX;AAFD,WAAY,SAAS;IACpB,gFAAmE,CAAA;AACpE,CAAC,EAFW,SAAS,yBAAT,SAAS,QAEpB;AAEY,QAAA,oBAAoB,GAAG,KAAK,CAAC;AAE7B,QAAA,2BAA2B,GAAG,oBAAoB,CAAC;AAEnD,QAAA,+BAA+B,GAAG,GAAG,CAAC;AAEtC,QAAA,2BAA2B,GAAG,SAAS,CAAC;AAExC,QAAA,sBAAsB,GAAG,IAAI,GAAG,CAAC;IAC7C,YAAY;IACZ,YAAY;IACZ,YAAY;IACZ,YAAY;IACZ,YAAY;IACZ,YAAY;IACZ,YAAY;IACZ,YAAY;IACZ,YAAY;IACZ,YAAY;IACZ,YAAY;IACZ,YAAY;CACZ,CAAC,CAAC;AAUH,SAAgB,wBAAwB;IACvC,IAAI,GAAW,CAAC;IAChB,GAAG,CAAC;QACH,MAAM,GAAG,GAAG,IAAA,kBAAS,EAAC,CAAC,EAAE,WAAW,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;QAClE,GAAG,GAAG,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;IAClE,CAAC,QAAQ,8BAAsB,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;IAE1C,OAAO,GAAG,CAAC;AACZ,CAAC;AAUD,SAAgB,wBAAwB;IACvC,MAAM,KAAK,GAAG,IAAA,oBAAW,EAAC,CAAC,CAAC,CAAC;IAE7B,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC;IACpC,OAAO,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC;SACtB,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,WAAW,EAAE,CAAC;SACzD,IAAI,CAAC,GAAG,CAAC,CAAC;AACb,CAAC;AASD,SAAgB,qBAAqB;IACpC,MAAM,KAAK,GAAG,sCAAsC,CAAC;IACrD,MAAM,KAAK,GAAG,IAAA,oBAAW,EAAC,CAAC,CAAC,CAAC;IAC7B,OAAO,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC;SACtB,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC;SACnC,IAAI,CAAC,EAAE,CAAC,CAAC;AACZ,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export declare class DevicesHomeKitException extends Error {
|
|
2
|
+
constructor(message: string);
|
|
3
|
+
}
|
|
4
|
+
export declare class DevicesHomeKitNotFoundException extends DevicesHomeKitException {
|
|
5
|
+
constructor(message: string);
|
|
6
|
+
}
|
|
7
|
+
export declare class DevicesHomeKitValidationException extends DevicesHomeKitException {
|
|
8
|
+
constructor(message: string);
|
|
9
|
+
}
|
|
10
|
+
export declare class DevicesHomeKitNotAllowedException extends DevicesHomeKitException {
|
|
11
|
+
constructor(message: string);
|
|
12
|
+
}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.DevicesHomeKitNotAllowedException = exports.DevicesHomeKitValidationException = exports.DevicesHomeKitNotFoundException = exports.DevicesHomeKitException = void 0;
|
|
4
|
+
class DevicesHomeKitException extends Error {
|
|
5
|
+
constructor(message) {
|
|
6
|
+
super(message);
|
|
7
|
+
this.name = 'DevicesHomeKitException';
|
|
8
|
+
}
|
|
9
|
+
}
|
|
10
|
+
exports.DevicesHomeKitException = DevicesHomeKitException;
|
|
11
|
+
class DevicesHomeKitNotFoundException extends DevicesHomeKitException {
|
|
12
|
+
constructor(message) {
|
|
13
|
+
super(message);
|
|
14
|
+
this.name = 'DevicesHomeKitNotFoundException';
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
exports.DevicesHomeKitNotFoundException = DevicesHomeKitNotFoundException;
|
|
18
|
+
class DevicesHomeKitValidationException extends DevicesHomeKitException {
|
|
19
|
+
constructor(message) {
|
|
20
|
+
super(message);
|
|
21
|
+
this.name = 'DevicesHomeKitValidationException';
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
exports.DevicesHomeKitValidationException = DevicesHomeKitValidationException;
|
|
25
|
+
class DevicesHomeKitNotAllowedException extends DevicesHomeKitException {
|
|
26
|
+
constructor(message) {
|
|
27
|
+
super(message);
|
|
28
|
+
this.name = 'DevicesHomeKitNotAllowedException';
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
exports.DevicesHomeKitNotAllowedException = DevicesHomeKitNotAllowedException;
|
|
32
|
+
//# sourceMappingURL=devices-homekit.exceptions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"devices-homekit.exceptions.js","sourceRoot":"","sources":["../../../src/plugins/devices-homekit/devices-homekit.exceptions.ts"],"names":[],"mappings":";;;AAAA,MAAa,uBAAwB,SAAQ,KAAK;IACjD,YAAY,OAAe;QAC1B,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,yBAAyB,CAAC;IACvC,CAAC;CACD;AALD,0DAKC;AAED,MAAa,+BAAgC,SAAQ,uBAAuB;IAC3E,YAAY,OAAe;QAC1B,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,iCAAiC,CAAC;IAC/C,CAAC;CACD;AALD,0EAKC;AAED,MAAa,iCAAkC,SAAQ,uBAAuB;IAC7E,YAAY,OAAe;QAC1B,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,mCAAmC,CAAC;IACjD,CAAC;CACD;AALD,8EAKC;AAED,MAAa,iCAAkC,SAAQ,uBAAuB;IAC7E,YAAY,OAAe;QAC1B,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,mCAAmC,CAAC;IACjD,CAAC;CACD;AALD,8EAKC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { HomeKitMapDevicesDto, ReqHomeKitMapDevicesDto } from './dto/bridge-map.dto';
|
|
2
|
+
import { HomeKitUpdatePluginConfigDto } from './dto/update-config.dto';
|
|
3
|
+
import { HomeKitCandidatesResponseModel, HomeKitDeviceCandidateModel } from './models/bridge-candidate.model';
|
|
4
|
+
import { HomeKitBridgeStatusModel, HomeKitBridgeStatusResponseModel } from './models/bridge-status.model';
|
|
5
|
+
import { HomeKitConfigModel } from './models/config.model';
|
|
6
|
+
export declare const DEVICES_HOMEKIT_PLUGIN_SWAGGER_EXTRA_MODELS: (typeof HomeKitMapDevicesDto | typeof ReqHomeKitMapDevicesDto | typeof HomeKitDeviceCandidateModel | typeof HomeKitCandidatesResponseModel | typeof HomeKitBridgeStatusModel | typeof HomeKitBridgeStatusResponseModel | typeof HomeKitUpdatePluginConfigDto | typeof HomeKitConfigModel)[];
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.DEVICES_HOMEKIT_PLUGIN_SWAGGER_EXTRA_MODELS = void 0;
|
|
4
|
+
const bridge_map_dto_1 = require("./dto/bridge-map.dto");
|
|
5
|
+
const update_config_dto_1 = require("./dto/update-config.dto");
|
|
6
|
+
const bridge_candidate_model_1 = require("./models/bridge-candidate.model");
|
|
7
|
+
const bridge_status_model_1 = require("./models/bridge-status.model");
|
|
8
|
+
const config_model_1 = require("./models/config.model");
|
|
9
|
+
exports.DEVICES_HOMEKIT_PLUGIN_SWAGGER_EXTRA_MODELS = [
|
|
10
|
+
config_model_1.HomeKitConfigModel,
|
|
11
|
+
update_config_dto_1.HomeKitUpdatePluginConfigDto,
|
|
12
|
+
bridge_status_model_1.HomeKitBridgeStatusModel,
|
|
13
|
+
bridge_status_model_1.HomeKitBridgeStatusResponseModel,
|
|
14
|
+
bridge_candidate_model_1.HomeKitDeviceCandidateModel,
|
|
15
|
+
bridge_candidate_model_1.HomeKitCandidatesResponseModel,
|
|
16
|
+
bridge_map_dto_1.HomeKitMapDevicesDto,
|
|
17
|
+
bridge_map_dto_1.ReqHomeKitMapDevicesDto,
|
|
18
|
+
];
|
|
19
|
+
//# sourceMappingURL=devices-homekit.openapi.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"devices-homekit.openapi.js","sourceRoot":"","sources":["../../../src/plugins/devices-homekit/devices-homekit.openapi.ts"],"names":[],"mappings":";;;AAAA,yDAAqF;AACrF,+DAAuE;AACvE,4EAA8G;AAC9G,sEAA0G;AAC1G,wDAA2D;AAE9C,QAAA,2CAA2C,GAAG;IAC1D,iCAAkB;IAClB,gDAA4B;IAC5B,8CAAwB;IACxB,sDAAgC;IAChC,oDAA2B;IAC3B,uDAA8B;IAC9B,qCAAoB;IACpB,wCAAuB;CACvB,CAAC"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { OnModuleInit } from '@nestjs/common';
|
|
2
|
+
import { ConfigService } from '../../modules/config/services/config.service';
|
|
3
|
+
import { PluginConfigMutationRegistryService } from '../../modules/config/services/plugin-config-mutation-registry.service';
|
|
4
|
+
import { PluginsTypeMapperService } from '../../modules/config/services/plugins-type-mapper.service';
|
|
5
|
+
import { DevicesService } from '../../modules/devices/services/devices.service';
|
|
6
|
+
import { ExtensionsService } from '../../modules/extensions/services/extensions.service';
|
|
7
|
+
import { ManagedServiceManagerService } from '../../modules/extensions/services/managed-service-manager.service';
|
|
8
|
+
import { SwaggerModelsRegistryService } from '../../modules/swagger/services/swagger-models-registry.service';
|
|
9
|
+
import { HomeKitBridgeService } from './services/homekit-bridge.service';
|
|
10
|
+
import { HomeKitMapperRegistryService } from './services/homekit-mapper-registry.service';
|
|
11
|
+
export declare class DevicesHomeKitPlugin implements OnModuleInit {
|
|
12
|
+
private readonly configMapper;
|
|
13
|
+
private readonly swaggerRegistry;
|
|
14
|
+
private readonly extensionsService;
|
|
15
|
+
private readonly managedServiceManager;
|
|
16
|
+
private readonly homeKitBridgeService;
|
|
17
|
+
private readonly pluginConfigMutations;
|
|
18
|
+
private readonly devicesService;
|
|
19
|
+
private readonly mapperRegistry;
|
|
20
|
+
private readonly configService;
|
|
21
|
+
private readonly logger;
|
|
22
|
+
constructor(configMapper: PluginsTypeMapperService, swaggerRegistry: SwaggerModelsRegistryService, extensionsService: ExtensionsService, managedServiceManager: ManagedServiceManagerService, homeKitBridgeService: HomeKitBridgeService, pluginConfigMutations: PluginConfigMutationRegistryService, devicesService: DevicesService, mapperRegistry: HomeKitMapperRegistryService, configService: ConfigService);
|
|
23
|
+
onModuleInit(): void;
|
|
24
|
+
}
|
|
@@ -0,0 +1,183 @@
|
|
|
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 DevicesHomeKitPlugin_1;
|
|
12
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
13
|
+
exports.DevicesHomeKitPlugin = void 0;
|
|
14
|
+
const common_1 = require("@nestjs/common");
|
|
15
|
+
const config_module_1 = require("../../modules/config/config.module");
|
|
16
|
+
const config_service_1 = require("../../modules/config/services/config.service");
|
|
17
|
+
const plugin_config_mutation_registry_service_1 = require("../../modules/config/services/plugin-config-mutation-registry.service");
|
|
18
|
+
const plugins_type_mapper_service_1 = require("../../modules/config/services/plugins-type-mapper.service");
|
|
19
|
+
const devices_module_1 = require("../../modules/devices/devices.module");
|
|
20
|
+
const devices_service_1 = require("../../modules/devices/services/devices.service");
|
|
21
|
+
const extensions_module_1 = require("../../modules/extensions/extensions.module");
|
|
22
|
+
const extensions_service_1 = require("../../modules/extensions/services/extensions.service");
|
|
23
|
+
const managed_service_manager_service_1 = require("../../modules/extensions/services/managed-service-manager.service");
|
|
24
|
+
const spaces_module_1 = require("../../modules/spaces/spaces.module");
|
|
25
|
+
const api_tag_decorator_1 = require("../../modules/swagger/decorators/api-tag.decorator");
|
|
26
|
+
const swagger_models_registry_service_1 = require("../../modules/swagger/services/swagger-models-registry.service");
|
|
27
|
+
const swagger_module_1 = require("../../modules/swagger/swagger.module");
|
|
28
|
+
const homekit_bridge_controller_1 = require("./controllers/homekit-bridge.controller");
|
|
29
|
+
const devices_homekit_constants_1 = require("./devices-homekit.constants");
|
|
30
|
+
const devices_homekit_openapi_1 = require("./devices-homekit.openapi");
|
|
31
|
+
const update_config_dto_1 = require("./dto/update-config.dto");
|
|
32
|
+
const homekit_event_listener_1 = require("./listeners/homekit-event.listener");
|
|
33
|
+
const config_model_1 = require("./models/config.model");
|
|
34
|
+
const homekit_actions_service_1 = require("./services/homekit-actions.service");
|
|
35
|
+
const homekit_bridge_service_1 = require("./services/homekit-bridge.service");
|
|
36
|
+
const homekit_command_dispatcher_1 = require("./services/homekit-command.dispatcher");
|
|
37
|
+
const homekit_mapper_registry_service_1 = require("./services/homekit-mapper-registry.service");
|
|
38
|
+
const homekit_wizard_service_1 = require("./services/homekit-wizard.service");
|
|
39
|
+
let DevicesHomeKitPlugin = DevicesHomeKitPlugin_1 = class DevicesHomeKitPlugin {
|
|
40
|
+
constructor(configMapper, swaggerRegistry, extensionsService, managedServiceManager, homeKitBridgeService, pluginConfigMutations, devicesService, mapperRegistry, configService) {
|
|
41
|
+
this.configMapper = configMapper;
|
|
42
|
+
this.swaggerRegistry = swaggerRegistry;
|
|
43
|
+
this.extensionsService = extensionsService;
|
|
44
|
+
this.managedServiceManager = managedServiceManager;
|
|
45
|
+
this.homeKitBridgeService = homeKitBridgeService;
|
|
46
|
+
this.pluginConfigMutations = pluginConfigMutations;
|
|
47
|
+
this.devicesService = devicesService;
|
|
48
|
+
this.mapperRegistry = mapperRegistry;
|
|
49
|
+
this.configService = configService;
|
|
50
|
+
this.logger = new common_1.Logger(DevicesHomeKitPlugin_1.name);
|
|
51
|
+
}
|
|
52
|
+
onModuleInit() {
|
|
53
|
+
this.configMapper.registerMapping({
|
|
54
|
+
type: devices_homekit_constants_1.DEVICES_HOMEKIT_PLUGIN_NAME,
|
|
55
|
+
class: config_model_1.HomeKitConfigModel,
|
|
56
|
+
configDto: update_config_dto_1.HomeKitUpdatePluginConfigDto,
|
|
57
|
+
secretFields: [
|
|
58
|
+
{
|
|
59
|
+
path: 'pincode',
|
|
60
|
+
configuredPath: 'pincode_configured',
|
|
61
|
+
},
|
|
62
|
+
],
|
|
63
|
+
});
|
|
64
|
+
this.pluginConfigMutations.register(devices_homekit_constants_1.DEVICES_HOMEKIT_PLUGIN_NAME, async (update, commit) => {
|
|
65
|
+
let previousMappedDeviceIds = [];
|
|
66
|
+
if (update.mapped_device_ids !== undefined) {
|
|
67
|
+
if (!Array.isArray(update.mapped_device_ids)) {
|
|
68
|
+
throw new common_1.BadRequestException([{ field: 'mapped_device_ids', reason: 'Device IDs must be an array.' }]);
|
|
69
|
+
}
|
|
70
|
+
if (update.mapped_device_ids.length > devices_homekit_constants_1.HOMEKIT_MAX_BRIDGED_ACCESSORIES) {
|
|
71
|
+
throw new common_1.BadRequestException([
|
|
72
|
+
{
|
|
73
|
+
field: 'mapped_device_ids',
|
|
74
|
+
reason: 'Maximum 149 accessories can be bridged to a single HomeKit bridge.',
|
|
75
|
+
},
|
|
76
|
+
]);
|
|
77
|
+
}
|
|
78
|
+
const unique = new Set(update.mapped_device_ids);
|
|
79
|
+
if (unique.size !== update.mapped_device_ids.length) {
|
|
80
|
+
throw new common_1.BadRequestException([{ field: 'mapped_device_ids', reason: 'Device IDs must be unique.' }]);
|
|
81
|
+
}
|
|
82
|
+
const devices = await Promise.all(update.mapped_device_ids.map(async (deviceId) => {
|
|
83
|
+
const device = await this.devicesService.findOne(deviceId);
|
|
84
|
+
return { deviceId, device };
|
|
85
|
+
}));
|
|
86
|
+
for (const { deviceId, device } of devices) {
|
|
87
|
+
if (!device) {
|
|
88
|
+
throw new common_1.BadRequestException([{ field: 'mapped_device_ids', reason: `Device ${deviceId} not found.` }]);
|
|
89
|
+
}
|
|
90
|
+
if (!this.mapperRegistry.canMap(device)) {
|
|
91
|
+
throw new common_1.BadRequestException([
|
|
92
|
+
{
|
|
93
|
+
field: 'mapped_device_ids',
|
|
94
|
+
reason: `Device "${device.name}" (${deviceId}) is not compatible with HomeKit.`,
|
|
95
|
+
},
|
|
96
|
+
]);
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
const currentConfig = this.configService.getPluginConfig(devices_homekit_constants_1.DEVICES_HOMEKIT_PLUGIN_NAME);
|
|
100
|
+
previousMappedDeviceIds = [...(currentConfig.mappedDeviceIds ?? [])];
|
|
101
|
+
}
|
|
102
|
+
await commit();
|
|
103
|
+
if (update.mapped_device_ids !== undefined) {
|
|
104
|
+
try {
|
|
105
|
+
await this.homeKitBridgeService.reconcileLatestMapping();
|
|
106
|
+
}
|
|
107
|
+
catch (reconcileError) {
|
|
108
|
+
let rollbackError;
|
|
109
|
+
try {
|
|
110
|
+
this.configService.setPluginConfig(devices_homekit_constants_1.DEVICES_HOMEKIT_PLUGIN_NAME, {
|
|
111
|
+
type: devices_homekit_constants_1.DEVICES_HOMEKIT_PLUGIN_NAME,
|
|
112
|
+
mapped_device_ids: previousMappedDeviceIds,
|
|
113
|
+
});
|
|
114
|
+
}
|
|
115
|
+
catch (err) {
|
|
116
|
+
rollbackError = err;
|
|
117
|
+
this.logger.error(`Failed to persist compensating configuration rollback for HomeKit mapping: ${err.message}`);
|
|
118
|
+
}
|
|
119
|
+
if (rollbackError) {
|
|
120
|
+
throw new Error(`HomeKit mapping reconciliation failed: ${reconcileError.message}. Additionally, compensating rollback failed: ${rollbackError.message}`, { cause: reconcileError });
|
|
121
|
+
}
|
|
122
|
+
throw reconcileError;
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
});
|
|
126
|
+
for (const model of devices_homekit_openapi_1.DEVICES_HOMEKIT_PLUGIN_SWAGGER_EXTRA_MODELS) {
|
|
127
|
+
this.swaggerRegistry.register(model);
|
|
128
|
+
}
|
|
129
|
+
this.extensionsService.registerPluginMetadata({
|
|
130
|
+
type: devices_homekit_constants_1.DEVICES_HOMEKIT_PLUGIN_NAME,
|
|
131
|
+
name: 'Apple HomeKit Bridge',
|
|
132
|
+
description: 'Bridge Smart Panel devices to Apple Home via HomeKit Accessory Protocol',
|
|
133
|
+
author: 'FastyBird',
|
|
134
|
+
readme: `# Apple HomeKit Bridge
|
|
135
|
+
> Plugin · by FastyBird · platform: devices
|
|
136
|
+
|
|
137
|
+
Exposes Smart Panel registered devices to Apple Home as bridged accessories over the local network.
|
|
138
|
+
|
|
139
|
+
## Features
|
|
140
|
+
- **Local Control**: Direct local connection via HomeKit Accessory Protocol (HAP) and mDNS.
|
|
141
|
+
- **Selective Bridging**: Select exactly which devices are exposed to Apple Home via the mapping wizard.
|
|
142
|
+
- **Bidirectional Sync**: Real-time push updates for lights, switches, outlets, thermostats, sensors, blinds, and locks.
|
|
143
|
+
- **Easy Pairing**: Scan the generated QR code or enter the 8-digit setup PIN code directly in the Apple Home app.
|
|
144
|
+
`,
|
|
145
|
+
links: {
|
|
146
|
+
documentation: 'https://smart-panel.fastybird.com/docs',
|
|
147
|
+
repository: 'https://github.com/FastyBird/smart-panel',
|
|
148
|
+
},
|
|
149
|
+
});
|
|
150
|
+
this.managedServiceManager.register(this.homeKitBridgeService);
|
|
151
|
+
}
|
|
152
|
+
};
|
|
153
|
+
exports.DevicesHomeKitPlugin = DevicesHomeKitPlugin;
|
|
154
|
+
exports.DevicesHomeKitPlugin = DevicesHomeKitPlugin = DevicesHomeKitPlugin_1 = __decorate([
|
|
155
|
+
(0, api_tag_decorator_1.ApiTag)({
|
|
156
|
+
tagName: devices_homekit_constants_1.DEVICES_HOMEKIT_PLUGIN_NAME,
|
|
157
|
+
displayName: devices_homekit_constants_1.DEVICES_HOMEKIT_PLUGIN_API_TAG_NAME,
|
|
158
|
+
description: devices_homekit_constants_1.DEVICES_HOMEKIT_PLUGIN_API_TAG_DESCRIPTION,
|
|
159
|
+
}),
|
|
160
|
+
(0, common_1.Module)({
|
|
161
|
+
imports: [config_module_1.ConfigModule, devices_module_1.DevicesModule, extensions_module_1.ExtensionsModule, spaces_module_1.SpacesModule, swagger_module_1.SwaggerModule],
|
|
162
|
+
controllers: [homekit_bridge_controller_1.HomeKitBridgeController],
|
|
163
|
+
providers: [
|
|
164
|
+
homekit_actions_service_1.HomeKitActionsService,
|
|
165
|
+
homekit_bridge_service_1.HomeKitBridgeService,
|
|
166
|
+
homekit_command_dispatcher_1.HomeKitCommandDispatcher,
|
|
167
|
+
homekit_event_listener_1.HomeKitEventListener,
|
|
168
|
+
homekit_mapper_registry_service_1.HomeKitMapperRegistryService,
|
|
169
|
+
homekit_wizard_service_1.HomeKitWizardService,
|
|
170
|
+
],
|
|
171
|
+
exports: [homekit_bridge_service_1.HomeKitBridgeService],
|
|
172
|
+
}),
|
|
173
|
+
__metadata("design:paramtypes", [plugins_type_mapper_service_1.PluginsTypeMapperService,
|
|
174
|
+
swagger_models_registry_service_1.SwaggerModelsRegistryService,
|
|
175
|
+
extensions_service_1.ExtensionsService,
|
|
176
|
+
managed_service_manager_service_1.ManagedServiceManagerService,
|
|
177
|
+
homekit_bridge_service_1.HomeKitBridgeService,
|
|
178
|
+
plugin_config_mutation_registry_service_1.PluginConfigMutationRegistryService,
|
|
179
|
+
devices_service_1.DevicesService,
|
|
180
|
+
homekit_mapper_registry_service_1.HomeKitMapperRegistryService,
|
|
181
|
+
config_service_1.ConfigService])
|
|
182
|
+
], DevicesHomeKitPlugin);
|
|
183
|
+
//# sourceMappingURL=devices-homekit.plugin.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"devices-homekit.plugin.js","sourceRoot":"","sources":["../../../src/plugins/devices-homekit/devices-homekit.plugin.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,50 @@
|
|
|
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
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.ReqHomeKitMapDevicesDto = exports.HomeKitMapDevicesDto = void 0;
|
|
13
|
+
const class_transformer_1 = require("class-transformer");
|
|
14
|
+
const class_validator_1 = require("class-validator");
|
|
15
|
+
const swagger_1 = require("@nestjs/swagger");
|
|
16
|
+
let HomeKitMapDevicesDto = class HomeKitMapDevicesDto {
|
|
17
|
+
};
|
|
18
|
+
exports.HomeKitMapDevicesDto = HomeKitMapDevicesDto;
|
|
19
|
+
__decorate([
|
|
20
|
+
(0, swagger_1.ApiProperty)({
|
|
21
|
+
description: 'Array of Smart Panel device IDs to expose/bridge into Apple Home',
|
|
22
|
+
type: [String],
|
|
23
|
+
example: ['d290f1ee-6c54-4b01-90e6-d701748f0851', 'b180f1ee-6c54-4b01-90e6-d701748f0822'],
|
|
24
|
+
name: 'device_ids',
|
|
25
|
+
}),
|
|
26
|
+
(0, class_transformer_1.Expose)({ name: 'device_ids' }),
|
|
27
|
+
(0, class_validator_1.IsArray)(),
|
|
28
|
+
(0, class_validator_1.IsString)({ each: true, message: '[{"field":"device_ids","reason":"Each device ID must be a string."}]' }),
|
|
29
|
+
__metadata("design:type", Array)
|
|
30
|
+
], HomeKitMapDevicesDto.prototype, "device_ids", void 0);
|
|
31
|
+
exports.HomeKitMapDevicesDto = HomeKitMapDevicesDto = __decorate([
|
|
32
|
+
(0, swagger_1.ApiSchema)({ name: 'DevicesHomeKitPluginMapDevices' })
|
|
33
|
+
], HomeKitMapDevicesDto);
|
|
34
|
+
let ReqHomeKitMapDevicesDto = class ReqHomeKitMapDevicesDto {
|
|
35
|
+
};
|
|
36
|
+
exports.ReqHomeKitMapDevicesDto = ReqHomeKitMapDevicesDto;
|
|
37
|
+
__decorate([
|
|
38
|
+
(0, swagger_1.ApiProperty)({
|
|
39
|
+
description: 'Request data wrapper for device mapping',
|
|
40
|
+
type: () => HomeKitMapDevicesDto,
|
|
41
|
+
}),
|
|
42
|
+
(0, class_transformer_1.Expose)(),
|
|
43
|
+
(0, class_validator_1.ValidateNested)(),
|
|
44
|
+
(0, class_transformer_1.Type)(() => HomeKitMapDevicesDto),
|
|
45
|
+
__metadata("design:type", HomeKitMapDevicesDto)
|
|
46
|
+
], ReqHomeKitMapDevicesDto.prototype, "data", void 0);
|
|
47
|
+
exports.ReqHomeKitMapDevicesDto = ReqHomeKitMapDevicesDto = __decorate([
|
|
48
|
+
(0, swagger_1.ApiSchema)({ name: 'DevicesHomeKitPluginReqMapDevices' })
|
|
49
|
+
], ReqHomeKitMapDevicesDto);
|
|
50
|
+
//# sourceMappingURL=bridge-map.dto.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bridge-map.dto.js","sourceRoot":"","sources":["../../../../src/plugins/devices-homekit/dto/bridge-map.dto.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,yDAAiD;AACjD,qDAAoE;AAEpE,6CAAyD;AAGlD,IAAM,oBAAoB,GAA1B,MAAM,oBAAoB;CAWhC,CAAA;AAXY,oDAAoB;AAUhC;IATC,IAAA,qBAAW,EAAC;QACZ,WAAW,EAAE,kEAAkE;QAC/E,IAAI,EAAE,CAAC,MAAM,CAAC;QACd,OAAO,EAAE,CAAC,sCAAsC,EAAE,sCAAsC,CAAC;QACzF,IAAI,EAAE,YAAY;KAClB,CAAC;IACD,IAAA,0BAAM,EAAC,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC;IAC9B,IAAA,yBAAO,GAAE;IACT,IAAA,0BAAQ,EAAC,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,sEAAsE,EAAE,CAAC;;wDACrF;+BAVT,oBAAoB;IADhC,IAAA,mBAAS,EAAC,EAAE,IAAI,EAAE,gCAAgC,EAAE,CAAC;GACzC,oBAAoB,CAWhC;AAGM,IAAM,uBAAuB,GAA7B,MAAM,uBAAuB;CASnC,CAAA;AATY,0DAAuB;AAQnC;IAPC,IAAA,qBAAW,EAAC;QACZ,WAAW,EAAE,yCAAyC;QACtD,IAAI,EAAE,GAAG,EAAE,CAAC,oBAAoB;KAChC,CAAC;IACD,IAAA,0BAAM,GAAE;IACR,IAAA,gCAAc,GAAE;IAChB,IAAA,wBAAI,EAAC,GAAG,EAAE,CAAC,oBAAoB,CAAC;8BAC3B,oBAAoB;qDAAC;kCARf,uBAAuB;IADnC,IAAA,mBAAS,EAAC,EAAE,IAAI,EAAE,mCAAmC,EAAE,CAAC;GAC5C,uBAAuB,CASnC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { UpdatePluginConfigDto } from '../../../modules/config/dto/config.dto';
|
|
2
|
+
import { DEVICES_HOMEKIT_PLUGIN_NAME } from '../devices-homekit.constants';
|
|
3
|
+
export declare class HomeKitUpdatePluginConfigDto extends UpdatePluginConfigDto {
|
|
4
|
+
type: typeof DEVICES_HOMEKIT_PLUGIN_NAME;
|
|
5
|
+
bridge_name?: string;
|
|
6
|
+
port?: number;
|
|
7
|
+
pincode?: string;
|
|
8
|
+
username?: string;
|
|
9
|
+
setup_id?: string;
|
|
10
|
+
mapped_device_ids?: string[];
|
|
11
|
+
}
|