node-red-contrib-miio-localdevices
Version:
Node for Node-Red to control Mi Devices locally via node-mihome (Humidifiers, Air Purifiers, Heaters, Fans, Vacuums, Lights - list of devices to be enlarged). See latest updates in documentation.
74 lines (63 loc) • 2.39 kB
JavaScript
const Device = require('../device-miio');
module.exports = class extends Device {
static model = 'deerma.humidifier.jsq4';
static name = 'Mijia Pure Evaporation (jsq4)';
static image = 'https://cdn.cnbj1.fds.api.mi-img.com/iotweb-product-center/developer_1616123889270TXVYhdbh.png';
constructor(opts) {
super(opts);
this._miotSpec = {
'humidifier:on': {siid: 2, piid: 1},
'humidifier:fault': {siid: 2, piid: 2},
'humidifier:fan-level': {siid: 2, piid: 5},
'humidifier:target-humidity': {siid: 2, piid: 6},
'environment:relative-humidity': {siid: 3, piid: 1},
'environment:temperature': {siid: 3, piid: 7},
'alarm:alarm': {siid: 5, piid: 1},
'indicator-light:on': {siid: 6, piid: 1},
'custom:water-shortage-fault': {siid: 7, piid: 1},
'custom:the-tank-filed': {siid: 7, piid: 2}
};
this._propertiesToMonitor = [
'humidifier:on',
'humidifier:fault',
'humidifier:fan-level',
'humidifier:target-humidity',
'environment:relative-humidity',
'environment:temperature',
'alarm:alarm',
'indicator-light:on',
'custom:water-shortage-fault',
'custom:the-tank-filed'
];
}
setPower(v) {
if ([true, false].includes(v)) {
return this.miioCall('set_properties', [{'siid': 2, 'piid': 1, value: v}])
}
return Promise.reject(new Error(`Invalid value: ${v}. Choose true or false`));
}
setFanLevel(v) {
if ([1, 2, 3].includes(v)) {
return this.miioCall('set_properties', [{'siid': 2, 'piid': 5, value: v}])
}
return Promise.reject(new Error(`Invalid FanLevel: ${v}. Choose 1, 2, 3`));
}
setTargetHumidity(v) {
if (v >= 40 && v <= 80) {
return this.miioCall('set_properties', [{'siid': 2, 'piid': 6, value: v}])
}
return Promise.reject(new Error(`Invalid Target Humidity: ${v}. Should be between 40 and 80`));
}
setBuzzer(v) {
if ([true, false].includes(v)) {
return this.miioCall('set_properties', [{'siid': 5, 'piid': 1, value: v}])
}
return Promise.reject(new Error(`Invalid value: ${v}. Choose true or false`));
}
setBright(v) {
if ([true, false].includes(v)) {
return this.miioCall('set_properties', [{'siid': 6, 'piid': 1, value: v}])
}
return Promise.reject(new Error(`Invalid value: ${v}. Choose true or false`));
}
};