247 lines
9.7 KiB
C
247 lines
9.7 KiB
C
/**
|
|
* @file config.h
|
|
* @brief 全局配置文件 - 五劳无感康养监测系统
|
|
*
|
|
* 协议版本: V0.08 (2026-07-17)
|
|
* 包含: 硬件引脚定义、WiFi/MQTT 默认参数、
|
|
* 雷达协议常量、告警阈值、任务配置等
|
|
*/
|
|
|
|
#ifndef CONFIG_H
|
|
#define CONFIG_H
|
|
|
|
#include <Arduino.h>
|
|
|
|
// ============================================================
|
|
// 1. 硬件引脚定义 (ESP32-S3)
|
|
// ============================================================
|
|
|
|
// --- R60ABD1 毫米波雷达 ---
|
|
#define RADAR_UART_PORT Serial2
|
|
#define RADAR_RX_PIN 17
|
|
#define RADAR_TX_PIN 1 // UART 发送 (从18挪到1)
|
|
#define RADAR_BAUD_RATE 115200
|
|
|
|
// --- 雷达备用 GPIO ---
|
|
#define RADAR_GPIO1_PIN 2 // 活跃/静止指示 (从10挪到2)
|
|
#define RADAR_GPIO2_PIN 11 // 有人/无人指示
|
|
|
|
// --- DHT11 温湿度传感器 ---
|
|
#define DHT11_PIN 4 // 温湿度传感器
|
|
|
|
// --- 水浸传感器 ---
|
|
#define WATER_SENSOR_PIN 6 // 数字输入, 低电平=有水
|
|
|
|
// --- 蜂鸣器 (PWM) ---
|
|
#define BUZZER_PIN 7
|
|
#define BUZZER_PWM_CHANNEL 0
|
|
#define BUZZER_PWM_FREQ 2000
|
|
#define BUZZER_PWM_RESOLUTION 8
|
|
|
|
// --- 配网按钮 ---
|
|
#define CONFIG_BUTTON_PIN 0 // 长按 3 秒复位 WiFi
|
|
#define BUTTON_LONG_PRESS_MS 3000
|
|
|
|
// --- 状态指示灯 ---
|
|
#define LED_WIFI_PIN 8 // 蓝色 - WiFi 状态
|
|
#define LED_ALARM_PIN 9 // 红色 - 报警指示
|
|
|
|
// --- OLED 显示屏 (SSD1306 128x64 I2C) ---
|
|
#define OLED_SDA_PIN 14 // I2C 数据线
|
|
#define OLED_SCL_PIN 15 // I2C 时钟线
|
|
|
|
// --- 交互按钮 ---
|
|
#define BTN_PROVISION_PIN 16 // 擦除WiFi配网按钮 (长按3秒)
|
|
#define BTN_ALARM_DISMISS_PIN 13 // 解除报警按钮
|
|
#define BTN_PAGE_SWITCH_PIN 10 // 翻页按钮
|
|
#define BTN_DEBOUNCE_MS 50 // 去抖时间
|
|
#define BTN_LONG_PRESS_MS 3000 // 长按判定
|
|
|
|
// ============================================================
|
|
// 2. 设备标识 (协议规范 §2)
|
|
// ============================================================
|
|
|
|
#define SALEID_DEFAULT "10100001" // 站点/系统编号
|
|
#define GATEID_DEFAULT "10100001001" // 网关唯一编号
|
|
#define METER_ID_DEFAULT "ENV001" // 感知节点ID (卧室=ENV001, 卫生间=ENV002, 客厅=ENV003)
|
|
#define METER_NAME_DEFAULT "RadarDHT11" // 设备型号名称
|
|
#define FW_VERSION "V1.0.0"
|
|
|
|
// ============================================================
|
|
// 3. WiFi 默认配置 (配网使用)
|
|
// ============================================================
|
|
|
|
#define WIFI_AP_SSID "HealthMonitor-Setup"
|
|
#define WIFI_AP_PASSWORD "12345678"
|
|
#define WIFI_CONFIG_TIMEOUT 300
|
|
#define WIFI_CONNECT_TIMEOUT 15
|
|
#define WIFI_RETRY_INTERVAL 10000
|
|
|
|
// ============================================================
|
|
// 4. MQTT 默认配置 (协议规范 §2)
|
|
// ============================================================
|
|
|
|
#define MQTT_DEFAULT_SERVER "202.110.234.102"
|
|
#define MQTT_DEFAULT_PORT 8000
|
|
#define MQTT_DEFAULT_PORT_STR "8000" // WiFiManager 参数用字符串
|
|
#define MQTT_DEFAULT_USER "test"
|
|
#define MQTT_DEFAULT_PASS "testtest"
|
|
#define MQTT_DEFAULT_DEVICE "10100001001" // 默认网关ID = gateid
|
|
#define MQTT_DEFAULT_ENV "主卧" // 默认环境备注
|
|
#undef MQTT_KEEPALIVE
|
|
#define MQTT_KEEPALIVE 30 // 30秒 (协议规范)
|
|
#define MQTT_RECONNECT_MIN 1000
|
|
#define MQTT_RECONNECT_MAX 60000
|
|
|
|
// ============================================================
|
|
// 5. MQTT 主题定义 (协议规范 §3)
|
|
// ============================================================
|
|
|
|
// --- 上行主题 (设备 → 服务端) ---
|
|
#define MQTT_TOPIC_REPORT_ALLPOINTS "report/allpoints" // 全量遥测上报 QoS0
|
|
#define MQTT_TOPIC_STATUS_ONLINE "status/%s/online" // 上线通知 QoS1
|
|
#define MQTT_TOPIC_STATUS_OFFLINE "status/%s/offline" // 离线遗嘱 QoS1
|
|
#define MQTT_TOPIC_STATUS_PROVISION "status/%s/provision" // 配网状态 QoS1
|
|
#define MQTT_TOPIC_RESPONSE_CMD "response/%s/cmd" // 指令响应 QoS1
|
|
#define MQTT_TOPIC_RESPONSE_PROVISION "response/%s/provision" // 配网响应 QoS1
|
|
|
|
// --- 下行主题 (服务端 → 设备) ---
|
|
#define MQTT_TOPIC_CMD_ALARM "cmd/%s/alarm" // 告警指令 QoS1
|
|
#define MQTT_TOPIC_CMD_ALARM_RESTORE "cmd/%s/alarm/restore" // 告警恢复 QoS1
|
|
#define MQTT_TOPIC_CMD_CONTROL "cmd/%s/control" // 控制指令 QoS1
|
|
#define MQTT_TOPIC_CMD_PROVISION_WIFI "cmd/%s/provision/wifi" // WiFi配网 QoS1
|
|
|
|
// ============================================================
|
|
// 6. 上报配置 (协议规范 §4.1, §7.2)
|
|
// ============================================================
|
|
|
|
#define REPORT_INTERVAL_MS 1000 // 遥测上报周期 1秒
|
|
#define REPORT_QOS 0 // 遥测 QoS 0
|
|
#define STATUS_QOS 1 // 状态/响应 QoS 1
|
|
|
|
// ============================================================
|
|
// 7. 报警阈值 (协议规范 §6, 服务端判定用)
|
|
// ============================================================
|
|
|
|
#define HEART_RATE_MIN 50
|
|
#define HEART_RATE_MAX 120
|
|
#define BREATH_RATE_MIN 8
|
|
#define BREATH_RATE_MAX 24
|
|
#define TEMP_LOW 5.0f
|
|
#define TEMP_HIGH 45.0f
|
|
#define HUMI_LOW 15.0f
|
|
#define HUMI_HIGH 90.0f
|
|
#define WATER_DEBOUNCE_MS 50
|
|
|
|
// ============================================================
|
|
// 8. 任务配置
|
|
// ============================================================
|
|
|
|
#define RADAR_TASK_STACK 4096
|
|
#define RADAR_TASK_PRIORITY 5
|
|
#define RADAR_TASK_CORE 0
|
|
|
|
#define MQTT_TASK_STACK 8192
|
|
#define MQTT_TASK_PRIORITY 4
|
|
#define MQTT_TASK_CORE 1
|
|
|
|
// ============================================================
|
|
// 9. NTP 时间同步
|
|
// ============================================================
|
|
|
|
#define NTP_SERVER "ntp.aliyun.com"
|
|
#define NTP_GMT_OFFSET_SEC 28800 // UTC+8 (北京时间)
|
|
#define NTP_DAYLIGHT_OFFSET 0
|
|
|
|
// ============================================================
|
|
// 10. LittleFS 配置文件名
|
|
// ============================================================
|
|
|
|
#define CONFIG_FILE_MQTT "/mqtt_config.json"
|
|
#define CONFIG_FILE_WIFI "/wifi_config.json"
|
|
#define CONFIG_FILE_DEVICE "/device_config.json"
|
|
|
|
// ============================================================
|
|
// 11. 结构体: 全量遥测数据 (协议规范 §4.1)
|
|
// ============================================================
|
|
|
|
struct TelemetryData {
|
|
// --- 设备标识 ---
|
|
char saleid[12]; // 站点编号 "10100001"
|
|
char gateid[16]; // 网关编号 "10100001001"
|
|
char meterId[8]; // 节点ID "ENV001"
|
|
char meterName[16]; // 设备型号 "RadarDHT11"
|
|
|
|
// --- 环境数据 (DHT11) ---
|
|
float temp; // 温度 ℃
|
|
float humi; // 湿度 %RH
|
|
bool dhtValid; // 温湿度有效性
|
|
|
|
// --- 雷达: 存在/运动 ---
|
|
bool presence; // 有人=1 无人=0
|
|
bool motion; // 有运动=1 无运动=0
|
|
bool fall; // 跌倒检测 1=触发
|
|
bool resident; // 驻留状态 1=驻留
|
|
|
|
// --- 雷达: 生命体征 ---
|
|
uint8_t heartRate; // 心率 bpm (无效=0)
|
|
uint8_t breathRate; // 呼吸 次/分 (无效=0)
|
|
uint8_t body; // 人体能量/体征值
|
|
bool radarValid; // 雷达数据有效性
|
|
bool vitalValid; // 心率呼吸有效性
|
|
|
|
// --- 水浸 ---
|
|
bool rainDO; // 1=正常 0=水浸触发
|
|
bool rainValid; // 水浸传感器有效性
|
|
|
|
// --- 设备状态 ---
|
|
bool wifiReady; // WiFi/MQTT 连接状态
|
|
uint32_t uptimeSec; // 设备累计运行秒数
|
|
bool buzzerState; // 蜂鸣器状态 1=开启
|
|
|
|
// --- 时间戳 ---
|
|
uint32_t lastUpdate; // 最后更新 ms
|
|
};
|
|
|
|
// 结构体: 下行报警指令 (协议规范 §5.1, §5.2)
|
|
struct AlarmCommand {
|
|
char cmdId[32]; // 指令唯一ID
|
|
char type[20]; // alarm / alarm_restore
|
|
char alarmType[24]; // fall/water_leak/heart_abnormal/breath_abnormal
|
|
char alarmLevel[8]; // low/medium/high
|
|
char alarmDesc[64]; // 告警描述
|
|
char meterId[8]; // 触发节点ID
|
|
char relatedCmdId[32]; // 关联原始告警ID (恢复用)
|
|
|
|
// 联动动作
|
|
bool buzzerOn; // 蜂鸣器开关
|
|
uint16_t buzzerDuration; // 蜂鸣持续秒数 (0=持续到恢复)
|
|
bool nightLight; // 夜灯
|
|
|
|
uint32_t timestamp;
|
|
};
|
|
|
|
// 结构体: 下行控制指令 (协议规范 §5.3)
|
|
struct ControlCommand {
|
|
char cmdId[32];
|
|
char type[20]; // control
|
|
char controlType[24]; // buzzer_test/device_restart/report_interval_set/factory_reset
|
|
uint32_t params_duration; // 参数: 持续秒数
|
|
uint32_t params_interval; // 参数: 上报间隔
|
|
uint32_t timestamp;
|
|
};
|
|
|
|
// 结构体: 下行配网指令 (协议规范 §5.4)
|
|
struct ProvisionCommand {
|
|
char cmdId[32];
|
|
char wifi_ssid[33];
|
|
char wifi_password[65];
|
|
char wifi_encrypt[8]; // OPEN/WPA2/WPA3
|
|
char mqtt_broker[64];
|
|
uint16_t mqtt_port;
|
|
bool mqtt_useTls;
|
|
uint32_t timestamp;
|
|
};
|
|
|
|
#endif // CONFIG_H
|