纳入范围: - backend/ Spring Boot 多模块后端(iot-common/device/rule/data/alarm/auth) - frontend/admin/ Vue3 + Element Plus 管理后台 - Android/ 涂鸦原生 APP (com.xhai.iot) - backend/sql/ Flyway 风格迁移脚本(V2~V21) - docs/ 对接文档与设计文档 排除范围: - 构建产物: node_modules/ target/ build/ dist/ .gradle/ - 签名密钥: *.jks *.keystore (严禁入库) - 本机配置: Android/local.properties - 运行日志: logs/ *.log - AI 协作本地数据 .codebuddy/ 与第三方 demo tuya-demo/ .gitattributes 统一以 LF 存储, Windows 批处理保留 CRLF
330 lines
17 KiB
SQL
330 lines
17 KiB
SQL
-- ========================================
|
||
-- IoT Platform 数据库初始化脚本
|
||
-- ========================================
|
||
|
||
-- 创建数据库
|
||
CREATE DATABASE IF NOT EXISTS `iot_platform` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
|
||
|
||
USE `iot_platform`;
|
||
|
||
-- ========================================
|
||
-- 租户表
|
||
-- ========================================
|
||
CREATE TABLE IF NOT EXISTS `tenant` (
|
||
`id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '租户ID',
|
||
`tenant_name` VARCHAR(128) NOT NULL COMMENT '租户名称',
|
||
`tenant_code` VARCHAR(64) NOT NULL COMMENT '租户编码',
|
||
`contact_person` VARCHAR(64) COMMENT '联系人',
|
||
`contact_phone` VARCHAR(20) COMMENT '联系电话',
|
||
`email` VARCHAR(128) COMMENT '邮箱',
|
||
`status` TINYINT DEFAULT 1 COMMENT '状态(0-禁用,1-启用)',
|
||
`expire_time` DATETIME COMMENT '过期时间',
|
||
`create_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||
`update_time` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
|
||
`deleted` TINYINT DEFAULT 0 COMMENT '删除标记(0-未删除,1-已删除)',
|
||
PRIMARY KEY (`id`),
|
||
UNIQUE KEY `uk_tenant_code` (`tenant_code`),
|
||
KEY `idx_status` (`status`)
|
||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='租户表';
|
||
|
||
-- ========================================
|
||
-- 用户表
|
||
-- ========================================
|
||
CREATE TABLE IF NOT EXISTS `sys_user` (
|
||
`id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '用户ID',
|
||
`username` VARCHAR(64) NOT NULL COMMENT '用户名',
|
||
`password` VARCHAR(128) NOT NULL COMMENT '密码',
|
||
`real_name` VARCHAR(64) COMMENT '真实姓名',
|
||
`phone` VARCHAR(20) COMMENT '手机号',
|
||
`email` VARCHAR(128) COMMENT '邮箱',
|
||
`avatar` VARCHAR(512) COMMENT '头像URL',
|
||
`status` TINYINT DEFAULT 1 COMMENT '状态(0-禁用,1-启用)',
|
||
`tenant_id` BIGINT COMMENT '租户ID',
|
||
`role` VARCHAR(20) NOT NULL DEFAULT 'user' COMMENT '角色(admin/user)',
|
||
`create_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||
`update_time` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
|
||
`deleted` TINYINT DEFAULT 0 COMMENT '删除标记(0-未删除,1-已删除)',
|
||
`create_by` BIGINT DEFAULT 0 COMMENT '创建人ID',
|
||
`update_by` BIGINT DEFAULT 0 COMMENT '更新人ID',
|
||
PRIMARY KEY (`id`),
|
||
UNIQUE KEY `uk_username` (`username`),
|
||
KEY `idx_phone` (`phone`),
|
||
KEY `idx_tenant_id` (`tenant_id`)
|
||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='用户表';
|
||
|
||
-- ========================================
|
||
-- 角色表
|
||
-- ========================================
|
||
CREATE TABLE IF NOT EXISTS `sys_role` (
|
||
`id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '角色ID',
|
||
`role_name` VARCHAR(64) NOT NULL COMMENT '角色名称',
|
||
`role_code` VARCHAR(64) NOT NULL COMMENT '角色编码',
|
||
`description` VARCHAR(255) COMMENT '角色描述',
|
||
`status` TINYINT DEFAULT 1 COMMENT '状态(0-禁用,1-启用)',
|
||
`create_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||
`update_time` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
|
||
`deleted` TINYINT DEFAULT 0 COMMENT '删除标记(0-未删除,1-已删除)',
|
||
PRIMARY KEY (`id`),
|
||
UNIQUE KEY `uk_role_code` (`role_code`)
|
||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='角色表';
|
||
|
||
-- ========================================
|
||
-- 用户角色关联表
|
||
-- ========================================
|
||
CREATE TABLE IF NOT EXISTS `sys_user_role` (
|
||
`id` BIGINT NOT NULL AUTO_INCREMENT,
|
||
`user_id` BIGINT NOT NULL COMMENT '用户ID',
|
||
`role_id` BIGINT NOT NULL COMMENT '角色ID',
|
||
`create_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||
PRIMARY KEY (`id`),
|
||
UNIQUE KEY `uk_user_role` (`user_id`, `role_id`),
|
||
KEY `idx_user_id` (`user_id`),
|
||
KEY `idx_role_id` (`role_id`)
|
||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='用户角色关联表';
|
||
|
||
-- ========================================
|
||
-- 设备分组表
|
||
-- ========================================
|
||
CREATE TABLE IF NOT EXISTS `device_group` (
|
||
`id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '分组ID',
|
||
`group_name` VARCHAR(128) NOT NULL COMMENT '分组名称',
|
||
`group_code` VARCHAR(64) NOT NULL COMMENT '分组编码',
|
||
`parent_id` BIGINT DEFAULT 0 COMMENT '父分组ID',
|
||
`description` VARCHAR(255) COMMENT '分组描述',
|
||
`sort` INT DEFAULT 0 COMMENT '排序',
|
||
`status` TINYINT DEFAULT 1 COMMENT '状态(0停用 1正常)',
|
||
`tenant_id` BIGINT COMMENT '租户ID',
|
||
`create_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||
`update_time` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
|
||
`deleted` TINYINT DEFAULT 0 COMMENT '删除标记(0-未删除,1-已删除)',
|
||
`create_by` BIGINT COMMENT '创建人ID',
|
||
`update_by` BIGINT COMMENT '更新人ID',
|
||
PRIMARY KEY (`id`),
|
||
UNIQUE KEY `uk_group_code` (`group_code`),
|
||
KEY `idx_tenant_id` (`tenant_id`)
|
||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='设备分组表';
|
||
|
||
-- ========================================
|
||
-- 设备表
|
||
-- ========================================
|
||
CREATE TABLE IF NOT EXISTS `device` (
|
||
`id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '设备ID',
|
||
`device_id` VARCHAR(64) NOT NULL COMMENT '设备唯一标识',
|
||
`device_name` VARCHAR(128) NOT NULL COMMENT '设备名称',
|
||
`platform` VARCHAR(32) NOT NULL COMMENT '设备平台(tuya/miot/dueros/local/matter)',
|
||
`device_type` VARCHAR(64) NOT NULL COMMENT '设备类型',
|
||
`manufacturer` VARCHAR(64) COMMENT '厂商',
|
||
`model` VARCHAR(64) COMMENT '型号',
|
||
`firmware_version` VARCHAR(32) COMMENT '固件版本',
|
||
`status` VARCHAR(16) DEFAULT 'offline' COMMENT '状态(online/offline/error/upgrading)',
|
||
`capabilities` JSON COMMENT '设备能力描述',
|
||
`location` VARCHAR(128) COMMENT '设备位置',
|
||
`group_id` BIGINT COMMENT '分组ID',
|
||
`remark` VARCHAR(512) COMMENT '备注',
|
||
`create_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||
`update_time` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
|
||
`deleted` TINYINT DEFAULT 0 COMMENT '删除标记(0-未删除,1-已删除)',
|
||
`tenant_id` BIGINT COMMENT '租户ID',
|
||
`create_by` BIGINT COMMENT '创建人ID',
|
||
`update_by` BIGINT COMMENT '更新人ID',
|
||
PRIMARY KEY (`id`),
|
||
UNIQUE KEY `uk_device_id` (`device_id`),
|
||
KEY `idx_platform` (`platform`),
|
||
KEY `idx_device_type` (`device_type`),
|
||
KEY `idx_status` (`status`),
|
||
KEY `idx_tenant_id` (`tenant_id`),
|
||
KEY `idx_group_id` (`group_id`)
|
||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='设备表';
|
||
|
||
-- ========================================
|
||
-- 设备凭证表
|
||
-- ========================================
|
||
CREATE TABLE IF NOT EXISTS `device_credential` (
|
||
`id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '凭证ID',
|
||
`device_id` VARCHAR(64) NOT NULL COMMENT '设备ID',
|
||
`credential_type` VARCHAR(32) NOT NULL COMMENT '凭证类型(api_key/token/password)',
|
||
`credential_value` VARCHAR(512) NOT NULL COMMENT '凭证值(加密存储)',
|
||
`expires_at` DATETIME COMMENT '过期时间',
|
||
`create_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||
`update_time` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
|
||
`deleted` TINYINT DEFAULT 0 COMMENT '删除标记(0-未删除,1-已删除)',
|
||
PRIMARY KEY (`id`),
|
||
UNIQUE KEY `uk_device_id_type` (`device_id`, `credential_type`),
|
||
KEY `idx_device_id` (`device_id`)
|
||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='设备凭证表';
|
||
|
||
-- ========================================
|
||
-- 联动规则表
|
||
-- ========================================
|
||
CREATE TABLE IF NOT EXISTS `linkage_rule` (
|
||
`id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '规则ID',
|
||
`rule_name` VARCHAR(128) NOT NULL COMMENT '规则名称',
|
||
`rule_code` VARCHAR(64) NOT NULL COMMENT '规则编码',
|
||
`trigger_device_id` VARCHAR(64) NOT NULL COMMENT '触发设备ID',
|
||
`condition_expression` VARCHAR(512) NOT NULL COMMENT '触发条件',
|
||
`actions` JSON NOT NULL COMMENT '执行动作列表',
|
||
`enabled` TINYINT DEFAULT 1 COMMENT '是否启用(0-禁用,1-启用)',
|
||
`tenant_id` BIGINT COMMENT '租户ID',
|
||
`create_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||
`update_time` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
|
||
`deleted` TINYINT DEFAULT 0 COMMENT '删除标记(0-未删除,1-已删除)',
|
||
`create_by` BIGINT COMMENT '创建人ID',
|
||
`update_by` BIGINT COMMENT '更新人ID',
|
||
PRIMARY KEY (`id`),
|
||
UNIQUE KEY `uk_rule_code` (`rule_code`),
|
||
KEY `idx_trigger_device_id` (`trigger_device_id`),
|
||
KEY `idx_enabled` (`enabled`),
|
||
KEY `idx_tenant_id` (`tenant_id`)
|
||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='联动规则表';
|
||
|
||
-- ========================================
|
||
-- 告警规则表
|
||
-- ========================================
|
||
CREATE TABLE IF NOT EXISTS `alarm_rule` (
|
||
`id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '规则ID',
|
||
`rule_name` VARCHAR(128) NOT NULL COMMENT '规则名称',
|
||
`rule_code` VARCHAR(64) NOT NULL COMMENT '规则编码',
|
||
`device_id` VARCHAR(64) COMMENT '设备ID(空表示所有设备)',
|
||
`data_point` VARCHAR(64) COMMENT '数据点',
|
||
`condition_expression` VARCHAR(512) NOT NULL COMMENT '条件表达式',
|
||
`alarm_level` VARCHAR(16) NOT NULL COMMENT '告警级别',
|
||
`alarm_template` VARCHAR(512) NOT NULL COMMENT '告警消息模板',
|
||
`enabled` TINYINT DEFAULT 1 COMMENT '是否启用(0-禁用,1-启用)',
|
||
`deduplication_window` INT DEFAULT 5 COMMENT '告警去重时间窗口(分钟)',
|
||
`notification_methods` VARCHAR(128) COMMENT '通知方式',
|
||
`tenant_id` BIGINT COMMENT '租户ID',
|
||
`create_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||
`update_time` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
|
||
`deleted` TINYINT DEFAULT 0 COMMENT '删除标记(0-未删除,1-已删除)',
|
||
`create_by` BIGINT COMMENT '创建人ID',
|
||
`update_by` BIGINT COMMENT '更新人ID',
|
||
PRIMARY KEY (`id`),
|
||
UNIQUE KEY `uk_rule_code` (`rule_code`),
|
||
KEY `idx_device_id` (`device_id`),
|
||
KEY `idx_enabled` (`enabled`),
|
||
KEY `idx_alarm_level` (`alarm_level`),
|
||
KEY `idx_tenant_id` (`tenant_id`)
|
||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='告警规则表';
|
||
|
||
-- ========================================
|
||
-- 告警表
|
||
-- ========================================
|
||
CREATE TABLE IF NOT EXISTS `alarm` (
|
||
`id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '告警ID',
|
||
`alarm_name` VARCHAR(128) NOT NULL COMMENT '告警名称',
|
||
`device_id` VARCHAR(64) NOT NULL COMMENT '设备ID',
|
||
`alarm_level` VARCHAR(16) NOT NULL COMMENT '告警级别(info/warning/critical/emergency)',
|
||
`alarm_content` VARCHAR(512) NOT NULL COMMENT '告警内容',
|
||
`status` VARCHAR(16) DEFAULT 'pending' COMMENT '状态(pending/confirmed/resolved)',
|
||
`confirmed_time` DATETIME COMMENT '确认时间',
|
||
`confirmed_by` BIGINT COMMENT '确认人ID',
|
||
`resolved_time` DATETIME COMMENT '解决时间',
|
||
`resolved_by` BIGINT COMMENT '解决人ID',
|
||
`tenant_id` BIGINT COMMENT '租户ID',
|
||
`create_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||
`update_time` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
|
||
`deleted` TINYINT DEFAULT 0 COMMENT '删除标记(0-未删除,1-已删除)',
|
||
PRIMARY KEY (`id`),
|
||
KEY `idx_device_id` (`device_id`),
|
||
KEY `idx_alarm_level` (`alarm_level`),
|
||
KEY `idx_status` (`status`),
|
||
KEY `idx_create_time` (`create_time`),
|
||
KEY `idx_tenant_id` (`tenant_id`)
|
||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='告警表';
|
||
|
||
-- ========================================
|
||
-- 设备数据记录表
|
||
-- ========================================
|
||
CREATE TABLE IF NOT EXISTS `device_data_record` (
|
||
`id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '记录ID',
|
||
`device_id` VARCHAR(64) NOT NULL COMMENT '设备ID',
|
||
`device_type` VARCHAR(64) COMMENT '设备类型',
|
||
`data_content` JSON COMMENT '数据内容',
|
||
`data_timestamp` BIGINT COMMENT '数据时间戳',
|
||
`data_source` VARCHAR(32) COMMENT '数据来源(mqtt/http/coap等)',
|
||
`data_quality` VARCHAR(16) COMMENT '数据质量(good/bad/uncertain)',
|
||
`tenant_id` BIGINT COMMENT '租户ID',
|
||
`create_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||
`update_time` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
|
||
`deleted` TINYINT DEFAULT 0 COMMENT '删除标记(0-未删除,1-已删除)',
|
||
PRIMARY KEY (`id`),
|
||
KEY `idx_device_id` (`device_id`),
|
||
KEY `idx_data_timestamp` (`data_timestamp`),
|
||
KEY `idx_tenant_id` (`tenant_id`)
|
||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='设备数据记录表';
|
||
|
||
-- ========================================
|
||
-- 操作日志表
|
||
-- ========================================
|
||
CREATE TABLE IF NOT EXISTS `operation_log` (
|
||
`id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '日志ID',
|
||
`user_id` BIGINT COMMENT '用户ID',
|
||
`username` VARCHAR(64) COMMENT '用户名',
|
||
`operation` VARCHAR(64) NOT NULL COMMENT '操作类型',
|
||
`method` VARCHAR(64) COMMENT '请求方法',
|
||
`url` VARCHAR(255) COMMENT '请求URL',
|
||
`ip` VARCHAR(64) COMMENT 'IP地址',
|
||
`location` VARCHAR(128) COMMENT 'IP位置',
|
||
`params` TEXT COMMENT '请求参数',
|
||
`result` TEXT COMMENT '返回结果',
|
||
`status` TINYINT COMMENT '状态(0-失败,1-成功)',
|
||
`error_msg` VARCHAR(512) COMMENT '错误信息',
|
||
`execute_time` BIGINT COMMENT '执行时长(毫秒)',
|
||
`create_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||
PRIMARY KEY (`id`),
|
||
KEY `idx_user_id` (`user_id`),
|
||
KEY `idx_operation` (`operation`),
|
||
KEY `idx_create_time` (`create_time`)
|
||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='操作日志表';
|
||
|
||
-- ========================================
|
||
-- 初始化数据
|
||
-- ========================================
|
||
|
||
-- 插入默认租户
|
||
INSERT INTO `tenant` (`tenant_name`, `tenant_code`, `contact_person`, `status`)
|
||
VALUES ('默认租户', 'default', 'System', 1)
|
||
ON DUPLICATE KEY UPDATE `tenant_name` = VALUES(`tenant_name`);
|
||
|
||
-- 插入默认角色
|
||
INSERT INTO `sys_role` (`role_name`, `role_code`, `description`)
|
||
VALUES
|
||
('超级管理员', 'admin', '系统最高权限'),
|
||
('普通用户', 'user', '普通用户权限')
|
||
ON DUPLICATE KEY UPDATE `role_name` = VALUES(`role_name`);
|
||
|
||
-- 插入默认管理员用户 (密码: admin123)
|
||
INSERT INTO `sys_user` (`username`, `password`, `real_name`, `phone`, `email`, `status`)
|
||
VALUES ('admin', '$2b$10$xhf.eoyA0/RldzGMiGd1YeGHg.eXEOl4vyPz4Z05ykobWtxYlrWXa', '系统管理员', '13800138000', 'admin@iot.com', 1)
|
||
ON DUPLICATE KEY UPDATE `password` = VALUES(`password`);
|
||
|
||
-- 关联管理员和超级管理员角色
|
||
INSERT INTO `sys_user_role` (`user_id`, `role_id`)
|
||
SELECT u.id, r.id
|
||
FROM `sys_user` u, `sys_role` r
|
||
WHERE u.username = 'admin' AND r.role_code = 'admin'
|
||
ON DUPLICATE KEY UPDATE `user_id` = VALUES(`user_id`);
|
||
|
||
-- 插入默认设备分组
|
||
INSERT INTO `device_group` (`group_name`, `group_code`, `parent_id`, `description`, `sort`, `tenant_id`)
|
||
VALUES
|
||
('照明设备', 'light_group', 0, '照明相关设备', 1, 1),
|
||
('传感器', 'sensor_group', 0, '传感器设备', 2, 1),
|
||
('智能插座', 'socket_group', 0, '智能插座设备', 3, 1)
|
||
ON DUPLICATE KEY UPDATE `group_name` = VALUES(`group_name`);
|
||
|
||
-- 插入示例设备
|
||
INSERT INTO `device` (`device_id`, `device_name`, `platform`, `device_type`, `manufacturer`, `model`, `firmware_version`, `status`, `location`, `group_id`, `tenant_id`)
|
||
VALUES
|
||
('LOCAL_LIGHT_001', '客厅智能灯', 'local', 'light', 'IoT Platform', 'LOCAL-001', '1.0.0', 'online', '客厅', 1, 1),
|
||
('LOCAL_SENSOR_001', '温湿度传感器', 'local', 'sensor', 'IoT Platform', 'SENSOR-001', '1.0.0', 'online', '客厅', 2, 1),
|
||
('LOCAL_SOCKET_001', '智能插座', 'local', 'socket', 'IoT Platform', 'SOCKET-001', '1.0.0', 'offline', '卧室', 3, 1)
|
||
ON DUPLICATE KEY UPDATE `device_name` = VALUES(`device_name`);
|
||
|
||
-- 插入示例告警规则
|
||
INSERT INTO `alarm_rule` (`rule_name`, `rule_code`, `device_id`, `data_point`, `condition_expression`, `alarm_level`, `alarm_template`, `enabled`, `deduplication_window`, `notification_methods`, `tenant_id`)
|
||
VALUES
|
||
('温度过高告警', 'TEMP_HIGH_ALARM', NULL, 'temperature', 'temperature > 30', 'critical', '设备${deviceId}温度过高,当前温度:${temperature}℃', 1, 5, 'websocket,email', 1),
|
||
('设备离线告警', 'DEVICE_OFFLINE_ALARM', NULL, 'status', 'status == \"offline\"', 'warning', '设备${deviceId}已离线', 1, 10, 'websocket,email', 1)
|
||
ON DUPLICATE KEY UPDATE `rule_name` = VALUES(`rule_name`);
|