keln
发表于 2022-10-31 17:23:01
astang 发表于 2022-10-31 17:10
我把cmdFrom = '挂式空调C3CE'输出的是:{"data":{"nlpTime":{"query_device_table":0,"nlpTimecost":0," ...
你这个是有问题:"retInfo": "/ù小优没有查到相关信息,请检查设备联网状态,/ù稍后再试",
有设备不是返回这个:
{"data":{"nlpTime":{"query_device_table":0,"nlpTimecost":0,"device_execute":0},"termAction":"response","nlpResult":{"isContinuousDialogue":false,"sync_tts":"小优为你查到,当前空调为关机状态,风速为高风,设置温度为20度,已开启制热,","appVersion":"7.0.4","retStatus":2,"userQuery":"次卧空调状态","playtts":3,"parseStatus":true,"isDialog":false,"response":"小优为你查到,当前空调为关机状态,风速为高风,设置温度为20度,已开启制热,","domain":"Dev.airConditioner","moreDevice":false,"nlpVersion":"dm.2.1.18_2-nlu.TPL","category":"command","quitContinuousDialogue":"yes","results":[{"dev":{"nickName":"次卧空调","wifiType":"00000000000000008080000000041410","name":"次卧空调","id":"04FA83851160","type":"airConditioner","room":"次卧"},"nlpParams":{},"params":{"save":"","consumption":"","currenttemperature":"20","powerstate":"关机","mode":"制热模式","domain":"Dev.airConditioner","nickname":"次卧空调","property":"all","name":"次卧空调","action":"statusEnquiry","windspeed":"高风","device":"空调","direction":""}}],"isMultiDialogue":false}},"processorContextList":[],"response":"/ù小优为你查到,当前空调为关机状态,/ù风速为高风,设置温度为20度,已开启制热","retCode":"00000","retInfo":"/ù小优为你查到,当前空调为关机状态,/ù风速为高风,设置温度为20度,已开启制热","sn":"20221031172206726000714840","triggerId":"","uSpanId":"","uTraceId":""}
你可以用你的海尔智家里用小优问相同的问题看他返回什么
astang
发表于 2022-10-31 17:28:34
keln 发表于 2022-10-31 17:23
你这个是有问题:"retInfo": "/ù小优没有查到相关信息,请检查设备联网状态,/ù稍后再试",
有设备不是 ...
我在小优里问:挂式空调XXXX状态,他会回复现在空调是26.00度,希望是你喜欢的温度
keln
发表于 2022-10-31 17:34:12
astang 发表于 2022-10-31 17:28
我在小优里问:挂式空调XXXX状态,他会回复现在空调是26.00度,希望是你喜欢的温度 ...
那你用语音开机,然后再查下信息
从语音回执来看是没有找到设备的。
astang
发表于 2022-10-31 17:42:26
keln 发表于 2022-10-31 17:34
那你用语音开机,然后再查下信息
从语音回执来看是没有找到设备的。
app用语音开关空调都是正常的,返回的信息“书房空调已打开”“下午好,没问题,正在关闭空调”。app是这样的,查看对话记录显示每一个反馈命令下面都跟着一个详情页。
keln
发表于 2022-10-31 18:00:05
应该小优不同空调反应的内容不太一样,要针对性的进行解析响应信息
astang
发表于 2022-10-31 18:15:04
keln 发表于 2022-10-31 18:00
应该小优不同空调反应的内容不太一样,要针对性的进行解析响应信息
能不能劳驾帮忙看看怎么解决,没学过编程实在是看不明白代码都是什么意思
keln
发表于 2022-10-31 19:15:02
本帖最后由 keln 于 2022-10-31 19:23 编辑
astang 发表于 2022-10-31 18:15
能不能劳驾帮忙看看怎么解决,没学过编程实在是看不明白代码都是什么意思 ...
给你一个
let result = {
state: 'offline',
mode: '',
fan: '',
temperature: '',
currtemp: '',
power: ''
}
let topic = "/" + msg.cmdFrom + "/state";
if (msg.payload && msg.payload.retCode) {
let retcode = msg.payload.retCode;
if (retcode == '00000') {
result.state = 'online'
let retParams = msg.payload.data.nlpResult.results;
let retParam = undefined;
if (retParams.length > 0) {
retParam = retParams
}
if (retParam != undefined && retParam.params != undefined) {
if (retParam.params.powerstate != undefined) {
if (retParam.params.powerstate != '关机') {
result.power = 0;
}
else {
result.power = '1';
result.mode = "off";
result.currtemp = '0';
}
}
if (retParam.params.mode != undefined) {
let mode = retParam.params.mode.replace('模式', '')
switch (mode) {
case '制冷':
result.mode = 'cool'
break;
case '制热':
result.mode = 'heat'
break;
case '除湿':
result.mode = 'dry'
break;
case '送风':
result.mode = 'fan_only'
break;
case '智能':
result.mode = 'auto'
break;
default:
result.mode = 'off'
break;
}
}
if (retParam.params.windspeed != undefined) {
let fan = retParam.params.windspeed;
switch (fan) {
case '低风':
result.fan = 'low'
break;
case '中风':
result.fan = 'medium'
break;
case '高风':
result.fan = 'high'
break;
case '自动风':
result.fan = 'auto'
break;
default:
result.fan = ''
break;
}
}
if (retParam.params.currenttemperature != undefined) {
let temperature = retParam.params.currenttemperature;
if (temperature == '') {
result.temperature = 0;
}
else {
result.temperature = temperature;
}
if (result.power == '0') {
result.currtemp = result.temperature;
}
}
}
}
}
msg.payload = {};
msg.payload = result.state;
msg.payload = result.mode;
msg.payload = result.fan;
msg.payload = result.temperature;
msg.payload = result.power;
msg.payload = result.currtemp;
return msg;
替换处理语音结果的那个节点里试试,这个只能让你的状态正常
keln
发表于 2022-10-31 19:16:53
keln 发表于 2022-10-31 19:15
给你一个
let result = {
state: 'offline',
如果开机后状态显示还是不正常,那就要对你所有的回执都要重新解析,那就很麻烦了,我这边也没有你那的环境也无法知道怎么解析,你可以试试之前那位大神的
astang
发表于 2022-10-31 19:26:24
keln 发表于 2022-10-31 19:16
如果开机后状态显示还是不正常,那就要对你所有的回执都要重新解析,那就很麻烦了,我这边也没有你那的环 ...
好吧,我再试试,谢谢了
keln
发表于 2022-10-31 19:37:58
本帖最后由 keln 于 2022-10-31 19:39 编辑
astang 发表于 2022-10-31 19:26
好吧,我再试试,谢谢了
let result = {
state: 'offline',
mode: '',
fan: '',
temperature: '',
currtemp: '',
power: ''
}
let topic = "/" + msg.cmdFrom + "/state";
if (msg.payload && msg.payload.retCode) {
let retcode = msg.payload.retCode;
if (retcode == '00000') {
result.state = 'online'
let retParams = msg.payload.data.nlpResult.results;
let retParam = undefined;
if (retParams.length > 0) {
retParam = retParams
}
if (retParam != undefined && retParam.params != undefined) {
if (retParam.params.mode != undefined) {
let mode = retParam.params.mode.replace('模式', '')
switch (mode) {
case '制冷':
result.mode = 'cool'
break;
case '制热':
result.mode = 'heat'
break;
case '除湿':
result.mode = 'dry'
break;
case '送风':
result.mode = 'fan_only'
break;
case '智能':
result.mode = 'auto'
break;
default:
result.mode = 'off'
break;
}
}
if (retParam.params.windspeed != undefined) {
let fan = retParam.params.windspeed;
switch (fan) {
case '低风':
result.fan = 'low'
break;
case '中风':
result.fan = 'medium'
break;
case '高风':
result.fan = 'high'
break;
case '自动风':
result.fan = 'auto'
break;
default:
result.fan = ''
break;
}
}
if (retParam.params.powerstate != undefined) {
if (retParam.params.powerstate != '关机') {
result.power = '0';
}
else {
result.power = '1';
result.mode = "off";
result.currtemp = '0';
}
} if (retParam.params.currenttemperature != undefined) {
let temperature = retParam.params.currenttemperature;
if (temperature == '') {
result.temperature = 0;
}
else {
result.temperature = temperature;
}
if (result.power == '0') {
result.currtemp = result.temperature;
}
}
}
}
}
msg.payload = {};
msg.payload = result.state;
msg.payload = result.mode;
msg.payload = result.fan;
msg.payload = result.temperature;
msg.payload = result.power;
msg.payload = result.currtemp;
return msg;
刚刚里面有个错误,重新替换下