node-red-contrib-clowire
Version:
clowire for node-red
54 lines (50 loc) • 1.78 kB
JavaScript
function handleServiceData(data){
if (typeof data.uid !== 'string') return
const domain = data.uid.split('.')
if (!domain.length) return
return sendData = {
"id": Date.now(),
"type": "call_service",
"domain": domain[0],
"service": 'toggle',
"service_data": {
"entity_id": data.uid
}
}
}
module.exports.ClimateObjToSerivce = function (data) {
const sendData = handleServiceData(data)
let flag = 1
switch (data.type) {
case 'setTemperature':
sendData.service = "set_temperature"
sendData.service_data.temperature = data.val
break
case 'mode':
sendData.service = "set_hvac_mode"
sendData.service_data.hvac_mode = data.val
break
case 'fan_speed':
sendData.service = "set_fan_mode"
sendData.service_data.fan_mode = data.val
break
case 'power':
if (data.val === 'on') {
sendData.service = "set_hvac_mode"
sendData.service_data.hvac_mode = "auto"
} else
sendData.service = 'turn_off'
break
default:
flag = 0
break
}
if (flag) {
return { call_service: sendData, data: { domain: data.uid.split('.')[0], entity_id: data.uid, data: sendData.service_data, service: sendData.service } }
}
return null
}
module.exports.SwitchObjToSerivce = function (data) {
const sendData = handleServiceData(data)
return { call_service: sendData, data: { domain: data.uid.split('.')[0], entity_id: data.uid, data: sendData.service_data, service: sendData.service } }
}