最近在研究物联网使用的Node-Red ,写点东西给大家参考参考,不知道有没有用。
需要的节点有http的输入和输出节点两个,function节点一个用于数据验证。my sql 节点一个 用于数据连接。还有一个判断节点判断用户和密码是否存在。 两个template节点用于登录界面和成功登录的主界面的html的编写。
1.两个http 输入节点在URL里写入如图的路径,输出节点不需要配置,直接连接就行。
2.在function节点输入sql语句。
my sql 数据库的配置如下,Host中输入mysql 安装的服务器地址,Database 写用户存储的数据库名称。
3.判断节点的配置如下,需要注意的是msg里输入的是 payload.length,判断用户名和密码在数据库中查询的结果,长度为零则表示没有用户或者密码不对。
4.用户界面可以在template中自己写个简单的。在浏览器中输入访问地址(node-red 安装的服务器的访问地址)+端口号(1880)+/login (http 输入节点的URL)。
点击登录后成功则进入page的界面否则回到登录界面。
下面给出代码:
[{"id":"a1815e64.6ed58","type":"http in","z":"c91380af.e6615","name":"/login","url":"/login","method":"get","upload":false,"swaggerDoc":"","x":1350,"y":800,"wires":[["65e254f5.eea0ec"]]},{"id":"65e254f5.eea0ec","type":"template","z":"c91380af.e6615","name":"login","field":"payload","fieldType":"msg","format":"html","syntax":"mustache","template":"<!DOCTYPE html>\n<html lang=\"en\">\n \n<head>\n <meta charset=\"UTF-8\">\n <title>login</title>\n <style>\n * {\n margin: 0;\n padding: 0;\n }\n \n html {\n height: 100%;\n width: 100%;\n overflow: hidden;\n margin: 0;\n padding: 0;\n background: url(Desert.jpg) no-repeat 0px 0px;\n background-repeat: no-repeat;\n background-size: 100% 100%;\n -moz-background-size: 100% 100%;\n }\n \n body {\n display: flex;\n align-items: center;\n justify-content: center;\n height: 100%;\n }\n \n #loginDiv {\n width: 37%;\n display: flex;\n justify-content: center;\n align-items: center;\n height: 300px;\n background-color: rgba(75, 81, 95, 0.3);\n box-shadow: 7px 7px 17px rgba(52, 56, 66, 0.5);\n border-radius: 5px;\n }\n \n #name_trip {\n margin-left: 50px;\n color: red;\n }\n \n p {\n margin-top: 30px;\n margin-left: 20px;\n color: azure;\n }\n \n input {\n margin-left: 15px;\n border-radius: 5px;\n border-style: hidden;\n height: 30px;\n width: 140px;\n background-color: rgba(216, 191, 216, 0.5);\n outline: none;\n color: #f0edf3;\n padding-left: 10px;\n }\n \n .button {\n border-color: cornsilk;\n background-color: rgba(100, 149, 237, .7);\n color: aliceblue;\n border-style: hidden;\n border-radius: 5px;\n width: 100px;\n height: 31px;\n font-size: 16px;\n }\n </style>\n <script>\n \t//校验账号的格式\n \tfunction check_code() {\n \t\tvar code = document.getElementById(\"userNname\").value;\n \t var pwd = document.getElementById(\"password\").value; \n \t //window.location.href=\"http://192.168.0.1:1880/public/fitbit/add\"+\"?Name=\"+code+\"&pwd=\"+pwd;\n \t //return false\n \t\t window.location.href=\"http://192.168.0.1:1880/login/check\"+\"?Name=\"+code+\"&pwd=\"+pwd; \n window.event.returnValue=false; \t\n \t\t};\n\n \n </script>\n</head>\n \n<body backgaound=\"\" >\n <div id=\"loginDiv\">\n <form action=\"\" id=\"form\">\n <h1 style=\"text-align: center;color: aliceblue;\">LOGIN IN</h1>\n <p>用户名:<input id=\"userNname\" type=\"text\"><label id=\"name_trip\"></label></p>\n \n <p>密码: <input id=\"password\" type=\"password\"><label id=\"password_trip\"></label></p>\n \n <div style=\"text-align: center;margin-top: 30px;\">\n <input type=\"submit\" class=\"button\" value=\"登录\" onclick=\"check_code()\">\n <input type=\"reset\" class=\"button\" value=\"取消\">\n </div>\n </form>\n </div>\n \n</body>\n</html>","x":1950.8958950042725,"y":802.4446773529053,"wires":[["3e6d29dd.f20cb6"]]},{"id":"bb704595.b31558","type":"debug","z":"c91380af.e6615","name":"","active":false,"tosidebar":true,"console":false,"tostatus":false,"complete":"true","targetType":"full","x":2097,"y":720,"wires":[]},{"id":"3e6d29dd.f20cb6","type":"http response","z":"c91380af.e6615","name":"","statusCode":"","headers":{},"x":2100.326488494873,"y":803.0973606109619,"wires":[]},{"id":"f24d381d.d034b8","type":"http in","z":"c91380af.e6615","name":"/login/check","url":"/login/check","method":"get","upload":false,"swaggerDoc":"","x":1370,"y":764,"wires":[["26520393.ce710c"]]},{"id":"6a19dbf3.a095e4","type":"template","z":"c91380af.e6615","name":"page","field":"payload","fieldType":"msg","format":"handlebars","syntax":"mustache","template":"<html>\n\n<head>\n <meta http-equiv=\"refresh\" content=\"0.1;url=http://192.168.10.20:1880/ui\"> \n</head>\n<body>\n\n</table>\n</body>\n</html>","x":1949.8956909179688,"y":758.7781372070312,"wires":[["bb704595.b31558","476029ed.c4eb28"]]},{"id":"476029ed.c4eb28","type":"http response","z":"c91380af.e6615","name":"","statusCode":"","headers":{},"x":2099,"y":759,"wires":[]},{"id":"26520393.ce710c","type":"function","z":"c91380af.e6615","name":"数据查询","func":"var N=msg.payload.Name;\nvar P=msg.payload.pwd;\nmsg.topic = \"select * from userInfo where UserName='\"+ N +\"' and Pwd='\"+ P +\"' \";\nmsg.payload = [ \"test1\"];\nreturn msg;\n","outputs":1,"noerr":0,"initialize":"","finalize":"","x":1580,"y":764,"wires":[["fa2a9300.4fea"]]},{"id":"fa2a9300.4fea","type":"mysql","z":"c91380af.e6615","mydb":"127663fd.82843c","name":"","x":1590,"y":703,"wires":[["6ec921b9.1f013"]]},{"id":"6ec921b9.1f013","type":"switch","z":"c91380af.e6615","name":"","property":"payload.length","propertyType":"msg","rules":[{"t":"eq","v":"1","vt":"num"},{"t":"eq","v":"0","vt":"str"}],"checkall":"true","repair":false,"outputs":2,"x":1770,"y":766,"wires":[["6a19dbf3.a095e4"],["65e254f5.eea0ec"]]},{"id":"127663fd.82843c","type":"MySQLdatabase","name":"","host":"192.168.10.20","port":"3306","db":"velocityradar","tz":"","charset":"UTF8"}]
觉得有帮助的可以给个赞,谢谢。