homebridge-miot
Version:
Homebridge plugin for devices supporting the miot protocol
91 lines (59 loc) • 3.32 kB
JavaScript
const AirConditionerDevice = require('../AirConditionerDevice.js');
const Constants = require('../../../constants/Constants.js');
const PropFormat = require('../../../constants/PropFormat.js');
const PropUnit = require('../../../constants/PropUnit.js');
const PropAccess = require('../../../constants/PropAccess.js');
class LumiAcpartnerV2 extends AirConditionerDevice {
constructor(miotDevice, name, logger) {
super(miotDevice, name, logger);
}
/*----------========== DEVICE INFO ==========----------*/
getDeviceName() {
return 'Xiaomi Air Conditioning Companion';
}
getMiotSpecUrl() {
return 'https://miot-spec.org/miot-spec-v2/instance?type=urn:miot-spec-v2:device:air-conditioner:0000A004:lumi-v2:1';
}
/*----------========== CONFIG ==========----------*/
requiresMiCloud() {
return true;
}
/*----------========== METADATA ==========----------*/
initDeviceServices() {
this.createServiceByString('{"siid":2,"type":"urn:miot-spec-v2:service:air-conditioner:0000780F:lumi-v2:1","description":"Air Conditioner"}');
this.createServiceByString('{"siid":3,"type":"urn:miot-spec-v2:service:fan-control:00007809:lumi-v2:1","description":"Fan Control"}');
}
initDeviceProperties() {
this.addPropertyByString('air-conditioner:on', '{"siid":2,"piid":1,"type":"urn:miot-spec-v2:property:on:00000006:lumi-v2:1","description":"Switch Status","format":"bool","access":["read","write","notify"]}');
this.addPropertyByString('air-conditioner:mode', '{"siid":2,"piid":2,"type":"urn:miot-spec-v2:property:mode:00000008:lumi-v2:1","description":"Mode","format":"uint8","access":["read","write","notify"],"valueList":[{"value":0,"description":"Auto"},{"value":1,"description":"Cool"},{"value":2,"description":"Dry"},{"value":3,"description":"Heat"},{"value":4,"description":"Fan"}]}');
this.addPropertyByString('air-conditioner:target-temperature', '{"siid":2,"piid":3,"type":"urn:miot-spec-v2:property:target-temperature:00000021:lumi-v2:1","description":"Target Temperature","format":"float","access":["read","write","notify"],"unit":"celsius","valueRange":[17,30,1]}');
this.addPropertyByString('fan-control:fan-level', '{"siid":3,"piid":1,"type":"urn:miot-spec-v2:property:fan-level:00000016:lumi-v2:1","description":"Fan Level","format":"uint8","access":["read","write","notify"],"valueList":[{"value":0,"description":"Auto"},{"value":1,"description":"Low"},{"value":2,"description":"Medium"},{"value":3,"description":"High"}]}');
this.addPropertyByString('fan-control:vertical-swing', '{"siid":3,"piid":2,"type":"urn:miot-spec-v2:property:vertical-swing:00000018:lumi-v2:1","description":"Vertical Swing","format":"bool","access":["read","write","notify"]}');
}
initDeviceActions() {
//no actions
}
initDeviceEvents() {
//no events
}
/*----------========== VALUES OVERRIDES ==========----------*/
autoModeValue() {
return 0;
}
heatModeValue() {
return 3;
}
coolModeValue() {
return 1;
}
dryModeValue() {
return 2;
}
fanModeValue() {
return 4;
}
/*----------========== PROPERTY OVERRIDES ==========----------*/
/*----------========== ACTION OVERRIDES ==========----------*/
/*----------========== OVERRIDES ==========----------*/
}
module.exports = LumiAcpartnerV2;