sdk/server/homekit: humidity

This commit is contained in:
Koushik Dutta
2021-11-08 10:47:56 -08:00
parent 57c7c6efad
commit ba24b1ca76
8 changed files with 62 additions and 19 deletions

View File

@@ -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",

View File

@@ -40,5 +40,5 @@
"@types/qrcode": "^1.4.1",
"@types/url-parse": "^1.4.3"
},
"version": "0.0.118"
"version": "0.0.119"
}

View File

@@ -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
View File

@@ -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",

View File

@@ -1,6 +1,6 @@
{
"name": "@scrypted/sdk",
"version": "0.0.102",
"version": "0.0.103",
"description": "",
"main": "index.js",
"scripts": {

View File

@@ -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 {

View File

@@ -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",

View File

@@ -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",