| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159 |
- /*
- * YM310 Protocol Handler - Header File
- *
- * 定义系统信息、设备信息、限制参数等结构体,并提供外部变量声明。
- *
- * Version: 1.0.0
- */
- #ifndef __YM310_PROTECL_H__
- #define __YM310_PROTECL_H__
- /*********************↓ define ↓************************/
- #ifdef __cplusplus
- extern "C"
- {
- #endif
- #define VALID 0x9D
- /*********************↑ define ↑************************/
- /*********************↓ include ↓************************/
- #include <rtthread.h>
- #include <stdint.h>
- /*********************↑ include ↑************************/
- /*********************↓ global variables ↓************************/
- /* 第三方服务器配置结构体(用于持久化) */
- typedef struct
- {
- char sub_topic[64]; /* 订阅主题 */
- char pub_topic[64]; /* 发布主题 */
- char host[64]; /* 服务器地址 */
- uint16_t port; /* 端口 */
- uint8_t qos; /* QoS */
- char lastwill[64]; /* 遗嘱主题 */
- char username[32]; /* 用户名 */
- char password[32]; /* 密码 */
- char client_id[32]; /* 客户端ID(默认IMEI) */
- char enable; // 0x9D为开启 其余为关闭
- } SERVER_CFG;
- /* 系统信息结构体(全局参数,持久化) */
- typedef struct
- {
- char imei[16]; /* IMEI(模组唯一ID) */
- char iccid[21]; /* SIM卡ICCID */
- uint8_t csq; /* 信号强度 0-31 */
- SERVER_CFG customer_cfg; /* 客户MQTT配置(可保存) */
- char update_url[128]; // 升级路径
- } SYS_INFO;
- typedef enum
- {
- work_state_IDLE = 0,
- work_state_WORK,
- work_state_CHG
- }work_state_DEF;
- typedef struct
- {
- uint8_t temp_protect; /* tps: 温控保护 */
- uint8_t tilt_protect; /* dps: 倾倒保护 */
- uint8_t rain_protect; /* rps: 雨控保护 */
- uint8_t light_protect; /* lps: 光控保护 */
- uint8_t undervolt_protect; /* vps: 欠压保护 */
- uint8_t work_state; /* ws: 0待机,1工作,2充电 */
- uint32_t hv_count; /* ct: 高压计数 */
- uint16_t charge_voltage; /* cv: 充电电压(mV) */
- uint16_t battery_voltage; /* bv: 电池电压(mV) */
- int16_t board_temp; /* bt: 主板温度(0.1℃) */
- uint8_t lamp_fault; /* voltval: 灯管故障检测(1故障) */
- uint8_t idle_flag; /* cycle_off: 空闲标志位 */
- uint16_t lamp_current; // 灯管电流
- uint16_t hv_current; /* ct: 高压电流 */
- uint16_t light_percent; // 光控值(百分比值 保留一位小数 )
- } SYS_STATUS;
- /* 设备信息结构体(可配置工作参数,部分持久化) */
- typedef struct
- {
- uint8_t power_state; /* ds: 0关机,1开机 */
- uint16_t light_work_duration; /* tt: 光控工作时长(小时) */
- uint8_t light_flag; /* : 光控切换标志位 0-太阳能板 1-光敏二极管 */
- uint8_t time_ctrl_enable; /* ts: 时控开关 0-光控/1-时控 */
- uint8_t time_start; /* st: 时控开始小时 */
- uint8_t time_end; /* et: 时控结束小时 */
- uint16_t data_interval; /* dat_f: 数据上报间隔(分钟) */
- uint16_t clean_interval; /* clt_t: 清扫间隔(分钟) (暂时无需使用)*/
- uint8_t clean_enable; /* clear_on: 自清虫标志 (暂时无需使用)*/
- uint8_t GPS_MODE; /* gps: 0手动,1GPS */
- char longitude[16]; /* 经度,字符串格式如 "113.3963165" */
- char latitude[16]; /* 纬度,字符串格式如 "34.4861845" */
- char longitude_FORCE[16]; /* 强制经度 */
- char latitude_FORCE[16]; /* 强制纬度 */
- } DEV_INFO;
- /* 限制参数结构体(电压阈值等配置,持久化) */
- typedef struct
- {
- uint16_t vsunrise; /* 日出电压(mV) */
- uint16_t vsunset; /* 日落电压(mV) */
- uint16_t vcutof; /* 截止电压(mV) */
- uint16_t vfloat; /* 浮充电压(mV) */
- uint16_t vrecharge; /* 再次开启充电电压(mV) */
- uint16_t uvstart; /* 开机电压(mV) */
- uint16_t uvoff; /* 欠压恢复电压(mV) */
- uint16_t uvon; /* 欠压保护电压(mV) */
- uint16_t overtemp; /* 高温保护温度(0.1℃) */
- int16_t lowtemp; /* 低温保护温度(0.1℃) */
- uint16_t unovert; /* 高温恢复温度(0.1℃) */
- int16_t unlowt; /* 低温恢复温度(0.1℃) */
- uint8_t battype; /* 电池类型 */
- } LIMIT;
- /* Sensor数据结构体 - 三合一简化结构 */
- typedef struct
- {
- int16_t temp_plat; /* 平台下发温度,保留一位小数(如23.5°C存储235) */
- int16_t humi_plat; /* 平台下发湿度,保留一位小数(如65.3%存储653) */
- uint8_t valid_plat; /* 平台数据有效标志:0x9D有效 */
- int16_t temp_sht; /* SHT30温度,保留一位小数(如23.5°C存储235) */
- int16_t humi_sht; /* SHT30湿度,保留一位小数(如65.3%存储653) */
- uint8_t valid_sht; /* SHT30数据有效标志:0x9D有效 */
- int16_t temp_ntc; /* NTC温度,保留一位小数(如23.5°C存储235) */
- uint8_t valid_ntc; /* NTC数据有效标志:0x9D有效 */
- } sensor_t;
- extern SYS_INFO sys_info;
- extern DEV_INFO dev_info;
- extern LIMIT limit;
- extern sensor_t sensor;
- /*********************↑ global variables ↑************************/
- /********************↓ declaration ↓***********************/
- void ym310_protocol_process(rt_uint8_t client_idx, const char *topic,
- const char *payload, rt_uint16_t len);
- void report_now(void);
- /********************↑ declaration ↑***********************/
- #ifdef __cplusplus
- }
- #endif
- #endif /* __YM310_PROTECL_H__ */
|