搭建方案是让DeepSeek帮助制定的,技术路线是:EMQX作为MQTT服务器,通过设定规则和连接器将接收到的信息传送给TDengine时序数据库存储数据,用Grafana作为数据可视化工具。安装调试过程中颇掉了不少坑,记录如下,以后再部署时避免弯路。

  • EMQX与TDengine安装时注意选择与操作系统适配的版本。
  • TDengine安装后,要启动taos适配服务:systemctl start taosadapter,否则与EMQX的连接无法成功。
  • 使用公众云平台部署时,EMQX要打开1883,18083等端口,TDengine要打开6041端口。
  • EMQX里设置规则时,SQL的语法与MY SQL的语法并不完全一致,有的语句和功能无法直接使用,要查阅它自己的SQL语法手册,TDengine同理。
  • EMQX和TDengine在同一台服务器上部署时,如果不使用Docker,连接器地址要选择127.0.0.1:6041,用Docker部署时则用相应容器的地址。
  • MQTT消息的格式一般会用JSON格式,同一台终端可能同时会发送心跳包(特定字符)以维持连接,在转发存储时设定规则,可以在SQL语句尾部加上 WHERE is_null(payload.XXX)=false 以过滤掉非JSON格式包。
  • TDengine在创建数据库时,一定要加上数据保留周期 KEEP 365,这是保存一年,如果不设定,默认保存10年,服务器空间压力太大。要加上允许修改的参数 UPDATE 1,否则只能整个表删除。
  • TDengine建数据库后先建超级表,把需要记录的字段设定后再建子表,子表继承超级表结构,只用设定TAGS来说明终端的位置和类型等即可。
  • 虽然有人物联网的CAT-1模块在透传模式时只用向其发送JSON数据,但在EMQX接收时会收到包括时间戳、用户ID、QOS等信息在内的完整数据包,可在EMQX规则设定中打开调试模式试验查看。数据戳来源可解析收到的payload.timestamp,也可以直接引用函数NOW。

标签: none

添加新评论