mirror of
https://github.com/espressif/esp-matter.git
synced 2026-04-27 19:13:13 +00:00
Merge branch 'device/water_heater' into 'main'
components/esp-matter: Add Water Heater device type See merge request app-frameworks/esp-matter!950
This commit is contained in:
@@ -82,6 +82,7 @@ i. Appliances
|
||||
|
||||
j. Energy
|
||||
1. EVSE (Electric Vehicle Supply Equipment)
|
||||
2. Water Heater
|
||||
|
||||
k. Network Infrastructure
|
||||
1. Thread Border Router
|
||||
|
||||
@@ -2017,6 +2017,39 @@ esp_err_t add(endpoint_t *endpoint, config_t *config)
|
||||
}
|
||||
} /* mounted_dimmable_load_control */
|
||||
|
||||
namespace water_heater {
|
||||
uint32_t get_device_type_id()
|
||||
{
|
||||
return ESP_MATTER_WATER_HEATER_DEVICE_TYPE_ID;
|
||||
}
|
||||
|
||||
uint8_t get_device_type_version()
|
||||
{
|
||||
return ESP_MATTER_WATER_HEATER_DEVICE_TYPE_VERSION;
|
||||
}
|
||||
|
||||
endpoint_t *create(node_t *node, config_t *config, uint8_t flags, void *priv_data)
|
||||
{
|
||||
return common::create<config_t>(node, config, flags, priv_data, add);
|
||||
}
|
||||
|
||||
esp_err_t add(endpoint_t *endpoint, config_t *config)
|
||||
{
|
||||
VerifyOrReturnError(endpoint != nullptr, ESP_ERR_INVALID_ARG, ESP_LOGE(TAG, "Endpoint cannot be NULL"));
|
||||
esp_err_t err = add_device_type(endpoint, get_device_type_id(), get_device_type_version());
|
||||
if (err != ESP_OK) {
|
||||
ESP_LOGE(TAG, "Failed to add device type id:%" PRIu32 ",err: %d", get_device_type_id(), err);
|
||||
return err;
|
||||
}
|
||||
|
||||
cluster::thermostat::create(endpoint, &(config->thermostat), CLUSTER_FLAG_SERVER, cluster::thermostat::feature::heating::get_id());
|
||||
water_heater_management::create(endpoint, &(config->water_heater_management), CLUSTER_FLAG_SERVER, ESP_MATTER_NONE_FEATURE_ID);
|
||||
water_heater_mode::create(endpoint, &(config->water_heater_mode), CLUSTER_FLAG_SERVER);
|
||||
|
||||
return ESP_OK;
|
||||
}
|
||||
} /* water_heater */
|
||||
|
||||
} /* endpoint */
|
||||
|
||||
namespace node {
|
||||
|
||||
@@ -136,6 +136,8 @@
|
||||
#define ESP_MATTER_DEVICE_ENERGY_MANAGEMENT_DEVICE_TYPE_VERSION 2
|
||||
#define ESP_MATTER_SECONDARY_NETWORK_INTERFACE_DEVICE_TYPE_ID 0x0019
|
||||
#define ESP_MATTER_SECONDARY_NETWORK_INTERFACE_DEVICE_TYPE_VERSION 1
|
||||
#define ESP_MATTER_WATER_HEATER_DEVICE_TYPE_ID 0x050F
|
||||
#define ESP_MATTER_WATER_HEATER_DEVICE_TYPE_VERSION 1
|
||||
|
||||
#define ESP_MATTER_THREAD_BORDER_ROUTER_DEVICE_TYPE_ID 0x0091
|
||||
#define ESP_MATTER_THREAD_BORDER_ROUTER_DEVICE_TYPE_VERSION 1
|
||||
@@ -828,6 +830,20 @@ endpoint_t *create(node_t *node, config_t *config, uint8_t flags, void *priv_dat
|
||||
esp_err_t add(endpoint_t *endpoint, config_t *config);
|
||||
} /** mounted_dimmable_load_control **/
|
||||
|
||||
namespace water_heater {
|
||||
typedef struct config {
|
||||
cluster::descriptor::config_t descriptor;
|
||||
cluster::thermostat::config_t thermostat;
|
||||
cluster::water_heater_management::config_t water_heater_management;
|
||||
cluster::water_heater_mode::config_t water_heater_mode;
|
||||
} config_t;
|
||||
|
||||
uint32_t get_device_type_id();
|
||||
uint8_t get_device_type_version();
|
||||
endpoint_t *create(node_t *node, config_t *config, uint8_t flags, void *priv_data);
|
||||
esp_err_t add(endpoint_t *endpoint, config_t *config);
|
||||
} /* water_heater */
|
||||
|
||||
} /* endpoint */
|
||||
|
||||
namespace node {
|
||||
|
||||
@@ -55,6 +55,7 @@ enum device_type_enum {
|
||||
ESP_MATTER_THREAD_BORDER_ROUTER,
|
||||
ESP_MATTER_MOUNTED_ON_OFF_CONTROL,
|
||||
ESP_MATTER_MOUNTED_DIMMABLE_LOAD_CONTROL,
|
||||
ESP_MATTER_WATER_HEATER,
|
||||
ESP_MATTER_DEVICE_TYPE_MAX
|
||||
};
|
||||
|
||||
@@ -116,5 +117,6 @@ const device_type_name device_type_list[ESP_MATTER_DEVICE_TYPE_MAX] = {
|
||||
{"thread_border_router", ESP_MATTER_THREAD_BORDER_ROUTER},
|
||||
{"mounted_on_off_control", ESP_MATTER_MOUNTED_ON_OFF_CONTROL},
|
||||
{"mounted_dimmable_load_control", ESP_MATTER_MOUNTED_DIMMABLE_LOAD_CONTROL},
|
||||
{"water_heater", ESP_MATTER_WATER_HEATER},
|
||||
};
|
||||
} /* namespace esp_matter */
|
||||
|
||||
@@ -529,6 +529,11 @@ int create(uint8_t device_type_index)
|
||||
endpoint = esp_matter::endpoint::mounted_dimmable_load_control::create(node, &mounted_dimmable_load_control_config, ENDPOINT_FLAG_NONE, NULL);
|
||||
break;
|
||||
}
|
||||
case ESP_MATTER_WATER_HEATER: {
|
||||
esp_matter::endpoint::water_heater::config_t water_heater_config;
|
||||
endpoint = esp_matter::endpoint::water_heater::create(node, &water_heater_config, ENDPOINT_FLAG_NONE, NULL);
|
||||
break;
|
||||
}
|
||||
default: {
|
||||
ESP_LOGE(TAG, "Please input a valid device type");
|
||||
break;
|
||||
|
||||
Reference in New Issue
Block a user