mirror of
https://github.com/esphome/esphome.git
synced 2025-11-18 07:45:56 +00:00
Support fan speed levels (#1541)
* Add fan speed percentage support to the API * Add float fan speed percentage * Add percentage support to automation and configuration * Update Tuya fan * Fix pylint warning * Update API to use speed levels instead of percentage * Use speed levels * Fix type warnings * MQTT component now converts between speed levels and enums * Webserver now supports speed_level * Update prometheus * Remove low/medium/high settings from speed fan * Remove unused enum * Configurable speed levels for speed fan * Remove unused import * Rename speed_level->speed and speed_levels->speed_count * Rename supported_speed_levels -> supported_speed_count in API and FanTraits Field id stays the same in the protocol, so the change is not breaking for aioesphome.
This commit is contained in:
@@ -248,6 +248,13 @@ optional<float> parse_float(const std::string &str) {
|
||||
return {};
|
||||
return value;
|
||||
}
|
||||
optional<int> parse_int(const std::string &str) {
|
||||
char *end;
|
||||
int value = ::strtol(str.c_str(), &end, 10);
|
||||
if (end == nullptr || end != str.end().base())
|
||||
return {};
|
||||
return value;
|
||||
}
|
||||
uint32_t fnv1_hash(const std::string &str) {
|
||||
uint32_t hash = 2166136261UL;
|
||||
for (char c : str) {
|
||||
|
||||
Reference in New Issue
Block a user