红色节点是否无法正确显示表值?

时间:2018-10-24 10:44:47

标签: node-red

我正在从事IOT项目。我想在仪表板上显示一个表格,显示来自我的微控制器的实时值。当我在功能节点中使用固定值时,它会正确显示。但是,当我尝试向功能节点输入值时。例如,从注入节点来看,它无法正确显示。我需要帮助解决此问题。

节点红色流:

[{"id":"7153ba17.4ab9cc","type":"inject","z":"101c13d7.dd09dc","name":"Inject values","topic":"","payload":"7.8>6.4>7.1>375>982>591>125","payloadType":"str","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":120.99998474121094,"y":128,"wires":[["3c8d41d8.04cd06"]]},{"id":"3c8d41d8.04cd06","type":"function","z":"101c13d7.dd09dc","name":"","func":"var lines2 = msg.payload.split(\">\");\nvar outp0 = {payload:lines2[0]}; //battery voltage\nvar outp1 = {payload:lines2[1]}; //shunt1 voltage\nvar outp2 = {payload:lines2[2]}; //shunt2 voltage\nvar outp3 = {payload:lines2[3]}; //current1\nvar outp4 = {payload:lines2[4]}; //current2\nvar outp5 = {payload:lines2[5]}; //capacity1\nvar outp6 = {payload:lines2[6]}; //capacity2\nvar power1 = outp1*outp3;\nvar power2 = outp2*outp4;\nvar arr = [[outp1,outp3,power1],[outp2,outp4,power2]]; \nmsg.payload = arr; \nreturn msg;","outputs":1,"noerr":0,"x":286.99998474121094,"y":124,"wires":[["a3151e85.7c44f8","e5c91595.ecf538"]]},{"id":"a3151e85.7c44f8","type":"ui_template","z":"101c13d7.dd09dc","group":"4183fd05.a41e84","name":"Battery Monitoring","order":0,"width":"9","height":"3","format":"<style>\ntable {\n    font-family: 'courier';\n    border-collapse: collapse;\n    width: 100%;\n}\nth { font-size: 14px; color:black;}\ntd {font-size: 16px;}\nth, td {\n    text-align: left;\n    padding: 8px;\n}\n\ntr:nth-child(1){color: green;}\ntr:nth-child(2){background-color: #f2f2f2; color: blue;}\n\n</style>\n\n<table id=\"table\" border=\"1\">\n     <tr>\n        <th>Voltage (v)</th> \n        <th>Current (mA)</th>\n        <th>Power (w)</th>\n    </tr>\n <tbody>\n <tr ng-repeat=\"row in msg.payload\" ng-dblclick=\"sendRow(row)\">\n   <td ng-repeat=\"item in row\" class=\"numeric\" >{{item}}</td>\n </tr>\n </tbody>\n</table>\n","storeOutMessages":true,"fwdInMessages":true,"templateScope":"local","x":483.99998474121094,"y":122,"wires":[[]]},{"id":"e5c91595.ecf538","type":"debug","z":"101c13d7.dd09dc","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","x":468.99998474121094,"y":76,"wires":[]},{"id":"4183fd05.a41e84","type":"ui_group","z":"","name":"Battery Monitoring","tab":"c7129c2d.274af8","disp":true,"width":"9","collapse":false},{"id":"c7129c2d.274af8","type":"ui_tab","z":"","name":"AIPIR","icon":"dashboard","order":1}]

enter image description here

注入节点以“>”作为分隔符将随机值注入功能节点。

1)注入节点:随机值:7.8> 6.4> 7.1> 375> 982> 591> 125

2)功能节点:

var lines2 = msg.payload.split(">");
var outp0 = {payload:lines2[0]}; //battery voltage
var outp1 = {payload:lines2[1]}; //shunt1 voltage
var outp2 = {payload:lines2[2]}; //shunt2 voltage
var outp3 = {payload:lines2[3]}; //current1
var outp4 = {payload:lines2[4]}; //current2
var outp5 = {payload:lines2[5]}; //capacity1
var outp6 = {payload:lines2[6]}; //capacity2
var power1 = outp1*outp3;
var power2 = outp2*outp4;
var arr = [[outp1,outp3,power1],[outp2,outp4,power2]]; 
msg.payload = arr; 
return msg;

3)模板节点:

<style>
table {
    font-family: 'courier';
    border-collapse: collapse;
    width: 100%;
}
th { font-size: 14px; color:black;}
td {font-size: 16px;}
th, td {
    text-align: left;
    padding: 8px;
}

tr:nth-child(1){color: green;}
tr:nth-child(2){background-color: #f2f2f2; color: blue;}

</style>

<table id="table" border="1">
     <tr>
        <th>Voltage (v)</th> 
        <th>Current (mA)</th>
        <th>Power (w)</th>
    </tr>
 <tbody>
 <tr ng-repeat="row in msg.payload" ng-dblclick="sendRow(row)">
   <td ng-repeat="item in row" class="numeric" >{{item}}</td>
 </tr>
 </tbody>
</table>

输出未正确显示

enter image description here 使用固定值的功能节点:

在功能节点中使用固定值时,表将正确显示。

var arr = [[7.5,235, 1.3],[6.3,932,3.1]]; 
msg.payload = arr; 
return msg;

enter image description here

我想使用来自注入节点的值获得与上述相同的表。 我们将非常感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

经过多次尝试,我设法解决了它。我删除了功能节点中的一些代码。通过将“ {payload:lines2[0]};”修改为“ lines2[0]”,我得到一个干净的输出,并且该表显示正确的值。很高兴能够快速解决此问题,现在继续执行下一个任务。希望它可以帮助某人。

var lines2 = msg.payload.split(">");
var outp0 = lines2[0]; //battery voltage
var outp1 = lines2[1]; //shunt1 voltage
var outp2 = lines2[2]; //shunt2 voltage
var outp3 = lines2[3]; //current1
var outp4 = lines2[4]; //current2
var outp5 = lines2[5]; //capacity1
var outp6 = lines2[6]; //capacity2
var power1 = outp1*outp3;
var power2 = outp2*outp4;
var arr = [[outp1,outp3,power1],[outp2,outp4,power2]]; 
msg.payload = arr; 
return msg;