场景介绍
该场景需要将 EMQ X 指定主题下且满足条件的消息存储到 MySQL 数据库。为了便于后续分析检索,消息内容需要进行拆分存储。
该场景下设备端上报信息如下:
-
上报主题:cmd/state/:id,主题中 id 代表车辆客户端识别码
-
消息体:
{ "id": "NXP-058659730253-963945118132721-22", // 客户端识别码 "speed": 32.12, // 车辆速度 "direction": 198.33212, // 行驶方向 "tachometer": 3211, // 发动机转速,数值大于 8000 时才需存储 "dynamical": 8.93, // 瞬时油耗 "location": { // GPS 经纬度数据 "lng": 116.296011, "lat": 40.005091 }, "ts": 1563268202 // 上报时间 }
当上报数据发动机转速数值大于 8000
时,存储当前信息以便后续分析用户车辆使用情况。
准备工作
创建数据库
创建 iot_data
数据库以存储消息数据,这里指定数据库编码为 utf8mb4
避免编码问题:
CREATE DATABASE `emqx_rule_engine_output` CHARACTER SET utf8mb4;
创建数据表
根据场景需求,创建数据表 use_statistics
结构及字段注释如下:
CREATE TABLE `use_statistics` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`client_id` varchar(100) DEFAULT NULL COMMENT '客户端识别码',
`speed` float unsigned DEFAULT '0.00' COMMENT '当前车速',