Skip to content

Clusters with delegates don't seem to work when used in Bridged Nodes (CON-1900) #1630

@tomasmcguinness

Description

@tomasmcguinness

I am attempting to add a Dishwasher Device Type as a Bridged Node.

Are the delegates for OperationalState and DishwasherMode fully supported?

If I define a Dishwasher endpoint like this

node::config_t node_config;
node_t *node = node::create(&node_config, app_attribute_update_cb, app_identification_cb);
ABORT_APP_ON_FAILURE(node != nullptr, ESP_LOGE(TAG, "Failed to create Matter node"));

static OperationalStateDelegate operational_state_delegate;

dish_washer::config_t dish_washer_config;
dish_washer_config.operational_state.delegate = &operational_state_delegate;
endpoint_t *ep = dish_washer::create(node, &dish_washer_config, ENDPOINT_FLAG_NONE, NULL);

esp_matter::cluster_t *operational_state_cluster = esp_matter::cluster::get(ep, chip::app::Clusters::OperationalState::Id);

esp_matter::cluster::operational_state::attribute::create_countdown_time(operational_state_cluster, 0);

esp_matter::cluster::operational_state::command::create_start(operational_state_cluster);
esp_matter::cluster::operational_state::command::create_stop(operational_state_cluster);
esp_matter::cluster::operational_state::command::create_pause(operational_state_cluster);
esp_matter::cluster::operational_state::command::create_resume(operational_state_cluster);

static DishwasherModeDelegate dishwasher_mode_delegate;

esp_matter::cluster::dish_washer_mode::config_t dish_washer_mode_config;
dish_washer_mode_config.delegate = &dishwasher_mode_delegate;
dish_washer_mode_config.current_mode = ModeNormal;

esp_matter::cluster_t *dishwasher_mode_cluster = esp_matter::cluster::dish_washer_mode::create(ep, &dish_washer_mode_config, CLUSTER_FLAG_SERVER);

esp_matter::cluster::mode_base::attribute::create_supported_modes(dishwasher_mode_cluster, NULL, 0, 0);

esp_matter::cluster::mode_base::command::create_change_to_mode(dishwasher_mode_cluster);

It works perfectly and I can see the device in Home Assistant

Image

If set up a bridge

node::config_t node_config;
node_t *node = node::create(&node_config, app_attribute_update_cb, app_identification_cb);
ABORT_APP_ON_FAILURE(node != nullptr, ESP_LOGE(TAG, "Failed to create Matter node"));

aggregator::config_t aggregator_config;
endpoint_t *aggregator = endpoint::aggregator::create(node, &aggregator_config, ENDPOINT_FLAG_NONE, NULL);
ABORT_APP_ON_FAILURE(aggregator != nullptr, ESP_LOGE(TAG, "Failed to create aggregator endpoint"));

err = app_bridge_initialize(node, create_bridge_devices);
ABORT_APP_ON_FAILURE(err == ESP_OK, ESP_LOGE(TAG, "Failed to resume the bridged endpoints: %d", err));

app_bridge_create_bridged_device(node::get(), aggregator_endpoint_id, ESP_MATTER_DISH_WASHER_DEVICE_TYPE_ID, NULL);

The create_bridge_devices callback uses the same dishwasher code as before, using dish_washer::add instead of dish_washer::create.

I get lots of errors about the OperationalStatus and DishwashMode clusters:

E (6028) data_model: get_val_internal(927): Attribute is not managed by esp matter data model
E (6028) chip[DMG]: Fail to retrieve data, roll back and encode status on clusterId: 0x0000_0060, attributeId: 0x0000_0000err = 501
E (6038) data_model: get_val_internal(927): Attribute is not managed by esp matter data model
E (6048) chip[DMG]: Fail to retrieve data, roll back and encode status on clusterId: 0x0000_0060, attributeId: 0x0000_0001err = 501
E (6058) data_model: get_val_internal(927): Attribute is not managed by esp matter data model
E (6068) chip[DMG]: Fail to retrieve data, roll back and encode status on clusterId: 0x0000_0060, attributeId: 0x0000_0003err = 501
E (6078) data_model: get_val_internal(927): Attribute is not managed by esp matter data model
E (6088) chip[DMG]: Fail to retrieve data, roll back and encode status on clusterId: 0x0000_0060, attributeId: 0x0000_0004err = 501
E (6098) data_model: get_val_internal(927): Attribute is not managed by esp matter data model
E (6108) chip[DMG]: Fail to retrieve data, roll back and encode status on clusterId: 0x0000_0060, attributeId: 0x0000_0005err = 501
E (6118) data_model: get_val_internal(927): Attribute is not managed by esp matter data model
E (6128) chip[DMG]: Fail to retrieve data, roll back and encode status on clusterId: 0x0000_0060, attributeId: 0x0000_0002err = 501
E (6138) data_model: get_val_internal(927): Attribute is not managed by esp matter data model
E (6148) chip[DMG]: Fail to retrieve data, roll back and encode status on clusterId: 0x0000_0059, attributeId: 0x0000_0001err = 501
E (6158) data_model: get_val_internal(927): Attribute is not managed by esp matter data model
E (6168) chip[DMG]: Fail to retrieve data, roll back and encode status on clusterId: 0x0000_0059, attributeId: 0x0000_0000err = 501

Any ideas?

This feels related to the Delegates for both of these attributes, but I can't see what the problem is.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions