UNPKG

miio

Version:

Control Mi Home devices, such as Mi Robot Vacuums, Mi Air Purifiers, Mi Smart Home Gateway (Aqara) and more

62 lines (45 loc) 1.15 kB
'use strict'; const { Thing, SwitchablePower } = require('abstract-things'); const { PowerPlug, PowerOutlet } = require('abstract-things/electrical'); const MiioApi = require('../device'); const MiioPower = require('./capabilities/power'); module.exports = class extends Thing.with(PowerPlug, PowerOutlet, MiioApi, MiioPower) { static get type() { return 'miio:power-plug'; } constructor(options) { super(options); this.defineProperty('on', { name: 'power' }); this.addChild(new USBOutlet(this)); } setName(name) { return super.setName(name) .then(n => { this.child('usb').updateName(); return n; }); } propertyUpdated(key, value) { switch(key) { case 'powerChannelUsb': this.child('usb').updatePower(value); break; } } }; class USBOutlet extends PowerOutlet.with(SwitchablePower) { constructor(parent) { super(); this.id = parent.id + ':usb'; this.parent = parent; this.updateName(); } updateName() { this.metadata.name = this.parent.name + ' - USB'; } changePower(power) { return this.parent.call(power ? 'set_usb_on' : 'set_usb_off', [], { refresh: true }); } }