datadef.h 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433
  1. #ifndef __DATADEF_Hx__
  2. #define __DATADEF_Hx__
  3. #include <stdint.h>
  4. #include "log.h"
  5. #define CH_MAX 12
  6. #define BRD_MAX 32
  7. enum {
  8. RW_READ=0, //读
  9. RW_WRITE //写
  10. };
  11. enum {
  12. TIME_ABS=0, //绝对时间
  13. TIME_REL //相对时间
  14. };
  15. enum {
  16. LOOP_HOUR=0,
  17. LOOP_DAY,
  18. LOOP_WEEK,
  19. LOOP_MONTH,
  20. LOOP_YEAR,
  21. LOOP_USER
  22. };
  23. enum {
  24. PDU_AC_I1O1=0,
  25. PDU_DC_I1O1,
  26. PDU_AC_I3O3=3,
  27. PDU_AC_I3O1,
  28. PDU_AC_I3O3_X,
  29. };
  30. enum {
  31. BOARD_TYPE_DC=0,
  32. BOARD_TYPE_AC,
  33. BOARD_TYPE_AC3,
  34. };
  35. enum {
  36. ALARM_TYPE_POWER=0,
  37. ALARM_TYPE_SENSOR,
  38. ALARM_TYPE_NETWORK,
  39. ALARM_TYPE_OPRATION,
  40. ALARM_TYPE_RUNNING,
  41. ALARM_TYPE_MAX
  42. };
  43. enum {
  44. ALARM_V_UPPER = (1<<2),
  45. ALARM_V_LOWER = (1<<4),
  46. ALARM_C_UPPER = (1<<6),
  47. ALARM_W_UPPER = (1<<8),
  48. ALARM_P_UPPER = (1<<10),
  49. };
  50. enum {
  51. THRESHOLD_V_UPPER = (1<<0), //电压超上限
  52. THRESHOLD_V_LOWER = (1<<1), //电压超下限
  53. THRESHOLD_C_UPPER = (1<<2), //电流超上限
  54. THRESHOLD_P_UPPER = (1<<3), //功率超上限
  55. THRESHOLD_W_UPPER = (1<<4), //电能/耗电量超上限
  56. };
  57. enum {
  58. IP_MODE_DHCP=0,
  59. IP_MODE_STATIC,
  60. };
  61. enum {
  62. IP_VER_ERR=0,
  63. IP_VER_V4,
  64. IP_VER_V6,
  65. };
  66. enum {
  67. MODBUS_MASTER=0,
  68. MODBUS_SLAVE,
  69. };
  70. enum {
  71. SNMP_AUTH_NONE=0,
  72. SNMP_AUTH_MD5,
  73. SNMP_AUTH_SHA,
  74. SNMP_AUTH_MAX
  75. };
  76. enum {
  77. SNMP_ENCYPT_NONE=0,
  78. SNMP_ENCYPT_DES,
  79. SNMP_ENCYPT_AES,
  80. SNMP_ENCYPT_MAX
  81. };
  82. enum
  83. {
  84. SENSOR_TYPE_TEMP_HUMI = 0 , //温湿度传感器
  85. SENSOR_TYPE_SMOKE = 1 , //烟雾传感器
  86. SENSOR_TYPE_WATER = 2 , //水浸传感器
  87. SENSOR_TYPE_ACCESS = 3 , //门禁传感器
  88. SENSOR_TYPE_GAS = 4 , //气体传感器
  89. SENSOR_TYPE_AIR_PRESS = 5 , //气压传感器
  90. SENSOR_TYPE_AIR_COND = 6, //空条传感器
  91. SENSOR_TYPE_LEAK = 7, //泄漏传感器
  92. SENSOR_TYPE_TEMP = 8, //温度传感器
  93. SENSOR_TYPE_TEMP_DOUBLE = 9, //双温度传感器
  94. SENSOR_TYPE_PRESS = 10, //压力传感器
  95. SENSOR_TYPE_MAX,
  96. };
  97. enum {
  98. SENSOR_TYPE_TEMP_HUMI_RSWSN01PVC=0,
  99. SENSOR_TYPE_TEMP_HUMI_HKSHT301T1H536VRS485,
  100. SENSOR_TYPE_TEMP_HUMI_MAX
  101. };
  102. enum {
  103. SENSOR_TYPE_TEMP_DOUBLE_DL10BM485V24D2=0,
  104. SENSOR_TYPE_TEMP_DOUBLE_MAX
  105. };
  106. enum {
  107. SENSOR_TYPE_TEMP_BTG50H8EL3200=0,
  108. SENSOR_TYPE_TEMP_MAX
  109. };
  110. enum {
  111. SENSOR_TYPE_LEAK_XWDC01A=0,
  112. SENSOR_TYPE_LEAK_MAX
  113. };
  114. enum {
  115. LANG_ID_CHINESE=0,
  116. LANG_ID_ENGLISH,
  117. LANG_ID_RUSSIAN,
  118. LANG_ID_SPANISH,
  119. LANG_ID_PORTYGYESE,
  120. LANG_ID_GERMAN,
  121. LANG_ID_FRENCH,
  122. LANG_ID_ITALIAN,
  123. LANG_ID_JAPANESE,
  124. LANG_ID_MAX
  125. };
  126. ////////////////////////////////////////////////
  127. #pragma pack (1)
  128. typedef struct
  129. {
  130. uint8_t mode;
  131. uint8_t addr;
  132. uint32_t baud;
  133. }modbus_data_t;
  134. typedef struct
  135. {
  136. int mode; //0:DHCP 1:STATIC
  137. char ipaddr[48]; //
  138. char mask[48]; //
  139. char gateway[48]; //
  140. char dns1[48]; //dns1
  141. char dns2[48]; //dns2
  142. }network_data_t;
  143. typedef struct {
  144. uint32_t id; //产品ID
  145. char pname[32]; //产品名称
  146. char pnumber[32]; //产品编号
  147. char status[32]; //产品状态
  148. char name[32]; //设备名称
  149. char number[32]; //设备编号
  150. char date[32]; //设备生产日期
  151. char batch[32]; //设备生产批次
  152. uint8_t type; //产品类型
  153. uint8_t pwr_type; //电源类型
  154. char version[8]; //软件版本
  155. uint8_t language; //多国语言
  156. uint8_t count; //级联设备数
  157. uint32_t samp_time; //采集周期 单位ms
  158. uint32_t save_time; //采集周期 单位ms
  159. uint16_t ph_group; //三组相数
  160. uint16_t ch_delay; //通道延时
  161. }product_data_t;
  162. typedef struct {
  163. uint8_t watchdog;
  164. int32_t flip_time;
  165. }misc_data_t;
  166. typedef struct {
  167. char name[256];
  168. char site[256];
  169. char mail[256];
  170. char addr[256];
  171. char tele[32];
  172. }service_data_t;
  173. typedef struct {
  174. uint32_t id[3];
  175. uint32_t chs;
  176. uint32_t time;
  177. char ver[12];
  178. }board_info_t;
  179. typedef struct {
  180. modbus_data_t cas;
  181. misc_data_t misc;
  182. product_data_t prod;
  183. service_data_t serv;
  184. network_data_t netwk;
  185. }paras_data_t;
  186. typedef struct {
  187. uint8_t lang;
  188. }sys_data_t;
  189. typedef struct {
  190. }sys_stat_t;
  191. typedef struct {
  192. float voltage; //电压
  193. float current; //电流
  194. float power; //功率
  195. float freq; //频率
  196. float consump; //耗电量consumption
  197. float factor; //功率因素
  198. uint8_t status; //开关状态
  199. uint8_t nwire; //零线状态
  200. }elect_data_t;
  201. typedef struct {
  202. uint8_t v_upper; //电压超上限
  203. uint8_t v_lower; //电压超下限
  204. uint8_t c_upper; //电流超上限
  205. uint8_t p_upper; //功率超上限
  206. uint8_t w_upper; //耗电量超上限
  207. uint8_t ph_loss; //缺相
  208. }alarm_data_t;
  209. typedef struct {
  210. uint8_t type;
  211. uint8_t addr;
  212. uint8_t ch; //该通道在全部板上的所排序号,程序始于0,用户始于1
  213. uint8_t sch; //该通道在其所在的板上的序号,程序始于0,用户始于1
  214. uint8_t pid; //phase id, 0:L1相 1:L2相 2:L3相
  215. }info_ch_t;
  216. typedef struct {
  217. info_ch_t info;
  218. elect_data_t *pele; //电力信息
  219. alarm_data_t alarm;
  220. uint32_t time;
  221. }power_ch_t;
  222. typedef struct {
  223. uint8_t type;
  224. uint8_t addr;
  225. uint8_t chs;
  226. power_ch_t *pch; //根据实际通道数申请连续内存
  227. }power_brd_t;
  228. typedef struct {
  229. uint8_t chs; //所有控制板的总通道数
  230. power_ch_t **pch; //动态指针
  231. uint8_t cnt;
  232. power_brd_t *pbrd[BRD_MAX];
  233. }power_all_t;
  234. typedef struct {
  235. float voltage; //电压
  236. float current; //电流
  237. float power; //功率
  238. float freq; //频率
  239. float consump; //耗电量
  240. float active; //有功功率
  241. float reactive; //无功功率
  242. float apparent; //视在功率
  243. }power_total_t;
  244. typedef struct {
  245. uint8_t type;
  246. float data;
  247. uint8_t time;
  248. }sensor_data_t;
  249. typedef struct {
  250. uint8_t en;
  251. float val; //threashold value
  252. uint8_t act;
  253. uint8_t act_para;
  254. }threshold_t;
  255. typedef struct {
  256. threshold_t volt_upper;
  257. threshold_t volt_lower;
  258. threshold_t volt_over;
  259. threshold_t curr_upper; //current
  260. threshold_t power_upper;
  261. threshold_t pcons_upper; //power consumption
  262. }threshold_ch_t;
  263. typedef struct {
  264. uint8_t type;
  265. uint32_t str_id;
  266. uint32_t sep_id;
  267. uint32_t time;
  268. }alarm_msg_t;
  269. typedef struct {
  270. uint32_t brd[BRD_MAX];
  271. uint8_t time_mode; //绝对时间/相对时间
  272. uint32_t time_s; //起始时间, 单位: 秒
  273. uint32_t time_inv; //间隔时间, 单位: 秒
  274. int8_t loop_mode; //按日/周/月/年
  275. int32_t loop_times; //循环次数, 负值为无限循环
  276. }schedule_data_t;
  277. typedef struct {
  278. sys_data_t sys;
  279. power_all_t pall;
  280. power_total_t pttl;
  281. }all_data_t;
  282. //////////////////////////////
  283. typedef struct
  284. {
  285. uint8_t userID; //用户ID
  286. char name[32]; //用户名-登录
  287. char password[32]; //用户密码
  288. char nick[32]; //用户名称
  289. uint8_t roleID; //角色ID
  290. uint32_t time; //用户创建时间
  291. }user_data_t;
  292. typedef struct
  293. {
  294. uint8_t roleID; //角色ID
  295. char roleName[32]; //角色名称
  296. uint8_t roleLevel; //角色等级
  297. char auth[32]; //角色权限
  298. int roleSort; //显示顺序
  299. uint32_t time; //创建时间
  300. }role_data_t;
  301. typedef struct {
  302. char alg[12];
  303. char passwd[64];
  304. }crypt_data_t;
  305. typedef struct {
  306. char user[32];
  307. crypt_data_t auth;
  308. crypt_data_t priv;
  309. }crypt_t;
  310. typedef struct {
  311. uint8_t mode;
  312. uint8_t version;
  313. char public[64];
  314. uint8_t trapmode;
  315. crypt_t crypt;
  316. char nms_ip[64];
  317. }snmp_data_t;
  318. typedef struct
  319. {
  320. int id;
  321. int use;
  322. char account[64];
  323. }mail_recv_t;
  324. typedef struct
  325. {
  326. uint8_t id;
  327. uint8_t mode; //0: open 1: close
  328. char account[64]; //用户账号
  329. char password[24]; //用户密码
  330. char server[64]; //服务器
  331. char port[10]; //端口
  332. char auth[16]; //认证方式
  333. char *ca; //ca cert
  334. }mail_send_t;
  335. typedef struct
  336. {
  337. mail_send_t send;
  338. #define MAIL_RECV_MAX 10
  339. mail_recv_t recv[MAIL_RECV_MAX]; //接收账号列表
  340. }mail_info_t;
  341. enum {
  342. MQTT_PLAT_EMQX=0,
  343. MQTT_PLAT_ALIYUN,
  344. MQTT_PLAT_MAX
  345. };
  346. typedef struct {
  347. uint8_t id; //id
  348. uint8_t plat; //0: emqx 1: aliyun
  349. uint8_t mode; //0: open 1: close
  350. char proto[16]; //mqtt, mqtts, ws, wss
  351. char name[32]; //server name
  352. char server[256]; //server ip
  353. char port[10]; //server port
  354. char cid[64]; //client ID
  355. char user[32]; //
  356. char password[32];
  357. char *cert;
  358. uint8_t status;
  359. }mqtt_server_t;
  360. typedef struct {
  361. #define MQTT_SER_MAX 5
  362. mqtt_server_t ser[MQTT_SER_MAX];
  363. }mqtt_info_t;
  364. #pragma pack ()
  365. #define DB_NAME "smartPDU.db"
  366. #define INI_NAME "smartPDU.ini"
  367. #define INF_NAME "PDUInfo.txt"
  368. #define CASCADE_MAX 32
  369. #endif