mirror of
https://github.com/koush/scrypted.git
synced 2026-02-11 09:34:27 +00:00
sdk: security system
This commit is contained in:
@@ -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;
|
||||
|
||||
@@ -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",
|
||||
|
||||
@@ -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
40
sdk/types/index.d.ts
vendored
@@ -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",
|
||||
|
||||
@@ -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";
|
||||
|
||||
@@ -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",
|
||||
|
||||
@@ -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": [],
|
||||
|
||||
Reference in New Issue
Block a user