@fastybird/smart-panel-backend 1.1.0-alpha.14 → 1.1.0-alpha.16
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 +1 -0
- package/dist/app.module.js.map +1 -1
- package/dist/dataSource.js +1 -0
- package/dist/dataSource.js.map +1 -1
- package/dist/modules/system/scripts/update-worker.sh +360 -59
- package/dist/modules/system/services/update-executor.service.d.ts +9 -0
- package/dist/modules/system/services/update-executor.service.js +170 -25
- package/dist/modules/system/services/update-executor.service.js.map +1 -1
- package/dist/plugins/devices-home-assistant/devices-home-assistant.openapi.d.ts +2 -2
- package/dist/plugins/devices-home-assistant/devices-home-assistant.plugin.d.ts +6 -1
- package/dist/plugins/devices-home-assistant/devices-home-assistant.plugin.js +16 -1
- package/dist/plugins/devices-home-assistant/devices-home-assistant.plugin.js.map +1 -1
- package/dist/plugins/devices-home-assistant/dto/mapping-preview.dto.d.ts +1 -0
- package/dist/plugins/devices-home-assistant/dto/mapping-preview.dto.js +11 -0
- package/dist/plugins/devices-home-assistant/dto/mapping-preview.dto.js.map +1 -1
- package/dist/plugins/devices-home-assistant/mappers/button.entity.mapper.service.d.ts +19 -0
- package/dist/plugins/devices-home-assistant/mappers/button.entity.mapper.service.js +51 -0
- package/dist/plugins/devices-home-assistant/mappers/button.entity.mapper.service.js.map +1 -0
- package/dist/plugins/devices-home-assistant/mappings/definitions/entity-mappings.yaml +56 -7
- package/dist/plugins/devices-home-assistant/models/mapping-preview.model.d.ts +1 -0
- package/dist/plugins/devices-home-assistant/models/mapping-preview.model.js +11 -0
- package/dist/plugins/devices-home-assistant/models/mapping-preview.model.js.map +1 -1
- package/dist/plugins/devices-home-assistant/services/device-adoption.service.js +17 -0
- package/dist/plugins/devices-home-assistant/services/device-adoption.service.js.map +1 -1
- package/dist/plugins/devices-home-assistant/services/home-assistant-raw-event.service.d.ts +27 -0
- package/dist/plugins/devices-home-assistant/services/home-assistant-raw-event.service.js +271 -0
- package/dist/plugins/devices-home-assistant/services/home-assistant-raw-event.service.js.map +1 -0
- package/dist/plugins/devices-home-assistant/services/home-assistant.ws.service.d.ts +2 -2
- package/dist/plugins/devices-home-assistant/services/home-assistant.ws.service.js +31 -13
- package/dist/plugins/devices-home-assistant/services/home-assistant.ws.service.js.map +1 -1
- package/dist/plugins/devices-home-assistant/services/mapping-preview.service.js +24 -4
- package/dist/plugins/devices-home-assistant/services/mapping-preview.service.js.map +1 -1
- package/dist/plugins/devices-home-assistant/services/state-changed.event.service.d.ts +4 -1
- package/dist/plugins/devices-home-assistant/services/state-changed.event.service.js +82 -2
- package/dist/plugins/devices-home-assistant/services/state-changed.event.service.js.map +1 -1
- package/dist/plugins/devices-home-assistant/services/wizard.service.js +1 -0
- package/dist/plugins/devices-home-assistant/services/wizard.service.js.map +1 -1
- package/dist/plugins/devices-home-assistant/utils/ha-event.utils.d.ts +2 -0
- package/dist/plugins/devices-home-assistant/utils/ha-event.utils.js +50 -0
- package/dist/plugins/devices-home-assistant/utils/ha-event.utils.js.map +1 -0
- package/dist/plugins/devices-homekit/listeners/homekit-event.listener.d.ts +2 -0
- package/dist/plugins/devices-homekit/listeners/homekit-event.listener.js +22 -0
- package/dist/plugins/devices-homekit/listeners/homekit-event.listener.js.map +1 -1
- package/dist/plugins/devices-homekit/mappers/button.mapper.d.ts +15 -0
- package/dist/plugins/devices-homekit/mappers/button.mapper.js +143 -0
- package/dist/plugins/devices-homekit/mappers/button.mapper.js.map +1 -0
- package/dist/plugins/devices-homekit/mappers/homekit-mapper.interface.d.ts +8 -0
- package/dist/plugins/devices-homekit/services/homekit-mapper-registry.service.d.ts +5 -1
- package/dist/plugins/devices-homekit/services/homekit-mapper-registry.service.js +42 -0
- package/dist/plugins/devices-homekit/services/homekit-mapper-registry.service.js.map +1 -1
- package/dist/plugins/devices-homey/mappings/definitions/channels.yaml +50 -0
- package/dist/plugins/devices-homey/mappings/definitions/devices.yaml +18 -0
- package/dist/plugins/devices-homey/mappings/definitions/properties.yaml +55 -0
- package/dist/plugins/devices-homey/mappings/device-support.js +10 -0
- package/dist/plugins/devices-homey/mappings/device-support.js.map +1 -1
- package/dist/plugins/devices-homey/mappings/mapping-loader.service.d.ts +1 -0
- package/dist/plugins/devices-homey/mappings/mapping-loader.service.js +66 -8
- package/dist/plugins/devices-homey/mappings/mapping-loader.service.js.map +1 -1
- package/dist/plugins/devices-homey/models/inventory.model.d.ts +2 -1
- package/dist/plugins/devices-homey/models/inventory.model.js +1 -0
- package/dist/plugins/devices-homey/models/inventory.model.js.map +1 -1
- package/dist/plugins/devices-homey/models/mapping-preview.model.d.ts +1 -0
- package/dist/plugins/devices-homey/models/mapping-preview.model.js +1 -0
- package/dist/plugins/devices-homey/models/mapping-preview.model.js.map +1 -1
- package/dist/plugins/devices-homey/services/homey-mapping-preview.service.js +7 -0
- package/dist/plugins/devices-homey/services/homey-mapping-preview.service.js.map +1 -1
- package/dist/plugins/devices-homey/services/homey-synchronizer.service.d.ts +3 -1
- package/dist/plugins/devices-homey/services/homey-synchronizer.service.js +37 -6
- package/dist/plugins/devices-homey/services/homey-synchronizer.service.js.map +1 -1
- package/dist/plugins/devices-reterminal/services/reterminal-button.service.d.ts +7 -3
- package/dist/plugins/devices-reterminal/services/reterminal-button.service.js +63 -17
- package/dist/plugins/devices-reterminal/services/reterminal-button.service.js.map +1 -1
- package/dist/plugins/devices-third-party/controllers/third-party-inputs.controller.d.ts +17 -0
- package/dist/plugins/devices-third-party/controllers/third-party-inputs.controller.js +205 -0
- package/dist/plugins/devices-third-party/controllers/third-party-inputs.controller.js.map +1 -0
- package/dist/plugins/devices-third-party/devices-third-party.openapi.d.ts +1 -1
- package/dist/plugins/devices-third-party/devices-third-party.plugin.js +2 -1
- package/dist/plugins/devices-third-party/devices-third-party.plugin.js.map +1 -1
- package/dist/plugins/devices-third-party/dto/report-input-occurrence-response.dto.d.ts +5 -0
- package/dist/plugins/devices-third-party/dto/report-input-occurrence-response.dto.js +50 -0
- package/dist/plugins/devices-third-party/dto/report-input-occurrence-response.dto.js.map +1 -0
- package/dist/plugins/devices-third-party/dto/report-input-occurrence.dto.d.ts +8 -0
- package/dist/plugins/devices-third-party/dto/report-input-occurrence.dto.js +81 -0
- package/dist/plugins/devices-third-party/dto/report-input-occurrence.dto.js.map +1 -0
- package/dist/plugins/devices-third-party/platforms/third-party-device.platform.js +19 -4
- package/dist/plugins/devices-third-party/platforms/third-party-device.platform.js.map +1 -1
- package/dist/plugins/devices-virtual/listeners/virtual-projection.listener.d.ts +2 -0
- package/dist/plugins/devices-virtual/listeners/virtual-projection.listener.js +57 -0
- package/dist/plugins/devices-virtual/listeners/virtual-projection.listener.js.map +1 -1
- package/dist/tsconfig.build.tsbuildinfo +1 -1
- package/package.json +2 -2
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ButtonMapper = void 0;
|
|
4
|
+
const hap_nodejs_1 = require("@homebridge/hap-nodejs");
|
|
5
|
+
const extension_logger_service_1 = require("../../../common/logger/extension-logger.service");
|
|
6
|
+
const devices_constants_1 = require("../../../modules/devices/devices.constants");
|
|
7
|
+
const devices_homekit_constants_1 = require("../devices-homekit.constants");
|
|
8
|
+
const base_mapper_1 = require("./base.mapper");
|
|
9
|
+
class ButtonMapper extends base_mapper_1.BaseHomeKitMapper {
|
|
10
|
+
canMap(device) {
|
|
11
|
+
return ButtonMapper.getButtonChannels(device).length > 0;
|
|
12
|
+
}
|
|
13
|
+
getSuggestedServiceType(_device) {
|
|
14
|
+
return 'button';
|
|
15
|
+
}
|
|
16
|
+
buildAccessory(device, context) {
|
|
17
|
+
const buttonChannels = ButtonMapper.getButtonChannels(device);
|
|
18
|
+
if (buttonChannels.length === 0) {
|
|
19
|
+
return null;
|
|
20
|
+
}
|
|
21
|
+
const accessory = this.createBaseAccessory(device, 15);
|
|
22
|
+
ButtonMapper.attachButtonServices(accessory, device, context);
|
|
23
|
+
return accessory;
|
|
24
|
+
}
|
|
25
|
+
static isButtonChannel(channel) {
|
|
26
|
+
if (channel.category === devices_constants_1.ChannelCategory.BUTTON) {
|
|
27
|
+
return true;
|
|
28
|
+
}
|
|
29
|
+
if (channel.category === devices_constants_1.ChannelCategory.BINARY_INPUT) {
|
|
30
|
+
return (channel.properties?.some((p) => p.category === devices_constants_1.PropertyCategory.EVENT || p.permissions?.includes(devices_constants_1.PermissionType.EVENT_ONLY)) ?? false);
|
|
31
|
+
}
|
|
32
|
+
return false;
|
|
33
|
+
}
|
|
34
|
+
static getButtonChannels(device) {
|
|
35
|
+
return device.channels?.filter((channel) => ButtonMapper.isButtonChannel(channel)) ?? [];
|
|
36
|
+
}
|
|
37
|
+
static mapEventToHap(event) {
|
|
38
|
+
if (!event) {
|
|
39
|
+
return null;
|
|
40
|
+
}
|
|
41
|
+
const normalized = event.toLowerCase().trim();
|
|
42
|
+
switch (normalized) {
|
|
43
|
+
case 'press':
|
|
44
|
+
case 'single':
|
|
45
|
+
case 'single_press':
|
|
46
|
+
case 'click':
|
|
47
|
+
case 'button_1':
|
|
48
|
+
return hap_nodejs_1.Characteristic.ProgrammableSwitchEvent.SINGLE_PRESS;
|
|
49
|
+
case 'double':
|
|
50
|
+
case 'double_press':
|
|
51
|
+
case 'double_click':
|
|
52
|
+
case 'button_2':
|
|
53
|
+
return hap_nodejs_1.Characteristic.ProgrammableSwitchEvent.DOUBLE_PRESS;
|
|
54
|
+
case 'long_press':
|
|
55
|
+
case 'hold':
|
|
56
|
+
case 'long_click':
|
|
57
|
+
case 'button_3':
|
|
58
|
+
return hap_nodejs_1.Characteristic.ProgrammableSwitchEvent.LONG_PRESS;
|
|
59
|
+
default:
|
|
60
|
+
return null;
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
static resolveValidValues(property) {
|
|
64
|
+
if (!property || !property.format) {
|
|
65
|
+
return [
|
|
66
|
+
hap_nodejs_1.Characteristic.ProgrammableSwitchEvent.SINGLE_PRESS,
|
|
67
|
+
hap_nodejs_1.Characteristic.ProgrammableSwitchEvent.DOUBLE_PRESS,
|
|
68
|
+
hap_nodejs_1.Characteristic.ProgrammableSwitchEvent.LONG_PRESS,
|
|
69
|
+
];
|
|
70
|
+
}
|
|
71
|
+
const formats = Array.isArray(property.format)
|
|
72
|
+
? property.format.map((f) => String(f).toLowerCase())
|
|
73
|
+
: [String(property.format).toLowerCase()];
|
|
74
|
+
const valid = new Set();
|
|
75
|
+
for (const f of formats) {
|
|
76
|
+
const hap = ButtonMapper.mapEventToHap(f);
|
|
77
|
+
if (hap !== null) {
|
|
78
|
+
valid.add(hap);
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
return valid.size > 0 ? Array.from(valid).sort((a, b) => a - b) : [];
|
|
82
|
+
}
|
|
83
|
+
static attachButtonServices(accessory, device, context) {
|
|
84
|
+
const buttonChannels = ButtonMapper.getButtonChannels(device);
|
|
85
|
+
if (buttonChannels.length === 0) {
|
|
86
|
+
return;
|
|
87
|
+
}
|
|
88
|
+
if (buttonChannels.length > 1) {
|
|
89
|
+
let labelService = accessory.getService(hap_nodejs_1.Service.ServiceLabel);
|
|
90
|
+
if (!labelService) {
|
|
91
|
+
labelService = accessory.addService(hap_nodejs_1.Service.ServiceLabel, `${device.name} Buttons`);
|
|
92
|
+
labelService
|
|
93
|
+
.getCharacteristic(hap_nodejs_1.Characteristic.ServiceLabelNamespace)
|
|
94
|
+
.setValue(hap_nodejs_1.Characteristic.ServiceLabelNamespace.ARABIC_NUMERALS);
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
buttonChannels.forEach((channel, index) => {
|
|
98
|
+
if (accessory.getServiceById(hap_nodejs_1.Service.StatelessProgrammableSwitch, channel.id)) {
|
|
99
|
+
return;
|
|
100
|
+
}
|
|
101
|
+
const serviceIndex = index + 1;
|
|
102
|
+
const serviceName = buttonChannels.length === 1 ? device.name : `${device.name} ${channel.name || `Button ${serviceIndex}`}`;
|
|
103
|
+
const eventProp = channel.properties?.find((p) => p.category === devices_constants_1.PropertyCategory.EVENT) ??
|
|
104
|
+
channel.properties?.find((p) => p.permissions?.includes(devices_constants_1.PermissionType.EVENT_ONLY)) ??
|
|
105
|
+
channel.properties?.[0];
|
|
106
|
+
if (!eventProp) {
|
|
107
|
+
return;
|
|
108
|
+
}
|
|
109
|
+
const validValues = ButtonMapper.resolveValidValues(eventProp);
|
|
110
|
+
if (validValues.length === 0) {
|
|
111
|
+
return;
|
|
112
|
+
}
|
|
113
|
+
const switchService = accessory.addService(hap_nodejs_1.Service.StatelessProgrammableSwitch, serviceName, channel.id);
|
|
114
|
+
if (buttonChannels.length > 1) {
|
|
115
|
+
const indexChar = switchService.getCharacteristic(hap_nodejs_1.Characteristic.ServiceLabelIndex);
|
|
116
|
+
indexChar.setValue(serviceIndex);
|
|
117
|
+
}
|
|
118
|
+
const switchEventChar = switchService.getCharacteristic(hap_nodejs_1.Characteristic.ProgrammableSwitchEvent);
|
|
119
|
+
switchEventChar.onGet(() => null);
|
|
120
|
+
switchEventChar.setProps({ validValues });
|
|
121
|
+
context.registerOccurrenceListener?.({
|
|
122
|
+
deviceId: device.id,
|
|
123
|
+
channelId: channel.id,
|
|
124
|
+
propertyId: eventProp.id,
|
|
125
|
+
onOccurrence: (occurrence) => {
|
|
126
|
+
const hapEvent = ButtonMapper.mapEventToHap(occurrence.event);
|
|
127
|
+
if (hapEvent === null) {
|
|
128
|
+
ButtonMapper.logger.debug(`Dropping unsupported input occurrence event="${occurrence.event}" for device="${device.id}" channel="${channel.id}"`);
|
|
129
|
+
return;
|
|
130
|
+
}
|
|
131
|
+
if (!validValues.includes(hapEvent)) {
|
|
132
|
+
ButtonMapper.logger.warn(`Dropping occurrence event="${occurrence.event}" (HAP ${hapEvent}) outside validValues=[${validValues.join(',')}] for channel="${channel.id}"`);
|
|
133
|
+
return;
|
|
134
|
+
}
|
|
135
|
+
switchEventChar.sendEventNotification(hapEvent);
|
|
136
|
+
},
|
|
137
|
+
});
|
|
138
|
+
});
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
exports.ButtonMapper = ButtonMapper;
|
|
142
|
+
ButtonMapper.logger = (0, extension_logger_service_1.createExtensionLogger)(devices_homekit_constants_1.DEVICES_HOMEKIT_PLUGIN_NAME, 'ButtonMapper');
|
|
143
|
+
//# sourceMappingURL=button.mapper.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"button.mapper.js","sourceRoot":"","sources":["../../../../src/plugins/devices-homekit/mappers/button.mapper.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { Characteristic, CharacteristicValue } from '@homebridge/hap-nodejs';
|
|
2
2
|
import { ChannelPropertyEntity, DeviceEntity } from '../../../modules/devices/entities/devices.entity';
|
|
3
|
+
import { ChannelInputOccurrencePayload } from '../../../modules/devices/models/channel-input-occurrence.model';
|
|
3
4
|
import { HomeKitCommandDispatcher } from '../services/homekit-command.dispatcher';
|
|
4
5
|
export interface CharacteristicPendingWrite {
|
|
5
6
|
token: number;
|
|
@@ -24,10 +25,17 @@ export interface PropertyEventListener {
|
|
|
24
25
|
propertyId: string;
|
|
25
26
|
onPropertyChanged: (property: ChannelPropertyEntity, rawValue: unknown) => void;
|
|
26
27
|
}
|
|
28
|
+
export interface InputOccurrenceListener {
|
|
29
|
+
deviceId: string;
|
|
30
|
+
channelId: string;
|
|
31
|
+
propertyId: string;
|
|
32
|
+
onOccurrence: (occurrence: ChannelInputOccurrencePayload) => void;
|
|
33
|
+
}
|
|
27
34
|
export interface HomeKitMapperContext {
|
|
28
35
|
readonly commandDispatcher: HomeKitCommandDispatcher;
|
|
29
36
|
registerBinding(binding: CharacteristicBinding): void;
|
|
30
37
|
registerPropertyListener(listener: PropertyEventListener): void;
|
|
38
|
+
registerOccurrenceListener?(listener: InputOccurrenceListener): void;
|
|
31
39
|
}
|
|
32
40
|
export interface IHomeKitAccessoryMapper {
|
|
33
41
|
canMap(device: DeviceEntity): boolean;
|
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
import { Accessory } from '@homebridge/hap-nodejs';
|
|
2
2
|
import { DeviceEntity } from '../../../modules/devices/entities/devices.entity';
|
|
3
|
-
import { CharacteristicBinding, IHomeKitAccessoryMapper, PropertyEventListener } from '../mappers/homekit-mapper.interface';
|
|
3
|
+
import { CharacteristicBinding, IHomeKitAccessoryMapper, InputOccurrenceListener, PropertyEventListener } from '../mappers/homekit-mapper.interface';
|
|
4
4
|
import { HomeKitCommandDispatcher } from './homekit-command.dispatcher';
|
|
5
5
|
export interface RegistrySnapshot {
|
|
6
6
|
propertyBindings: Map<string, CharacteristicBinding[]>;
|
|
7
7
|
propertyListeners: Map<string, PropertyEventListener[]>;
|
|
8
|
+
occurrenceListeners: Map<string, InputOccurrenceListener[]>;
|
|
8
9
|
deviceProperties: Map<string, Set<string>>;
|
|
9
10
|
}
|
|
10
11
|
export interface StagedAccessory {
|
|
@@ -12,12 +13,14 @@ export interface StagedAccessory {
|
|
|
12
13
|
deviceId: string;
|
|
13
14
|
bindings: CharacteristicBinding[];
|
|
14
15
|
listeners: PropertyEventListener[];
|
|
16
|
+
occurrenceListeners: InputOccurrenceListener[];
|
|
15
17
|
}
|
|
16
18
|
export declare class HomeKitMapperRegistryService {
|
|
17
19
|
private readonly logger;
|
|
18
20
|
private readonly mappers;
|
|
19
21
|
private readonly propertyBindings;
|
|
20
22
|
private readonly propertyListeners;
|
|
23
|
+
private readonly occurrenceListeners;
|
|
21
24
|
private readonly deviceProperties;
|
|
22
25
|
constructor();
|
|
23
26
|
canMap(device: DeviceEntity): boolean;
|
|
@@ -27,6 +30,7 @@ export declare class HomeKitMapperRegistryService {
|
|
|
27
30
|
commitStaged(staged: StagedAccessory): void;
|
|
28
31
|
getBindingsForProperty(propertyId: string): CharacteristicBinding[];
|
|
29
32
|
getListenersForProperty(propertyId: string): PropertyEventListener[];
|
|
33
|
+
getOccurrenceListeners(propertyId: string, _channelId?: string): InputOccurrenceListener[];
|
|
30
34
|
clearDeviceBindings(deviceId: string): void;
|
|
31
35
|
clearAllBindings(): void;
|
|
32
36
|
getSnapshot(): RegistrySnapshot;
|
|
@@ -13,6 +13,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
13
13
|
exports.HomeKitMapperRegistryService = void 0;
|
|
14
14
|
const common_1 = require("@nestjs/common");
|
|
15
15
|
const battery_mapper_1 = require("../mappers/battery.mapper");
|
|
16
|
+
const button_mapper_1 = require("../mappers/button.mapper");
|
|
16
17
|
const lightbulb_mapper_1 = require("../mappers/lightbulb.mapper");
|
|
17
18
|
const lock_mapper_1 = require("../mappers/lock.mapper");
|
|
18
19
|
const outlet_mapper_1 = require("../mappers/outlet.mapper");
|
|
@@ -26,6 +27,7 @@ let HomeKitMapperRegistryService = HomeKitMapperRegistryService_1 = class HomeKi
|
|
|
26
27
|
this.mappers = [];
|
|
27
28
|
this.propertyBindings = new Map();
|
|
28
29
|
this.propertyListeners = new Map();
|
|
30
|
+
this.occurrenceListeners = new Map();
|
|
29
31
|
this.deviceProperties = new Map();
|
|
30
32
|
this.mappers.push(new lightbulb_mapper_1.LightbulbMapper());
|
|
31
33
|
this.mappers.push(new switch_mapper_1.SwitchMapper());
|
|
@@ -34,6 +36,7 @@ let HomeKitMapperRegistryService = HomeKitMapperRegistryService_1 = class HomeKi
|
|
|
34
36
|
this.mappers.push(new window_covering_mapper_1.WindowCoveringMapper());
|
|
35
37
|
this.mappers.push(new lock_mapper_1.LockMapper());
|
|
36
38
|
this.mappers.push(new sensor_mapper_1.SensorMapper());
|
|
39
|
+
this.mappers.push(new button_mapper_1.ButtonMapper());
|
|
37
40
|
}
|
|
38
41
|
canMap(device) {
|
|
39
42
|
return this.findMapper(device) !== null;
|
|
@@ -58,6 +61,7 @@ let HomeKitMapperRegistryService = HomeKitMapperRegistryService_1 = class HomeKi
|
|
|
58
61
|
}
|
|
59
62
|
const stagedBindings = [];
|
|
60
63
|
const stagedListeners = [];
|
|
64
|
+
const stagedOccurrenceListeners = [];
|
|
61
65
|
const context = {
|
|
62
66
|
commandDispatcher,
|
|
63
67
|
registerBinding: (binding) => {
|
|
@@ -66,17 +70,22 @@ let HomeKitMapperRegistryService = HomeKitMapperRegistryService_1 = class HomeKi
|
|
|
66
70
|
registerPropertyListener: (listener) => {
|
|
67
71
|
stagedListeners.push(listener);
|
|
68
72
|
},
|
|
73
|
+
registerOccurrenceListener: (listener) => {
|
|
74
|
+
stagedOccurrenceListeners.push(listener);
|
|
75
|
+
},
|
|
69
76
|
};
|
|
70
77
|
const accessory = mapper.buildAccessory(device, context);
|
|
71
78
|
if (!accessory) {
|
|
72
79
|
return null;
|
|
73
80
|
}
|
|
81
|
+
button_mapper_1.ButtonMapper.attachButtonServices(accessory, device, context);
|
|
74
82
|
battery_mapper_1.BatteryMapper.attachBatteryService(accessory, device, context);
|
|
75
83
|
return {
|
|
76
84
|
accessory,
|
|
77
85
|
deviceId: device.id,
|
|
78
86
|
bindings: stagedBindings,
|
|
79
87
|
listeners: stagedListeners,
|
|
88
|
+
occurrenceListeners: stagedOccurrenceListeners,
|
|
80
89
|
};
|
|
81
90
|
}
|
|
82
91
|
commitStaged(staged) {
|
|
@@ -103,6 +112,17 @@ let HomeKitMapperRegistryService = HomeKitMapperRegistryService_1 = class HomeKi
|
|
|
103
112
|
}
|
|
104
113
|
devProps.add(listener.propertyId);
|
|
105
114
|
}
|
|
115
|
+
for (const occListener of staged.occurrenceListeners) {
|
|
116
|
+
const existingProp = this.occurrenceListeners.get(occListener.propertyId) ?? [];
|
|
117
|
+
existingProp.push(occListener);
|
|
118
|
+
this.occurrenceListeners.set(occListener.propertyId, existingProp);
|
|
119
|
+
let devProps = this.deviceProperties.get(occListener.deviceId);
|
|
120
|
+
if (!devProps) {
|
|
121
|
+
devProps = new Set();
|
|
122
|
+
this.deviceProperties.set(occListener.deviceId, devProps);
|
|
123
|
+
}
|
|
124
|
+
devProps.add(occListener.propertyId);
|
|
125
|
+
}
|
|
106
126
|
}
|
|
107
127
|
getBindingsForProperty(propertyId) {
|
|
108
128
|
return this.propertyBindings.get(propertyId) ?? [];
|
|
@@ -110,6 +130,9 @@ let HomeKitMapperRegistryService = HomeKitMapperRegistryService_1 = class HomeKi
|
|
|
110
130
|
getListenersForProperty(propertyId) {
|
|
111
131
|
return this.propertyListeners.get(propertyId) ?? [];
|
|
112
132
|
}
|
|
133
|
+
getOccurrenceListeners(propertyId, _channelId) {
|
|
134
|
+
return this.occurrenceListeners.get(propertyId) ?? [];
|
|
135
|
+
}
|
|
113
136
|
clearDeviceBindings(deviceId) {
|
|
114
137
|
const propIds = this.deviceProperties.get(deviceId);
|
|
115
138
|
if (propIds) {
|
|
@@ -130,6 +153,14 @@ let HomeKitMapperRegistryService = HomeKitMapperRegistryService_1 = class HomeKi
|
|
|
130
153
|
else {
|
|
131
154
|
this.propertyListeners.set(propId, remainingListeners);
|
|
132
155
|
}
|
|
156
|
+
const occListeners = this.occurrenceListeners.get(propId) ?? [];
|
|
157
|
+
const remainingOccListeners = occListeners.filter((l) => l.deviceId !== deviceId);
|
|
158
|
+
if (remainingOccListeners.length === 0) {
|
|
159
|
+
this.occurrenceListeners.delete(propId);
|
|
160
|
+
}
|
|
161
|
+
else {
|
|
162
|
+
this.occurrenceListeners.set(propId, remainingOccListeners);
|
|
163
|
+
}
|
|
133
164
|
}
|
|
134
165
|
this.deviceProperties.delete(deviceId);
|
|
135
166
|
}
|
|
@@ -137,6 +168,7 @@ let HomeKitMapperRegistryService = HomeKitMapperRegistryService_1 = class HomeKi
|
|
|
137
168
|
clearAllBindings() {
|
|
138
169
|
this.propertyBindings.clear();
|
|
139
170
|
this.propertyListeners.clear();
|
|
171
|
+
this.occurrenceListeners.clear();
|
|
140
172
|
this.deviceProperties.clear();
|
|
141
173
|
}
|
|
142
174
|
getSnapshot() {
|
|
@@ -148,6 +180,10 @@ let HomeKitMapperRegistryService = HomeKitMapperRegistryService_1 = class HomeKi
|
|
|
148
180
|
for (const [k, v] of this.propertyListeners.entries()) {
|
|
149
181
|
cloneListeners.set(k, [...v]);
|
|
150
182
|
}
|
|
183
|
+
const cloneOcc = new Map();
|
|
184
|
+
for (const [k, v] of this.occurrenceListeners.entries()) {
|
|
185
|
+
cloneOcc.set(k, [...v]);
|
|
186
|
+
}
|
|
151
187
|
const cloneProps = new Map();
|
|
152
188
|
for (const [k, v] of this.deviceProperties.entries()) {
|
|
153
189
|
cloneProps.set(k, new Set(v));
|
|
@@ -155,6 +191,7 @@ let HomeKitMapperRegistryService = HomeKitMapperRegistryService_1 = class HomeKi
|
|
|
155
191
|
return {
|
|
156
192
|
propertyBindings: cloneBindings,
|
|
157
193
|
propertyListeners: cloneListeners,
|
|
194
|
+
occurrenceListeners: cloneOcc,
|
|
158
195
|
deviceProperties: cloneProps,
|
|
159
196
|
};
|
|
160
197
|
}
|
|
@@ -166,6 +203,11 @@ let HomeKitMapperRegistryService = HomeKitMapperRegistryService_1 = class HomeKi
|
|
|
166
203
|
for (const [k, v] of snapshot.propertyListeners.entries()) {
|
|
167
204
|
this.propertyListeners.set(k, [...v]);
|
|
168
205
|
}
|
|
206
|
+
if (snapshot.occurrenceListeners) {
|
|
207
|
+
for (const [k, v] of snapshot.occurrenceListeners.entries()) {
|
|
208
|
+
this.occurrenceListeners.set(k, [...v]);
|
|
209
|
+
}
|
|
210
|
+
}
|
|
169
211
|
for (const [k, v] of snapshot.deviceProperties.entries()) {
|
|
170
212
|
this.deviceProperties.set(k, new Set(v));
|
|
171
213
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"homekit-mapper-registry.service.js","sourceRoot":"","sources":["../../../../src/plugins/devices-homekit/services/homekit-mapper-registry.service.ts"],"names":[],"mappings":";;;;;;;;;;;;;AACA,2CAAoD;AAGpD,8DAA0D;
|
|
1
|
+
{"version":3,"file":"homekit-mapper-registry.service.js","sourceRoot":"","sources":["../../../../src/plugins/devices-homekit/services/homekit-mapper-registry.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -212,3 +212,53 @@ mappings:
|
|
|
212
212
|
identifier: window-covering
|
|
213
213
|
category: window_covering
|
|
214
214
|
name: Window covering
|
|
215
|
+
|
|
216
|
+
- name: binary-input-1
|
|
217
|
+
priority: 100
|
|
218
|
+
match:
|
|
219
|
+
classes: [sensor, socket, other]
|
|
220
|
+
all_capabilities: [input_1]
|
|
221
|
+
channel:
|
|
222
|
+
identifier: input-1
|
|
223
|
+
category: binary_input
|
|
224
|
+
name: Input 1
|
|
225
|
+
|
|
226
|
+
- name: binary-input-2
|
|
227
|
+
priority: 100
|
|
228
|
+
match:
|
|
229
|
+
classes: [sensor, socket, other]
|
|
230
|
+
all_capabilities: [input_2]
|
|
231
|
+
channel:
|
|
232
|
+
identifier: input-2
|
|
233
|
+
category: binary_input
|
|
234
|
+
name: Input 2
|
|
235
|
+
|
|
236
|
+
- name: binary-input-3
|
|
237
|
+
priority: 100
|
|
238
|
+
match:
|
|
239
|
+
classes: [sensor, socket, other]
|
|
240
|
+
all_capabilities: [input_3]
|
|
241
|
+
channel:
|
|
242
|
+
identifier: input-3
|
|
243
|
+
category: binary_input
|
|
244
|
+
name: Input 3
|
|
245
|
+
|
|
246
|
+
- name: binary-input-4
|
|
247
|
+
priority: 100
|
|
248
|
+
match:
|
|
249
|
+
classes: [sensor, socket, other]
|
|
250
|
+
all_capabilities: [input_4]
|
|
251
|
+
channel:
|
|
252
|
+
identifier: input-4
|
|
253
|
+
category: binary_input
|
|
254
|
+
name: Input 4
|
|
255
|
+
|
|
256
|
+
- name: tamper-alarm
|
|
257
|
+
priority: 100
|
|
258
|
+
match:
|
|
259
|
+
classes: [sensor, lock, other]
|
|
260
|
+
all_capabilities: [alarm_tamper]
|
|
261
|
+
channel:
|
|
262
|
+
identifier: tamper
|
|
263
|
+
category: alarm
|
|
264
|
+
name: Tamper
|
|
@@ -61,10 +61,28 @@ mappings:
|
|
|
61
61
|
- alarm_contact
|
|
62
62
|
- alarm_smoke
|
|
63
63
|
- alarm_co
|
|
64
|
+
- alarm_tamper
|
|
65
|
+
- input_1
|
|
66
|
+
- input_2
|
|
67
|
+
- input_3
|
|
68
|
+
- input_4
|
|
64
69
|
- measure_battery
|
|
65
70
|
device:
|
|
66
71
|
category: sensor
|
|
67
72
|
|
|
73
|
+
- name: input-controller
|
|
74
|
+
description: Homey hardware input controller device
|
|
75
|
+
priority: 220
|
|
76
|
+
match:
|
|
77
|
+
classes: [sensor, socket, other]
|
|
78
|
+
any_capabilities:
|
|
79
|
+
- input_1
|
|
80
|
+
- input_2
|
|
81
|
+
- input_3
|
|
82
|
+
- input_4
|
|
83
|
+
device:
|
|
84
|
+
category: input_controller
|
|
85
|
+
|
|
68
86
|
- name: generic-switch
|
|
69
87
|
description: Homey generic device exposing standardized power control
|
|
70
88
|
priority: 100
|
|
@@ -549,3 +549,58 @@ mappings:
|
|
|
549
549
|
input_range: [0, 1]
|
|
550
550
|
output_range: [-90, 90]
|
|
551
551
|
clamp: true
|
|
552
|
+
|
|
553
|
+
- name: binary-input-1-state
|
|
554
|
+
priority: 100
|
|
555
|
+
match:
|
|
556
|
+
classes: [sensor, socket, other]
|
|
557
|
+
capability_base_ids: [input_1]
|
|
558
|
+
property:
|
|
559
|
+
channel: input-1
|
|
560
|
+
category: state
|
|
561
|
+
data_type: bool
|
|
562
|
+
direction: read_only
|
|
563
|
+
|
|
564
|
+
- name: binary-input-2-state
|
|
565
|
+
priority: 100
|
|
566
|
+
match:
|
|
567
|
+
classes: [sensor, socket, other]
|
|
568
|
+
capability_base_ids: [input_2]
|
|
569
|
+
property:
|
|
570
|
+
channel: input-2
|
|
571
|
+
category: state
|
|
572
|
+
data_type: bool
|
|
573
|
+
direction: read_only
|
|
574
|
+
|
|
575
|
+
- name: binary-input-3-state
|
|
576
|
+
priority: 100
|
|
577
|
+
match:
|
|
578
|
+
classes: [sensor, socket, other]
|
|
579
|
+
capability_base_ids: [input_3]
|
|
580
|
+
property:
|
|
581
|
+
channel: input-3
|
|
582
|
+
category: state
|
|
583
|
+
data_type: bool
|
|
584
|
+
direction: read_only
|
|
585
|
+
|
|
586
|
+
- name: binary-input-4-state
|
|
587
|
+
priority: 100
|
|
588
|
+
match:
|
|
589
|
+
classes: [sensor, socket, other]
|
|
590
|
+
capability_base_ids: [input_4]
|
|
591
|
+
property:
|
|
592
|
+
channel: input-4
|
|
593
|
+
category: state
|
|
594
|
+
data_type: bool
|
|
595
|
+
direction: read_only
|
|
596
|
+
|
|
597
|
+
- name: tamper-alarm-detected
|
|
598
|
+
priority: 100
|
|
599
|
+
match:
|
|
600
|
+
classes: [sensor, lock, other]
|
|
601
|
+
capability_base_ids: [alarm_tamper]
|
|
602
|
+
property:
|
|
603
|
+
channel: tamper
|
|
604
|
+
category: detected
|
|
605
|
+
data_type: bool
|
|
606
|
+
direction: read_only
|
|
@@ -7,6 +7,16 @@ function resolveHomeyDeviceSupport(mappingLoader, device) {
|
|
|
7
7
|
const channelResolution = mappingLoader.resolveChannelMappings(device);
|
|
8
8
|
const propertyResolution = mappingLoader.resolvePropertyMappings(device);
|
|
9
9
|
const reasons = [];
|
|
10
|
+
const isButtonOrRemote = device.class === 'button' ||
|
|
11
|
+
device.class === 'remote' ||
|
|
12
|
+
(device.capabilities.length > 0 &&
|
|
13
|
+
device.capabilities.every((cap) => cap.baseId === 'button' || cap.baseId === 'actionEvents'));
|
|
14
|
+
if (isButtonOrRemote && propertyResolution.mappings.length === 0) {
|
|
15
|
+
return {
|
|
16
|
+
state: inventory_model_1.HomeyDeviceSupportState.UNSUPPORTED,
|
|
17
|
+
reasons: [inventory_model_1.HomeyDeviceSupportReason.UNSUPPORTED_PHYSICAL_EVENTS],
|
|
18
|
+
};
|
|
19
|
+
}
|
|
10
20
|
if (hasBlockingConflict(deviceResolution.conflicts)) {
|
|
11
21
|
reasons.push(inventory_model_1.HomeyDeviceSupportReason.DEVICE_MAPPING_CONFLICT);
|
|
12
22
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"device-support.js","sourceRoot":"","sources":["../../../../src/plugins/devices-homey/mappings/device-support.ts"],"names":[],"mappings":";;AAWA,
|
|
1
|
+
{"version":3,"file":"device-support.js","sourceRoot":"","sources":["../../../../src/plugins/devices-homey/mappings/device-support.ts"],"names":[],"mappings":"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"}
|
|
@@ -21,6 +21,7 @@ export declare class HomeyMappingLoaderService implements OnModuleInit {
|
|
|
21
21
|
resolveDeviceMappings(device: HomeyDevice): HomeyMappingResolution<ResolvedHomeyDeviceMapping>;
|
|
22
22
|
resolveChannelMappings(device: HomeyDevice): HomeyMappingResolution<ResolvedHomeyChannelMapping>;
|
|
23
23
|
resolvePropertyMappings(device: HomeyDevice): HomeyMappingResolution<ResolvedHomeyPropertyBinding>;
|
|
24
|
+
private validateSuffixedChannelMapping;
|
|
24
25
|
private selectPrimaryPropertyBindings;
|
|
25
26
|
private compareCapabilityInstances;
|
|
26
27
|
private applyUserOverrides;
|