智能家居软件篇——用NodeRed解析Json数据

前言

上一篇已经把Modbus数据进行采集并通过MQTT发布至服务器,现在需要对接收的Json数据进行处理。如需获取更多请关注我的微信公众号:扫描以下二维码即可关注

afec3a104cbc4115abb719c78725132f.jpeg

数据提取

首先在NodeRed中使用Mqtt in节点并填写订阅主题,服务器为Modbus网关所连接的服务器,节点中填写网关中设置的订阅topic,然后添加一个debug节点,得到如下数据:

 

74b0eabd6c40f33ce6667c850943d3d4.png

 

然后添加一个template节点,用于提取json中指定键值,例如:提取键myhome_total_energy的键值为总电表电量的值,则在模版中填写如下:

 

d76d722d7205ca636fc4448479abba0e.png

这样节点就提取出我们需要的值,如下图所示:

87cc45f203aef837410414f5e821d9c7.png

 数据计算

接下来需要对提取的数据进行转换计算,阿尔泰的计算方式稍麻烦,下面是关于电量计算的方法:

 

296a3b6d07e35314c5e3c44633eb5464.png

下面是用NodeRed的函数节点进行计算:

var newMsg = {payload: ((msg.payload-0x80000000)*100*400/1000/3600).toFixed(3)};return newMsg;

最后输出结果:

 

66e077f6b1a85b1a6ad4a3ff3dd5fd67.png

发布至HomeAssistant 

以上已经把读取的电量值进行了提取和计算,最终将值要发送到HA。发送到需要用到MQTT功能,MQTT需要主题和值两个要素,下面就对数据加上主题topic,我们添加一个change节点,按照如下方式设置,设置的topci为:home_energy/energy/myhome_total_energy

 

d6e1cd6c6940c7089c1daba02241ce39.png

 

下面是输出的最终结果:

 

a6f4ae2cff34f1d2b71a28cc7c6510e7.png

 

最后添加一个mqtt out节点,把数据发布至HA,如下:

 

6ecb4b5e3237aab144674385b4049d12.png

 

注意:HA服务器的MQTT地址不要填错,当然前提是你已经正确配置了HA的MQTT服务。完整的流程图如下:如果需要流程代码请到本文最底端下载,放在这里会影响阅读。

 

e6dad566762532584cf77437b6d7c6a3.png

测试 

下面来测试一下HA是否成功收到发布的消息,用MQTT-Explorer连接HA服务器就以看到发布成功了

 

 

b0951e0a7cee48ecdf0445224c3c92af.png

结束语 

以上只对电量采集作出了详细说明,功率、电流、电压等可以参见如下流程,流程代码放在文章底部,请大家取阅。

 

5c53a819cc8b693d0a35a83ff95995f7.png

最后,有朋友可能会说用一条函数就能解决的事情,非得要用三个节点,原因如下:这是我初学NodeRed做出的流程,到如今已经运行了两年年多,运行很好;另外这样写也是为了照顾初学多朋友,便于理解。

当然目前已经替换了更简洁高效的流程,希望大家多多关注,后边都会分享给大家。

关于流程代码:

流程源代码放在我的微信公众号,请关注后获取

64a34ecce92c47e0b77c23e1110a01fa.jpeg

 

 

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值