发布温度数据至Test/Temperature主题遇类型错误,求图表展示方案
问题与解决方案
问题详情
我正在向topic:Test/Temperature主题发布随机温度数据,想通过该主题实现温度数据的图表展示,但遇到错误:Function tried to send a message of type string。试过移除函数或修改函数内代码,问题仍未解决。
核心原因
图表展示组件需要接收数值类型的数据来生成图表,但当前发布到主题的是字符串类型数据,组件无法解析成有效数值,因此触发报错。
具体排查与修复步骤
- 检查数据发布代码:如果生成随机温度后主动转成了字符串(比如用
toString()、拼接单位字符),直接改为发送纯数值。比如把msg.payload = (Math.random()*30 +10).toString()改成msg.payload = Math.random()*30 +10。 - 核对函数处理逻辑:如果保留了处理函数,确认函数返回的
msg.payload是数值而非字符串。比如别写msg.payload = "当前温度:" + temp,只保留msg.payload = temp(temp为数值变量)。 - 检查可视化工具的主题配置:部分工具(如Node-RED仪表板)需要指定主题接收的数据类型,确保配置为「数值(Number)」而非「字符串(String)」。
- 验证消息内容:可以用主题调试工具查看发布的消息实际类型,如果是带引号的字符串,就说明数据类型不对,调整代码输出纯数值。
内容的提问来源于stack exchange,提问作者Στέλιος Αθανασόπουλος
相关产品推荐
相关产品推荐

