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.
- 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
|
@@ -16,373 +16,173 @@ void ComponentIterator::begin(bool include_internal) {
|
|
|
16
16
|
this->at_ = 0;
|
|
17
17
|
this->include_internal_ = include_internal;
|
|
18
18
|
}
|
|
19
|
+
|
|
20
|
+
void ComponentIterator::advance_platform_() {
|
|
21
|
+
this->state_ = static_cast<IteratorState>(static_cast<uint32_t>(this->state_) + 1);
|
|
22
|
+
this->at_ = 0;
|
|
23
|
+
}
|
|
24
|
+
|
|
19
25
|
void ComponentIterator::advance() {
|
|
20
|
-
bool advance_platform = false;
|
|
21
|
-
bool success = true;
|
|
22
26
|
switch (this->state_) {
|
|
23
27
|
case IteratorState::NONE:
|
|
24
28
|
// not started
|
|
25
29
|
return;
|
|
26
30
|
case IteratorState::BEGIN:
|
|
27
31
|
if (this->on_begin()) {
|
|
28
|
-
|
|
29
|
-
} else {
|
|
30
|
-
return;
|
|
32
|
+
advance_platform_();
|
|
31
33
|
}
|
|
32
34
|
break;
|
|
35
|
+
|
|
33
36
|
#ifdef USE_BINARY_SENSOR
|
|
34
37
|
case IteratorState::BINARY_SENSOR:
|
|
35
|
-
|
|
36
|
-
advance_platform = true;
|
|
37
|
-
} else {
|
|
38
|
-
auto *binary_sensor = App.get_binary_sensors()[this->at_];
|
|
39
|
-
if (binary_sensor->is_internal() && !this->include_internal_) {
|
|
40
|
-
success = true;
|
|
41
|
-
break;
|
|
42
|
-
} else {
|
|
43
|
-
success = this->on_binary_sensor(binary_sensor);
|
|
44
|
-
}
|
|
45
|
-
}
|
|
38
|
+
this->process_platform_item_(App.get_binary_sensors(), &ComponentIterator::on_binary_sensor);
|
|
46
39
|
break;
|
|
47
40
|
#endif
|
|
41
|
+
|
|
48
42
|
#ifdef USE_COVER
|
|
49
43
|
case IteratorState::COVER:
|
|
50
|
-
|
|
51
|
-
advance_platform = true;
|
|
52
|
-
} else {
|
|
53
|
-
auto *cover = App.get_covers()[this->at_];
|
|
54
|
-
if (cover->is_internal() && !this->include_internal_) {
|
|
55
|
-
success = true;
|
|
56
|
-
break;
|
|
57
|
-
} else {
|
|
58
|
-
success = this->on_cover(cover);
|
|
59
|
-
}
|
|
60
|
-
}
|
|
44
|
+
this->process_platform_item_(App.get_covers(), &ComponentIterator::on_cover);
|
|
61
45
|
break;
|
|
62
46
|
#endif
|
|
47
|
+
|
|
63
48
|
#ifdef USE_FAN
|
|
64
49
|
case IteratorState::FAN:
|
|
65
|
-
|
|
66
|
-
advance_platform = true;
|
|
67
|
-
} else {
|
|
68
|
-
auto *fan = App.get_fans()[this->at_];
|
|
69
|
-
if (fan->is_internal() && !this->include_internal_) {
|
|
70
|
-
success = true;
|
|
71
|
-
break;
|
|
72
|
-
} else {
|
|
73
|
-
success = this->on_fan(fan);
|
|
74
|
-
}
|
|
75
|
-
}
|
|
50
|
+
this->process_platform_item_(App.get_fans(), &ComponentIterator::on_fan);
|
|
76
51
|
break;
|
|
77
52
|
#endif
|
|
53
|
+
|
|
78
54
|
#ifdef USE_LIGHT
|
|
79
55
|
case IteratorState::LIGHT:
|
|
80
|
-
|
|
81
|
-
advance_platform = true;
|
|
82
|
-
} else {
|
|
83
|
-
auto *light = App.get_lights()[this->at_];
|
|
84
|
-
if (light->is_internal() && !this->include_internal_) {
|
|
85
|
-
success = true;
|
|
86
|
-
break;
|
|
87
|
-
} else {
|
|
88
|
-
success = this->on_light(light);
|
|
89
|
-
}
|
|
90
|
-
}
|
|
56
|
+
this->process_platform_item_(App.get_lights(), &ComponentIterator::on_light);
|
|
91
57
|
break;
|
|
92
58
|
#endif
|
|
59
|
+
|
|
93
60
|
#ifdef USE_SENSOR
|
|
94
61
|
case IteratorState::SENSOR:
|
|
95
|
-
|
|
96
|
-
advance_platform = true;
|
|
97
|
-
} else {
|
|
98
|
-
auto *sensor = App.get_sensors()[this->at_];
|
|
99
|
-
if (sensor->is_internal() && !this->include_internal_) {
|
|
100
|
-
success = true;
|
|
101
|
-
break;
|
|
102
|
-
} else {
|
|
103
|
-
success = this->on_sensor(sensor);
|
|
104
|
-
}
|
|
105
|
-
}
|
|
62
|
+
this->process_platform_item_(App.get_sensors(), &ComponentIterator::on_sensor);
|
|
106
63
|
break;
|
|
107
64
|
#endif
|
|
65
|
+
|
|
108
66
|
#ifdef USE_SWITCH
|
|
109
67
|
case IteratorState::SWITCH:
|
|
110
|
-
|
|
111
|
-
advance_platform = true;
|
|
112
|
-
} else {
|
|
113
|
-
auto *a_switch = App.get_switches()[this->at_];
|
|
114
|
-
if (a_switch->is_internal() && !this->include_internal_) {
|
|
115
|
-
success = true;
|
|
116
|
-
break;
|
|
117
|
-
} else {
|
|
118
|
-
success = this->on_switch(a_switch);
|
|
119
|
-
}
|
|
120
|
-
}
|
|
68
|
+
this->process_platform_item_(App.get_switches(), &ComponentIterator::on_switch);
|
|
121
69
|
break;
|
|
122
70
|
#endif
|
|
71
|
+
|
|
123
72
|
#ifdef USE_BUTTON
|
|
124
73
|
case IteratorState::BUTTON:
|
|
125
|
-
|
|
126
|
-
advance_platform = true;
|
|
127
|
-
} else {
|
|
128
|
-
auto *button = App.get_buttons()[this->at_];
|
|
129
|
-
if (button->is_internal() && !this->include_internal_) {
|
|
130
|
-
success = true;
|
|
131
|
-
break;
|
|
132
|
-
} else {
|
|
133
|
-
success = this->on_button(button);
|
|
134
|
-
}
|
|
135
|
-
}
|
|
74
|
+
this->process_platform_item_(App.get_buttons(), &ComponentIterator::on_button);
|
|
136
75
|
break;
|
|
137
76
|
#endif
|
|
77
|
+
|
|
138
78
|
#ifdef USE_TEXT_SENSOR
|
|
139
79
|
case IteratorState::TEXT_SENSOR:
|
|
140
|
-
|
|
141
|
-
advance_platform = true;
|
|
142
|
-
} else {
|
|
143
|
-
auto *text_sensor = App.get_text_sensors()[this->at_];
|
|
144
|
-
if (text_sensor->is_internal() && !this->include_internal_) {
|
|
145
|
-
success = true;
|
|
146
|
-
break;
|
|
147
|
-
} else {
|
|
148
|
-
success = this->on_text_sensor(text_sensor);
|
|
149
|
-
}
|
|
150
|
-
}
|
|
80
|
+
this->process_platform_item_(App.get_text_sensors(), &ComponentIterator::on_text_sensor);
|
|
151
81
|
break;
|
|
152
82
|
#endif
|
|
83
|
+
|
|
153
84
|
#ifdef USE_API_SERVICES
|
|
154
|
-
case IteratorState
|
|
155
|
-
|
|
156
|
-
advance_platform = true;
|
|
157
|
-
} else {
|
|
158
|
-
auto *service = api::global_api_server->get_user_services()[this->at_];
|
|
159
|
-
success = this->on_service(service);
|
|
160
|
-
}
|
|
85
|
+
case IteratorState::SERVICE:
|
|
86
|
+
this->process_platform_item_(api::global_api_server->get_user_services(), &ComponentIterator::on_service);
|
|
161
87
|
break;
|
|
162
88
|
#endif
|
|
89
|
+
|
|
163
90
|
#ifdef USE_CAMERA
|
|
164
|
-
case IteratorState::CAMERA:
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
if (camera::Camera::instance()->is_internal() && !this->include_internal_) {
|
|
169
|
-
advance_platform = success = true;
|
|
170
|
-
break;
|
|
171
|
-
} else {
|
|
172
|
-
advance_platform = success = this->on_camera(camera::Camera::instance());
|
|
173
|
-
}
|
|
91
|
+
case IteratorState::CAMERA: {
|
|
92
|
+
camera::Camera *camera_instance = camera::Camera::instance();
|
|
93
|
+
if (camera_instance != nullptr && (!camera_instance->is_internal() || this->include_internal_)) {
|
|
94
|
+
this->on_camera(camera_instance);
|
|
174
95
|
}
|
|
175
|
-
|
|
96
|
+
advance_platform_();
|
|
97
|
+
} break;
|
|
176
98
|
#endif
|
|
99
|
+
|
|
177
100
|
#ifdef USE_CLIMATE
|
|
178
101
|
case IteratorState::CLIMATE:
|
|
179
|
-
|
|
180
|
-
advance_platform = true;
|
|
181
|
-
} else {
|
|
182
|
-
auto *climate = App.get_climates()[this->at_];
|
|
183
|
-
if (climate->is_internal() && !this->include_internal_) {
|
|
184
|
-
success = true;
|
|
185
|
-
break;
|
|
186
|
-
} else {
|
|
187
|
-
success = this->on_climate(climate);
|
|
188
|
-
}
|
|
189
|
-
}
|
|
102
|
+
this->process_platform_item_(App.get_climates(), &ComponentIterator::on_climate);
|
|
190
103
|
break;
|
|
191
104
|
#endif
|
|
105
|
+
|
|
192
106
|
#ifdef USE_NUMBER
|
|
193
107
|
case IteratorState::NUMBER:
|
|
194
|
-
|
|
195
|
-
advance_platform = true;
|
|
196
|
-
} else {
|
|
197
|
-
auto *number = App.get_numbers()[this->at_];
|
|
198
|
-
if (number->is_internal() && !this->include_internal_) {
|
|
199
|
-
success = true;
|
|
200
|
-
break;
|
|
201
|
-
} else {
|
|
202
|
-
success = this->on_number(number);
|
|
203
|
-
}
|
|
204
|
-
}
|
|
108
|
+
this->process_platform_item_(App.get_numbers(), &ComponentIterator::on_number);
|
|
205
109
|
break;
|
|
206
110
|
#endif
|
|
111
|
+
|
|
207
112
|
#ifdef USE_DATETIME_DATE
|
|
208
113
|
case IteratorState::DATETIME_DATE:
|
|
209
|
-
|
|
210
|
-
advance_platform = true;
|
|
211
|
-
} else {
|
|
212
|
-
auto *date = App.get_dates()[this->at_];
|
|
213
|
-
if (date->is_internal() && !this->include_internal_) {
|
|
214
|
-
success = true;
|
|
215
|
-
break;
|
|
216
|
-
} else {
|
|
217
|
-
success = this->on_date(date);
|
|
218
|
-
}
|
|
219
|
-
}
|
|
114
|
+
this->process_platform_item_(App.get_dates(), &ComponentIterator::on_date);
|
|
220
115
|
break;
|
|
221
116
|
#endif
|
|
117
|
+
|
|
222
118
|
#ifdef USE_DATETIME_TIME
|
|
223
119
|
case IteratorState::DATETIME_TIME:
|
|
224
|
-
|
|
225
|
-
advance_platform = true;
|
|
226
|
-
} else {
|
|
227
|
-
auto *time = App.get_times()[this->at_];
|
|
228
|
-
if (time->is_internal() && !this->include_internal_) {
|
|
229
|
-
success = true;
|
|
230
|
-
break;
|
|
231
|
-
} else {
|
|
232
|
-
success = this->on_time(time);
|
|
233
|
-
}
|
|
234
|
-
}
|
|
120
|
+
this->process_platform_item_(App.get_times(), &ComponentIterator::on_time);
|
|
235
121
|
break;
|
|
236
122
|
#endif
|
|
123
|
+
|
|
237
124
|
#ifdef USE_DATETIME_DATETIME
|
|
238
125
|
case IteratorState::DATETIME_DATETIME:
|
|
239
|
-
|
|
240
|
-
advance_platform = true;
|
|
241
|
-
} else {
|
|
242
|
-
auto *datetime = App.get_datetimes()[this->at_];
|
|
243
|
-
if (datetime->is_internal() && !this->include_internal_) {
|
|
244
|
-
success = true;
|
|
245
|
-
break;
|
|
246
|
-
} else {
|
|
247
|
-
success = this->on_datetime(datetime);
|
|
248
|
-
}
|
|
249
|
-
}
|
|
126
|
+
this->process_platform_item_(App.get_datetimes(), &ComponentIterator::on_datetime);
|
|
250
127
|
break;
|
|
251
128
|
#endif
|
|
129
|
+
|
|
252
130
|
#ifdef USE_TEXT
|
|
253
131
|
case IteratorState::TEXT:
|
|
254
|
-
|
|
255
|
-
advance_platform = true;
|
|
256
|
-
} else {
|
|
257
|
-
auto *text = App.get_texts()[this->at_];
|
|
258
|
-
if (text->is_internal() && !this->include_internal_) {
|
|
259
|
-
success = true;
|
|
260
|
-
break;
|
|
261
|
-
} else {
|
|
262
|
-
success = this->on_text(text);
|
|
263
|
-
}
|
|
264
|
-
}
|
|
132
|
+
this->process_platform_item_(App.get_texts(), &ComponentIterator::on_text);
|
|
265
133
|
break;
|
|
266
134
|
#endif
|
|
135
|
+
|
|
267
136
|
#ifdef USE_SELECT
|
|
268
137
|
case IteratorState::SELECT:
|
|
269
|
-
|
|
270
|
-
advance_platform = true;
|
|
271
|
-
} else {
|
|
272
|
-
auto *select = App.get_selects()[this->at_];
|
|
273
|
-
if (select->is_internal() && !this->include_internal_) {
|
|
274
|
-
success = true;
|
|
275
|
-
break;
|
|
276
|
-
} else {
|
|
277
|
-
success = this->on_select(select);
|
|
278
|
-
}
|
|
279
|
-
}
|
|
138
|
+
this->process_platform_item_(App.get_selects(), &ComponentIterator::on_select);
|
|
280
139
|
break;
|
|
281
140
|
#endif
|
|
141
|
+
|
|
282
142
|
#ifdef USE_LOCK
|
|
283
143
|
case IteratorState::LOCK:
|
|
284
|
-
|
|
285
|
-
advance_platform = true;
|
|
286
|
-
} else {
|
|
287
|
-
auto *a_lock = App.get_locks()[this->at_];
|
|
288
|
-
if (a_lock->is_internal() && !this->include_internal_) {
|
|
289
|
-
success = true;
|
|
290
|
-
break;
|
|
291
|
-
} else {
|
|
292
|
-
success = this->on_lock(a_lock);
|
|
293
|
-
}
|
|
294
|
-
}
|
|
144
|
+
this->process_platform_item_(App.get_locks(), &ComponentIterator::on_lock);
|
|
295
145
|
break;
|
|
296
146
|
#endif
|
|
147
|
+
|
|
297
148
|
#ifdef USE_VALVE
|
|
298
149
|
case IteratorState::VALVE:
|
|
299
|
-
|
|
300
|
-
advance_platform = true;
|
|
301
|
-
} else {
|
|
302
|
-
auto *valve = App.get_valves()[this->at_];
|
|
303
|
-
if (valve->is_internal() && !this->include_internal_) {
|
|
304
|
-
success = true;
|
|
305
|
-
break;
|
|
306
|
-
} else {
|
|
307
|
-
success = this->on_valve(valve);
|
|
308
|
-
}
|
|
309
|
-
}
|
|
150
|
+
this->process_platform_item_(App.get_valves(), &ComponentIterator::on_valve);
|
|
310
151
|
break;
|
|
311
152
|
#endif
|
|
153
|
+
|
|
312
154
|
#ifdef USE_MEDIA_PLAYER
|
|
313
155
|
case IteratorState::MEDIA_PLAYER:
|
|
314
|
-
|
|
315
|
-
advance_platform = true;
|
|
316
|
-
} else {
|
|
317
|
-
auto *media_player = App.get_media_players()[this->at_];
|
|
318
|
-
if (media_player->is_internal() && !this->include_internal_) {
|
|
319
|
-
success = true;
|
|
320
|
-
break;
|
|
321
|
-
} else {
|
|
322
|
-
success = this->on_media_player(media_player);
|
|
323
|
-
}
|
|
324
|
-
}
|
|
156
|
+
this->process_platform_item_(App.get_media_players(), &ComponentIterator::on_media_player);
|
|
325
157
|
break;
|
|
326
158
|
#endif
|
|
159
|
+
|
|
327
160
|
#ifdef USE_ALARM_CONTROL_PANEL
|
|
328
161
|
case IteratorState::ALARM_CONTROL_PANEL:
|
|
329
|
-
|
|
330
|
-
advance_platform = true;
|
|
331
|
-
} else {
|
|
332
|
-
auto *a_alarm_control_panel = App.get_alarm_control_panels()[this->at_];
|
|
333
|
-
if (a_alarm_control_panel->is_internal() && !this->include_internal_) {
|
|
334
|
-
success = true;
|
|
335
|
-
break;
|
|
336
|
-
} else {
|
|
337
|
-
success = this->on_alarm_control_panel(a_alarm_control_panel);
|
|
338
|
-
}
|
|
339
|
-
}
|
|
162
|
+
this->process_platform_item_(App.get_alarm_control_panels(), &ComponentIterator::on_alarm_control_panel);
|
|
340
163
|
break;
|
|
341
164
|
#endif
|
|
165
|
+
|
|
342
166
|
#ifdef USE_EVENT
|
|
343
167
|
case IteratorState::EVENT:
|
|
344
|
-
|
|
345
|
-
advance_platform = true;
|
|
346
|
-
} else {
|
|
347
|
-
auto *event = App.get_events()[this->at_];
|
|
348
|
-
if (event->is_internal() && !this->include_internal_) {
|
|
349
|
-
success = true;
|
|
350
|
-
break;
|
|
351
|
-
} else {
|
|
352
|
-
success = this->on_event(event);
|
|
353
|
-
}
|
|
354
|
-
}
|
|
168
|
+
this->process_platform_item_(App.get_events(), &ComponentIterator::on_event);
|
|
355
169
|
break;
|
|
356
170
|
#endif
|
|
171
|
+
|
|
357
172
|
#ifdef USE_UPDATE
|
|
358
173
|
case IteratorState::UPDATE:
|
|
359
|
-
|
|
360
|
-
advance_platform = true;
|
|
361
|
-
} else {
|
|
362
|
-
auto *update = App.get_updates()[this->at_];
|
|
363
|
-
if (update->is_internal() && !this->include_internal_) {
|
|
364
|
-
success = true;
|
|
365
|
-
break;
|
|
366
|
-
} else {
|
|
367
|
-
success = this->on_update(update);
|
|
368
|
-
}
|
|
369
|
-
}
|
|
174
|
+
this->process_platform_item_(App.get_updates(), &ComponentIterator::on_update);
|
|
370
175
|
break;
|
|
371
176
|
#endif
|
|
177
|
+
|
|
372
178
|
case IteratorState::MAX:
|
|
373
179
|
if (this->on_end()) {
|
|
374
180
|
this->state_ = IteratorState::NONE;
|
|
375
181
|
}
|
|
376
182
|
return;
|
|
377
183
|
}
|
|
378
|
-
|
|
379
|
-
if (advance_platform) {
|
|
380
|
-
this->state_ = static_cast<IteratorState>(static_cast<uint8_t>(this->state_) + 1);
|
|
381
|
-
this->at_ = 0;
|
|
382
|
-
} else if (success) {
|
|
383
|
-
this->at_++;
|
|
384
|
-
}
|
|
385
184
|
}
|
|
185
|
+
|
|
386
186
|
bool ComponentIterator::on_end() { return true; }
|
|
387
187
|
bool ComponentIterator::on_begin() { return true; }
|
|
388
188
|
#ifdef USE_API_SERVICES
|
|
@@ -171,6 +171,21 @@ class ComponentIterator {
|
|
|
171
171
|
} state_{IteratorState::NONE};
|
|
172
172
|
uint16_t at_{0}; // Supports up to 65,535 entities per type
|
|
173
173
|
bool include_internal_{false};
|
|
174
|
+
|
|
175
|
+
template<typename Container>
|
|
176
|
+
void process_platform_item_(const Container &items,
|
|
177
|
+
bool (ComponentIterator::*on_item)(typename Container::value_type)) {
|
|
178
|
+
if (this->at_ >= items.size()) {
|
|
179
|
+
this->advance_platform_();
|
|
180
|
+
} else {
|
|
181
|
+
typename Container::value_type item = items[this->at_];
|
|
182
|
+
if ((item->is_internal() && !this->include_internal_) || (this->*on_item)(item)) {
|
|
183
|
+
this->at_++;
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
|
|
188
|
+
void advance_platform_();
|
|
174
189
|
};
|
|
175
190
|
|
|
176
191
|
} // namespace esphome
|
esphome/core/config.py
CHANGED
|
@@ -317,7 +317,7 @@ def preload_core_config(config, result) -> str:
|
|
|
317
317
|
|
|
318
318
|
target_platforms = []
|
|
319
319
|
|
|
320
|
-
for domain
|
|
320
|
+
for domain in config:
|
|
321
321
|
if domain.startswith("."):
|
|
322
322
|
continue
|
|
323
323
|
if _is_target_platform(domain):
|
|
@@ -419,10 +419,27 @@ async def _add_automations(config):
|
|
|
419
419
|
await automation.build_automation(trigger, [], conf)
|
|
420
420
|
|
|
421
421
|
|
|
422
|
+
# Datetime component has special subtypes that need additional defines
|
|
423
|
+
DATETIME_SUBTYPES = {"date", "time", "datetime"}
|
|
424
|
+
|
|
425
|
+
|
|
422
426
|
@coroutine_with_priority(-100.0)
|
|
423
|
-
async def
|
|
427
|
+
async def _add_platform_defines() -> None:
|
|
428
|
+
# Generate compile-time defines for platforms that have actual entities
|
|
429
|
+
# Only add USE_* and count defines when there are entities
|
|
424
430
|
for platform_name, count in sorted(CORE.platform_counts.items()):
|
|
425
|
-
|
|
431
|
+
if count <= 0:
|
|
432
|
+
continue
|
|
433
|
+
|
|
434
|
+
define_name = f"ESPHOME_ENTITY_{platform_name.upper()}_COUNT"
|
|
435
|
+
cg.add_define(define_name, count)
|
|
436
|
+
|
|
437
|
+
# Datetime subtypes only use USE_DATETIME_* defines
|
|
438
|
+
if platform_name in DATETIME_SUBTYPES:
|
|
439
|
+
cg.add_define(f"USE_DATETIME_{platform_name.upper()}")
|
|
440
|
+
else:
|
|
441
|
+
# Regular platforms use USE_* defines
|
|
442
|
+
cg.add_define(f"USE_{platform_name.upper()}")
|
|
426
443
|
|
|
427
444
|
|
|
428
445
|
@coroutine_with_priority(100.0)
|
|
@@ -442,12 +459,10 @@ async def to_code(config: ConfigType) -> None:
|
|
|
442
459
|
config[CONF_NAME_ADD_MAC_SUFFIX],
|
|
443
460
|
)
|
|
444
461
|
)
|
|
445
|
-
#
|
|
446
|
-
cg.
|
|
447
|
-
cg.RawStatement(f"App.reserve_components({len(CORE.component_ids)});"),
|
|
448
|
-
)
|
|
462
|
+
# Define component count for static allocation
|
|
463
|
+
cg.add_define("ESPHOME_COMPONENT_COUNT", len(CORE.component_ids))
|
|
449
464
|
|
|
450
|
-
CORE.add_job(
|
|
465
|
+
CORE.add_job(_add_platform_defines)
|
|
451
466
|
|
|
452
467
|
CORE.add_job(_add_automations, config)
|
|
453
468
|
|
|
@@ -514,8 +529,8 @@ async def to_code(config: ConfigType) -> None:
|
|
|
514
529
|
all_areas.extend(config[CONF_AREAS])
|
|
515
530
|
|
|
516
531
|
if all_areas:
|
|
517
|
-
cg.add(cg.RawStatement(f"App.reserve_area({len(all_areas)});"))
|
|
518
532
|
cg.add_define("USE_AREAS")
|
|
533
|
+
cg.add_define("ESPHOME_AREA_COUNT", len(all_areas))
|
|
519
534
|
|
|
520
535
|
for area_conf in all_areas:
|
|
521
536
|
area_id: core.ID = area_conf[CONF_ID]
|
|
@@ -532,9 +547,9 @@ async def to_code(config: ConfigType) -> None:
|
|
|
532
547
|
if not devices:
|
|
533
548
|
return
|
|
534
549
|
|
|
535
|
-
#
|
|
536
|
-
cg.add(cg.RawStatement(f"App.reserve_device({len(devices)});"))
|
|
550
|
+
# Define device count for static allocation
|
|
537
551
|
cg.add_define("USE_DEVICES")
|
|
552
|
+
cg.add_define("ESPHOME_DEVICE_COUNT", len(devices))
|
|
538
553
|
|
|
539
554
|
# Process each device
|
|
540
555
|
for dev_conf in devices:
|
esphome/core/defines.h
CHANGED
|
@@ -15,6 +15,9 @@
|
|
|
15
15
|
#define ESPHOME_VARIANT "ESP32"
|
|
16
16
|
#define ESPHOME_DEBUG_SCHEDULER
|
|
17
17
|
|
|
18
|
+
// Default threading model for static analysis (ESP32 is multi-threaded with atomics)
|
|
19
|
+
#define ESPHOME_THREAD_MULTI_ATOMICS
|
|
20
|
+
|
|
18
21
|
// logger
|
|
19
22
|
#define ESPHOME_LOG_LEVEL ESPHOME_LOG_LEVEL_VERY_VERBOSE
|
|
20
23
|
|
|
@@ -106,6 +109,8 @@
|
|
|
106
109
|
#define USE_API
|
|
107
110
|
#define USE_API_CLIENT_CONNECTED_TRIGGER
|
|
108
111
|
#define USE_API_CLIENT_DISCONNECTED_TRIGGER
|
|
112
|
+
#define USE_API_HOMEASSISTANT_SERVICES
|
|
113
|
+
#define USE_API_HOMEASSISTANT_STATES
|
|
109
114
|
#define USE_API_NOISE
|
|
110
115
|
#define USE_API_PLAINTEXT
|
|
111
116
|
#define USE_API_SERVICES
|
|
@@ -142,10 +147,15 @@
|
|
|
142
147
|
#define USE_ESPHOME_TASK_LOG_BUFFER
|
|
143
148
|
|
|
144
149
|
#define USE_BLUETOOTH_PROXY
|
|
150
|
+
#define BLUETOOTH_PROXY_MAX_CONNECTIONS 3
|
|
151
|
+
#define BLUETOOTH_PROXY_ADVERTISEMENT_BATCH_SIZE 16
|
|
145
152
|
#define USE_CAPTIVE_PORTAL
|
|
146
153
|
#define USE_ESP32_BLE
|
|
147
154
|
#define USE_ESP32_BLE_CLIENT
|
|
155
|
+
#define USE_ESP32_BLE_DEVICE
|
|
148
156
|
#define USE_ESP32_BLE_SERVER
|
|
157
|
+
#define USE_ESP32_BLE_UUID
|
|
158
|
+
#define USE_ESP32_BLE_ADVERTISING
|
|
149
159
|
#define USE_I2C
|
|
150
160
|
#define USE_IMPROV
|
|
151
161
|
#define USE_MICROPHONE
|
|
@@ -156,18 +166,18 @@
|
|
|
156
166
|
#define USE_SPI
|
|
157
167
|
#define USE_VOICE_ASSISTANT
|
|
158
168
|
#define USE_WEBSERVER
|
|
169
|
+
#define USE_WEBSERVER_AUTH
|
|
159
170
|
#define USE_WEBSERVER_OTA
|
|
160
171
|
#define USE_WEBSERVER_PORT 80 // NOLINT
|
|
161
172
|
#define USE_WEBSERVER_SORTING
|
|
162
173
|
#define USE_WIFI_11KV_SUPPORT
|
|
163
174
|
|
|
164
175
|
#ifdef USE_ARDUINO
|
|
165
|
-
#define USE_ARDUINO_VERSION_CODE VERSION_CODE(3,
|
|
176
|
+
#define USE_ARDUINO_VERSION_CODE VERSION_CODE(3, 2, 1)
|
|
166
177
|
#define USE_ETHERNET
|
|
167
178
|
#endif
|
|
168
179
|
|
|
169
180
|
#ifdef USE_ESP_IDF
|
|
170
|
-
#define USE_ESP_IDF_VERSION_CODE VERSION_CODE(5, 3, 2)
|
|
171
181
|
#define USE_MICRO_WAKE_WORD
|
|
172
182
|
#define USE_MICRO_WAKE_WORD_VAD
|
|
173
183
|
#if defined(USE_ESP32_VARIANT_ESP32C6) || defined(USE_ESP32_VARIANT_ESP32H2)
|
|
@@ -204,6 +214,7 @@
|
|
|
204
214
|
{}
|
|
205
215
|
|
|
206
216
|
#define USE_WEBSERVER
|
|
217
|
+
#define USE_WEBSERVER_AUTH
|
|
207
218
|
#define USE_WEBSERVER_PORT 80 // NOLINT
|
|
208
219
|
#endif
|
|
209
220
|
|
|
@@ -220,6 +231,7 @@
|
|
|
220
231
|
#define USE_SOCKET_IMPL_LWIP_SOCKETS
|
|
221
232
|
#define USE_SOCKET_SELECT_SUPPORT
|
|
222
233
|
#define USE_WEBSERVER
|
|
234
|
+
#define USE_WEBSERVER_AUTH
|
|
223
235
|
#define USE_WEBSERVER_PORT 80 // NOLINT
|
|
224
236
|
#endif
|
|
225
237
|
|
|
@@ -233,3 +245,29 @@
|
|
|
233
245
|
// #define USE_BSEC2 // Requires a library with proprietary license
|
|
234
246
|
|
|
235
247
|
#define USE_DASHBOARD_IMPORT
|
|
248
|
+
|
|
249
|
+
// Default counts for static analysis
|
|
250
|
+
#define ESPHOME_COMPONENT_COUNT 50
|
|
251
|
+
#define ESPHOME_DEVICE_COUNT 10
|
|
252
|
+
#define ESPHOME_AREA_COUNT 10
|
|
253
|
+
#define ESPHOME_ENTITY_ALARM_CONTROL_PANEL_COUNT 1
|
|
254
|
+
#define ESPHOME_ENTITY_BINARY_SENSOR_COUNT 1
|
|
255
|
+
#define ESPHOME_ENTITY_BUTTON_COUNT 1
|
|
256
|
+
#define ESPHOME_ENTITY_CLIMATE_COUNT 1
|
|
257
|
+
#define ESPHOME_ENTITY_COVER_COUNT 1
|
|
258
|
+
#define ESPHOME_ENTITY_DATE_COUNT 1
|
|
259
|
+
#define ESPHOME_ENTITY_DATETIME_COUNT 1
|
|
260
|
+
#define ESPHOME_ENTITY_EVENT_COUNT 1
|
|
261
|
+
#define ESPHOME_ENTITY_FAN_COUNT 1
|
|
262
|
+
#define ESPHOME_ENTITY_LIGHT_COUNT 1
|
|
263
|
+
#define ESPHOME_ENTITY_LOCK_COUNT 1
|
|
264
|
+
#define ESPHOME_ENTITY_MEDIA_PLAYER_COUNT 1
|
|
265
|
+
#define ESPHOME_ENTITY_NUMBER_COUNT 1
|
|
266
|
+
#define ESPHOME_ENTITY_SELECT_COUNT 1
|
|
267
|
+
#define ESPHOME_ENTITY_SENSOR_COUNT 1
|
|
268
|
+
#define ESPHOME_ENTITY_SWITCH_COUNT 1
|
|
269
|
+
#define ESPHOME_ENTITY_TEXT_COUNT 1
|
|
270
|
+
#define ESPHOME_ENTITY_TEXT_SENSOR_COUNT 1
|
|
271
|
+
#define ESPHOME_ENTITY_TIME_COUNT 1
|
|
272
|
+
#define ESPHOME_ENTITY_UPDATE_COUNT 1
|
|
273
|
+
#define ESPHOME_ENTITY_VALVE_COUNT 1
|
esphome/core/entity_base.h
CHANGED
|
@@ -54,6 +54,14 @@ class EntityBase {
|
|
|
54
54
|
// Get/set this entity's icon
|
|
55
55
|
std::string get_icon() const;
|
|
56
56
|
void set_icon(const char *icon);
|
|
57
|
+
StringRef get_icon_ref() const {
|
|
58
|
+
static constexpr auto EMPTY_STRING = StringRef::from_lit("");
|
|
59
|
+
#ifdef USE_ENTITY_ICON
|
|
60
|
+
return this->icon_c_str_ == nullptr ? EMPTY_STRING : StringRef(this->icon_c_str_);
|
|
61
|
+
#else
|
|
62
|
+
return EMPTY_STRING;
|
|
63
|
+
#endif
|
|
64
|
+
}
|
|
57
65
|
|
|
58
66
|
#ifdef USE_DEVICES
|
|
59
67
|
// Get/set this entity's device id
|
|
@@ -105,6 +113,11 @@ class EntityBase_DeviceClass { // NOLINT(readability-identifier-naming)
|
|
|
105
113
|
std::string get_device_class();
|
|
106
114
|
/// Manually set the device class.
|
|
107
115
|
void set_device_class(const char *device_class);
|
|
116
|
+
/// Get the device class as StringRef
|
|
117
|
+
StringRef get_device_class_ref() const {
|
|
118
|
+
static constexpr auto EMPTY_STRING = StringRef::from_lit("");
|
|
119
|
+
return this->device_class_ == nullptr ? EMPTY_STRING : StringRef(this->device_class_);
|
|
120
|
+
}
|
|
108
121
|
|
|
109
122
|
protected:
|
|
110
123
|
const char *device_class_{nullptr}; ///< Device class override
|
|
@@ -116,6 +129,11 @@ class EntityBase_UnitOfMeasurement { // NOLINT(readability-identifier-naming)
|
|
|
116
129
|
std::string get_unit_of_measurement();
|
|
117
130
|
/// Manually set the unit of measurement.
|
|
118
131
|
void set_unit_of_measurement(const char *unit_of_measurement);
|
|
132
|
+
/// Get the unit of measurement as StringRef
|
|
133
|
+
StringRef get_unit_of_measurement_ref() const {
|
|
134
|
+
static constexpr auto EMPTY_STRING = StringRef::from_lit("");
|
|
135
|
+
return this->unit_of_measurement_ == nullptr ? EMPTY_STRING : StringRef(this->unit_of_measurement_);
|
|
136
|
+
}
|
|
119
137
|
|
|
120
138
|
protected:
|
|
121
139
|
const char *unit_of_measurement_{nullptr}; ///< Unit of measurement override
|