UNPKG

node-red-contrib-voice-assistant

Version:

一个小度-小爱-猫精音箱控制NODE-RED自定义设备的节点

288 lines (287 loc) 8.96 kB
"use strict"; var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; return c > 3 && r && Object.defineProperty(target, key, r), r; }; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); const index_1 = require("./index"); const baseAttr_1 = __importDefault(require("./baseAttr")); let TargetTemperature = class TargetTemperature extends baseAttr_1.default { constructor(model) { super(model); this.min = 17; this.max = 30; } getCallServiceData(val) { const serviceData = this.callServiceTpl(); serviceData.service_data.temperature = this.changeVal(val); serviceData.service = 'set_temperature'; return serviceData; } getState() { return this.attributes.temperature || 25; } changeVal(val) { if (val < this.min) return this.min; if (val > this.max) return this.max; return val; } saveCustomState(val) { this.model.attributes.temperature = val; } }; TargetTemperature = __decorate([ (0, index_1.Attribute)('target-temperature') ], TargetTemperature); let Power = class Power extends baseAttr_1.default { changeVal(val) { if (this.domain === 'cover') { return val ? 'open_cover' : 'close_cover'; } return val ? true : false; } getState() { return this.model.state === 'off' ? false : true; } saveCustomState(val) { this.model.state = val ? 'on' : 'off'; } getCallServiceData(val) { const data = this.callServiceTpl(); if (!val) data.service = 'turn_off'; else if (this.domain === 'climate') { data.service_data.hvac_mode = 'auto'; data.service = 'set_hvac_mode'; } return data; } }; Power = __decorate([ (0, index_1.Attribute)('power') ], Power); //灯亮度 let Brightness = class Brightness extends baseAttr_1.default { changeVal(val) { console.log('changeVal', val); return val; } getState() { if (this.attributes.brightness === undefined) throw new Error('无此属性'); return (this.attributes.brightness / 255) * 100; } saveCustomState(val) { this.attributes.brightness = (val * 255) / 100; } getCallServiceData(val) { const data = this.callServiceTpl(); data.service_data.brightness = (val / 100) * 255; return data; } }; Brightness = __decorate([ (0, index_1.Attribute)('brightness') ], Brightness); let Color = class Color extends baseAttr_1.default { changeVal(val) { console.log('changeVal', val); return val; } getState() { if (this.attributes.rgb_color === undefined) throw new Error('无此属性'); return this.attributes.rgb_color; } saveCustomState(val) { this.attributes.rgb_color = val; } getCallServiceData(val) { const data = this.callServiceTpl(); //if (!val) data.service = 'turn_off'; data.service_data.rgb_color = val; return data; } }; Color = __decorate([ (0, index_1.Attribute)('color') ], Color); let Mode = class Mode extends baseAttr_1.default { getCallServiceData(val) { if (this.domain === 'light') return; const serviceData = this.callServiceTpl(); if (this.domain === 'climate') { serviceData.service_data.hvac_mode = this.changeVal(val); serviceData.service = 'set_hvac_mode'; } return serviceData; } changeVal(val) { if (this.domain === 'climate') { return this.attributes.hvac_modes[val]; } return -1; } getState() { if (this.domain === 'climate') { return this.attributes.hvac_modes.indexOf(this.state); } } saveCustomState(val) { if (this.domain === 'climate') this.model.state = val; else if (this.domain === 'fan') this.attributes.preset_mode = val; } }; Mode = __decorate([ (0, index_1.Attribute)('mode') ], Mode); let FanLevel = class FanLevel extends baseAttr_1.default { constructor(model) { super(model); this.max = 3; this.min = 0; } changeVal(val) { val = val < this.min ? this.min : val > this.max ? this.max : val; if (this.domain === 'climate') { return this.attributes.fan_modes[val]; } if (this.domain === 'fan') { return val === 3 ? 100 : val === 2 ? 60 : 30; } } getState() { if (this.domain === 'climate') { this.attributes.fan_mode = this.attributes.fan_mode || 'auto'; return this.attributes.fan_modes.indexOf(this.attributes.fan_mode); } if (this.domain === 'fan') { return this.attributes.percentage > 60 ? 3 : this.attributes.percentage <= 60 && this.attributes.percentage > 30 ? 2 : 1; } return; } saveCustomState(val) { if (this.domain === 'climate') this.attributes.fan_mode = val; else if (this.domain === 'fan') this.attributes.percentage = val; } getCallServiceData(val) { const serviceData = this.callServiceTpl(); val = this.changeVal(val); if (this.domain === 'climate') { serviceData.service_data.fan_mode = val; serviceData.service = 'set_fan_mode'; } else if (this.domain === 'fan') { serviceData.service = 'set_percentage'; serviceData.service_data.percentage = val; } return serviceData; } }; FanLevel = __decorate([ (0, index_1.Attribute)('fan-level') ], FanLevel); let Temperature = class Temperature extends baseAttr_1.default { changeVal(val) { return val; } getState() { return this.attributes.current_temperature || 19; } saveCustomState(val) { this.attributes.current_temperature = val; } getCallServiceData(val) { const serviceData = this.callServiceTpl(); return serviceData; } }; Temperature = __decorate([ (0, index_1.Attribute)('temperature') ], Temperature); let Oscillate = class Oscillate extends baseAttr_1.default { changeVal(val) { return val; } getState() { return this.attributes.oscillating; } saveCustomState(val) { this.attributes.oscillating = val; } getCallServiceData(val) { const serviceData = this.callServiceTpl(); serviceData.service = 'oscillate'; serviceData.service_data.oscillating = val; return serviceData; } }; Oscillate = __decorate([ (0, index_1.Attribute)('oscillate') ], Oscillate); let Control = class Control extends baseAttr_1.default { changeVal(val) { return val === 1 ? 'open' : val === 2 ? 'close' : 'stop'; } getState() { return this.model.state; } saveCustomState(val) { this.model.state = val === 1 ? 'open' : val === 2 ? 'close' : 'stop'; } getCallServiceData(val) { /* {"domain":"cover","service":"stop_cover","service_data":{"entity_id":"cover.ke_ting_chuang_lian"}} */ const serviceData = this.callServiceTpl(); serviceData.service = this.changeVal(val) + '_cover'; return serviceData; } }; Control = __decorate([ (0, index_1.Attribute)('control') ], Control); let currentPosition = class currentPosition extends baseAttr_1.default { changeVal(val) { return val; } getState() { return this.attributes.current_position; } saveCustomState(val) { } getCallServiceData(val) { const serviceData = this.callServiceTpl(); return serviceData; } }; currentPosition = __decorate([ (0, index_1.Attribute)('current_position') ], currentPosition); let TargetPosition = class TargetPosition extends baseAttr_1.default { changeVal(val) { return val; } getState() { return this.attributes.current_position; } saveCustomState(val) { } getCallServiceData(val) { const serviceData = this.callServiceTpl(); return serviceData; } }; TargetPosition = __decorate([ (0, index_1.Attribute)('target-position') ], TargetPosition);