868 lines
39 KiB
SQL
868 lines
39 KiB
SQL
|
||
-- ----------------------------
|
||
-- 部门表
|
||
-- ----------------------------
|
||
CREATE TABLE IF NOT EXISTS department (
|
||
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||
name TEXT NOT NULL UNIQUE, -- 部门名称
|
||
manager_id INTEGER, -- 部门经理ID
|
||
description TEXT, -- 部门描述
|
||
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
||
FOREIGN KEY (manager_id) REFERENCES user(id)
|
||
);
|
||
|
||
-- ----------------------------
|
||
-- 用户表(密码改为明文存储,不加密)
|
||
-- ----------------------------
|
||
CREATE TABLE IF NOT EXISTS user (
|
||
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||
username TEXT UNIQUE NOT NULL, -- 用户名(唯一)
|
||
password TEXT NOT NULL, -- 密码(明文存储,不加密)
|
||
real_name TEXT, -- 真实姓名
|
||
email TEXT UNIQUE, -- 邮箱(唯一)
|
||
phone TEXT, -- 联系电话
|
||
department_id INTEGER, -- 所属部门(外键)
|
||
position TEXT, -- 职位/职务
|
||
permission_level TEXT NOT NULL, -- 权限级别(Admin/Supervisor/Operator)
|
||
hire_date DATE, -- 入职日期
|
||
status TEXT DEFAULT 'Active', -- 状态(Active/Inactive)
|
||
linked_devices INTEGER DEFAULT 0, -- 关联设备数量
|
||
last_login TIMESTAMP, -- 最后登录时间
|
||
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, -- 创建时间
|
||
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, -- 更新时间
|
||
CHECK (permission_level IN ('Admin', 'Supervisor', 'Operator')),
|
||
CHECK (status IN ('Active', 'Inactive')),
|
||
FOREIGN KEY (department_id) REFERENCES department(id)
|
||
);
|
||
|
||
-- 创建更新触发器自动更新updated_at字段
|
||
CREATE TRIGGER IF NOT EXISTS update_user_timestamp
|
||
AFTER UPDATE ON user
|
||
FOR EACH ROW
|
||
BEGIN
|
||
UPDATE user SET updated_at = CURRENT_TIMESTAMP WHERE id = OLD.id;
|
||
END;
|
||
|
||
-- ----------------------------
|
||
-- 插入管理员用户(使用正确的权限级别格式)
|
||
-- ----------------------------
|
||
INSERT INTO user (username, password, real_name, email, permission_level, status)
|
||
VALUES ('root', 'root', 'root', '397088740@qq.com', 'Admin', 'Active')
|
||
ON CONFLICT(username) DO NOTHING;
|
||
|
||
-- ----------------------------
|
||
-- 用户设备关联表(新增)
|
||
-- ----------------------------
|
||
CREATE TABLE IF NOT EXISTS user_device (
|
||
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||
user_id INTEGER NOT NULL,
|
||
device_id INTEGER NOT NULL,
|
||
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
||
FOREIGN KEY (user_id) REFERENCES user(id),
|
||
FOREIGN KEY (device_id) REFERENCES device(id)
|
||
);
|
||
|
||
-- ----------------------------
|
||
-- 设备表
|
||
-- ----------------------------
|
||
CREATE TABLE IF NOT EXISTS device (
|
||
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||
device_name TEXT NOT NULL,
|
||
device_code TEXT UNIQUE NOT NULL,
|
||
status TEXT NOT NULL,
|
||
operator TEXT, -- 操作人员
|
||
fault_description TEXT, -- 故障描述
|
||
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
|
||
);
|
||
|
||
-- ----------------------------
|
||
-- 温湿度数据表
|
||
-- ----------------------------
|
||
CREATE TABLE IF NOT EXISTS temperature_data (
|
||
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||
device_id INTEGER NOT NULL,
|
||
temperature REAL NOT NULL,
|
||
humidity REAL NOT NULL,
|
||
timestamp TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
||
ph REAL, -- pH值(实数类型)
|
||
light_intensity INTEGER, -- 光照强度(整数,单位:Lux)
|
||
FOREIGN KEY (device_id) REFERENCES device (id)
|
||
);
|
||
|
||
-- ----------------------------
|
||
-- 插入部门数据
|
||
-- ----------------------------
|
||
INSERT INTO department (name, manager_id, description) VALUES
|
||
('IT部', 1, '负责公司信息技术管理'),
|
||
('销售部', 2, '负责产品销售'),
|
||
('技术部', 3, '负责技术研发'),
|
||
('生产部', NULL, '负责产品生产'),
|
||
('运维部', NULL, '负责设备维护')
|
||
ON CONFLICT(name) DO NOTHING;
|
||
|
||
-- ----------------------------
|
||
-- 操作日志表
|
||
-- ----------------------------
|
||
CREATE TABLE IF NOT EXISTS operation_log (
|
||
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||
user_id INTEGER,
|
||
type TEXT NOT NULL,
|
||
message TEXT NOT NULL,
|
||
timestamp TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
||
FOREIGN KEY (user_id) REFERENCES user(id)
|
||
);
|
||
|
||
-- ----------------------------
|
||
-- 插入设备数据
|
||
-- ----------------------------
|
||
INSERT INTO device (device_name, device_code, status, operator, fault_description)
|
||
VALUES
|
||
('设备A', 'DEV-A', 'normal', 'root', NULL),
|
||
('设备B', 'DEV-B', 'warning', 'root', '温度过高'),
|
||
('设备C', 'DEV-C', 'fault', 'root', '传感器故障'),
|
||
('设备D', 'DEV-D', 'normal', 'root', NULL),
|
||
('设备E', 'DEV-E', 'Offline', 'root', NULL),
|
||
('中心设备', 'CENTER-DEV', 'normal', 'root', NULL),
|
||
('设备F', 'DEV-F', 'normal', 'root', NULL)
|
||
ON CONFLICT(device_code) DO NOTHING;
|
||
|
||
-- ----------------------------
|
||
-- 插入温湿度数据(设备A示例,包含ph和光照)
|
||
-- ----------------------------
|
||
INSERT INTO temperature_data (device_id, temperature, humidity, timestamp, ph, light_intensity) VALUES
|
||
(1, 22.0, 60, '2025-05-26 00:00:00', 6.5, 2000),
|
||
(1, 21.8, 59, '2025-05-26 01:00:00', 6.4, 1900),
|
||
(1, 21.5, 58, '2025-05-26 02:00:00', 6.3, 1800),
|
||
(1, 21.2, 57, '2025-05-26 03:00:00', 6.2, 1700),
|
||
(1, 21.0, 56, '2025-05-26 04:00:00', 6.1, 1600),
|
||
(1, 20.8, 55, '2025-05-26 05:00:00', 6.0, 1500),
|
||
(1, 21.2, 56, '2025-05-26 06:00:00', 6.2, 1800),
|
||
(1, 22.5, 58, '2025-05-26 07:00:00', 6.5, 2200),
|
||
(1, 24.0, 60, '2025-05-26 08:00:00', 6.8, 2500),
|
||
(1, 25.5, 62, '2025-05-26 09:00:00', 7.0, 2800),
|
||
(1, 26.8, 63, '2025-05-26 10:00:00', 7.2, 3000),
|
||
(1, 27.5, 62, '2025-05-26 11:00:00', 7.1, 3200),
|
||
(1, 28.0, 60, '2025-05-26 12:00:00', 7.0, 3500),
|
||
(1, 27.8, 58, '2025-05-26 13:00:00', 6.9, 3300),
|
||
(1, 27.2, 56, '2025-05-26 14:00:00', 6.8, 3000),
|
||
(1, 26.5, 55, '2025-05-26 15:00:00', 6.7, 2800),
|
||
(1, 25.5, 56, '2025-05-26 16:00:00', 6.6, 2500),
|
||
(1, 24.5, 58, '2025-05-26 17:00:00', 6.5, 2200),
|
||
(1, 23.5, 60, '2025-05-26 18:00:00', 6.4, 2000),
|
||
(1, 22.8, 61, '2025-05-26 19:00:00', 6.3, 1800),
|
||
(1, 22.0, 60, '2025-05-26 20:00:00', 6.2, 1700),
|
||
(1, 21.5, 59, '2025-05-26 21:00:00', 6.1, 1600),
|
||
(1, 21.2, 58, '2025-05-26 22:00:00', 6.0, 1500),
|
||
(1, 21.0, 57, '2025-05-26 23:00:00', 6.0, 1400),
|
||
(1, 21.2, 58, '2025-05-27 00:00:00', 6.2, 1800),
|
||
(1, 21.5, 59, '2025-05-27 01:00:00', 6.3, 1900),
|
||
(1, 21.8, 60, '2025-05-27 02:00:00', 6.4, 2000),
|
||
(1, 22.0, 61, '2025-05-27 03:00:00', 6.5, 2100),
|
||
(1, 22.5, 62, '2025-05-27 04:00:00', 6.6, 2200),
|
||
(1, 23.0, 63, '2025-05-27 05:00:00', 6.7, 2300),
|
||
(1, 24.0, 62, '2025-05-27 06:00:00', 6.8, 2500),
|
||
(1, 25.5, 60, '2025-05-27 07:00:00', 6.9, 2800),
|
||
(1, 27.0, 58, '2025-05-27 08:00:00', 7.0, 3000),
|
||
(1, 28.5, 55, '2025-05-27 09:00:00', 7.1, 3200),
|
||
(1, 30.0, 52, '2025-05-27 10:00:00', 7.2, 3500),
|
||
(1, 31.0, 50, '2025-05-27 11:00:00', 7.1, 3300),
|
||
(1, 31.5, 48, '2025-05-27 12:00:00', 7.0, 3000),
|
||
(1, 31.0, 47, '2025-05-27 13:00:00', 6.9, 2800),
|
||
(1, 30.0, 48, '2025-05-27 14:00:00', 6.8, 2500),
|
||
(1, 29.0, 50, '2025-05-27 15:00:00', 6.7, 2200),
|
||
(1, 28.0, 52, '2025-05-27 16:00:00', 6.6, 2000),
|
||
(1, 26.5, 55, '2025-05-27 17:00:00', 6.5, 1800),
|
||
(1, 25.0, 58, '2025-05-27 18:00:00', 6.4, 1600),
|
||
(1, 23.5, 60, '2025-05-27 19:00:00', 6.3, 1500),
|
||
(1, 22.0, 61, '2025-05-27 20:00:00', 6.2, 1400),
|
||
(1, 21.5, 60, '2025-05-27 21:00:00', 6.1, 1300),
|
||
(1, 21.2, 59, '2025-05-27 22:00:00', 6.0, 1200),
|
||
(1, 21.0, 58, '2025-05-27 23:00:00', 6.0, 1100);
|
||
|
||
-- 设备B(ID=2)警告设备(第二日15时高温异常)
|
||
INSERT INTO temperature_data (device_id, temperature, humidity, timestamp, ph, light_intensity) VALUES
|
||
(2, 26.5, 55, '2025-05-26 15:00:00', 6.8, 2500),
|
||
(2, 37.0, 55, '2025-05-27 15:00:00', 5.5, 3000),
|
||
(2, 28.0, 58, '2025-05-27 16:00:00', 6.5, 2800);
|
||
|
||
-- 设备C(ID=3)故障设备(第二日15时低温+低湿异常)
|
||
INSERT INTO temperature_data (device_id, temperature, humidity, timestamp, ph, light_intensity) VALUES
|
||
(3, 26.5, 55, '2025-05-26 15:00:00', 6.7, 2500),
|
||
(3, 16.0, 28, '2025-05-27 15:00:00', 5.0, 2000),
|
||
(3, 22.0, 58, '2025-05-27 16:00:00', 6.5, 2500);
|
||
|
||
-- 设备D(ID=4)复制设备A的数据(包含ph和光照)
|
||
INSERT INTO temperature_data (device_id, temperature, humidity, timestamp, ph, light_intensity)
|
||
SELECT 4, temperature, humidity, timestamp, ph, light_intensity
|
||
FROM temperature_data
|
||
WHERE device_id = 1;
|
||
|
||
-- 中心设备(ID=6)正常数据(部分)
|
||
INSERT INTO temperature_data (device_id, temperature, humidity, timestamp, ph, light_intensity) VALUES
|
||
(6, 24.0, 54, '2025-05-26 16:00:00', 6.5, 2000),
|
||
(6, 24.2, 54, '2025-05-26 17:00:00', 6.5, 2100),
|
||
(6, 23.8, 55, '2025-05-26 18:00:00', 6.4, 1900),
|
||
(6, 23.5, 55, '2025-05-26 19:00:00', 6.4, 1800),
|
||
(6, 23.2, 55, '2025-05-26 20:00:00', 6.3, 1700),
|
||
(6, 23.0, 55, '2025-05-26 21:00:00', 6.3, 1600),
|
||
(6, 22.8, 55, '2025-05-26 22:00:00', 6.2, 1500),
|
||
(6, 22.5, 55, '2025-05-26 23:00:00', 6.2, 1400),
|
||
(6, 22.8, 55, '2025-05-27 00:00:00', 6.3, 1500),
|
||
(6, 23.0, 55, '2025-05-27 01:00:00', 6.3, 1600),
|
||
(6, 23.2, 55, '2025-05-27 02:00:00', 6.4, 1700),
|
||
(6, 23.5, 55, '2025-05-27 03:00:00', 6.4, 1800),
|
||
(6, 23.8, 55, '2025-05-27 04:00:00', 6.5, 1900),
|
||
(6, 24.0, 54, '2025-05-27 05:00:00', 6.5, 2000),
|
||
(6, 24.2, 54, '2025-05-27 06:00:00', 6.6, 2100),
|
||
(6, 24.5, 54, '2025-05-27 07:00:00', 6.6, 2200),
|
||
(6, 25.0, 53, '2025-05-27 08:00:00', 6.7, 2300),
|
||
(6, 25.5, 53, '2025-05-27 09:00:00', 6.8, 2400),
|
||
(6, 26.0, 53, '2025-05-27 10:00:00', 6.8, 2500),
|
||
(6, 26.5, 52, '2025-05-27 11:00:00', 6.9, 2600),
|
||
(6, 27.0, 52, '2025-05-27 12:00:00', 7.0, 2700),
|
||
(6, 26.8, 52, '2025-05-27 13:00:00', 6.9, 2600),
|
||
(6, 26.5, 52, '2025-05-27 14:00:00', 6.9, 2500),
|
||
(6, 26.0, 52, '2025-05-27 15:00:00', 6.8, 2400),
|
||
(6, 25.5, 53, '2025-05-27 16:00:00', 6.7, 2300),
|
||
(6, 25.0, 53, '2025-05-27 17:00:00', 6.7, 2200),
|
||
(6, 24.5, 54, '2025-05-27 18:00:00', 6.6, 2100),
|
||
(6, 24.2, 54, '2025-05-27 19:00:00', 6.6, 2000),
|
||
(6, 24.0, 54, '2025-05-27 20:00:00', 6.5, 1900),
|
||
(6, 23.8, 54, '2025-05-27 21:00:00', 6.5, 1800),
|
||
(6, 23.5, 55, '2025-05-27 22:00:00', 6.4, 1700),
|
||
(6, 23.2, 55, '2025-05-27 23:00:00', 6.4, 1600);
|
||
|
||
-- 设备F(ID=7)正常数据(部分)
|
||
INSERT INTO temperature_data (device_id, temperature, humidity, timestamp, ph, light_intensity) VALUES
|
||
(7, 22.0, 60, '2025-05-26 00:00:00', 6.5, 2000),
|
||
(7, 21.8, 59, '2025-05-26 01:00:00', 6.4, 1900),
|
||
(7, 21.5, 58, '2025-05-26 02:00:00', 6.3, 1800),
|
||
(7, 21.2, 57, '2025-05-26 03:00:00', 6.2, 1700),
|
||
(7, 21.0, 56, '2025-05-26 04:00:00', 6.1, 1600),
|
||
(7, 20.8, 55, '2025-05-26 05:00:00', 6.0, 1500),
|
||
(7, 21.2, 56, '2025-05-26 06:00:00', 6.2, 1800),
|
||
(7, 22.5, 58, '2025-05-26 07:00:00', 6.5, 2200),
|
||
(7, 24.0, 60, '2025-05-26 08:00:00', 6.8, 2500),
|
||
(7, 25.5, 62, '2025-05-26 09:00:00', 7.0, 2800),
|
||
(7, 26.8, 63, '2025-05-26 10:00:00', 7.2, 3000),
|
||
(7, 27.5, 62, '2025-05-26 11:00:00', 7.1, 3200),
|
||
(7, 28.0, 60, '2025-05-26 12:00:00', 7.0, 3500),
|
||
(7, 27.8, 58, '2025-05-26 13:00:00', 6.9, 3300),
|
||
(7, 27.2, 56, '2025-05-26 14:00:00', 6.8, 3000),
|
||
(7, 26.5, 55, '2025-05-26 15:00:00', 6.7, 2800),
|
||
(7, 25.5, 56, '2025-05-26 16:00:00', 6.6, 2500),
|
||
(7, 24.5, 58, '2025-05-26 17:00:00', 6.5, 2200),
|
||
(7, 23.5, 60, '2025-05-26 18:00:00', 6.4, 2000),
|
||
(7, 22.8, 61, '2025-05-26 19:00:00', 6.3, 1800),
|
||
(7, 22.0, 60, '2025-05-26 20:00:00', 6.2, 1700),
|
||
(7, 21.5, 59, '2025-05-26 21:00:00', 6.1, 1600),
|
||
(7, 21.2, 58, '2025-05-26 22:00:00', 6.0, 1500),
|
||
(7, 21.0, 57, '2025-05-26 23:00:00', 6.0, 1400),
|
||
(7, 21.2, 58, '2025-05-27 00:00:00', 6.2, 1800),
|
||
(7, 21.5, 59, '2025-05-27 01:00:00', 6.3, 1900),
|
||
(7, 21.8, 60, '2025-05-27 02:00:00', 6.4, 2000),
|
||
(7, 22.0, 61, '2025-05-27 03:00:00', 6.5, 2100),
|
||
(7, 22.5, 62, '2025-05-27 04:00:00', 6.6, 2200),
|
||
(7, 23.0, 63, '2025-05-27 05:00:00', 6.7, 2300),
|
||
(7, 24.0, 62, '2025-05-27 06:00:00', 6.8, 2500),
|
||
(7, 25.5, 60, '2025-05-27 07:00:00', 6.9, 2800),
|
||
(7, 27.0, 58, '2025-05-27 08:00:00', 7.0, 3000),
|
||
(7, 28.5, 55, '2025-05-27 09:00:00', 7.1, 3200),
|
||
(7, 30.0, 52, '2025-05-27 10:00:00', 7.2, 3500),
|
||
(7, 31.0, 50, '2025-05-27 11:00:00', 7.1, 3300),
|
||
(7, 31.5, 48, '2025-05-27 12:00:00', 7.0, 3000),
|
||
(7, 31.0, 47, '2025-05-27 13:00:00', 6.9, 2800),
|
||
(7, 30.0, 48, '2025-05-27 14:00:00', 6.8, 2500),
|
||
(7, 29.0, 50, '2025-05-27 15:00:00', 6.7, 2200),
|
||
(7, 28.0, 52, '2025-05-27 16:00:00', 6.6, 2000),
|
||
(7, 26.5, 55, '2025-05-27 17:00:00', 6.5, 1800),
|
||
(7, 25.0, 58, '2025-05-27 18:00:00', 6.4, 1600),
|
||
(7, 23.5, 60, '2025-05-27 19:00:00', 6.3, 1500),
|
||
(7, 22.0, 61, '2025-05-27 20:00:00', 6.2, 1400),
|
||
(7, 21.5, 60, '2025-05-27 21:00:00', 6.1, 1300),
|
||
(7, 21.2, 59, '2025-05-27 22:00:00', 6.0, 1200),
|
||
(7, 21.0, 58, '2025-05-27 23:00:00', 6.0, 1100);
|
||
|
||
-- ----------------------------
|
||
-- 索引优化
|
||
-- ----------------------------
|
||
CREATE INDEX IF NOT EXISTS idx_user_permission ON user(permission_level);
|
||
CREATE INDEX IF NOT EXISTS idx_user_status ON user(status);
|
||
CREATE INDEX IF NOT EXISTS idx_user_department ON user(department_id);
|
||
CREATE INDEX IF NOT EXISTS idx_user_hire_date ON user(hire_date DESC);
|
||
CREATE INDEX IF NOT EXISTS idx_user_device_user ON user_device(user_id);
|
||
CREATE INDEX IF NOT EXISTS idx_user_device_device ON user_device(device_id);
|
||
CREATE INDEX IF NOT EXISTS idx_device_status ON device(status);
|
||
|
||
-- ----------------------------
|
||
-- 设备B、C除特殊时刻外复制设备A的数据
|
||
-- ----------------------------
|
||
-- 删除设备B的非特殊时刻数据
|
||
DELETE FROM temperature_data
|
||
WHERE device_id = 2
|
||
AND timestamp NOT IN ('2025-05-26 15:00:00', '2025-05-27 15:00:00', '2025-05-27 16:00:00');
|
||
|
||
-- 删除设备C的非特殊时刻数据
|
||
DELETE FROM temperature_data
|
||
WHERE device_id = 3
|
||
AND timestamp NOT IN ('2025-05-26 15:00:00', '2025-05-27 15:00:00', '2025-05-27 16:00:00');
|
||
|
||
-- 设备B复制设备A的数据(非特殊时刻)
|
||
INSERT INTO temperature_data (device_id, temperature, humidity, timestamp, ph, light_intensity)
|
||
SELECT 2, temperature, humidity, timestamp, ph, light_intensity
|
||
FROM temperature_data
|
||
WHERE device_id = 1
|
||
AND timestamp NOT IN ('2025-05-26 15:00:00', '2025-05-27 15:00:00', '2025-05-27 16:00:00');
|
||
|
||
-- 设备C复制设备A的数据(非特殊时刻)
|
||
INSERT INTO temperature_data (device_id, temperature, humidity, timestamp, ph, light_intensity)
|
||
SELECT 3, temperature, humidity, timestamp, ph, light_intensity
|
||
FROM temperature_data
|
||
WHERE device_id = 1
|
||
AND timestamp NOT IN ('2025-05-26 15:00:00', '2025-05-27 15:00:00', '2025-05-27 16:00:00');
|
||
|
||
CREATE TABLE IF NOT EXISTS notification_log (
|
||
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||
fault_id INTEGER NOT NULL,
|
||
recipient TEXT NOT NULL,
|
||
content TEXT NOT NULL,
|
||
send_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
||
status TEXT DEFAULT 'success', -- success/failure
|
||
FOREIGN KEY (fault_id) REFERENCES device (id)
|
||
);
|
||
|
||
-- ----------------------------
|
||
-- 添加历史数据(前2天和后2天,每小时一个数据点)
|
||
-- ----------------------------
|
||
|
||
-- 设备A(ID=1)添加前2天和后2天数据
|
||
WITH hour_sequence AS (
|
||
-- 生成24小时序列(0-23点)
|
||
SELECT 0 AS hour UNION ALL
|
||
SELECT hour + 1 FROM hour_sequence WHERE hour < 23
|
||
), date_range AS (
|
||
-- 生成日期范围:前2天、前1天、今日、后1天、后2天
|
||
SELECT DATE('2025-05-27', '-2 days') AS date UNION ALL
|
||
SELECT DATE('2025-05-27', '-1 days') UNION ALL
|
||
SELECT DATE('2025-05-27') UNION ALL
|
||
SELECT DATE('2025-05-27', '+1 days') UNION ALL
|
||
SELECT DATE('2025-05-27', '+2 days')
|
||
)
|
||
INSERT INTO temperature_data (device_id, temperature, humidity, timestamp, ph, light_intensity)
|
||
SELECT
|
||
1,
|
||
25.0 + (h.hour - 12) * 0.1, -- 温度:25℃基础值,每小时波动±1.2℃
|
||
60.0 + (h.hour - 12) * 0.2, -- 湿度:60%基础值,每小时波动±2.4%
|
||
datetime(d.date, '00:00:00') + (h.hour || ':00:00') AS timestamp,
|
||
6.8 + 0.05 * (h.hour - 12), -- PH值:6.8基础值,范围6.0-7.6
|
||
500 + (h.hour - 12) * 50 -- 光照强度:500基础值,每小时波动±600
|
||
FROM date_range d
|
||
CROSS JOIN hour_sequence h
|
||
WHERE d.date BETWEEN DATE('2025-05-27', '-2 days') AND DATE('2025-05-27', '+2 days');
|
||
|
||
|
||
-- 设备B(ID=2)添加前2天和后2天数据(基础值与波动幅度调整)
|
||
WITH hour_sequence AS (
|
||
SELECT 0 AS hour UNION ALL
|
||
SELECT hour + 1 FROM hour_sequence WHERE hour < 23
|
||
), date_range AS (
|
||
SELECT DATE('2025-05-27', '-2 days') AS date UNION ALL
|
||
SELECT DATE('2025-05-27', '-1 days') UNION ALL
|
||
SELECT DATE('2025-05-27') UNION ALL
|
||
SELECT DATE('2025-05-27', '+1 days') UNION ALL
|
||
SELECT DATE('2025-05-27', '+2 days')
|
||
)
|
||
INSERT INTO temperature_data (device_id, temperature, humidity, timestamp, ph, light_intensity)
|
||
SELECT
|
||
2,
|
||
26.5 + (h.hour - 12) * 0.15, -- 温度:26.5℃基础值
|
||
55.0 + (h.hour - 12) * 0.25, -- 湿度:55%基础值
|
||
datetime(d.date, '00:00:00') + (h.hour || ':00:00') AS timestamp,
|
||
7.2 + 0.04 * (h.hour - 12), -- PH值:7.2基础值
|
||
400 + (h.hour - 12) * 60 -- 光照强度:400基础值
|
||
FROM date_range d
|
||
CROSS JOIN hour_sequence h
|
||
WHERE d.date BETWEEN DATE('2025-05-27', '-2 days') AND DATE('2025-05-27', '+2 days');
|
||
|
||
|
||
-- 设备C(ID=3)添加前2天和后2天数据(不同设备特性)
|
||
WITH hour_sequence AS (
|
||
SELECT 0 AS hour UNION ALL
|
||
SELECT hour + 1 FROM hour_sequence WHERE hour < 23
|
||
), date_range AS (
|
||
SELECT DATE('2025-05-27', '-2 days') AS date UNION ALL
|
||
SELECT DATE('2025-05-27', '-1 days') UNION ALL
|
||
SELECT DATE('2025-05-27') UNION ALL
|
||
SELECT DATE('2025-05-27', '+1 days') UNION ALL
|
||
SELECT DATE('2025-05-27', '+2 days')
|
||
)
|
||
INSERT INTO temperature_data (device_id, temperature, humidity, timestamp, ph, light_intensity)
|
||
SELECT
|
||
3,
|
||
24.0 + (h.hour - 12) * 0.08, -- 温度:24℃基础值
|
||
65.0 + (h.hour - 12) * 0.18, -- 湿度:65%基础值
|
||
datetime(d.date, '00:00:00') + (h.hour || ':00:00') AS timestamp,
|
||
6.5 + 0.06 * (h.hour - 12), -- PH值:6.5基础值
|
||
600 + (h.hour - 12) * 40 -- 光照强度:600基础值
|
||
FROM date_range d
|
||
CROSS JOIN hour_sequence h
|
||
WHERE d.date BETWEEN DATE('2025-05-27', '-2 days') AND DATE('2025-05-27', '+2 days');
|
||
|
||
|
||
-- 设备D(ID=4)添加前2天和后2天数据
|
||
WITH hour_sequence AS (
|
||
SELECT 0 AS hour UNION ALL
|
||
SELECT hour + 1 FROM hour_sequence WHERE hour < 23
|
||
), date_range AS (
|
||
SELECT DATE('2025-05-27', '-2 days') AS date UNION ALL
|
||
SELECT DATE('2025-05-27', '-1 days') UNION ALL
|
||
SELECT DATE('2025-05-27') UNION ALL
|
||
SELECT DATE('2025-05-27', '+1 days') UNION ALL
|
||
SELECT DATE('2025-05-27', '+2 days')
|
||
)
|
||
INSERT INTO temperature_data (device_id, temperature, humidity, timestamp, ph, light_intensity)
|
||
SELECT
|
||
4,
|
||
27.0 + (h.hour - 12) * 0.12, -- 温度:27℃基础值
|
||
58.0 + (h.hour - 12) * 0.22, -- 湿度:58%基础值
|
||
datetime(d.date, '00:00:00') + (h.hour || ':00:00') AS timestamp,
|
||
7.0 + 0.05 * (h.hour - 12), -- PH值:7.0基础值
|
||
450 + (h.hour - 12) * 55 -- 光照强度:450基础值
|
||
FROM date_range d
|
||
CROSS JOIN hour_sequence h
|
||
WHERE d.date BETWEEN DATE('2025-05-27', '-2 days') AND DATE('2025-05-27', '+2 days');
|
||
|
||
|
||
-- 中心设备(ID=6)添加前2天和后2天数据
|
||
WITH hour_sequence AS (
|
||
SELECT 0 AS hour UNION ALL
|
||
SELECT hour + 1 FROM hour_sequence WHERE hour < 23
|
||
), date_range AS (
|
||
SELECT DATE('2025-05-27', '-2 days') AS date UNION ALL
|
||
SELECT DATE('2025-05-27', '-1 days') UNION ALL
|
||
SELECT DATE('2025-05-27') UNION ALL
|
||
SELECT DATE('2025-05-27', '+1 days') UNION ALL
|
||
SELECT DATE('2025-05-27', '+2 days')
|
||
)
|
||
INSERT INTO temperature_data (device_id, temperature, humidity, timestamp, ph, light_intensity)
|
||
SELECT
|
||
6,
|
||
25.5 + (h.hour - 12) * 0.09, -- 温度:25.5℃基础值(中心设备)
|
||
62.0 + (h.hour - 12) * 0.19, -- 湿度:62%基础值
|
||
datetime(d.date, '00:00:00') + (h.hour || ':00:00') AS timestamp,
|
||
6.9 + 0.05 * (h.hour - 12), -- PH值:6.9基础值
|
||
550 + (h.hour - 12) * 45 -- 光照强度:550基础值
|
||
FROM date_range d
|
||
CROSS JOIN hour_sequence h
|
||
WHERE d.date BETWEEN DATE('2025-05-27', '-2 days') AND DATE('2025-05-27', '+2 days');
|
||
|
||
|
||
-- 设备F(ID=7)添加前2天和后2天数据
|
||
WITH hour_sequence AS (
|
||
SELECT 0 AS hour UNION ALL
|
||
SELECT hour + 1 FROM hour_sequence WHERE hour < 23
|
||
), date_range AS (
|
||
SELECT DATE('2025-05-27', '-2 days') AS date UNION ALL
|
||
SELECT DATE('2025-05-27', '-1 days') UNION ALL
|
||
SELECT DATE('2025-05-27') UNION ALL
|
||
SELECT DATE('2025-05-27', '+1 days') UNION ALL
|
||
SELECT DATE('2025-05-27', '+2 days')
|
||
)
|
||
INSERT INTO temperature_data (device_id, temperature, humidity, timestamp, ph, light_intensity)
|
||
SELECT
|
||
7,
|
||
23.5 + (h.hour - 12) * 0.14, -- 温度:23.5℃基础值
|
||
68.0 + (h.hour - 12) * 0.24, -- 湿度:68%基础值
|
||
datetime(d.date, '00:00:00') + (h.hour || ':00:00') AS timestamp,
|
||
6.7 + 0.07 * (h.hour - 12), -- PH值:6.7基础值
|
||
350 + (h.hour - 12) * 65 -- 光照强度:350基础值
|
||
FROM date_range d
|
||
CROSS JOIN hour_sequence h
|
||
WHERE d.date BETWEEN DATE('2025-05-27', '-2 days') AND DATE('2025-05-27', '+2 days');
|
||
|
||
-- ----------------------------
|
||
-- 操作日志数据
|
||
-- ----------------------------
|
||
-- 添加用户创建日志
|
||
INSERT INTO operation_log (user_id, type, message) VALUES
|
||
(1, 'USER_CREATE', '创建用户 admin'),
|
||
(1, 'USER_CREATE', '创建用户 supervisor'),
|
||
(1, 'USER_CREATE', '创建用户 operator1'),
|
||
(1, 'USER_CREATE', '创建用户 operator2');
|
||
|
||
-- 添加用户更新日志
|
||
INSERT INTO operation_log (user_id, type, message) VALUES
|
||
(1, 'USER_UPDATE', '更新用户 admin 的联系方式'),
|
||
(2, 'USER_UPDATE', '更新用户 supervisor 的权限级别'),
|
||
(3, 'USER_UPDATE', '更新用户 operator1 的状态为 Inactive');
|
||
|
||
-- 添加用户删除日志
|
||
INSERT INTO operation_log (user_id, type, message) VALUES
|
||
(1, 'USER_DELETE', '删除用户 test_user'),
|
||
(2, 'USER_DELETE', '删除用户 temp_user');
|
||
|
||
-- 添加设备操作日志
|
||
INSERT INTO operation_log (user_id, type, message) VALUES
|
||
(1, 'DEVICE_MANAGE', '添加新设备 环境监测仪A'),
|
||
(2, 'DEVICE_MANAGE', '修改设备 环境监测仪B 的状态为警告'),
|
||
(3, 'DEVICE_MANAGE', '删除设备 环境监测仪C');
|
||
|
||
-- 添加数据查看日志
|
||
INSERT INTO operation_log (user_id, type, message) VALUES
|
||
(1, 'DATA_VIEW', '查看设备A的温湿度数据'),
|
||
(2, 'DATA_VIEW', '查看设备B的温湿度数据'),
|
||
(3, 'DATA_VIEW', '查看所有设备的故障记录'),
|
||
(4, 'DATA_VIEW', '导出2025年5月的温湿度数据报表');
|
||
|
||
-- 添加权限变更日志
|
||
INSERT INTO operation_log (user_id, type, message) VALUES
|
||
(1, 'PERMISSION_CHANGE', '将用户 supervisor 的权限提升为管理员'),
|
||
(1, 'PERMISSION_CHANGE', '将用户 operator1 的权限调整为主管'),
|
||
(2, 'PERMISSION_CHANGE', '将用户 operator2 的权限调整为操作员');
|
||
|
||
-- 添加系统操作日志
|
||
INSERT INTO operation_log (user_id, type, message) VALUES
|
||
(1, 'SYSTEM_OPERATION', '系统备份完成'),
|
||
(1, 'SYSTEM_OPERATION', '数据库优化执行完毕'),
|
||
(2, 'SYSTEM_OPERATION', '服务器状态检查完成'),
|
||
(3, 'SYSTEM_OPERATION', '数据同步任务启动');
|
||
|
||
-- ----------------------------
|
||
-- 湿度记录表
|
||
-- ----------------------------
|
||
DROP TABLE IF EXISTS soil_moisture;
|
||
|
||
CREATE TABLE soil_moisture (
|
||
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||
record_date TEXT NOT NULL UNIQUE,
|
||
moisture REAL NOT NULL
|
||
);
|
||
|
||
INSERT INTO soil_moisture (record_date, moisture) VALUES
|
||
('6.10', 55.0),
|
||
('6.11', 60.5),
|
||
('6.12', 80.0),
|
||
('6.13', 75.5),
|
||
('6.14', 65.0),
|
||
('6.15', 50.5),
|
||
('6.16', 90.0);
|
||
|
||
|
||
-- 删除已存在的表(如果需要)
|
||
DROP TABLE IF EXISTS sensor_data;
|
||
|
||
-- 创建新表,包含 temperature, humidity, pH 和 status 字段
|
||
CREATE TABLE sensor_data (
|
||
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||
record_time TEXT NOT NULL UNIQUE, -- 时间戳作为唯一记录标识
|
||
temperature REAL NOT NULL, -- 温度
|
||
humidity REAL NOT NULL, -- 湿度
|
||
ph REAL NOT NULL, -- pH 值
|
||
status TEXT NOT NULL -- 状态(normal/warning/abnormal 等)
|
||
);
|
||
|
||
-- 插入数据
|
||
INSERT INTO sensor_data (record_time, temperature, humidity, ph, status) VALUES
|
||
('2025-06-02 00:00:00', 18.1, 94.0, 6.6, 'normal'),
|
||
('2025-06-02 00:20:00', 18.7, 92.9, 6.7, 'normal'),
|
||
('2025-06-02 00:40:00', 19.3, 91.1, 6.8, 'normal'),
|
||
('2025-06-02 01:00:00', 18.6, 84.1, 6.7, 'normal'),
|
||
('2025-06-02 01:20:00', 18.6, 89.9, 6.8, 'normal'),
|
||
('2025-06-02 01:40:00', 19.7, 88.3, 6.7, 'normal'),
|
||
('2025-06-02 02:00:00', 18.5, 87.4, 6.6, 'normal'),
|
||
('2025-06-02 02:20:00', 20.8, 87.6, 6.7, 'normal'),
|
||
('2025-06-02 02:40:00', 19.2, 88.4, 6.7, 'normal'),
|
||
('2025-06-02 03:00:00', 19.5, 84.5, 6.7, 'normal'),
|
||
('2025-06-02 03:20:00', 20.7, 86.0, 6.6, 'normal'),
|
||
('2025-06-02 03:40:00', 19.4, 90.4, 6.7, 'normal'),
|
||
('2025-06-02 04:00:00', 21.6, 84.1, 6.7, 'normal'),
|
||
('2025-06-02 04:20:00', 21.4, 82.9, 6.6, 'normal'),
|
||
('2025-06-02 04:40:00', 22.6, 82.3, 6.6, 'normal'),
|
||
('2025-06-02 05:00:00', 22.7, 84.6, 6.8, 'normal'),
|
||
('2025-06-02 05:20:00', 23.9, 79.4, 6.8, 'normal'),
|
||
('2025-06-02 05:40:00', 22.9, 82.6, 6.6, 'normal'),
|
||
('2025-06-02 06:00:00', 24.7, 79.3, 6.7, 'normal'),
|
||
('2025-06-02 06:20:00', 24.5, 78.6, 6.6, 'normal'),
|
||
('2025-06-02 06:40:00', 24.5, 80.5, 6.7, 'normal'),
|
||
('2025-06-02 07:00:00', 25.5, 81.8, 6.6, 'normal'),
|
||
('2025-06-02 07:20:00', 25.2, 76.7, 6.7, 'normal'),
|
||
('2025-06-02 07:40:00', 25.7, 76.5, 6.8, 'normal'),
|
||
('2025-06-02 08:00:00', 26.1, 71.2, 6.8, 'normal'),
|
||
('2025-06-02 08:20:00', 27.1, 73.5, 6.7, 'normal'),
|
||
('2025-06-02 08:40:00', 27.2, 76.5, 6.6, 'normal'),
|
||
('2025-06-02 09:00:00', 25.9, 75.5, 6.5, 'normal'),
|
||
('2025-06-02 09:20:00', 29.0, 72.0, 6.8, 'normal'),
|
||
('2025-06-02 09:40:00', 29.5, 73.4, 6.7, 'normal'),
|
||
('2025-06-02 10:00:00', 27.9, 75.2, 6.8, 'normal'),
|
||
('2025-06-02 10:20:00', 29.3, 72.3, 6.7, 'normal'),
|
||
('2025-06-02 10:40:00', 29.2, 73.2, 6.6, 'normal'),
|
||
('2025-06-02 11:00:00', 28.6, 69.7, 6.7, 'normal'),
|
||
('2025-06-02 11:20:00', 28.8, 73.3, 6.7, 'normal'),
|
||
('2025-06-02 11:40:00', 29.9, 71.4, 6.6, 'normal'),
|
||
('2025-06-02 12:00:00', 27.8, 70.0, 6.6, 'normal'),
|
||
('2025-06-02 12:20:00', 29.7, 70.6, 6.9, 'normal'),
|
||
('2025-06-02 12:40:00', 30.0, 74.5, 6.7, 'normal'),
|
||
('2025-06-02 13:00:00', 28.4, 68.8, 6.7, 'normal'),
|
||
('2025-06-02 13:20:00', 35.5, 73.6, 6.8, 'high_temp'),
|
||
('2025-06-02 13:40:00', 29.2, 74.2, 6.5, 'normal'),
|
||
('2025-06-02 14:00:00', 29.3, 70.7, 6.7, 'normal'),
|
||
('2025-06-02 14:20:00', 28.1, 77.2, 6.5, 'normal'),
|
||
('2025-06-02 14:40:00', 27.1, 76.7, 6.9, 'normal'),
|
||
('2025-06-02 15:00:00', 27.3, 70.7, 6.6, 'normal'),
|
||
('2025-06-02 15:20:00', 25.5, 72.1, 6.5, 'normal'),
|
||
('2025-06-02 15:40:00', 26.3, 74.3, 6.5, 'normal'),
|
||
('2025-06-02 16:00:00', 27.1, 74.3, 6.7, 'normal'),
|
||
('2025-06-02 16:20:00', 25.5, 77.3, 6.7, 'normal'),
|
||
('2025-06-02 16:40:00', 26.1, 78.2, 6.6, 'normal'),
|
||
('2025-06-02 17:00:00', 27.0, 77.7, 6.6, 'normal'),
|
||
('2025-06-02 17:20:00', 24.5, 82.8, 6.9, 'normal'),
|
||
('2025-06-02 17:40:00', 24.8, 80.3, 6.7, 'normal'),
|
||
('2025-06-02 18:00:00', 22.8, 85.1, 6.9, 'normal'),
|
||
('2025-06-02 18:20:00', 24.4, 80.7, 6.5, 'normal'),
|
||
('2025-06-02 18:40:00', 23.9, 84.9, 6.7, 'normal'),
|
||
('2025-06-02 19:00:00', 22.2, 90.9, 6.8, 'normal'),
|
||
('2025-06-02 19:20:00', 21.6, 81.7, 6.8, 'normal'),
|
||
('2025-06-02 19:40:00', 21.6, 85.8, 6.6, 'normal'),
|
||
('2025-06-02 20:00:00', 20.6, 86.8, 6.8, 'normal'),
|
||
('2025-06-02 20:20:00', 21.6, 82.7, 6.6, 'normal'),
|
||
('2025-06-02 20:40:00', 21.7, 87.4, 6.8, 'normal'),
|
||
('2025-06-02 21:00:00', 20.6, 91.5, 6.7, 'normal'),
|
||
('2025-06-02 21:20:00', 18.8, 85.5, 6.7, 'normal'),
|
||
('2025-06-02 21:40:00', 21.2, 88.2, 6.6, 'normal'),
|
||
('2025-06-02 22:00:00', 20.1, 90.8, 6.7, 'normal'),
|
||
('2025-06-02 22:20:00', 19.7, 88.7, 6.8, 'normal'),
|
||
('2025-06-02 22:40:00', 18.1, 86.2, 6.8, 'normal'),
|
||
('2025-06-02 23:00:00', 19.1, 89.3, 6.7, 'normal'),
|
||
('2025-06-02 23:20:00', 19.2, 87.3, 6.6, 'normal'),
|
||
('2025-06-02 23:40:00', 19.2, 84.0, 6.8, 'normal'),
|
||
('2025-06-03 00:00:00', 19.6, 88.9, 6.9, 'normal'),
|
||
('2025-06-03 00:20:00', 18.5, 88.4, 6.7, 'normal'),
|
||
('2025-06-03 00:40:00', 18.8, 85.9, 6.4, 'normal'),
|
||
('2025-06-03 01:00:00', 18.7, 92.6, 6.5, 'normal'),
|
||
('2025-06-03 01:20:00', 19.3, 90.2, 6.5, 'normal'),
|
||
('2025-06-03 01:40:00', 18.1, 93.9, 6.6, 'normal'),
|
||
('2025-06-03 02:00:00', 20.6, 90.8, 6.5, 'normal'),
|
||
('2025-06-03 02:20:00', 20.4, 92.1, 6.7, 'normal'),
|
||
('2025-06-03 02:40:00', 20.9, 88.9, 6.5, 'normal'),
|
||
('2025-06-03 03:00:00', 20.5, 86.7, 6.7, 'normal'),
|
||
('2025-06-03 03:20:00', 21.1, 83.9, 6.5, 'normal'),
|
||
('2025-06-03 03:40:00', 20.9, 85.6, 6.6, 'normal'),
|
||
('2025-06-03 04:00:00', 22.9, 85.1, 6.5, 'normal'),
|
||
('2025-06-03 04:20:00', 21.0, 86.8, 6.4, 'normal'),
|
||
('2025-06-03 04:40:00', 21.3, 85.2, 6.6, 'normal'),
|
||
('2025-06-03 05:00:00', 22.7, 85.9, 6.5, 'normal'),
|
||
('2025-06-03 05:20:00', 23.4, 82.9, 6.5, 'normal'),
|
||
('2025-06-03 05:40:00', 25.6, 82.9, 6.4, 'normal'),
|
||
('2025-06-03 06:00:00', 25.0, 80.0, 6.6, 'normal'),
|
||
('2025-06-03 06:20:00', 25.0, 79.1, 6.6, 'normal'),
|
||
('2025-06-03 06:40:00', 24.3, 76.9, 6.5, 'normal'),
|
||
('2025-06-03 07:00:00', 24.6, 77.6, 6.5, 'normal'),
|
||
('2025-06-03 07:20:00', 25.1, 79.7, 6.5, 'normal'),
|
||
('2025-06-03 07:40:00', 26.9, 72.3, 6.6, 'normal'),
|
||
('2025-06-03 08:00:00', 27.4, 80.2, 6.4, 'normal'),
|
||
('2025-06-03 08:20:00', 27.7, 73.3, 6.6, 'normal'),
|
||
('2025-06-03 08:40:00', 26.6, 71.3, 6.5, 'normal'),
|
||
('2025-06-03 09:00:00', 26.5, 70.5, 6.6, 'normal'),
|
||
('2025-06-03 09:20:00', 28.0, 72.0, 6.6, 'normal'),
|
||
('2025-06-03 09:40:00', 28.6, 77.2, 6.5, 'normal'),
|
||
('2025-06-03 10:00:00', 28.6, 73.7, 6.5, 'normal'),
|
||
('2025-06-03 10:20:00', 29.3, 68.1, 6.5, 'normal'),
|
||
('2025-06-03 10:40:00', 29.5, 68.4, 6.5, 'normal'),
|
||
('2025-06-03 11:00:00', 30.0, 70.1, 6.4, 'normal'),
|
||
('2025-06-03 11:20:00', 29.7, 71.1, 6.4, 'normal'),
|
||
('2025-06-03 11:40:00', 27.8, 72.8, 6.5, 'normal'),
|
||
('2025-06-03 12:00:00', 28.6, 77.5, 6.6, 'normal'),
|
||
('2025-06-03 12:20:00', 28.9, 69.1, 6.6, 'normal'),
|
||
('2025-06-03 12:40:00', 30.5, 72.2, 6.6, 'normal'),
|
||
('2025-06-03 13:00:00', 28.4, 71.4, 6.5, 'normal'),
|
||
('2025-06-03 13:20:00', 28.6, 74.5, 6.5, 'normal'),
|
||
('2025-06-03 13:40:00', 28.5, 73.7, 6.5, 'normal'),
|
||
('2025-06-03 14:00:00', 29.0, 70.1, 6.7, 'normal'),
|
||
('2025-06-03 14:20:00', 28.0, 67.9, 6.6, 'normal'),
|
||
('2025-06-03 14:40:00', 28.2, 75.2, 6.6, 'normal'),
|
||
('2025-06-03 15:00:00', 26.6, 70.1, 6.6, 'normal'),
|
||
('2025-06-03 15:20:00', 27.4, 73.8, 6.4, 'normal'),
|
||
('2025-06-03 15:40:00', 27.9, 77.3, 6.4, 'normal'),
|
||
('2025-06-03 16:00:00', 27.1, 72.4, 6.6, 'normal'),
|
||
('2025-06-03 16:20:00', 26.1, 75.9, 6.6, 'normal'),
|
||
('2025-06-03 16:40:00', 26.5, 75.8, 6.6, 'normal'),
|
||
('2025-06-03 17:00:00', 26.1, 85.7, 6.4, 'normal'),
|
||
('2025-06-03 17:20:00', 25.3, 78.8, 6.5, 'normal'),
|
||
('2025-06-03 17:40:00', 25.1, 76.0, 6.3, 'normal'),
|
||
('2025-06-03 18:00:00', 25.0, 79.9, 6.5, 'normal'),
|
||
('2025-06-03 18:20:00', 23.1, 79.3, 6.7, 'normal'),
|
||
('2025-06-03 18:40:00', 22.8, 88.0, 6.6, 'normal'),
|
||
('2025-06-03 19:00:00', 23.4, 78.7, 6.6, 'normal'),
|
||
('2025-06-03 19:20:00', 23.8, 80.1, 6.6, 'normal'),
|
||
('2025-06-03 19:40:00', 21.9, 88.2, 6.5, 'normal'),
|
||
('2025-06-03 20:00:00', 20.8, 85.9, 6.4, 'normal'),
|
||
('2025-06-03 20:20:00', 22.2, 87.2, 6.5, 'normal'),
|
||
('2025-06-03 20:40:00', 20.7, 91.3, 6.5, 'normal'),
|
||
('2025-06-03 21:00:00', 20.3, 92.8, 6.6, 'normal'),
|
||
('2025-06-03 21:20:00', 18.4, 91.3, 6.6, 'normal'),
|
||
('2025-06-03 21:40:00', 19.9, 85.6, 6.4, 'normal'),
|
||
('2025-06-03 22:00:00', 20.3, 88.0, 6.6, 'normal'),
|
||
('2025-06-03 22:20:00', 18.8, 91.4, 6.5, 'normal'),
|
||
('2025-06-03 22:40:00', 20.1, 94.8, 6.5, 'normal'),
|
||
('2025-06-03 23:00:00', 18.5, 87.2, 6.6, 'normal'),
|
||
('2025-06-03 23:20:00', 18.7, 87.5, 6.9, 'normal'),
|
||
('2025-06-03 23:40:00', 18.4, 93.0, 6.8, 'normal'),
|
||
('2025-06-04 00:00:00', 18.5, 88.4, 6.3, 'normal'),
|
||
('2025-06-04 00:20:00', 18.0, 87.5, 6.1, 'normal'),
|
||
('2025-06-04 00:40:00', 19.0, 91.2, 6.2, 'normal'),
|
||
('2025-06-04 01:00:00', 19.0, 90.2, 6.1, 'normal'),
|
||
('2025-06-04 01:20:00', 19.2, 89.2, 6.0, 'normal'),
|
||
('2025-06-04 01:40:00', 19.8, 85.4, 6.1, 'normal'),
|
||
('2025-06-04 02:00:00', 18.5, 85.0, 6.0, 'normal'),
|
||
('2025-06-04 02:20:00', 20.4, 88.6, 6.2, 'normal'),
|
||
('2025-06-04 02:40:00', 20.8, 90.5, 6.1, 'normal'),
|
||
('2025-06-04 03:00:00', 20.5, 85.7, 6.0, 'normal'),
|
||
('2025-06-04 03:20:00', 21.4, 90.7, 5.9, 'normal'),
|
||
('2025-06-04 03:40:00', 21.2, 90.9, 6.0, 'normal'),
|
||
('2025-06-04 04:00:00', 23.1, 87.2, 5.9, 'normal'),
|
||
('2025-06-04 04:20:00', 22.9, 80.6, 6.0, 'normal'),
|
||
('2025-06-04 04:40:00', 23.1, 83.8, 6.4, 'normal'),
|
||
('2025-06-04 05:00:00', 21.8, 88.7, 6.3, 'normal'),
|
||
('2025-06-04 05:20:00', 23.3, 79.1, 6.0, 'normal'),
|
||
('2025-06-04 05:40:00', 24.3, 82.9, 6.1, 'normal'),
|
||
('2025-06-04 06:00:00', 24.9, 77.0,6.5, 'normal'),
|
||
('2025-06-04 06:20:00', 24.6, 80.9, 6.2, 'normal'),
|
||
('2025-06-04 06:40:00', 26.6, 82.1, 6.0, 'normal'),
|
||
('2025-06-04 07:00:00', 25.8, 76.0, 6.1, 'normal'),
|
||
('2025-06-04 07:20:00', 25.4, 74.6, 6.3, 'normal'),
|
||
('2025-06-04 07:40:00', 25.8, 75.3, 6.2, 'normal'),
|
||
('2025-06-04 08:00:00', 27.1, 75.1, 6.0, 'normal'),
|
||
('2025-06-04 08:20:00', 27.7, 74.0, 5.9, 'normal'),
|
||
('2025-06-04 08:40:00', 27.9, 79.7, 6.0, 'normal'),
|
||
('2025-06-04 09:00:00', 27.6, 73.6, 5.9, 'normal'),
|
||
('2025-06-04 09:20:00', 28.9, 72.8, 6.3, 'normal'),
|
||
('2025-06-04 09:40:00', 27.1, 69.1, 6.2, 'normal'),
|
||
('2025-06-04 10:00:00', 28.1, 69.3, 6.1, 'normal'),
|
||
('2025-06-04 10:20:00', 28.9, 71.4, 6.1, 'normal'),
|
||
('2025-06-04 10:40:00', 29.6, 66.5, 6.0, 'normal'),
|
||
('2025-06-04 11:00:00', 29.4, 73.3, 6.2, 'normal'),
|
||
('2025-06-04 11:20:00', 28.3, 72.5, 6.0, 'normal'),
|
||
('2025-06-04 11:40:00', 30.1, 71.3, 5.9, 'normal'),
|
||
('2025-06-04 12:00:00', 30.4, 72.2, 6.0, 'normal'),
|
||
('2025-06-04 12:20:00', 30.6, 67.9, 6.1, 'normal'),
|
||
('2025-06-04 12:40:00', 29.4, 71.0, 6.2, 'normal'),
|
||
('2025-06-04 13:00:00', 30.8, 66.1, 6.1, 'normal'),
|
||
('2025-06-04 13:20:00', 29.4, 70.7, 6.1, 'normal'),
|
||
('2025-06-04 13:40:00', 29.0, 69.3, 6.0, 'normal'),
|
||
('2025-06-04 14:00:00', 28.6, 74.9, 6.2, 'normal'),
|
||
('2025-06-04 14:20:00', 27.7, 74.5, 6.3, 'normal'),
|
||
('2025-06-04 14:40:00', 27.8, 73.7, 6.2, 'normal'),
|
||
('2025-06-04 15:00:00', 27.8, 74.9, 6.1, 'normal'),
|
||
('2025-06-04 15:20:00', 27.1, 73.4, 6.1, 'normal'),
|
||
('2025-06-04 15:40:00', 27.1, 76.1, 6.3, 'normal'),
|
||
('2025-06-04 16:00:00', 24.9, 79.5, 6.0, 'normal'),
|
||
('2025-06-04 16:20:00', 27.1, 77.3, 6.1, 'normal'),
|
||
('2025-06-04 16:40:00', 24.5, 78.8, 6.0, 'normal'),
|
||
('2025-06-04 17:00:00', 25.7, 78.7, 6.1, 'normal'),
|
||
('2025-06-04 17:20:00', 25.2, 75.7, 5.9, 'normal'),
|
||
('2025-06-04 17:40:00', 24.5, 89.9, 6.2, 'normal'),
|
||
('2025-06-04 18:00:00', 23.7, 82.4, 6.1, 'normal'),
|
||
('2025-06-04 18:20:00', 24.5, 81.8, 6.0, 'normal'),
|
||
('2025-06-04 18:40:00', 23.8, 83.5, 6.1, 'normal'),
|
||
('2025-06-04 19:00:00', 23.5, 80.8, 6.3, 'normal'),
|
||
('2025-06-04 19:20:00', 22.0, 82.8, 5.9, 'normal'),
|
||
('2025-06-04 19:40:00', 22.9, 83.9, 6.1, 'normal'),
|
||
('2025-06-04 20:00:00', 20.9, 83.3, 6.3, 'normal'),
|
||
('2025-06-04 20:20:00', 21.5, 87.8, 6.0, 'normal'),
|
||
('2025-06-04 20:40:00', 20.1, 80.9, 5.9, 'normal'),
|
||
('2025-06-04 21:00:00', 21.3, 86.1, 6.3, 'normal'),
|
||
('2025-06-04 21:20:00', 19.6, 86.5, 6.0, 'normal'),
|
||
('2025-06-04 21:40:00', 21.0, 89.2, 6.2, 'normal'),
|
||
('2025-06-04 22:00:00', 18.5, 91.1, 6.1, 'normal'),
|
||
('2025-06-04 22:20:00', 18.6, 85.7, 6.2, 'normal'),
|
||
('2025-06-04 22:40:00', 19.3, 94.5, 6.1, 'normal'),
|
||
('2025-06-04 23:00:00', 19.5, 88.2, 6.1, 'normal'),
|
||
('2025-06-04 23:20:00', 20.4, 89.4, 5.8, 'normal'),
|
||
('2025-06-04 23:40:00', 19.3, 90.0, 6.0, 'normal'),
|
||
('2025-06-05 00:00:00', 19.8, 90.9, 5.9, 'normal'),
|
||
('2025-06-05 00:20:00', 18.4, 95.4, 6.0, 'normal'),
|
||
('2025-06-05 00:40:00', 19.1, 92.9, 5.9, 'normal'),
|
||
('2025-06-05 01:00:00', 18.7, 86.4, 5.7, 'normal'),
|
||
('2025-06-05 01:20:00', 19.4, 88.3, 6.0, 'normal'),
|
||
('2025-06-05 01:40:00', 19.8, 85.4, 5.8, 'normal'),
|
||
('2025-06-05 02:00:00', 19.4, 91.3, 6.0, 'normal'),
|
||
('2025-06-05 02:20:00', 20.5, 89.8, 5.9, 'normal'),
|
||
('2025-06-05 02:40:00', 21.0, 91.3, 5.9, 'normal'),
|
||
('2025-06-05 03:00:00', 19.1, 90.6, 6.0, 'normal'),
|
||
('2025-06-05 03:20:00', 20.0, 88.3, 5.9, 'normal'),
|
||
('2025-06-05 03:40:00', 20.7, 89.6, 5.8, 'normal'),
|
||
('2025-06-05 04:00:00', 21.3, 83.0, 5.9, 'normal'),
|
||
('2025-06-05 04:20:00', 22.1, 88.7, 6.1, 'normal'),
|
||
('2025-06-05 04:40:00', 22.6, 84.3, 6.1, 'normal'),
|
||
('2025-06-05 05:00:00', 22.0, 86.9, 5.8, 'normal'),
|
||
('2025-06-05 05:20:00', 23.1, 78.4, 5.8, 'normal'),
|
||
('2025-06-05 05:40:00', 23.2, 78.8, 6.0, 'normal'),
|
||
('2025-06-05 06:00:00', 25.1, 74.7, 5.8, 'normal'),
|
||
('2025-06-05 06:20:00', 24.5, 83.4, 5.9, 'normal'),
|
||
('2025-06-05 06:40:00', 24.5, 81.0, 5.8, 'normal'),
|
||
('2025-06-05 07:00:00', 26.1, 77.9, 6.0, 'normal'),
|
||
('2025-06-05 07:20:00', 25.4, 77.9, 5.9, 'normal'),
|
||
('2025-06-05 07:40:00', 25.0, 76.6, 6.5, 'normal'),
|
||
('2025-06-05 08:00:00', 26.4, 74.0, 5.9, 'normal'),
|
||
('2025-06-05 08:20:00', 26.5, 79.2, 6.2, 'normal'),
|
||
('2025-06-05 08:40:00', 20.2, 68.6, 5.9, 'low_temp'),
|
||
('2025-06-05 09:00:00', 28.0, 67.9, 5.9, 'normal'),
|
||
('2025-06-05 09:20:00', 28.2, 79.6, 6.0, 'normal'),
|
||
('2025-06-05 09:40:00', 28.5, 72.5, 6.0, 'normal'),
|
||
('2025-06-05 10:00:00', 30.4, 71.4, 5.8, 'normal'),
|
||
('2025-06-05 10:20:00', 28.4, 75.3, 6.1, 'normal'),
|
||
('2025-06-05 10:40:00', 27.0, 70.7, 6.1, 'normal'),
|
||
('2025-06-05 11:00:00', 28.6, 71.8, 6.0, 'normal'),
|
||
('2025-06-05 11:20:00', 28.7, 71.6, 6.0, 'normal'),
|
||
('2025-06-05 11:40:00', 29.5, 66.9, 6.1, 'normal'),
|
||
('2025-06-05 12:00:00', 30.0, 68.7, 6.0, 'normal'),
|
||
('2025-06-05 12:20:00', 29.4, 74.6, 5.8, 'normal'),
|
||
('2025-06-05 12:40:00', 27.5, 72.8, 6.1, 'normal'),
|
||
('2025-06-05 13:00:00', 28.7, 71.9, 6.0, 'normal'),
|
||
('2025-06-05 13:20:00', 28.7, 73.3, 6.2, 'normal'),
|
||
('2025-06-05 13:40:00', 27.7, 73.4, 6.6, 'normal'),
|
||
('2025-06-05 14:00:00', 29.2, 77.1, 5.9, 'normal'),
|
||
('2025-06-05 14:20:00', 28.0, 70.3, 5.9, 'normal'),
|
||
('2025-06-05 14:40:00', 27.3, 76.9, 6.5, 'normal'),
|
||
('2025-06-05 15:00:00', 27.7, 73.6, 6.3, 'normal'),
|
||
('2025-06-05 15:20:00', 26.7, 70.4, 6.8, 'normal'),
|
||
('2025-06-05 15:40:00', 27.1, 76.4, 6.9, 'normal'),
|
||
('2025-06-05 16:00:00', 27.3, 72.6, 6.6, 'normal'),
|
||
('2025-06-05 16:20:00', 26.2, 80.9, 5.9, 'normal'),
|
||
('2025-06-05 16:40:00', 25.1, 77.0, 6.2, 'normal'),
|
||
('2025-06-05 17:00:00', 24.4, 79.6, 5.8, 'normal'),
|
||
('2025-06-05 17:20:00', 25.3, 78.0, 6.4, 'normal'),
|
||
('2025-06-05 17:40:00', 24.0, 78.0, 6.2, 'normal'),
|
||
('2025-06-05 18:00:00', 24.0, 81.5, 6.3, 'normal'),
|
||
('2025-06-05 18:20:00', 23.2, 82.9, 6.3, 'normal'),
|
||
('2025-06-05 18:40:00', 23.0, 83.6, 5.8, 'normal'),
|
||
('2025-06-05 19:00:00', 23.8, 81.0, 6.0, 'normal'),
|
||
('2025-06-05 19:20:00', 21.9, 84.2, 5.7, 'normal'),
|
||
('2025-06-05 19:40:00', 22.1, 88.0, 6.8, 'normal'),
|
||
('2025-06-05 20:00:00', 20.9, 79.5, 6.9, 'normal'),
|
||
('2025-06-05 20:20:00', 21.0, 82.6, 6.3, 'normal'),
|
||
('2025-06-05 20:40:00', 20.7, 88.5, 6.2, 'normal'),
|
||
('2025-06-05 21:00:00', 20.4, 90.6, 5.9, 'normal'),
|
||
('2025-06-05 21:20:00', 20.3, 82.6, 5.8, 'normal'),
|
||
('2025-06-05 21:40:00', 19.3, 87.0, 5.9, 'normal'),
|
||
('2025-06-05 22:00:00', 19.7, 88.6, 6.6, 'normal'),
|
||
('2025-06-05 22:20:00', 20.9, 84.1, 6.5, 'normal'),
|
||
('2025-06-05 22:40:00', 18.9, 85.7, 6.8, 'normal'),
|
||
('2025-06-05 23:00:00', 20.0, 87.4, 6.9, 'normal'),
|
||
('2025-06-05 23:20:00', 21.0, 84.4, 6.7, 'normal'),
|
||
('2025-06-05 23:40:00', 19.1, 87.9, 6.8, 'normal'),
|
||
('2025-06-06 00:00:00', 20.4, 100.0, 6.4, 'normal'),
|
||
('2025-06-06 00:20:00', 18.3, 95.1, 6.2, 'normal'),
|
||
('2025-06-06 00:40:00', 20.4, 90.6, 6.3, 'normal'),
|
||
('2025-06-06 01:00:00', 19.7, 85.8, 6.2, 'normal'),
|
||
('2025-06-06 01:20:00', 20.6, 85.0, 6.5, 'normal'),
|
||
('2025-06-06 01:40:00', 19.1, 87.1, 6.3, 'normal'),
|
||
('2025-06-06 02:00:00', 20.1, 87.6, 6.3, 'normal'),
|
||
('2025-06-06 02:20:00', 19.3, 84.9, 6.4, 'normal'),
|
||
('2025-06-06 02:40:00', 20.2, 85.1, 6.6, 'normal'),
|
||
('2025-06-06 03:00:00', 19.4, 83.8, 6.4, 'normal'),
|
||
('2025-06-06 03:20:00', 21.1, 85.9, 6.2, 'normal'),
|
||
('2025-06-06 03:40:00', 20.8, 88.5, 6.4, 'normal'),
|
||
('2025-06-06 04:00:00', 21.3, 89.7, 6.5, 'normal'),
|
||
('2025-06-06 04:20:00', 22.9, 77.1, 6.3, 'normal'),
|
||
('2025-06-06 04:40:00', 20.7, 86.3, 6.6, 'normal'); |