javascript - 有没有办法从节点红色转移到纯代码?

标签 javascript node-red

由于能够使用 GUI,我目前正在使用 Node-Red 来实现我的结果,但理想情况下我想摆脱这个,只拥有 1 个无缝系统,而不是在系统之间来回移动

我当前的流程如下。

[{"id":"c97e8fad.1ccfc","type":"change","z":"9b2b789d.df51e8","name":"strip the $","rules":[{"t":"change","p":"payload","pt":"msg","from":"$","fromt":"str","to":"","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":240,"y":280,"wires":[["843b2c33.a8bf4","2e80c1f.d012c3e"]]},{"id":"b4bb90cd.d114b","type":"function","z":"9b2b789d.df51e8","name":"test","func":"var raw = msg.payload;\nmsg.length = raw.length;\nmsg.raw = raw;\nvar data = {};\ndata.mac = raw.substring(5,17);\ndata.hostname = raw.substring(18,30);\ndata.minor = raw.slice(-8,-4);\nvar rssi = raw.substring(31,34);\n\n\nfunction calculateDistance(rssi) {\n  \n  var txPower = -69 //hard coded power value. Usually ranges between -59 to -65\n  \n  if (rssi === 0) {\n    return -1.0; \n  }\n\n  var ratio = rssi*1.0/txPower;\n  if (ratio < 1.0) {\n    return Math.pow(ratio,10);\n  }\n  else {\n    var distance =  (0.89976)*Math.pow(ratio,7.7095) + 0.111;    \n    return distance;\n  }\n}\n\nvar str = data.hostname;\nvar location = str.replace(`C129E53D0F45`, `pink`)\n                .replace(`FD139CD46385`, `DARKORANGE`)\n                .replace(`EB72F2609789`, `DEEPSKYBLUE`)\n                .replace(`DBECEE45AE6F`, `RED`)\n                .replace(`E47D6D760A7F`, `WHITE`)\n                .replace(`C3D7EDB7EF28`, `WHITE`)\n                .replace(`E3A3BD636EA3`, `GREEN`)\n                .replace(`D6F579FC35C9`, `YELLOW`);\n             \nvar beacon = parseInt(data.minor ,16);\n\nvar str = calculateDistance(rssi).toFixed(2);\n\nvar msg = {\ntopic : \"INSERT INTO `test`.`test` (`location`,`beacon`,`distance`,`mac`,`rssi`) VALUES ('\"+location+\"','\"+beacon+\"','\"+str+\"','\"+data.mac+\"','\"+rssi+\"');\"\n}    \nreturn msg;","outputs":1,"noerr":0,"x":590,"y":280,"wires":[["db372be3.5fc8b8","b94d67a3.a0b158"]]},{"id":"b94d67a3.a0b158","type":"mysql","z":"9b2b789d.df51e8","mydb":"d985d62d.44b738","name":"","x":730,"y":280,"wires":[["42241d06.676ad4"]]},{"id":"42241d06.676ad4","type":"debug","z":"9b2b789d.df51e8","name":"","active":true,"console":"false","complete":"false","x":890,"y":340,"wires":[]},{"id":"db372be3.5fc8b8","type":"debug","z":"9b2b789d.df51e8","name":"","active":false,"console":"false","complete":"false","x":750,"y":240,"wires":[]},{"id":"72a43fbc.c3b06","type":"mqtt in","z":"9b2b789d.df51e8","name":"","topic":"test","qos":"0","broker":"d3121fa0.40fac","x":90,"y":280,"wires":[["c97e8fad.1ccfc"]]},{"id":"843b2c33.a8bf4","type":"debug","z":"9b2b789d.df51e8","name":"","active":false,"console":"false","complete":"false","x":430,"y":320,"wires":[]},{"id":"2e80c1f.d012c3e","type":"change","z":"9b2b789d.df51e8","name":"Fix for minor values","rules":[{"t":"change","p":"payload","pt":"msg","from":"001600E5","fromt":"str","to":"0016001D","tot":"str"},{"t":"change","p":"payload","pt":"msg","from":"001600CE","fromt":"str","to":"00160006","tot":"str"},{"t":"change","p":"payload","pt":"msg","from":"00160101","fromt":"str","to":"00160039","tot":"str"},{"t":"change","p":"payload","pt":"msg","from":"001600CB","fromt":"str","to":"00160003","tot":"str"},{"t":"change","p":"payload","pt":"msg","from":"0016003B","fromt":"str","to":"00160073","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":430,"y":280,"wires":[["b4bb90cd.d114b"]]},{"id":"d985d62d.44b738","type":"MySQLdatabase","z":"c1373fb6.410bd","host":"127.0.0.1","port":"3306","db":"test","tz":""},{"id":"d3121fa0.40fac","type":"mqtt-broker","z":"","broker":"localhost","port":"1883","clientid":"","usetls":false,"compatmode":true,"keepalive":"60","cleansession":true,"willTopic":"","willQos":"0","willPayload":"","birthTopic":"tracked","birthQos":"0","birthPayload":""}]

它包含如下显示 Node-Flow

我之前设法编写了一个使用 websocket 来显示 mqtt 数据的系统,但我无法将其推送到 mysql 数据库。

最佳答案

不,您无法将 Node-RED 流编译/导出为独立应用程序。

我们正在努力将编辑器 GUI 与实际运行流程的后端分开,但这是针对 future 版本的。同时,您当前可以通过更改 settings.js 文件来禁用编辑器。

...
// The following property can be used to disable the editor. The admin API
// is not affected by this option. To disable both the editor and the admin
// API, use either the httpRoot or httpAdminRoot properties
//disableEditor: false,
...

关于javascript - 有没有办法从节点红色转移到纯代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51706028/

相关文章:

javascript - 在 Protractor 中定位元素与直接在 JavaScript 中定位元素

Node-red 如何读取模板节点中的全局变量

javascript - node-red - 自定义节点 - 发生事件时动态更新 HTML 表单

node-red - 类型错误 : Cannot assign to read only property '_msgid'

javascript - HTML5 Canvas 在绘图时闪烁

javascript - 我使用 setInterval() 的方式有什么问题?

javascript - 我们可以在html5中为canvas中的形状分配类吗

javascript - 有没有办法向 Node.js 中的现有主题添加新分区?

mysql - 如何从 NodeRed Mysql 节点获取输出

ibm-cloud - 如何从 IBM Bluemix 将两个参数传递给 Node-Red 的 dashDB 查询元素