@@ -2083,21 +2083,79 @@ esp_err_t add(endpoint_t *endpoint, config_t *config)
2083
2083
2084
2084
cluster_t *power_source_cluster = cluster::get (endpoint, PowerSource::Id);
2085
2085
power_source::feature::wired::add (power_source_cluster, &config->power_source_device .power_source .wired );
2086
-
2087
2086
electrical_sensor::add (endpoint, &config->electrical_sensor );
2088
2087
electrical_energy_measurement::create (endpoint, &(config->electrical_energy_measurement ), CLUSTER_FLAG_SERVER, electrical_energy_measurement::feature::exported_energy::get_id () | electrical_energy_measurement::feature::cumulative_energy::get_id ());
2089
2088
2090
- cluster_t *ele_power_measurement_cluster = cluster::get (endpoint, ElectricalPowerMeasurement::Id);
2089
+ cluster_t *elec_power_measurement_cluster = cluster::get (endpoint, ElectricalPowerMeasurement::Id);
2091
2090
2092
2091
nullable<int64_t > voltage = 0 , active_current = 0 ;
2093
- electrical_power_measurement::attribute::create_voltage (ele_power_measurement_cluster , voltage);
2094
- electrical_power_measurement::attribute::create_active_current (ele_power_measurement_cluster , active_current);
2092
+ electrical_power_measurement::attribute::create_voltage (elec_power_measurement_cluster , voltage);
2093
+ electrical_power_measurement::attribute::create_active_current (elec_power_measurement_cluster , active_current);
2095
2094
2096
2095
2097
2096
return ESP_OK;
2098
2097
}
2099
2098
} /* solar_power */
2100
2099
2100
+ namespace battery_storage {
2101
+ uint32_t get_device_type_id ()
2102
+ {
2103
+ return ESP_MATTER_BATTERY_STORAGE_DEVICE_TYPE_ID;
2104
+ }
2105
+
2106
+ uint8_t get_device_type_version ()
2107
+ {
2108
+ return ESP_MATTER_BATTERY_STORAGE_DEVICE_TYPE_VERSION;
2109
+ }
2110
+
2111
+ endpoint_t *create (node_t *node, config_t *config, uint8_t flags, void *priv_data)
2112
+ {
2113
+ return common::create<config_t >(node, config, flags, priv_data, add);
2114
+ }
2115
+
2116
+ esp_err_t add (endpoint_t *endpoint, config_t *config)
2117
+ {
2118
+ VerifyOrReturnError (endpoint != nullptr , ESP_ERR_INVALID_ARG, ESP_LOGE (TAG, " Endpoint cannot be NULL" ));
2119
+ esp_err_t err = add_device_type (endpoint, get_device_type_id (), get_device_type_version ());
2120
+ if (err != ESP_OK) {
2121
+ ESP_LOGE (TAG, " Failed to add device type id:%" PRIu32 " ,err: %d" , get_device_type_id (), err);
2122
+ return err;
2123
+ }
2124
+
2125
+ cluster_t *descriptor_cluster = cluster::get (endpoint, Descriptor::Id);
2126
+ descriptor::feature::taglist::add (descriptor_cluster);
2127
+
2128
+ power_source_device::add (endpoint, &config->power_source_device );
2129
+
2130
+ cluster_t *power_source_cluster = cluster::get (endpoint, PowerSource::Id);
2131
+ power_source::feature::wired::add (power_source_cluster, &config->power_source_device .power_source .wired );
2132
+ power_source::feature::battery::add (power_source_cluster, &config->power_source_device .power_source .battery );
2133
+
2134
+ power_source::attribute::create_bat_voltage (power_source_cluster, config->bat_voltage , 0x00 , 0xFFFF );
2135
+ power_source::attribute::create_bat_percent_remaining (power_source_cluster, config->bat_percent_remaining , 0 , 200 );
2136
+ power_source::attribute::create_bat_time_remaining (power_source_cluster, config->bat_time_remaining , 0x00 , 0xFFFF );
2137
+ power_source::attribute::create_active_bat_faults (power_source_cluster, NULL , 0 , 0 );
2138
+ power_source::attribute::create_bat_capacity (power_source_cluster, config->bat_capacity , 0x00 , 0xFFFF );
2139
+ power_source::attribute::create_bat_time_to_full_charge (power_source_cluster, config->bat_time_to_full_charge , 0x00 , 0xFFFF );
2140
+ power_source::attribute::create_bat_charging_current (power_source_cluster, config->bat_charging_current , 0x00 , 0xFFFF );
2141
+ power_source::attribute::create_active_bat_charge_faults (power_source_cluster, NULL , 0 , 0 );
2142
+
2143
+ electrical_sensor::add (endpoint, &config->electrical_sensor );
2144
+ electrical_energy_measurement::create (endpoint, &(config->electrical_energy_measurement ), CLUSTER_FLAG_SERVER, electrical_energy_measurement::feature::exported_energy::get_id () | electrical_energy_measurement::feature::cumulative_energy::get_id ());
2145
+
2146
+ cluster_t *elec_power_measurement_cluster = cluster::get (endpoint, ElectricalPowerMeasurement::Id);
2147
+
2148
+ electrical_power_measurement::attribute::create_voltage (elec_power_measurement_cluster, config->voltage );
2149
+ electrical_power_measurement::attribute::create_active_current (elec_power_measurement_cluster, config->active_current );
2150
+
2151
+ device_energy_management::add (endpoint, &config->device_energy_management );
2152
+
2153
+ cluster_t *device_energy_management_cluster = cluster::get (endpoint, DeviceEnergyManagement::Id);
2154
+ cluster::device_energy_management::feature::power_adjustment::add (device_energy_management_cluster);
2155
+ return ESP_OK;
2156
+ }
2157
+ } /* battery_storage */
2158
+
2101
2159
} /* endpoint */
2102
2160
2103
2161
namespace node {
0 commit comments