esphome 2024.12.4__py3-none-any.whl → 2025.2.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- esphome/__main__.py +16 -3
- esphome/components/adc/__init__.py +17 -11
- esphome/components/adc/adc_sensor.h +17 -0
- esphome/components/adc/adc_sensor_common.cpp +55 -0
- esphome/components/adc/adc_sensor_esp32.cpp +8 -5
- esphome/components/adc/adc_sensor_esp8266.cpp +10 -6
- esphome/components/adc/adc_sensor_libretiny.cpp +11 -6
- esphome/components/adc/adc_sensor_rp2040.cpp +13 -10
- esphome/components/adc/sensor.py +9 -3
- esphome/components/ads1115/ads1115.cpp +56 -7
- esphome/components/ads1115/ads1115.h +13 -1
- esphome/components/ads1115/sensor/__init__.py +16 -0
- esphome/components/ads1115/sensor/ads1115_sensor.cpp +2 -1
- esphome/components/ads1115/sensor/ads1115_sensor.h +2 -0
- esphome/components/animation/__init__.py +23 -261
- esphome/components/animation/animation.cpp +2 -2
- esphome/components/animation/animation.h +2 -1
- esphome/components/api/api_pb2.cpp +14 -0
- esphome/components/api/api_pb2.h +1 -0
- esphome/components/api/client.py +8 -3
- esphome/components/audio/__init__.py +112 -0
- esphome/components/audio/audio.cpp +67 -0
- esphome/components/audio/audio.h +125 -7
- esphome/components/audio/audio_decoder.cpp +361 -0
- esphome/components/audio/audio_decoder.h +135 -0
- esphome/components/audio/audio_reader.cpp +308 -0
- esphome/components/audio/audio_reader.h +85 -0
- esphome/components/audio/audio_resampler.cpp +159 -0
- esphome/components/audio/audio_resampler.h +101 -0
- esphome/components/audio/audio_transfer_buffer.cpp +165 -0
- esphome/components/audio/audio_transfer_buffer.h +139 -0
- esphome/components/audio_adc/__init__.py +41 -0
- esphome/components/audio_adc/audio_adc.h +17 -0
- esphome/components/audio_adc/automation.h +23 -0
- esphome/components/bk72xx/__init__.py +1 -0
- esphome/components/ble_client/ble_client.cpp +1 -2
- esphome/components/ble_client/sensor/__init__.py +1 -1
- esphome/components/ble_client/text_sensor/__init__.py +1 -1
- esphome/components/bluetooth_proxy/bluetooth_connection.cpp +5 -0
- esphome/components/bluetooth_proxy/bluetooth_connection.h +1 -0
- esphome/components/bluetooth_proxy/bluetooth_proxy.cpp +5 -0
- esphome/components/ch422g/ch422g.h +2 -0
- esphome/components/climate/__init__.py +1 -1
- esphome/components/climate_ir/climate_ir.cpp +2 -1
- esphome/components/coolix/coolix.cpp +2 -1
- esphome/components/cse7766/cse7766.cpp +8 -16
- esphome/components/custom/__init__.py +0 -3
- esphome/components/custom/binary_sensor/__init__.py +2 -28
- esphome/components/custom/climate/__init__.py +2 -27
- esphome/components/custom/cover/__init__.py +2 -27
- esphome/components/custom/light/__init__.py +2 -27
- esphome/components/custom/output/__init__.py +2 -58
- esphome/components/custom/sensor/__init__.py +2 -24
- esphome/components/custom/switch/__init__.py +2 -24
- esphome/components/custom/text_sensor/__init__.py +2 -29
- esphome/components/custom_component/__init__.py +3 -27
- esphome/components/daly_bms/daly_bms.cpp +6 -0
- esphome/components/daly_bms/daly_bms.h +2 -0
- esphome/components/daly_bms/sensor.py +6 -0
- esphome/components/debug/debug_component.cpp +4 -0
- esphome/components/debug/debug_component.h +14 -0
- esphome/components/debug/debug_esp32.cpp +154 -74
- esphome/components/dfplayer/dfplayer.cpp +15 -2
- esphome/components/dfrobot_sen0395/dfrobot_sen0395.cpp +2 -1
- esphome/components/dht/dht.cpp +4 -2
- esphome/components/dht/sensor.py +1 -1
- esphome/components/display/__init__.py +18 -5
- esphome/components/display/display.cpp +16 -3
- esphome/components/display/rect.cpp +2 -1
- esphome/components/es7210/__init__.py +0 -0
- esphome/components/es7210/audio_adc.py +51 -0
- esphome/components/es7210/es7210.cpp +228 -0
- esphome/components/es7210/es7210.h +62 -0
- esphome/components/es7210/es7210_const.h +129 -0
- esphome/components/es7243e/__init__.py +0 -0
- esphome/components/es7243e/audio_adc.py +34 -0
- esphome/components/es7243e/es7243e.cpp +125 -0
- esphome/components/es7243e/es7243e.h +37 -0
- esphome/components/es7243e/es7243e_const.h +54 -0
- esphome/components/es8156/__init__.py +0 -0
- esphome/components/es8156/audio_dac.py +27 -0
- esphome/components/es8156/es8156.cpp +87 -0
- esphome/components/es8156/es8156.h +51 -0
- esphome/components/es8156/es8156_const.h +68 -0
- esphome/components/es8311/audio_dac.py +1 -2
- esphome/components/esp32/__init__.py +1 -0
- esphome/components/esp32/core.cpp +5 -1
- esphome/components/esp32/gpio.h +2 -0
- esphome/components/esp32_ble/__init__.py +39 -0
- esphome/components/esp32_ble/queue.h +4 -4
- esphome/components/esp32_ble_client/ble_client_base.cpp +46 -0
- esphome/components/esp32_ble_client/ble_client_base.h +2 -0
- esphome/components/esp32_ble_server/__init__.py +582 -12
- esphome/components/esp32_ble_server/ble_characteristic.cpp +48 -60
- esphome/components/esp32_ble_server/ble_characteristic.h +24 -17
- esphome/components/esp32_ble_server/ble_descriptor.cpp +21 -9
- esphome/components/esp32_ble_server/ble_descriptor.h +17 -6
- esphome/components/esp32_ble_server/ble_server.cpp +62 -67
- esphome/components/esp32_ble_server/ble_server.h +28 -32
- esphome/components/esp32_ble_server/ble_server_automations.cpp +77 -0
- esphome/components/esp32_ble_server/ble_server_automations.h +115 -0
- esphome/components/esp32_ble_server/ble_service.cpp +17 -15
- esphome/components/esp32_ble_server/ble_service.h +10 -14
- esphome/components/esp32_ble_tracker/__init__.py +6 -39
- esphome/components/esp32_ble_tracker/esp32_ble_tracker.cpp +33 -10
- esphome/components/esp32_ble_tracker/esp32_ble_tracker.h +8 -4
- esphome/components/esp32_dac/esp32_dac.cpp +16 -7
- esphome/components/esp32_dac/esp32_dac.h +8 -0
- esphome/components/esp32_dac/output.py +16 -4
- esphome/components/esp32_improv/__init__.py +2 -8
- esphome/components/esp32_improv/esp32_improv_component.cpp +21 -20
- esphome/components/esp32_improv/esp32_improv_component.h +3 -4
- esphome/components/esp32_rmt/__init__.py +28 -3
- esphome/components/esp32_rmt_led_strip/led_strip.cpp +73 -6
- esphome/components/esp32_rmt_led_strip/led_strip.h +21 -3
- esphome/components/esp32_rmt_led_strip/light.py +72 -7
- esphome/components/esp32_touch/esp32_touch.cpp +5 -0
- esphome/components/esp8266/__init__.py +1 -0
- esphome/components/esp8266/gpio.h +1 -0
- esphome/components/ethernet/__init__.py +10 -10
- esphome/components/event/event.cpp +4 -2
- esphome/components/event/event.h +2 -0
- esphome/components/event_emitter/__init__.py +5 -0
- esphome/components/event_emitter/event_emitter.cpp +14 -0
- esphome/components/event_emitter/event_emitter.h +63 -0
- esphome/components/font/__init__.py +1 -1
- esphome/components/gcja5/gcja5.cpp +2 -1
- esphome/components/graph/graph.cpp +4 -9
- esphome/components/haier/haier_base.cpp +2 -1
- esphome/components/haier/hon_climate.cpp +2 -1
- esphome/components/heatpumpir/heatpumpir.cpp +2 -1
- esphome/components/host/__init__.py +1 -0
- esphome/components/host/gpio.h +1 -0
- esphome/components/http_request/http_request.h +2 -2
- esphome/components/http_request/http_request_arduino.cpp +1 -1
- esphome/components/http_request/http_request_idf.cpp +1 -1
- esphome/components/i2c/i2c_bus_esp_idf.cpp +4 -0
- esphome/components/i2s_audio/microphone/i2s_audio_microphone.cpp +7 -5
- esphome/components/i2s_audio/speaker/__init__.py +53 -6
- esphome/components/i2s_audio/speaker/i2s_audio_speaker.cpp +92 -46
- esphome/components/i2s_audio/speaker/i2s_audio_speaker.h +8 -0
- esphome/components/ili9xxx/display.py +29 -11
- esphome/components/ili9xxx/ili9xxx_display.cpp +2 -5
- esphome/components/ili9xxx/ili9xxx_display.h +2 -1
- esphome/components/image/__init__.py +443 -255
- esphome/components/image/image.cpp +115 -61
- esphome/components/image/image.h +15 -24
- esphome/components/json/json_util.cpp +8 -34
- esphome/components/libretiny/__init__.py +1 -0
- esphome/components/libretiny/gpio_arduino.h +1 -0
- esphome/components/light/light_color_values.h +1 -1
- esphome/components/logger/__init__.py +45 -9
- esphome/components/logger/logger.cpp +16 -14
- esphome/components/logger/logger.h +11 -7
- esphome/components/logger/select/__init__.py +29 -0
- esphome/components/logger/select/logger_level_select.cpp +27 -0
- esphome/components/logger/select/logger_level_select.h +15 -0
- esphome/components/lvgl/__init__.py +96 -73
- esphome/components/lvgl/automation.py +39 -7
- esphome/components/lvgl/defines.py +8 -2
- esphome/components/lvgl/lvgl_esphome.cpp +8 -15
- esphome/components/lvgl/lvgl_esphome.h +20 -5
- esphome/components/lvgl/schemas.py +25 -14
- esphome/components/lvgl/trigger.py +27 -3
- esphome/components/lvgl/widgets/dropdown.py +1 -1
- esphome/components/lvgl/widgets/keyboard.py +8 -1
- esphome/components/lvgl/widgets/meter.py +2 -1
- esphome/components/lvgl/widgets/msgbox.py +1 -1
- esphome/components/lvgl/widgets/obj.py +1 -12
- esphome/components/lvgl/widgets/page.py +37 -2
- esphome/components/lvgl/widgets/tabview.py +1 -1
- esphome/components/max6956/max6956.h +2 -0
- esphome/components/mcp23016/mcp23016.h +2 -0
- esphome/components/mcp23xxx_base/mcp23xxx_base.h +2 -0
- esphome/components/mdns/__init__.py +1 -1
- esphome/components/media_player/__init__.py +37 -8
- esphome/components/media_player/automation.h +11 -2
- esphome/components/media_player/media_player.cpp +8 -0
- esphome/components/media_player/media_player.h +8 -4
- esphome/components/micronova/switch/micronova_switch.cpp +4 -2
- esphome/components/midea/ac_automations.h +3 -1
- esphome/components/midea/air_conditioner.cpp +7 -5
- esphome/components/midea/air_conditioner.h +1 -1
- esphome/components/midea/climate.py +4 -2
- esphome/components/midea/ir_transmitter.h +36 -5
- esphome/components/mixer/__init__.py +0 -0
- esphome/components/mixer/speaker/__init__.py +172 -0
- esphome/components/mixer/speaker/automation.h +19 -0
- esphome/components/mixer/speaker/mixer_speaker.cpp +624 -0
- esphome/components/mixer/speaker/mixer_speaker.h +207 -0
- esphome/components/modbus_controller/text_sensor/modbus_textsensor.cpp +7 -13
- esphome/components/mpr121/mpr121.h +2 -0
- esphome/components/mqtt/__init__.py +1 -1
- esphome/components/mqtt/mqtt_client.cpp +7 -1
- esphome/components/mqtt/mqtt_client.h +1 -1
- esphome/components/mqtt/mqtt_climate.cpp +2 -2
- esphome/components/network/ip_address.h +2 -0
- esphome/components/nextion/automation.h +17 -0
- esphome/components/nextion/display.py +42 -17
- esphome/components/nextion/nextion.cpp +4 -10
- esphome/components/nextion/nextion.h +89 -82
- esphome/components/nextion/nextion_commands.cpp +10 -10
- esphome/components/ntc/sensor.py +2 -4
- esphome/components/online_image/__init__.py +98 -46
- esphome/components/online_image/bmp_image.cpp +101 -0
- esphome/components/online_image/bmp_image.h +40 -0
- esphome/components/online_image/image_decoder.cpp +31 -2
- esphome/components/online_image/image_decoder.h +24 -15
- esphome/components/online_image/jpeg_image.cpp +92 -0
- esphome/components/online_image/jpeg_image.h +34 -0
- esphome/components/online_image/online_image.cpp +118 -58
- esphome/components/online_image/online_image.h +39 -9
- esphome/components/online_image/png_image.cpp +7 -3
- esphome/components/online_image/png_image.h +2 -1
- esphome/components/opentherm/__init__.py +73 -7
- esphome/components/opentherm/automation.h +25 -0
- esphome/components/opentherm/const.py +1 -0
- esphome/components/opentherm/generate.py +39 -6
- esphome/components/opentherm/hub.cpp +117 -79
- esphome/components/opentherm/hub.h +31 -15
- esphome/components/opentherm/opentherm.cpp +47 -23
- esphome/components/opentherm/opentherm.h +27 -6
- esphome/components/opentherm/opentherm_macros.h +11 -0
- esphome/components/opentherm/schema.py +78 -1
- esphome/components/opentherm/validate.py +7 -2
- esphome/components/pca6416a/pca6416a.h +2 -0
- esphome/components/pca9554/pca9554.h +2 -0
- esphome/components/pcf8574/pcf8574.h +2 -0
- esphome/components/preferences/__init__.py +2 -4
- esphome/components/preferences/syncer.h +10 -3
- esphome/components/prometheus/prometheus_handler.cpp +313 -0
- esphome/components/prometheus/prometheus_handler.h +48 -7
- esphome/components/psram/psram.cpp +8 -1
- esphome/components/pulse_counter/pulse_counter_sensor.cpp +14 -9
- esphome/components/pulse_counter/pulse_counter_sensor.h +4 -4
- esphome/components/pulse_meter/pulse_meter_sensor.cpp +2 -0
- esphome/components/qspi_dbi/__init__.py +3 -0
- esphome/components/qspi_dbi/display.py +74 -47
- esphome/components/qspi_dbi/models.py +245 -2
- esphome/components/qspi_dbi/qspi_dbi.cpp +9 -16
- esphome/components/qspi_dbi/qspi_dbi.h +2 -2
- esphome/components/remote_base/__init__.py +77 -25
- esphome/components/remote_base/remote_base.cpp +1 -1
- esphome/components/remote_base/remote_base.h +20 -2
- esphome/components/remote_base/toto_protocol.cpp +100 -0
- esphome/components/remote_base/toto_protocol.h +45 -0
- esphome/components/remote_receiver/__init__.py +55 -10
- esphome/components/remote_receiver/remote_receiver.h +36 -3
- esphome/components/remote_receiver/remote_receiver_esp32.cpp +145 -6
- esphome/components/remote_transmitter/__init__.py +62 -4
- esphome/components/remote_transmitter/remote_transmitter.h +21 -2
- esphome/components/remote_transmitter/remote_transmitter_esp32.cpp +140 -4
- esphome/components/remote_transmitter/remote_transmitter_esp8266.cpp +3 -3
- esphome/components/remote_transmitter/remote_transmitter_libretiny.cpp +3 -3
- esphome/components/resampler/__init__.py +0 -0
- esphome/components/resampler/speaker/__init__.py +103 -0
- esphome/components/resampler/speaker/resampler_speaker.cpp +318 -0
- esphome/components/resampler/speaker/resampler_speaker.h +107 -0
- esphome/components/resistance/resistance_sensor.h +2 -3
- esphome/components/resistance/sensor.py +2 -9
- esphome/components/rotary_encoder/rotary_encoder.cpp +8 -4
- esphome/components/rp2040/__init__.py +1 -0
- esphome/components/rp2040/gpio.h +1 -0
- esphome/components/rtl87xx/__init__.py +2 -0
- esphome/components/scd30/sensor.py +1 -1
- esphome/components/sdl/binary_sensor.py +270 -0
- esphome/components/sdl/sdl_esphome.cpp +16 -0
- esphome/components/sdl/sdl_esphome.h +9 -0
- esphome/components/seeed_mr60bha2/binary_sensor.py +25 -0
- esphome/components/seeed_mr60bha2/seeed_mr60bha2.cpp +26 -2
- esphome/components/seeed_mr60bha2/seeed_mr60bha2.h +9 -20
- esphome/components/seeed_mr60bha2/sensor.py +9 -1
- esphome/components/sn74hc165/sn74hc165.h +3 -0
- esphome/components/sn74hc595/sn74hc595.h +3 -0
- esphome/components/speaker/__init__.py +5 -4
- esphome/components/speaker/media_player/__init__.py +458 -0
- esphome/components/speaker/media_player/audio_pipeline.cpp +568 -0
- esphome/components/speaker/media_player/audio_pipeline.h +159 -0
- esphome/components/speaker/media_player/automation.h +26 -0
- esphome/components/speaker/media_player/speaker_media_player.cpp +577 -0
- esphome/components/speaker/media_player/speaker_media_player.h +160 -0
- esphome/components/speaker/speaker.h +20 -0
- esphome/components/spi/__init__.py +1 -5
- esphome/components/spi/spi.cpp +7 -1
- esphome/components/spi/spi.h +21 -2
- esphome/components/spi_led_strip/light.py +3 -5
- esphome/components/spi_led_strip/spi_led_strip.cpp +67 -0
- esphome/components/spi_led_strip/spi_led_strip.h +8 -60
- esphome/components/sprinkler/sprinkler.cpp +3 -1
- esphome/components/sx1509/sx1509_gpio_pin.h +2 -0
- esphome/components/tca9555/tca9555.h +2 -0
- esphome/components/toshiba/toshiba.cpp +2 -1
- esphome/components/tuya/light/tuya_light.cpp +4 -2
- esphome/components/uart/uart_component_esp32_arduino.cpp +2 -2
- esphome/components/uart/uart_component_esp_idf.cpp +2 -2
- esphome/components/udp/__init__.py +8 -2
- esphome/components/udp/udp_component.cpp +25 -56
- esphome/components/udp/udp_component.h +3 -0
- esphome/components/uponor_smatrix/sensor/__init__.py +14 -4
- esphome/components/uponor_smatrix/sensor/uponor_smatrix_sensor.cpp +5 -0
- esphome/components/uponor_smatrix/sensor/uponor_smatrix_sensor.h +1 -0
- esphome/components/uptime/text_sensor/__init__.py +19 -0
- esphome/components/uptime/text_sensor/uptime_text_sensor.cpp +63 -0
- esphome/components/uptime/text_sensor/uptime_text_sensor.h +25 -0
- esphome/components/voice_assistant/voice_assistant.cpp +24 -14
- esphome/components/voice_assistant/voice_assistant.h +8 -0
- esphome/components/waveshare_epaper/display.py +22 -1
- esphome/components/waveshare_epaper/waveshare_213v3.cpp +9 -3
- esphome/components/waveshare_epaper/waveshare_epaper.cpp +1155 -44
- esphome/components/waveshare_epaper/waveshare_epaper.h +208 -7
- esphome/components/web_server/web_server.cpp +28 -6
- esphome/components/weikai/weikai.h +2 -0
- esphome/components/wifi/__init__.py +6 -6
- esphome/components/wifi/wifi_component.cpp +1 -1
- esphome/components/wifi/wifi_component_esp32_arduino.cpp +30 -1
- esphome/components/wireguard/__init__.py +2 -2
- esphome/components/xl9535/xl9535.h +2 -0
- esphome/components/xxtea/__init__.py +3 -0
- esphome/components/xxtea/xxtea.cpp +46 -0
- esphome/components/xxtea/xxtea.h +26 -0
- esphome/components/yashima/yashima.cpp +2 -1
- esphome/config.py +9 -5
- esphome/config_validation.py +55 -17
- esphome/const.py +7 -10
- esphome/core/__init__.py +6 -13
- esphome/core/base_automation.h +1 -0
- esphome/core/config.py +59 -72
- esphome/core/defines.h +9 -1
- esphome/core/gpio.h +7 -0
- esphome/core/helpers.cpp +19 -15
- esphome/core/helpers.h +57 -8
- esphome/core/log.h +9 -7
- esphome/cpp_generator.py +2 -2
- esphome/dashboard/web_server.py +1 -1
- esphome/espota2.py +3 -2
- esphome/loader.py +12 -4
- esphome/log.py +5 -7
- esphome/yaml_util.py +2 -2
- {esphome-2024.12.4.dist-info → esphome-2025.2.0.dist-info}/METADATA +14 -9
- {esphome-2024.12.4.dist-info → esphome-2025.2.0.dist-info}/RECORD +349 -300
- esphome/components/custom/binary_sensor/custom_binary_sensor.cpp +0 -16
- esphome/components/custom/binary_sensor/custom_binary_sensor.h +0 -26
- esphome/components/custom/climate/custom_climate.h +0 -22
- esphome/components/custom/cover/custom_cover.h +0 -21
- esphome/components/custom/light/custom_light_output.h +0 -24
- esphome/components/custom/output/custom_output.h +0 -37
- esphome/components/custom/sensor/custom_sensor.cpp +0 -16
- esphome/components/custom/sensor/custom_sensor.h +0 -24
- esphome/components/custom/switch/custom_switch.cpp +0 -16
- esphome/components/custom/switch/custom_switch.h +0 -24
- esphome/components/custom/text_sensor/custom_text_sensor.cpp +0 -16
- esphome/components/custom/text_sensor/custom_text_sensor.h +0 -26
- esphome/components/custom_component/custom_component.h +0 -28
- esphome/components/esp32_ble_server/ble_2901.cpp +0 -18
- esphome/components/esp32_ble_server/ble_2901.h +0 -19
- esphome/components/resistance_sampler/__init__.py +0 -6
- esphome/components/resistance_sampler/resistance_sampler.h +0 -10
- esphome/components/uptime/{sensor.py → sensor/__init__.py} +3 -3
- /esphome/components/uptime/{uptime_seconds_sensor.cpp → sensor/uptime_seconds_sensor.cpp} +0 -0
- /esphome/components/uptime/{uptime_seconds_sensor.h → sensor/uptime_seconds_sensor.h} +0 -0
- /esphome/components/uptime/{uptime_timestamp_sensor.cpp → sensor/uptime_timestamp_sensor.cpp} +0 -0
- /esphome/components/uptime/{uptime_timestamp_sensor.h → sensor/uptime_timestamp_sensor.h} +0 -0
- {esphome-2024.12.4.dist-info → esphome-2025.2.0.dist-info}/LICENSE +0 -0
- {esphome-2024.12.4.dist-info → esphome-2025.2.0.dist-info}/WHEEL +0 -0
- {esphome-2024.12.4.dist-info → esphome-2025.2.0.dist-info}/entry_points.txt +0 -0
- {esphome-2024.12.4.dist-info → esphome-2025.2.0.dist-info}/top_level.txt +0 -0
@@ -1,30 +1,5 @@
|
|
1
|
-
import esphome.codegen as cg
|
2
1
|
import esphome.config_validation as cv
|
3
|
-
from esphome.components import light
|
4
|
-
from esphome.const import CONF_ID, CONF_LAMBDA
|
5
|
-
from .. import custom_ns
|
6
2
|
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
CONFIG_SCHEMA = cv.Schema(
|
11
|
-
{
|
12
|
-
cv.GenerateID(): cv.declare_id(CustomLightOutputConstructor),
|
13
|
-
cv.Required(CONF_LAMBDA): cv.returning_lambda,
|
14
|
-
cv.Required(CONF_LIGHTS): cv.ensure_list(light.ADDRESSABLE_LIGHT_SCHEMA),
|
15
|
-
}
|
3
|
+
CONFIG_SCHEMA = cv.invalid(
|
4
|
+
'The "custom" component has been removed. Consider conversion to an external component.\nhttps://esphome.io/guides/contributing#a-note-about-custom-components'
|
16
5
|
)
|
17
|
-
|
18
|
-
|
19
|
-
async def to_code(config):
|
20
|
-
template_ = await cg.process_lambda(
|
21
|
-
config[CONF_LAMBDA],
|
22
|
-
[],
|
23
|
-
return_type=cg.std_vector.template(light.LightOutput.operator("ptr")),
|
24
|
-
)
|
25
|
-
|
26
|
-
rhs = CustomLightOutputConstructor(template_)
|
27
|
-
custom = cg.variable(config[CONF_ID], rhs)
|
28
|
-
for i, conf in enumerate(config[CONF_LIGHTS]):
|
29
|
-
rhs = custom.Pget_light(i)
|
30
|
-
await light.register_light(rhs, conf)
|
@@ -1,61 +1,5 @@
|
|
1
|
-
import esphome.codegen as cg
|
2
1
|
import esphome.config_validation as cv
|
3
|
-
from esphome.components import output
|
4
|
-
from esphome.const import CONF_ID, CONF_LAMBDA, CONF_OUTPUTS, CONF_TYPE, CONF_BINARY
|
5
|
-
from .. import custom_ns
|
6
2
|
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
CONF_FLOAT = "float"
|
11
|
-
|
12
|
-
CONFIG_SCHEMA = cv.typed_schema(
|
13
|
-
{
|
14
|
-
CONF_BINARY: cv.Schema(
|
15
|
-
{
|
16
|
-
cv.GenerateID(): cv.declare_id(CustomBinaryOutputConstructor),
|
17
|
-
cv.Required(CONF_LAMBDA): cv.returning_lambda,
|
18
|
-
cv.Required(CONF_OUTPUTS): cv.ensure_list(
|
19
|
-
output.BINARY_OUTPUT_SCHEMA.extend(
|
20
|
-
{
|
21
|
-
cv.GenerateID(): cv.declare_id(output.BinaryOutput),
|
22
|
-
}
|
23
|
-
)
|
24
|
-
),
|
25
|
-
}
|
26
|
-
),
|
27
|
-
CONF_FLOAT: cv.Schema(
|
28
|
-
{
|
29
|
-
cv.GenerateID(): cv.declare_id(CustomFloatOutputConstructor),
|
30
|
-
cv.Required(CONF_LAMBDA): cv.returning_lambda,
|
31
|
-
cv.Required(CONF_OUTPUTS): cv.ensure_list(
|
32
|
-
output.FLOAT_OUTPUT_SCHEMA.extend(
|
33
|
-
{
|
34
|
-
cv.GenerateID(): cv.declare_id(output.FloatOutput),
|
35
|
-
}
|
36
|
-
)
|
37
|
-
),
|
38
|
-
}
|
39
|
-
),
|
40
|
-
},
|
41
|
-
lower=True,
|
3
|
+
CONFIG_SCHEMA = cv.invalid(
|
4
|
+
'The "custom" component has been removed. Consider conversion to an external component.\nhttps://esphome.io/guides/contributing#a-note-about-custom-components'
|
42
5
|
)
|
43
|
-
|
44
|
-
|
45
|
-
async def to_code(config):
|
46
|
-
type = config[CONF_TYPE]
|
47
|
-
if type == "binary":
|
48
|
-
ret_type = output.BinaryOutputPtr
|
49
|
-
klass = CustomBinaryOutputConstructor
|
50
|
-
else:
|
51
|
-
ret_type = output.FloatOutputPtr
|
52
|
-
klass = CustomFloatOutputConstructor
|
53
|
-
template_ = await cg.process_lambda(
|
54
|
-
config[CONF_LAMBDA], [], return_type=cg.std_vector.template(ret_type)
|
55
|
-
)
|
56
|
-
|
57
|
-
rhs = klass(template_)
|
58
|
-
custom = cg.variable(config[CONF_ID], rhs)
|
59
|
-
for i, conf in enumerate(config[CONF_OUTPUTS]):
|
60
|
-
out = cg.Pvariable(conf[CONF_ID], custom.get_output(i))
|
61
|
-
await output.register_output(out, conf)
|
@@ -1,27 +1,5 @@
|
|
1
|
-
import esphome.codegen as cg
|
2
1
|
import esphome.config_validation as cv
|
3
|
-
from esphome.components import sensor
|
4
|
-
from esphome.const import CONF_ID, CONF_LAMBDA, CONF_SENSORS
|
5
|
-
from .. import custom_ns
|
6
2
|
|
7
|
-
|
8
|
-
|
9
|
-
CONFIG_SCHEMA = cv.Schema(
|
10
|
-
{
|
11
|
-
cv.GenerateID(): cv.declare_id(CustomSensorConstructor),
|
12
|
-
cv.Required(CONF_LAMBDA): cv.returning_lambda,
|
13
|
-
cv.Required(CONF_SENSORS): cv.ensure_list(sensor.sensor_schema()),
|
14
|
-
}
|
3
|
+
CONFIG_SCHEMA = cv.invalid(
|
4
|
+
'The "custom" component has been removed. Consider conversion to an external component.\nhttps://esphome.io/guides/contributing#a-note-about-custom-components'
|
15
5
|
)
|
16
|
-
|
17
|
-
|
18
|
-
async def to_code(config):
|
19
|
-
template_ = await cg.process_lambda(
|
20
|
-
config[CONF_LAMBDA], [], return_type=cg.std_vector.template(sensor.SensorPtr)
|
21
|
-
)
|
22
|
-
|
23
|
-
rhs = CustomSensorConstructor(template_)
|
24
|
-
var = cg.variable(config[CONF_ID], rhs)
|
25
|
-
for i, conf in enumerate(config[CONF_SENSORS]):
|
26
|
-
sens = cg.Pvariable(conf[CONF_ID], var.get_sensor(i))
|
27
|
-
await sensor.register_sensor(sens, conf)
|
@@ -1,27 +1,5 @@
|
|
1
|
-
import esphome.codegen as cg
|
2
1
|
import esphome.config_validation as cv
|
3
|
-
from esphome.components import switch
|
4
|
-
from esphome.const import CONF_ID, CONF_LAMBDA, CONF_SWITCHES
|
5
|
-
from .. import custom_ns
|
6
2
|
|
7
|
-
|
8
|
-
|
9
|
-
CONFIG_SCHEMA = cv.Schema(
|
10
|
-
{
|
11
|
-
cv.GenerateID(): cv.declare_id(CustomSwitchConstructor),
|
12
|
-
cv.Required(CONF_LAMBDA): cv.returning_lambda,
|
13
|
-
cv.Required(CONF_SWITCHES): cv.ensure_list(switch.switch_schema(switch.Switch)),
|
14
|
-
}
|
3
|
+
CONFIG_SCHEMA = cv.invalid(
|
4
|
+
'The "custom" component has been removed. Consider conversion to an external component.\nhttps://esphome.io/guides/contributing#a-note-about-custom-components'
|
15
5
|
)
|
16
|
-
|
17
|
-
|
18
|
-
async def to_code(config):
|
19
|
-
template_ = await cg.process_lambda(
|
20
|
-
config[CONF_LAMBDA], [], return_type=cg.std_vector.template(switch.SwitchPtr)
|
21
|
-
)
|
22
|
-
|
23
|
-
rhs = CustomSwitchConstructor(template_)
|
24
|
-
var = cg.variable(config[CONF_ID], rhs)
|
25
|
-
for i, conf in enumerate(config[CONF_SWITCHES]):
|
26
|
-
switch_ = cg.Pvariable(conf[CONF_ID], var.get_switch(i))
|
27
|
-
await switch.register_switch(switch_, conf)
|
@@ -1,32 +1,5 @@
|
|
1
|
-
import esphome.codegen as cg
|
2
1
|
import esphome.config_validation as cv
|
3
|
-
from esphome.components import text_sensor
|
4
|
-
from esphome.const import CONF_ID, CONF_LAMBDA, CONF_TEXT_SENSORS
|
5
|
-
from .. import custom_ns
|
6
2
|
|
7
|
-
|
8
|
-
|
9
|
-
CONFIG_SCHEMA = cv.Schema(
|
10
|
-
{
|
11
|
-
cv.GenerateID(): cv.declare_id(CustomTextSensorConstructor),
|
12
|
-
cv.Required(CONF_LAMBDA): cv.returning_lambda,
|
13
|
-
cv.Required(CONF_TEXT_SENSORS): cv.ensure_list(
|
14
|
-
text_sensor.text_sensor_schema()
|
15
|
-
),
|
16
|
-
}
|
3
|
+
CONFIG_SCHEMA = cv.invalid(
|
4
|
+
'The "custom" component has been removed. Consider conversion to an external component.\nhttps://esphome.io/guides/contributing#a-note-about-custom-components'
|
17
5
|
)
|
18
|
-
|
19
|
-
|
20
|
-
async def to_code(config):
|
21
|
-
template_ = await cg.process_lambda(
|
22
|
-
config[CONF_LAMBDA],
|
23
|
-
[],
|
24
|
-
return_type=cg.std_vector.template(text_sensor.TextSensorPtr),
|
25
|
-
)
|
26
|
-
|
27
|
-
rhs = CustomTextSensorConstructor(template_)
|
28
|
-
var = cg.variable(config[CONF_ID], rhs)
|
29
|
-
|
30
|
-
for i, conf in enumerate(config[CONF_TEXT_SENSORS]):
|
31
|
-
text = cg.Pvariable(conf[CONF_ID], var.get_text_sensor(i))
|
32
|
-
await text_sensor.register_text_sensor(text, conf)
|
@@ -1,31 +1,7 @@
|
|
1
|
-
import esphome.codegen as cg
|
2
1
|
import esphome.config_validation as cv
|
3
|
-
from esphome.const import CONF_COMPONENTS, CONF_ID, CONF_LAMBDA
|
4
|
-
|
5
|
-
custom_component_ns = cg.esphome_ns.namespace("custom_component")
|
6
|
-
CustomComponentConstructor = custom_component_ns.class_("CustomComponentConstructor")
|
7
2
|
|
8
3
|
MULTI_CONF = True
|
9
|
-
CONFIG_SCHEMA = cv.Schema(
|
10
|
-
{
|
11
|
-
cv.GenerateID(): cv.declare_id(CustomComponentConstructor),
|
12
|
-
cv.Required(CONF_LAMBDA): cv.returning_lambda,
|
13
|
-
cv.Optional(CONF_COMPONENTS): cv.ensure_list(
|
14
|
-
cv.Schema({cv.GenerateID(): cv.declare_id(cg.Component)}).extend(
|
15
|
-
cv.COMPONENT_SCHEMA
|
16
|
-
)
|
17
|
-
),
|
18
|
-
}
|
19
|
-
)
|
20
|
-
|
21
4
|
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
)
|
26
|
-
|
27
|
-
rhs = CustomComponentConstructor(template_)
|
28
|
-
var = cg.variable(config[CONF_ID], rhs)
|
29
|
-
for i, conf in enumerate(config.get(CONF_COMPONENTS, [])):
|
30
|
-
comp = cg.Pvariable(conf[CONF_ID], var.get_component(i))
|
31
|
-
await cg.register_component(comp, conf)
|
5
|
+
CONFIG_SCHEMA = cv.invalid(
|
6
|
+
'The "custom" component has been removed. Consider conversion to an external component.\nhttps://esphome.io/guides/contributing#a-note-about-custom-components'
|
7
|
+
)
|
@@ -298,6 +298,12 @@ void DalyBmsComponent::decode_data_(std::vector<uint8_t> data) {
|
|
298
298
|
if (this->cell_16_voltage_sensor_) {
|
299
299
|
this->cell_16_voltage_sensor_->publish_state((float) encode_uint16(it[5], it[6]) / 1000);
|
300
300
|
}
|
301
|
+
if (this->cell_17_voltage_sensor_) {
|
302
|
+
this->cell_17_voltage_sensor_->publish_state((float) encode_uint16(it[7], it[8]) / 1000);
|
303
|
+
}
|
304
|
+
if (this->cell_18_voltage_sensor_) {
|
305
|
+
this->cell_18_voltage_sensor_->publish_state((float) encode_uint16(it[9], it[10]) / 1000);
|
306
|
+
}
|
301
307
|
break;
|
302
308
|
}
|
303
309
|
break;
|
@@ -54,6 +54,8 @@ class DalyBmsComponent : public PollingComponent, public uart::UARTDevice {
|
|
54
54
|
SUB_SENSOR(cell_14_voltage)
|
55
55
|
SUB_SENSOR(cell_15_voltage)
|
56
56
|
SUB_SENSOR(cell_16_voltage)
|
57
|
+
SUB_SENSOR(cell_17_voltage)
|
58
|
+
SUB_SENSOR(cell_18_voltage)
|
57
59
|
#endif
|
58
60
|
|
59
61
|
#ifdef USE_TEXT_SENSOR
|
@@ -52,6 +52,8 @@ CONF_CELL_13_VOLTAGE = "cell_13_voltage"
|
|
52
52
|
CONF_CELL_14_VOLTAGE = "cell_14_voltage"
|
53
53
|
CONF_CELL_15_VOLTAGE = "cell_15_voltage"
|
54
54
|
CONF_CELL_16_VOLTAGE = "cell_16_voltage"
|
55
|
+
CONF_CELL_17_VOLTAGE = "cell_17_voltage"
|
56
|
+
CONF_CELL_18_VOLTAGE = "cell_18_voltage"
|
55
57
|
ICON_CURRENT_DC = "mdi:current-dc"
|
56
58
|
ICON_BATTERY_OUTLINE = "mdi:battery-outline"
|
57
59
|
ICON_THERMOMETER_CHEVRON_UP = "mdi:thermometer-chevron-up"
|
@@ -92,6 +94,8 @@ TYPES = [
|
|
92
94
|
CONF_CELL_14_VOLTAGE,
|
93
95
|
CONF_CELL_15_VOLTAGE,
|
94
96
|
CONF_CELL_16_VOLTAGE,
|
97
|
+
CONF_CELL_17_VOLTAGE,
|
98
|
+
CONF_CELL_18_VOLTAGE,
|
95
99
|
]
|
96
100
|
|
97
101
|
CELL_VOLTAGE_SCHEMA = sensor.sensor_schema(
|
@@ -212,6 +216,8 @@ CONFIG_SCHEMA = cv.All(
|
|
212
216
|
cv.Optional(CONF_CELL_14_VOLTAGE): CELL_VOLTAGE_SCHEMA,
|
213
217
|
cv.Optional(CONF_CELL_15_VOLTAGE): CELL_VOLTAGE_SCHEMA,
|
214
218
|
cv.Optional(CONF_CELL_16_VOLTAGE): CELL_VOLTAGE_SCHEMA,
|
219
|
+
cv.Optional(CONF_CELL_17_VOLTAGE): CELL_VOLTAGE_SCHEMA,
|
220
|
+
cv.Optional(CONF_CELL_18_VOLTAGE): CELL_VOLTAGE_SCHEMA,
|
215
221
|
}
|
216
222
|
).extend(cv.COMPONENT_SCHEMA)
|
217
223
|
)
|
@@ -50,6 +50,10 @@ void DebugComponent::dump_config() {
|
|
50
50
|
this->reset_reason_->publish_state(get_reset_reason_());
|
51
51
|
}
|
52
52
|
#endif // USE_TEXT_SENSOR
|
53
|
+
|
54
|
+
#ifdef USE_ESP32
|
55
|
+
this->log_partition_info_(); // Log partition information for ESP32
|
56
|
+
#endif // USE_ESP32
|
53
57
|
}
|
54
58
|
|
55
59
|
void DebugComponent::loop() {
|
@@ -55,6 +55,20 @@ class DebugComponent : public PollingComponent {
|
|
55
55
|
#endif // USE_ESP32
|
56
56
|
#endif // USE_SENSOR
|
57
57
|
|
58
|
+
#ifdef USE_ESP32
|
59
|
+
/**
|
60
|
+
* @brief Logs information about the device's partition table.
|
61
|
+
*
|
62
|
+
* This function iterates through the ESP32's partition table and logs details
|
63
|
+
* about each partition, including its name, type, subtype, starting address,
|
64
|
+
* and size. The information is useful for diagnosing issues related to flash
|
65
|
+
* memory or verifying the partition configuration dynamically at runtime.
|
66
|
+
*
|
67
|
+
* Only available when compiled for ESP32 platforms.
|
68
|
+
*/
|
69
|
+
void log_partition_info_();
|
70
|
+
#endif // USE_ESP32
|
71
|
+
|
58
72
|
#ifdef USE_TEXT_SENSOR
|
59
73
|
text_sensor::TextSensor *device_info_{nullptr};
|
60
74
|
text_sensor::TextSensor *reset_reason_{nullptr};
|
@@ -5,6 +5,7 @@
|
|
5
5
|
#include <esp_heap_caps.h>
|
6
6
|
#include <esp_system.h>
|
7
7
|
#include <esp_chip_info.h>
|
8
|
+
#include <esp_partition.h>
|
8
9
|
|
9
10
|
#if defined(USE_ESP32_VARIANT_ESP32)
|
10
11
|
#include <esp32/rom/rtc.h>
|
@@ -28,111 +29,177 @@ namespace debug {
|
|
28
29
|
|
29
30
|
static const char *const TAG = "debug";
|
30
31
|
|
32
|
+
void DebugComponent::log_partition_info_() {
|
33
|
+
ESP_LOGCONFIG(TAG, "Partition table:");
|
34
|
+
ESP_LOGCONFIG(TAG, " %-12s %-4s %-8s %-10s %-10s", "Name", "Type", "Subtype", "Address", "Size");
|
35
|
+
esp_partition_iterator_t it = esp_partition_find(ESP_PARTITION_TYPE_ANY, ESP_PARTITION_SUBTYPE_ANY, NULL);
|
36
|
+
while (it != NULL) {
|
37
|
+
const esp_partition_t *partition = esp_partition_get(it);
|
38
|
+
ESP_LOGCONFIG(TAG, " %-12s %-4d %-8d 0x%08" PRIX32 " 0x%08" PRIX32, partition->label, partition->type,
|
39
|
+
partition->subtype, partition->address, partition->size);
|
40
|
+
it = esp_partition_next(it);
|
41
|
+
}
|
42
|
+
esp_partition_iterator_release(it);
|
43
|
+
}
|
44
|
+
|
31
45
|
std::string DebugComponent::get_reset_reason_() {
|
32
46
|
std::string reset_reason;
|
33
|
-
switch (
|
34
|
-
case
|
35
|
-
reset_reason = "
|
47
|
+
switch (esp_reset_reason()) {
|
48
|
+
case ESP_RST_POWERON:
|
49
|
+
reset_reason = "Reset due to power-on event";
|
50
|
+
break;
|
51
|
+
case ESP_RST_EXT:
|
52
|
+
reset_reason = "Reset by external pin";
|
53
|
+
break;
|
54
|
+
case ESP_RST_SW:
|
55
|
+
reset_reason = "Software reset via esp_restart";
|
56
|
+
break;
|
57
|
+
case ESP_RST_PANIC:
|
58
|
+
reset_reason = "Software reset due to exception/panic";
|
59
|
+
break;
|
60
|
+
case ESP_RST_INT_WDT:
|
61
|
+
reset_reason = "Reset (software or hardware) due to interrupt watchdog";
|
62
|
+
break;
|
63
|
+
case ESP_RST_TASK_WDT:
|
64
|
+
reset_reason = "Reset due to task watchdog";
|
65
|
+
break;
|
66
|
+
case ESP_RST_WDT:
|
67
|
+
reset_reason = "Reset due to other watchdogs";
|
68
|
+
break;
|
69
|
+
case ESP_RST_DEEPSLEEP:
|
70
|
+
reset_reason = "Reset after exiting deep sleep mode";
|
71
|
+
break;
|
72
|
+
case ESP_RST_BROWNOUT:
|
73
|
+
reset_reason = "Brownout reset (software or hardware)";
|
74
|
+
break;
|
75
|
+
case ESP_RST_SDIO:
|
76
|
+
reset_reason = "Reset over SDIO";
|
36
77
|
break;
|
78
|
+
#ifdef USE_ESP32_VARIANT_ESP32
|
79
|
+
#if (ESP_IDF_VERSION >= ESP_IDF_VERSION_VAL(5, 1, 4))
|
80
|
+
case ESP_RST_USB:
|
81
|
+
reset_reason = "Reset by USB peripheral";
|
82
|
+
break;
|
83
|
+
case ESP_RST_JTAG:
|
84
|
+
reset_reason = "Reset by JTAG";
|
85
|
+
break;
|
86
|
+
case ESP_RST_EFUSE:
|
87
|
+
reset_reason = "Reset due to efuse error";
|
88
|
+
break;
|
89
|
+
case ESP_RST_PWR_GLITCH:
|
90
|
+
reset_reason = "Reset due to power glitch detected";
|
91
|
+
break;
|
92
|
+
case ESP_RST_CPU_LOCKUP:
|
93
|
+
reset_reason = "Reset due to CPU lock up (double exception)";
|
94
|
+
break;
|
95
|
+
#endif // ESP_IDF_VERSION >= ESP_IDF_VERSION_VAL(5, 1, 4)
|
96
|
+
#endif // USE_ESP32_VARIANT_ESP32
|
97
|
+
default: // Includes ESP_RST_UNKNOWN
|
98
|
+
switch (rtc_get_reset_reason(0)) {
|
99
|
+
case POWERON_RESET:
|
100
|
+
reset_reason = "Power On Reset";
|
101
|
+
break;
|
37
102
|
#if defined(USE_ESP32_VARIANT_ESP32)
|
38
|
-
|
103
|
+
case SW_RESET:
|
39
104
|
#elif defined(USE_ESP32_VARIANT_ESP32C3) || defined(USE_ESP32_VARIANT_ESP32S2) || \
|
40
105
|
defined(USE_ESP32_VARIANT_ESP32S3) || defined(USE_ESP32_VARIANT_ESP32C6)
|
41
|
-
|
106
|
+
case RTC_SW_SYS_RESET:
|
42
107
|
#endif
|
43
|
-
|
44
|
-
|
108
|
+
reset_reason = "Software Reset Digital Core";
|
109
|
+
break;
|
45
110
|
#if defined(USE_ESP32_VARIANT_ESP32)
|
46
|
-
|
47
|
-
|
48
|
-
|
111
|
+
case OWDT_RESET:
|
112
|
+
reset_reason = "Watch Dog Reset Digital Core";
|
113
|
+
break;
|
49
114
|
#endif
|
50
|
-
|
51
|
-
|
52
|
-
|
115
|
+
case DEEPSLEEP_RESET:
|
116
|
+
reset_reason = "Deep Sleep Reset Digital Core";
|
117
|
+
break;
|
53
118
|
#if defined(USE_ESP32_VARIANT_ESP32)
|
54
|
-
|
55
|
-
|
56
|
-
|
119
|
+
case SDIO_RESET:
|
120
|
+
reset_reason = "SLC Module Reset Digital Core";
|
121
|
+
break;
|
57
122
|
#endif
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
123
|
+
case TG0WDT_SYS_RESET:
|
124
|
+
reset_reason = "Timer Group 0 Watch Dog Reset Digital Core";
|
125
|
+
break;
|
126
|
+
case TG1WDT_SYS_RESET:
|
127
|
+
reset_reason = "Timer Group 1 Watch Dog Reset Digital Core";
|
128
|
+
break;
|
129
|
+
case RTCWDT_SYS_RESET:
|
130
|
+
reset_reason = "RTC Watch Dog Reset Digital Core";
|
131
|
+
break;
|
67
132
|
#if !defined(USE_ESP32_VARIANT_ESP32C6) && !defined(USE_ESP32_VARIANT_ESP32H2)
|
68
|
-
|
69
|
-
|
70
|
-
|
133
|
+
case INTRUSION_RESET:
|
134
|
+
reset_reason = "Intrusion Reset CPU";
|
135
|
+
break;
|
71
136
|
#endif
|
72
137
|
#if defined(USE_ESP32_VARIANT_ESP32)
|
73
|
-
|
74
|
-
|
75
|
-
|
138
|
+
case TGWDT_CPU_RESET:
|
139
|
+
reset_reason = "Timer Group Reset CPU";
|
140
|
+
break;
|
76
141
|
#elif defined(USE_ESP32_VARIANT_ESP32C3) || defined(USE_ESP32_VARIANT_ESP32S2) || \
|
77
142
|
defined(USE_ESP32_VARIANT_ESP32S3) || defined(USE_ESP32_VARIANT_ESP32C6)
|
78
|
-
|
79
|
-
|
80
|
-
|
143
|
+
case TG0WDT_CPU_RESET:
|
144
|
+
reset_reason = "Timer Group 0 Reset CPU";
|
145
|
+
break;
|
81
146
|
#endif
|
82
147
|
#if defined(USE_ESP32_VARIANT_ESP32)
|
83
|
-
|
148
|
+
case SW_CPU_RESET:
|
84
149
|
#elif defined(USE_ESP32_VARIANT_ESP32C3) || defined(USE_ESP32_VARIANT_ESP32S2) || \
|
85
150
|
defined(USE_ESP32_VARIANT_ESP32S3) || defined(USE_ESP32_VARIANT_ESP32C6)
|
86
|
-
|
151
|
+
case RTC_SW_CPU_RESET:
|
87
152
|
#endif
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
153
|
+
reset_reason = "Software Reset CPU";
|
154
|
+
break;
|
155
|
+
case RTCWDT_CPU_RESET:
|
156
|
+
reset_reason = "RTC Watch Dog Reset CPU";
|
157
|
+
break;
|
93
158
|
#if defined(USE_ESP32_VARIANT_ESP32)
|
94
|
-
|
95
|
-
|
96
|
-
|
159
|
+
case EXT_CPU_RESET:
|
160
|
+
reset_reason = "External CPU Reset";
|
161
|
+
break;
|
97
162
|
#endif
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
163
|
+
case RTCWDT_BROWN_OUT_RESET:
|
164
|
+
reset_reason = "Voltage Unstable Reset";
|
165
|
+
break;
|
166
|
+
case RTCWDT_RTC_RESET:
|
167
|
+
reset_reason = "RTC Watch Dog Reset Digital Core And RTC Module";
|
168
|
+
break;
|
104
169
|
#if defined(USE_ESP32_VARIANT_ESP32C3) || defined(USE_ESP32_VARIANT_ESP32S2) || defined(USE_ESP32_VARIANT_ESP32S3) || \
|
105
170
|
defined(USE_ESP32_VARIANT_ESP32C6)
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
171
|
+
case TG1WDT_CPU_RESET:
|
172
|
+
reset_reason = "Timer Group 1 Reset CPU";
|
173
|
+
break;
|
174
|
+
case SUPER_WDT_RESET:
|
175
|
+
reset_reason = "Super Watchdog Reset Digital Core And RTC Module";
|
176
|
+
break;
|
177
|
+
case EFUSE_RESET:
|
178
|
+
reset_reason = "eFuse Reset Digital Core";
|
179
|
+
break;
|
115
180
|
#endif
|
116
181
|
#if defined(USE_ESP32_VARIANT_ESP32C3) || defined(USE_ESP32_VARIANT_ESP32S2) || defined(USE_ESP32_VARIANT_ESP32S3)
|
117
|
-
|
118
|
-
|
119
|
-
|
182
|
+
case GLITCH_RTC_RESET:
|
183
|
+
reset_reason = "Glitch Reset Digital Core And RTC Module";
|
184
|
+
break;
|
120
185
|
#endif
|
121
186
|
#if defined(USE_ESP32_VARIANT_ESP32C3) || defined(USE_ESP32_VARIANT_ESP32S3) || defined(USE_ESP32_VARIANT_ESP32C6)
|
122
|
-
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
|
127
|
-
|
187
|
+
case USB_UART_CHIP_RESET:
|
188
|
+
reset_reason = "USB UART Reset Digital Core";
|
189
|
+
break;
|
190
|
+
case USB_JTAG_CHIP_RESET:
|
191
|
+
reset_reason = "USB JTAG Reset Digital Core";
|
192
|
+
break;
|
128
193
|
#endif
|
129
194
|
#if defined(USE_ESP32_VARIANT_ESP32C3) || defined(USE_ESP32_VARIANT_ESP32S3)
|
130
|
-
|
131
|
-
|
132
|
-
|
195
|
+
case POWER_GLITCH_RESET:
|
196
|
+
reset_reason = "Power Glitch Reset Digital Core And RTC Module";
|
197
|
+
break;
|
133
198
|
#endif
|
134
|
-
|
135
|
-
|
199
|
+
default:
|
200
|
+
reset_reason = "Unknown Reset Reason";
|
201
|
+
}
|
202
|
+
break;
|
136
203
|
}
|
137
204
|
ESP_LOGD(TAG, "Reset Reason: %s", reset_reason.c_str());
|
138
205
|
return reset_reason;
|
@@ -223,6 +290,19 @@ void DebugComponent::get_device_info_(std::string &device_info) {
|
|
223
290
|
device_info += " Cores:" + to_string(info.cores);
|
224
291
|
device_info += " Revision:" + to_string(info.revision);
|
225
292
|
|
293
|
+
// Framework detection
|
294
|
+
device_info += "|Framework: ";
|
295
|
+
#ifdef USE_ARDUINO
|
296
|
+
ESP_LOGD(TAG, "Framework: Arduino");
|
297
|
+
device_info += "Arduino";
|
298
|
+
#elif defined(USE_ESP_IDF)
|
299
|
+
ESP_LOGD(TAG, "Framework: ESP-IDF");
|
300
|
+
device_info += "ESP-IDF";
|
301
|
+
#else
|
302
|
+
ESP_LOGW(TAG, "Framework: UNKNOWN");
|
303
|
+
device_info += "UNKNOWN";
|
304
|
+
#endif
|
305
|
+
|
226
306
|
ESP_LOGD(TAG, "ESP-IDF Version: %s", esp_get_idf_version());
|
227
307
|
device_info += "|ESP-IDF: ";
|
228
308
|
device_info += esp_get_idf_version();
|
@@ -294,4 +374,4 @@ void DebugComponent::update_platform_() {
|
|
294
374
|
|
295
375
|
} // namespace debug
|
296
376
|
} // namespace esphome
|
297
|
-
#endif
|
377
|
+
#endif // USE_ESP32
|
@@ -159,6 +159,15 @@ void DFPlayer::loop() {
|
|
159
159
|
}
|
160
160
|
break;
|
161
161
|
case 9: // End byte
|
162
|
+
#ifdef ESPHOME_LOG_HAS_VERY_VERBOSE
|
163
|
+
char byte_sequence[100];
|
164
|
+
byte_sequence[0] = '\0';
|
165
|
+
for (size_t i = 0; i < this->read_pos_ + 1; ++i) {
|
166
|
+
snprintf(byte_sequence + strlen(byte_sequence), sizeof(byte_sequence) - strlen(byte_sequence), "%02X ",
|
167
|
+
this->read_buffer_[i]);
|
168
|
+
}
|
169
|
+
ESP_LOGVV(TAG, "Received byte sequence: %s", byte_sequence);
|
170
|
+
#endif
|
162
171
|
if (byte != 0xEF) {
|
163
172
|
ESP_LOGW(TAG, "Expected end byte 0xEF, got %#02x", byte);
|
164
173
|
this->read_pos_ = 0;
|
@@ -238,13 +247,17 @@ void DFPlayer::loop() {
|
|
238
247
|
this->ack_set_is_playing_ = false;
|
239
248
|
this->ack_reset_is_playing_ = false;
|
240
249
|
break;
|
250
|
+
case 0x3C:
|
251
|
+
ESP_LOGV(TAG, "Playback finished (USB drive)");
|
252
|
+
this->is_playing_ = false;
|
253
|
+
this->on_finished_playback_callback_.call();
|
241
254
|
case 0x3D:
|
242
|
-
ESP_LOGV(TAG, "Playback finished");
|
255
|
+
ESP_LOGV(TAG, "Playback finished (SD card)");
|
243
256
|
this->is_playing_ = false;
|
244
257
|
this->on_finished_playback_callback_.call();
|
245
258
|
break;
|
246
259
|
default:
|
247
|
-
|
260
|
+
ESP_LOGE(TAG, "Received unknown cmd %#02x arg %#04x", cmd, argument);
|
248
261
|
}
|
249
262
|
this->sent_cmd_ = 0;
|
250
263
|
this->read_pos_ = 0;
|