sdk: security system

This commit is contained in:
Koushik Dutta
2022-05-09 13:05:26 -07:00
parent b31da22c15
commit da02e2825c
7 changed files with 229 additions and 22 deletions

View File

@@ -28,6 +28,8 @@ export async function startCameraStreamSrtp(media: FFmpegInput, console: Console
session.kill();
};
session.killPromise.finally(cleanup);
if (isRtsp) {
rtspClient = new RtspClient(url);
rtspClient.requestTimeout = 1000;

View File

@@ -757,6 +757,14 @@ export interface UltravioletSensor {
export interface LuminanceSensor {
luminance?: number;
}
export interface Position {
/**
* The accuracy radius of this position in meters.
*/
accuracyRadius?: number;
latitude?: number;
longitude?: number;
}
export interface PositionSensor {
position?: Position;
}
@@ -777,14 +785,33 @@ export enum AirQuality {
export interface AirQualitySensor {
airQuality?: AirQuality;
}
export interface Position {
/**
* The accuracy radius of this position in meters.
*/
accuracyRadius?: number;
latitude?: number;
longitude?: number;
export enum SecuritySystemMode {
Disarmed = 'Disarmed',
HomeArmed = 'HomeArmed',
AwayArmed = 'AwayArmed',
NightArmed = 'NightArmed',
}
export enum SecuritySystemObstruction {
Sensor = 'Sensor',
Occupied = 'Occupied',
Time = 'Time',
Error = 'Error',
}
export interface SecuritySystemState {
mode: SecuritySystemMode;
triggered?: boolean;
supportedModes?: SecuritySystemMode[];
obstruction?: SecuritySystemObstruction;
}
export interface SecuritySystem {
securitySystem?: SecuritySystemState;
setSecuritySystem(mode: SecuritySystemMode): Promise<void>;
}
export interface ZoneHistory {
firstEntry: number;
lastEntry: number;
@@ -1395,6 +1422,7 @@ export enum ScryptedInterface {
UltravioletSensor = "UltravioletSensor",
LuminanceSensor = "LuminanceSensor",
PositionSensor = "PositionSensor",
SecuritySystem = 'SecuritySystem',
PM25Sensor = "PM25Sensor",
VOCSensor = "VOCSensor",
AirQualitySensor = "AirQualitySensor",

View File

@@ -124,6 +124,7 @@ class ScryptedInterface(Enum):
Scriptable = "Scriptable"
ScryptedDevice = "ScryptedDevice"
ScryptedPlugin = "ScryptedPlugin"
SecuritySystem = "SecuritySystem"
Settings = "Settings"
SoftwareUpdate = "SoftwareUpdate"
StartStop = "StartStop"
@@ -147,6 +148,18 @@ class ScryptedMimeTypes(Enum):
SchemePrefix = "x-scrypted/x-scrypted-scheme-"
Url = "text/x-uri"
class SecuritySystemMode(Enum):
AwayArmed = "AwayArmed"
Disarmed = "Disarmed"
HomeArmed = "HomeArmed"
NightArmed = "NightArmed"
class SecuritySystemObstruction(Enum):
Error = "Error"
Occupied = "Occupied"
Sensor = "Sensor"
Time = "Time"
class TemperatureUnit(Enum):
C = "C"
F = "F"
@@ -468,6 +481,13 @@ class ScryptedDevice(TypedDict):
type: ScryptedDeviceType
pass
class SecuritySystemState(TypedDict):
mode: SecuritySystemMode
obstruction: SecuritySystemObstruction
supportedModes: list[SecuritySystemMode]
triggered: bool
pass
class Setting(TypedDict):
choices: list[str]
combobox: bool
@@ -844,6 +864,12 @@ class ScryptedPlugin:
pass
pass
class SecuritySystem:
securitySystem: SecuritySystemState
async def setSecuritySystem(self, mode: SecuritySystemMode) -> None:
pass
pass
class Settings:
async def getSettings(self) -> list[Setting]:
pass
@@ -1090,6 +1116,7 @@ class ScryptedInterfaceProperty(Enum):
ultraviolet = "ultraviolet"
luminance = "luminance"
position = "position"
securitySystem = "securitySystem"
pm25Density = "pm25Density"
vocDensity = "vocDensity"
airQuality = "airQuality"
@@ -1438,6 +1465,13 @@ class DeviceState:
def position(self, value: Position):
self.setScryptedProperty("position", value)
@property
def securitySystem(self) -> SecuritySystemState:
return self.getScryptedProperty("securitySystem")
@securitySystem.setter
def securitySystem(self, value: SecuritySystemState):
self.setScryptedProperty("securitySystem", value)
@property
def pm25Density(self) -> float:
return self.getScryptedProperty("pm25Density")
@@ -1899,6 +1933,15 @@ ScryptedInterfaceDescriptors = {
"position"
]
},
"SecuritySystem": {
"name": "SecuritySystem",
"methods": [
"setSecuritySystem"
],
"properties": [
"securitySystem"
]
},
"PM25Sensor": {
"name": "PM25Sensor",
"methods": [],

40
sdk/types/index.d.ts vendored
View File

@@ -48,6 +48,7 @@ export interface DeviceState {
ultraviolet?: number;
luminance?: number;
position?: Position;
securitySystem?: SecuritySystemState;
pm25Density?: number;
vocDensity?: number;
airQuality?: AirQuality;
@@ -103,6 +104,7 @@ export declare class DeviceBase implements DeviceState {
ultraviolet?: number;
luminance?: number;
position?: Position;
securitySystem?: SecuritySystemState;
pm25Density?: number;
vocDensity?: number;
airQuality?: AirQuality;
@@ -158,6 +160,7 @@ export declare enum ScryptedInterfaceProperty {
ultraviolet = "ultraviolet",
luminance = "luminance",
position = "position",
securitySystem = "securitySystem",
pm25Density = "pm25Density",
vocDensity = "vocDensity",
airQuality = "airQuality",
@@ -855,6 +858,14 @@ export interface UltravioletSensor {
export interface LuminanceSensor {
luminance?: number;
}
export interface Position {
/**
* The accuracy radius of this position in meters.
*/
accuracyRadius?: number;
latitude?: number;
longitude?: number;
}
export interface PositionSensor {
position?: Position;
}
@@ -875,13 +886,27 @@ export declare enum AirQuality {
export interface AirQualitySensor {
airQuality?: AirQuality;
}
export interface Position {
/**
* The accuracy radius of this position in meters.
*/
accuracyRadius?: number;
latitude?: number;
longitude?: number;
export declare enum SecuritySystemMode {
Disarmed = "Disarmed",
HomeArmed = "HomeArmed",
AwayArmed = "AwayArmed",
NightArmed = "NightArmed"
}
export declare enum SecuritySystemObstruction {
Sensor = "Sensor",
Occupied = "Occupied",
Time = "Time",
Error = "Error"
}
export interface SecuritySystemState {
mode: SecuritySystemMode;
triggered?: boolean;
supportedModes?: SecuritySystemMode[];
obstruction?: SecuritySystemObstruction;
}
export interface SecuritySystem {
securitySystem?: SecuritySystemState;
setSecuritySystem(mode: SecuritySystemMode): Promise<void>;
}
export interface ZoneHistory {
firstEntry: number;
@@ -1436,6 +1461,7 @@ export declare enum ScryptedInterface {
UltravioletSensor = "UltravioletSensor",
LuminanceSensor = "LuminanceSensor",
PositionSensor = "PositionSensor",
SecuritySystem = "SecuritySystem",
PM25Sensor = "PM25Sensor",
VOCSensor = "VOCSensor",
AirQualitySensor = "AirQualitySensor",

View File

@@ -1,6 +1,6 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.ScryptedMimeTypes = exports.ScryptedInterface = exports.MediaPlayerState = exports.AirQuality = exports.LockState = exports.ThermostatMode = exports.TemperatureUnit = exports.FanMode = exports.HumidityMode = exports.ScryptedDeviceType = exports.ScryptedInterfaceDescriptors = exports.ScryptedInterfaceProperty = exports.DeviceBase = void 0;
exports.ScryptedMimeTypes = exports.ScryptedInterface = exports.MediaPlayerState = exports.SecuritySystemObstruction = exports.SecuritySystemMode = exports.AirQuality = exports.LockState = exports.ThermostatMode = exports.TemperatureUnit = exports.FanMode = exports.HumidityMode = exports.ScryptedDeviceType = exports.ScryptedInterfaceDescriptors = exports.ScryptedInterfaceProperty = exports.DeviceBase = void 0;
class DeviceBase {
}
exports.DeviceBase = DeviceBase;
@@ -54,6 +54,7 @@ var ScryptedInterfaceProperty;
ScryptedInterfaceProperty["ultraviolet"] = "ultraviolet";
ScryptedInterfaceProperty["luminance"] = "luminance";
ScryptedInterfaceProperty["position"] = "position";
ScryptedInterfaceProperty["securitySystem"] = "securitySystem";
ScryptedInterfaceProperty["pm25Density"] = "pm25Density";
ScryptedInterfaceProperty["vocDensity"] = "vocDensity";
ScryptedInterfaceProperty["airQuality"] = "airQuality";
@@ -486,6 +487,15 @@ exports.ScryptedInterfaceDescriptors = {
'position'
]
},
SecuritySystem: {
name: 'SecuritySystem',
methods: [
'setSecuritySystem'
],
properties: [
'securitySystem'
]
},
PM25Sensor: {
name: 'PM25Sensor',
methods: [],
@@ -704,6 +714,20 @@ var AirQuality;
AirQuality["Inferior"] = "Inferior";
AirQuality["Poor"] = "Poor";
})(AirQuality = exports.AirQuality || (exports.AirQuality = {}));
var SecuritySystemMode;
(function (SecuritySystemMode) {
SecuritySystemMode["Disarmed"] = "Disarmed";
SecuritySystemMode["HomeArmed"] = "HomeArmed";
SecuritySystemMode["AwayArmed"] = "AwayArmed";
SecuritySystemMode["NightArmed"] = "NightArmed";
})(SecuritySystemMode = exports.SecuritySystemMode || (exports.SecuritySystemMode = {}));
var SecuritySystemObstruction;
(function (SecuritySystemObstruction) {
SecuritySystemObstruction["Sensor"] = "Sensor";
SecuritySystemObstruction["Occupied"] = "Occupied";
SecuritySystemObstruction["Time"] = "Time";
SecuritySystemObstruction["Error"] = "Error";
})(SecuritySystemObstruction = exports.SecuritySystemObstruction || (exports.SecuritySystemObstruction = {}));
var MediaPlayerState;
(function (MediaPlayerState) {
MediaPlayerState["Idle"] = "Idle";
@@ -762,6 +786,7 @@ var ScryptedInterface;
ScryptedInterface["UltravioletSensor"] = "UltravioletSensor";
ScryptedInterface["LuminanceSensor"] = "LuminanceSensor";
ScryptedInterface["PositionSensor"] = "PositionSensor";
ScryptedInterface["SecuritySystem"] = "SecuritySystem";
ScryptedInterface["PM25Sensor"] = "PM25Sensor";
ScryptedInterface["VOCSensor"] = "VOCSensor";
ScryptedInterface["AirQualitySensor"] = "AirQualitySensor";

View File

@@ -49,6 +49,7 @@ export interface DeviceState {
ultraviolet?: number
luminance?: number
position?: Position
securitySystem?: SecuritySystemState
pm25Density?: number
vocDensity?: number
airQuality?: AirQuality
@@ -105,6 +106,7 @@ export class DeviceBase implements DeviceState {
ultraviolet?: number
luminance?: number
position?: Position
securitySystem?: SecuritySystemState
pm25Density?: number
vocDensity?: number
airQuality?: AirQuality
@@ -162,6 +164,7 @@ export enum ScryptedInterfaceProperty {
ultraviolet = "ultraviolet",
luminance = "luminance",
position = "position",
securitySystem = "securitySystem",
pm25Density = "pm25Density",
vocDensity = "vocDensity",
airQuality = "airQuality",
@@ -597,6 +600,15 @@ export const ScryptedInterfaceDescriptors: { [scryptedInterface: string]: Scrypt
'position'
]
},
SecuritySystem: {
name: 'SecuritySystem',
methods: [
'setSecuritySystem'
],
properties: [
'securitySystem'
]
},
PM25Sensor: {
name: 'PM25Sensor',
methods: [],
@@ -1488,6 +1500,14 @@ export interface UltravioletSensor {
export interface LuminanceSensor {
luminance?: number;
}
export interface Position {
/**
* The accuracy radius of this position in meters.
*/
accuracyRadius?: number;
latitude?: number;
longitude?: number;
}
export interface PositionSensor {
position?: Position;
}
@@ -1508,14 +1528,33 @@ export enum AirQuality {
export interface AirQualitySensor {
airQuality?: AirQuality;
}
export interface Position {
/**
* The accuracy radius of this position in meters.
*/
accuracyRadius?: number;
latitude?: number;
longitude?: number;
export enum SecuritySystemMode {
Disarmed = 'Disarmed',
HomeArmed = 'HomeArmed',
AwayArmed = 'AwayArmed',
NightArmed = 'NightArmed',
}
export enum SecuritySystemObstruction {
Sensor = 'Sensor',
Occupied = 'Occupied',
Time = 'Time',
Error = 'Error',
}
export interface SecuritySystemState {
mode: SecuritySystemMode;
triggered?: boolean;
supportedModes?: SecuritySystemMode[];
obstruction?: SecuritySystemObstruction;
}
export interface SecuritySystem {
securitySystem?: SecuritySystemState;
setSecuritySystem(mode: SecuritySystemMode): Promise<void>;
}
export interface ZoneHistory {
firstEntry: number;
lastEntry: number;
@@ -2126,6 +2165,7 @@ export enum ScryptedInterface {
UltravioletSensor = "UltravioletSensor",
LuminanceSensor = "LuminanceSensor",
PositionSensor = "PositionSensor",
SecuritySystem = 'SecuritySystem',
PM25Sensor = "PM25Sensor",
VOCSensor = "VOCSensor",
AirQualitySensor = "AirQualitySensor",

View File

@@ -124,6 +124,7 @@ class ScryptedInterface(Enum):
Scriptable = "Scriptable"
ScryptedDevice = "ScryptedDevice"
ScryptedPlugin = "ScryptedPlugin"
SecuritySystem = "SecuritySystem"
Settings = "Settings"
SoftwareUpdate = "SoftwareUpdate"
StartStop = "StartStop"
@@ -147,6 +148,18 @@ class ScryptedMimeTypes(Enum):
SchemePrefix = "x-scrypted/x-scrypted-scheme-"
Url = "text/x-uri"
class SecuritySystemMode(Enum):
AwayArmed = "AwayArmed"
Disarmed = "Disarmed"
HomeArmed = "HomeArmed"
NightArmed = "NightArmed"
class SecuritySystemObstruction(Enum):
Error = "Error"
Occupied = "Occupied"
Sensor = "Sensor"
Time = "Time"
class TemperatureUnit(Enum):
C = "C"
F = "F"
@@ -468,6 +481,13 @@ class ScryptedDevice(TypedDict):
type: ScryptedDeviceType
pass
class SecuritySystemState(TypedDict):
mode: SecuritySystemMode
obstruction: SecuritySystemObstruction
supportedModes: list[SecuritySystemMode]
triggered: bool
pass
class Setting(TypedDict):
choices: list[str]
combobox: bool
@@ -844,6 +864,12 @@ class ScryptedPlugin:
pass
pass
class SecuritySystem:
securitySystem: SecuritySystemState
async def setSecuritySystem(self, mode: SecuritySystemMode) -> None:
pass
pass
class Settings:
async def getSettings(self) -> list[Setting]:
pass
@@ -1090,6 +1116,7 @@ class ScryptedInterfaceProperty(Enum):
ultraviolet = "ultraviolet"
luminance = "luminance"
position = "position"
securitySystem = "securitySystem"
pm25Density = "pm25Density"
vocDensity = "vocDensity"
airQuality = "airQuality"
@@ -1438,6 +1465,13 @@ class DeviceState:
def position(self, value: Position):
self.setScryptedProperty("position", value)
@property
def securitySystem(self) -> SecuritySystemState:
return self.getScryptedProperty("securitySystem")
@securitySystem.setter
def securitySystem(self, value: SecuritySystemState):
self.setScryptedProperty("securitySystem", value)
@property
def pm25Density(self) -> float:
return self.getScryptedProperty("pm25Density")
@@ -1899,6 +1933,15 @@ ScryptedInterfaceDescriptors = {
"position"
]
},
"SecuritySystem": {
"name": "SecuritySystem",
"methods": [
"setSecuritySystem"
],
"properties": [
"securitySystem"
]
},
"PM25Sensor": {
"name": "PM25Sensor",
"methods": [],