Yacubane / esp32-arduino-matter

Matter IoT protocol library for ESP32 working on Arduino framework
Apache License 2.0
319 stars 33 forks source link

Help with thermostat type devices, alexa disabling use outside 35-95F #55

Open Dloranger opened 7 months ago

Dloranger commented 7 months ago

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());`

Dloranger commented 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

Dloranger commented 7 months ago

here is where alexa is locking out the higher temperatures https://developer.amazon.com/en-US/docs/alexa/device-apis/alexa-thermostatcontroller-configuration.html image