@switchbot/homebridge-switchbot 5.0.0-beta.110 → 5.0.0-beta.111
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/.github/copilot-instructions.md +39 -0
- package/dist/homebridge-ui/endpoints/devices.d.ts.map +1 -1
- package/dist/homebridge-ui/endpoints/devices.js +10 -1
- package/dist/homebridge-ui/endpoints/devices.js.map +1 -1
- package/dist/homebridge-ui/public/js/api.d.ts +5 -1
- package/dist/homebridge-ui/public/js/api.d.ts.map +1 -1
- package/dist/homebridge-ui/public/js/api.js +13 -3
- package/dist/homebridge-ui/public/js/api.js.map +1 -1
- package/dist/homebridge-ui/public/js/api.ts +13 -3
- package/dist/homebridge-ui/public/js/app.js +245 -11
- package/dist/homebridge-ui/public/js/app.js.map +3 -3
- package/dist/homebridge-ui/public/js/devices.d.ts.map +1 -1
- package/dist/homebridge-ui/public/js/devices.js +12 -3
- package/dist/homebridge-ui/public/js/devices.js.map +1 -1
- package/dist/homebridge-ui/public/js/devices.ts +13 -3
- package/dist/homebridge-ui/public/js/discovery.d.ts.map +1 -1
- package/dist/homebridge-ui/public/js/discovery.js +13 -2
- package/dist/homebridge-ui/public/js/discovery.js.map +1 -1
- package/dist/homebridge-ui/public/js/discovery.ts +14 -1
- package/dist/homebridge-ui/public/js/modals.d.ts +5 -0
- package/dist/homebridge-ui/public/js/modals.d.ts.map +1 -1
- package/dist/homebridge-ui/public/js/modals.js +146 -0
- package/dist/homebridge-ui/public/js/modals.js.map +1 -1
- package/dist/homebridge-ui/public/js/modals.ts +167 -0
- package/dist/homebridge-ui/public/js/render.d.ts +3 -1
- package/dist/homebridge-ui/public/js/render.d.ts.map +1 -1
- package/dist/homebridge-ui/public/js/render.js +62 -2
- package/dist/homebridge-ui/public/js/render.js.map +1 -1
- package/dist/homebridge-ui/public/js/render.ts +71 -2
- package/dist/platform.d.ts.map +1 -1
- package/dist/platform.js +63 -103
- package/dist/platform.js.map +1 -1
- package/dist/utils.d.ts.map +1 -1
- package/dist/utils.js +2 -1
- package/dist/utils.js.map +1 -1
- package/docs/variables/default.html +1 -1
- package/package.json +1 -1
- package/src/homebridge-ui/endpoints/devices.ts +5 -2
- package/src/homebridge-ui/public/js/api.ts +13 -3
- package/src/homebridge-ui/public/js/devices.ts +13 -3
- package/src/homebridge-ui/public/js/discovery.ts +14 -1
- package/src/homebridge-ui/public/js/modals.ts +167 -0
- package/src/homebridge-ui/public/js/render.ts +71 -2
- package/src/platform.ts +76 -103
- package/src/utils.ts +2 -1
- package/test/matter-childbridge.spec.ts +5 -1
- package/test/matter-integration.spec.ts +41 -0
- package/test/utils.spec.ts +18 -2
- package/todo/COMPLETED.md +40 -0
- package/todo/TODO.md +13 -42
|
@@ -132,7 +132,26 @@ export function renderConnectionBadge(connectionType) {
|
|
|
132
132
|
export function renderIRBadge() {
|
|
133
133
|
return renderBadge('IR', 'background: #ff6b35; color: white; padding: 2px 6px; border-radius: 3px; font-size: 10px; font-weight: 600; margin-left: 8px;');
|
|
134
134
|
}
|
|
135
|
-
|
|
135
|
+
function normalizeId(value) {
|
|
136
|
+
return String(value ?? '').trim().toLowerCase();
|
|
137
|
+
}
|
|
138
|
+
function scrollToConfiguredDevice(deviceId) {
|
|
139
|
+
const normalizedId = normalizeId(deviceId);
|
|
140
|
+
const target = document.querySelector(`[data-device-id="${normalizedId}"]`);
|
|
141
|
+
if (!target) {
|
|
142
|
+
return;
|
|
143
|
+
}
|
|
144
|
+
target.scrollIntoView({ behavior: 'smooth', block: 'center' });
|
|
145
|
+
const originalOutline = target.style.outline;
|
|
146
|
+
const originalBackground = target.style.background;
|
|
147
|
+
target.style.outline = '2px solid var(--switchbot-red, #ef4444)';
|
|
148
|
+
target.style.background = 'rgba(239, 68, 68, 0.08)';
|
|
149
|
+
setTimeout(() => {
|
|
150
|
+
target.style.outline = originalOutline;
|
|
151
|
+
target.style.background = originalBackground;
|
|
152
|
+
}, 1800);
|
|
153
|
+
}
|
|
154
|
+
export async function renderDiscoveredDevices(devices, options = {}) {
|
|
136
155
|
const ul = document.createElement('ul');
|
|
137
156
|
ul.style.maxHeight = '400px';
|
|
138
157
|
ul.style.overflowY = 'auto';
|
|
@@ -140,7 +159,11 @@ export async function renderDiscoveredDevices(devices) {
|
|
|
140
159
|
ul.style.padding = '0';
|
|
141
160
|
ul.style.listStyle = 'none';
|
|
142
161
|
const { addDeviceToConfig } = await import('./discovery.js');
|
|
162
|
+
const { loadConfiguredDevices } = await import('./devices.js');
|
|
163
|
+
const configuredIds = options.configuredIds ?? new Set();
|
|
143
164
|
for (const d of devices) {
|
|
165
|
+
const deviceId = normalizeId(d.id);
|
|
166
|
+
const alreadyAdded = configuredIds.has(deviceId);
|
|
144
167
|
const li = document.createElement('li');
|
|
145
168
|
li.className = 'device-item';
|
|
146
169
|
li.style.display = 'flex';
|
|
@@ -163,6 +186,12 @@ export async function renderDiscoveredDevices(devices) {
|
|
|
163
186
|
name.style.fontSize = '14px';
|
|
164
187
|
name.textContent = d.name || d.id;
|
|
165
188
|
nameContainer.appendChild(name);
|
|
189
|
+
const duplicateBadge = document.createElement('span');
|
|
190
|
+
duplicateBadge.textContent = alreadyAdded ? '✓ Already Added' : '➕ New Device';
|
|
191
|
+
duplicateBadge.style.cssText = alreadyAdded
|
|
192
|
+
? 'background: #16a34a; color: white; padding: 2px 6px; border-radius: 3px; font-size: 10px; font-weight: 600;'
|
|
193
|
+
: 'background: #2563eb; color: white; padding: 2px 6px; border-radius: 3px; font-size: 10px; font-weight: 600;';
|
|
194
|
+
nameContainer.appendChild(duplicateBadge);
|
|
166
195
|
// Add connection type badge
|
|
167
196
|
if (d.connectionType) {
|
|
168
197
|
const badge = renderConnectionBadge(d.connectionType);
|
|
@@ -195,15 +224,45 @@ export async function renderDiscoveredDevices(devices) {
|
|
|
195
224
|
info.appendChild(nameContainer);
|
|
196
225
|
info.appendChild(details);
|
|
197
226
|
const addBtn = document.createElement('button');
|
|
198
|
-
addBtn.textContent = '
|
|
227
|
+
addBtn.textContent = alreadyAdded ? 'Already Added' : 'Add to Config';
|
|
199
228
|
addBtn.style.marginLeft = '8px';
|
|
200
229
|
addBtn.style.padding = '6px 14px';
|
|
201
230
|
addBtn.style.fontSize = '12px';
|
|
202
231
|
addBtn.style.whiteSpace = 'nowrap';
|
|
203
232
|
addBtn.style.flexShrink = '0';
|
|
233
|
+
addBtn.disabled = alreadyAdded;
|
|
234
|
+
if (alreadyAdded) {
|
|
235
|
+
addBtn.style.opacity = '0.65';
|
|
236
|
+
addBtn.style.cursor = 'not-allowed';
|
|
237
|
+
addBtn.style.background = '#6b7280';
|
|
238
|
+
}
|
|
204
239
|
addBtn.onclick = async () => {
|
|
240
|
+
if (alreadyAdded) {
|
|
241
|
+
return;
|
|
242
|
+
}
|
|
205
243
|
await addDeviceToConfig(d);
|
|
206
244
|
};
|
|
245
|
+
if (alreadyAdded) {
|
|
246
|
+
const viewBtn = document.createElement('button');
|
|
247
|
+
viewBtn.textContent = 'View in Config';
|
|
248
|
+
viewBtn.className = 'secondary';
|
|
249
|
+
viewBtn.style.marginLeft = '8px';
|
|
250
|
+
viewBtn.style.padding = '6px 12px';
|
|
251
|
+
viewBtn.style.fontSize = '12px';
|
|
252
|
+
viewBtn.onclick = async () => {
|
|
253
|
+
await loadConfiguredDevices();
|
|
254
|
+
scrollToConfiguredDevice(d.id);
|
|
255
|
+
};
|
|
256
|
+
li.appendChild(info);
|
|
257
|
+
const actions = document.createElement('div');
|
|
258
|
+
actions.style.display = 'flex';
|
|
259
|
+
actions.style.alignItems = 'center';
|
|
260
|
+
actions.appendChild(viewBtn);
|
|
261
|
+
actions.appendChild(addBtn);
|
|
262
|
+
li.appendChild(actions);
|
|
263
|
+
ul.appendChild(li);
|
|
264
|
+
continue;
|
|
265
|
+
}
|
|
207
266
|
li.appendChild(info);
|
|
208
267
|
li.appendChild(addBtn);
|
|
209
268
|
ul.appendChild(li);
|
|
@@ -358,6 +417,7 @@ export function renderDeviceList(list) {
|
|
|
358
417
|
for (const d of list) {
|
|
359
418
|
const li = document.createElement('li');
|
|
360
419
|
li.className = 'device-item';
|
|
420
|
+
li.setAttribute('data-device-id', normalizeId(d.id));
|
|
361
421
|
const info = document.createElement('div');
|
|
362
422
|
info.style.flex = '1';
|
|
363
423
|
const nameContainer = document.createElement('div');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"render.js","sourceRoot":"","sources":["../../../../src/homebridge-ui/public/js/render.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"render.js","sourceRoot":"","sources":["../../../../src/homebridge-ui/public/js/render.ts"],"names":[],"mappings":"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"}
|
|
@@ -154,7 +154,32 @@ export function renderIRBadge(): HTMLElement {
|
|
|
154
154
|
)
|
|
155
155
|
}
|
|
156
156
|
|
|
157
|
-
|
|
157
|
+
function normalizeId(value: any): string {
|
|
158
|
+
return String(value ?? '').trim().toLowerCase()
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
function scrollToConfiguredDevice(deviceId: string): void {
|
|
162
|
+
const normalizedId = normalizeId(deviceId)
|
|
163
|
+
const target = document.querySelector(`[data-device-id="${normalizedId}"]`) as HTMLElement | null
|
|
164
|
+
if (!target) {
|
|
165
|
+
return
|
|
166
|
+
}
|
|
167
|
+
|
|
168
|
+
target.scrollIntoView({ behavior: 'smooth', block: 'center' })
|
|
169
|
+
const originalOutline = target.style.outline
|
|
170
|
+
const originalBackground = target.style.background
|
|
171
|
+
target.style.outline = '2px solid var(--switchbot-red, #ef4444)'
|
|
172
|
+
target.style.background = 'rgba(239, 68, 68, 0.08)'
|
|
173
|
+
setTimeout(() => {
|
|
174
|
+
target.style.outline = originalOutline
|
|
175
|
+
target.style.background = originalBackground
|
|
176
|
+
}, 1800)
|
|
177
|
+
}
|
|
178
|
+
|
|
179
|
+
export async function renderDiscoveredDevices(
|
|
180
|
+
devices: any[],
|
|
181
|
+
options: { configuredIds?: Set<string> } = {},
|
|
182
|
+
): Promise<HTMLElement> {
|
|
158
183
|
const ul = document.createElement('ul')
|
|
159
184
|
ul.style.maxHeight = '400px'
|
|
160
185
|
ul.style.overflowY = 'auto'
|
|
@@ -163,8 +188,13 @@ export async function renderDiscoveredDevices(devices: any[]): Promise<HTMLEleme
|
|
|
163
188
|
ul.style.listStyle = 'none'
|
|
164
189
|
|
|
165
190
|
const { addDeviceToConfig } = await import('./discovery.js')
|
|
191
|
+
const { loadConfiguredDevices } = await import('./devices.js')
|
|
192
|
+
const configuredIds = options.configuredIds ?? new Set<string>()
|
|
166
193
|
|
|
167
194
|
for (const d of devices) {
|
|
195
|
+
const deviceId = normalizeId(d.id)
|
|
196
|
+
const alreadyAdded = configuredIds.has(deviceId)
|
|
197
|
+
|
|
168
198
|
const li = document.createElement('li')
|
|
169
199
|
li.className = 'device-item'
|
|
170
200
|
li.style.display = 'flex'
|
|
@@ -192,6 +222,13 @@ export async function renderDiscoveredDevices(devices: any[]): Promise<HTMLEleme
|
|
|
192
222
|
|
|
193
223
|
nameContainer.appendChild(name)
|
|
194
224
|
|
|
225
|
+
const duplicateBadge = document.createElement('span')
|
|
226
|
+
duplicateBadge.textContent = alreadyAdded ? '✓ Already Added' : '➕ New Device'
|
|
227
|
+
duplicateBadge.style.cssText = alreadyAdded
|
|
228
|
+
? 'background: #16a34a; color: white; padding: 2px 6px; border-radius: 3px; font-size: 10px; font-weight: 600;'
|
|
229
|
+
: 'background: #2563eb; color: white; padding: 2px 6px; border-radius: 3px; font-size: 10px; font-weight: 600;'
|
|
230
|
+
nameContainer.appendChild(duplicateBadge)
|
|
231
|
+
|
|
195
232
|
// Add connection type badge
|
|
196
233
|
if (d.connectionType) {
|
|
197
234
|
const badge = renderConnectionBadge(d.connectionType)
|
|
@@ -224,16 +261,47 @@ export async function renderDiscoveredDevices(devices: any[]): Promise<HTMLEleme
|
|
|
224
261
|
info.appendChild(details)
|
|
225
262
|
|
|
226
263
|
const addBtn = document.createElement('button')
|
|
227
|
-
addBtn.textContent = '
|
|
264
|
+
addBtn.textContent = alreadyAdded ? 'Already Added' : 'Add to Config'
|
|
228
265
|
addBtn.style.marginLeft = '8px'
|
|
229
266
|
addBtn.style.padding = '6px 14px'
|
|
230
267
|
addBtn.style.fontSize = '12px'
|
|
231
268
|
addBtn.style.whiteSpace = 'nowrap'
|
|
232
269
|
addBtn.style.flexShrink = '0'
|
|
270
|
+
addBtn.disabled = alreadyAdded
|
|
271
|
+
if (alreadyAdded) {
|
|
272
|
+
addBtn.style.opacity = '0.65'
|
|
273
|
+
addBtn.style.cursor = 'not-allowed'
|
|
274
|
+
addBtn.style.background = '#6b7280'
|
|
275
|
+
}
|
|
233
276
|
addBtn.onclick = async () => {
|
|
277
|
+
if (alreadyAdded) {
|
|
278
|
+
return
|
|
279
|
+
}
|
|
234
280
|
await addDeviceToConfig(d)
|
|
235
281
|
}
|
|
236
282
|
|
|
283
|
+
if (alreadyAdded) {
|
|
284
|
+
const viewBtn = document.createElement('button')
|
|
285
|
+
viewBtn.textContent = 'View in Config'
|
|
286
|
+
viewBtn.className = 'secondary'
|
|
287
|
+
viewBtn.style.marginLeft = '8px'
|
|
288
|
+
viewBtn.style.padding = '6px 12px'
|
|
289
|
+
viewBtn.style.fontSize = '12px'
|
|
290
|
+
viewBtn.onclick = async () => {
|
|
291
|
+
await loadConfiguredDevices()
|
|
292
|
+
scrollToConfiguredDevice(d.id)
|
|
293
|
+
}
|
|
294
|
+
li.appendChild(info)
|
|
295
|
+
const actions = document.createElement('div')
|
|
296
|
+
actions.style.display = 'flex'
|
|
297
|
+
actions.style.alignItems = 'center'
|
|
298
|
+
actions.appendChild(viewBtn)
|
|
299
|
+
actions.appendChild(addBtn)
|
|
300
|
+
li.appendChild(actions)
|
|
301
|
+
ul.appendChild(li)
|
|
302
|
+
continue
|
|
303
|
+
}
|
|
304
|
+
|
|
237
305
|
li.appendChild(info)
|
|
238
306
|
li.appendChild(addBtn)
|
|
239
307
|
ul.appendChild(li)
|
|
@@ -416,6 +484,7 @@ export function renderDeviceList(list: any[]): void {
|
|
|
416
484
|
for (const d of list) {
|
|
417
485
|
const li = document.createElement('li')
|
|
418
486
|
li.className = 'device-item'
|
|
487
|
+
li.setAttribute('data-device-id', normalizeId(d.id))
|
|
419
488
|
|
|
420
489
|
const info = document.createElement('div')
|
|
421
490
|
info.style.flex = '1'
|
package/dist/platform.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"platform.d.ts","sourceRoot":"","sources":["../src/platform.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAA;AAC1D,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,YAAY,CAAA;
|
|
1
|
+
{"version":3,"file":"platform.d.ts","sourceRoot":"","sources":["../src/platform.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAA;AAC1D,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,YAAY,CAAA;AA0/B7D,qBAAa,oBAAoB;IAC/B,GAAG,EAAE,GAAG,GAAG,SAAS,CAAA;IACpB,GAAG,EAAE,MAAM,CAAA;IACX,MAAM,EAAE,qBAAqB,CAAA;IAC7B,OAAO,EAAE,GAAG,EAAE,CAAK;IAEnB,WAAW,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IAE7B,OAAO,CAAC,cAAc,CAAa;IACnC,OAAO,CAAC,oBAAoB,CAA8B;gBAE9C,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,cAAc,EAAE,GAAG,CAAC,EAAE,GAAG;IA2C1D,OAAO,CAAC,aAAa;YAUP,qBAAqB;IAU7B,WAAW;IAoKX,kBAAkB,CAAC,SAAS,EAAE,GAAG;IAYvC,wBAAwB,CAAC,CAAC,SAAS,EAAE,GAAG;CASzC;AAGD,qBAAa,uBAAuB;IAClC,GAAG,EAAE,GAAG,GAAG,SAAS,CAAA;IACpB,GAAG,EAAE,MAAM,CAAA;IACX,MAAM,EAAE,qBAAqB,CAAA;IAC7B,OAAO,EAAE,GAAG,EAAE,CAAK;IACnB,WAAW,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IAE7B,OAAO,CAAC,cAAc,CAAa;IACnC,OAAO,CAAC,oBAAoB,CAA8B;gBAE9C,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,cAAc,EAAE,GAAG,CAAC,EAAE,GAAG;IA8CpD,WAAW;IAwCjB,OAAO,CAAC,aAAa;YAUP,qBAAqB;IAU7B,kBAAkB,CAAC,SAAS,EAAE,GAAG;IAWvC,wBAAwB,CAAC,SAAS,EAAE,GAAG;IAWjC,yBAAyB;CAqHhC;AAED,eAAe,oBAAoB,CAAA"}
|
package/dist/platform.js
CHANGED
|
@@ -87,7 +87,9 @@ const DEVICE_MATTER_CLUSTERS = {
|
|
|
87
87
|
}, // Switch in HAP, RobotVacuumCleaner in Matter
|
|
88
88
|
curtain: {
|
|
89
89
|
windowCovering: {
|
|
90
|
-
|
|
90
|
+
// Use a lift-only/non-tilt covering type to satisfy Matter conformance rules.
|
|
91
|
+
// Drapery (4) can fail validation in some stacks when TL (tilt) is not present.
|
|
92
|
+
type: 0, // Rollershade
|
|
91
93
|
},
|
|
92
94
|
}, // WindowCovering → WindowCovering (includes curtain3, rollershade variants via normalization)
|
|
93
95
|
blindtilt: {
|
|
@@ -212,6 +214,63 @@ const DEVICE_MATTER_DEVICE_TYPE_KEYS = {
|
|
|
212
214
|
meter: 'TemperatureSensor',
|
|
213
215
|
waterdetector: 'LeakSensor',
|
|
214
216
|
};
|
|
217
|
+
function normalizeTypeForMatter(typeValue) {
|
|
218
|
+
const raw = String(typeValue || '').trim().toLowerCase();
|
|
219
|
+
if (!raw) {
|
|
220
|
+
return 'unknown';
|
|
221
|
+
}
|
|
222
|
+
// Vacuum variants
|
|
223
|
+
if (['wosweeper', 'wosweepermini', 'wosweeperminipro', 'k10+', 'k10+ pro'].includes(raw)) {
|
|
224
|
+
return 'vacuum';
|
|
225
|
+
}
|
|
226
|
+
// Window covering variants
|
|
227
|
+
if (['blindtilt', 'blind tilt', 'curtain3', 'rollershade', 'roller shade', 'worollershade', 'wo rollershade'].includes(raw)) {
|
|
228
|
+
return 'curtain';
|
|
229
|
+
}
|
|
230
|
+
// Plug variants
|
|
231
|
+
if (['plug mini (jp)', 'plug mini (us)', 'plug mini (eu)'].includes(raw)) {
|
|
232
|
+
return 'plug';
|
|
233
|
+
}
|
|
234
|
+
// Meter variants
|
|
235
|
+
if (['meterplus', 'meter plus', 'meter plus (jp)', 'meterpro', 'meter pro', 'meterpro(co2)', 'meter pro (co2)'].includes(raw)) {
|
|
236
|
+
return 'meter';
|
|
237
|
+
}
|
|
238
|
+
// Relay switch variants
|
|
239
|
+
if (['relay switch 1', 'relay switch 1pm'].includes(raw)) {
|
|
240
|
+
return 'relay';
|
|
241
|
+
}
|
|
242
|
+
// Water detector variants
|
|
243
|
+
if (['water detector', 'waterdetector'].includes(raw)) {
|
|
244
|
+
return 'waterdetector';
|
|
245
|
+
}
|
|
246
|
+
// Fan variants
|
|
247
|
+
if (['smart fan', 'circulator fan', 'battery circulator fan', 'standing circulator fan'].includes(raw)) {
|
|
248
|
+
return 'fan';
|
|
249
|
+
}
|
|
250
|
+
// Light variants
|
|
251
|
+
if (['strip light', 'strip light 3', 'rgbic neon rope light', 'rgbic neon wire rope light', 'rgbicww floor lamp', 'rgbicww strip light'].includes(raw)) {
|
|
252
|
+
return 'lightstrip';
|
|
253
|
+
}
|
|
254
|
+
if (['color bulb', 'ceiling light', 'ceiling light pro', 'candle warmer lamp', 'floor lamp'].includes(raw)) {
|
|
255
|
+
return 'light';
|
|
256
|
+
}
|
|
257
|
+
// Sensor variants
|
|
258
|
+
if (raw === 'motion sensor') {
|
|
259
|
+
return 'motion';
|
|
260
|
+
}
|
|
261
|
+
if (['contact sensor', 'presence sensor'].includes(raw)) {
|
|
262
|
+
return 'contact';
|
|
263
|
+
}
|
|
264
|
+
// Lock variants
|
|
265
|
+
if (['smart lock', 'smart lock pro', 'smart lock ultra', 'lock lite', 'keypad', 'keypad touch', 'keypad vision', 'keypad vision pro', 'lock vision pro'].includes(raw)) {
|
|
266
|
+
return 'lock';
|
|
267
|
+
}
|
|
268
|
+
// Climate variant
|
|
269
|
+
if (raw === 'humidifier2') {
|
|
270
|
+
return 'humidifier';
|
|
271
|
+
}
|
|
272
|
+
return raw;
|
|
273
|
+
}
|
|
215
274
|
// Factory function to create Matter handlers with Homebridge logger integration
|
|
216
275
|
function createMatterHandlers(log, deviceId, type, client) {
|
|
217
276
|
const lowerType = type.toLowerCase();
|
|
@@ -1026,40 +1085,7 @@ export class SwitchBotHAPPlatform {
|
|
|
1026
1085
|
type: raw.configDeviceType ?? raw.type ?? raw.deviceType ?? 'unknown',
|
|
1027
1086
|
_raw: raw,
|
|
1028
1087
|
};
|
|
1029
|
-
|
|
1030
|
-
// Normalize device type variants for consistent Matter cluster lookup
|
|
1031
|
-
// Vacuum variants
|
|
1032
|
-
if (['wosweeper', 'wosweepermini', 'wosweeperminipro', 'k10+', 'k10+ pro'].includes((type || '').toLowerCase())) {
|
|
1033
|
-
type = 'vacuum';
|
|
1034
|
-
}
|
|
1035
|
-
// Window covering variants
|
|
1036
|
-
if (['blindtilt', 'blind tilt', 'curtain3', 'rollershade', 'roller shade', 'worollershade', 'wo rollershade'].includes((type || '').toLowerCase())) {
|
|
1037
|
-
type = 'curtain';
|
|
1038
|
-
}
|
|
1039
|
-
// Plug variants
|
|
1040
|
-
if (['plug mini (jp)', 'plug mini (us)'].includes((type || '').toLowerCase())) {
|
|
1041
|
-
type = 'plug';
|
|
1042
|
-
}
|
|
1043
|
-
// Meter variants
|
|
1044
|
-
if (['meterplus', 'meter plus (jp)', 'meterpro', 'meterpro(co2)'].includes((type || '').toLowerCase())) {
|
|
1045
|
-
type = 'meter';
|
|
1046
|
-
}
|
|
1047
|
-
// Relay switch variants
|
|
1048
|
-
if (['relay switch 1', 'relay switch 1pm'].includes((type || '').toLowerCase())) {
|
|
1049
|
-
type = 'relay';
|
|
1050
|
-
}
|
|
1051
|
-
// Water detector variants
|
|
1052
|
-
if (['water detector'].includes((type || '').toLowerCase())) {
|
|
1053
|
-
type = 'waterdetector';
|
|
1054
|
-
}
|
|
1055
|
-
// Fan variants
|
|
1056
|
-
if (['smart fan'].includes((type || '').toLowerCase())) {
|
|
1057
|
-
type = 'fan';
|
|
1058
|
-
}
|
|
1059
|
-
// Light variants
|
|
1060
|
-
if (['strip light'].includes((type || '').toLowerCase())) {
|
|
1061
|
-
type = 'lightstrip';
|
|
1062
|
-
}
|
|
1088
|
+
const type = normalizeTypeForMatter(d.type);
|
|
1063
1089
|
const matterSupported = !!DEVICE_MATTER_SUPPORTED[(type || '').toLowerCase()];
|
|
1064
1090
|
// Auto-detect Matter from Homebridge API, allow manual override via config
|
|
1065
1091
|
const matterAvailable = !!(this.api?.isMatterAvailable?.() && this.api?.isMatterEnabled?.());
|
|
@@ -1312,40 +1338,7 @@ export class SwitchBotMatterPlatform {
|
|
|
1312
1338
|
type: raw.configDeviceType ?? raw.type ?? raw.deviceType ?? 'unknown',
|
|
1313
1339
|
_raw: raw,
|
|
1314
1340
|
};
|
|
1315
|
-
|
|
1316
|
-
// Normalize device type variants for consistent Matter cluster lookup
|
|
1317
|
-
// Vacuum variants
|
|
1318
|
-
if (['wosweeper', 'wosweepermini', 'wosweeperminipro', 'k10+', 'k10+ pro'].includes((type || '').toLowerCase())) {
|
|
1319
|
-
type = 'vacuum';
|
|
1320
|
-
}
|
|
1321
|
-
// Window covering variants
|
|
1322
|
-
if (['blindtilt', 'blind tilt', 'curtain3', 'rollershade', 'roller shade', 'worollershade', 'wo rollershade'].includes((type || '').toLowerCase())) {
|
|
1323
|
-
type = 'curtain';
|
|
1324
|
-
}
|
|
1325
|
-
// Plug variants
|
|
1326
|
-
if (['plug mini (jp)', 'plug mini (us)'].includes((type || '').toLowerCase())) {
|
|
1327
|
-
type = 'plug';
|
|
1328
|
-
}
|
|
1329
|
-
// Meter variants
|
|
1330
|
-
if (['meterplus', 'meter plus (jp)', 'meterpro', 'meterpro(co2)'].includes((type || '').toLowerCase())) {
|
|
1331
|
-
type = 'meter';
|
|
1332
|
-
}
|
|
1333
|
-
// Relay switch variants
|
|
1334
|
-
if (['relay switch 1', 'relay switch 1pm'].includes((type || '').toLowerCase())) {
|
|
1335
|
-
type = 'relay';
|
|
1336
|
-
}
|
|
1337
|
-
// Water detector variants
|
|
1338
|
-
if (['water detector'].includes((type || '').toLowerCase())) {
|
|
1339
|
-
type = 'waterdetector';
|
|
1340
|
-
}
|
|
1341
|
-
// Fan variants
|
|
1342
|
-
if (['smart fan'].includes((type || '').toLowerCase())) {
|
|
1343
|
-
type = 'fan';
|
|
1344
|
-
}
|
|
1345
|
-
// Light variants
|
|
1346
|
-
if (['strip light'].includes((type || '').toLowerCase())) {
|
|
1347
|
-
type = 'lightstrip';
|
|
1348
|
-
}
|
|
1341
|
+
const type = normalizeTypeForMatter(d.type);
|
|
1349
1342
|
const matterSupported = !!DEVICE_MATTER_SUPPORTED[(type || '').toLowerCase()];
|
|
1350
1343
|
// Auto-detect Matter from Homebridge API, allow manual override via config
|
|
1351
1344
|
const matterAvailable = this.api?.isMatterAvailable?.() && this.api?.isMatterEnabled?.();
|
|
@@ -1439,40 +1432,7 @@ export class SwitchBotMatterPlatform {
|
|
|
1439
1432
|
if (!d.id) {
|
|
1440
1433
|
continue;
|
|
1441
1434
|
}
|
|
1442
|
-
|
|
1443
|
-
// Normalize device type variants for consistent Matter cluster lookup
|
|
1444
|
-
// Vacuum variants
|
|
1445
|
-
if (['wosweeper', 'wosweepermini', 'wosweeperminipro', 'k10+', 'k10+ pro'].includes((type || '').toLowerCase())) {
|
|
1446
|
-
type = 'vacuum';
|
|
1447
|
-
}
|
|
1448
|
-
// Window covering variants
|
|
1449
|
-
if (['blindtilt', 'blind tilt', 'curtain3', 'rollershade', 'roller shade', 'worollershade', 'wo rollershade'].includes((type || '').toLowerCase())) {
|
|
1450
|
-
type = 'curtain';
|
|
1451
|
-
}
|
|
1452
|
-
// Plug variants
|
|
1453
|
-
if (['plug mini (jp)', 'plug mini (us)'].includes((type || '').toLowerCase())) {
|
|
1454
|
-
type = 'plug';
|
|
1455
|
-
}
|
|
1456
|
-
// Meter variants
|
|
1457
|
-
if (['meterplus', 'meter plus (jp)', 'meterpro', 'meterpro(co2)'].includes((type || '').toLowerCase())) {
|
|
1458
|
-
type = 'meter';
|
|
1459
|
-
}
|
|
1460
|
-
// Relay switch variants
|
|
1461
|
-
if (['relay switch 1', 'relay switch 1pm'].includes((type || '').toLowerCase())) {
|
|
1462
|
-
type = 'relay';
|
|
1463
|
-
}
|
|
1464
|
-
// Water detector variants
|
|
1465
|
-
if (['water detector'].includes((type || '').toLowerCase())) {
|
|
1466
|
-
type = 'waterdetector';
|
|
1467
|
-
}
|
|
1468
|
-
// Fan variants
|
|
1469
|
-
if (['smart fan'].includes((type || '').toLowerCase())) {
|
|
1470
|
-
type = 'fan';
|
|
1471
|
-
}
|
|
1472
|
-
// Light variants
|
|
1473
|
-
if (['strip light'].includes((type || '').toLowerCase())) {
|
|
1474
|
-
type = 'lightstrip';
|
|
1475
|
-
}
|
|
1435
|
+
const type = normalizeTypeForMatter(d.type);
|
|
1476
1436
|
const matterSupported = !!DEVICE_MATTER_SUPPORTED[(type || '').toLowerCase()];
|
|
1477
1437
|
const useMatter = matterEnabled && matterSupported;
|
|
1478
1438
|
if (!useMatter) {
|