fixed input publish and change climate to name

This commit is contained in:
Siwat Sirichai 2024-01-01 00:07:11 +07:00
parent 4c77474a94
commit e1f0fd5651
6 changed files with 55 additions and 14 deletions

View file

@ -129,6 +129,16 @@ void ClimateCard::setMode(uint8_t mode)
saveStateToFRAM();
}
char* ClimateCard::getModeName()
{
return (char*)ac.mode_names[state.ac_mode];
}
char* ClimateCard::getFanSpeedName()
{
return (char*)ac.fan_speed_names[state.ac_fan_speed];
}
void ClimateCard::setFanSpeed(uint8_t fan_speed)
{
this->state.ac_fan_speed = fan_speed;
@ -137,6 +147,30 @@ void ClimateCard::setFanSpeed(uint8_t fan_speed)
saveStateToFRAM();
}
void ClimateCard::setFanSpeedByName(const char* fan_speed_name)
{
for (uint8_t i = 0; i < ac.fan_speeds; i++)
{
if (strcmp(fan_speed_name, ac.fan_speed_names[i]) == 0)
{
setFanSpeed(i);
return;
}
}
}
void ClimateCard::setModeByName(const char* mode_name)
{
for (uint8_t i = 0; i < ac.modes; i++)
{
if (strcmp(mode_name, ac.mode_names[i]) == 0)
{
setMode(i);
return;
}
}
}
uint8_t ClimateCard::registerChangeCallback(std::function<void(uint8_t, uint8_t, uint8_t)> callback)
{
callbacks[callbacks_handler_count] = callback;