参考文章

本篇博客是基于EMQX企业版,企业版自带持久化数据到MySQL等数据库的插件,实现存贮数据比较方便,但考虑到企业版价格相对贵(特别是对学生党而言),所以我写了另一篇关于使用EMQX免费开源版的同样实现保存消息到MySQL的博客EMQX webhook保存消息到MySQL

首先在MySQL数据库创建对应的数据库,表格。

EMQX 规则引擎 简单实现将8266消息保存到MySQL数据库以及更新数据_mqtt

EMQX 规则引擎 简单实现将8266消息保存到MySQL数据库以及更新数据_emqx保存数据到MySQL_02

然后进入emqx服务器的控制台,就是dashboard,进入资源,创建资源

EMQX 规则引擎 简单实现将8266消息保存到MySQL数据库以及更新数据_emqx数据可持续化到mysql_03

连接成功后,到规则里去创建新规则,过滤出我们需要的temp温度数据,规则sql的意思是从负载payload中把键msg的值赋值给将要发送的json数据的temperature对应的值中

EMQX 规则引擎 简单实现将8266消息保存到MySQL数据库以及更新数据_emqx保存数据到MySQL_04

接下来是触发动作,也就是把数据存入表格sensor里对应的位置,把temperature的值写入sensor表中对应的temp项,注意下图中的​​sensor​​的标点是` ,也就是键盘esc键下面那个键,注意不要看成 ' ,否则会新建出错

EMQX 规则引擎 简单实现将8266消息保存到MySQL数据库以及更新数据_数据库_05

点击确认后就可以测试了,启动websocket,先连接上emqx服务器,订阅temp主题,再向temp主题发送{‘msg’:‘26摄氏度’}的消息。

EMQX 规则引擎 简单实现将8266消息保存到MySQL数据库以及更新数据_emqx数据可持续化到mysql_06

然后在规则里我们可以看到该规则已经被命中一次,也触发相应的动作,详细的信息:

EMQX 规则引擎 简单实现将8266消息保存到MySQL数据库以及更新数据_emqx保存数据到MySQL_07

究竟有木有保存到数据库中,耳听为虚眼见为实,我们还是要到数据库去看一看的。

EMQX 规则引擎 简单实现将8266消息保存到MySQL数据库以及更新数据_mysql_08

可以看到我们的数据库里确实保存了刚刚发送的消息26摄氏度,大功告成!

更新数据到数据库前面的操作和保存的操作基本一致,只在添加动作这个地方有点不一样

如官网所示,注意语法 `

EMQX 规则引擎 简单实现将8266消息保存到MySQL数据库以及更新数据_mqtt_09

EMQX 规则引擎 简单实现将8266消息保存到MySQL数据库以及更新数据_mysql_10