mirror of
https://github.com/koush/scrypted.git
synced 2026-05-30 00:10:26 +01:00
homekit mac fix
This commit is contained in:
4
plugins/homekit/package-lock.json
generated
4
plugins/homekit/package-lock.json
generated
@@ -1,12 +1,12 @@
|
||||
{
|
||||
"name": "@scrypted/homekit",
|
||||
"version": "0.0.26",
|
||||
"version": "0.0.34",
|
||||
"lockfileVersion": 2,
|
||||
"requires": true,
|
||||
"packages": {
|
||||
"": {
|
||||
"name": "@scrypted/homekit",
|
||||
"version": "0.0.26",
|
||||
"version": "0.0.34",
|
||||
"dependencies": {
|
||||
"axios": "^0.21.1",
|
||||
"hap-nodejs": "file:../HAP-NodeJS",
|
||||
|
||||
@@ -42,5 +42,5 @@
|
||||
"@types/node": "^14.17.9",
|
||||
"@types/url-parse": "^1.4.3"
|
||||
},
|
||||
"version": "0.0.26"
|
||||
"version": "0.0.34"
|
||||
}
|
||||
|
||||
@@ -5,6 +5,7 @@ import { supportedTypes } from './common';
|
||||
import './types'
|
||||
import { CameraMixin } from './camera-mixin';
|
||||
import { maybeAddBatteryService } from './battery';
|
||||
import { randomBytes } from 'crypto';
|
||||
|
||||
const { systemManager, deviceManager } = sdk;
|
||||
|
||||
@@ -60,7 +61,7 @@ class HomeKit extends ScryptedDeviceBase implements MixinProvider, Settings {
|
||||
|
||||
getUsername() {
|
||||
return this.storage.getItem("mac") || (Object.entries(os.networkInterfaces()).filter(([iface, entry]) => iface.startsWith('en') || iface.startsWith('wlan')) as any)
|
||||
.flat().map(([iface, entry]) => entry).find(i => i.family == 'IPv4').mac;
|
||||
.flat().map(([iface, entry]) => entry).find(i => i && (i.family === 'IPv4' || i.family === 'IPv6'))?.mac;
|
||||
}
|
||||
|
||||
async getSettings(): Promise<Setting[]> {
|
||||
@@ -140,6 +141,16 @@ class HomeKit extends ScryptedDeviceBase implements MixinProvider, Settings {
|
||||
|
||||
this.storage.setItem('defaultIncluded', JSON.stringify(defaultIncluded));
|
||||
|
||||
let username = this.getUsername();
|
||||
if (!username) {
|
||||
const buffers = [];
|
||||
for (let i = 0; i < 6; i++) {
|
||||
buffers.push(randomBytes(1).toString('hex'));
|
||||
}
|
||||
username = buffers.join(':');
|
||||
this.storage.setItem('username', username);
|
||||
}
|
||||
|
||||
this.bridge.publish({
|
||||
username: this.getUsername(),
|
||||
pincode: '123-45-678',
|
||||
@@ -160,7 +171,8 @@ class HomeKit extends ScryptedDeviceBase implements MixinProvider, Settings {
|
||||
|
||||
const device = systemManager.getDeviceById(eventSource?.id);
|
||||
this.log.i(`Accessory descriptor changed: ${device?.name}. Requesting restart.`);
|
||||
deviceManager.requestRestart();
|
||||
this.console.log('restart event', eventSource?.id, eventDetails.property, eventData);
|
||||
// deviceManager.requestRestart();
|
||||
});
|
||||
}
|
||||
|
||||
@@ -193,7 +205,8 @@ class HomeKit extends ScryptedDeviceBase implements MixinProvider, Settings {
|
||||
return;
|
||||
}
|
||||
this.log.i(`Accessory removed from HomeKit: ${device.name}. Requesting restart.`);
|
||||
deviceManager.requestRestart();
|
||||
this.console.log('release mixin', id);
|
||||
// deviceManager.requestRestart();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user