esphome 2025.7.4__py3-none-any.whl → 2025.8.0b1__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.
Potentially problematic release.
This version of esphome might be problematic. Click here for more details.
- esphome/__main__.py +189 -82
- esphome/automation.py +2 -4
- esphome/build_gen/__init__.py +0 -0
- esphome/build_gen/platformio.py +102 -0
- esphome/components/a4988/a4988.cpp +0 -1
- esphome/components/absolute_humidity/absolute_humidity.cpp +0 -2
- esphome/components/absolute_humidity/sensor.py +2 -2
- esphome/components/adc/__init__.py +123 -85
- esphome/components/adc/adc_sensor.h +98 -35
- esphome/components/adc/adc_sensor_common.cpp +10 -4
- esphome/components/adc/adc_sensor_esp32.cpp +291 -123
- esphome/components/adc/adc_sensor_esp8266.cpp +1 -4
- esphome/components/adc/adc_sensor_libretiny.cpp +1 -2
- esphome/components/adc/adc_sensor_rp2040.cpp +1 -2
- esphome/components/adc/adc_sensor_zephyr.cpp +207 -0
- esphome/components/adc/sensor.py +61 -27
- esphome/components/adc128s102/adc128s102.cpp +1 -4
- esphome/components/ade7880/sensor.py +75 -49
- esphome/components/ads1115/ads1115.cpp +0 -1
- esphome/components/ads1118/ads1118.cpp +0 -1
- esphome/components/ags10/ags10.cpp +0 -4
- esphome/components/aht10/aht10.cpp +0 -4
- esphome/components/aic3204/aic3204.cpp +0 -2
- esphome/components/airthings_wave_plus/__init__.py +1 -1
- esphome/components/airthings_wave_plus/airthings_wave_plus.cpp +22 -4
- esphome/components/airthings_wave_plus/airthings_wave_plus.h +10 -1
- esphome/components/airthings_wave_plus/sensor.py +55 -28
- esphome/components/alarm_control_panel/__init__.py +4 -9
- esphome/components/am2315c/am2315c.cpp +0 -2
- esphome/components/am2320/am2320.cpp +0 -1
- esphome/components/animation/__init__.py +14 -11
- esphome/components/apds9306/apds9306.cpp +0 -4
- esphome/components/apds9960/apds9960.cpp +0 -1
- esphome/components/api/__init__.py +29 -4
- esphome/components/api/api_connection.cpp +378 -401
- esphome/components/api/api_connection.h +112 -56
- esphome/components/api/api_frame_helper.cpp +69 -896
- esphome/components/api/api_frame_helper.h +31 -126
- esphome/components/api/api_frame_helper_noise.cpp +583 -0
- esphome/components/api/api_frame_helper_noise.h +68 -0
- esphome/components/api/api_frame_helper_plaintext.cpp +290 -0
- esphome/components/api/api_frame_helper_plaintext.h +53 -0
- esphome/components/api/api_noise_context.h +2 -4
- esphome/components/api/api_pb2.cpp +1601 -1808
- esphome/components/api/api_pb2.h +367 -323
- esphome/components/api/api_pb2_dump.cpp +1137 -3466
- esphome/components/api/api_pb2_includes.h +34 -0
- esphome/components/api/api_pb2_service.cpp +94 -105
- esphome/components/api/api_pb2_service.h +27 -16
- esphome/components/api/api_server.cpp +18 -17
- esphome/components/api/api_server.h +8 -5
- esphome/components/api/client.py +16 -8
- esphome/components/api/custom_api_device.h +68 -14
- esphome/components/api/homeassistant_service.h +24 -19
- esphome/components/api/list_entities.cpp +3 -5
- esphome/components/api/list_entities.h +2 -4
- esphome/components/api/proto.cpp +3 -5
- esphome/components/api/proto.h +239 -274
- esphome/components/api/subscribe_state.cpp +2 -4
- esphome/components/api/subscribe_state.h +2 -4
- esphome/components/api/user_services.cpp +2 -4
- esphome/components/api/user_services.h +8 -8
- esphome/components/as3935/as3935.cpp +0 -2
- esphome/components/as3935_spi/as3935_spi.cpp +0 -2
- esphome/components/as5600/__init__.py +1 -1
- esphome/components/as5600/as5600.cpp +0 -2
- esphome/components/as5600/sensor/__init__.py +0 -1
- esphome/components/as7341/as7341.cpp +0 -1
- esphome/components/async_tcp/__init__.py +1 -1
- esphome/components/at581x/at581x.cpp +1 -1
- esphome/components/atm90e26/atm90e26.cpp +0 -1
- esphome/components/atm90e32/atm90e32.cpp +488 -118
- esphome/components/atm90e32/atm90e32.h +44 -5
- esphome/components/audio/audio.h +2 -2
- esphome/components/axs15231/touchscreen/axs15231_touchscreen.cpp +0 -2
- esphome/components/beken_spi_led_strip/led_strip.cpp +0 -2
- esphome/components/bh1750/bh1750.cpp +0 -1
- esphome/components/binary_sensor/__init__.py +14 -12
- esphome/components/ble_client/__init__.py +4 -7
- esphome/components/bluetooth_proxy/__init__.py +40 -3
- esphome/components/bluetooth_proxy/bluetooth_connection.cpp +387 -82
- esphome/components/bluetooth_proxy/bluetooth_connection.h +16 -5
- esphome/components/bluetooth_proxy/bluetooth_proxy.cpp +102 -311
- esphome/components/bluetooth_proxy/bluetooth_proxy.h +30 -14
- esphome/components/bme280_base/bme280_base.cpp +15 -16
- esphome/components/bme680/bme680.cpp +2 -3
- esphome/components/bme680_bsec/bme680_bsec.cpp +0 -2
- esphome/components/bme68x_bsec2/bme68x_bsec2.cpp +0 -2
- esphome/components/bmi160/bmi160.cpp +0 -1
- esphome/components/bmp085/bmp085.cpp +0 -1
- esphome/components/bmp280_base/bmp280_base.cpp +13 -14
- esphome/components/bmp3xx_base/bmp3xx_base.cpp +0 -1
- esphome/components/bmp581/bmp581.cpp +0 -2
- esphome/components/bp1658cj/bp1658cj.cpp +0 -1
- esphome/components/bp5758d/bp5758d.cpp +0 -1
- esphome/components/button/__init__.py +0 -1
- esphome/components/canbus/__init__.py +2 -3
- esphome/components/canbus/canbus.cpp +0 -1
- esphome/components/cap1188/cap1188.cpp +0 -2
- esphome/components/captive_portal/__init__.py +1 -1
- esphome/components/cd74hc4067/cd74hc4067.cpp +0 -2
- esphome/components/ch422g/ch422g.cpp +0 -1
- esphome/components/chsc6x/chsc6x_touchscreen.cpp +0 -3
- esphome/components/climate/__init__.py +0 -1
- esphome/components/climate/climate_traits.h +24 -0
- esphome/components/cm1106/cm1106.cpp +0 -1
- esphome/components/const/__init__.py +6 -0
- esphome/components/cover/__init__.py +0 -1
- esphome/components/cover/cover.cpp +9 -13
- esphome/components/cs5460a/cs5460a.cpp +0 -2
- esphome/components/cse7761/cse7761.cpp +0 -1
- esphome/components/cst226/touchscreen/cst226_touchscreen.cpp +0 -2
- esphome/components/cst816/touchscreen/cst816_touchscreen.cpp +0 -2
- esphome/components/dac7678/dac7678_output.cpp +0 -2
- esphome/components/dallas_temp/dallas_temp.cpp +0 -1
- esphome/components/datetime/__init__.py +0 -2
- esphome/components/debug/__init__.py +15 -1
- esphome/components/debug/debug_zephyr.cpp +281 -0
- esphome/components/debug/sensor.py +2 -1
- esphome/components/deep_sleep/deep_sleep_component.cpp +0 -1
- esphome/components/deep_sleep/deep_sleep_esp32.cpp +20 -1
- esphome/components/dfrobot_sen0395/__init__.py +1 -2
- esphome/components/dht/dht.cpp +0 -1
- esphome/components/dht12/dht12.cpp +0 -1
- esphome/components/display/__init__.py +16 -3
- esphome/components/display_menu_base/__init__.py +1 -1
- esphome/components/dps310/dps310.cpp +0 -2
- esphome/components/ds1307/ds1307.cpp +0 -1
- esphome/components/ds2484/ds2484.cpp +0 -1
- esphome/components/duty_cycle/duty_cycle_sensor.cpp +0 -1
- esphome/components/ee895/ee895.cpp +0 -1
- esphome/components/ektf2232/touchscreen/ektf2232.cpp +0 -1
- esphome/components/emc2101/emc2101.cpp +0 -2
- esphome/components/ens160_base/ens160_base.cpp +0 -2
- esphome/components/ens210/ens210.cpp +0 -1
- esphome/components/es7210/es7210.cpp +0 -2
- esphome/components/es7243e/es7243e.cpp +0 -2
- esphome/components/es8156/es8156.cpp +0 -2
- esphome/components/es8311/es8311.cpp +0 -2
- esphome/components/es8388/es8388.cpp +0 -2
- esphome/components/esp32/__init__.py +199 -58
- esphome/components/esp32/boards.py +17 -0
- esphome/components/esp32/gpio.cpp +0 -1
- esphome/components/esp32/gpio.py +1 -2
- esphome/components/esp32/gpio_esp32_h2.py +2 -7
- esphome/components/esp32/gpio_esp32_p4.py +2 -7
- esphome/components/esp32/post_build.py.script +112 -61
- esphome/components/esp32_ble/__init__.py +40 -2
- esphome/components/esp32_ble/ble.cpp +12 -8
- esphome/components/esp32_ble/ble.h +18 -18
- esphome/components/esp32_ble/ble_advertising.cpp +5 -5
- esphome/components/esp32_ble/ble_advertising.h +7 -5
- esphome/components/esp32_ble/ble_event.h +2 -4
- esphome/components/esp32_ble/ble_scan_result.h +2 -4
- esphome/components/esp32_ble/ble_uuid.cpp +5 -5
- esphome/components/esp32_ble/ble_uuid.h +6 -5
- esphome/components/esp32_ble_beacon/__init__.py +4 -0
- esphome/components/esp32_ble_client/__init__.py +1 -1
- esphome/components/esp32_ble_client/ble_characteristic.cpp +4 -4
- esphome/components/esp32_ble_client/ble_characteristic.h +6 -4
- esphome/components/esp32_ble_client/ble_client_base.cpp +155 -104
- esphome/components/esp32_ble_client/ble_client_base.h +17 -6
- esphome/components/esp32_ble_client/ble_descriptor.h +6 -4
- esphome/components/esp32_ble_client/ble_service.cpp +4 -4
- esphome/components/esp32_ble_client/ble_service.h +6 -4
- esphome/components/esp32_ble_server/__init__.py +15 -12
- esphome/components/esp32_ble_tracker/__init__.py +79 -11
- esphome/components/esp32_ble_tracker/automation.h +4 -4
- esphome/components/esp32_ble_tracker/esp32_ble_tracker.cpp +264 -261
- esphome/components/esp32_ble_tracker/esp32_ble_tracker.h +103 -37
- esphome/components/esp32_camera/__init__.py +13 -1
- esphome/components/esp32_camera/esp32_camera.cpp +7 -2
- esphome/components/esp32_camera/esp32_camera.h +1 -0
- esphome/components/esp32_dac/esp32_dac.cpp +3 -19
- esphome/components/esp32_dac/esp32_dac.h +4 -8
- esphome/components/esp32_rmt_led_strip/led_strip.cpp +1 -6
- esphome/components/esp32_rmt_led_strip/light.py +1 -1
- esphome/components/esp32_touch/__init__.py +2 -3
- esphome/components/esp32_touch/esp32_touch.h +9 -6
- esphome/components/esp32_touch/esp32_touch_common.cpp +2 -0
- esphome/components/esp32_touch/esp32_touch_v1.cpp +7 -9
- esphome/components/esp32_touch/esp32_touch_v2.cpp +10 -6
- esphome/components/esp8266/__init__.py +3 -1
- esphome/components/esp8266_pwm/esp8266_pwm.cpp +0 -1
- esphome/components/esphome/ota/__init__.py +1 -2
- esphome/components/esphome/ota/ota_esphome.cpp +150 -77
- esphome/components/esphome/ota/ota_esphome.h +8 -1
- esphome/components/espnow/__init__.py +309 -0
- esphome/components/espnow/automation.h +175 -0
- esphome/components/espnow/espnow_component.cpp +468 -0
- esphome/components/espnow/espnow_component.h +183 -0
- esphome/components/espnow/espnow_err.h +19 -0
- esphome/components/espnow/espnow_packet.h +166 -0
- esphome/components/ethernet/__init__.py +7 -1
- esphome/components/ethernet/esp_eth_phy_jl1101.c +5 -0
- esphome/components/ethernet/ethernet_component.cpp +0 -1
- esphome/components/ethernet/ethernet_component.h +4 -0
- esphome/components/ethernet_info/ethernet_info_text_sensor.h +0 -3
- esphome/components/event/__init__.py +0 -1
- esphome/components/factory_reset/__init__.py +92 -0
- esphome/components/factory_reset/factory_reset.cpp +76 -0
- esphome/components/factory_reset/factory_reset.h +43 -0
- esphome/components/fan/__init__.py +0 -1
- esphome/components/fan/fan_traits.h +16 -0
- esphome/components/fastled_base/fastled_light.cpp +0 -1
- esphome/components/fastled_spi/light.py +1 -3
- esphome/components/fingerprint_grow/fingerprint_grow.cpp +0 -2
- esphome/components/font/__init__.py +9 -1
- esphome/components/fs3000/fs3000.cpp +0 -2
- esphome/components/ft5x06/touchscreen/ft5x06_touchscreen.cpp +0 -2
- esphome/components/ft63x6/ft63x6.cpp +0 -1
- esphome/components/gdk101/gdk101.cpp +0 -1
- esphome/components/gl_r01_i2c/gl_r01_i2c.cpp +0 -1
- esphome/components/gl_r01_i2c/sensor.py +1 -1
- esphome/components/gpio/one_wire/gpio_one_wire.cpp +0 -1
- esphome/components/gpio/switch/gpio_switch.cpp +0 -2
- esphome/components/gpio_expander/cached_gpio.h +24 -15
- esphome/components/gps/__init__.py +6 -2
- esphome/components/gps/gps.cpp +50 -49
- esphome/components/gps/gps.h +4 -8
- esphome/components/gps/time/gps_time.cpp +3 -9
- esphome/components/gps/time/gps_time.h +4 -7
- esphome/components/graph/__init__.py +1 -1
- esphome/components/grove_gas_mc_v2/grove_gas_mc_v2.cpp +0 -1
- esphome/components/grove_tb6612fng/grove_tb6612fng.cpp +0 -1
- esphome/components/gt911/touchscreen/gt911_touchscreen.cpp +21 -12
- esphome/components/gt911/touchscreen/gt911_touchscreen.h +26 -2
- esphome/components/haier/climate.py +5 -10
- esphome/components/haier/haier_base.cpp +0 -1
- esphome/components/hbridge/switch/hbridge_switch.cpp +0 -2
- esphome/components/hdc1080/hdc1080.cpp +0 -2
- esphome/components/heatpumpir/climate.py +2 -2
- esphome/components/hlw8012/hlw8012.cpp +0 -1
- esphome/components/hm3301/hm3301.cpp +0 -1
- esphome/components/hmc5883l/hmc5883l.cpp +0 -1
- esphome/components/homeassistant/__init__.py +1 -0
- esphome/components/homeassistant/number/__init__.py +1 -0
- esphome/components/homeassistant/number/homeassistant_number.cpp +11 -7
- esphome/components/homeassistant/switch/__init__.py +1 -0
- esphome/components/homeassistant/switch/homeassistant_switch.cpp +9 -5
- esphome/components/honeywellabp/honeywellabp.cpp +1 -4
- esphome/components/host/__init__.py +2 -0
- esphome/components/hte501/hte501.cpp +0 -1
- esphome/components/http_request/__init__.py +2 -3
- esphome/components/http_request/http_request_idf.cpp +2 -2
- esphome/components/htu21d/htu21d.cpp +0 -2
- esphome/components/htu31d/htu31d.cpp +0 -2
- esphome/components/hx711/hx711.cpp +0 -1
- esphome/components/hydreon_rgxx/hydreon_rgxx.cpp +0 -1
- esphome/components/hydreon_rgxx/sensor.py +4 -5
- esphome/components/i2c/i2c_bus.h +1 -1
- esphome/components/i2c/i2c_bus_arduino.cpp +1 -2
- esphome/components/i2c/i2c_bus_esp_idf.cpp +192 -17
- esphome/components/i2c/i2c_bus_esp_idf.h +11 -1
- esphome/components/i2s_audio/__init__.py +6 -5
- esphome/components/i2s_audio/i2s_audio.cpp +0 -2
- esphome/components/i2s_audio/media_player/i2s_audio_media_player.cpp +1 -4
- esphome/components/i2s_audio/microphone/__init__.py +4 -6
- esphome/components/i2s_audio/microphone/i2s_audio_microphone.cpp +46 -19
- esphome/components/i2s_audio/microphone/i2s_audio_microphone.h +4 -3
- esphome/components/i2s_audio/speaker/i2s_audio_speaker.cpp +273 -269
- esphome/components/i2s_audio/speaker/i2s_audio_speaker.h +19 -34
- esphome/components/ili9xxx/display.py +4 -3
- esphome/components/ili9xxx/ili9xxx_display.cpp +0 -2
- esphome/components/image/__init__.py +123 -92
- esphome/components/improv_serial/__init__.py +7 -8
- esphome/components/ina219/ina219.cpp +0 -1
- esphome/components/ina226/ina226.cpp +0 -2
- esphome/components/ina260/ina260.cpp +0 -2
- esphome/components/ina2xx_base/__init__.py +2 -5
- esphome/components/ina2xx_base/ina2xx_base.cpp +0 -2
- esphome/components/ina3221/ina3221.cpp +0 -1
- esphome/components/internal_temperature/internal_temperature.cpp +0 -2
- esphome/components/interval/interval.h +5 -9
- esphome/components/json/__init__.py +1 -1
- esphome/components/kmeteriso/kmeteriso.cpp +0 -2
- esphome/components/lc709203f/lc709203f.cpp +0 -2
- esphome/components/lcd_gpio/display.py +1 -3
- esphome/components/lcd_gpio/gpio_lcd_display.cpp +0 -1
- esphome/components/lcd_pcf8574/pcf8574_display.cpp +0 -1
- esphome/components/ld2410/__init__.py +4 -6
- esphome/components/ld2410/binary_sensor.py +4 -0
- esphome/components/ld2410/ld2410.cpp +56 -100
- esphome/components/ld2410/ld2410.h +17 -15
- esphome/components/ld2410/sensor.py +24 -10
- esphome/components/ld2412/__init__.py +46 -0
- esphome/components/ld2412/binary_sensor.py +70 -0
- esphome/components/ld2412/button/__init__.py +74 -0
- esphome/components/ld2412/button/factory_reset_button.cpp +9 -0
- esphome/components/ld2412/button/factory_reset_button.h +18 -0
- esphome/components/ld2412/button/query_button.cpp +9 -0
- esphome/components/ld2412/button/query_button.h +18 -0
- esphome/components/ld2412/button/restart_button.cpp +9 -0
- esphome/components/ld2412/button/restart_button.h +18 -0
- esphome/components/ld2412/button/start_dynamic_background_correction_button.cpp +11 -0
- esphome/components/ld2412/button/start_dynamic_background_correction_button.h +18 -0
- esphome/components/ld2412/ld2412.cpp +861 -0
- esphome/components/ld2412/ld2412.h +141 -0
- esphome/components/ld2412/number/__init__.py +126 -0
- esphome/components/ld2412/number/gate_threshold_number.cpp +14 -0
- esphome/components/ld2412/number/gate_threshold_number.h +19 -0
- esphome/components/ld2412/number/light_threshold_number.cpp +12 -0
- esphome/components/ld2412/number/light_threshold_number.h +18 -0
- esphome/components/ld2412/number/max_distance_timeout_number.cpp +12 -0
- esphome/components/ld2412/number/max_distance_timeout_number.h +18 -0
- esphome/components/ld2412/select/__init__.py +82 -0
- esphome/components/ld2412/select/baud_rate_select.cpp +12 -0
- esphome/components/ld2412/select/baud_rate_select.h +18 -0
- esphome/components/ld2412/select/distance_resolution_select.cpp +12 -0
- esphome/components/ld2412/select/distance_resolution_select.h +18 -0
- esphome/components/ld2412/select/light_out_control_select.cpp +12 -0
- esphome/components/ld2412/select/light_out_control_select.h +18 -0
- esphome/components/ld2412/sensor.py +124 -0
- esphome/components/ld2412/switch/__init__.py +45 -0
- esphome/components/ld2412/switch/bluetooth_switch.cpp +12 -0
- esphome/components/ld2412/switch/bluetooth_switch.h +18 -0
- esphome/components/ld2412/switch/engineering_mode_switch.cpp +12 -0
- esphome/components/ld2412/switch/engineering_mode_switch.h +18 -0
- esphome/components/ld2412/text_sensor.py +34 -0
- esphome/components/ld2420/ld2420.cpp +0 -1
- esphome/components/ld2450/__init__.py +3 -4
- esphome/components/ld2450/binary_sensor.py +3 -0
- esphome/components/ld2450/ld2450.cpp +77 -165
- esphome/components/ld2450/ld2450.h +26 -54
- esphome/components/ld2450/sensor.py +120 -6
- esphome/components/ld2450/text_sensor.py +5 -4
- esphome/components/ld24xx/__init__.py +1 -0
- esphome/components/ld24xx/ld24xx.h +65 -0
- esphome/components/ledc/ledc_output.cpp +0 -1
- esphome/components/libretiny/__init__.py +2 -0
- esphome/components/light/__init__.py +0 -1
- esphome/components/light/effects.py +70 -45
- esphome/components/light/light_call.cpp +101 -66
- esphome/components/light/light_color_values.h +16 -11
- esphome/components/light/light_json_schema.cpp +46 -44
- esphome/components/light/light_state.cpp +8 -11
- esphome/components/light/light_traits.h +17 -0
- esphome/components/lightwaverf/lightwaverf.cpp +0 -2
- esphome/components/lilygo_t5_47/touchscreen/lilygo_t5_47_touchscreen.cpp +0 -1
- esphome/components/lock/__init__.py +0 -1
- esphome/components/logger/__init__.py +31 -9
- esphome/components/logger/logger.cpp +12 -7
- esphome/components/logger/logger.h +25 -14
- esphome/components/logger/logger_esp32.cpp +2 -7
- esphome/components/logger/logger_esp8266.cpp +2 -4
- esphome/components/logger/logger_host.cpp +2 -4
- esphome/components/logger/logger_libretiny.cpp +2 -4
- esphome/components/logger/logger_rp2040.cpp +2 -4
- esphome/components/logger/logger_zephyr.cpp +86 -0
- esphome/components/logger/select/logger_level_select.cpp +2 -4
- esphome/components/logger/select/logger_level_select.h +2 -4
- esphome/components/logger/task_log_buffer.cpp +2 -4
- esphome/components/logger/task_log_buffer.h +2 -4
- esphome/components/lps22/sensor.py +5 -5
- esphome/components/ltr390/ltr390.cpp +0 -2
- esphome/components/ltr501/ltr501.cpp +0 -1
- esphome/components/ltr_als_ps/ltr_als_ps.cpp +0 -1
- esphome/components/lvgl/__init__.py +14 -13
- esphome/components/lvgl/automation.py +2 -4
- esphome/components/lvgl/defines.py +0 -2
- esphome/components/lvgl/helpers.py +1 -1
- esphome/components/lvgl/lv_validation.py +7 -4
- esphome/components/lvgl/lvgl_esphome.cpp +2 -3
- esphome/components/lvgl/styles.py +2 -2
- esphome/components/lvgl/types.py +1 -1
- esphome/components/lvgl/widgets/__init__.py +2 -2
- esphome/components/lvgl/widgets/arc.py +14 -11
- esphome/components/lvgl/widgets/buttonmatrix.py +1 -1
- esphome/components/lvgl/widgets/qrcode.py +7 -7
- esphome/components/lvgl/widgets/spinner.py +6 -6
- esphome/components/lvgl/widgets/switch.py +2 -2
- esphome/components/lvgl/widgets/tabview.py +3 -3
- esphome/components/lvgl/widgets/tileview.py +15 -7
- esphome/components/m5stack_8angle/m5stack_8angle.cpp +0 -1
- esphome/components/matrix_keypad/__init__.py +4 -3
- esphome/components/max17043/max17043.cpp +0 -2
- esphome/components/max31855/max31855.cpp +1 -4
- esphome/components/max31856/max31856.cpp +0 -4
- esphome/components/max31865/max31865.cpp +0 -1
- esphome/components/max44009/max44009.cpp +0 -1
- esphome/components/max6675/max6675.cpp +1 -4
- esphome/components/max6956/max6956.cpp +0 -1
- esphome/components/max7219/max7219.cpp +0 -1
- esphome/components/max7219digit/display.py +1 -1
- esphome/components/max7219digit/max7219digit.cpp +0 -1
- esphome/components/max9611/max9611.cpp +0 -1
- esphome/components/mcp23008/__init__.py +1 -1
- esphome/components/mcp23008/mcp23008.cpp +0 -1
- esphome/components/mcp23016/mcp23016.cpp +0 -1
- esphome/components/mcp23017/__init__.py +1 -1
- esphome/components/mcp23017/mcp23017.cpp +0 -1
- esphome/components/mcp23s08/__init__.py +1 -1
- esphome/components/mcp23s08/mcp23s08.cpp +0 -1
- esphome/components/mcp23s17/__init__.py +1 -1
- esphome/components/mcp23s17/mcp23s17.cpp +0 -1
- esphome/components/mcp23x08_base/__init__.py +2 -0
- esphome/components/mcp23x08_base/mcp23x08_base.cpp +9 -7
- esphome/components/mcp23x08_base/mcp23x08_base.h +9 -4
- esphome/components/mcp23x17_base/__init__.py +2 -0
- esphome/components/mcp23x17_base/mcp23x17_base.cpp +20 -7
- esphome/components/mcp23x17_base/mcp23x17_base.h +9 -4
- esphome/components/mcp23xxx_base/__init__.py +11 -5
- esphome/components/mcp23xxx_base/mcp23xxx_base.cpp +15 -12
- esphome/components/mcp23xxx_base/mcp23xxx_base.h +8 -7
- esphome/components/mcp3008/mcp3008.cpp +1 -4
- esphome/components/mcp3204/mcp3204.cpp +1 -4
- esphome/components/mcp4461/mcp4461.cpp +0 -1
- esphome/components/mcp4725/mcp4725.cpp +0 -1
- esphome/components/mcp4728/mcp4728.cpp +0 -1
- esphome/components/mcp9600/mcp9600.cpp +0 -2
- esphome/components/mcp9808/mcp9808.cpp +0 -2
- esphome/components/mdns/__init__.py +3 -0
- esphome/components/mdns/mdns_component.cpp +2 -0
- esphome/components/mdns/mdns_component.h +4 -0
- esphome/components/media_player/__init__.py +40 -0
- esphome/components/media_player/automation.h +16 -0
- esphome/components/media_player/media_player.cpp +13 -0
- esphome/components/media_player/media_player.h +50 -3
- esphome/components/micro_wake_word/micro_wake_word.cpp +0 -3
- esphome/components/mics_4514/mics_4514.cpp +1 -6
- esphome/components/midea/ir_transmitter.h +4 -4
- esphome/components/mipi/__init__.py +416 -0
- esphome/components/mipi_dsi/__init__.py +5 -0
- esphome/components/mipi_dsi/display.py +233 -0
- esphome/components/mipi_dsi/mipi_dsi.cpp +379 -0
- esphome/components/mipi_dsi/mipi_dsi.h +123 -0
- esphome/components/mipi_dsi/models/__init__.py +0 -0
- esphome/components/mipi_dsi/models/guition.py +38 -0
- esphome/components/mipi_dsi/models/m5stack.py +57 -0
- esphome/components/mipi_dsi/models/waveshare.py +105 -0
- esphome/components/mipi_rgb/models/lilygo.py +0 -0
- esphome/components/mipi_spi/__init__.py +0 -9
- esphome/components/mipi_spi/display.py +220 -256
- esphome/components/mipi_spi/mipi_spi.cpp +1 -485
- esphome/components/mipi_spi/mipi_spi.h +556 -108
- esphome/components/mipi_spi/models/__init__.py +0 -65
- esphome/components/mipi_spi/models/adafruit.py +30 -0
- esphome/components/mipi_spi/models/amoled.py +41 -5
- esphome/components/mipi_spi/models/ili.py +5 -5
- esphome/components/mipi_spi/models/jc.py +1 -3
- esphome/components/mipi_spi/models/lilygo.py +1 -1
- esphome/components/mipi_spi/models/waveshare.py +16 -1
- esphome/components/mixer/speaker/__init__.py +4 -5
- esphome/components/mlx90393/sensor.py +7 -5
- esphome/components/mlx90393/sensor_mlx90393.cpp +0 -1
- esphome/components/mlx90614/mlx90614.cpp +0 -1
- esphome/components/mmc5603/mmc5603.cpp +0 -1
- esphome/components/mmc5983/mmc5983.cpp +0 -2
- esphome/components/mpl3115a2/mpl3115a2.cpp +0 -2
- esphome/components/mpr121/__init__.py +7 -6
- esphome/components/mpr121/mpr121.cpp +0 -1
- esphome/components/mpu6050/mpu6050.cpp +0 -1
- esphome/components/mpu6886/mpu6886.cpp +0 -1
- esphome/components/mqtt/__init__.py +1 -2
- esphome/components/mqtt/mqtt_button.cpp +1 -1
- esphome/components/mqtt/mqtt_client.cpp +0 -1
- esphome/components/mqtt/mqtt_component.cpp +8 -14
- esphome/components/mqtt/mqtt_component.h +0 -7
- esphome/components/mqtt/mqtt_sensor.cpp +0 -1
- esphome/components/mqtt/mqtt_sensor.h +0 -1
- esphome/components/mqtt/mqtt_text_sensor.cpp +0 -1
- esphome/components/mqtt/mqtt_text_sensor.h +0 -1
- esphome/components/ms5611/ms5611.cpp +0 -1
- esphome/components/ms8607/ms8607.cpp +0 -1
- esphome/components/msa3xx/msa3xx.cpp +0 -2
- esphome/components/my9231/my9231.cpp +0 -2
- esphome/components/nau7802/nau7802.cpp +0 -1
- esphome/components/neopixelbus/light.py +3 -0
- esphome/components/network/util.cpp +29 -0
- esphome/components/nextion/nextion.cpp +0 -1
- esphome/components/nfc/binary_sensor/{binary_sensor.cpp → nfc_binary_sensor.cpp} +1 -1
- esphome/components/npi19/npi19.cpp +0 -2
- esphome/components/nrf52/__init__.py +223 -0
- esphome/components/nrf52/boards.py +34 -0
- esphome/components/nrf52/const.py +18 -0
- esphome/components/nrf52/gpio.py +79 -0
- esphome/components/number/__init__.py +2 -1
- esphome/components/one_wire/__init__.py +1 -2
- esphome/components/one_wire/one_wire.cpp +0 -2
- esphome/components/one_wire/one_wire.h +0 -2
- esphome/components/opentherm/hub.cpp +0 -1
- esphome/components/opentherm/number/__init__.py +2 -2
- esphome/components/openthread/__init__.py +2 -3
- esphome/components/openthread/openthread.cpp +30 -13
- esphome/components/openthread/openthread.h +3 -0
- esphome/components/openthread/openthread_esp.cpp +3 -1
- esphome/components/opt3001/sensor.py +2 -6
- esphome/components/output/__init__.py +38 -0
- esphome/components/output/automation.h +24 -0
- esphome/components/output/switch/output_switch.cpp +0 -2
- esphome/components/packages/__init__.py +1 -2
- esphome/components/packet_transport/__init__.py +4 -3
- esphome/components/pca6416a/pca6416a.cpp +0 -1
- esphome/components/pca9554/pca9554.cpp +0 -1
- esphome/components/pca9685/pca9685_output.cpp +0 -2
- esphome/components/pcf85063/pcf85063.cpp +0 -1
- esphome/components/pcf8563/pcf8563.cpp +0 -1
- esphome/components/pcf8574/pcf8574.cpp +0 -1
- esphome/components/pi4ioe5v6408/pi4ioe5v6408.cpp +0 -1
- esphome/components/pipsolar/sensor/__init__.py +1 -1
- esphome/components/pm2005/pm2005.cpp +0 -1
- esphome/components/pmsa003i/pmsa003i.cpp +0 -2
- esphome/components/pmwcs3/sensor.py +1 -2
- esphome/components/pn532/pn532.cpp +0 -2
- esphome/components/pn532_spi/pn532_spi.cpp +0 -2
- esphome/components/power_supply/power_supply.cpp +7 -10
- esphome/components/power_supply/power_supply.h +1 -1
- esphome/components/psram/__init__.py +2 -1
- esphome/components/pulse_counter/pulse_counter_sensor.cpp +0 -1
- esphome/components/pulse_counter/sensor.py +9 -6
- esphome/components/pylontech/pylontech.cpp +0 -1
- esphome/components/qmc5883l/qmc5883l.cpp +0 -1
- esphome/components/qmp6988/qmp6988.cpp +0 -2
- esphome/components/qspi_dbi/display.py +2 -3
- esphome/components/qspi_dbi/qspi_dbi.cpp +0 -2
- esphome/components/qwiic_pir/binary_sensor.py +2 -3
- esphome/components/qwiic_pir/qwiic_pir.cpp +0 -2
- esphome/components/rc522/rc522.cpp +9 -31
- esphome/components/rc522_spi/rc522_spi.cpp +0 -1
- esphome/components/remote_base/__init__.py +5 -6
- esphome/components/remote_receiver/remote_receiver_esp32.cpp +0 -1
- esphome/components/remote_receiver/remote_receiver_esp8266.cpp +0 -1
- esphome/components/remote_receiver/remote_receiver_libretiny.cpp +0 -1
- esphome/components/remote_transmitter/__init__.py +26 -0
- esphome/components/remote_transmitter/automation.h +18 -0
- esphome/components/remote_transmitter/remote_transmitter.h +2 -1
- esphome/components/remote_transmitter/remote_transmitter_esp32.cpp +0 -1
- esphome/components/remote_transmitter/remote_transmitter_esp8266.cpp +2 -0
- esphome/components/remote_transmitter/remote_transmitter_libretiny.cpp +2 -0
- esphome/components/resampler/speaker/__init__.py +4 -5
- esphome/components/rf_bridge/__init__.py +4 -8
- esphome/components/rotary_encoder/rotary_encoder.cpp +0 -2
- esphome/components/rp2040/__init__.py +3 -1
- esphome/components/rp2040_pio_led_strip/led_strip.cpp +0 -2
- esphome/components/rp2040_pio_led_strip/light.py +1 -2
- esphome/components/rp2040_pwm/rp2040_pwm.cpp +1 -5
- esphome/components/rpi_dpi_rgb/display.py +13 -15
- esphome/components/rpi_dpi_rgb/rpi_dpi_rgb.cpp +0 -3
- esphome/components/runtime_stats/__init__.py +34 -0
- esphome/components/runtime_stats/runtime_stats.cpp +102 -0
- esphome/components/runtime_stats/runtime_stats.h +132 -0
- esphome/components/scd30/scd30.cpp +0 -2
- esphome/components/scd30/sensor.py +1 -2
- esphome/components/scd4x/scd4x.cpp +0 -1
- esphome/components/scd4x/sensor.py +1 -3
- esphome/components/sdl/display.py +3 -1
- esphome/components/sdl/sdl_esphome.cpp +0 -2
- esphome/components/sdp3x/sdp3x.cpp +0 -2
- esphome/components/seeed_mr24hpc1/seeed_mr24hpc1.cpp +0 -2
- esphome/components/seeed_mr60fda2/seeed_mr60fda2.cpp +0 -3
- esphome/components/select/__init__.py +2 -3
- esphome/components/select/select_traits.cpp +1 -1
- esphome/components/select/select_traits.h +1 -1
- esphome/components/sen0321/sen0321.cpp +0 -1
- esphome/components/sen5x/sen5x.cpp +0 -2
- esphome/components/sensor/__init__.py +36 -4
- esphome/components/sensor/filter.cpp +49 -10
- esphome/components/sensor/filter.h +22 -7
- esphome/components/sensor/sensor.cpp +0 -1
- esphome/components/sensor/sensor.h +0 -9
- esphome/components/sfa30/sfa30.cpp +0 -4
- esphome/components/sgp30/sgp30.cpp +0 -2
- esphome/components/sgp4x/sensor.py +1 -1
- esphome/components/sgp4x/sgp4x.cpp +0 -2
- esphome/components/shelly_dimmer/shelly_dimmer.cpp +0 -2
- esphome/components/sht3xd/sht3xd.cpp +0 -2
- esphome/components/sht4x/sht4x.cpp +0 -2
- esphome/components/shtcx/shtcx.cpp +0 -1
- esphome/components/sim800l/__init__.py +2 -4
- esphome/components/sm16716/sm16716.cpp +0 -1
- esphome/components/sm2135/sm2135.cpp +0 -1
- esphome/components/sm2235/sm2235.cpp +0 -1
- esphome/components/sm2335/sm2335.cpp +0 -1
- esphome/components/sn74hc165/sn74hc165.cpp +0 -1
- esphome/components/sn74hc595/sn74hc595.cpp +0 -1
- esphome/components/sntp/sntp_component.cpp +0 -1
- esphome/components/sound_level/sensor.py +1 -1
- esphome/components/speaker/media_player/__init__.py +21 -33
- esphome/components/speaker/media_player/audio_pipeline.cpp +4 -7
- esphome/components/spi/__init__.py +29 -13
- esphome/components/spi/spi.cpp +0 -2
- esphome/components/spi_device/spi_device.cpp +1 -4
- esphome/components/sprinkler/__init__.py +4 -4
- esphome/components/sps30/sps30.cpp +0 -1
- esphome/components/ssd1306_base/__init__.py +11 -11
- esphome/components/ssd1306_base/ssd1306_base.cpp +1 -1
- esphome/components/ssd1306_i2c/ssd1306_i2c.cpp +0 -1
- esphome/components/ssd1306_spi/ssd1306_spi.cpp +0 -1
- esphome/components/ssd1322_spi/ssd1322_spi.cpp +0 -1
- esphome/components/ssd1325_spi/ssd1325_spi.cpp +0 -1
- esphome/components/ssd1327_i2c/ssd1327_i2c.cpp +0 -1
- esphome/components/ssd1327_spi/ssd1327_spi.cpp +0 -1
- esphome/components/ssd1331_spi/ssd1331_spi.cpp +0 -1
- esphome/components/ssd1351_spi/ssd1351_spi.cpp +0 -1
- esphome/components/st7567_i2c/st7567_i2c.cpp +0 -1
- esphome/components/st7567_spi/st7567_spi.cpp +0 -1
- esphome/components/st7701s/display.py +10 -14
- esphome/components/st7701s/st7701s.cpp +0 -3
- esphome/components/st7735/st7735.cpp +0 -1
- esphome/components/st7789v/st7789v.cpp +0 -1
- esphome/components/st7920/st7920.cpp +0 -1
- esphome/components/status_led/light/status_led_light.cpp +0 -2
- esphome/components/status_led/status_led.cpp +0 -1
- esphome/components/stepper/__init__.py +2 -4
- esphome/components/sts3x/sts3x.cpp +0 -1
- esphome/components/substitutions/__init__.py +10 -16
- esphome/components/substitutions/jinja.py +24 -1
- esphome/components/sun/__init__.py +2 -3
- esphome/components/switch/__init__.py +31 -1
- esphome/components/switch/automation.h +24 -0
- esphome/components/switch/switch.cpp +8 -0
- esphome/components/switch/switch.h +8 -0
- esphome/components/sx126x/sx126x.cpp +0 -2
- esphome/components/sx127x/sx127x.cpp +0 -2
- esphome/components/sx1509/__init__.py +7 -5
- esphome/components/sx1509/output/sx1509_float_output.cpp +1 -1
- esphome/components/sx1509/sx1509.cpp +0 -2
- esphome/components/syslog/esphome_syslog.cpp +1 -1
- esphome/components/tc74/tc74.cpp +0 -1
- esphome/components/tca9548a/tca9548a.cpp +0 -1
- esphome/components/tca9555/tca9555.cpp +0 -1
- esphome/components/tcs34725/tcs34725.cpp +0 -1
- esphome/components/tee501/tee501.cpp +0 -1
- esphome/components/tem3200/tem3200.cpp +0 -2
- esphome/components/template/alarm_control_panel/template_alarm_control_panel.cpp +0 -1
- esphome/components/template/cover/template_cover.cpp +0 -1
- esphome/components/template/select/template_select.cpp +0 -1
- esphome/components/template/text/template_text.cpp +0 -2
- esphome/components/template/valve/template_valve.cpp +0 -1
- esphome/components/text/__init__.py +0 -1
- esphome/components/text/text_traits.h +2 -0
- esphome/components/text_sensor/__init__.py +2 -1
- esphome/components/text_sensor/text_sensor.cpp +0 -2
- esphome/components/text_sensor/text_sensor.h +0 -8
- esphome/components/thermostat/climate.py +4 -4
- esphome/components/time/__init__.py +7 -4
- esphome/components/time/real_time_clock.cpp +16 -3
- esphome/components/tlc59208f/tlc59208f_output.cpp +0 -2
- esphome/components/tlc5947/tlc5947.cpp +0 -2
- esphome/components/tlc5971/tlc5971.cpp +0 -2
- esphome/components/tm1621/tm1621.cpp +0 -2
- esphome/components/tm1637/tm1637.cpp +0 -2
- esphome/components/tm1638/tm1638.cpp +0 -2
- esphome/components/tm1651/__init__.py +45 -48
- esphome/components/tm1651/tm1651.cpp +213 -47
- esphome/components/tm1651/tm1651.h +37 -32
- esphome/components/tmp117/tmp117.cpp +0 -2
- esphome/components/tsl2561/tsl2561.cpp +0 -1
- esphome/components/tsl2591/tsl2591.cpp +0 -1
- esphome/components/tt21100/touchscreen/tt21100.cpp +0 -2
- esphome/components/ttp229_bsf/ttp229_bsf.cpp +0 -1
- esphome/components/ttp229_lsf/ttp229_lsf.cpp +0 -1
- esphome/components/tuya/climate/__init__.py +9 -10
- esphome/components/tuya/number/__init__.py +8 -6
- esphome/components/tx20/tx20.cpp +0 -1
- esphome/components/uart/uart_component_esp32_arduino.cpp +0 -1
- esphome/components/uart/uart_component_esp8266.cpp +0 -1
- esphome/components/uart/uart_component_esp_idf.cpp +0 -2
- esphome/components/uart/uart_component_libretiny.cpp +0 -2
- esphome/components/uart/uart_component_rp2040.cpp +0 -2
- esphome/components/udp/__init__.py +1 -1
- esphome/components/ufire_ec/sensor.py +1 -2
- esphome/components/ufire_ec/ufire_ec.cpp +0 -2
- esphome/components/ufire_ise/sensor.py +1 -2
- esphome/components/ufire_ise/ufire_ise.cpp +0 -2
- esphome/components/ultrasonic/ultrasonic_sensor.cpp +0 -1
- esphome/components/update/__init__.py +0 -1
- esphome/components/uptime/sensor/uptime_seconds_sensor.cpp +0 -1
- esphome/components/uptime/sensor/uptime_seconds_sensor.h +0 -2
- esphome/components/usb_host/usb_host_client.cpp +0 -1
- esphome/components/usb_host/usb_host_component.cpp +0 -1
- esphome/components/valve/__init__.py +0 -1
- esphome/components/veml3235/veml3235.cpp +0 -3
- esphome/components/veml7700/veml7700.cpp +0 -2
- esphome/components/version/version_text_sensor.cpp +0 -1
- esphome/components/version/version_text_sensor.h +0 -1
- esphome/components/vl53l0x/vl53l0x_sensor.cpp +0 -4
- esphome/components/voice_assistant/voice_assistant.cpp +9 -8
- esphome/components/web_server/__init__.py +13 -0
- esphome/components/web_server/web_server.cpp +187 -352
- esphome/components/web_server/web_server.h +61 -1
- esphome/components/web_server_base/__init__.py +1 -1
- esphome/components/web_server_base/web_server_base.cpp +2 -0
- esphome/components/web_server_base/web_server_base.h +6 -0
- esphome/components/web_server_idf/web_server_idf.cpp +10 -8
- esphome/components/web_server_idf/web_server_idf.h +2 -0
- esphome/components/weikai_i2c/weikai_i2c.cpp +1 -2
- esphome/components/weikai_spi/weikai_spi.cpp +1 -1
- esphome/components/wifi/__init__.py +8 -43
- esphome/components/wifi/wifi_component.cpp +100 -36
- esphome/components/wifi/wifi_component.h +5 -1
- esphome/components/wifi/wifi_component_esp32_arduino.cpp +30 -0
- esphome/components/wifi/wifi_component_esp_idf.cpp +30 -0
- esphome/components/wifi_info/wifi_info_text_sensor.h +0 -6
- esphome/components/wifi_signal/wifi_signal_sensor.h +0 -1
- esphome/components/wireguard/wireguard.cpp +0 -2
- esphome/components/x9c/x9c.cpp +0 -2
- esphome/components/xgzp68xx/xgzp68xx.cpp +0 -1
- esphome/components/xl9535/xl9535.cpp +0 -2
- esphome/components/zephyr/__init__.py +252 -0
- esphome/components/zephyr/const.py +16 -0
- esphome/components/zephyr/core.cpp +90 -0
- esphome/components/zephyr/gpio.cpp +120 -0
- esphome/components/zephyr/gpio.h +38 -0
- esphome/components/zephyr/pre_build.py.script +4 -0
- esphome/components/zephyr/preferences.cpp +156 -0
- esphome/components/zephyr/preferences.h +13 -0
- esphome/config.py +38 -16
- esphome/config_helpers.py +1 -2
- esphome/config_validation.py +8 -15
- esphome/const.py +26 -1
- esphome/core/__init__.py +88 -51
- esphome/core/application.cpp +75 -21
- esphome/core/application.h +106 -171
- esphome/core/color.h +10 -0
- esphome/core/component.cpp +41 -25
- esphome/core/component.h +9 -6
- esphome/core/component_iterator.cpp +61 -261
- esphome/core/component_iterator.h +15 -0
- esphome/core/config.py +26 -11
- esphome/core/defines.h +40 -2
- esphome/core/entity_base.h +18 -0
- esphome/core/entity_helpers.py +41 -6
- esphome/core/helpers.cpp +8 -15
- esphome/core/helpers.h +60 -6
- esphome/core/lock_free_queue.h +1 -1
- esphome/core/scheduler.cpp +277 -74
- esphome/core/scheduler.h +89 -27
- esphome/cpp_generator.py +2 -6
- esphome/cpp_helpers.py +1 -1
- esphome/dashboard/dashboard.py +2 -3
- esphome/dashboard/dns.py +2 -8
- esphome/dashboard/web_server.py +34 -19
- esphome/espota2.py +1 -4
- esphome/git.py +3 -1
- esphome/helpers.py +23 -4
- esphome/log.py +3 -1
- esphome/mqtt.py +3 -5
- esphome/platformio_api.py +7 -4
- esphome/types.py +12 -0
- esphome/util.py +20 -8
- esphome/voluptuous_schema.py +4 -3
- esphome/vscode.py +1 -2
- esphome/wizard.py +1 -4
- esphome/writer.py +5 -107
- esphome/yaml_util.py +7 -5
- {esphome-2025.7.4.dist-info → esphome-2025.8.0b1.dist-info}/METADATA +12 -13
- {esphome-2025.7.4.dist-info → esphome-2025.8.0b1.dist-info}/RECORD +753 -673
- esphome/components/mipi_spi/models/commands.py +0 -82
- /esphome/components/nfc/binary_sensor/{binary_sensor.h → nfc_binary_sensor.h} +0 -0
- {esphome-2025.7.4.dist-info → esphome-2025.8.0b1.dist-info}/WHEEL +0 -0
- {esphome-2025.7.4.dist-info → esphome-2025.8.0b1.dist-info}/entry_points.txt +0 -0
- {esphome-2025.7.4.dist-info → esphome-2025.8.0b1.dist-info}/licenses/LICENSE +0 -0
- {esphome-2025.7.4.dist-info → esphome-2025.8.0b1.dist-info}/top_level.txt +0 -0
|
@@ -136,8 +136,7 @@ RFBRIDGE_ID_SCHEMA = cv.Schema({cv.GenerateID(): cv.use_id(RFBridgeComponent)})
|
|
|
136
136
|
@automation.register_action("rf_bridge.learn", RFBridgeLearnAction, RFBRIDGE_ID_SCHEMA)
|
|
137
137
|
async def rf_bridge_learnx_to_code(config, action_id, template_args, args):
|
|
138
138
|
paren = await cg.get_variable(config[CONF_ID])
|
|
139
|
-
|
|
140
|
-
return var
|
|
139
|
+
return cg.new_Pvariable(action_id, template_args, paren)
|
|
141
140
|
|
|
142
141
|
|
|
143
142
|
@automation.register_action(
|
|
@@ -149,8 +148,7 @@ async def rf_bridge_start_advanced_sniffing_to_code(
|
|
|
149
148
|
config, action_id, template_args, args
|
|
150
149
|
):
|
|
151
150
|
paren = await cg.get_variable(config[CONF_ID])
|
|
152
|
-
|
|
153
|
-
return var
|
|
151
|
+
return cg.new_Pvariable(action_id, template_args, paren)
|
|
154
152
|
|
|
155
153
|
|
|
156
154
|
@automation.register_action(
|
|
@@ -162,8 +160,7 @@ async def rf_bridge_stop_advanced_sniffing_to_code(
|
|
|
162
160
|
config, action_id, template_args, args
|
|
163
161
|
):
|
|
164
162
|
paren = await cg.get_variable(config[CONF_ID])
|
|
165
|
-
|
|
166
|
-
return var
|
|
163
|
+
return cg.new_Pvariable(action_id, template_args, paren)
|
|
167
164
|
|
|
168
165
|
|
|
169
166
|
@automation.register_action(
|
|
@@ -175,8 +172,7 @@ async def rf_bridge_start_bucket_sniffing_to_code(
|
|
|
175
172
|
config, action_id, template_args, args
|
|
176
173
|
):
|
|
177
174
|
paren = await cg.get_variable(config[CONF_ID])
|
|
178
|
-
|
|
179
|
-
return var
|
|
175
|
+
return cg.new_Pvariable(action_id, template_args, paren)
|
|
180
176
|
|
|
181
177
|
|
|
182
178
|
RFBRIDGE_SEND_ADVANCED_CODE_SCHEMA = cv.Schema(
|
|
@@ -129,8 +129,6 @@ void IRAM_ATTR HOT RotaryEncoderSensorStore::gpio_intr(RotaryEncoderSensorStore
|
|
|
129
129
|
}
|
|
130
130
|
|
|
131
131
|
void RotaryEncoderSensor::setup() {
|
|
132
|
-
ESP_LOGCONFIG(TAG, "Running setup for '%s'", this->name_.c_str());
|
|
133
|
-
|
|
134
132
|
int32_t initial_value = 0;
|
|
135
133
|
switch (this->restore_mode_) {
|
|
136
134
|
case ROTARY_ENCODER_RESTORE_DEFAULT_ZERO:
|
|
@@ -16,6 +16,7 @@ from esphome.const import (
|
|
|
16
16
|
KEY_TARGET_FRAMEWORK,
|
|
17
17
|
KEY_TARGET_PLATFORM,
|
|
18
18
|
PLATFORM_RP2040,
|
|
19
|
+
ThreadModel,
|
|
19
20
|
)
|
|
20
21
|
from esphome.core import CORE, EsphomeError, coroutine_with_priority
|
|
21
22
|
from esphome.helpers import copy_file_if_changed, mkdir_p, read_file, write_file
|
|
@@ -171,6 +172,7 @@ async def to_code(config):
|
|
|
171
172
|
cg.set_cpp_standard("gnu++20")
|
|
172
173
|
cg.add_define("ESPHOME_BOARD", config[CONF_BOARD])
|
|
173
174
|
cg.add_define("ESPHOME_VARIANT", "RP2040")
|
|
175
|
+
cg.add_define(ThreadModel.SINGLE)
|
|
174
176
|
|
|
175
177
|
cg.add_platformio_option("extra_scripts", ["post:post_build.py"])
|
|
176
178
|
|
|
@@ -204,7 +206,7 @@ def add_pio_file(component: str, key: str, data: str):
|
|
|
204
206
|
cv.validate_id_name(key)
|
|
205
207
|
except cv.Invalid as e:
|
|
206
208
|
raise EsphomeError(
|
|
207
|
-
f"[{component}] Invalid PIO key: {key}. Allowed characters: [{ascii_letters}{digits}_]\nPlease report an issue https://github.com/esphome/issues"
|
|
209
|
+
f"[{component}] Invalid PIO key: {key}. Allowed characters: [{ascii_letters}{digits}_]\nPlease report an issue https://github.com/esphome/esphome/issues"
|
|
208
210
|
) from e
|
|
209
211
|
CORE.data[KEY_RP2040][KEY_PIO_FILES][key] = data
|
|
210
212
|
|
|
@@ -16,11 +16,7 @@ namespace rp2040_pwm {
|
|
|
16
16
|
|
|
17
17
|
static const char *const TAG = "rp2040_pwm";
|
|
18
18
|
|
|
19
|
-
void RP2040PWM::setup() {
|
|
20
|
-
ESP_LOGCONFIG(TAG, "Running setup");
|
|
21
|
-
|
|
22
|
-
this->setup_pwm_();
|
|
23
|
-
}
|
|
19
|
+
void RP2040PWM::setup() { this->setup_pwm_(); }
|
|
24
20
|
|
|
25
21
|
void RP2040PWM::setup_pwm_() {
|
|
26
22
|
pwm_config config = pwm_get_default_config();
|
|
@@ -2,6 +2,18 @@ from esphome import pins
|
|
|
2
2
|
import esphome.codegen as cg
|
|
3
3
|
from esphome.components import display
|
|
4
4
|
from esphome.components.esp32 import const, only_on_variant
|
|
5
|
+
from esphome.components.mipi import (
|
|
6
|
+
CONF_DE_PIN,
|
|
7
|
+
CONF_HSYNC_BACK_PORCH,
|
|
8
|
+
CONF_HSYNC_FRONT_PORCH,
|
|
9
|
+
CONF_HSYNC_PULSE_WIDTH,
|
|
10
|
+
CONF_PCLK_FREQUENCY,
|
|
11
|
+
CONF_PCLK_INVERTED,
|
|
12
|
+
CONF_PCLK_PIN,
|
|
13
|
+
CONF_VSYNC_BACK_PORCH,
|
|
14
|
+
CONF_VSYNC_FRONT_PORCH,
|
|
15
|
+
CONF_VSYNC_PULSE_WIDTH,
|
|
16
|
+
)
|
|
5
17
|
import esphome.config_validation as cv
|
|
6
18
|
from esphome.const import (
|
|
7
19
|
CONF_BLUE,
|
|
@@ -27,18 +39,6 @@ from esphome.const import (
|
|
|
27
39
|
|
|
28
40
|
DEPENDENCIES = ["esp32"]
|
|
29
41
|
|
|
30
|
-
CONF_DE_PIN = "de_pin"
|
|
31
|
-
CONF_PCLK_PIN = "pclk_pin"
|
|
32
|
-
|
|
33
|
-
CONF_HSYNC_FRONT_PORCH = "hsync_front_porch"
|
|
34
|
-
CONF_HSYNC_PULSE_WIDTH = "hsync_pulse_width"
|
|
35
|
-
CONF_HSYNC_BACK_PORCH = "hsync_back_porch"
|
|
36
|
-
CONF_VSYNC_FRONT_PORCH = "vsync_front_porch"
|
|
37
|
-
CONF_VSYNC_PULSE_WIDTH = "vsync_pulse_width"
|
|
38
|
-
CONF_VSYNC_BACK_PORCH = "vsync_back_porch"
|
|
39
|
-
CONF_PCLK_FREQUENCY = "pclk_frequency"
|
|
40
|
-
CONF_PCLK_INVERTED = "pclk_inverted"
|
|
41
|
-
|
|
42
42
|
rpi_dpi_rgb_ns = cg.esphome_ns.namespace("rpi_dpi_rgb")
|
|
43
43
|
RPI_DPI_RGB = rpi_dpi_rgb_ns.class_("RpiDpiRgb", display.Display, cg.Component)
|
|
44
44
|
ColorOrder = display.display_ns.enum("ColorMode")
|
|
@@ -140,7 +140,6 @@ async def to_code(config):
|
|
|
140
140
|
cg.add(var.set_vsync_front_porch(config[CONF_VSYNC_FRONT_PORCH]))
|
|
141
141
|
cg.add(var.set_pclk_inverted(config[CONF_PCLK_INVERTED]))
|
|
142
142
|
cg.add(var.set_pclk_frequency(config[CONF_PCLK_FREQUENCY]))
|
|
143
|
-
index = 0
|
|
144
143
|
dpins = []
|
|
145
144
|
if CONF_RED in config[CONF_DATA_PINS]:
|
|
146
145
|
red_pins = config[CONF_DATA_PINS][CONF_RED]
|
|
@@ -158,10 +157,9 @@ async def to_code(config):
|
|
|
158
157
|
dpins = dpins[8:16] + dpins[0:8]
|
|
159
158
|
else:
|
|
160
159
|
dpins = config[CONF_DATA_PINS]
|
|
161
|
-
for pin in dpins:
|
|
160
|
+
for index, pin in enumerate(dpins):
|
|
162
161
|
data_pin = await cg.gpio_pin_expression(pin)
|
|
163
162
|
cg.add(var.add_data_pin(data_pin, index))
|
|
164
|
-
index += 1
|
|
165
163
|
|
|
166
164
|
if enable_pin := config.get(CONF_ENABLE_PIN):
|
|
167
165
|
enable = await cg.gpio_pin_expression(enable_pin)
|
|
@@ -6,7 +6,6 @@ namespace esphome {
|
|
|
6
6
|
namespace rpi_dpi_rgb {
|
|
7
7
|
|
|
8
8
|
void RpiDpiRgb::setup() {
|
|
9
|
-
ESP_LOGCONFIG(TAG, "Running setup");
|
|
10
9
|
this->reset_display_();
|
|
11
10
|
esp_lcd_rgb_panel_config_t config{};
|
|
12
11
|
config.flags.fb_in_psram = 1;
|
|
@@ -23,7 +22,6 @@ void RpiDpiRgb::setup() {
|
|
|
23
22
|
config.timings.flags.pclk_active_neg = this->pclk_inverted_;
|
|
24
23
|
config.timings.pclk_hz = this->pclk_frequency_;
|
|
25
24
|
config.clk_src = LCD_CLK_SRC_PLL160M;
|
|
26
|
-
config.psram_trans_align = 64;
|
|
27
25
|
size_t data_pin_count = sizeof(this->data_pins_) / sizeof(this->data_pins_[0]);
|
|
28
26
|
for (size_t i = 0; i != data_pin_count; i++) {
|
|
29
27
|
config.data_gpio_nums[i] = this->data_pins_[i]->get_pin();
|
|
@@ -42,7 +40,6 @@ void RpiDpiRgb::setup() {
|
|
|
42
40
|
}
|
|
43
41
|
ESP_ERROR_CHECK(esp_lcd_panel_reset(this->handle_));
|
|
44
42
|
ESP_ERROR_CHECK(esp_lcd_panel_init(this->handle_));
|
|
45
|
-
ESP_LOGCONFIG(TAG, "RPI_DPI_RGB setup complete");
|
|
46
43
|
}
|
|
47
44
|
void RpiDpiRgb::loop() {
|
|
48
45
|
if (this->handle_ != nullptr)
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
"""
|
|
2
|
+
Runtime statistics component for ESPHome.
|
|
3
|
+
"""
|
|
4
|
+
|
|
5
|
+
import esphome.codegen as cg
|
|
6
|
+
import esphome.config_validation as cv
|
|
7
|
+
from esphome.const import CONF_ID
|
|
8
|
+
|
|
9
|
+
CODEOWNERS = ["@bdraco"]
|
|
10
|
+
|
|
11
|
+
CONF_LOG_INTERVAL = "log_interval"
|
|
12
|
+
|
|
13
|
+
runtime_stats_ns = cg.esphome_ns.namespace("runtime_stats")
|
|
14
|
+
RuntimeStatsCollector = runtime_stats_ns.class_("RuntimeStatsCollector")
|
|
15
|
+
|
|
16
|
+
CONFIG_SCHEMA = cv.Schema(
|
|
17
|
+
{
|
|
18
|
+
cv.GenerateID(): cv.declare_id(RuntimeStatsCollector),
|
|
19
|
+
cv.Optional(
|
|
20
|
+
CONF_LOG_INTERVAL, default="60s"
|
|
21
|
+
): cv.positive_time_period_milliseconds,
|
|
22
|
+
}
|
|
23
|
+
)
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
async def to_code(config):
|
|
27
|
+
"""Generate code for the runtime statistics component."""
|
|
28
|
+
# Define USE_RUNTIME_STATS when this component is used
|
|
29
|
+
cg.add_define("USE_RUNTIME_STATS")
|
|
30
|
+
|
|
31
|
+
# Create the runtime stats instance (constructor sets global_runtime_stats)
|
|
32
|
+
var = cg.new_Pvariable(config[CONF_ID])
|
|
33
|
+
|
|
34
|
+
cg.add(var.set_log_interval(config[CONF_LOG_INTERVAL]))
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
#include "runtime_stats.h"
|
|
2
|
+
|
|
3
|
+
#ifdef USE_RUNTIME_STATS
|
|
4
|
+
|
|
5
|
+
#include "esphome/core/component.h"
|
|
6
|
+
#include <algorithm>
|
|
7
|
+
|
|
8
|
+
namespace esphome {
|
|
9
|
+
|
|
10
|
+
namespace runtime_stats {
|
|
11
|
+
|
|
12
|
+
RuntimeStatsCollector::RuntimeStatsCollector() : log_interval_(60000), next_log_time_(0) {
|
|
13
|
+
global_runtime_stats = this;
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
void RuntimeStatsCollector::record_component_time(Component *component, uint32_t duration_ms, uint32_t current_time) {
|
|
17
|
+
if (component == nullptr)
|
|
18
|
+
return;
|
|
19
|
+
|
|
20
|
+
// Check if we have cached the name for this component
|
|
21
|
+
auto name_it = this->component_names_cache_.find(component);
|
|
22
|
+
if (name_it == this->component_names_cache_.end()) {
|
|
23
|
+
// First time seeing this component, cache its name
|
|
24
|
+
const char *source = component->get_component_source();
|
|
25
|
+
this->component_names_cache_[component] = source;
|
|
26
|
+
this->component_stats_[source].record_time(duration_ms);
|
|
27
|
+
} else {
|
|
28
|
+
this->component_stats_[name_it->second].record_time(duration_ms);
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
if (this->next_log_time_ == 0) {
|
|
32
|
+
this->next_log_time_ = current_time + this->log_interval_;
|
|
33
|
+
return;
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
void RuntimeStatsCollector::log_stats_() {
|
|
38
|
+
ESP_LOGI(TAG, "Component Runtime Statistics");
|
|
39
|
+
ESP_LOGI(TAG, "Period stats (last %" PRIu32 "ms):", this->log_interval_);
|
|
40
|
+
|
|
41
|
+
// First collect stats we want to display
|
|
42
|
+
std::vector<ComponentStatPair> stats_to_display;
|
|
43
|
+
|
|
44
|
+
for (const auto &it : this->component_stats_) {
|
|
45
|
+
const ComponentRuntimeStats &stats = it.second;
|
|
46
|
+
if (stats.get_period_count() > 0) {
|
|
47
|
+
ComponentStatPair pair = {it.first, &stats};
|
|
48
|
+
stats_to_display.push_back(pair);
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
// Sort by period runtime (descending)
|
|
53
|
+
std::sort(stats_to_display.begin(), stats_to_display.end(), std::greater<ComponentStatPair>());
|
|
54
|
+
|
|
55
|
+
// Log top components by period runtime
|
|
56
|
+
for (const auto &it : stats_to_display) {
|
|
57
|
+
const char *source = it.name;
|
|
58
|
+
const ComponentRuntimeStats *stats = it.stats;
|
|
59
|
+
|
|
60
|
+
ESP_LOGI(TAG, " %s: count=%" PRIu32 ", avg=%.2fms, max=%" PRIu32 "ms, total=%" PRIu32 "ms", source,
|
|
61
|
+
stats->get_period_count(), stats->get_period_avg_time_ms(), stats->get_period_max_time_ms(),
|
|
62
|
+
stats->get_period_time_ms());
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
// Log total stats since boot
|
|
66
|
+
ESP_LOGI(TAG, "Total stats (since boot):");
|
|
67
|
+
|
|
68
|
+
// Re-sort by total runtime for all-time stats
|
|
69
|
+
std::sort(stats_to_display.begin(), stats_to_display.end(),
|
|
70
|
+
[](const ComponentStatPair &a, const ComponentStatPair &b) {
|
|
71
|
+
return a.stats->get_total_time_ms() > b.stats->get_total_time_ms();
|
|
72
|
+
});
|
|
73
|
+
|
|
74
|
+
for (const auto &it : stats_to_display) {
|
|
75
|
+
const char *source = it.name;
|
|
76
|
+
const ComponentRuntimeStats *stats = it.stats;
|
|
77
|
+
|
|
78
|
+
ESP_LOGI(TAG, " %s: count=%" PRIu32 ", avg=%.2fms, max=%" PRIu32 "ms, total=%" PRIu32 "ms", source,
|
|
79
|
+
stats->get_total_count(), stats->get_total_avg_time_ms(), stats->get_total_max_time_ms(),
|
|
80
|
+
stats->get_total_time_ms());
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
void RuntimeStatsCollector::process_pending_stats(uint32_t current_time) {
|
|
85
|
+
if (this->next_log_time_ == 0)
|
|
86
|
+
return;
|
|
87
|
+
|
|
88
|
+
if (current_time >= this->next_log_time_) {
|
|
89
|
+
this->log_stats_();
|
|
90
|
+
this->reset_stats_();
|
|
91
|
+
this->next_log_time_ = current_time + this->log_interval_;
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
} // namespace runtime_stats
|
|
96
|
+
|
|
97
|
+
runtime_stats::RuntimeStatsCollector *global_runtime_stats =
|
|
98
|
+
nullptr; // NOLINT(cppcoreguidelines-avoid-non-const-global-variables)
|
|
99
|
+
|
|
100
|
+
} // namespace esphome
|
|
101
|
+
|
|
102
|
+
#endif // USE_RUNTIME_STATS
|
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
#pragma once
|
|
2
|
+
|
|
3
|
+
#include "esphome/core/defines.h"
|
|
4
|
+
|
|
5
|
+
#ifdef USE_RUNTIME_STATS
|
|
6
|
+
|
|
7
|
+
#include <map>
|
|
8
|
+
#include <vector>
|
|
9
|
+
#include <cstdint>
|
|
10
|
+
#include <cstring>
|
|
11
|
+
#include "esphome/core/helpers.h"
|
|
12
|
+
#include "esphome/core/log.h"
|
|
13
|
+
|
|
14
|
+
namespace esphome {
|
|
15
|
+
|
|
16
|
+
class Component; // Forward declaration
|
|
17
|
+
|
|
18
|
+
namespace runtime_stats {
|
|
19
|
+
|
|
20
|
+
static const char *const TAG = "runtime_stats";
|
|
21
|
+
|
|
22
|
+
class ComponentRuntimeStats {
|
|
23
|
+
public:
|
|
24
|
+
ComponentRuntimeStats()
|
|
25
|
+
: period_count_(0),
|
|
26
|
+
period_time_ms_(0),
|
|
27
|
+
period_max_time_ms_(0),
|
|
28
|
+
total_count_(0),
|
|
29
|
+
total_time_ms_(0),
|
|
30
|
+
total_max_time_ms_(0) {}
|
|
31
|
+
|
|
32
|
+
void record_time(uint32_t duration_ms) {
|
|
33
|
+
// Update period counters
|
|
34
|
+
this->period_count_++;
|
|
35
|
+
this->period_time_ms_ += duration_ms;
|
|
36
|
+
if (duration_ms > this->period_max_time_ms_)
|
|
37
|
+
this->period_max_time_ms_ = duration_ms;
|
|
38
|
+
|
|
39
|
+
// Update total counters
|
|
40
|
+
this->total_count_++;
|
|
41
|
+
this->total_time_ms_ += duration_ms;
|
|
42
|
+
if (duration_ms > this->total_max_time_ms_)
|
|
43
|
+
this->total_max_time_ms_ = duration_ms;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
void reset_period_stats() {
|
|
47
|
+
this->period_count_ = 0;
|
|
48
|
+
this->period_time_ms_ = 0;
|
|
49
|
+
this->period_max_time_ms_ = 0;
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
// Period stats (reset each logging interval)
|
|
53
|
+
uint32_t get_period_count() const { return this->period_count_; }
|
|
54
|
+
uint32_t get_period_time_ms() const { return this->period_time_ms_; }
|
|
55
|
+
uint32_t get_period_max_time_ms() const { return this->period_max_time_ms_; }
|
|
56
|
+
float get_period_avg_time_ms() const {
|
|
57
|
+
return this->period_count_ > 0 ? this->period_time_ms_ / static_cast<float>(this->period_count_) : 0.0f;
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
// Total stats (persistent until reboot)
|
|
61
|
+
uint32_t get_total_count() const { return this->total_count_; }
|
|
62
|
+
uint32_t get_total_time_ms() const { return this->total_time_ms_; }
|
|
63
|
+
uint32_t get_total_max_time_ms() const { return this->total_max_time_ms_; }
|
|
64
|
+
float get_total_avg_time_ms() const {
|
|
65
|
+
return this->total_count_ > 0 ? this->total_time_ms_ / static_cast<float>(this->total_count_) : 0.0f;
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
protected:
|
|
69
|
+
// Period stats (reset each logging interval)
|
|
70
|
+
uint32_t period_count_;
|
|
71
|
+
uint32_t period_time_ms_;
|
|
72
|
+
uint32_t period_max_time_ms_;
|
|
73
|
+
|
|
74
|
+
// Total stats (persistent until reboot)
|
|
75
|
+
uint32_t total_count_;
|
|
76
|
+
uint32_t total_time_ms_;
|
|
77
|
+
uint32_t total_max_time_ms_;
|
|
78
|
+
};
|
|
79
|
+
|
|
80
|
+
// For sorting components by run time
|
|
81
|
+
struct ComponentStatPair {
|
|
82
|
+
const char *name;
|
|
83
|
+
const ComponentRuntimeStats *stats;
|
|
84
|
+
|
|
85
|
+
bool operator>(const ComponentStatPair &other) const {
|
|
86
|
+
// Sort by period time as that's what we're displaying in the logs
|
|
87
|
+
return stats->get_period_time_ms() > other.stats->get_period_time_ms();
|
|
88
|
+
}
|
|
89
|
+
};
|
|
90
|
+
|
|
91
|
+
class RuntimeStatsCollector {
|
|
92
|
+
public:
|
|
93
|
+
RuntimeStatsCollector();
|
|
94
|
+
|
|
95
|
+
void set_log_interval(uint32_t log_interval) { this->log_interval_ = log_interval; }
|
|
96
|
+
uint32_t get_log_interval() const { return this->log_interval_; }
|
|
97
|
+
|
|
98
|
+
void record_component_time(Component *component, uint32_t duration_ms, uint32_t current_time);
|
|
99
|
+
|
|
100
|
+
// Process any pending stats printing (should be called after component loop)
|
|
101
|
+
void process_pending_stats(uint32_t current_time);
|
|
102
|
+
|
|
103
|
+
protected:
|
|
104
|
+
void log_stats_();
|
|
105
|
+
|
|
106
|
+
void reset_stats_() {
|
|
107
|
+
for (auto &it : this->component_stats_) {
|
|
108
|
+
it.second.reset_period_stats();
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
// Use const char* keys for efficiency
|
|
113
|
+
// Custom comparator for const char* keys in map
|
|
114
|
+
// Without this, std::map would compare pointer addresses instead of string contents,
|
|
115
|
+
// causing identical component names at different addresses to be treated as different keys
|
|
116
|
+
struct CStrCompare {
|
|
117
|
+
bool operator()(const char *a, const char *b) const { return std::strcmp(a, b) < 0; }
|
|
118
|
+
};
|
|
119
|
+
std::map<const char *, ComponentRuntimeStats, CStrCompare> component_stats_;
|
|
120
|
+
std::map<Component *, const char *> component_names_cache_;
|
|
121
|
+
uint32_t log_interval_;
|
|
122
|
+
uint32_t next_log_time_;
|
|
123
|
+
};
|
|
124
|
+
|
|
125
|
+
} // namespace runtime_stats
|
|
126
|
+
|
|
127
|
+
extern runtime_stats::RuntimeStatsCollector
|
|
128
|
+
*global_runtime_stats; // NOLINT(cppcoreguidelines-avoid-non-const-global-variables)
|
|
129
|
+
|
|
130
|
+
} // namespace esphome
|
|
131
|
+
|
|
132
|
+
#endif // USE_RUNTIME_STATS
|
|
@@ -26,8 +26,6 @@ static const uint16_t SCD30_CMD_TEMPERATURE_OFFSET = 0x5403;
|
|
|
26
26
|
static const uint16_t SCD30_CMD_SOFT_RESET = 0xD304;
|
|
27
27
|
|
|
28
28
|
void SCD30Component::setup() {
|
|
29
|
-
ESP_LOGCONFIG(TAG, "Running setup");
|
|
30
|
-
|
|
31
29
|
#ifdef USE_ESP8266
|
|
32
30
|
Wire.setClockStretchLimit(150000);
|
|
33
31
|
#endif
|
|
@@ -3,6 +3,7 @@ import esphome.codegen as cg
|
|
|
3
3
|
from esphome.components import i2c, sensirion_common, sensor
|
|
4
4
|
import esphome.config_validation as cv
|
|
5
5
|
from esphome.const import (
|
|
6
|
+
CONF_ALTITUDE_COMPENSATION,
|
|
6
7
|
CONF_AMBIENT_PRESSURE_COMPENSATION,
|
|
7
8
|
CONF_AUTOMATIC_SELF_CALIBRATION,
|
|
8
9
|
CONF_CO2,
|
|
@@ -35,8 +36,6 @@ ForceRecalibrationWithReference = scd30_ns.class_(
|
|
|
35
36
|
"ForceRecalibrationWithReference", automation.Action
|
|
36
37
|
)
|
|
37
38
|
|
|
38
|
-
CONF_ALTITUDE_COMPENSATION = "altitude_compensation"
|
|
39
|
-
|
|
40
39
|
CONFIG_SCHEMA = (
|
|
41
40
|
cv.Schema(
|
|
42
41
|
{
|
|
@@ -27,7 +27,6 @@ static const uint16_t SCD4X_CMD_GET_FEATURESET = 0x202f;
|
|
|
27
27
|
static const float SCD4X_TEMPERATURE_OFFSET_MULTIPLIER = (1 << 16) / 175.0f;
|
|
28
28
|
|
|
29
29
|
void SCD4XComponent::setup() {
|
|
30
|
-
ESP_LOGCONFIG(TAG, "Running setup");
|
|
31
30
|
// the sensor needs 1000 ms to enter the idle state
|
|
32
31
|
this->set_timeout(1000, [this]() {
|
|
33
32
|
this->status_clear_error();
|
|
@@ -4,6 +4,7 @@ import esphome.codegen as cg
|
|
|
4
4
|
from esphome.components import i2c, sensirion_common, sensor
|
|
5
5
|
import esphome.config_validation as cv
|
|
6
6
|
from esphome.const import (
|
|
7
|
+
CONF_ALTITUDE_COMPENSATION,
|
|
7
8
|
CONF_AMBIENT_PRESSURE_COMPENSATION,
|
|
8
9
|
CONF_AMBIENT_PRESSURE_COMPENSATION_SOURCE,
|
|
9
10
|
CONF_AUTOMATIC_SELF_CALIBRATION,
|
|
@@ -49,9 +50,6 @@ PerformForcedCalibrationAction = scd4x_ns.class_(
|
|
|
49
50
|
)
|
|
50
51
|
FactoryResetAction = scd4x_ns.class_("FactoryResetAction", automation.Action)
|
|
51
52
|
|
|
52
|
-
|
|
53
|
-
CONF_ALTITUDE_COMPENSATION = "altitude_compensation"
|
|
54
|
-
|
|
55
53
|
CONFIG_SCHEMA = (
|
|
56
54
|
cv.Schema(
|
|
57
55
|
{
|
|
@@ -36,7 +36,9 @@ def get_sdl_options(value):
|
|
|
36
36
|
if value != "":
|
|
37
37
|
return value
|
|
38
38
|
try:
|
|
39
|
-
return subprocess.check_output(
|
|
39
|
+
return subprocess.check_output(
|
|
40
|
+
["sdl2-config", "--cflags", "--libs"], close_fds=False
|
|
41
|
+
).decode()
|
|
40
42
|
except Exception as e:
|
|
41
43
|
raise cv.Invalid("Unable to run sdl2-config - have you installed sdl2?") from e
|
|
42
44
|
|
|
@@ -6,7 +6,6 @@ namespace esphome {
|
|
|
6
6
|
namespace sdl {
|
|
7
7
|
|
|
8
8
|
void Sdl::setup() {
|
|
9
|
-
ESP_LOGD(TAG, "Starting setup");
|
|
10
9
|
SDL_Init(SDL_INIT_VIDEO);
|
|
11
10
|
this->window_ = SDL_CreateWindow(App.get_name().c_str(), this->pos_x_, this->pos_y_, this->width_, this->height_,
|
|
12
11
|
this->window_options_);
|
|
@@ -15,7 +14,6 @@ void Sdl::setup() {
|
|
|
15
14
|
this->texture_ =
|
|
16
15
|
SDL_CreateTexture(this->renderer_, SDL_PIXELFORMAT_RGB565, SDL_TEXTUREACCESS_STATIC, this->width_, this->height_);
|
|
17
16
|
SDL_SetTextureBlendMode(this->texture_, SDL_BLENDMODE_BLEND);
|
|
18
|
-
ESP_LOGD(TAG, "Setup Complete");
|
|
19
17
|
}
|
|
20
18
|
void Sdl::update() {
|
|
21
19
|
this->do_update_();
|
|
@@ -17,8 +17,6 @@ static const uint16_t SDP3X_STOP_MEAS = 0x3FF9;
|
|
|
17
17
|
void SDP3XComponent::update() { this->read_pressure_(); }
|
|
18
18
|
|
|
19
19
|
void SDP3XComponent::setup() {
|
|
20
|
-
ESP_LOGCONFIG(TAG, "Running setup");
|
|
21
|
-
|
|
22
20
|
if (!this->write_command(SDP3X_STOP_MEAS)) {
|
|
23
21
|
ESP_LOGW(TAG, "Stop failed"); // This sometimes fails for no good reason
|
|
24
22
|
}
|
|
@@ -62,7 +62,6 @@ void MR24HPC1Component::dump_config() {
|
|
|
62
62
|
|
|
63
63
|
// Initialisation functions
|
|
64
64
|
void MR24HPC1Component::setup() {
|
|
65
|
-
ESP_LOGCONFIG(TAG, "Running setup");
|
|
66
65
|
this->check_uart_settings(115200);
|
|
67
66
|
|
|
68
67
|
if (this->custom_mode_number_ != nullptr) {
|
|
@@ -91,7 +90,6 @@ void MR24HPC1Component::setup() {
|
|
|
91
90
|
memset(this->sg_frame_buf_, 0, FRAME_BUF_MAX_SIZE);
|
|
92
91
|
|
|
93
92
|
this->set_interval(8000, [this]() { this->update_(); });
|
|
94
|
-
ESP_LOGCONFIG(TAG, "Set up MR24HPC1 complete");
|
|
95
93
|
}
|
|
96
94
|
|
|
97
95
|
// Timed polling of radar data
|
|
@@ -31,7 +31,6 @@ void MR60FDA2Component::dump_config() {
|
|
|
31
31
|
|
|
32
32
|
// Initialisation functions
|
|
33
33
|
void MR60FDA2Component::setup() {
|
|
34
|
-
ESP_LOGCONFIG(TAG, "Running setup");
|
|
35
34
|
this->check_uart_settings(115200);
|
|
36
35
|
|
|
37
36
|
this->current_frame_locate_ = LOCATE_FRAME_HEADER;
|
|
@@ -43,8 +42,6 @@ void MR60FDA2Component::setup() {
|
|
|
43
42
|
|
|
44
43
|
memset(this->current_frame_buf_, 0, FRAME_BUF_MAX_SIZE);
|
|
45
44
|
memset(this->current_data_buf_, 0, DATA_BUF_MAX_SIZE);
|
|
46
|
-
|
|
47
|
-
ESP_LOGCONFIG(TAG, "Set up MR60FDA2 complete");
|
|
48
45
|
}
|
|
49
46
|
|
|
50
47
|
// main loop
|
|
@@ -118,15 +118,14 @@ async def register_select(var, config, *, options: list[str]):
|
|
|
118
118
|
await setup_select_core_(var, config, options=options)
|
|
119
119
|
|
|
120
120
|
|
|
121
|
-
async def new_select(config,
|
|
122
|
-
var = cg.new_Pvariable(config[CONF_ID])
|
|
121
|
+
async def new_select(config, *args, options: list[str]):
|
|
122
|
+
var = cg.new_Pvariable(config[CONF_ID], *args)
|
|
123
123
|
await register_select(var, config, options=options)
|
|
124
124
|
return var
|
|
125
125
|
|
|
126
126
|
|
|
127
127
|
@coroutine_with_priority(100.0)
|
|
128
128
|
async def to_code(config):
|
|
129
|
-
cg.add_define("USE_SELECT")
|
|
130
129
|
cg.add_global(select_ns.using)
|
|
131
130
|
|
|
132
131
|
|
|
@@ -5,7 +5,7 @@ namespace select {
|
|
|
5
5
|
|
|
6
6
|
void SelectTraits::set_options(std::vector<std::string> options) { this->options_ = std::move(options); }
|
|
7
7
|
|
|
8
|
-
std::vector<std::string> SelectTraits::get_options() const { return this->options_; }
|
|
8
|
+
const std::vector<std::string> &SelectTraits::get_options() const { return this->options_; }
|
|
9
9
|
|
|
10
10
|
} // namespace select
|
|
11
11
|
} // namespace esphome
|
|
@@ -9,7 +9,7 @@ namespace select {
|
|
|
9
9
|
class SelectTraits {
|
|
10
10
|
public:
|
|
11
11
|
void set_options(std::vector<std::string> options);
|
|
12
|
-
std::vector<std::string> get_options() const;
|
|
12
|
+
const std::vector<std::string> &get_options() const;
|
|
13
13
|
|
|
14
14
|
protected:
|
|
15
15
|
std::vector<std::string> options_;
|
|
@@ -8,7 +8,6 @@ namespace sen0321_sensor {
|
|
|
8
8
|
static const char *const TAG = "sen0321_sensor.sensor";
|
|
9
9
|
|
|
10
10
|
void Sen0321Sensor::setup() {
|
|
11
|
-
ESP_LOGCONFIG(TAG, "Running setup");
|
|
12
11
|
if (!this->write_byte(SENSOR_MODE_REGISTER, SENSOR_MODE_AUTO)) {
|
|
13
12
|
ESP_LOGW(TAG, "Error setting measurement mode.");
|
|
14
13
|
this->mark_failed();
|
|
@@ -30,8 +30,6 @@ static const int8_t SEN5X_MIN_INDEX_VALUE = 1 * SEN5X_INDEX_SCALE_FACTOR; //
|
|
|
30
30
|
static const int16_t SEN5X_MAX_INDEX_VALUE = 500 * SEN5X_INDEX_SCALE_FACTOR; // must be adjusted by the scale factor
|
|
31
31
|
|
|
32
32
|
void SEN5XComponent::setup() {
|
|
33
|
-
ESP_LOGCONFIG(TAG, "Running setup");
|
|
34
|
-
|
|
35
33
|
// the sensor needs 1000 ms to enter the idle state
|
|
36
34
|
this->set_timeout(1000, [this]() {
|
|
37
35
|
// Check if measurement is ready before reading the value
|