从MQTT提要中我得到了很多值:
06/08/2018, 01:59:06View all 'emon/#' MQTT traffic
emon/emontx3/power1 : msg.payload : string [3]
588
emon/emontx3/power2 : msg.payload : string [3]
354
emon/emontx3/power3 : msg.payload : string [3]
740
我如何编写函数或使用另一个红色节点将总值加到一个(588 + 354 + 740 = 1682)
答案 0 :(得分:0)
与其将emonTx节点的3个幂值作为3条单独的MQTT消息发送,不如将其作为一条MQTT消息发送。
例如,在我的设置中,我设法将其发送为:
{“ topic”:“ emonhub / rx / 10 / values”,“有效负载”:“ 180,-209,37,1,261”,“ qos”:0,“ retain”:false,“ _ msgid”:“ a142b96c.e678d8“}
仅供参考,我已经在我的node-red函数节点中使用以下代码来解析上述MQTT消息:
var parts = msg.payload.split(",");
var CT1_power = parseFloat(parts[0]);
var CT2_power = parseFloat(parts[1]);
var CT3_power = parseFloat(parts[2]);
var solar_power = parseFloat(parts[3]);
var voltage = parseFloat(parts[4]);
var phase1_power = CT1_power + solar_power;
var phase2_power = - CT2_power;
var phase3_power = CT3_power;
var total_power = phase1_power + phase2_power + phase3_power;
msg.payload = { "total_power" : total_power,
"solar_power" : solar_power,
"voltage" : voltage,
"phase1_power" : phase1_power,
"phase2_power" : phase2_power,
"phase3_power" : phase3_power,
"CT1_power" : CT1_power,
"CT2_power" : CT2_power,
"CT3_power" : CT3_power,
};
return msg;
在我的情况下,输出msg.payload中的“ total_power”是emonTx节点测量的三相使用的功率之和。
答案 1 :(得分:0)