text: 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 ViomiVacuumV19 extends RobotCleanerDevice {
    constructor(miotDevice, name, logger) {
      super(miotDevice, name, logger);
    }
  
  
    /*----------========== DEVICE INFO ==========----------*/
  
    getDeviceName() {
      return 'Viomi Robot Vacuum SE';
    }
  
    getMiotSpecUrl() {
      return 'https://miot-spec.org/miot-spec-v2/instance?type=urn:miot-spec-v2:device:vacuum:0000A006:viomi-v19: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-v19:1","description":"Robot Cleaner"}');
      this.createServiceByString('{"siid":3,"type":"urn:miot-spec-v2:service:battery:00007805:viomi-v19:1","description":"Battery"}');
      this.createServiceByString('{"siid":4,"type":"urn:viomi-spec:service:viomi-vacuum:00007801:viomi-v19:1","description":"扫地机"}');
      this.createServiceByString('{"siid":5,"type":"urn:viomi-spec:service:order:00007802:viomi-v19:1","description":"预约、勿扰相关"}');
      this.createServiceByString('{"siid":6,"type":"urn:viomi-spec:service:point-zone:00007803:viomi-v19:1","description":"指哪扫那 划区 虚拟墙"}');
      this.createServiceByString('{"siid":7,"type":"urn:viomi-spec:service:map:00007804:viomi-v19:1","description":"地图相关"}');
      this.createServiceByString('{"siid":8,"type":"urn:viomi-spec:service:voice:00007805:viomi-v19:1","description":"声音相关"}');
    }
  
    initDeviceProperties() {
      this.addPropertyByString('vacuum:status', '{"siid":2,"piid":1,"type":"urn:miot-spec-v2:property:status:00000007:viomi-v19: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-v19:1","description":"Device Fault","format":"uint32","access":["read","notify"],"unit":"none","valueRange":[0,3000,1]}');
      this.addPropertyByString('vacuum:wdr-mode', '{"siid":2,"piid":11,"type":"urn:miot-spec-v2:property:wdr-mode:00000088:viomi-v19: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-v19: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-v19: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-v19: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-v19:1","description":"Contact State","format":"uint8","access":["read","notify"],"unit":"minutes","valueRange":[0,120,1]}');
      this.addPropertyByString('vacuum:contact-state3', '{"siid":2,"piid":16,"type":"urn:miot-spec-v2:property:contact-state:0000007C:viomi-v19: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-v19: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-v19:1","description":"Sweep Type","format":"uint8","access":["read","write","notify"],"unit":"none","valueList":[{"value":0,"description":"Global"},{"value":1,"description":"Mop"},{"value":2,"description":"Edge"},{"value":3,"description":"Area"},{"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-v19: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-v19: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-v19: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-v19:1","description":"记忆地图开关","format":"uint8","access":["write","notify","read"],"unit":"none","valueList":[{"value":0,"description":""},{"value":1,"description":""}]}');
      this.addPropertyByString('viomi-vacuum:has-map', '{"siid":4,"piid":4,"type":"urn:viomi-spec:property:has-map:00000004:viomi-v19:1","description":"是否有记忆地图","format":"uint8","access":["read","notify","write"],"unit":"none","valueList":[{"value":0,"description":""},{"value":1,"description":""}]}');
      this.addPropertyByString('viomi-vacuum:has-newmap', '{"siid":4,"piid":5,"type":"urn:viomi-spec:property:has-newmap:00000005:viomi-v19:1","description":"清扫完成后，机器是否识别到新的地图，若是app弹框提示用户是否覆盖记忆地图","format":"uint8","access":["read","notify","write"],"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-v19:1","description":"拖地/扫拖路线","format":"uint8","access":["read","notify","write"],"unit":"none","valueList":[{"value":0,"description":""},{"value":1,"description":""}]}');
      this.addPropertyByString('viomi-vacuum:side-brush-life', '{"siid":4,"piid":8,"type":"urn:viomi-spec:property:side-brush-life:00000008:viomi-v19: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-v19: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-v19: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-v19: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-v19: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-v19: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-v19: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-v19: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-v19:1","description":"遥控器方法参数","format":"uint8","access":["write"],"unit":"none","valueList":[{"value":1,"description":""},{"value":2,"description":""},{"value":3,"description":""},{"value":4,"description":""},{"value":5,"description":""},{"value":10,"description":""}]}');
      this.addPropertyByString('viomi-vacuum:suction-grade', '{"siid":4,"piid":17,"type":"urn:viomi-spec:property:suction-grade:00000011:viomi-v19: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-v19: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:consumable-index', '{"siid":4,"piid":19,"type":"urn:viomi-spec:property:consumable-index:00000007:viomi-v19: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:clean-room-ids', '{"siid":4,"piid":20,"type":"urn:viomi-spec:property:clean-room-ids:00000002:viomi-v19:1","description":"选房间清扫时，传的房间id字符串参数，逗号分割，如：‘10,11,12,13’，若传空则是全局清扫","format":"string","access":["write","read","notify"],"unit":"none"}');
      this.addPropertyByString('viomi-vacuum:clean-room-mode', '{"siid":4,"piid":21,"type":"urn:viomi-spec:property:clean-room-mode:00000013:viomi-v19:1","description":"选房间清扫模式","format":"uint8","access":["read","notify","write"],"unit":"none","valueList":[{"value":0,"description":""},{"value":1,"description":""}]}');
      this.addPropertyByString('viomi-vacuum:clean-room-oper', '{"siid":4,"piid":22,"type":"urn:viomi-spec:property:clean-room-oper:00000014:viomi-v19:1","description":"选房间清扫操作","format":"uint8","access":["read","notify","write"],"unit":"none","valueList":[{"value":0,"description":""},{"value":1,"description":""},{"value":2,"description":""},{"value":3,"description":""}]}');
      this.addPropertyByString('viomi-vacuum:map-num', '{"siid":4,"piid":23,"type":"urn:viomi-spec:property:map-num:00000015:viomi-v19: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-v19: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-v19: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-v19: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-v19: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-v19: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-v19:1","description":"清扫模式","format":"uint8","access":["read","notify"],"unit":"none","valueList":[{"value":0,"description":"全局"},{"value":1,"description":"拖地"},{"value":2,"description":"沿边"},{"value":3,"description":"区域"},{"value":4,"description":"定点"}]}');
      this.addPropertyByString('viomi-vacuum:clean-way', '{"siid":4,"piid":30,"type":"urn:viomi-spec:property:clean-way:0000001c:viomi-v19: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-v19: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-v19:1","description":"当前地图id","format":"uint32","access":["read","notify"],"unit":"none","valueRange":[0,2147483647,1]}');
      this.addPropertyByString('order:order-id', '{"siid":5,"piid":1,"type":"urn:viomi-spec:property:order-id:00000001:viomi-v19: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-v19: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-v19: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-v19: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-v19: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-v19: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-v19: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-v19: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-v19: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-v19: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-v19: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-v19: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-v19: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-v19: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-v19: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-v19: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-v19: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-v19: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-v19: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-v19:1","description":"timestamp","format":"int64","access":["notify","write","read"],"unit":"none","valueRange":[0,2147483647,1]}');
      this.addPropertyByString('order:orderdata', '{"siid":5,"piid":22,"type":"urn:viomi-spec:property:orderdata:00000015:viomi-v19: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-v19: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-v19: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-v19:1","description":"虚拟墙JSON数据如[2,\'2_2_-6.34_-3.6_-8.6_-10.23\',\'3_3_2.33_1.33_4.23_3.44_2.44_6.77_1.22_3.44\']，就是设置了2组虚拟墙坐标第1组id是2,类型值是2表示线段，两端坐标为(-6.34,-3.6)和(-8.6,-10.23)第2组id是3,类型值是3表示四边形，4个点按顺序依次相连并闭合，坐标为(2.33,1.33)(4.23,3.44)(2.44,6.77)(1.22,3.44)","format":"string","access":["write"],"unit":"none"}');
      this.addPropertyByString('point-zone:pause-type', '{"siid":6,"piid":4,"type":"urn:viomi-spec:property:pause-type:00000004:viomi-v19:1","description":"暂停类型","format":"uint8","access":["write"],"unit":"none","valueList":[{"value":0,"description":""},{"value":1,"description":""}]}');
      this.addPropertyByString('map:map-type', '{"siid":7,"piid":1,"type":"urn:viomi-spec:property:map-type:00000001:viomi-v19:1","description":"上传的地图类型","format":"uint8","access":["read","notify","write"],"unit":"none","valueList":[{"value":0,"description":""},{"value":1,"description":""},{"value":2,"description":""}]}');
      this.addPropertyByString('map:map-id', '{"siid":7,"piid":2,"type":"urn:viomi-spec:property:map-id:00000002:viomi-v19:1","description":"map-id","format":"int64","access":["read","notify","write"],"unit":"none","valueRange":[0,2147483647,1]}');
      this.addPropertyByString('map:new-map-oper', '{"siid":7,"piid":3,"type":"urn:viomi-spec:property:new-map-oper:00000003:viomi-v19:1","description":"识别到新地图时的操作参数","format":"uint8","access":["write"],"unit":"none","valueList":[{"value":0,"description":""},{"value":1,"description":""},{"value":2,"description":""}]}');
      this.addPropertyByString('map:map-name', '{"siid":7,"piid":4,"type":"urn:viomi-spec:property:map-name:00000004:viomi-v19: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-v19: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-v19: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-v19: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-v19: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-v19: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-v19:1","description":"机器人当前清扫轨迹坐标 : [3.456,4.555,0.2,1,5.456,4.555,0.233,0,......]","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-v19:1","description":"地图列表数据[{name : \'地图1\',id:1585849584,cur : true},{name : \'地图2\',id : 1585849784,cur : false}]","format":"string","access":["read","notify"],"unit":"none"}');
      this.addPropertyByString('voice:target-voice', '{"siid":8,"piid":3,"type":"urn:viomi-spec:property:target-voice:00000003:viomi-v19:1","description":"当前下载的语音包名字","format":"string","access":["read","notify","write"],"unit":"none"}');
      this.addPropertyByString('voice:cur-voice', '{"siid":8,"piid":4,"type":"urn:viomi-spec:property:cur-voice:00000004:viomi-v19:1","description":"当前在用的语音包名字","format":"string","access":["read","notify","write"],"unit":"none"}');
      this.addPropertyByString('voice:download-status', '{"siid":8,"piid":5,"type":"urn:viomi-spec:property:download-status:00000005:viomi-v19:1","description":"下载状态","format":"uint8","access":["read","notify","write"],"unit":"none","valueList":[{"value":0,"description":""},{"value":1,"description":""},{"value":2,"description":""},{"value":12,"description":""},{"value":13,"description":""},{"value":14,"description":""},{"value":15,"description":""},{"value":16,"description":""},{"value":17,"description":""},{"value":18,"description":""},{"value":19,"description":""},{"value":20,"description":""},{"value":21,"description":""},{"value":22,"description":""}]}');
      this.addPropertyByString('voice:download-progress', '{"siid":8,"piid":6,"type":"urn:viomi-spec:property:download-progress:00000002:viomi-v19:1","description":"下载进度","format":"uint8","access":["read","notify","write"],"unit":"percentage","valueRange":[0,100,1]}');
      this.addPropertyByString('voice:voice-url', '{"siid":8,"piid":7,"type":"urn:viomi-spec:property:voice-url:00000006:viomi-v19:1","description":"要下载的语音包链接","format":"string","access":["write"],"unit":"none"}');
      this.addPropertyByString('voice:voice-mdfive', '{"siid":8,"piid":8,"type":"urn:viomi-spec:property:voice-mdfive:00000007:viomi-v19:1","description":"要下载的语音包的md5编码","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-v19: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-v19:1","description":"Stop Sweeping","in":[],"out":[]}');
      this.addActionByString('vacuum:pause', '{"siid":2,"aiid":3,"type":"urn:miot-spec-v2:action:pause:0000280C:viomi-v19:1","description":"Pause","in":[],"out":[]}');
      this.addActionByString('vacuum:start-charge', '{"siid":2,"aiid":4,"type":"urn:miot-spec-v2:action:start-charge:00002802:viomi-v19: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-v19: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-v19: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-v19: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-v19: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-v19:1","description":"重置地图","in":[],"out":[]}');
      this.addActionByString('viomi-vacuum:set-calibration', '{"siid":4,"aiid":10,"type":"urn:viomi-spec:action:set-calibration:0000280a:viomi-v19:1","description":"标定","in":[],"out":[]}');
      this.addActionByString('viomi-vacuum:reset-consumable', '{"siid":4,"aiid":11,"type":"urn:viomi-spec:action:reset-consumable:0000280b:viomi-v19:1","description":"重置指定耗材的使用时间","in":[19],"out":[]}');
      this.addActionByString('viomi-vacuum:set-room-clean', '{"siid":4,"aiid":13,"type":"urn:viomi-spec:action:set-room-clean:00002804:viomi-v19:1","description":"选房间清扫","in":[21,22,20],"out":[]}');
      this.addActionByString('viomi-vacuum:create-new-map', '{"siid":4,"aiid":14,"type":"urn:viomi-spec:action:create-new-map:00002801:viomi-v19:1","description":"create-new-map","in":[],"out":[]}');
      this.addActionByString('viomi-vacuum:set-queue-room-clean', '{"siid":4,"aiid":15,"type":"urn:viomi-spec:action:set-queue-room-clean:00002802:viomi-v19:2","description":"set-queue-room-clean","in":[21,22,20],"out":[]}');
      this.addActionByString('order:del', '{"siid":5,"aiid":2,"type":"urn:viomi-spec:action:del:00002802:viomi-v19:1","description":"删除一组预约","in":[1],"out":[]}');
      this.addActionByString('order:get', '{"siid":5,"aiid":3,"type":"urn:viomi-spec:action:get:00002801:viomi-v19: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-v19: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-v19:1","description":"暂停指哪扫那清扫","in":[4],"out":[]}');
      this.addActionByString('point-zone:start-zone-clean', '{"siid":6,"aiid":5,"type":"urn:viomi-spec:action:start-zone-clean:00002805:viomi-v19: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-v19:1","description":"暂停区域清扫","in":[4],"out":[]}');
      this.addActionByString('map:upload-by-maptype', '{"siid":7,"aiid":1,"type":"urn:viomi-spec:action:upload-by-maptype:00002801:viomi-v19:1","description":"上传指定类型的地图","in":[1],"out":[]}');
      this.addActionByString('map:upload-by-mapid', '{"siid":7,"aiid":2,"type":"urn:viomi-spec:action:upload-by-mapid:00002802:viomi-v19:1","description":"上传指定id的地图","in":[2],"out":[]}');
      this.addActionByString('map:set-cur-map', '{"siid":7,"aiid":3,"type":"urn:viomi-spec:action:set-cur-map:00002803:viomi-v19:1","description":"设置当前地图","in":[2],"out":[]}');
      this.addActionByString('map:deal-new-map', '{"siid":7,"aiid":4,"type":"urn:viomi-spec:action:deal-new-map:00002804:viomi-v19:1","description":"识别到新地图时操作","in":[3],"out":[]}');
      this.addActionByString('map:del-map', '{"siid":7,"aiid":5,"type":"urn:viomi-spec:action:del-map:00002805:viomi-v19:1","description":"删除指定id的地图","in":[2],"out":[]}');
      this.addActionByString('map:rename-map', '{"siid":7,"aiid":7,"type":"urn:viomi-spec:action:rename-map:00002807:viomi-v19:1","description":"重命名地图","in":[2,4],"out":[]}');
      this.addActionByString('map:arrange-room', '{"siid":7,"aiid":8,"type":"urn:viomi-spec:action:arrange-room:00002808:viomi-v19:1","description":"合并房间","in":[2,5,6],"out":[]}');
      this.addActionByString('map:split-room', '{"siid":7,"aiid":9,"type":"urn:viomi-spec:action:split-room:00002809:viomi-v19:1","description":"分割房间","in":[2,5,7,8],"out":[]}');
      this.addActionByString('map:rename-room', '{"siid":7,"aiid":10,"type":"urn:viomi-spec:action:rename-room:0000280a:viomi-v19:1","description":"房间重命名","in":[2,7,9],"out":[]}');
      this.addActionByString('map:get-map-list', '{"siid":7,"aiid":11,"type":"urn:viomi-spec:action:get-map-list:00002806:viomi-v19:1","description":"获取地图列表数据","in":[],"out":[11]}');
      this.addActionByString('voice:find-device', '{"siid":8,"aiid":2,"type":"urn:viomi-spec:action:find-device:00002802:viomi-v19:1","description":"寻找扫地机","in":[],"out":[]}');
      this.addActionByString('voice:download-voice', '{"siid":8,"aiid":3,"type":"urn:viomi-spec:action:download-voice:00002803:viomi-v19:1","description":"开始下载语音包","in":[3,7,8],"out":[]}');
      this.addActionByString('voice:get-downloadstatus', '{"siid":8,"aiid":4,"type":"urn:viomi-spec:action:get-downloadstatus:00002804:viomi-v19:1","description":"获取语音包文件下载状态","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-v19: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-v19:1","description":"拖布取下提示。当设备开始充电时，拖布未取下触发","arguments":[]}');
      this.addEventByString('viomi-vacuum:wait-remind', '{"siid":4,"eiid":2,"type":"urn:viomi-spec:event:wait-remind:00005002:viomi-v19:1","description":"待机时间超过6小时，推送并自动关机","arguments":[]}');
      this.addEventByString('viomi-vacuum:low-remind', '{"siid":4,"eiid":3,"type":"urn:viomi-spec:event:low-remind:00005003:viomi-v19:1","description":"待机时间过长且电量低于15%，推送并自动关机","arguments":[]}');
      this.addEventByString('viomi-vacuum:clean-end', '{"siid":4,"eiid":4,"type":"urn:viomi-spec:event:clean-end:00005004:viomi-v19:1","description":"清扫结束上报","arguments":[25,26,27,28,29,30]}');
    }
  
  
    /*----------========== VALUES OVERRIDES ==========----------*/
  
    statusSweepingValue() {
      return 5;
    }
  
    statusIdleValue() {
      return 1;
    }
  
    statusPausedValue() {
      return 2;
    }
  
    statusGoChargingValue() {
      return 3;
    }
  
    statusChargingValue() {
      return 4;
    }
  
    statusMopppingValue() {
      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 = ViomiVacuumV19;
  