ac_controller.h 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121
  1. /**
  2. * @Author: 李建
  3. * @Date: 2025/3/25 15:23
  4. * Description: 空调控制器
  5. * Copyright: Copyright (©) 2025 永续绿建. All rights reserved.
  6. */
  7. #ifndef WIRE_CONTROLLER_AC_CONTROLLER_H
  8. #define WIRE_CONTROLLER_AC_CONTROLLER_H
  9. #include "stdint.h"
  10. //#include "setting.h"
  11. //#include "esp_err.h"
  12. #define NVS_AC_POWER_KEY "AC_POWER"
  13. #define NVS_AC_SET_TEMP_KEY "AC_SET_TEMP"
  14. #define NVS_AC_MODE_KEY "AC_MODE"
  15. #define NVS_AC_WIND_SPEED_KEY "AC_WIND_SPEED"
  16. #define NVS_AC_NEW_FAN_MODE "AC_NF_M"
  17. // 风口序号
  18. enum {
  19. FAN_VALVE_1 = 1,
  20. FAN_VALVE_2,
  21. FAN_VALVE_3,
  22. FAN_VALVE_4,
  23. FAN_VALVE_5,
  24. };
  25. /**
  26. * 定义分控参数状态结构体
  27. */
  28. typedef struct {
  29. uint16_t power;
  30. uint16_t humidity;
  31. uint16_t temperature;
  32. uint16_t fan_value;
  33. uint16_t set_temp;
  34. uint16_t id;
  35. } sub_controller_status_t;
  36. /**
  37. * 定义保存空调设置参数的结构体
  38. */
  39. typedef struct {
  40. uint16_t power; // 电源状态
  41. uint16_t set_temp;
  42. uint16_t mode;
  43. uint16_t wind_speed;
  44. uint16_t new_fan_mode; // 新风模式控制(1:通风模式 2:新风模式)
  45. uint16_t pm25;
  46. uint16_t co2;
  47. // 数组[1,0,0,1,0]表示1 号风阀和4号风阀受控
  48. uint8_t main_fan_valve[5];
  49. uint8_t sub_1_fan_valve[5];
  50. uint8_t sub_2_fan_valve[5];
  51. uint8_t sub_3_fan_valve[5];
  52. uint8_t sub_4_fan_valve[5];
  53. sub_controller_status_t sub_controllers[4];
  54. uint16_t gmv_fault_code; // 多联机机内机故障
  55. uint16_t fg_fault_code; // 风管机故障码
  56. } ac_status_t;
  57. enum {
  58. COOL = 0,
  59. HEAT,
  60. DEHUM,
  61. WIND,
  62. HUM,
  63. };
  64. // 保存当前空调状态
  65. extern ac_status_t ac_status;
  66. /**
  67. * 控制器初始化
  68. * @param setting 系统设置参数
  69. */
  70. void ac_controller_init(system_setting_t *setting);
  71. /**
  72. * 设置风档
  73. * @param saved 是否保存到 nvs 中
  74. */
  75. esp_err_t ac_set_wind_speed(bool saved);
  76. /**
  77. * 设置电源
  78. * @param saved 是否保存到 nvs 中
  79. */
  80. esp_err_t ac_set_power(bool saved);
  81. /**
  82. * 设置温度
  83. * @param saved 是否保存到 nvs 中
  84. */
  85. esp_err_t ac_set_temp(bool saved);
  86. /**
  87. * 设置模式
  88. * @param saved 是否保存到 nvs 中
  89. */
  90. esp_err_t ac_set_mode(bool saved);
  91. /**
  92. * 设置对应风阀开度
  93. * @param no 风阀序号
  94. * @param lv 风阀开度
  95. * @param is_sub_controller 是否为分控控制
  96. */
  97. esp_err_t ac_set_fan_valve(uint8_t no, uint16_t lv, bool is_sub_controller);
  98. /**
  99. * 注册云端指令
  100. */
  101. void register_sparrow_commands(void);
  102. /**
  103. * 停止所有任务,OTA时调用
  104. */
  105. void stop_ac_controller();
  106. #endif //WIRE_CONTROLLER_AC_CONTROLLER_H