Merge pull request #4748 from esphome/bump-2023.4.2

2023.4.2
This commit is contained in:
Jesse Hills 2023-04-27 20:02:15 +12:00 committed by GitHub
commit b89c04b928
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
7 changed files with 52 additions and 34 deletions

View file

@ -429,15 +429,16 @@ void APIServer::on_shutdown() {
#ifdef USE_VOICE_ASSISTANT #ifdef USE_VOICE_ASSISTANT
bool APIServer::start_voice_assistant() { bool APIServer::start_voice_assistant() {
bool result = false;
for (auto &c : this->clients_) { for (auto &c : this->clients_) {
result |= c->request_voice_assistant(true); if (c->request_voice_assistant(true))
return true;
} }
return result; return false;
} }
void APIServer::stop_voice_assistant() { void APIServer::stop_voice_assistant() {
for (auto &c : this->clients_) { for (auto &c : this->clients_) {
c->request_voice_assistant(false); if (c->request_voice_assistant(false))
return;
} }
} }
#endif #endif

View file

@ -17,26 +17,29 @@ debug_ns = cg.esphome_ns.namespace("debug")
DebugComponent = debug_ns.class_("DebugComponent", cg.PollingComponent) DebugComponent = debug_ns.class_("DebugComponent", cg.PollingComponent)
CONFIG_SCHEMA = cv.Schema( CONFIG_SCHEMA = cv.All(
{ cv.Schema(
cv.GenerateID(): cv.declare_id(DebugComponent), {
cv.Optional(CONF_DEVICE): cv.invalid( cv.GenerateID(): cv.declare_id(DebugComponent),
"The 'device' option has been moved to the 'debug' text_sensor component" cv.Optional(CONF_DEVICE): cv.invalid(
), "The 'device' option has been moved to the 'debug' text_sensor component"
cv.Optional(CONF_FREE): cv.invalid( ),
"The 'free' option has been moved to the 'debug' sensor component" cv.Optional(CONF_FREE): cv.invalid(
), "The 'free' option has been moved to the 'debug' sensor component"
cv.Optional(CONF_BLOCK): cv.invalid( ),
"The 'block' option has been moved to the 'debug' sensor component" cv.Optional(CONF_BLOCK): cv.invalid(
), "The 'block' option has been moved to the 'debug' sensor component"
cv.Optional(CONF_FRAGMENTATION): cv.invalid( ),
"The 'fragmentation' option has been moved to the 'debug' sensor component" cv.Optional(CONF_FRAGMENTATION): cv.invalid(
), "The 'fragmentation' option has been moved to the 'debug' sensor component"
cv.Optional(CONF_LOOP_TIME): cv.invalid( ),
"The 'loop_time' option has been moved to the 'debug' sensor component" cv.Optional(CONF_LOOP_TIME): cv.invalid(
), "The 'loop_time' option has been moved to the 'debug' sensor component"
} ),
).extend(cv.polling_component_schema("60s")) }
).extend(cv.polling_component_schema("60s")),
cv.only_on(["esp32", "esp8266"]),
)
async def to_code(config): async def to_code(config):

View file

@ -77,10 +77,12 @@ void FingerprintGrowComponent::finish_enrollment(uint8_t result) {
this->enrollment_done_callback_.call(this->enrollment_slot_); this->enrollment_done_callback_.call(this->enrollment_slot_);
this->get_fingerprint_count_(); this->get_fingerprint_count_();
} else { } else {
this->enrollment_failed_callback_.call(this->enrollment_slot_); if (this->enrollment_slot_ != ENROLLMENT_SLOT_UNUSED) {
this->enrollment_failed_callback_.call(this->enrollment_slot_);
}
} }
this->enrollment_image_ = 0; this->enrollment_image_ = 0;
this->enrollment_slot_ = 0; this->enrollment_slot_ = ENROLLMENT_SLOT_UNUSED;
if (this->enrolling_binary_sensor_ != nullptr) { if (this->enrolling_binary_sensor_ != nullptr) {
this->enrolling_binary_sensor_->publish_state(false); this->enrolling_binary_sensor_->publish_state(false);
} }

View file

