Open Dloranger opened 7 months ago
I have found others that may be fighting the same issues, but perhaps its just an understanding issue of the underlying thermostat code somewhere where I am not setting the values correctly?
https://github.com/espressif/esp-matter/issues/773
Something like this would be where I would like to end up, but using matter for more universal access to home such as alexa/google/apple/etc.
https://developer.amazon.com/en-US/docs/alexa/device-apis/alexa-cooking-temperaturecontroller.html
here is where alexa is locking out the higher temperatures https://developer.amazon.com/en-US/docs/alexa/device-apis/alexa-thermostatcontroller-configuration.html
The issues I am running into at the moment is that the thermostat device is severely crippled by Alexa with limits imposed of 36F to 95F. These appear to be hard coded in the alexa side as I can set the heat point to 212F on the code side, but the user can't adjust anything except turning down the temp until its below 95F.
Hoping we can add more of the newer device types to the models available that I can try to use such as the temperature cabinet, or many of the kitchen appliances (not sure if matter supports these yet or not). I tried using the temperature cabinet model that I found somewhere (cant find it now), but that device type was not found in this library.
I am working on a water kettle (boiler type device) where I need to be able to set and take actions within Alexa up to around 220F. Seems there are many new types of alexa devices that are well suited to my upcoming needs, just not sure how to get them to be usable thru the matter protocols.
` //create thermostat sensor endpoint endpoint_t therm_endpoint; cluster_t therm_cluster; thermostat::config_t therm_config; therm_config.thermostat.local_temperature = 2400;
therm_endpoint = thermostat::create(node, &therm_config, ENDPOINT_FLAG_NONE, NULL); print_endpoint_info("thermostat", therm_endpoint);
uint16_t therm_endpoint_id = endpoint::get_id(therm_endpoint); print_endpoint_info("Thermostat_endpoint", therm_endpoint); // Add additional feature therm_cluster = cluster::get(therm_endpoint, Thermostat::Id); cluster::thermostat::feature::heating::config_t heating_config;
//units of temperature are in 0.01 Celsius for matter interactions heating_config.abs_max_heat_setpoint_limit = 10500; heating_config.abs_min_heat_setpoint_limit = 1500; heating_config.max_heat_setpoint_limit = 10500; heating_config.min_heat_setpoint_limit = 1500; heating_config.pi_heating_demand = 0; heating_config.occupied_heating_setpoint = 10500; cluster::thermostat::feature::heating::add(therm_cluster, &heating_config);
//set heating step size matterValue = esp_matter_int16(5); //5C attribute::update(thermostat_endpoint_id, CLUSTER_ID_THERM, Thermostat::Attributes::SetpointChangeAmount::Id, &matterValue);
// set operating mode to heating (default to "auto", trying to override that) matterValue = esp_matter_int16(4); attribute::update(thermostat_endpoint_id, CLUSTER_ID_THERM, Thermostat::Attributes::ThermostatRunningMode::Id, &matterValue); attribute::update(thermostat_endpoint_id, CLUSTER_ID_THERM, Thermostat::Attributes::SystemMode::Id, &matterValue); //set heating occupied setpoint temp (units of degrees C) matterValue = esp_matter_int16(HeatingTemp); attribute::update(thermostat_endpoint_id, CLUSTER_ID_THERM, Thermostat::Attributes::OccupiedHeatingSetpoint::Id, &matterValue); // set maximum set point matterValue = esp_matter_int16(HeatingTemp+5); attribute::update(thermostat_endpoint_id, CLUSTER_ID_THERM, Thermostat::Attributes::AbsMaxHeatSetpointLimit::Id, &matterValue); attribute::update(thermostat_endpoint_id, CLUSTER_ID_THERM, Thermostat::Attributes::MaxHeatSetpointLimit::Id, &matterValue);
// Setup DAC (this is good place to also set custom commission data, passcodes etc.) esp_matter::set_custom_dac_provider(chip::Credentials::Examples::GetExampleDACProvider());`