Version 1.0.0
Initial version.
This commit is contained in:
		
							
								
								
									
										535
									
								
								components/zh_config/include/zh_config.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										535
									
								
								components/zh_config/include/zh_config.h
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,535 @@ | ||||
| #pragma once | ||||
|  | ||||
| #include "stdio.h" | ||||
| #include "stdint.h" | ||||
| #include "stdbool.h" | ||||
|  | ||||
| #define ZH_HIGH true | ||||
| #define ZH_LOW false | ||||
|  | ||||
| #define ZH_ON true | ||||
| #define ZH_OFF false | ||||
|  | ||||
| #define ZH_ONLINE true | ||||
| #define ZH_OFFLINE false | ||||
|  | ||||
| #define ZH_NOT_USED 0xFF | ||||
| //***********************************************************************************// | ||||
| #define ZH_DEVICE_TYPE                             \ | ||||
|     DF(ZHDT_NONE, "")                              \ | ||||
|     DF(ZHDT_GATEWAY, "gateway")                    \ | ||||
|     DF(ZHDT_SWITCH, "espnow_switch")               \ | ||||
|     DF(ZHDT_LED, "espnow_led")                     \ | ||||
|     DF(ZHDT_SENSOR, "espnow_sensor")               \ | ||||
|     DF(ZHDT_RF_GATEWAY, "espnow_rf_gateway")       \ | ||||
|     DF(ZHDT_CONTROL_PANEL, "espnow_control_panel") \ | ||||
|     DF(ZHDT_DIMMER, "espnow_dimmer")               \ | ||||
|     DF(ZHDT_TERRARIUM, "espnow_terrarium")         \ | ||||
|     DF(ZHDT_RF_SENSOR, "rf_sensor")                \ | ||||
|     DF(ZHDT_BINARY_SENSOR, "espnow_sensor")        \ | ||||
|     DF(ZHDT_MAX, "") | ||||
|  | ||||
| typedef enum zh_device_type_t | ||||
| { | ||||
| #define DF(_value, _name) _value, | ||||
|     ZH_DEVICE_TYPE | ||||
| #undef DF | ||||
| } zh_device_type_t; | ||||
|  | ||||
| char *zh_get_device_type_value_name(zh_device_type_t value); | ||||
| //***********************************************************************************// | ||||
| #define ZH_PAYLOAD_TYPE                 \ | ||||
|     DF(ZHPT_NONE, "")                   \ | ||||
|     DF(ZHPT_ATTRIBUTES, "attributes")   \ | ||||
|     DF(ZHPT_KEEP_ALIVE, "status")       \ | ||||
|     DF(ZHPT_SET, "set")                 \ | ||||
|     DF(ZHPT_STATE, "state")             \ | ||||
|     DF(ZHPT_UPDATE, "update")           \ | ||||
|     DF(ZHPT_RESTART, "restart")         \ | ||||
|     DF(ZHPT_SYSTEM, "system")           \ | ||||
|     DF(ZHPT_CONFIG, "config")           \ | ||||
|     DF(ZHPT_FORWARD, "forward")         \ | ||||
|     DF(ZHPT_UPDATE_BEGIN, "")           \ | ||||
|     DF(ZHPT_UPDATE_PROGRESS, "")        \ | ||||
|     DF(ZHPT_UPDATE_END, "")             \ | ||||
|     DF(ZHPT_UPDATE_ERROR, "")           \ | ||||
|     DF(ZHPT_UPDATE_FAIL, "")            \ | ||||
|     DF(ZHPT_UPDATE_SUCCESS, "")         \ | ||||
|     DF(ZHPT_BRIGHTNESS, "brightness")   \ | ||||
|     DF(ZHPT_TEMPERATURE, "temperature") \ | ||||
|     DF(ZHPT_RGB, "rgb")                 \ | ||||
|     DF(ZHPT_EFFECT, "effect")           \ | ||||
|     DF(ZHPT_HARDWARE, "hardware")       \ | ||||
|     DF(ZHPT_MAX, "") | ||||
|  | ||||
| typedef enum zh_payload_type_t | ||||
| { | ||||
| #define DF(_value, _name) _value, | ||||
|     ZH_PAYLOAD_TYPE | ||||
| #undef DF | ||||
| } zh_payload_type_t; | ||||
|  | ||||
| char *zh_get_payload_type_value_name(zh_payload_type_t value); | ||||
| //***********************************************************************************// | ||||
| #define HA_COMPONENT_TYPE                               \ | ||||
|     DF(HACT_NONE, "")                                   \ | ||||
|     DF(HACT_ALARM_CONTROL_PANEL, "alarm_control_panel") \ | ||||
|     DF(HACT_BINARY_SENSOR, "binary_sensor")             \ | ||||
|     DF(HACT_BUTTON, "button")                           \ | ||||
|     DF(HACT_CAMERA, "camera")                           \ | ||||
|     DF(HACT_COVER, "cover")                             \ | ||||
|     DF(HACT_DEVICE_TRACKER, "device_tracker")           \ | ||||
|     DF(HACT_FAN, "fan")                                 \ | ||||
|     DF(HACT_HUMIDIFIER, "humidifier")                   \ | ||||
|     DF(HACT_CLIMATE_HVAC, "climate")                    \ | ||||
|     DF(HACT_LIGHT, "light")                             \ | ||||
|     DF(HACT_LOCK, "lock")                               \ | ||||
|     DF(HACT_NUMBER, "number")                           \ | ||||
|     DF(HACT_SCENE, "scene")                             \ | ||||
|     DF(HACT_SELECT, "select")                           \ | ||||
|     DF(HACT_SENSOR, "sensor")                           \ | ||||
|     DF(HACT_SIREN, "siren")                             \ | ||||
|     DF(HACT_SWITCH, "switch")                           \ | ||||
|     DF(HACT_UPDATE, "update")                           \ | ||||
|     DF(HACT_TEXT, "text")                               \ | ||||
|     DF(HACT_VACUUM, "vacuum")                           \ | ||||
|     DF(HACT_MAX, "") | ||||
|  | ||||
| typedef enum ha_component_type_t | ||||
| { | ||||
| #define DF(_value, _name) _value, | ||||
|     HA_COMPONENT_TYPE | ||||
| #undef DF | ||||
| } ha_component_type_t; | ||||
|  | ||||
| char *zh_get_component_type_value_name(ha_component_type_t value); | ||||
| //***********************************************************************************// | ||||
| #define HA_BINARY_SENSOR_DEVICE_CLASS               \ | ||||
|     DF(HABSDC_NONE, "")                             \ | ||||
|     DF(HABSDC_BATTERY, "battery")                   \ | ||||
|     DF(HABSDC_BATTERY_CHARGING, "battery_charging") \ | ||||
|     DF(HABSDC_CARBON_MONOXIDE, "carbon_monoxide")   \ | ||||
|     DF(HABSDC_COLD, "cold")                         \ | ||||
|     DF(HABSDC_CONNECTIVITY, "connectivity")         \ | ||||
|     DF(HABSDC_DOOR, "door")                         \ | ||||
|     DF(HABSDC_GARAGE_DOOR, "garage_door")           \ | ||||
|     DF(HABSDC_GAS, "gas")                           \ | ||||
|     DF(HABSDC_HEAT, "heat")                         \ | ||||
|     DF(HABSDC_LIGHT, "light")                       \ | ||||
|     DF(HABSDC_LOCK, "lock")                         \ | ||||
|     DF(HABSDC_MOISTURE, "moisture")                 \ | ||||
|     DF(HABSDC_MOTION, "motion")                     \ | ||||
|     DF(HABSDC_MOVING, "moving")                     \ | ||||
|     DF(HABSDC_OCCUPANCY, "occupancy")               \ | ||||
|     DF(HABSDC_OPENING, "opening")                   \ | ||||
|     DF(HABSDC_PLUG, "plug")                         \ | ||||
|     DF(HABSDC_POWER, "power")                       \ | ||||
|     DF(HABSDC_PRESENCE, "presence")                 \ | ||||
|     DF(HABSDC_PROBLEM, "problem")                   \ | ||||
|     DF(HABSDC_RUNNING, "running")                   \ | ||||
|     DF(HABSDC_SAFETY, "safety")                     \ | ||||
|     DF(HABSDC_SMOKE, "smoke")                       \ | ||||
|     DF(HABSDC_SOUND, "sound")                       \ | ||||
|     DF(HABSDC_TAMPER, "tamper")                     \ | ||||
|     DF(HABSDC_UPDATE, "update")                     \ | ||||
|     DF(HABSDC_VIBRATION, "vibration")               \ | ||||
|     DF(HABSDC_WINDOW, "window")                     \ | ||||
|     DF(HABSDC_MAX, "") | ||||
|  | ||||
| typedef enum ha_binary_sensor_device_class_t | ||||
| { | ||||
| #define DF(_value, _name) _value, | ||||
|     HA_BINARY_SENSOR_DEVICE_CLASS | ||||
| #undef DF | ||||
| } ha_binary_sensor_device_class_t; | ||||
|  | ||||
| char *zh_get_binary_sensor_device_class_value_name(ha_binary_sensor_device_class_t value); | ||||
| //***********************************************************************************// | ||||
| #define HA_COVER_DEVICE_CLASS    \ | ||||
|     DF(HACDC_NONE, "")           \ | ||||
|     DF(HACDC_AWNING, "awning")   \ | ||||
|     DF(HACDC_BLIND, "blind")     \ | ||||
|     DF(HACDC_CURTAIN, "curtain") \ | ||||
|     DF(HACDC_DAMPER, "damper")   \ | ||||
|     DF(HACDC_DOOR, "door")       \ | ||||
|     DF(HACDC_GARAGE, "garage")   \ | ||||
|     DF(HACDC_GATE, "gate")       \ | ||||
|     DF(HACDC_SHADE, "shade")     \ | ||||
|     DF(HACDC_SHUTTER, "shutter") \ | ||||
|     DF(HACDC_WINDOW, "window")   \ | ||||
|     DF(HACDC_MAX, "") | ||||
|  | ||||
| typedef enum ha_cover_device_class_t | ||||
| { | ||||
| #define DF(_value, _name) _value, | ||||
|     HA_COVER_DEVICE_CLASS | ||||
| #undef DF | ||||
| } ha_cover_device_class_t; | ||||
|  | ||||
| char *zh_get_cover_device_class_value_name(ha_cover_device_class_t value); | ||||
| //***********************************************************************************// | ||||
| #define HA_SENSOR_DEVICE_CLASS                                         \ | ||||
|     DF(HASDC_NONE, "")                                                 \ | ||||
|     DF(HASDC_APPARENT_POWER, "apparent_power")                         \ | ||||
|     DF(HASDC_AQI, "aqi")                                               \ | ||||
|     DF(HASDC_BATTERY, "battery")                                       \ | ||||
|     DF(HASDC_CARBON_DIOXIDE, "carbon_dioxide")                         \ | ||||
|     DF(HASDC_CARBON_MONOXIDE, "carbon_monoxide")                       \ | ||||
|     DF(HASDC_CURRENT, "current")                                       \ | ||||
|     DF(HASDC_DATE, "date")                                             \ | ||||
|     DF(HASDC_DISTANCE, "distance")                                     \ | ||||
|     DF(HASDC_DURATION, "duration")                                     \ | ||||
|     DF(HASDC_ENERGY, "energy")                                         \ | ||||
|     DF(HASDC_FREQUENCY, "frequency")                                   \ | ||||
|     DF(HASDC_GAS, "gas")                                               \ | ||||
|     DF(HASDC_HUMIDITY, "humidity")                                     \ | ||||
|     DF(HASDC_ILLUMINANCE, "illuminance")                               \ | ||||
|     DF(HASDC_MOISTURE, "moisture")                                     \ | ||||
|     DF(HASDC_MONETARY, "monetar")                                      \ | ||||
|     DF(HASDC_NITROGEN_DIOXIDE, "nitrogen_dioxide")                     \ | ||||
|     DF(HASDC_NITROGEN_MONOXIDE, "nitrogen_monoxide")                   \ | ||||
|     DF(HASDC_NITROUS_OXIDE, "nitrous_oxide")                           \ | ||||
|     DF(HASDC_OZONE, "ozone")                                           \ | ||||
|     DF(HASDC_PM1, "pm1")                                               \ | ||||
|     DF(HASDC_PM10, "pm10")                                             \ | ||||
|     DF(HASDC_PM25, "pm25")                                             \ | ||||
|     DF(HASDC_POWER_FACTOR, "power_factor")                             \ | ||||
|     DF(HASDC_POWER, "power")                                           \ | ||||
|     DF(HASDC_PRECIPITATION, "precipitation")                           \ | ||||
|     DF(HASDC_PRECIPITATION_INTENSITY, "precipitation_intensity")       \ | ||||
|     DF(HASDC_PRESSURE, "pressure")                                     \ | ||||
|     DF(HASDC_REACTIVE_POWER, "reactive_power")                         \ | ||||
|     DF(HASDC_SIGNAL_STRENGTH, "signal_strength")                       \ | ||||
|     DF(HASDC_SPEED, "speed")                                           \ | ||||
|     DF(HASDC_SULPHUR_DIOXIDE, "sulphur_dioxide")                       \ | ||||
|     DF(HASDC_TEMPERATURE, "temperature")                               \ | ||||
|     DF(HASDC_TIMESTAMP, "timestamp")                                   \ | ||||
|     DF(HASDC_VOLATILE_ORGANIC_COMPOUNDS, "volatile_organic_compounds") \ | ||||
|     DF(HASDC_VOLTAGE, "voltage")                                       \ | ||||
|     DF(HASDC_VOLUME, "volume")                                         \ | ||||
|     DF(HASDC_WATER, "water")                                           \ | ||||
|     DF(HASDC_WEIGHT, "weight")                                         \ | ||||
|     DF(HASDC_WIND_SPEED, "wind_speed")                                 \ | ||||
|     DF(HASDC_MAX, "") | ||||
|  | ||||
| typedef enum ha_sensor_device_class_t | ||||
| { | ||||
| #define DF(_value, _name) _value, | ||||
|     HA_SENSOR_DEVICE_CLASS | ||||
| #undef DF | ||||
| } ha_sensor_device_class_t; | ||||
|  | ||||
| char *zh_get_sensor_device_class_value_name(ha_sensor_device_class_t value); | ||||
| //***********************************************************************************// | ||||
| #define HA_SWITCH_DEVICE_CLASS  \ | ||||
|     DF(HASWDC_NONE, "")         \ | ||||
|     DF(HASWDC_OUTLET, "outlet") \ | ||||
|     DF(HASWDC_SWITCH, "switch") \ | ||||
|     DF(HASWDC_MAX, "") | ||||
|  | ||||
| typedef enum ha_switch_device_class_t | ||||
| { | ||||
| #define DF(_value, _name) _value, | ||||
|     HA_SWITCH_DEVICE_CLASS | ||||
| #undef DF | ||||
| } ha_switch_device_class_t; | ||||
|  | ||||
| char *zh_get_switch_device_class_value_name(ha_switch_device_class_t value); | ||||
| //***********************************************************************************// | ||||
| #define HA_ON_OFF_TYPE             \ | ||||
|     DF(HAONOFT_NONE, "")           \ | ||||
|     DF(HAONOFT_ON, "ON")           \ | ||||
|     DF(HAONOFT_OFF, "OFF")         \ | ||||
|     DF(HAONOFT_OPEN, "OPEN")       \ | ||||
|     DF(HAONOFT_CLOSE, "CLOSE")     \ | ||||
|     DF(HAONOFT_LOW, "LOW")         \ | ||||
|     DF(HAONOFT_MID, "MID")         \ | ||||
|     DF(HAONOFT_HIGH, "HIGH")       \ | ||||
|     DF(HAONOFT_ALARM, "ALARM")     \ | ||||
|     DF(HAONOFT_DRY, "DRY")         \ | ||||
|     DF(HAONOFT_MOTION, "MOTION")   \ | ||||
|     DF(HAONOFT_CONNECT, "CONNECT") \ | ||||
|     DF(HAONOFT_LEAKAGE, "LEAKAGE") \ | ||||
|     DF(HAONOFT_MAX, "") | ||||
|  | ||||
| typedef enum ha_on_off_type_t | ||||
| { | ||||
| #define DF(_value, _name) _value, | ||||
|     HA_ON_OFF_TYPE | ||||
| #undef DF | ||||
| } ha_on_off_type_t; | ||||
|  | ||||
| char *zh_get_on_off_type_value_name(ha_on_off_type_t value); | ||||
| //***********************************************************************************// | ||||
| #define HA_CHIP_TYPE              \ | ||||
|     DF(HACHT_NONE, "")            \ | ||||
|     DF(HACHT_ESP32, "ESP32")      \ | ||||
|     DF(HACHT_ESP8266, "ESP8266")  \ | ||||
|     DF(HACHT_ESP32S2, "ESP32-S2") \ | ||||
|     DF(HACHT_ESP32S3, "ESP32-S3") \ | ||||
|     DF(HACHT_ESP32C2, "ESP32-C2") \ | ||||
|     DF(HACHT_ESP32C3, "ESP32-C3") \ | ||||
|     DF(HACHT_ESP32C6, "ESP32-C6") \ | ||||
|     DF(HACHT_MAX, "") | ||||
|  | ||||
| typedef enum ha_chip_type_t | ||||
| { | ||||
| #define DF(_value, _name) _value, | ||||
|     HA_CHIP_TYPE | ||||
| #undef DF | ||||
| } ha_chip_type_t; | ||||
|  | ||||
| char *zh_get_chip_type_value_name(ha_chip_type_t value); | ||||
| //***********************************************************************************// | ||||
| #define HA_LED_EFFECT_TYPE \ | ||||
|     DF(HALET_NONE, "")     \ | ||||
|     DF(HALET_MAX, "") | ||||
|  | ||||
| typedef enum ha_led_effect_type_t | ||||
| { | ||||
| #define DF(_value, _name) _value, | ||||
|     HA_LED_EFFECT_TYPE | ||||
| #undef DF | ||||
| } ha_led_effect_type_t; | ||||
| //***********************************************************************************// | ||||
| #define HA_LED_TYPE         \ | ||||
|     DF(HALT_NONE, "")       \ | ||||
|     DF(HALT_W, "W")         \ | ||||
|     DF(HALT_WW, "WW")       \ | ||||
|     DF(HALT_RGB, "RGB")     \ | ||||
|     DF(HALT_RGBW, "RGBW")   \ | ||||
|     DF(HALT_RGBWW, "RGBWW") \ | ||||
|     DF(HALT_MAX, "") | ||||
|  | ||||
| typedef enum ha_led_type_t | ||||
| { | ||||
| #define DF(_value, _name) _value, | ||||
|     HA_LED_TYPE | ||||
| #undef DF | ||||
| } ha_led_type_t; | ||||
|  | ||||
| char *zh_get_led_type_value_name(ha_led_type_t value); | ||||
| //***********************************************************************************// | ||||
| #define HA_SENSOR_TYPE          \ | ||||
|     DF(HAST_NONE, "")           \ | ||||
|     DF(HAST_DS18B20, "DS18B20") \ | ||||
|     DF(HAST_DHT11, "DHT11")     \ | ||||
|     DF(HAST_DHT22, "DHT22")     \ | ||||
|     DF(HAST_GATEWAY, "GATEWAY") \ | ||||
|     DF(HAST_WINDOW, "WINDOW")   \ | ||||
|     DF(HAST_DOOR, "DOOR")       \ | ||||
|     DF(HAST_LEAKAGE, "LEAKAGE") \ | ||||
|     DF(HAST_MAX, "") | ||||
|  | ||||
| typedef enum ha_sensor_type_t | ||||
| { | ||||
| #define DF(_value, _name) _value, | ||||
|     HA_SENSOR_TYPE | ||||
| #undef DF | ||||
| } ha_sensor_type_t; | ||||
|  | ||||
| char *zh_get_sensor_type_value_name(ha_sensor_type_t value); | ||||
| //***********************************************************************************// | ||||
| typedef struct zh_sensor_config_message_t | ||||
| { | ||||
|     uint8_t unique_id; | ||||
|     ha_sensor_device_class_t sensor_device_class; | ||||
|     char unit_of_measurement[5]; | ||||
|     uint8_t suggested_display_precision; | ||||
|     uint16_t expire_after; | ||||
|     bool enabled_by_default; | ||||
|     bool force_update; | ||||
|     uint8_t qos; | ||||
|     bool retain; | ||||
| } __attribute__((packed)) zh_sensor_config_message_t; | ||||
|  | ||||
| typedef struct zh_sensor_hardware_config_message_t | ||||
| { | ||||
|     ha_sensor_type_t sensor_type; | ||||
|     uint8_t sensor_pin_1; | ||||
|     uint8_t sensor_pin_2; | ||||
|     uint8_t power_pin; | ||||
|     uint16_t measurement_frequency; | ||||
|     bool battery_power; | ||||
| } __attribute__((packed)) zh_sensor_hardware_config_message_t; | ||||
|  | ||||
| typedef struct zh_binary_sensor_config_message_t | ||||
| { | ||||
|     uint8_t unique_id; | ||||
|     ha_binary_sensor_device_class_t binary_sensor_device_class; | ||||
|     ha_on_off_type_t payload_on; | ||||
|     ha_on_off_type_t payload_off; | ||||
|     uint16_t expire_after; | ||||
|     uint16_t off_delay; | ||||
|     bool enabled_by_default; | ||||
|     bool force_update; | ||||
|     uint8_t qos; | ||||
|     bool retain; | ||||
| } __attribute__((packed)) zh_binary_sensor_config_message_t; | ||||
|  | ||||
| typedef struct zh_led_config_message_t | ||||
| { | ||||
|     uint8_t unique_id; | ||||
|     ha_led_type_t led_type; | ||||
|     ha_on_off_type_t payload_on; | ||||
|     ha_on_off_type_t payload_off; | ||||
|     bool enabled_by_default; | ||||
|     bool optimistic; | ||||
|     uint8_t qos; | ||||
|     bool retain; | ||||
| } __attribute__((packed)) zh_led_config_message_t; | ||||
|  | ||||
| typedef struct zh_led_hardware_config_message_t | ||||
| { | ||||
|     ha_led_type_t led_type; | ||||
|     uint8_t first_white_pin; | ||||
|     uint8_t second_white_pin; | ||||
|     uint8_t red_pin; | ||||
|     uint8_t green_pin; | ||||
|     uint8_t blue_pin; | ||||
| } __attribute__((packed)) zh_led_hardware_config_message_t; | ||||
|  | ||||
| typedef struct zh_switch_config_message_t | ||||
| { | ||||
|     uint8_t unique_id; | ||||
|     ha_switch_device_class_t device_class; | ||||
|     ha_on_off_type_t payload_on; | ||||
|     ha_on_off_type_t payload_off; | ||||
|     bool enabled_by_default; | ||||
|     bool optimistic; | ||||
|     uint8_t qos; | ||||
|     bool retain; | ||||
| } __attribute__((packed)) zh_switch_config_message_t; | ||||
|  | ||||
| typedef struct zh_switch_hardware_config_message_t | ||||
| { | ||||
|     uint8_t relay_pin; | ||||
|     bool relay_on_level; | ||||
|     uint8_t led_pin; | ||||
|     bool led_on_level; | ||||
|     uint8_t int_button_pin; | ||||
|     bool int_button_on_level; | ||||
|     uint8_t ext_button_pin; | ||||
|     bool ext_button_on_level; | ||||
|     uint8_t sensor_pin; | ||||
|     ha_sensor_type_t sensor_type; | ||||
| } __attribute__((packed)) zh_switch_hardware_config_message_t; | ||||
| //***********************************************************************************// | ||||
| typedef struct zh_sensor_status_message_t | ||||
| { | ||||
|     ha_sensor_type_t sensor_type; | ||||
|     float temperature; | ||||
|     float humidity; | ||||
|     float pressure; | ||||
|     float quality; | ||||
|     float voltage; | ||||
|     float reserved_1; // Reserved for future development. | ||||
|     float reserved_2; // Reserved for future development. | ||||
|     float reserved_3; // Reserved for future development. | ||||
|     float reserved_4; // Reserved for future development. | ||||
|     float reserved_5; // Reserved for future development. | ||||
| } __attribute__((packed)) zh_sensor_status_message_t; | ||||
|  | ||||
| typedef struct zh_binary_sensor_status_message_t | ||||
| { | ||||
|     ha_sensor_type_t sensor_type; | ||||
|     ha_on_off_type_t connect; | ||||
|     ha_on_off_type_t open; | ||||
|     ha_on_off_type_t battery; | ||||
|     ha_on_off_type_t leakage; | ||||
|     ha_on_off_type_t reserved_1; // Reserved for future development. | ||||
|     ha_on_off_type_t reserved_2; // Reserved for future development. | ||||
|     ha_on_off_type_t reserved_3; // Reserved for future development. | ||||
|     ha_on_off_type_t reserved_4; // Reserved for future development. | ||||
|     ha_on_off_type_t reserved_5; // Reserved for future development. | ||||
| } __attribute__((packed)) zh_binary_sensor_status_message_t; | ||||
|  | ||||
| typedef struct zh_led_status_message_t | ||||
| { | ||||
|     ha_on_off_type_t status; | ||||
|     uint8_t brightness; | ||||
|     uint16_t temperature; | ||||
|     uint8_t red; | ||||
|     uint8_t green; | ||||
|     uint8_t blue; | ||||
|     ha_led_effect_type_t effect; // Reserved for future development. | ||||
| } __attribute__((packed)) zh_led_status_message_t; | ||||
|  | ||||
| typedef struct zh_switch_status_message_t | ||||
| { | ||||
|     ha_on_off_type_t status; | ||||
| } __attribute__((packed)) zh_switch_status_message_t; | ||||
| //***********************************************************************************// | ||||
| typedef struct zh_attributes_message_t | ||||
| { | ||||
|     ha_chip_type_t chip_type; | ||||
|     ha_sensor_type_t sensor_type; | ||||
|     char flash_size[5]; | ||||
|     uint8_t cpu_frequency; | ||||
|     uint32_t heap_size; | ||||
|     uint32_t min_heap_size; | ||||
|     uint8_t reset_reason; | ||||
|     char app_name[32]; | ||||
|     char app_version[32]; | ||||
|     uint32_t uptime; | ||||
| } __attribute__((packed)) zh_attributes_message_t; | ||||
|  | ||||
| typedef struct zh_keep_alive_message_t | ||||
| { | ||||
|     bool online_status; | ||||
|     uint8_t message_frequency; | ||||
| } __attribute__((packed)) zh_keep_alive_message_t; | ||||
|  | ||||
| typedef union zh_config_message_t | ||||
| { | ||||
|     zh_binary_sensor_config_message_t binary_sensor_config_message; | ||||
|     zh_sensor_config_message_t sensor_config_message; | ||||
|     zh_sensor_hardware_config_message_t sensor_hardware_config_message; | ||||
|     zh_led_config_message_t led_config_message; | ||||
|     zh_led_hardware_config_message_t led_hardware_config_message; | ||||
|     zh_switch_config_message_t switch_config_message; | ||||
|     zh_switch_hardware_config_message_t switch_hardware_config_message; | ||||
| } __attribute__((packed)) zh_config_message_t; | ||||
|  | ||||
| typedef union zh_status_message_t | ||||
| { | ||||
|     zh_binary_sensor_status_message_t binary_sensor_status_message; | ||||
|     zh_sensor_status_message_t sensor_status_message; | ||||
|     zh_led_status_message_t led_status_message; | ||||
|     zh_switch_status_message_t switch_status_message; | ||||
| } __attribute__((packed)) zh_status_message_t; | ||||
|  | ||||
| typedef struct zh_espnow_ota_message_t | ||||
| { | ||||
|     ha_chip_type_t chip_type; | ||||
|     char app_name[32]; | ||||
|     char app_version[32]; | ||||
|     uint16_t part; | ||||
|     uint8_t data_len; | ||||
|     uint8_t data[128]; | ||||
| } __attribute__((packed)) zh_espnow_ota_message_t; | ||||
|  | ||||
| typedef struct zh_espnow_ota_data_t | ||||
| { | ||||
|     ha_chip_type_t chip_type; | ||||
|     zh_device_type_t device_type; | ||||
|     char app_name[32]; | ||||
|     char app_version[32]; | ||||
|     uint8_t mac_addr[6]; | ||||
| } __attribute__((packed)) zh_espnow_ota_data_t; | ||||
|  | ||||
| typedef union zh_payload_data_t | ||||
| { | ||||
|     zh_attributes_message_t attributes_message; | ||||
|     zh_keep_alive_message_t keep_alive_message; | ||||
|     zh_config_message_t config_message; | ||||
|     zh_status_message_t status_message; | ||||
|     zh_espnow_ota_message_t espnow_ota_message; | ||||
| } __attribute__((packed)) zh_payload_data_t; | ||||
|  | ||||
| typedef struct zh_espnow_data_t | ||||
| { | ||||
|     zh_device_type_t device_type; | ||||
|     zh_payload_type_t payload_type; | ||||
|     zh_payload_data_t payload_data; | ||||
| } __attribute__((packed)) zh_espnow_data_t; | ||||
		Reference in New Issue
	
	Block a user