EMQ X + Tdengine + Grafana搭建 MQTT 物联网数据可视化平台
一、Ubuntu基础环境
1.使用 ubuntu-18.04.5-desktop-amd64.iso 在Vmware创建虚拟机
2.调整时区、锁屏时间、浏览器语言等基础设置
3.修改镜像源
$ git clone https://gitee.com/isfive/linux-apt-get-aliyun.git
$ sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak
$ cp /etc/apt/sources.list /etc/apt/sources.list.bak
$ cd linux-apt-get-aliyun
$ cd ./18.04
$ sudo cp ./sources.list /etc/apt/sources.list
$ sudo apt-get update
4.安装vim
$ sudo apt install vim
5.安装Node.js
$ sudo apt-get install nodejs
$ sudo apt-get install npm
二、安装
1.安装 EMQ X
$ sudo apt update && sudo apt install -y \
apt-transport-https \
ca-certificates \
curl \
gnupg-agent \
software-properties-common
$ curl -fsSL https://repos.emqx.io/gpg.pub | sudo apt-key add -
$ sudo apt-key fingerprint 3E640D53
$ sudo add-apt-repository \
"deb [arch=amd64] https://repos.emqx.io/emqx-ce/deb/ubuntu/ \
./$(lsb_release -cs) \
stable"
$ sudo apt update
$ sudo apt install emqx=4.1.1
$ emqx start
若要停止 EMQ X Broker:$ emqx stop
若要卸载 EMQ X Broker:$ sudo apt remove emqx
2.安装 Tdengine
https://www.taosdata.com/cn/getting-started/#%E5%BF%AB%E6%8D%B7%E5%AE%89%E8%A3%85
下载 TDengine-server-2.0.5.1-Linux-x64.deb (2.7M),直接安装
$ systemctl start taosd
查看 TDengine状态:$ systemctl status taosd
若要停止 TDengine:$ systemctl stop taosd
3.安装 Grafana
$ sudo apt-get install -y adduser libfontconfig1
$ wget https://dl.grafana.com/oss/release/grafana_7.2.1_amd64.deb
$ sudo dpkg -i grafana_7.2.1_amd64.deb
$ sudo service grafana-server start
若要停止 Grafana:$ sudo service grafana-server stop
4.为Grafana添加TDengine数据源插件
$ git clone https://github.com/taosdata/TDengine.git
$ sudo cp -r /TDengine/minidevops/grafana/tdengine /var/lib/grafana/plugins/
$ sudo service grafana-server restart
三、TDengine 创建数据库与数据表
$ taos
taos> create database test;
taos> use test;
taos> CREATE TABLE sensor_data (
ts timestamp,
temperature float,
humidity float,
volume float,
PM10 float,
pm25 float,
SO2 float,
NO2 float,
CO float,
sensor_id NCHAR(255),
area TINYINT,
coll_time timestamp
);
四、配置 EMQ X 规则引擎
1.打开 EMQ X Dashboared( http://127.0.0.1:18083 )使用 admin public 默认用户名密码完成初次登录,在设置中切换为中文
2.进入 规则引擎 -> 规则 页面,点击 新建 按钮进入创建页面
3.填写 规则SQL
SELECT
payload
FROM
"sensor/data"
4.添加 响应动作,“动作”选择发送数据到Web服务
5.在“关键资源”新建资源,资源类型“WebHook”,资源名称“Tdengine Local”,请求URL“http://127.0.0.1:6041/rest/sql”,请求方法“POST”,请求头的键“Authorization”、的值“Basic cm9vdDp0YW9zZGF0YQ==”,点击新建按钮
6.关键资源选择新建的“Tdengine Local”,消息内容模板为
INSERT INTO test.sensor_data VALUES(
now,
${payload.temperature},
${payload.humidity},
${payload.volume},
${payload.PM10},
${payload.pm25},
${payload.SO2},
${payload.NO2},
${payload.CO},
'${payload.id}',
${payload.area},
${payload.ts}
)
五、生成模拟数据
1.创建脚本文件
$ vim mock.js
2.复制脚本代码
// mock.js
const mqtt = require('mqtt')
const Mock = require('mockjs')
const EMQX_SERVER = 'mqtt://localhost:1883'
const CLIENT_NUM = 100