UNPKG

homebridge-miot

Version:

Homebridge plugin for devices supporting the miot protocol

108 lines (75 loc) 7.34 kB
const AirFryerDevice = require('../AirFryerDevice.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 CareliFryerMaf07 extends AirFryerDevice { constructor(miotDevice, name, logger) { super(miotDevice, name, logger); } /*----------========== DEVICE INFO ==========----------*/ getDeviceName() { return 'Mi Smart Air Fryer (3.5L)'; } getMiotSpecUrl() { return 'https://miot-spec.org/miot-spec-v2/instance?type=urn:miot-spec-v2:device:air-fryer:0000A0A4:careli-maf07:1'; } /*----------========== CONFIG ==========----------*/ requiresMiCloud() { return false; } /*----------========== METADATA ==========----------*/ initDeviceServices() { this.createServiceByString('{"siid":2,"type":"urn:miot-spec-v2:service:air-fryer:00007897:careli-maf07:1","description":"Air Fryer"}'); this.createServiceByString('{"siid":3,"type":"urn:careli-spec:service:custom:00007801:careli-maf07:1","description":"custom"}'); } initDeviceProperties() { this.addPropertyByString('air-fryer:status', '{"siid":2,"piid":1,"type":"urn:miot-spec-v2:property:status:00000007:careli-maf07:1","description":"Status","format":"uint8","access":["read","notify"],"unit":"none","valueList":[{"value":0,"description":"Shutdown"},{"value":1,"description":"Standby"},{"value":2,"description":"Pause"},{"value":3,"description":"Appointment"},{"value":4,"description":"Cooking"},{"value":5,"description":"Preheat "},{"value":6,"description":"Cooked"},{"value":7,"description":"Preheat Finish"},{"value":8,"description":"Preheat Pause"},{"value":9,"description":"Pause2"}]}'); this.addPropertyByString('air-fryer:fault', '{"siid":2,"piid":2,"type":"urn:miot-spec-v2:property:fault:00000009:careli-maf07:1","description":"Device Fault","format":"uint8","access":["read","notify"],"unit":"none","valueList":[{"value":0,"description":"No Faults"},{"value":1,"description":"E1"},{"value":2,"description":"E2"}]}'); this.addPropertyByString('air-fryer:target-time', '{"siid":2,"piid":3,"type":"urn:miot-spec-v2:property:target-time:00000078:careli-maf07:1","description":"Target Time","format":"uint16","access":["read","write","notify"],"unit":"minutes","valueRange":[1,1440,1]}'); this.addPropertyByString('air-fryer:target-temperature', '{"siid":2,"piid":4,"type":"urn:miot-spec-v2:property:target-temperature:00000021:careli-maf07:1","description":"Target Temperature","format":"uint8","access":["read","write","notify"],"unit":"celsius","valueRange":[40,200,1]}'); this.addPropertyByString('air-fryer:left-time', '{"siid":2,"piid":5,"type":"urn:miot-spec-v2:property:left-time:0000003C:careli-maf07:1","description":"Left Time","format":"uint16","access":["read","notify"],"unit":"minutes","valueRange":[0,1440,1]}'); this.addPropertyByString('custom:recipe-id', '{"siid":3,"piid":1,"type":"urn:careli-spec:property:recipe-id:00000001:careli-maf07:1","description":"recipe-id","format":"string","access":["read","notify","write"],"unit":"none"}'); this.addPropertyByString('custom:work-time', '{"siid":3,"piid":3,"type":"urn:careli-spec:property:work-time:00000003:careli-maf07:1","description":"work-time","format":"uint16","access":["write"],"unit":"minutes","valueRange":[1,1440,1]}'); this.addPropertyByString('custom:work-temp', '{"siid":3,"piid":4,"type":"urn:careli-spec:property:work-temp:00000004:careli-maf07:1","description":"work-temp","format":"uint8","access":["write"],"unit":"celsius","valueRange":[40,200,1]}'); this.addPropertyByString('custom:appoint-time', '{"siid":3,"piid":5,"type":"urn:careli-spec:property:appoint-time:00000005:careli-maf07:1","description":"appoint-time","format":"uint16","access":["read","notify","write"],"unit":"minutes","valueRange":[0,1440,1]}'); this.addPropertyByString('custom:food-quanty', '{"siid":3,"piid":6,"type":"urn:careli-spec:property:food-quanty:00000006:careli-maf07:1","description":"food-quanty","format":"uint8","access":["write","read","notify"],"unit":"none","valueList":[{"value":0,"description":"Null"},{"value":1,"description":"Single"},{"value":2,"description":"Double"},{"value":3,"description":"Half"},{"value":4,"description":"Full"}]}'); this.addPropertyByString('custom:preheat-switch', '{"siid":3,"piid":7,"type":"urn:careli-spec:property:preheat-switch:00000007:careli-maf07:1","description":"preheat-switch","format":"uint8","access":["read","notify","write"],"valueList":[{"value":0,"description":"Null"},{"value":1,"description":"Off"},{"value":2,"description":"On"}]}'); this.addPropertyByString('custom:appoint-time-left', '{"siid":3,"piid":8,"type":"urn:careli-spec:property:appoint-time-left:00000008:careli-maf07:1","description":"appoint-time-left","format":"uint16","access":["read","notify","write"],"unit":"minutes","valueRange":[0,1440,1]}'); this.addPropertyByString('custom:turn-pot', '{"siid":3,"piid":10,"type":"urn:careli-spec:property:turn-pot:0000000a:careli-maf07:1","description":"turn-pot","format":"uint8","access":["read","notify","write"],"valueList":[{"value":1,"description":"Switch Off"},{"value":0,"description":"Not Turn Pot"},{"value":2,"description":"Turn Pot"}]}'); } initDeviceActions() { this.addActionByString('air-fryer:start-cook', '{"siid":2,"aiid":1,"type":"urn:miot-spec-v2:action:start-cook:00002806:careli-maf07:1","description":"Start Cook","in":[],"out":[]}'); this.addActionByString('air-fryer:cancel-cooking', '{"siid":2,"aiid":2,"type":"urn:miot-spec-v2:action:cancel-cooking:00002807:careli-maf07:1","description":"Cancel Cooking","in":[],"out":[]}'); this.addActionByString('air-fryer:pause', '{"siid":2,"aiid":3,"type":"urn:miot-spec-v2:action:pause:0000280C:careli-maf07:1","description":"Pause","in":[],"out":[]}'); this.addActionByString('custom:start-custom-cook', '{"siid":3,"aiid":1,"type":"urn:careli-spec:action:start-custom-cook:00002801:careli-maf07:1","description":"start-custom-cook","in":[1,3,4,5,6,7],"out":[]}'); this.addActionByString('custom:resume-cooking', '{"siid":3,"aiid":2,"type":"urn:careli-spec:action:resume-cooking:00002802:careli-maf07:1","description":"resume-cooking","in":[],"out":[]}'); } initDeviceEvents() { this.addEventByString('air-fryer:cooking-finished', '{"siid":2,"eiid":1,"type":"urn:miot-spec-v2:event:cooking-finished:0000501C:careli-maf07:1","description":"Cooking Finished","arguments":[]}'); this.addEventByString('custom:cooking-start', '{"siid":3,"eiid":1,"type":"urn:careli-spec:event:cooking-start:00005001:careli-maf07:1","description":"cooking-start","arguments":[]}'); } /*----------========== VALUES OVERRIDES ==========----------*/ statusIdleValue() { return 1; } statusCookingValue() { return 4; } statusPausedValue() { return 2; } statusCompletedValue() { return 6; } statusSleepValue() { return 0; } statusPreheatValue() { return 5; } /*----------========== PROPERTY OVERRIDES ==========----------*/ /*----------========== ACTION OVERRIDES ==========----------*/ /*----------========== OVERRIDES ==========----------*/ } module.exports = CareliFryerMaf07;