我试图通过 Node-red 将数据发布到 Influxdb。通过 CURL 我可以发布这个:
curl -i -XPOST 'http://localhost:8086/write?db=waterlevel' --data-binary 'vattenstand,lake=siljan,region=dalarna value=160.80'
并将数据放入 InfluxDb。
当我尝试通过 Node-red 和 HTTP 请求发布时,出现错误:
{"error":"unable to parse '{\"url\":\"http://192.168.1.116:8086/write?db=waterlevel\",\"method\":\"POST\",\"body\":\"vattenstand,lake=siljan,region=dalarna value=160.80\",}': missing tag value"}
我在 Node-red 的函数中使用此代码并将其传递给 HTTP 请求:
var dataString = 'vattenstand,lake=siljan,region=dalarna value=160.80';
msg.payload = {
'url': 'http://192.168.1.116:8086/write?db=waterlevel',
'method': 'POST',
'body': dataString,
};
msg.headers = {
Accept: "application/json"
};
return msg;
节点的侧边栏帮助详细说明了您应该设置以配置节点的 msg 属性。
您将 URL、方法和正文作为 msg.payload 的属性传入。那是不正确的。
前两者应设置为 msg.url、msg.method,而 msg.payload 应为请求正文。
在本例中,您已经直接使用 URL 和方法配置了节点,因此无需将它们与消息一起传递。事实上,当您在节点中配置了 URL 时,您会发现不能用 msg.url 覆盖它。如果要为每条消息设置 URL,则必须在编辑器中将节点的 URL 字段留空。
您可能还需要设置内容类型标头。
假设您很乐意将 URL 和方法硬编码在节点中,您的函数应该类似于:
msg.payload = 'vattenstand,lake=siljan,region=dalarna value=160.80';
msg.headers = {
Accept: "application/json"
};
msg.headers['Content-type'] = 'application/x-www-form-urlencoded';
return msg;
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句