homebridge-miot
Version:
Homebridge plugin for devices supporting the miot protocol
277 lines (232 loc) • 39.5 kB
JavaScript
const RobotCleanerDevice = require('../RobotCleanerDevice.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 ViomiVacuumV18 extends RobotCleanerDevice {
constructor(miotDevice, name, logger) {
super(miotDevice, name, logger);
}
/*----------========== DEVICE INFO ==========----------*/
getDeviceName() {
return 'Viomi Robot Vacuum S9';
}
getMiotSpecUrl() {
return 'https://miot-spec.org/miot-spec-v2/instance?type=urn:miot-spec-v2:device:vacuum:0000A006:viomi-v18:2';
}
/*----------========== CONFIG ==========----------*/
requiresMiCloud() {
return false;
}
devicePropertiesToMonitor() {
return ['vacuum:status', 'vacuum:mode', 'vacuum:fault', 'battery:battery-level',
'viomi-vacuum:main-brush-hours', 'viomi-vacuum:main-brush-life', 'viomi-vacuum:side-brush-hours', 'viomi-vacuum:side-brush-life',
'viomi-vacuum:hypa-hours', 'viomi-vacuum:hypa-life', 'viomi-vacuum:clean-use-time', 'viomi-vacuum:clean-area'
];
}
/*----------========== METADATA ==========----------*/
initDeviceServices() {
this.createServiceByString('{"siid":2,"type":"urn:miot-spec-v2:service:vacuum:00007810:viomi-v18:1","description":"Robot Cleaner"}');
this.createServiceByString('{"siid":3,"type":"urn:miot-spec-v2:service:battery:00007805:viomi-v18:1","description":"Battery"}');
this.createServiceByString('{"siid":4,"type":"urn:viomi-spec:service:viomi-vacuum:00007801:viomi-v18:1","description":"扫地机"}');
this.createServiceByString('{"siid":5,"type":"urn:viomi-spec:service:order:00007802:viomi-v18:1","description":"预约、勿扰相关"}');
this.createServiceByString('{"siid":6,"type":"urn:viomi-spec:service:point-zone:00007803:viomi-v18:1","description":"指哪扫那 划区 虚拟墙"}');
this.createServiceByString('{"siid":7,"type":"urn:viomi-spec:service:map:00007804:viomi-v18:1","description":"地图相关"}');
this.createServiceByString('{"siid":8,"type":"urn:viomi-spec:service:voice:00007805:viomi-v18:1","description":"声音相关"}');
}
initDeviceProperties() {
this.addPropertyByString('vacuum:status', '{"siid":2,"piid":1,"type":"urn:miot-spec-v2:property:status:00000007:viomi-v18:1","description":"Status","format":"uint8","access":["read","notify"],"unit":"none","valueList":[{"value":0,"description":"Sleep"},{"value":1,"description":"Idle"},{"value":2,"description":"Paused"},{"value":3,"description":"Go Charging"},{"value":4,"description":"Charging"},{"value":5,"description":"Sweeping"},{"value":6,"description":"Sweeping and Mopping"},{"value":7,"description":"Mopping"}]}');
this.addPropertyByString('vacuum:fault', '{"siid":2,"piid":2,"type":"urn:miot-spec-v2:property:fault:00000009:viomi-v18:1","description":"Device Fault","format":"uint32","access":["read","notify"],"unit":"none","valueList":[{"value":0,"description":"No Error"},{"value":1,"description":"Low Battery Find Charge"},{"value":2,"description":"Low Bat Need Poweroff"},{"value":3,"description":"Wheel Trap"},{"value":4,"description":"Collision Error"},{"value":5,"description":"Tile Do Task"},{"value":6,"description":"Lidar Point Err"},{"value":7,"description":"Front Wall Err"},{"value":8,"description":"Along Wall Err"},{"value":9,"description":"Mid Brush Err"},{"value":10,"description":"Side Brush Err"},{"value":11,"description":"Fan Err"},{"value":12,"description":"Lidar Cover"},{"value":13,"description":"Garbage Full"},{"value":14,"description":"Garbage Out"},{"value":15,"description":"Garbage Full Out"},{"value":16,"description":"Trapped"},{"value":17,"description":"Pick Up"},{"value":20,"description":"Cannot Arrive"},{"value":21,"description":"Start From Forbid"},{"value":22,"description":"Drop"},{"value":23,"description":"Kit Water Pump"},{"value":24,"description":"Find Charge Failed"},{"value":18,"description":"Garbage Out"},{"value":25,"description":"No Mop Clean"},{"value":26,"description":"Low Battery Cant Clean"}]}');
this.addPropertyByString('vacuum:wdr-mode', '{"siid":2,"piid":11,"type":"urn:miot-spec-v2:property:wdr-mode:00000088:viomi-v18:1","description":"Wide Dynamic Range Mode","format":"uint8","access":["read","write","notify"],"unit":"none","valueList":[{"value":0,"description":"0"},{"value":1,"description":"1"},{"value":2,"description":"2"}]}');
this.addPropertyByString('vacuum:door-state', '{"siid":2,"piid":12,"type":"urn:miot-spec-v2:property:door-state:0000006B:viomi-v18:1","description":"Door State","format":"uint8","access":["read","notify"],"unit":"none","valueList":[{"value":0,"description":"0"},{"value":1,"description":"1"},{"value":2,"description":"2"},{"value":3,"description":"3"}]}');
this.addPropertyByString('vacuum:contact-state', '{"siid":2,"piid":13,"type":"urn:miot-spec-v2:property:contact-state:0000007C:viomi-v18:1","description":"Contact State","format":"uint8","access":["read","notify"],"unit":"none","valueList":[{"value":0,"description":"0"},{"value":1,"description":"1"}]}');
this.addPropertyByString('vacuum:stream-address', '{"siid":2,"piid":14,"type":"urn:miot-spec-v2:property:stream-address:0000005E:viomi-v18:1","description":"Stream URL","format":"string","access":[],"unit":"none"}');
this.addPropertyByString('vacuum:contact-state2', '{"siid":2,"piid":15,"type":"urn:miot-spec-v2:property:contact-state:0000007C:viomi-v18:1","description":"Contact State","format":"uint16","access":["read","notify"],"unit":"minutes","valueRange":[0,999,1]}');
this.addPropertyByString('vacuum:contact-state3', '{"siid":2,"piid":16,"type":"urn:miot-spec-v2:property:contact-state:0000007C:viomi-v18:1","description":"Contact State","format":"uint16","access":["read","notify"],"unit":"none","valueRange":[0,1200,1]}');
this.addPropertyByString('vacuum:mute', '{"siid":2,"piid":17,"type":"urn:miot-spec-v2:property:mute:00000040:viomi-v18:1","description":"Mute","format":"uint8","access":["read","write","notify"],"unit":"none","valueRange":[0,10,1]}');
this.addPropertyByString('vacuum:sweep-type', '{"siid":2,"piid":4,"type":"urn:miot-spec-v2:property:sweep-type:000000D3:viomi-v18:1","description":"Sweep Type","format":"uint8","access":["read","write","notify"],"unit":"none","valueList":[{"value":0,"description":"Total"},{"value":2,"description":"Wall"},{"value":3,"description":"Zone"},{"value":4,"description":"Point"},{"value":5,"description":"Control"}]}');
this.addPropertyByString('vacuum:mode', '{"siid":2,"piid":19,"type":"urn:miot-spec-v2:property:mode:00000008:viomi-v18:1","description":"Mode","format":"uint8","access":["read","write","notify"],"unit":"none","valueList":[{"value":0,"description":"Silent"},{"value":1,"description":"Basic"},{"value":2,"description":"Medium"},{"value":3,"description":"Strong"}]}');
this.addPropertyByString('battery:battery-level', '{"siid":3,"piid":1,"type":"urn:miot-spec-v2:property:battery-level:00000014:viomi-v18:1","description":"Battery Level","format":"uint8","access":["read","notify"],"unit":"percentage","valueRange":[0,100,1]}');
this.addPropertyByString('viomi-vacuum:repeat-state', '{"siid":4,"piid":1,"type":"urn:viomi-spec:property:repeat-state:00000001:viomi-v18:1","description":"","format":"uint8","access":["read","write","notify"],"unit":"none","valueList":[{"value":0,"description":"关"},{"value":1,"description":"开"}]}');
this.addPropertyByString('viomi-vacuum:remember-state', '{"siid":4,"piid":3,"type":"urn:viomi-spec:property:remember-state:00000003:viomi-v18:1","description":"","format":"uint8","access":["write","notify","read"],"unit":"none","valueList":[{"value":0,"description":"关"},{"value":1,"description":"开"}]}');
this.addPropertyByString('viomi-vacuum:mop-route', '{"siid":4,"piid":6,"type":"urn:viomi-spec:property:mop-route:00000006:viomi-v18:1","description":"","format":"uint8","access":["read","notify","write"],"unit":"none","valueList":[{"value":0,"description":"弓字形"},{"value":1,"description":"Y字形"}]}');
this.addPropertyByString('viomi-vacuum:side-brush-life', '{"siid":4,"piid":8,"type":"urn:viomi-spec:property:side-brush-life:00000008:viomi-v18:1","description":"边刷剩余寿命百分比","format":"uint8","access":["read","notify"],"unit":"percentage","valueRange":[0,100,1]}');
this.addPropertyByString('viomi-vacuum:side-brush-hours', '{"siid":4,"piid":9,"type":"urn:viomi-spec:property:side-brush-hours:00000009:viomi-v18:1","description":"边刷剩余寿命小时","format":"uint8","access":["read","notify"],"unit":"hours","valueRange":[0,180,1]}');
this.addPropertyByString('viomi-vacuum:main-brush-life', '{"siid":4,"piid":10,"type":"urn:viomi-spec:property:main-brush-life:0000000a:viomi-v18:1","description":"主刷剩余寿命百分比","format":"uint8","access":["read","notify"],"unit":"percentage","valueRange":[0,100,1]}');
this.addPropertyByString('viomi-vacuum:main-brush-hours', '{"siid":4,"piid":11,"type":"urn:viomi-spec:property:main-brush-hours:0000000b:viomi-v18:1","description":"主刷剩余寿命小时","format":"uint16","access":["read","notify"],"unit":"hours","valueRange":[0,360,1]}');
this.addPropertyByString('viomi-vacuum:hypa-life', '{"siid":4,"piid":12,"type":"urn:viomi-spec:property:hypa-life:0000000c:viomi-v18:1","description":"","format":"uint8","access":["read","notify"],"unit":"percentage","valueRange":[0,100,1]}');
this.addPropertyByString('viomi-vacuum:hypa-hours', '{"siid":4,"piid":13,"type":"urn:viomi-spec:property:hypa-hours:0000000d:viomi-v18:1","description":"","format":"uint8","access":["read","notify"],"unit":"hours","valueRange":[0,180,1]}');
this.addPropertyByString('viomi-vacuum:mop-life', '{"siid":4,"piid":14,"type":"urn:viomi-spec:property:mop-life:0000000e:viomi-v18:1","description":"拖布剩余寿命百分比","format":"uint8","access":["read","notify"],"unit":"percentage","valueRange":[0,100,1]}');
this.addPropertyByString('viomi-vacuum:mop-hours', '{"siid":4,"piid":15,"type":"urn:viomi-spec:property:mop-hours:0000000f:viomi-v18:1","description":"拖布剩余寿命小时","format":"uint8","access":["read","notify"],"unit":"hours","valueRange":[0,180,1]}');
this.addPropertyByString('viomi-vacuum:direction', '{"siid":4,"piid":16,"type":"urn:viomi-spec:property:direction:00000010:viomi-v18:1","description":"","format":"uint8","access":["write"],"unit":"none","valueList":[{"value":1,"description":"向前"},{"value":2,"description":"向左"},{"value":3,"description":"向右"},{"value":4,"description":"向后"},{"value":5,"description":"停止"}]}');
this.addPropertyByString('viomi-vacuum:suction-grade', '{"siid":4,"piid":17,"type":"urn:viomi-spec:property:suction-grade:00000011:viomi-v18:1","description":"","format":"uint8","access":["write","read","notify"],"unit":"none","valueList":[{"value":0,"description":"安静"},{"value":1,"description":"标准"},{"value":2,"description":"中档"},{"value":3,"description":"强力"}]}');
this.addPropertyByString('viomi-vacuum:water-grade', '{"siid":4,"piid":18,"type":"urn:viomi-spec:property:water-grade:00000012:viomi-v18:1","description":"出水量大小","format":"uint8","access":["read","notify","write"],"unit":"none","valueList":[{"value":0,"description":"1挡"},{"value":1,"description":"2挡"},{"value":2,"description":"3挡"}]}');
this.addPropertyByString('viomi-vacuum:map-num', '{"siid":4,"piid":23,"type":"urn:viomi-spec:property:map-num:00000015:viomi-v18:1","description":"当前储存的地图数量","format":"uint8","access":["read","notify"],"unit":"none","valueRange":[0,5,1]}');
this.addPropertyByString('viomi-vacuum:time-zone', '{"siid":4,"piid":24,"type":"urn:viomi-spec:property:time-zone:00000016:viomi-v18:1","description":"设备时区属性","format":"int32","access":["read","notify","write"],"unit":"none","valueRange":[-99999,99999,1]}');
this.addPropertyByString('viomi-vacuum:clean-start-time', '{"siid":4,"piid":25,"type":"urn:viomi-spec:property:clean-start-time:00000017:viomi-v18:1","description":"清扫开始时间,时间戳,单位秒","format":"int64","access":["read","notify"],"unit":"seconds","valueRange":[0,9999999999,1]}');
this.addPropertyByString('viomi-vacuum:clean-use-time', '{"siid":4,"piid":26,"type":"urn:viomi-spec:property:clean-use-time:00000018:viomi-v18:1","description":"清扫使用时间,单位秒","format":"uint32","access":["read","notify"],"unit":"seconds","valueRange":[0,99999,1]}');
this.addPropertyByString('viomi-vacuum:clean-area', '{"siid":4,"piid":27,"type":"urn:viomi-spec:property:clean-area:00000019:viomi-v18:1","description":"清扫总面积,单位m2","format":"uint32","access":["read","notify"],"unit":"none","valueRange":[0,9999,1]}');
this.addPropertyByString('viomi-vacuum:clean-map-url', '{"siid":4,"piid":28,"type":"urn:viomi-spec:property:clean-map-url:0000001a:viomi-v18:1","description":"清扫地图url","format":"string","access":["read","notify"],"unit":"none"}');
this.addPropertyByString('viomi-vacuum:clean-mode', '{"siid":4,"piid":29,"type":"urn:viomi-spec:property:clean-mode:0000001b:viomi-v18:1","description":"","format":"uint8","access":["read","notify"],"unit":"none","valueList":[{"value":0,"description":"全局"},{"value":1,"description":"沿边"},{"value":2,"description":"区域"},{"value":3,"description":"定点"}]}');
this.addPropertyByString('viomi-vacuum:clean-way', '{"siid":4,"piid":30,"type":"urn:viomi-spec:property:clean-way:0000001c:viomi-v18:1","description":"","format":"uint8","access":["read","notify"],"unit":"none","valueList":[{"value":0,"description":"扫地"},{"value":1,"description":"扫拖"},{"value":2,"description":"拖地"}]}');
this.addPropertyByString('viomi-vacuum:cur-lang', '{"siid":4,"piid":31,"type":"urn:viomi-spec:property:cur-lang:0000001d:viomi-v18:1","description":"设备当前语言de en ru zh ","format":"string","access":["read","notify","write"],"unit":"none"}');
this.addPropertyByString('viomi-vacuum:cur-map-id', '{"siid":4,"piid":32,"type":"urn:viomi-spec:property:cur-map-id:0000001e:viomi-v18:1","description":"当前地图id","format":"uint32","access":["read","notify"],"unit":"none","valueRange":[0,2147483647,1]}');
this.addPropertyByString('viomi-vacuum:cur-map-url', '{"siid":4,"piid":33,"type":"urn:viomi-spec:property:cur-map-url:0000001f:viomi-v18:1","description":"","format":"string","access":["read","notify","write"],"unit":"none"}');
this.addPropertyByString('viomi-vacuum:last-update-time', '{"siid":4,"piid":34,"type":"urn:viomi-spec:property:last-update-time:00000020:viomi-v18:1","description":"last-update-time","format":"int64","access":["read","notify"],"unit":"seconds","valueRange":[0,9999999999,1]}');
this.addPropertyByString('viomi-vacuum:consumable-index', '{"siid":4,"piid":35,"type":"urn:viomi-spec:property:consumable-index:00000007:viomi-v18:1","description":"consumable-index","format":"uint8","access":["write"],"unit":"none","valueList":[{"value":0,"description":"边刷"},{"value":1,"description":"主刷"},{"value":2,"description":"尘盒"},{"value":3,"description":"拖布"}]}');
this.addPropertyByString('viomi-vacuum:clean-room-mode', '{"siid":4,"piid":36,"type":"urn:viomi-spec:property:clean-room-mode:00000002:viomi-v18:1","description":"clean-room-mode","format":"uint8","access":["write"],"unit":"none","valueList":[{"value":0,"description":"全局"},{"value":1,"description":"沿边"}]}');
this.addPropertyByString('viomi-vacuum:clean-room-oper', '{"siid":4,"piid":37,"type":"urn:viomi-spec:property:clean-room-oper:00000013:viomi-v18:1","description":"clean-room-oper","format":"uint8","access":["write"],"unit":"none","valueList":[{"value":0,"description":"停止"},{"value":1,"description":"开始"},{"value":2,"description":"暂停"}]}');
this.addPropertyByString('viomi-vacuum:clean-room-ids', '{"siid":4,"piid":38,"type":"urn:viomi-spec:property:clean-room-ids:00000014:viomi-v18:1","description":"clean-room-ids","format":"string","access":["write"],"unit":"none"}');
this.addPropertyByString('viomi-vacuum:has-map', '{"siid":4,"piid":39,"type":"urn:viomi-spec:property:has-map:00000004:viomi-v18:1","description":"has-map","format":"uint8","access":["read","notify"],"unit":"none","valueList":[{"value":0,"description":"没有记忆图"},{"value":1,"description":"有记忆图"}]}');
this.addPropertyByString('viomi-vacuum:has-newmap', '{"siid":4,"piid":40,"type":"urn:viomi-spec:property:has-newmap:00000005:viomi-v18:1","description":"has-newmap","format":"uint8","access":["read","notify"],"unit":"none","valueList":[{"value":0,"description":"None"},{"value":1,"description":"New"},{"value":2,"description":"Cover"}]}');
this.addPropertyByString('viomi-vacuum:dust-collection', '{"siid":4,"piid":41,"type":"urn:viomi-spec:property:dust-collection:00000021:viomi-v18:1","description":"dust-collection","format":"uint8","access":["read","notify","write"],"unit":"none","valueList":[{"value":0,"description":"Close"},{"value":1,"description":"Open"}]}');
this.addPropertyByString('viomi-vacuum:custom-room-clean', '{"siid":4,"piid":42,"type":"urn:viomi-spec:property:custom-room-clean:00000022:viomi-v18:2","description":"custom-room-clean","format":"string","access":["read","notify","write"]}');
this.addPropertyByString('viomi-vacuum:cleantimes', '{"siid":4,"piid":43,"type":"urn:viomi-spec:property:cleantimes:00000023:viomi-v18:2","description":"cleantimes","format":"uint8","access":["write"],"valueRange":[1,10,1]}');
this.addPropertyByString('viomi-vacuum:swept-area-type', '{"siid":4,"piid":44,"type":"urn:viomi-spec:property:swept-area-type:00000024:viomi-v18:2","description":"swept-area-type","format":"uint8","access":["read","notify","write"],"valueList":[{"value":0,"description":"RoomClean"},{"value":1,"description":"AllClean"},{"value":2,"description":"PartClean"}]}');
this.addPropertyByString('order:order-id', '{"siid":5,"piid":1,"type":"urn:viomi-spec:property:order-id:00000001:viomi-v18:1","description":"预约id","format":"uint8","access":["write"],"unit":"none","valueRange":[0,100,1]}');
this.addPropertyByString('order:enable', '{"siid":5,"piid":2,"type":"urn:viomi-spec:property:enable:00000002:viomi-v18:1","description":"是否开启该条预约","format":"uint8","access":["write"],"unit":"none","valueList":[{"value":0,"description":""},{"value":1,"description":""}]}');
this.addPropertyByString('order:day', '{"siid":5,"piid":3,"type":"urn:viomi-spec:property:day:00000003:viomi-v18:1","description":"转换成二进制后,每一位代表一天,1 - 预约 0 - 无预约,bit0-bit6 星期日-星期六","format":"uint16","access":["write"],"unit":"none","valueRange":[0,256,1]}');
this.addPropertyByString('order:hour', '{"siid":5,"piid":4,"type":"urn:viomi-spec:property:hour:00000004:viomi-v18:1","description":"预约小时(24小时制)","format":"uint8","access":["write"],"unit":"none","valueRange":[0,23,1]}');
this.addPropertyByString('order:minute', '{"siid":5,"piid":5,"type":"urn:viomi-spec:property:minute:00000005:viomi-v18:1","description":"预约分钟","format":"uint8","access":["write"],"unit":"none","valueRange":[0,59,1]}');
this.addPropertyByString('order:repeat', '{"siid":5,"piid":6,"type":"urn:viomi-spec:property:repeat:00000006:viomi-v18:1","description":"是否重复","format":"uint8","access":["write"],"unit":"none","valueList":[{"value":0,"description":""},{"value":1,"description":""}]}');
this.addPropertyByString('order:clean-way', '{"siid":5,"piid":8,"type":"urn:viomi-spec:property:clean-way:00000008:viomi-v18:1","description":"","format":"uint8","access":["write"],"unit":"none","valueList":[{"value":0,"description":"扫地"},{"value":1,"description":"扫拖"},{"value":2,"description":"拖地"}]}');
this.addPropertyByString('order:suction', '{"siid":5,"piid":9,"type":"urn:viomi-spec:property:suction:00000007:viomi-v18:1","description":"预约吸力大小","format":"uint8","access":["write"],"unit":"none","valueList":[{"value":0,"description":""},{"value":1,"description":""},{"value":2,"description":""},{"value":3,"description":""}]}');
this.addPropertyByString('order:water', '{"siid":5,"piid":10,"type":"urn:viomi-spec:property:water:00000009:viomi-v18:1","description":"预约出水量大小","format":"uint8","access":["write"],"unit":"none","valueList":[{"value":0,"description":""},{"value":1,"description":""},{"value":2,"description":""}]}');
this.addPropertyByString('order:twice-clean', '{"siid":5,"piid":11,"type":"urn:viomi-spec:property:twice-clean:0000000a:viomi-v18:1","description":"是否二次清扫","format":"uint8","access":["write"],"unit":"none","valueList":[{"value":0,"description":""},{"value":1,"description":""}]}');
this.addPropertyByString('order:mapid', '{"siid":5,"piid":12,"type":"urn:viomi-spec:property:mapid:0000000b:viomi-v18:1","description":"预约的地图id,若没地图则传0","format":"uint32","access":["write"],"unit":"none","valueRange":[0,99999999,1]}');
this.addPropertyByString('order:room-count', '{"siid":5,"piid":13,"type":"urn:viomi-spec:property:room-count:0000000c:viomi-v18:1","description":"预约的房间数量","format":"uint8","access":["write"],"unit":"none","valueRange":[0,64,1]}');
this.addPropertyByString('order:room-data', '{"siid":5,"piid":14,"type":"urn:viomi-spec:property:room-data:0000000d:viomi-v18:1","description":"预约的房间数据JSON字符串[{name:\'房间1\',id:10},{name:\'房间2‘,id:11},{...},{...}...]","format":"string","access":["write"],"unit":"none"}');
this.addPropertyByString('order:dnd-enable', '{"siid":5,"piid":15,"type":"urn:viomi-spec:property:dnd-enable:0000000e:viomi-v18:1","description":" 勿扰是否打开","format":"uint8","access":["read","notify","write"],"unit":"none","valueList":[{"value":0,"description":""},{"value":1,"description":""}]}');
this.addPropertyByString('order:dnd-start-hour', '{"siid":5,"piid":16,"type":"urn:viomi-spec:property:dnd-start-hour:0000000f:viomi-v18:1","description":"勿扰开始小时","format":"uint8","access":["write","read","notify"],"unit":"hours","valueRange":[0,23,1]}');
this.addPropertyByString('order:dnd-start-minute', '{"siid":5,"piid":17,"type":"urn:viomi-spec:property:dnd-start-minute:00000010:viomi-v18:1","description":"勿扰开始分钟","format":"uint8","access":["read","notify","write"],"unit":"minutes","valueRange":[0,59,1]}');
this.addPropertyByString('order:dnd-end-hour', '{"siid":5,"piid":18,"type":"urn:viomi-spec:property:dnd-end-hour:00000011:viomi-v18:1","description":"勿扰结束小时","format":"uint8","access":["read","notify","write"],"unit":"hours","valueRange":[0,23,1]}');
this.addPropertyByString('order:dnd-end-minute', '{"siid":5,"piid":19,"type":"urn:viomi-spec:property:dnd-end-minute:00000012:viomi-v18:1","description":"勿扰结束分钟","format":"uint8","access":["read","notify","write"],"unit":"minutes","valueRange":[0,59,1]}');
this.addPropertyByString('order:dnd-timezone', '{"siid":5,"piid":20,"type":"urn:viomi-spec:property:dnd-timezone:00000013:viomi-v18:1","description":"时区参数","format":"int32","access":["read","notify","write"],"unit":"none","valueRange":[-99999,99999,1]}');
this.addPropertyByString('order:timestamp', '{"siid":5,"piid":21,"type":"urn:viomi-spec:property:timestamp:00000014:viomi-v18:1","description":"timestamp","format":"int64","access":["notify","write","read"],"unit":"none","valueRange":[-999999,999999,1]}');
this.addPropertyByString('order:orderdata', '{"siid":5,"piid":22,"type":"urn:viomi-spec:property:orderdata:00000015:viomi-v18:1","description":"N组预约数据逗号分割,每组数据内的具体数据用下划线_分割 {order_id}_{order_enable}_{week}_{hour}_{minute}_{repeat}_{mode}_{suction}_{water}_{twice}_{mapid}_{room_size}_{roomid}_{roomname}","format":"string","access":["read","notify"],"unit":"none"}');
this.addPropertyByString('point-zone:target-point', '{"siid":6,"piid":1,"type":"urn:viomi-spec:property:target-point:00000001:viomi-v18:1","description":"指哪扫那目标点,XY逗号分割,如’3.23,6.89‘","format":"string","access":["write","read","notify"],"unit":"none"}');
this.addPropertyByString('point-zone:zone-points', '{"siid":6,"piid":2,"type":"urn:viomi-spec:property:zone-points:00000002:viomi-v18:1","description":"划区的四个顶点坐标 \'x1,y1,x2,y2,x3,y3,x4,y4\'","format":"string","access":["write"],"unit":"none"}');
this.addPropertyByString('point-zone:restrict-points', '{"siid":6,"piid":3,"type":"urn:viomi-spec:property:restrict-points:00000003:viomi-v18:1","description":"restrict-points","format":"string","access":["write"],"unit":"none"}');
this.addPropertyByString('point-zone:multiple-zone-points', '{"siid":6,"piid":4,"type":"urn:viomi-spec:property:multiple-zone-points:00000004:viomi-v18:2","description":"multiple-zone-points","format":"string","access":["write"]}');
this.addPropertyByString('map:map-type', '{"siid":7,"piid":1,"type":"urn:viomi-spec:property:map-type:00000001:viomi-v18:1","description":"","format":"uint8","access":["read","notify","write"],"unit":"none","valueList":[{"value":0,"description":"上传到url0"},{"value":1,"description":"上传到url1"},{"value":2,"description":"上传到url2"}]}');
this.addPropertyByString('map:map-id', '{"siid":7,"piid":2,"type":"urn:viomi-spec:property:map-id:00000002:viomi-v18:1","description":"地图id","format":"int64","access":["read","notify","write"],"unit":"none","valueRange":[0,9999999999,1]}');
this.addPropertyByString('map:map-name', '{"siid":7,"piid":4,"type":"urn:viomi-spec:property:map-name:00000004:viomi-v18:1","description":"地图名字","format":"string","access":["read","notify","write"],"unit":"none"}');
this.addPropertyByString('map:lang', '{"siid":7,"piid":5,"type":"urn:viomi-spec:property:lang:00000005:viomi-v18:1","description":"语言参数","format":"string","access":["write"],"unit":"none"}');
this.addPropertyByString('map:arrange-room-ids', '{"siid":7,"piid":6,"type":"urn:viomi-spec:property:arrange-room-ids:00000006:viomi-v18:1","description":"要合并的房间id参数,逗号分割,如:‘10,11,12’表示合并房间id为10,11,12的房间;","format":"string","access":["write"],"unit":"none"}');
this.addPropertyByString('map:target-room-id', '{"siid":7,"piid":7,"type":"urn:viomi-spec:property:target-room-id:00000007:viomi-v18:1","description":"目标房间id","format":"uint8","access":["write"],"unit":"none","valueRange":[0,128,1]}');
this.addPropertyByString('map:split-points', '{"siid":7,"piid":8,"type":"urn:viomi-spec:property:split-points:00000008:viomi-v18:1","description":"分割线段的两个端点坐标,如:\'3.45,6.78|4.56,-3.45\'","format":"string","access":["write"],"unit":"none"}');
this.addPropertyByString('map:room-name', '{"siid":7,"piid":9,"type":"urn:viomi-spec:property:room-name:00000009:viomi-v18:1","description":"房间名称","format":"string","access":["write"],"unit":"none"}');
this.addPropertyByString('map:cur-cleaning-path', '{"siid":7,"piid":10,"type":"urn:viomi-spec:property:cur-cleaning-path:0000000a:viomi-v18:1","description":"","format":"string","access":["read","notify"],"unit":"none"}');
this.addPropertyByString('map:map-list', '{"siid":7,"piid":11,"type":"urn:viomi-spec:property:map-list:0000000b:viomi-v18:1","description":"地图列表数据[{name : \'地图1\',id:1585849584,cur : true},{name : \'地图2\',id : 1585849784,cur : false}]","format":"string","access":["read","notify"],"unit":"none"}');
this.addPropertyByString('map:last-point-index', '{"siid":7,"piid":12,"type":"urn:viomi-spec:property:last-point-index:0000000c:viomi-v18:1","description":"","format":"int32","access":[],"unit":"none","valueRange":[0,2147483647,1]}');
this.addPropertyByString('map:oper-result', '{"siid":7,"piid":13,"type":"urn:viomi-spec:property:oper-result:0000000d:viomi-v18:1","description":"","format":"string","access":["read","notify"],"unit":"none"}');
this.addPropertyByString('map:auto-area-id', '{"siid":7,"piid":14,"type":"urn:viomi-spec:property:auto-area-id:0000000e:viomi-v18:1","description":"auto-area-id","format":"int64","access":["read","notify"],"unit":"none","valueRange":[0,9999999999,1]}');
this.addPropertyByString('map:map-download-url', '{"siid":7,"piid":15,"type":"urn:viomi-spec:property:map-download-url:0000000f:viomi-v18:1","description":"map-download-url","format":"string","access":[],"unit":"none"}');
this.addPropertyByString('map:new-map-oper', '{"siid":7,"piid":16,"type":"urn:viomi-spec:property:new-map-oper:00000003:viomi-v18:1","description":"new-map-oper","format":"uint8","access":[],"unit":"none","valueRange":[0,2,1]}');
this.addPropertyByString('voice:target-voice', '{"siid":8,"piid":3,"type":"urn:viomi-spec:property:target-voice:00000003:viomi-v18:1","description":"target-voice","format":"string","access":["notify","write","read"],"unit":"none"}');
this.addPropertyByString('voice:cur-voice', '{"siid":8,"piid":4,"type":"urn:viomi-spec:property:cur-voice:00000004:viomi-v18:1","description":"cur-voice","format":"string","access":["read","notify"],"unit":"none"}');
this.addPropertyByString('voice:download-status', '{"siid":8,"piid":5,"type":"urn:viomi-spec:property:download-status:00000005:viomi-v18:1","description":"download-status","format":"uint8","access":["read","notify"],"unit":"none","valueList":[{"value":0,"description":"Free"},{"value":1,"description":"Downloading"}]}');
this.addPropertyByString('voice:download-progress', '{"siid":8,"piid":6,"type":"urn:viomi-spec:property:download-progress:00000006:viomi-v18:1","description":"","format":"uint8","access":["read","notify"],"unit":"none","valueRange":[0,100,1]}');
this.addPropertyByString('voice:voice-url', '{"siid":8,"piid":7,"type":"urn:viomi-spec:property:voice-url:00000007:viomi-v18:1","description":"voice-url","format":"string","access":["write"],"unit":"none"}');
this.addPropertyByString('voice:voice-mdfive', '{"siid":8,"piid":8,"type":"urn:viomi-spec:property:voice-mdfive:00000008:viomi-v18:1","description":"voice-mdfive","format":"string","access":["write"],"unit":"none"}');
}
initDeviceActions() {
this.addActionByString('vacuum:start-sweep', '{"siid":2,"aiid":1,"type":"urn:miot-spec-v2:action:start-sweep:00002804:viomi-v18:1","description":"Start Sweep","in":[],"out":[]}');
this.addActionByString('vacuum:stop-sweeping', '{"siid":2,"aiid":2,"type":"urn:miot-spec-v2:action:stop-sweeping:00002805:viomi-v18:1","description":"Stop Sweeping","in":[],"out":[]}');
this.addActionByString('vacuum:pause', '{"siid":2,"aiid":3,"type":"urn:miot-spec-v2:action:pause:0000280C:viomi-v18:1","description":"Pause","in":[],"out":[]}');
this.addActionByString('vacuum:start-charge', '{"siid":2,"aiid":4,"type":"urn:miot-spec-v2:action:start-charge:00002802:viomi-v18:1","description":"Start Charge","in":[],"out":[]}');
this.addActionByString('vacuum:stop-massage', '{"siid":2,"aiid":5,"type":"urn:miot-spec-v2:action:stop-massage:0000281F:viomi-v18:1","description":"Stop Massage","in":[],"out":[]}');
this.addActionByString('vacuum:start-mop', '{"siid":2,"aiid":6,"type":"urn:miot-spec-v2:action:start-mop:00002834:viomi-v18:1","description":"Start Mop","in":[],"out":[]}');
this.addActionByString('vacuum:start-only-sweep', '{"siid":2,"aiid":7,"type":"urn:miot-spec-v2:action:start-only-sweep:0000283A:viomi-v18:1","description":"Start Only Sweep","in":[],"out":[]}');
this.addActionByString('vacuum:start-sweep-mop', '{"siid":2,"aiid":8,"type":"urn:miot-spec-v2:action:start-sweep-mop:00002835:viomi-v18:1","description":"Start Sweep Mop","in":[],"out":[]}');
this.addActionByString('viomi-vacuum:reset-map', '{"siid":4,"aiid":7,"type":"urn:viomi-spec:action:reset-map:00002807:viomi-v18:1","description":"重置地图","in":[],"out":[]}');
this.addActionByString('viomi-vacuum:set-calibration', '{"siid":4,"aiid":10,"type":"urn:viomi-spec:action:set-calibration:0000280a:viomi-v18:1","description":"标定","in":[],"out":[]}');
this.addActionByString('viomi-vacuum:reset-consumable', '{"siid":4,"aiid":11,"type":"urn:viomi-spec:action:reset-consumable:0000280b:viomi-v18:1","description":"重置指定耗材的使用时间","in":[35],"out":[]}');
this.addActionByString('viomi-vacuum:set-room-clean', '{"siid":4,"aiid":13,"type":"urn:viomi-spec:action:set-room-clean:00002804:viomi-v18:1","description":"选房间清扫","in":[36,37,38],"out":[]}');
this.addActionByString('viomi-vacuum:set-custom-clean', '{"siid":4,"aiid":14,"type":"urn:viomi-spec:action:set-custom-clean:00002801:viomi-v18:2","description":"set-custom-clean","in":[],"out":[]}');
this.addActionByString('order:del', '{"siid":5,"aiid":2,"type":"urn:viomi-spec:action:del:00002802:viomi-v18:1","description":"删除一组预约","in":[1],"out":[]}');
this.addActionByString('order:get', '{"siid":5,"aiid":3,"type":"urn:viomi-spec:action:get:00002801:viomi-v18:1","description":"获取预约数据","in":[],"out":[22]}');
this.addActionByString('point-zone:start-point-clean', '{"siid":6,"aiid":1,"type":"urn:viomi-spec:action:start-point-clean:00002801:viomi-v18:1","description":"开始指哪扫那清扫","in":[],"out":[]}');
this.addActionByString('point-zone:pause-point-clean', '{"siid":6,"aiid":2,"type":"urn:viomi-spec:action:pause-point-clean:00002802:viomi-v18:1","description":"暂停指哪扫那清扫","in":[],"out":[]}');
this.addActionByString('point-zone:start-zone-clean', '{"siid":6,"aiid":5,"type":"urn:viomi-spec:action:start-zone-clean:00002805:viomi-v18:1","description":"开始区域清扫","in":[],"out":[]}');
this.addActionByString('point-zone:pause-zone-clean', '{"siid":6,"aiid":6,"type":"urn:viomi-spec:action:pause-zone-clean:00002806:viomi-v18:1","description":"暂停区域清扫","in":[],"out":[]}');
this.addActionByString('map:upload-by-maptype', '{"siid":7,"aiid":1,"type":"urn:viomi-spec:action:upload-by-maptype:00002801:viomi-v18:1","description":"上传指定类型的地图","in":[],"out":[]}');
this.addActionByString('map:upload-by-mapid', '{"siid":7,"aiid":2,"type":"urn:viomi-spec:action:upload-by-mapid:00002802:viomi-v18:1","description":"上传指定id的地图","in":[],"out":[]}');
this.addActionByString('map:set-cur-map', '{"siid":7,"aiid":3,"type":"urn:viomi-spec:action:set-cur-map:00002803:viomi-v18:1","description":"设置当前地图","in":[2,15],"out":[]}');
this.addActionByString('map:del-map', '{"siid":7,"aiid":5,"type":"urn:viomi-spec:action:del-map:00002805:viomi-v18:1","description":"del-map","in":[2],"out":[]}');
this.addActionByString('map:rename-map', '{"siid":7,"aiid":7,"type":"urn:viomi-spec:action:rename-map:00002807:viomi-v18:1","description":"重命名地图","in":[2,4],"out":[]}');
this.addActionByString('map:arrange-room', '{"siid":7,"aiid":8,"type":"urn:viomi-spec:action:arrange-room:00002808:viomi-v18:1","description":"合并房间","in":[2,5,6,14],"out":[13]}');
this.addActionByString('map:split-room', '{"siid":7,"aiid":9,"type":"urn:viomi-spec:action:split-room:00002809:viomi-v18:1","description":"分割房间","in":[2,5,7,8,14],"out":[]}');
this.addActionByString('map:rename-room', '{"siid":7,"aiid":10,"type":"urn:viomi-spec:action:rename-room:0000280a:viomi-v18:1","description":"房间重命名","in":[2,7,9,14],"out":[]}');
this.addActionByString('map:get-map-list', '{"siid":7,"aiid":11,"type":"urn:viomi-spec:action:get-map-list:00002806:viomi-v18:1","description":"获取地图列表数据","in":[],"out":[11]}');
this.addActionByString('map:get-cleaning-path', '{"siid":7,"aiid":12,"type":"urn:viomi-spec:action:get-cleaning-path:0000280b:viomi-v18:1","description":"get-cleaning-path","in":[12],"out":[10]}');
this.addActionByString('map:set-new-map', '{"siid":7,"aiid":13,"type":"urn:viomi-spec:action:set-new-map:0000280c:viomi-v18:1","description":"set-new-map","in":[],"out":[]}');
this.addActionByString('map:deal-new-map', '{"siid":7,"aiid":14,"type":"urn:viomi-spec:action:deal-new-map:00002804:viomi-v18:1","description":"deal-new-map","in":[16],"out":[]}');
this.addActionByString('voice:find-device', '{"siid":8,"aiid":2,"type":"urn:viomi-spec:action:find-device:00002802:viomi-v18:1","description":"寻找扫地机","in":[],"out":[]}');
this.addActionByString('voice:download-voice', '{"siid":8,"aiid":3,"type":"urn:viomi-spec:action:download-voice:00002801:viomi-v18:1","description":"download-voice","in":[3,7,8],"out":[]}');
this.addActionByString('voice:get-downloadstatus', '{"siid":8,"aiid":4,"type":"urn:viomi-spec:action:get-downloadstatus:00002803:viomi-v18:1","description":"get-downloadstatus","in":[],"out":[6,3,4,5]}');
}
initDeviceEvents() {
this.addEventByString('vacuum:exception-occurred', '{"siid":2,"eiid":2,"type":"urn:miot-spec-v2:event:exception-occurred:00005011:viomi-v18:1","description":"Exception Occurred","arguments":[2]}');
this.addEventByString('viomi-vacuum:mop-remind', '{"siid":4,"eiid":1,"type":"urn:viomi-spec:event:mop-remind:00005001:viomi-v18:1","description":"拖布取下提示。当设备开始充电时,拖布未取下触发","arguments":[]}');
this.addEventByString('viomi-vacuum:wait-remind', '{"siid":4,"eiid":2,"type":"urn:viomi-spec:event:wait-remind:00005002:viomi-v18:1","description":"待机时间超过6小时,推送并自动关机","arguments":[]}');
this.addEventByString('viomi-vacuum:low-remind', '{"siid":4,"eiid":3,"type":"urn:viomi-spec:event:low-remind:00005003:viomi-v18:1","description":"low-remind","arguments":[]}');
this.addEventByString('viomi-vacuum:clean-end', '{"siid":4,"eiid":4,"type":"urn:viomi-spec:event:clean-end:00005004:viomi-v18:1","description":"clean-end","arguments":[25,26,27,28,29,30]}');
}
/*----------========== VALUES OVERRIDES ==========----------*/
statusSweepingValue() {
return 5;
}
statusIdleValue() {
return 1;
}
statusPausedValue() {
return 2;
}
statusGoChargingValue() {
return 3;
}
statusChargingValue() {
return 4;
}
statusMoppingValue() {
return 7;
}
statusSleepValue() {
return 0;
}
statusSweepingAndMoppingValue() {
return 6;
}
/*----------========== PROPERTY OVERRIDES ==========----------*/
mainBrushLeftTimeProp() {
return this.getProperty('viomi-vacuum:main-brush-hours');
}
mainBrushLifeLevelProp() {
return this.getProperty('viomi-vacuum:main-brush-life');
}
sideBrushLeftTimeProp() {
return this.getProperty('viomi-vacuum:side-brush-hours');
}
sideBrushLifeLevelProp() {
return this.getProperty('viomi-vacuum:side-brush-life');
}
filterLeftTimeProp() {
return this.getProperty('viomi-vacuum:hypa-hours');
}
filterLifeLevelProp() {
return this.getProperty('viomi-vacuum:hypa-life');
}
cleanTimeProp() {
return this.getProperty('viomi-vacuum:clean-use-time');
}
cleanAreaProp() {
return this.getProperty('viomi-vacuum:clean-area');
}
/*----------========== ACTION OVERRIDES ==========----------*/
startChargeAction() {
return this.getAction('vacuum:start-charge');
}
/*----------========== OVERRIDES ==========----------*/
}
module.exports = ViomiVacuumV18;