zwave: dsk confirmation

This commit is contained in:
Koushik Dutta
2022-02-28 16:40:30 -08:00
parent f1579d8fc5
commit eb117995bc
3 changed files with 25 additions and 5 deletions

View File

@@ -1,12 +1,12 @@
{
"name": "@scrypted/zwave",
"version": "0.0.47",
"version": "0.0.48",
"lockfileVersion": 2,
"requires": true,
"packages": {
"": {
"name": "@scrypted/zwave",
"version": "0.0.47",
"version": "0.0.48",
"license": "Apache",
"dependencies": {
"@scrypted/sdk": "file:../../sdk",

View File

@@ -1,6 +1,6 @@
{
"name": "@scrypted/zwave",
"version": "0.0.47",
"version": "0.0.48",
"description": "Z-Wave USB Controller for Scrypted",
"author": "Scrypted",
"license": "Apache",

View File

@@ -42,6 +42,7 @@ export class ZwaveControllerProvider extends ScryptedDeviceBase implements Devic
driver: Driver;
controller: ZWaveController;
driverReady: Promise<void>;
dskDeferred: {reject: any, resolve: any};
constructor() {
super();
@@ -210,6 +211,11 @@ export class ZwaveControllerProvider extends ScryptedDeviceBase implements Devic
type: 'button',
description: 'Enter exclusion mode and remove devices.',
},
{
key: 'confirmPin',
title: 'Confirm PIN',
description: 'Some devices will require confirmation of a PIN while including them. Enter the PIN here when prompted.',
}
]
}
@@ -220,8 +226,17 @@ export class ZwaveControllerProvider extends ScryptedDeviceBase implements Devic
return requested;
},
validateDSKAndEnterPIN: async (dsk: string) => {
this.console.error('validateDSKAndEnterPIN not implemented in zwave plugin');
throw new Error("validateDSKAndEnterPIN Function not implemented.");
this.console.log('dsk received', sdk);
return new Promise((resolve, reject) => {
if (this.dskDeferred) {
this.dskDeferred.reject(new Error('new dsk received'));
this.dskDeferred = undefined;
}
this.dskDeferred = {
resolve,
reject,
};
});
},
abort: function (): void {
this.console.log('abort');
@@ -257,6 +272,11 @@ export class ZwaveControllerProvider extends ScryptedDeviceBase implements Devic
this.exclusion();
return;
}
if (key === 'confirmPin') {
this.dskDeferred?.resolve(value.toString());
this.dskDeferred = undefined;
return;
}
this.storage.setItem(key, value as string);