Merge pull request #2821 from esphome/bump-2021.11.4

2021.11.4
This commit is contained in:
Jesse Hills 2021-11-29 13:23:47 +13:00 committed by GitHub
commit 7be9291b13
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
8 changed files with 23 additions and 7 deletions

View file

@ -104,21 +104,21 @@ void AnovaCodec::decode(const uint8_t *data, uint16_t length) {
break; break;
} }
case READ_TARGET_TEMPERATURE: { case READ_TARGET_TEMPERATURE: {
this->target_temp_ = parse_number<float>(buf, sizeof(buf)).value_or(0.0f); this->target_temp_ = parse_number<float>(str_until(buf, '\r')).value_or(0.0f);
if (this->fahrenheit_) if (this->fahrenheit_)
this->target_temp_ = ftoc(this->target_temp_); this->target_temp_ = ftoc(this->target_temp_);
this->has_target_temp_ = true; this->has_target_temp_ = true;
break; break;
} }
case SET_TARGET_TEMPERATURE: { case SET_TARGET_TEMPERATURE: {
this->target_temp_ = parse_number<float>(buf, sizeof(buf)).value_or(0.0f); this->target_temp_ = parse_number<float>(str_until(buf, '\r')).value_or(0.0f);
if (this->fahrenheit_) if (this->fahrenheit_)
this->target_temp_ = ftoc(this->target_temp_); this->target_temp_ = ftoc(this->target_temp_);
this->has_target_temp_ = true; this->has_target_temp_ = true;
break; break;
} }
case READ_CURRENT_TEMPERATURE: { case READ_CURRENT_TEMPERATURE: {
this->current_temp_ = parse_number<float>(buf, sizeof(buf)).value_or(0.0f); this->current_temp_ = parse_number<float>(str_until(buf, '\r')).value_or(0.0f);
if (this->fahrenheit_) if (this->fahrenheit_)
this->current_temp_ = ftoc(this->current_temp_); this->current_temp_ = ftoc(this->current_temp_);
this->has_current_temp_ = true; this->has_current_temp_ = true;

View file

@ -42,7 +42,7 @@ class ColorUtil {
? esp_scale(((colorcode >> third_bits) & ((1 << second_bits) - 1)), ((1 << second_bits) - 1)) ? esp_scale(((colorcode >> third_bits) & ((1 << second_bits) - 1)), ((1 << second_bits) - 1))
: esp_scale(((colorcode >> 8) & 0xFF), ((1 << second_bits) - 1)); : esp_scale(((colorcode >> 8) & 0xFF), ((1 << second_bits) - 1));
third_color = (right_bit_aligned ? esp_scale(((colorcode >> 0) & 0xFF), ((1 << third_bits) - 1)) third_color = (right_bit_aligned ? esp_scale(((colorcode >> 0) & ((1 << third_bits) - 1)), ((1 << third_bits) - 1))
: esp_scale(((colorcode >> 0) & 0xFF), (1 << third_bits) - 1)); : esp_scale(((colorcode >> 0) & 0xFF), (1 << third_bits) - 1));
Color color_return; Color color_return;

View file

@ -74,6 +74,11 @@ void EZOSensor::loop() {
if (buf[0] != 1) if (buf[0] != 1)
return; return;
// some sensors return multiple comma-separated values, terminate string after first one
for (int i = 1; i < sizeof(buf) - 1; i++)
if (buf[i] == ',')
buf[i] = '\0';
float val = parse_number<float>((char *) &buf[1], sizeof(buf) - 2).value_or(0); float val = parse_number<float>((char *) &buf[1], sizeof(buf) - 2).value_or(0);
this->publish_state(val); this->publish_state(val);
} }

View file

@ -200,6 +200,7 @@ bool SCD30Component::is_data_ready_() {
if (!this->write_command_(SCD30_CMD_GET_DATA_READY_STATUS)) { if (!this->write_command_(SCD30_CMD_GET_DATA_READY_STATUS)) {
return false; return false;
} }
delay(4);
uint16_t is_data_ready; uint16_t is_data_ready;
if (!this->read_data_(&is_data_ready, 1)) { if (!this->read_data_(&is_data_ready, 1)) {
return false; return false;

View file

@ -375,8 +375,7 @@ bool WiFiComponent::wifi_sta_connect_(const WiFiAP &ap) {
ESP_LOGV(TAG, "esp_wifi_sta_wpa2_ent_set_password failed! %d", err); ESP_LOGV(TAG, "esp_wifi_sta_wpa2_ent_set_password failed! %d", err);
} }
} }
esp_wpa2_config_t wpa2_config = WPA2_CONFIG_INIT_DEFAULT(); err = esp_wifi_sta_wpa2_ent_enable();
err = esp_wifi_sta_wpa2_ent_enable(&wpa2_config);
if (err != ESP_OK) { if (err != ESP_OK) {
ESP_LOGV(TAG, "esp_wifi_sta_wpa2_ent_enable failed! %d", err); ESP_LOGV(TAG, "esp_wifi_sta_wpa2_ent_enable failed! %d", err);
} }

View file

@ -1,6 +1,6 @@
"""Constants used by esphome.""" """Constants used by esphome."""
__version__ = "2021.11.3" __version__ = "2021.11.4"
ALLOWED_NAME_CHARS = "abcdefghijklmnopqrstuvwxyz0123456789-_" ALLOWED_NAME_CHARS = "abcdefghijklmnopqrstuvwxyz0123456789-_"

View file

@ -444,6 +444,11 @@ IRAM_ATTR InterruptLock::~InterruptLock() { portENABLE_INTERRUPTS(); }
std::string str_truncate(const std::string &str, size_t length) { std::string str_truncate(const std::string &str, size_t length) {
return str.length() > length ? str.substr(0, length) : str; return str.length() > length ? str.substr(0, length) : str;
} }
std::string str_until(const char *str, char ch) {
char *pos = strchr(str, ch);
return pos == nullptr ? std::string(str) : std::string(str, pos - str);
}
std::string str_until(const std::string &str, char ch) { return str.substr(0, str.find(ch)); }
std::string str_snake_case(const std::string &str) { std::string str_snake_case(const std::string &str) {
std::string result; std::string result;
result.resize(str.length()); result.resize(str.length());

View file

@ -351,6 +351,12 @@ template<typename T, enable_if_t<std::is_unsigned<T>::value, int> = 0> constexpr
/// Truncate a string to a specific length. /// Truncate a string to a specific length.
std::string str_truncate(const std::string &str, size_t length); std::string str_truncate(const std::string &str, size_t length);
/// Extract the part of the string until either the first occurence of the specified character, or the end (requires str
/// to be null-terminated).
std::string str_until(const char *str, char ch);
/// Extract the part of the string until either the first occurence of the specified character, or the end.
std::string str_until(const std::string &str, char ch);
/// Convert the string to snake case (lowercase with underscores). /// Convert the string to snake case (lowercase with underscores).
std::string str_snake_case(const std::string &str); std::string str_snake_case(const std::string &str);