比如修改成这样,新增 自定义HA设备组合 这样你就可以自己在这里随便写个名字,然后去控制
// POST接口
// 支持两个参数
// cmd: 必选参数,操作指令,类似"打开书房插座和小爱开关"
// tts: 可选参数,用于找不到设备时的内容返回
const cmd = msg.payload.cmd || ''
const tts = msg.payload.tts || ''
// 服务列表,一般不用动了
const service_list = {
// 开关词与动作映射,酌情修改
'act': {
'turn_on': ['打开', '开开', '开启'],
'turn_off': ['关闭', '关掉']
},
// 特殊设备的开关动作映射
'alias': {
'cover': { 'turn_on': 'open_cover', 'turn_off': 'close_cover' },
'lock': { 'turn_on': 'unlock', 'turn_off': 'lock' }
}
}
// 自定义HA设备组合
// 可以随意取个名字来操作同类型的一组设备
const custom_device_list = [
{
'domain': 'cover',
'entity_id': 'cover.a,cover.b',
'friendly_name': '窗帘'
}
]
//=== 以下内容谨慎修改 ===============================================================
// 获取HA设备列表,从另外一个流中获取
let device_list = flow.get('device_list')
// 合并自定义设备数据
device_list = device_list.concat(custom_device_list)
// 生成需操作的设备列表
const list = device_list.filter(it => {
let service = ''
for (var key in service_list.act) {
if (!!service_list.act[key].filter(it => !!~cmd.indexOf(it)).length) {
service = key
break
}
}
if (!!~cmd.indexOf(it.friendly_name) && service !== '') {
const alias = service_list.alias[it.domain]
alias && (service = alias[service])
return (it.service = service)
}
}).map(it => {
it.data = { entity_id: it.entity_id }
return it
})
const multi_list = list.map(it => {
return { res: msg.res, req: msg.req, payload: it, list, cmd, tts }
})
multi_list.push({ res: msg.res, req: msg.req, payload: {}, list, cmd, tts })
node.status({ fill: 'green', text: `更新:${(new Date()).toLocaleTimeString()}` })
return multi_list
|