@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.
Files changed (91) hide show
  1. package/dist/app.module.js +1 -0
  2. package/dist/app.module.js.map +1 -1
  3. package/dist/dataSource.js +1 -0
  4. package/dist/dataSource.js.map +1 -1
  5. package/dist/modules/system/scripts/update-worker.sh +360 -59
  6. package/dist/modules/system/services/update-executor.service.d.ts +9 -0
  7. package/dist/modules/system/services/update-executor.service.js +170 -25
  8. package/dist/modules/system/services/update-executor.service.js.map +1 -1
  9. package/dist/plugins/devices-home-assistant/devices-home-assistant.openapi.d.ts +2 -2
  10. package/dist/plugins/devices-home-assistant/devices-home-assistant.plugin.d.ts +6 -1
  11. package/dist/plugins/devices-home-assistant/devices-home-assistant.plugin.js +16 -1
  12. package/dist/plugins/devices-home-assistant/devices-home-assistant.plugin.js.map +1 -1
  13. package/dist/plugins/devices-home-assistant/dto/mapping-preview.dto.d.ts +1 -0
  14. package/dist/plugins/devices-home-assistant/dto/mapping-preview.dto.js +11 -0
  15. package/dist/plugins/devices-home-assistant/dto/mapping-preview.dto.js.map +1 -1
  16. package/dist/plugins/devices-home-assistant/mappers/button.entity.mapper.service.d.ts +19 -0
  17. package/dist/plugins/devices-home-assistant/mappers/button.entity.mapper.service.js +51 -0
  18. package/dist/plugins/devices-home-assistant/mappers/button.entity.mapper.service.js.map +1 -0
  19. package/dist/plugins/devices-home-assistant/mappings/definitions/entity-mappings.yaml +56 -7
  20. package/dist/plugins/devices-home-assistant/models/mapping-preview.model.d.ts +1 -0
  21. package/dist/plugins/devices-home-assistant/models/mapping-preview.model.js +11 -0
  22. package/dist/plugins/devices-home-assistant/models/mapping-preview.model.js.map +1 -1
  23. package/dist/plugins/devices-home-assistant/services/device-adoption.service.js +17 -0
  24. package/dist/plugins/devices-home-assistant/services/device-adoption.service.js.map +1 -1
  25. package/dist/plugins/devices-home-assistant/services/home-assistant-raw-event.service.d.ts +27 -0
  26. package/dist/plugins/devices-home-assistant/services/home-assistant-raw-event.service.js +271 -0
  27. package/dist/plugins/devices-home-assistant/services/home-assistant-raw-event.service.js.map +1 -0
  28. package/dist/plugins/devices-home-assistant/services/home-assistant.ws.service.d.ts +2 -2
  29. package/dist/plugins/devices-home-assistant/services/home-assistant.ws.service.js +31 -13
  30. package/dist/plugins/devices-home-assistant/services/home-assistant.ws.service.js.map +1 -1
  31. package/dist/plugins/devices-home-assistant/services/mapping-preview.service.js +24 -4
  32. package/dist/plugins/devices-home-assistant/services/mapping-preview.service.js.map +1 -1
  33. package/dist/plugins/devices-home-assistant/services/state-changed.event.service.d.ts +4 -1
  34. package/dist/plugins/devices-home-assistant/services/state-changed.event.service.js +82 -2
  35. package/dist/plugins/devices-home-assistant/services/state-changed.event.service.js.map +1 -1
  36. package/dist/plugins/devices-home-assistant/services/wizard.service.js +1 -0
  37. package/dist/plugins/devices-home-assistant/services/wizard.service.js.map +1 -1
  38. package/dist/plugins/devices-home-assistant/utils/ha-event.utils.d.ts +2 -0
  39. package/dist/plugins/devices-home-assistant/utils/ha-event.utils.js +50 -0
  40. package/dist/plugins/devices-home-assistant/utils/ha-event.utils.js.map +1 -0
  41. package/dist/plugins/devices-homekit/listeners/homekit-event.listener.d.ts +2 -0
  42. package/dist/plugins/devices-homekit/listeners/homekit-event.listener.js +22 -0
  43. package/dist/plugins/devices-homekit/listeners/homekit-event.listener.js.map +1 -1
  44. package/dist/plugins/devices-homekit/mappers/button.mapper.d.ts +15 -0
  45. package/dist/plugins/devices-homekit/mappers/button.mapper.js +143 -0
  46. package/dist/plugins/devices-homekit/mappers/button.mapper.js.map +1 -0
  47. package/dist/plugins/devices-homekit/mappers/homekit-mapper.interface.d.ts +8 -0
  48. package/dist/plugins/devices-homekit/services/homekit-mapper-registry.service.d.ts +5 -1
  49. package/dist/plugins/devices-homekit/services/homekit-mapper-registry.service.js +42 -0
  50. package/dist/plugins/devices-homekit/services/homekit-mapper-registry.service.js.map +1 -1
  51. package/dist/plugins/devices-homey/mappings/definitions/channels.yaml +50 -0
  52. package/dist/plugins/devices-homey/mappings/definitions/devices.yaml +18 -0
  53. package/dist/plugins/devices-homey/mappings/definitions/properties.yaml +55 -0
  54. package/dist/plugins/devices-homey/mappings/device-support.js +10 -0
  55. package/dist/plugins/devices-homey/mappings/device-support.js.map +1 -1
  56. package/dist/plugins/devices-homey/mappings/mapping-loader.service.d.ts +1 -0
  57. package/dist/plugins/devices-homey/mappings/mapping-loader.service.js +66 -8
  58. package/dist/plugins/devices-homey/mappings/mapping-loader.service.js.map +1 -1
  59. package/dist/plugins/devices-homey/models/inventory.model.d.ts +2 -1
  60. package/dist/plugins/devices-homey/models/inventory.model.js +1 -0
  61. package/dist/plugins/devices-homey/models/inventory.model.js.map +1 -1
  62. package/dist/plugins/devices-homey/models/mapping-preview.model.d.ts +1 -0
  63. package/dist/plugins/devices-homey/models/mapping-preview.model.js +1 -0
  64. package/dist/plugins/devices-homey/models/mapping-preview.model.js.map +1 -1
  65. package/dist/plugins/devices-homey/services/homey-mapping-preview.service.js +7 -0
  66. package/dist/plugins/devices-homey/services/homey-mapping-preview.service.js.map +1 -1
  67. package/dist/plugins/devices-homey/services/homey-synchronizer.service.d.ts +3 -1
  68. package/dist/plugins/devices-homey/services/homey-synchronizer.service.js +37 -6
  69. package/dist/plugins/devices-homey/services/homey-synchronizer.service.js.map +1 -1
  70. package/dist/plugins/devices-reterminal/services/reterminal-button.service.d.ts +7 -3
  71. package/dist/plugins/devices-reterminal/services/reterminal-button.service.js +63 -17
  72. package/dist/plugins/devices-reterminal/services/reterminal-button.service.js.map +1 -1
  73. package/dist/plugins/devices-third-party/controllers/third-party-inputs.controller.d.ts +17 -0
  74. package/dist/plugins/devices-third-party/controllers/third-party-inputs.controller.js +205 -0
  75. package/dist/plugins/devices-third-party/controllers/third-party-inputs.controller.js.map +1 -0
  76. package/dist/plugins/devices-third-party/devices-third-party.openapi.d.ts +1 -1
  77. package/dist/plugins/devices-third-party/devices-third-party.plugin.js +2 -1
  78. package/dist/plugins/devices-third-party/devices-third-party.plugin.js.map +1 -1
  79. package/dist/plugins/devices-third-party/dto/report-input-occurrence-response.dto.d.ts +5 -0
  80. package/dist/plugins/devices-third-party/dto/report-input-occurrence-response.dto.js +50 -0
  81. package/dist/plugins/devices-third-party/dto/report-input-occurrence-response.dto.js.map +1 -0
  82. package/dist/plugins/devices-third-party/dto/report-input-occurrence.dto.d.ts +8 -0
  83. package/dist/plugins/devices-third-party/dto/report-input-occurrence.dto.js +81 -0
  84. package/dist/plugins/devices-third-party/dto/report-input-occurrence.dto.js.map +1 -0
  85. package/dist/plugins/devices-third-party/platforms/third-party-device.platform.js +19 -4
  86. package/dist/plugins/devices-third-party/platforms/third-party-device.platform.js.map +1 -1
  87. package/dist/plugins/devices-virtual/listeners/virtual-projection.listener.d.ts +2 -0
  88. package/dist/plugins/devices-virtual/listeners/virtual-projection.listener.js +57 -0
  89. package/dist/plugins/devices-virtual/listeners/virtual-projection.listener.js.map +1 -1
  90. package/dist/tsconfig.build.tsbuildinfo +1 -1
  91. 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;AAO1D,kEAA8D;AAC9D,wDAAoD;AACpD,4DAAwD;AACxD,4DAAwD;AACxD,4DAAwD;AACxD,oEAAgE;AAChE,8EAAyE;AAkBlE,IAAM,4BAA4B,oCAAlC,MAAM,4BAA4B;IAWxC;QAViB,WAAM,GAAG,IAAI,eAAM,CAAC,8BAA4B,CAAC,IAAI,CAAC,CAAC;QACvD,YAAO,GAA8B,EAAE,CAAC;QAGxC,qBAAgB,GAAG,IAAI,GAAG,EAAmC,CAAC;QAE9D,sBAAiB,GAAG,IAAI,GAAG,EAAmC,CAAC;QAE/D,qBAAgB,GAAG,IAAI,GAAG,EAAuB,CAAC;QAIlE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,kCAAe,EAAE,CAAC,CAAC;QACzC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,4BAAY,EAAE,CAAC,CAAC;QACtC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,4BAAY,EAAE,CAAC,CAAC;QACtC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,oCAAgB,EAAE,CAAC,CAAC;QAC1C,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,6CAAoB,EAAE,CAAC,CAAC;QAC9C,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,wBAAU,EAAE,CAAC,CAAC;QACpC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,4BAAY,EAAE,CAAC,CAAC;IACvC,CAAC;IAED,MAAM,CAAC,MAAoB;QAC1B,OAAO,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,KAAK,IAAI,CAAC;IACzC,CAAC;IAED,UAAU,CAAC,MAAoB;QAC9B,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACnC,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;gBAC3B,OAAO,MAAM,CAAC;YACf,CAAC;QACF,CAAC;QACD,OAAO,IAAI,CAAC;IACb,CAAC;IAED,uBAAuB,CAAC,MAAoB;QAC3C,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;QACvC,OAAO,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,uBAAuB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAC/D,CAAC;IAED,cAAc,CAAC,MAAoB,EAAE,iBAA2C;QAC/E,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;QACvC,IAAI,CAAC,MAAM,EAAE,CAAC;YACb,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,kDAAkD,MAAM,CAAC,IAAI,KAAK,MAAM,CAAC,EAAE,GAAG,CAAC,CAAC;YAClG,OAAO,IAAI,CAAC;QACb,CAAC;QAGD,MAAM,cAAc,GAA4B,EAAE,CAAC;QACnD,MAAM,eAAe,GAA4B,EAAE,CAAC;QAEpD,MAAM,OAAO,GAAyB;YACrC,iBAAiB;YACjB,eAAe,EAAE,CAAC,OAA8B,EAAE,EAAE;gBACnD,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAC9B,CAAC;YACD,wBAAwB,EAAE,CAAC,QAA+B,EAAE,EAAE;gBAC7D,eAAe,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAChC,CAAC;SACD,CAAC;QAEF,MAAM,SAAS,GAAG,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QACzD,IAAI,CAAC,SAAS,EAAE,CAAC;YAChB,OAAO,IAAI,CAAC;QACb,CAAC;QAGD,8BAAa,CAAC,oBAAoB,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;QAE/D,OAAO;YACN,SAAS;YACT,QAAQ,EAAE,MAAM,CAAC,EAAE;YACnB,QAAQ,EAAE,cAAc;YACxB,SAAS,EAAE,eAAe;SAC1B,CAAC;IACH,CAAC;IAED,YAAY,CAAC,MAAuB;QACnC,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QAE1C,KAAK,MAAM,OAAO,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;YACvC,MAAM,QAAQ,GAAG,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;YACrE,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YACvB,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,OAAO,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;YAExD,IAAI,QAAQ,GAAG,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;YAC3D,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACf,QAAQ,GAAG,IAAI,GAAG,EAAE,CAAC;gBACrB,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,OAAO,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;YACvD,CAAC;YACD,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;QAClC,CAAC;QAED,KAAK,MAAM,QAAQ,IAAI,MAAM,CAAC,SAAS,EAAE,CAAC;YACzC,MAAM,QAAQ,GAAG,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;YACvE,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YACxB,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,QAAQ,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;YAE1D,IAAI,QAAQ,GAAG,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;YAC5D,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACf,QAAQ,GAAG,IAAI,GAAG,EAAE,CAAC;gBACrB,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;YACxD,CAAC;YACD,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;QACnC,CAAC;IACF,CAAC;IAED,sBAAsB,CAAC,UAAkB;QACxC,OAAO,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;IACpD,CAAC;IAED,uBAAuB,CAAC,UAAkB;QACzC,OAAO,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;IACrD,CAAC;IAED,mBAAmB,CAAC,QAAgB;QACnC,MAAM,OAAO,GAAG,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QACpD,IAAI,OAAO,EAAE,CAAC;YACb,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;gBAC9B,MAAM,QAAQ,GAAG,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;gBACzD,MAAM,iBAAiB,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC;gBAC1E,IAAI,iBAAiB,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oBACpC,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;gBACtC,CAAC;qBAAM,CAAC;oBACP,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC;gBACtD,CAAC;gBAED,MAAM,SAAS,GAAG,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;gBAC3D,MAAM,kBAAkB,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC;gBAC5E,IAAI,kBAAkB,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oBACrC,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;gBACvC,CAAC;qBAAM,CAAC;oBACP,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAC;gBACxD,CAAC;YACF,CAAC;YACD,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QACxC,CAAC;IACF,CAAC;IAED,gBAAgB;QACf,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,CAAC;QAC9B,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAE,CAAC;QAC/B,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,CAAC;IAC/B,CAAC;IAED,WAAW;QACV,MAAM,aAAa,GAAG,IAAI,GAAG,EAAmC,CAAC;QACjE,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,EAAE,CAAC;YACtD,aAAa,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QAC9B,CAAC;QACD,MAAM,cAAc,GAAG,IAAI,GAAG,EAAmC,CAAC;QAClE,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,IAAI,CAAC,iBAAiB,CAAC,OAAO,EAAE,EAAE,CAAC;YACvD,cAAc,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QAC/B,CAAC;QACD,MAAM,UAAU,GAAG,IAAI,GAAG,EAAuB,CAAC;QAClD,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,EAAE,CAAC;YACtD,UAAU,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QAC/B,CAAC;QACD,OAAO;YACN,gBAAgB,EAAE,aAAa;YAC/B,iBAAiB,EAAE,cAAc;YACjC,gBAAgB,EAAE,UAAU;SAC5B,CAAC;IACH,CAAC;IAED,eAAe,CAAC,QAA0B;QACzC,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACxB,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,QAAQ,CAAC,gBAAgB,CAAC,OAAO,EAAE,EAAE,CAAC;YAC1D,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QACtC,CAAC;QACD,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,QAAQ,CAAC,iBAAiB,CAAC,OAAO,EAAE,EAAE,CAAC;YAC3D,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QACvC,CAAC;QACD,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,QAAQ,CAAC,gBAAgB,CAAC,OAAO,EAAE,EAAE,CAAC;YAC1D,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QAC1C,CAAC;IACF,CAAC;CACD,CAAA;AAjLY,oEAA4B;uCAA5B,4BAA4B;IADxC,IAAA,mBAAU,GAAE;;GACA,4BAA4B,CAiLxC"}
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,8DAyCC;AAnDD,+DAA8F;AAU9F,SAAgB,yBAAyB,CACxC,aAAwC,EACxC,MAAmB;IAEnB,MAAM,gBAAgB,GAAG,aAAa,CAAC,qBAAqB,CAAC,MAAM,CAAC,CAAC;IACrE,MAAM,iBAAiB,GAAG,aAAa,CAAC,sBAAsB,CAAC,MAAM,CAAC,CAAC;IACvE,MAAM,kBAAkB,GAAG,aAAa,CAAC,uBAAuB,CAAC,MAAM,CAAC,CAAC;IACzE,MAAM,OAAO,GAA+B,EAAE,CAAC;IAE/C,IAAI,mBAAmB,CAAC,gBAAgB,CAAC,SAAS,CAAC,EAAE,CAAC;QACrD,OAAO,CAAC,IAAI,CAAC,0CAAwB,CAAC,uBAAuB,CAAC,CAAC;IAChE,CAAC;SAAM,IAAI,gBAAgB,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACnD,OAAO;YACN,KAAK,EAAE,yCAAuB,CAAC,WAAW;YAC1C,OAAO,EAAE,CAAC,0CAAwB,CAAC,iBAAiB,CAAC;SACrD,CAAC;IACH,CAAC;IAED,IAAI,mBAAmB,CAAC,iBAAiB,CAAC,SAAS,CAAC,EAAE,CAAC;QACtD,OAAO,CAAC,IAAI,CAAC,0CAAwB,CAAC,wBAAwB,CAAC,CAAC;IACjE,CAAC;SAAM,IAAI,iBAAiB,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACpD,OAAO,CAAC,IAAI,CAAC,0CAAwB,CAAC,kBAAkB,CAAC,CAAC;IAC3D,CAAC;IAED,IAAI,mBAAmB,CAAC,kBAAkB,CAAC,SAAS,CAAC,EAAE,CAAC;QACvD,OAAO,CAAC,IAAI,CAAC,0CAAwB,CAAC,yBAAyB,CAAC,CAAC;IAClE,CAAC;SAAM,IAAI,kBAAkB,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACrD,OAAO,CAAC,IAAI,CAAC,0CAAwB,CAAC,mBAAmB,CAAC,CAAC;IAC5D,CAAC;SAAM,IAAI,CAAC,4BAA4B,CAAC,iBAAiB,EAAE,kBAAkB,CAAC,EAAE,CAAC;QACjF,OAAO,CAAC,IAAI,CAAC,0CAAwB,CAAC,8BAA8B,CAAC,CAAC;IACvE,CAAC;IAED,OAAO;QACN,KAAK,EACJ,OAAO,CAAC,MAAM,KAAK,CAAC;YACnB,CAAC,CAAC,yCAAuB,CAAC,SAAS;YACnC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;gBACvD,CAAC,CAAC,yCAAuB,CAAC,UAAU;gBACpC,CAAC,CAAC,yCAAuB,CAAC,WAAW;QACxC,OAAO;KACP,CAAC;AACH,CAAC;AAED,SAAS,4BAA4B,CACpC,iBAAkF,EAClF,kBAAwE;IAExE,MAAM,kBAAkB,GAAG,IAAI,GAAG,CAAC,iBAAiB,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC;IAE5G,OAAO,kBAAkB,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,kBAAkB,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC;AAChH,CAAC;AAED,SAAS,mBAAmB,CAAC,SAA0C;IACtE,OAAO,SAAS,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,MAAM,KAAK,OAAO,CAAC,CAAC;AAClE,CAAC"}
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;