@ -13,6 +13,8 @@ namespace fingerprint_grow {
static const uint16_t START_CODE = 0xEF01; static const uint16_t START_CODE = 0xEF01;
static const uint16_t ENROLLMENT_SLOT_UNUSED = 0xFFFF;
enum GrowPacketType { enum GrowPacketType {
COMMAND = 0x01, COMMAND = 0x01,
DATA = 0x02, DATA = 0x02,
@ -158,7 +160,7 @@ class FingerprintGrowComponent : public PollingComponent, public uart::UARTDevic
uint32_t new_password_ = -1; uint32_t new_password_ = -1;
GPIOPin *sensing_pin_{nullptr}; GPIOPin *sensing_pin_{nullptr};
uint8_t enrollment_image_ = 0; uint8_t enrollment_image_ = 0;
uint16_t enrollment_slot_ = 0; uint16_t enrollment_slot_ = ENROLLMENT_SLOT_UNUSED;
uint8_t enrollment_buffers_ = 5; uint8_t enrollment_buffers_ = 5;
bool waiting_removal_ = false; bool waiting_removal_ = false;
uint32_t last_aura_led_control_ = 0; uint32_t last_aura_led_control_ = 0;

View file

@ -3,6 +3,7 @@
#include "i2c_bus_arduino.h" #include "i2c_bus_arduino.h"
#include "esphome/core/log.h" #include "esphome/core/log.h"
#include "esphome/core/helpers.h" #include "esphome/core/helpers.h"
#include "esphome/core/application.h"
#include <Arduino.h> #include <Arduino.h>
#include <cstring> #include <cstring>
@ -227,10 +228,14 @@ void ArduinoI2CBus::recover_() {
// When SCL is kept LOW at this point, we might be looking at a device // When SCL is kept LOW at this point, we might be looking at a device
// that applies clock stretching. Wait for the release of the SCL line, // that applies clock stretching. Wait for the release of the SCL line,
// but not forever. There is no specification for the maximum allowed // but not forever. There is no specification for the maximum allowed
// time. We'll stick to 500ms here. // time. We yield and reset the WDT, so as to avoid triggering reset.
auto wait = 20; // No point in trying to recover the bus by forcing a uC reset. Bus
// should recover in a few ms or less else not likely to recovery at
// all.
auto wait = 250;
while (wait-- && digitalRead(scl_pin_) == LOW) { // NOLINT while (wait-- && digitalRead(scl_pin_) == LOW) { // NOLINT
delay(25); App.feed_wdt();
delayMicroseconds(half_period_usec * 2);
} }
if (digitalRead(scl_pin_) == LOW) { // NOLINT if (digitalRead(scl_pin_) == LOW) { // NOLINT
ESP_LOGE(TAG, "Recovery failed: SCL is held LOW during clock pulse cycle"); ESP_LOGE(TAG, "Recovery failed: SCL is held LOW during clock pulse cycle");

View file

@ -4,6 +4,7 @@
#include "esphome/core/hal.h" #include "esphome/core/hal.h"
#include "esphome/core/log.h" #include "esphome/core/log.h"
#include "esphome/core/helpers.h" #include "esphome/core/helpers.h"
#include "esphome/core/application.h"
#include <cstring> #include <cstring>
#include <cinttypes> #include <cinttypes>
@ -273,10 +274,14 @@ void IDFI2CBus::recover_() {
// When SCL is kept LOW at this point, we might be looking at a device // When SCL is kept LOW at this point, we might be looking at a device
// that applies clock stretching. Wait for the release of the SCL line, // that applies clock stretching. Wait for the release of the SCL line,
// but not forever. There is no specification for the maximum allowed // but not forever. There is no specification for the maximum allowed
// time. We'll stick to 500ms here. // time. We yield and reset the WDT, so as to avoid triggering reset.
auto wait = 20; // No point in trying to recover the bus by forcing a uC reset. Bus
// should recover in a few ms or less else not likely to recovery at
// all.
auto wait = 250;
while (wait-- && gpio_get_level(scl_pin) == 0) { while (wait-- && gpio_get_level(scl_pin) == 0) {
delay(25); App.feed_wdt();
delayMicroseconds(half_period_usec * 2);
} }
if (gpio_get_level(scl_pin) == 0) { if (gpio_get_level(scl_pin) == 0) {
ESP_LOGE(TAG, "Recovery failed: SCL is held LOW during clock pulse cycle"); ESP_LOGE(TAG, "Recovery failed: SCL is held LOW during clock pulse cycle");

View file

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