mirror of
https://github.com/koush/scrypted.git
synced 2026-02-14 02:42:06 +00:00
sdk/server: humidity and fan types
This commit is contained in:
4
sdk/index.d.ts
vendored
4
sdk/index.d.ts
vendored
@@ -1,6 +1,6 @@
|
||||
export * from './types';
|
||||
import type { ScryptedNativeId } from './types';
|
||||
import type { DeviceInformation, ScryptedInterface, ScryptedStatic, ScryptedDeviceType, Logger, ColorRgb, ColorHsv, DeviceState, TemperatureUnit, LockState, ThermostatMode, Position } from './types';
|
||||
import type { HumiditySettingStatus, DeviceInformation, ScryptedInterface, ScryptedStatic, ScryptedDeviceType, Logger, ColorRgb, ColorHsv, DeviceState, TemperatureUnit, LockState, ThermostatMode, Position, FanStatus } from './types';
|
||||
export declare class ScryptedDeviceBase implements DeviceState {
|
||||
nativeId?: string;
|
||||
id?: string;
|
||||
@@ -38,6 +38,8 @@ export declare class ScryptedDeviceBase implements DeviceState {
|
||||
thermostatSetpoint?: number;
|
||||
thermostatSetpointHigh?: number;
|
||||
thermostatSetpointLow?: number;
|
||||
humiditySetting?: HumiditySettingStatus;
|
||||
fan?: FanStatus;
|
||||
lockState?: LockState;
|
||||
entryOpen?: boolean;
|
||||
batteryLevel?: number;
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
export * from './types'
|
||||
import { ScryptedInterfaceProperty } from './types';
|
||||
import type { ScryptedNativeId, DeviceManager, SystemManager, MediaManager, EndpointManager } from './types';
|
||||
import type { DeviceInformation, ScryptedInterface, ScryptedStatic, ScryptedDeviceType, Logger, ColorRgb, ColorHsv, DeviceState, TemperatureUnit, LockState, ThermostatMode, Position, ScryptedDevice } from './types';
|
||||
import type { HumiditySettingStatus, DeviceInformation, ScryptedInterface, ScryptedStatic, ScryptedDeviceType, Logger, ColorRgb, ColorHsv, DeviceState, TemperatureUnit, LockState, ThermostatMode, Position, FanStatus } from './types';
|
||||
|
||||
export class ScryptedDeviceBase implements DeviceState {
|
||||
id?: string;
|
||||
@@ -39,6 +39,8 @@ export class ScryptedDeviceBase implements DeviceState {
|
||||
thermostatSetpoint?: number;
|
||||
thermostatSetpointHigh?: number;
|
||||
thermostatSetpointLow?: number;
|
||||
humiditySetting?: HumiditySettingStatus;
|
||||
fan?: FanStatus;
|
||||
lockState?: LockState;
|
||||
entryOpen?: boolean;
|
||||
batteryLevel?: number;
|
||||
|
||||
4
sdk/package-lock.json
generated
4
sdk/package-lock.json
generated
@@ -1,12 +1,12 @@
|
||||
{
|
||||
"name": "@scrypted/sdk",
|
||||
"version": "0.0.93",
|
||||
"version": "0.0.94",
|
||||
"lockfileVersion": 2,
|
||||
"requires": true,
|
||||
"packages": {
|
||||
"": {
|
||||
"name": "@scrypted/sdk",
|
||||
"version": "0.0.93",
|
||||
"version": "0.0.94",
|
||||
"license": "ISC",
|
||||
"dependencies": {
|
||||
"@babel/plugin-proposal-class-properties": "^7.14.5",
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@scrypted/sdk",
|
||||
"version": "0.0.93",
|
||||
"version": "0.0.94",
|
||||
"description": "",
|
||||
"main": "index.js",
|
||||
"scripts": {
|
||||
|
||||
37
sdk/types.d.ts
vendored
37
sdk/types.d.ts
vendored
@@ -245,7 +245,7 @@ export interface Dock {
|
||||
/**
|
||||
* TemperatureSetting represents a thermostat device.
|
||||
*/
|
||||
export interface TemperatureSetting extends Thermometer, HumiditySensor {
|
||||
export interface TemperatureSetting {
|
||||
setThermostatMode(mode: ThermostatMode): Promise<void>;
|
||||
setThermostatSetpoint(degrees: number): Promise<void>;
|
||||
setThermostatSetpointHigh(high: number): Promise<void>;
|
||||
@@ -257,6 +257,41 @@ export interface TemperatureSetting extends Thermometer, HumiditySensor {
|
||||
thermostatSetpointHigh?: number;
|
||||
thermostatSetpointLow?: number;
|
||||
}
|
||||
export declare enum HumidityMode {
|
||||
Off = "Off",
|
||||
Humidify = "Humidify",
|
||||
Dehumidify = "Dehumidify",
|
||||
Auto = "Auto"
|
||||
}
|
||||
export interface HumidityCommand {
|
||||
mode?: HumidityMode;
|
||||
setpoint?: number;
|
||||
}
|
||||
export interface HumiditySettingStatus extends HumidityCommand {
|
||||
activeMode?: HumidityMode;
|
||||
availableModes?: HumidityMode[];
|
||||
}
|
||||
export interface HumiditySetting {
|
||||
humiditySetting: HumiditySettingStatus;
|
||||
setHumidity(humidity: HumidityCommand): Promise<void>;
|
||||
}
|
||||
export interface FanStatus {
|
||||
speed?: number;
|
||||
/**
|
||||
* Available fan speed range in RPM.
|
||||
*/
|
||||
availableSpeeds: [number, number];
|
||||
}
|
||||
export interface Fan {
|
||||
/**
|
||||
* RPM. Negative numbers are valid to indicate fan direction,
|
||||
* if it rotates in both directions.
|
||||
* A fan speed of zero indicates it is active, but currently off.
|
||||
* A fan speed of null or undefined indicates the fan is off.
|
||||
*/
|
||||
fan?: FanStatus;
|
||||
setFanSpeed(speed: number): Promise<void>;
|
||||
}
|
||||
export interface Thermometer {
|
||||
/**
|
||||
* Get the ambient temperature in Celsius.
|
||||
|
||||
27
sdk/types.js
27
sdk/types.js
@@ -1,6 +1,6 @@
|
||||
"use strict";
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
exports.ScryptedInterfaceDescriptors = exports.SCRYPTED_MEDIA_SCHEME = exports.ScryptedMimeTypes = exports.ScryptedInterfaceProperty = exports.ScryptedInterface = exports.MediaPlayerState = exports.LockState = exports.ThermostatMode = exports.TemperatureUnit = exports.ScryptedDeviceType = void 0;
|
||||
exports.ScryptedInterfaceDescriptors = exports.SCRYPTED_MEDIA_SCHEME = exports.ScryptedMimeTypes = exports.ScryptedInterfaceProperty = exports.ScryptedInterface = exports.MediaPlayerState = exports.LockState = exports.ThermostatMode = exports.TemperatureUnit = exports.HumidityMode = exports.ScryptedDeviceType = void 0;
|
||||
var ScryptedDeviceType;
|
||||
(function (ScryptedDeviceType) {
|
||||
ScryptedDeviceType["Builtin"] = "Builtin";
|
||||
@@ -32,6 +32,13 @@ var ScryptedDeviceType;
|
||||
ScryptedDeviceType["Person"] = "Person";
|
||||
ScryptedDeviceType["Unknown"] = "Unknown";
|
||||
})(ScryptedDeviceType = exports.ScryptedDeviceType || (exports.ScryptedDeviceType = {}));
|
||||
var HumidityMode;
|
||||
(function (HumidityMode) {
|
||||
HumidityMode["Off"] = "Off";
|
||||
HumidityMode["Humidify"] = "Humidify";
|
||||
HumidityMode["Dehumidify"] = "Dehumidify";
|
||||
HumidityMode["Auto"] = "Auto";
|
||||
})(HumidityMode = exports.HumidityMode || (exports.HumidityMode = {}));
|
||||
var TemperatureUnit;
|
||||
(function (TemperatureUnit) {
|
||||
TemperatureUnit["C"] = "C";
|
||||
@@ -602,6 +609,24 @@ exports.ScryptedInterfaceDescriptors = {
|
||||
"getDetectionInput",
|
||||
"getObjectTypes",
|
||||
]
|
||||
},
|
||||
HumiditySetting: {
|
||||
name: "HumiditySetting",
|
||||
properties: [
|
||||
"humiditySetting",
|
||||
],
|
||||
methods: [
|
||||
"setHumidity",
|
||||
]
|
||||
},
|
||||
Fan: {
|
||||
name: "Fan",
|
||||
properties: [
|
||||
"fan",
|
||||
],
|
||||
methods: [
|
||||
"setFanSpeed",
|
||||
],
|
||||
}
|
||||
};
|
||||
//# sourceMappingURL=types.js.map
|
||||
55
sdk/types.ts
55
sdk/types.ts
@@ -265,7 +265,7 @@ export interface Dock {
|
||||
/**
|
||||
* TemperatureSetting represents a thermostat device.
|
||||
*/
|
||||
export interface TemperatureSetting extends Thermometer, HumiditySensor {
|
||||
export interface TemperatureSetting {
|
||||
setThermostatMode(mode: ThermostatMode): Promise<void>;
|
||||
|
||||
setThermostatSetpoint(degrees: number): Promise<void>;
|
||||
@@ -281,6 +281,41 @@ export interface TemperatureSetting extends Thermometer, HumiditySensor {
|
||||
thermostatSetpointHigh?: number;
|
||||
thermostatSetpointLow?: number;
|
||||
}
|
||||
export enum HumidityMode {
|
||||
Off = "Off",
|
||||
Humidify = "Humidify",
|
||||
Dehumidify = "Dehumidify",
|
||||
Auto = "Auto",
|
||||
}
|
||||
export interface HumidityCommand {
|
||||
mode?: HumidityMode;
|
||||
setpoint?: number;
|
||||
}
|
||||
export interface HumiditySettingStatus extends HumidityCommand {
|
||||
activeMode?: HumidityMode;
|
||||
availableModes?: HumidityMode[];
|
||||
}
|
||||
export interface HumiditySetting {
|
||||
humiditySetting: HumiditySettingStatus;
|
||||
setHumidity(humidity: HumidityCommand): Promise<void>;
|
||||
}
|
||||
export interface FanStatus {
|
||||
speed?: number;
|
||||
/**
|
||||
* Available fan speed range in RPM.
|
||||
*/
|
||||
availableSpeeds: [number, number];
|
||||
}
|
||||
export interface Fan {
|
||||
/**
|
||||
* RPM. Negative numbers are valid to indicate fan direction,
|
||||
* if it rotates in both directions.
|
||||
* A fan speed of zero indicates it is active, but currently off.
|
||||
* A fan speed of null or undefined indicates the fan is off.
|
||||
*/
|
||||
fan?: FanStatus;
|
||||
setFanSpeed(speed: number): Promise<void>;
|
||||
}
|
||||
export interface Thermometer {
|
||||
/**
|
||||
* Get the ambient temperature in Celsius.
|
||||
@@ -1668,6 +1703,24 @@ export const ScryptedInterfaceDescriptors: { [scryptedInterface: string]: Scrypt
|
||||
"getDetectionInput",
|
||||
"getObjectTypes",
|
||||
]
|
||||
},
|
||||
HumiditySetting: {
|
||||
name: "HumiditySetting",
|
||||
properties: [
|
||||
"humiditySetting",
|
||||
],
|
||||
methods: [
|
||||
"setHumidity",
|
||||
]
|
||||
},
|
||||
Fan: {
|
||||
name: "Fan",
|
||||
properties: [
|
||||
"fan",
|
||||
],
|
||||
methods: [
|
||||
"setFanSpeed",
|
||||
],
|
||||
}
|
||||
} as any;
|
||||
|
||||
|
||||
35
server/package-lock.json
generated
35
server/package-lock.json
generated
@@ -1,16 +1,16 @@
|
||||
{
|
||||
"name": "@scrypted/server",
|
||||
"version": "0.0.54",
|
||||
"version": "0.0.55",
|
||||
"lockfileVersion": 2,
|
||||
"requires": true,
|
||||
"packages": {
|
||||
"": {
|
||||
"name": "@scrypted/server",
|
||||
"version": "0.0.54",
|
||||
"version": "0.0.55",
|
||||
"license": "ISC",
|
||||
"dependencies": {
|
||||
"@mapbox/node-pre-gyp": "^1.0.5",
|
||||
"@scrypted/sdk": "^0.0.93",
|
||||
"@scrypted/sdk": "^0.0.94",
|
||||
"adm-zip": "^0.5.3",
|
||||
"axios": "^0.21.1",
|
||||
"body-parser": "^1.19.0",
|
||||
@@ -628,9 +628,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@scrypted/sdk": {
|
||||
"version": "0.0.93",
|
||||
"resolved": "https://registry.npmjs.org/@scrypted/sdk/-/sdk-0.0.93.tgz",
|
||||
"integrity": "sha512-BP7QBrFOF3LViVn6KYEm6jHGmnlkUVEXxtCwhH2iHmUqUVQvuK2ZIJ2MIUAZ8ql6s+SnP0rd//8a2v6s2ujWMA==",
|
||||
"version": "0.0.94",
|
||||
"resolved": "https://registry.npmjs.org/@scrypted/sdk/-/sdk-0.0.94.tgz",
|
||||
"integrity": "sha512-rLb/esVaQUbooyqzoOJBugMVagvlu6O4Q9QjTgjOV4rs1PImVtcth73rVY7bu0fg3kyb5zOg0yBoL9TB5UsZyg==",
|
||||
"dependencies": {
|
||||
"@babel/plugin-proposal-class-properties": "^7.14.5",
|
||||
"@babel/plugin-proposal-nullish-coalescing-operator": "^7.14.5",
|
||||
@@ -645,8 +645,10 @@
|
||||
"babel-loader": "^8.2.3",
|
||||
"babel-plugin-const-enum": "^1.1.0",
|
||||
"esbuild": "^0.13.8",
|
||||
"ncp": "^2.0.0",
|
||||
"raw-loader": "^4.0.2",
|
||||
"rimraf": "^3.0.2",
|
||||
"tmp": "^0.2.1",
|
||||
"ts-loader": "^9.2.6",
|
||||
"typescript-json-schema": "^0.50.1",
|
||||
"webpack": "^5.59.0"
|
||||
@@ -3227,6 +3229,14 @@
|
||||
"resolved": "https://registry.npmjs.org/napi-macros/-/napi-macros-2.0.0.tgz",
|
||||
"integrity": "sha512-A0xLykHtARfueITVDernsAWdtIMbOJgKgcluwENp3AlsKN/PloyO10HtmoqnFAQAcxPkgZN7wdfPfEd0zNGxbg=="
|
||||
},
|
||||
"node_modules/ncp": {
|
||||
"version": "2.0.0",
|
||||
"resolved": "https://registry.npmjs.org/ncp/-/ncp-2.0.0.tgz",
|
||||
"integrity": "sha1-GVoh1sRuNh0vsSgbo4uR6d9727M=",
|
||||
"bin": {
|
||||
"ncp": "bin/ncp"
|
||||
}
|
||||
},
|
||||
"node_modules/negotiator": {
|
||||
"version": "0.6.2",
|
||||
"resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz",
|
||||
@@ -5081,9 +5091,9 @@
|
||||
}
|
||||
},
|
||||
"@scrypted/sdk": {
|
||||
"version": "0.0.93",
|
||||
"resolved": "https://registry.npmjs.org/@scrypted/sdk/-/sdk-0.0.93.tgz",
|
||||
"integrity": "sha512-BP7QBrFOF3LViVn6KYEm6jHGmnlkUVEXxtCwhH2iHmUqUVQvuK2ZIJ2MIUAZ8ql6s+SnP0rd//8a2v6s2ujWMA==",
|
||||
"version": "0.0.94",
|
||||
"resolved": "https://registry.npmjs.org/@scrypted/sdk/-/sdk-0.0.94.tgz",
|
||||
"integrity": "sha512-rLb/esVaQUbooyqzoOJBugMVagvlu6O4Q9QjTgjOV4rs1PImVtcth73rVY7bu0fg3kyb5zOg0yBoL9TB5UsZyg==",
|
||||
"requires": {
|
||||
"@babel/plugin-proposal-class-properties": "^7.14.5",
|
||||
"@babel/plugin-proposal-nullish-coalescing-operator": "^7.14.5",
|
||||
@@ -5098,8 +5108,10 @@
|
||||
"babel-loader": "^8.2.3",
|
||||
"babel-plugin-const-enum": "^1.1.0",
|
||||
"esbuild": "^0.13.8",
|
||||
"ncp": "^2.0.0",
|
||||
"raw-loader": "^4.0.2",
|
||||
"rimraf": "^3.0.2",
|
||||
"tmp": "^0.2.1",
|
||||
"ts-loader": "^9.2.6",
|
||||
"typescript-json-schema": "^0.50.1",
|
||||
"webpack": "^5.59.0"
|
||||
@@ -7085,6 +7097,11 @@
|
||||
"resolved": "https://registry.npmjs.org/napi-macros/-/napi-macros-2.0.0.tgz",
|
||||
"integrity": "sha512-A0xLykHtARfueITVDernsAWdtIMbOJgKgcluwENp3AlsKN/PloyO10HtmoqnFAQAcxPkgZN7wdfPfEd0zNGxbg=="
|
||||
},
|
||||
"ncp": {
|
||||
"version": "2.0.0",
|
||||
"resolved": "https://registry.npmjs.org/ncp/-/ncp-2.0.0.tgz",
|
||||
"integrity": "sha1-GVoh1sRuNh0vsSgbo4uR6d9727M="
|
||||
},
|
||||
"negotiator": {
|
||||
"version": "0.6.2",
|
||||
"resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz",
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
{
|
||||
"name": "@scrypted/server",
|
||||
"version": "0.0.54",
|
||||
"version": "0.0.55",
|
||||
"description": "",
|
||||
"dependencies": {
|
||||
"@mapbox/node-pre-gyp": "^1.0.5",
|
||||
"@scrypted/sdk": "^0.0.93",
|
||||
"@scrypted/sdk": "^0.0.94",
|
||||
"adm-zip": "^0.5.3",
|
||||
"axios": "^0.21.1",
|
||||
"body-parser": "^1.19.0",
|
||||
|
||||
@@ -601,7 +601,7 @@ export class ScryptedRuntime {
|
||||
await this.datastore.remove(device);
|
||||
if (providerId == null || providerId === device._id) {
|
||||
const plugin = await this.datastore.tryGet(Plugin, device.pluginId);
|
||||
await this.killPlugin(plugin);
|
||||
this.killPlugin(plugin);
|
||||
await this.datastore.remove(plugin);
|
||||
}
|
||||
this.stateManager.removeDevice(device._id);
|
||||
@@ -665,7 +665,6 @@ export class ScryptedRuntime {
|
||||
this.stateManager.setPluginDeviceState(pluginDevice, ScryptedInterfaceProperty.providedRoom, providedRoom);
|
||||
if (isUsingDefaultRoom)
|
||||
this.stateManager.setPluginDeviceState(pluginDevice, ScryptedInterfaceProperty.room, getProvidedRoomOrDefault(pluginDevice));
|
||||
// pluginDevice.state.model = device.model;
|
||||
|
||||
const ret = this.notifyPluginDeviceDescriptorChanged(pluginDevice);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user