物联网技术的创新应用使制造业能够适应未来并为未来做好准备,物联网通信是机器到用户通信和客户端-服务器交互,必须满足严格的实时性和可靠性要求。如何在简道云中发送指令给设备,可以接入物联网确保实时性要求。简道云可以通过webhook进行数据推送,webhook是微服务api的使用范式之一,也被称为反向api,即:前端不主动发送请求,完全由后端推送。 使用webhook,你可以实时接受到变化信息。
接下来就是要打通webhook和物联网及数据库之间的实时通信,需要安装以下几个工具。
安装EMQX
EMQX开源云原生分布式物联网 MQTT 消息服务器
#下载镜像
docker pull emqx/emqx
# 后台运行镜像
docker run -dit --name emqx -p 18083:18083 -p 1883:1883 -p 8083:8083 -p 8084:8084 emqx/emqx:latest
# 访问emqt的web管理页面
http://服务器ip地址:18083
# 端口
1883:MQTT 协议端口
8883:MQTT/SSL 端口
8083:MQTT/WebSocket 端口
8080:HTTP API 端口
18083:Dashboard 管理控制台端口
安装Node-RED
构建物联⽹应⽤程序的⼀个强⼤⼯具,它使⽤可视化编程⽅法,允许开发⼈员将预定义的代码块(也叫做"节点")连接起来执⾏任务。
# 拉取node-red的镜像
docker pull nodered/node-red
# 运行node-red的镜像成为容器
docker run -it -p 1880:1880 -v node_red_data:/data --name mynodered nodered/node-red
# 启动网址http://服务器ip地址:1880
创建webhookrelay Tokens和Buckets
类似网关可以接收webhook并路由到连接的客户端,避免将NodeRed暴露到互联网中确保信息安全。
打开网址https://my.webhookrelay.com/tokens,可以用github或google账号登陆。
点击“CREATE TOKEN”创建
记住Key和Secret
选择Buckets,点击CREATE BUCKET创建
输入Bucket名称,保存创建
复制接受webhook的服务器网址
选择简道云表单扩展功能的数据推送,点击新建数据推送
将webhookrelay中创建的服务器地址复制过来,点击连接测试并保存
在Node-RED中点击右上角图标,选择设置
在控制板中点击安装选项,搜索webhookrelay并安装
在控制板中点击安装选项,搜索mysql并安装
点击+按钮创建新流程,并命名
拖着webhookrelay插件到面板,双击设置属性,输入webhookrelay创建的bucket、key和secret
拖拽函数插件到面板,并将两个节点连接
双击函数插件,编辑函数,将简单云推送的数据进行封装处理
拖拽MQTT发送插件到面板,并与函数节点连接
双击mqtt out插件,添加物联网服务端,输入物联网服务器地址并更新
输入发送到物联网平台的主题,并保存
可以拖拽debug插件到面板,并与函数节点连接,然后部署
简道云中提交一条数据
在Node-RED中就可以接收到一条调试信息
这样可以在任意接入物联网的设备中订阅到这条简道云新增的消息
接下来可以同时保存到数据库的设置
拖拽函数插件到面板,并与前面一个函数节点连接
双击函数插件,编辑函数封装SQL语句
拖拽mysql插件到面板,并与第二个函数节点连接
双击mysql插件,添加mysql数据库信息并更新完成
点击部署,确保webhookrelay,mqtt和mysql节点都已连接
简道云上新增一条数据
这样可以在物联网平台中订阅到这条数据同时保存到数据库。
以上是折腾出来的一种不成熟的方案,还需要实践以后慢慢优化。