Yacubane / esp32-arduino-matter

Matter IoT protocol library for ESP32 working on Arduino framework

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

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

Dloranger opened this issue · comments

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

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?

espressif/esp-matter#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