本帖最后由 leung 于 2024-3-8 15:33 编辑
我的空气净化器fan_level是select实体,可选一档至五档,开发者工具查过确实是中文字符(应该是被xiaomi-miot翻译过)
select.bj352_y106m_58c8_fan_level
options:
- 一档
- 二档
- 三档
- 四档
- 五档
为加入homekit使用,利用function节点,将homekit的1-17级映射为一档至五档(下为代码)
//风速档位映射
var value = parseInt(msg.payload.RotationSpeed);
// 使用 if...else if...else 语句将数值映射到档位
if (value >= 1 && value <= 4) {
msg.payload = "一档";
} else if (value <= 7) {
msg.payload = "二档";
} else if (value <= 10) {
msg.payload = "三档";
} else if (value <= 14) {
msg.payload = "四档";
} else if (value > 14) {
msg.payload = "五档";
} else {
msg.payload = "无效的数值";
}
// 将处理后的结果传递给下一个节点
return msg;
问题出在最后call service上,一至五档传递到msg.payload时,由于是中文字符,必须用双引号引住(如“一档”),而select option下数据填充需要中文字符没有双引号(如 一档)才能正常操作,否则报错error
{"option":"msg.payload"}
相当于以下写法可以执行操作以下写法不能执行
怎么才能将传递到msg.payload时中文字符不带双引号?或者有什么写法规定?###########################################################################
二楼大哥提点,数据一栏语法错误,修改为以下代码,完美执行
{"option": msg.payload}
版主看到可以帮我移动到『HomeAssistant』求助&解答专区 【已解决】
|