homekit mac fix

This commit is contained in:
Koushik Dutta
2021-09-09 14:00:42 -07:00
parent 455217120f
commit bfde9e915a
3 changed files with 19 additions and 6 deletions

View File

@@ -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",

View File

@@ -42,5 +42,5 @@
"@types/node": "^14.17.9",
"@types/url-parse": "^1.4.3"
},
"version": "0.0.26"
"version": "0.0.34"
}

View File

@@ -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();
}
}