1.配置udp in节点
本次实验接受是字符串信息,故打开udp监听端口,输出也是字符串:"$f0,AF31A1FBA599,19,F6D88D5A2302,00,00,00,005E00410000580000120953000000,-83#↵"
2.function节点代码编写
funcition用于编写函数,对数据进行处理,输出想要的值。主要通过简单的代码实现数据处理。
2.1udp数据解析函数:
var header = (msg.payload[1] + msg.payload[2]);
var gatewayMAC = msg.payload.slice(4,16);
var tagID = msg.payload.slice(28,32)
var battery = parseInt((msg.payload[48] + msg.payload[49]), 16);
var heartrate = parseInt((msg.payload[54] + msg.payload[55]), 16);
var temperature = (parseInt(msg.payload.slice(62,63), 16)) * 0.1 + 20;
if (header == "f0") {
msg.payload =
{
tagID: tagID,
battery: battery,
heartrate: heartrate,
temperature: temperature
};
return msg;
}
2.2B8CF Data函数:是以tagID来过滤数据重新生成对象object数据,msg是jason的object和array,进行topic和payload分类标识
const targetTagID = "2302";
if (msg.payload.tagID === targetTagID) {
var msg =
[
{topic:"battery", payload: msg.payload.battery },
{topic:"heartrate", payload: msg.payload.heartrate },
{topic:"temperature", payload: msg.payload.temperature },
];
return msg;
}
请注意:输出数据是3组就再这里配置3
3、配置switch节点
switch左边连接function输出3组数据,右边是switch输出3组数据是根据topic(2.2函数重新的对象)来分类输出的。
在layout处进行数据展示布局设计
node-red后台运行
nohup node-red &
启动之后会提示:nohup:ignoring input and appending output to 'nohup.out’直接点击回车。
查看进程:ps aux | grep node-red
此时不要直接关闭连接页面,如果直接关闭会断掉该命令所对应的session,导致nohup对应的进程被通知需要一起shutdown。
所以此时输入:exit,退出终端。
chatGPT建议:openwrt docker运行nodered及homeassistant
docker run -it -p 1880:1880 --name mynodered nodered/node-red
docker run --name home-assistant --net=host -v /opt/home-assistant-config:/config -e “TZ=Asia/Shanghai” -d homeassistant/home-assistant