mirror of
https://github.com/koush/scrypted.git
synced 2026-09-17 17:20:39 +01:00
sdk/server/homekit: humidity
This commit is contained in:
4
plugins/homekit/package-lock.json
generated
4
plugins/homekit/package-lock.json
generated
@@ -1,12 +1,12 @@
|
||||
{
|
||||
"name": "@scrypted/homekit",
|
||||
"version": "0.0.118",
|
||||
"version": "0.0.119",
|
||||
"lockfileVersion": 2,
|
||||
"requires": true,
|
||||
"packages": {
|
||||
"": {
|
||||
"name": "@scrypted/homekit",
|
||||
"version": "0.0.118",
|
||||
"version": "0.0.119",
|
||||
"dependencies": {
|
||||
"hap-nodejs": "file:../../external/HAP-NodeJS",
|
||||
"lodash": "^4.17.21",
|
||||
|
||||
@@ -40,5 +40,5 @@
|
||||
"@types/qrcode": "^1.4.1",
|
||||
"@types/url-parse": "^1.4.3"
|
||||
},
|
||||
"version": "0.0.118"
|
||||
"version": "0.0.119"
|
||||
}
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
|
||||
import { Fan, FanMode, HumiditySensor, HumiditySetting, OnOff, ScryptedDevice, ScryptedDeviceType, ScryptedInterface, TemperatureSetting, TemperatureUnit, Thermometer, ThermostatMode } from '@scrypted/sdk'
|
||||
import { Fan, FanMode, HumidityMode, HumiditySensor, HumiditySetting, OnOff, ScryptedDevice, ScryptedDeviceType, ScryptedInterface, TemperatureSetting, TemperatureUnit, Thermometer, ThermostatMode } from '@scrypted/sdk'
|
||||
import { access } from 'fs';
|
||||
import { Accessory } from 'hap-nodejs';
|
||||
import { ROTATION_DIRECTION_CTYPE } from 'hap-nodejs/src/accessories/types';
|
||||
import { addSupportedType, bindCharacteristic, DummyDevice } from '../common'
|
||||
@@ -95,6 +96,48 @@ addSupportedType({
|
||||
() => device.humidity || 0);
|
||||
}
|
||||
|
||||
if (device.interfaces.includes(ScryptedInterface.HumiditySetting) && device.interfaces.includes(ScryptedInterface.HumiditySensor)) {
|
||||
const humidityService = accessory.addService(Service.HumidifierDehumidifier);
|
||||
|
||||
bindCharacteristic(device, ScryptedInterface.HumiditySensor, humidityService, Characteristic.Active,
|
||||
() => !!device.humiditySetting?.activeMode);
|
||||
humidityService.getCharacteristic(Characteristic.Active).on(CharacteristicEventTypes.SET, (value, callback) => {
|
||||
callback();
|
||||
device.setHumidity({
|
||||
mode: value ? HumidityMode.Auto : HumidityMode.Off
|
||||
});
|
||||
});
|
||||
|
||||
bindCharacteristic(device, ScryptedInterface.HumiditySensor, humidityService, Characteristic.CurrentRelativeHumidity,
|
||||
() => device.humidity || 0);
|
||||
|
||||
bindCharacteristic(device, ScryptedInterface.HumiditySensor, humidityService, Characteristic.CurrentHumidifierDehumidifierState,
|
||||
() => !device.humiditySetting?.activeMode || device.humiditySetting?.activeMode === HumidityMode.Off
|
||||
? Characteristic.CurrentHumidifierDehumidifierState.INACTIVE
|
||||
: device.humiditySetting.activeMode === HumidityMode.Dehumidify
|
||||
? Characteristic.CurrentHumidifierDehumidifierState.DEHUMIDIFYING
|
||||
: device.humiditySetting.activeMode === HumidityMode.Humidify
|
||||
? Characteristic.CurrentHumidifierDehumidifierState.HUMIDIFYING
|
||||
: Characteristic.CurrentHumidifierDehumidifierState.IDLE);
|
||||
|
||||
bindCharacteristic(device, ScryptedInterface.HumiditySensor, humidityService, Characteristic.TargetHumidifierDehumidifierState,
|
||||
() => !device.humiditySetting?.mode || device.humiditySetting?.mode === HumidityMode.Auto
|
||||
? Characteristic.TargetHumidifierDehumidifierState.HUMIDIFIER_OR_DEHUMIDIFIER
|
||||
: device.humiditySetting?.mode === HumidityMode.Dehumidify
|
||||
? Characteristic.TargetHumidifierDehumidifierState.DEHUMIDIFIER
|
||||
: Characteristic.TargetHumidifierDehumidifierState.HUMIDIFIER);
|
||||
humidityService.getCharacteristic(Characteristic.TargetHumidifierDehumidifierState).on(CharacteristicEventTypes.SET, (value, callback) => {
|
||||
callback();
|
||||
device.setHumidity({
|
||||
mode: value === Characteristic.TargetHumidifierDehumidifierState.HUMIDIFIER
|
||||
? HumidityMode.Humidify
|
||||
: value === Characteristic.TargetHumidifierDehumidifierState.DEHUMIDIFIER
|
||||
? HumidityMode.Dehumidify
|
||||
: HumidityMode.Auto
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
if (device.interfaces.includes(ScryptedInterface.Fan)) {
|
||||
const fanService = accessory.addService(Service.Fanv2);
|
||||
|
||||
|
||||
4
sdk/package-lock.json
generated
4
sdk/package-lock.json
generated
@@ -1,12 +1,12 @@
|
||||
{
|
||||
"name": "@scrypted/sdk",
|
||||
"version": "0.0.102",
|
||||
"version": "0.0.103",
|
||||
"lockfileVersion": 2,
|
||||
"requires": true,
|
||||
"packages": {
|
||||
"": {
|
||||
"name": "@scrypted/sdk",
|
||||
"version": "0.0.102",
|
||||
"version": "0.0.103",
|
||||
"license": "ISC",
|
||||
"dependencies": {
|
||||
"@babel/plugin-proposal-class-properties": "^7.14.5",
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@scrypted/sdk",
|
||||
"version": "0.0.102",
|
||||
"version": "0.0.103",
|
||||
"description": "",
|
||||
"main": "index.js",
|
||||
"scripts": {
|
||||
|
||||
@@ -282,19 +282,19 @@ export interface TemperatureSetting {
|
||||
thermostatSetpointLow?: number;
|
||||
}
|
||||
export enum HumidityMode {
|
||||
Off = "Off",
|
||||
Humidify = "Humidify",
|
||||
Dehumidify = "Dehumidify",
|
||||
Auto = "Auto",
|
||||
Off = "Off",
|
||||
}
|
||||
export interface HumidityCommand {
|
||||
mode: HumidityMode;
|
||||
setpoint: number;
|
||||
mode?: HumidityMode;
|
||||
setpoint?: number;
|
||||
}
|
||||
export interface HumiditySettingStatus {
|
||||
mode: HumidityMode;
|
||||
setpoint: number;
|
||||
activeMode: HumidityMode;
|
||||
activeMode?: HumidityMode;
|
||||
availableModes: HumidityMode[];
|
||||
}
|
||||
export interface HumiditySetting {
|
||||
|
||||
14
server/package-lock.json
generated
14
server/package-lock.json
generated
@@ -10,7 +10,7 @@
|
||||
"license": "ISC",
|
||||
"dependencies": {
|
||||
"@mapbox/node-pre-gyp": "^1.0.5",
|
||||
"@scrypted/sdk": "^0.0.102",
|
||||
"@scrypted/sdk": "^0.0.103",
|
||||
"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.102",
|
||||
"resolved": "https://registry.npmjs.org/@scrypted/sdk/-/sdk-0.0.102.tgz",
|
||||
"integrity": "sha512-TD8OJuAS0d8U9F/g+kKA+pK6tEaOrCeQszooU/rYaqQe1o+IwlRfd775ZmS5Kh8dy3+ohH/jTwXf5tByupZzUA==",
|
||||
"version": "0.0.103",
|
||||
"resolved": "https://registry.npmjs.org/@scrypted/sdk/-/sdk-0.0.103.tgz",
|
||||
"integrity": "sha512-vmf8CivSglzXRgm5zwc753qbGZPX61b/Dop5WFWl8Te3D/C0vNWPIIfAp+q1WhiBikryzHYNJOHcbIkA0zgxUA==",
|
||||
"dependencies": {
|
||||
"@babel/plugin-proposal-class-properties": "^7.14.5",
|
||||
"@babel/plugin-proposal-nullish-coalescing-operator": "^7.14.5",
|
||||
@@ -5091,9 +5091,9 @@
|
||||
}
|
||||
},
|
||||
"@scrypted/sdk": {
|
||||
"version": "0.0.102",
|
||||
"resolved": "https://registry.npmjs.org/@scrypted/sdk/-/sdk-0.0.102.tgz",
|
||||
"integrity": "sha512-TD8OJuAS0d8U9F/g+kKA+pK6tEaOrCeQszooU/rYaqQe1o+IwlRfd775ZmS5Kh8dy3+ohH/jTwXf5tByupZzUA==",
|
||||
"version": "0.0.103",
|
||||
"resolved": "https://registry.npmjs.org/@scrypted/sdk/-/sdk-0.0.103.tgz",
|
||||
"integrity": "sha512-vmf8CivSglzXRgm5zwc753qbGZPX61b/Dop5WFWl8Te3D/C0vNWPIIfAp+q1WhiBikryzHYNJOHcbIkA0zgxUA==",
|
||||
"requires": {
|
||||
"@babel/plugin-proposal-class-properties": "^7.14.5",
|
||||
"@babel/plugin-proposal-nullish-coalescing-operator": "^7.14.5",
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
"description": "",
|
||||
"dependencies": {
|
||||
"@mapbox/node-pre-gyp": "^1.0.5",
|
||||
"@scrypted/sdk": "^0.0.102",
|
||||
"@scrypted/sdk": "^0.0.103",
|
||||
"adm-zip": "^0.5.3",
|
||||
"axios": "^0.21.1",
|
||||
"body-parser": "^1.19.0",
|
||||
|
||||
Reference in New Issue
Block a user