esphome 2025.7.4__py3-none-any.whl → 2025.8.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- esphome/__main__.py +190 -83
- 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 +475 -116
- esphome/components/atm90e32/atm90e32.h +43 -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 +392 -81
- 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 +203 -60
- 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 +41 -2
- esphome/components/esp32_ble/ble.cpp +14 -10
- 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 +139 -73
- 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 +2 -2
- 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/pipsolar.cpp +54 -42
- esphome/components/pipsolar/pipsolar.h +5 -4
- 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 +6 -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/senseair/senseair.cpp +7 -3
- esphome/components/senseair/senseair.h +11 -0
- 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 +188 -353
- 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 +17 -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 +12 -16
- esphome/const.py +26 -1
- esphome/core/__init__.py +92 -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 +45 -10
- esphome/core/helpers.cpp +8 -15
- esphome/core/helpers.h +60 -6
- esphome/core/lock_free_queue.h +1 -1
- esphome/core/scheduler.cpp +311 -77
- esphome/core/scheduler.h +141 -28
- 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 +16 -108
- esphome/yaml_util.py +7 -5
- {esphome-2025.7.4.dist-info → esphome-2025.8.0.dist-info}/METADATA +13 -14
- {esphome-2025.7.4.dist-info → esphome-2025.8.0.dist-info}/RECORD +757 -677
- 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.0.dist-info}/WHEEL +0 -0
- {esphome-2025.7.4.dist-info → esphome-2025.8.0.dist-info}/entry_points.txt +0 -0
- {esphome-2025.7.4.dist-info → esphome-2025.8.0.dist-info}/licenses/LICENSE +0 -0
- {esphome-2025.7.4.dist-info → esphome-2025.8.0.dist-info}/top_level.txt +0 -0
|
@@ -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
|
|
@@ -53,10 +53,14 @@ void SenseAirComponent::update() {
|
|
|
53
53
|
|
|
54
54
|
this->status_clear_warning();
|
|
55
55
|
const uint8_t length = response[2];
|
|
56
|
-
const uint16_t status = (
|
|
57
|
-
const
|
|
56
|
+
const uint16_t status = encode_uint16(response[3], response[4]);
|
|
57
|
+
const uint16_t ppm = encode_uint16(response[length + 1], response[length + 2]);
|
|
58
58
|
|
|
59
|
-
ESP_LOGD(TAG, "SenseAir Received CO₂=%
|
|
59
|
+
ESP_LOGD(TAG, "SenseAir Received CO₂=%uppm Status=0x%02X", ppm, status);
|
|
60
|
+
if (ppm == 0 && (status & SenseAirStatus::OUT_OF_RANGE_ERROR) != 0) {
|
|
61
|
+
ESP_LOGD(TAG, "Discarding 0 ppm reading with out-of-range status.");
|
|
62
|
+
return;
|
|
63
|
+
}
|
|
60
64
|
if (this->co2_sensor_ != nullptr)
|
|
61
65
|
this->co2_sensor_->publish_state(ppm);
|
|
62
66
|
}
|
|
@@ -8,6 +8,17 @@
|
|
|
8
8
|
namespace esphome {
|
|
9
9
|
namespace senseair {
|
|
10
10
|
|
|
11
|
+
enum SenseAirStatus : uint8_t {
|
|
12
|
+
FATAL_ERROR = 1 << 0,
|
|
13
|
+
OFFSET_ERROR = 1 << 1,
|
|
14
|
+
ALGORITHM_ERROR = 1 << 2,
|
|
15
|
+
OUTPUT_ERROR = 1 << 3,
|
|
16
|
+
SELF_DIAGNOSTIC_ERROR = 1 << 4,
|
|
17
|
+
OUT_OF_RANGE_ERROR = 1 << 5,
|
|
18
|
+
MEMORY_ERROR = 1 << 6,
|
|
19
|
+
RESERVED = 1 << 7
|
|
20
|
+
};
|
|
21
|
+
|
|
11
22
|
class SenseAirComponent : public PollingComponent, public uart::UARTDevice {
|
|
12
23
|
public:
|
|
13
24
|
void set_co2_sensor(sensor::Sensor *co2_sensor) { co2_sensor_ = co2_sensor; }
|
|
@@ -41,6 +41,7 @@ from esphome.const import (
|
|
|
41
41
|
CONF_VALUE,
|
|
42
42
|
CONF_WEB_SERVER,
|
|
43
43
|
CONF_WINDOW_SIZE,
|
|
44
|
+
DEVICE_CLASS_ABSOLUTE_HUMIDITY,
|
|
44
45
|
DEVICE_CLASS_APPARENT_POWER,
|
|
45
46
|
DEVICE_CLASS_AQI,
|
|
46
47
|
DEVICE_CLASS_AREA,
|
|
@@ -107,6 +108,7 @@ from esphome.util import Registry
|
|
|
107
108
|
|
|
108
109
|
CODEOWNERS = ["@esphome/core"]
|
|
109
110
|
DEVICE_CLASSES = [
|
|
111
|
+
DEVICE_CLASS_ABSOLUTE_HUMIDITY,
|
|
110
112
|
DEVICE_CLASS_APPARENT_POWER,
|
|
111
113
|
DEVICE_CLASS_AQI,
|
|
112
114
|
DEVICE_CLASS_AREA,
|
|
@@ -254,6 +256,7 @@ OffsetFilter = sensor_ns.class_("OffsetFilter", Filter)
|
|
|
254
256
|
MultiplyFilter = sensor_ns.class_("MultiplyFilter", Filter)
|
|
255
257
|
FilterOutValueFilter = sensor_ns.class_("FilterOutValueFilter", Filter)
|
|
256
258
|
ThrottleFilter = sensor_ns.class_("ThrottleFilter", Filter)
|
|
259
|
+
ThrottleWithPriorityFilter = sensor_ns.class_("ThrottleWithPriorityFilter", Filter)
|
|
257
260
|
TimeoutFilter = sensor_ns.class_("TimeoutFilter", Filter, cg.Component)
|
|
258
261
|
DebounceFilter = sensor_ns.class_("DebounceFilter", Filter, cg.Component)
|
|
259
262
|
HeartbeatFilter = sensor_ns.class_("HeartbeatFilter", Filter, cg.Component)
|
|
@@ -330,6 +333,7 @@ def sensor_schema(
|
|
|
330
333
|
device_class: str = cv.UNDEFINED,
|
|
331
334
|
state_class: str = cv.UNDEFINED,
|
|
332
335
|
entity_category: str = cv.UNDEFINED,
|
|
336
|
+
filters: list = cv.UNDEFINED,
|
|
333
337
|
) -> cv.Schema:
|
|
334
338
|
schema = {}
|
|
335
339
|
|
|
@@ -344,6 +348,7 @@ def sensor_schema(
|
|
|
344
348
|
(CONF_DEVICE_CLASS, device_class, validate_device_class),
|
|
345
349
|
(CONF_STATE_CLASS, state_class, validate_state_class),
|
|
346
350
|
(CONF_ENTITY_CATEGORY, entity_category, sensor_entity_category),
|
|
351
|
+
(CONF_FILTERS, filters, validate_filters),
|
|
347
352
|
]:
|
|
348
353
|
if default is not cv.UNDEFINED:
|
|
349
354
|
schema[cv.Optional(key, default=default)] = validator
|
|
@@ -591,6 +596,29 @@ async def throttle_filter_to_code(config, filter_id):
|
|
|
591
596
|
return cg.new_Pvariable(filter_id, config)
|
|
592
597
|
|
|
593
598
|
|
|
599
|
+
THROTTLE_WITH_PRIORITY_SCHEMA = cv.maybe_simple_value(
|
|
600
|
+
{
|
|
601
|
+
cv.Required(CONF_TIMEOUT): cv.positive_time_period_milliseconds,
|
|
602
|
+
cv.Optional(CONF_VALUE, default="nan"): cv.Any(
|
|
603
|
+
cv.templatable(cv.float_), [cv.templatable(cv.float_)]
|
|
604
|
+
),
|
|
605
|
+
},
|
|
606
|
+
key=CONF_TIMEOUT,
|
|
607
|
+
)
|
|
608
|
+
|
|
609
|
+
|
|
610
|
+
@FILTER_REGISTRY.register(
|
|
611
|
+
"throttle_with_priority",
|
|
612
|
+
ThrottleWithPriorityFilter,
|
|
613
|
+
THROTTLE_WITH_PRIORITY_SCHEMA,
|
|
614
|
+
)
|
|
615
|
+
async def throttle_with_priority_filter_to_code(config, filter_id):
|
|
616
|
+
if not isinstance(config[CONF_VALUE], list):
|
|
617
|
+
config[CONF_VALUE] = [config[CONF_VALUE]]
|
|
618
|
+
template_ = [await cg.templatable(x, [], float) for x in config[CONF_VALUE]]
|
|
619
|
+
return cg.new_Pvariable(filter_id, config[CONF_TIMEOUT], template_)
|
|
620
|
+
|
|
621
|
+
|
|
594
622
|
@FILTER_REGISTRY.register(
|
|
595
623
|
"heartbeat", HeartbeatFilter, cv.positive_time_period_milliseconds
|
|
596
624
|
)
|
|
@@ -603,7 +631,9 @@ async def heartbeat_filter_to_code(config, filter_id):
|
|
|
603
631
|
TIMEOUT_SCHEMA = cv.maybe_simple_value(
|
|
604
632
|
{
|
|
605
633
|
cv.Required(CONF_TIMEOUT): cv.positive_time_period_milliseconds,
|
|
606
|
-
cv.Optional(CONF_VALUE, default="nan"): cv.
|
|
634
|
+
cv.Optional(CONF_VALUE, default="nan"): cv.Any(
|
|
635
|
+
"last", cv.templatable(cv.float_)
|
|
636
|
+
),
|
|
607
637
|
},
|
|
608
638
|
key=CONF_TIMEOUT,
|
|
609
639
|
)
|
|
@@ -611,8 +641,11 @@ TIMEOUT_SCHEMA = cv.maybe_simple_value(
|
|
|
611
641
|
|
|
612
642
|
@FILTER_REGISTRY.register("timeout", TimeoutFilter, TIMEOUT_SCHEMA)
|
|
613
643
|
async def timeout_filter_to_code(config, filter_id):
|
|
614
|
-
|
|
615
|
-
|
|
644
|
+
if config[CONF_VALUE] == "last":
|
|
645
|
+
var = cg.new_Pvariable(filter_id, config[CONF_TIMEOUT])
|
|
646
|
+
else:
|
|
647
|
+
template_ = await cg.templatable(config[CONF_VALUE], [], float)
|
|
648
|
+
var = cg.new_Pvariable(filter_id, config[CONF_TIMEOUT], template_)
|
|
616
649
|
await cg.register_component(var, {})
|
|
617
650
|
return var
|
|
618
651
|
|
|
@@ -1111,5 +1144,4 @@ def _lstsq(a, b):
|
|
|
1111
1144
|
|
|
1112
1145
|
@coroutine_with_priority(100.0)
|
|
1113
1146
|
async def to_code(config):
|
|
1114
|
-
cg.add_define("USE_SENSOR")
|
|
1115
1147
|
cg.add_global(sensor_ns.using)
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
#include "filter.h"
|
|
2
2
|
#include <cmath>
|
|
3
|
+
#include "esphome/core/application.h"
|
|
3
4
|
#include "esphome/core/hal.h"
|
|
4
5
|
#include "esphome/core/log.h"
|
|
5
6
|
#include "sensor.h"
|
|
@@ -50,6 +51,7 @@ optional<float> MedianFilter::new_value(float value) {
|
|
|
50
51
|
if (!this->queue_.empty()) {
|
|
51
52
|
// Copy queue without NaN values
|
|
52
53
|
std::vector<float> median_queue;
|
|
54
|
+
median_queue.reserve(this->queue_.size());
|
|
53
55
|
for (auto v : this->queue_) {
|
|
54
56
|
if (!std::isnan(v)) {
|
|
55
57
|
median_queue.push_back(v);
|
|
@@ -223,7 +225,7 @@ optional<float> SlidingWindowMovingAverageFilter::new_value(float value) {
|
|
|
223
225
|
|
|
224
226
|
// ExponentialMovingAverageFilter
|
|
225
227
|
ExponentialMovingAverageFilter::ExponentialMovingAverageFilter(float alpha, size_t send_every, size_t send_first_at)
|
|
226
|
-
: send_every_(send_every), send_at_(send_every - send_first_at)
|
|
228
|
+
: alpha_(alpha), send_every_(send_every), send_at_(send_every - send_first_at) {}
|
|
227
229
|
optional<float> ExponentialMovingAverageFilter::new_value(float value) {
|
|
228
230
|
if (!std::isnan(value)) {
|
|
229
231
|
if (this->first_value_) {
|
|
@@ -323,7 +325,7 @@ optional<float> FilterOutValueFilter::new_value(float value) {
|
|
|
323
325
|
// ThrottleFilter
|
|
324
326
|
ThrottleFilter::ThrottleFilter(uint32_t min_time_between_inputs) : min_time_between_inputs_(min_time_between_inputs) {}
|
|
325
327
|
optional<float> ThrottleFilter::new_value(float value) {
|
|
326
|
-
const uint32_t now =
|
|
328
|
+
const uint32_t now = App.get_loop_component_start_time();
|
|
327
329
|
if (this->last_input_ == 0 || now - this->last_input_ >= min_time_between_inputs_) {
|
|
328
330
|
this->last_input_ = now;
|
|
329
331
|
return value;
|
|
@@ -331,21 +333,53 @@ optional<float> ThrottleFilter::new_value(float value) {
|
|
|
331
333
|
return {};
|
|
332
334
|
}
|
|
333
335
|
|
|
336
|
+
// ThrottleWithPriorityFilter
|
|
337
|
+
ThrottleWithPriorityFilter::ThrottleWithPriorityFilter(uint32_t min_time_between_inputs,
|
|
338
|
+
std::vector<TemplatableValue<float>> prioritized_values)
|
|
339
|
+
: min_time_between_inputs_(min_time_between_inputs), prioritized_values_(std::move(prioritized_values)) {}
|
|
340
|
+
|
|
341
|
+
optional<float> ThrottleWithPriorityFilter::new_value(float value) {
|
|
342
|
+
bool is_prioritized_value = false;
|
|
343
|
+
int8_t accuracy = this->parent_->get_accuracy_decimals();
|
|
344
|
+
float accuracy_mult = powf(10.0f, accuracy);
|
|
345
|
+
const uint32_t now = App.get_loop_component_start_time();
|
|
346
|
+
// First, determine if the new value is one of the prioritized values
|
|
347
|
+
for (auto prioritized_value : this->prioritized_values_) {
|
|
348
|
+
if (std::isnan(prioritized_value.value())) {
|
|
349
|
+
if (std::isnan(value)) {
|
|
350
|
+
is_prioritized_value = true;
|
|
351
|
+
break;
|
|
352
|
+
}
|
|
353
|
+
continue;
|
|
354
|
+
}
|
|
355
|
+
float rounded_prioritized_value = roundf(accuracy_mult * prioritized_value.value());
|
|
356
|
+
float rounded_value = roundf(accuracy_mult * value);
|
|
357
|
+
if (rounded_prioritized_value == rounded_value) {
|
|
358
|
+
is_prioritized_value = true;
|
|
359
|
+
break;
|
|
360
|
+
}
|
|
361
|
+
}
|
|
362
|
+
// Finally, determine if the new value should be throttled and pass it through if not
|
|
363
|
+
if (this->last_input_ == 0 || now - this->last_input_ >= min_time_between_inputs_ || is_prioritized_value) {
|
|
364
|
+
this->last_input_ = now;
|
|
365
|
+
return value;
|
|
366
|
+
}
|
|
367
|
+
return {};
|
|
368
|
+
}
|
|
369
|
+
|
|
334
370
|
// DeltaFilter
|
|
335
371
|
DeltaFilter::DeltaFilter(float delta, bool percentage_mode)
|
|
336
|
-
: delta_(delta), current_delta_(delta),
|
|
372
|
+
: delta_(delta), current_delta_(delta), last_value_(NAN), percentage_mode_(percentage_mode) {}
|
|
337
373
|
optional<float> DeltaFilter::new_value(float value) {
|
|
338
374
|
if (std::isnan(value)) {
|
|
339
375
|
if (std::isnan(this->last_value_)) {
|
|
340
376
|
return {};
|
|
341
377
|
} else {
|
|
342
|
-
if (this->percentage_mode_) {
|
|
343
|
-
this->current_delta_ = fabsf(value * this->delta_);
|
|
344
|
-
}
|
|
345
378
|
return this->last_value_ = value;
|
|
346
379
|
}
|
|
347
380
|
}
|
|
348
|
-
|
|
381
|
+
float diff = fabsf(value - this->last_value_);
|
|
382
|
+
if (std::isnan(this->last_value_) || (diff > 0.0f && diff >= this->current_delta_)) {
|
|
349
383
|
if (this->percentage_mode_) {
|
|
350
384
|
this->current_delta_ = fabsf(value * this->delta_);
|
|
351
385
|
}
|
|
@@ -383,12 +417,17 @@ void OrFilter::initialize(Sensor *parent, Filter *next) {
|
|
|
383
417
|
|
|
384
418
|
// TimeoutFilter
|
|
385
419
|
optional<float> TimeoutFilter::new_value(float value) {
|
|
386
|
-
|
|
420
|
+
if (this->value_.has_value()) {
|
|
421
|
+
this->set_timeout("timeout", this->time_period_, [this]() { this->output(this->value_.value().value()); });
|
|
422
|
+
} else {
|
|
423
|
+
this->set_timeout("timeout", this->time_period_, [this, value]() { this->output(value); });
|
|
424
|
+
}
|
|
387
425
|
return value;
|
|
388
426
|
}
|
|
389
427
|
|
|
390
|
-
TimeoutFilter::TimeoutFilter(uint32_t time_period
|
|
391
|
-
|
|
428
|
+
TimeoutFilter::TimeoutFilter(uint32_t time_period) : time_period_(time_period) {}
|
|
429
|
+
TimeoutFilter::TimeoutFilter(uint32_t time_period, const TemplatableValue<float> &new_value)
|
|
430
|
+
: time_period_(time_period), value_(new_value) {}
|
|
392
431
|
float TimeoutFilter::get_setup_priority() const { return setup_priority::HARDWARE; }
|
|
393
432
|
|
|
394
433
|
// DebounceFilter
|
|
@@ -221,11 +221,11 @@ class ExponentialMovingAverageFilter : public Filter {
|
|
|
221
221
|
void set_alpha(float alpha);
|
|
222
222
|
|
|
223
223
|
protected:
|
|
224
|
-
bool first_value_{true};
|
|
225
224
|
float accumulator_{NAN};
|
|
225
|
+
float alpha_;
|
|
226
226
|
size_t send_every_;
|
|
227
227
|
size_t send_at_;
|
|
228
|
-
|
|
228
|
+
bool first_value_{true};
|
|
229
229
|
};
|
|
230
230
|
|
|
231
231
|
/** Simple throttle average filter.
|
|
@@ -243,9 +243,9 @@ class ThrottleAverageFilter : public Filter, public Component {
|
|
|
243
243
|
float get_setup_priority() const override;
|
|
244
244
|
|
|
245
245
|
protected:
|
|
246
|
-
uint32_t time_period_;
|
|
247
246
|
float sum_{0.0f};
|
|
248
247
|
unsigned int n_{0};
|
|
248
|
+
uint32_t time_period_;
|
|
249
249
|
bool have_nan_{false};
|
|
250
250
|
};
|
|
251
251
|
|
|
@@ -314,9 +314,24 @@ class ThrottleFilter : public Filter {
|
|
|
314
314
|
uint32_t min_time_between_inputs_;
|
|
315
315
|
};
|
|
316
316
|
|
|
317
|
+
/// Same as 'throttle' but will immediately publish values contained in `value_to_prioritize`.
|
|
318
|
+
class ThrottleWithPriorityFilter : public Filter {
|
|
319
|
+
public:
|
|
320
|
+
explicit ThrottleWithPriorityFilter(uint32_t min_time_between_inputs,
|
|
321
|
+
std::vector<TemplatableValue<float>> prioritized_values);
|
|
322
|
+
|
|
323
|
+
optional<float> new_value(float value) override;
|
|
324
|
+
|
|
325
|
+
protected:
|
|
326
|
+
uint32_t last_input_{0};
|
|
327
|
+
uint32_t min_time_between_inputs_;
|
|
328
|
+
std::vector<TemplatableValue<float>> prioritized_values_;
|
|
329
|
+
};
|
|
330
|
+
|
|
317
331
|
class TimeoutFilter : public Filter, public Component {
|
|
318
332
|
public:
|
|
319
|
-
explicit TimeoutFilter(uint32_t time_period
|
|
333
|
+
explicit TimeoutFilter(uint32_t time_period);
|
|
334
|
+
explicit TimeoutFilter(uint32_t time_period, const TemplatableValue<float> &new_value);
|
|
320
335
|
|
|
321
336
|
optional<float> new_value(float value) override;
|
|
322
337
|
|
|
@@ -324,7 +339,7 @@ class TimeoutFilter : public Filter, public Component {
|
|
|
324
339
|
|
|
325
340
|
protected:
|
|
326
341
|
uint32_t time_period_;
|
|
327
|
-
TemplatableValue<float
|
|
342
|
+
optional<TemplatableValue<float>> value_;
|
|
328
343
|
};
|
|
329
344
|
|
|
330
345
|
class DebounceFilter : public Filter, public Component {
|
|
@@ -364,8 +379,8 @@ class DeltaFilter : public Filter {
|
|
|
364
379
|
protected:
|
|
365
380
|
float delta_;
|
|
366
381
|
float current_delta_;
|
|
367
|
-
bool percentage_mode_;
|
|
368
382
|
float last_value_{NAN};
|
|
383
|
+
bool percentage_mode_;
|
|
369
384
|
};
|
|
370
385
|
|
|
371
386
|
class OrFilter : public Filter {
|
|
@@ -387,8 +402,8 @@ class OrFilter : public Filter {
|
|
|
387
402
|
};
|
|
388
403
|
|
|
389
404
|
std::vector<Filter *> filters_;
|
|
390
|
-
bool has_value_{false};
|
|
391
405
|
PhiNode phi_;
|
|
406
|
+
bool has_value_{false};
|
|
392
407
|
};
|
|
393
408
|
|
|
394
409
|
class CalibrateLinearFilter : public Filter {
|
|
@@ -96,7 +96,6 @@ void Sensor::clear_filters() {
|
|
|
96
96
|
}
|
|
97
97
|
float Sensor::get_state() const { return this->state; }
|
|
98
98
|
float Sensor::get_raw_state() const { return this->raw_state; }
|
|
99
|
-
std::string Sensor::unique_id() { return ""; }
|
|
100
99
|
|
|
101
100
|
void Sensor::internal_send_state_to_frontend(float state) {
|
|
102
101
|
this->set_has_state(true);
|
|
@@ -28,9 +28,6 @@ namespace sensor {
|
|
|
28
28
|
if (!(obj)->get_icon().empty()) { \
|
|
29
29
|
ESP_LOGCONFIG(TAG, "%s Icon: '%s'", prefix, (obj)->get_icon().c_str()); \
|
|
30
30
|
} \
|
|
31
|
-
if (!(obj)->unique_id().empty()) { \
|
|
32
|
-
ESP_LOGV(TAG, "%s Unique ID: '%s'", prefix, (obj)->unique_id().c_str()); \
|
|
33
|
-
} \
|
|
34
31
|
if ((obj)->get_force_update()) { \
|
|
35
32
|
ESP_LOGV(TAG, "%s Force Update: YES", prefix); \
|
|
36
33
|
} \
|
|
@@ -141,12 +138,6 @@ class Sensor : public EntityBase, public EntityBase_DeviceClass, public EntityBa
|
|
|
141
138
|
*/
|
|
142
139
|
float raw_state;
|
|
143
140
|
|
|
144
|
-
/** Override this method to set the unique ID of this sensor.
|
|
145
|
-
*
|
|
146
|
-
* @deprecated Do not use for new sensors, a suitable unique ID is automatically generated (2023.4).
|
|
147
|
-
*/
|
|
148
|
-
virtual std::string unique_id();
|
|
149
|
-
|
|
150
141
|
void internal_send_state_to_frontend(float state);
|
|
151
142
|
|
|
152
143
|
protected:
|
|
@@ -11,8 +11,6 @@ static const uint16_t SFA30_CMD_START_CONTINUOUS_MEASUREMENTS = 0x0006;
|
|
|
11
11
|
static const uint16_t SFA30_CMD_READ_MEASUREMENT = 0x0327;
|
|
12
12
|
|
|
13
13
|
void SFA30Component::setup() {
|
|
14
|
-
ESP_LOGCONFIG(TAG, "Running setup");
|
|
15
|
-
|
|
16
14
|
// Serial Number identification
|
|
17
15
|
uint16_t raw_device_marking[16];
|
|
18
16
|
if (!this->get_register(SFA30_CMD_GET_DEVICE_MARKING, raw_device_marking, 16, 5)) {
|
|
@@ -34,8 +32,6 @@ void SFA30Component::setup() {
|
|
|
34
32
|
this->mark_failed();
|
|
35
33
|
return;
|
|
36
34
|
}
|
|
37
|
-
|
|
38
|
-
ESP_LOGD(TAG, "Sensor initialized");
|
|
39
35
|
}
|
|
40
36
|
|
|
41
37
|
void SFA30Component::dump_config() {
|
|
@@ -33,8 +33,6 @@ const uint32_t SHORTEST_BASELINE_STORE_INTERVAL = 3600;
|
|
|
33
33
|
const uint32_t MAXIMUM_STORAGE_DIFF = 50;
|
|
34
34
|
|
|
35
35
|
void SGP30Component::setup() {
|
|
36
|
-
ESP_LOGCONFIG(TAG, "Running setup");
|
|
37
|
-
|
|
38
36
|
// Serial Number identification
|
|
39
37
|
uint16_t raw_serial_number[3];
|
|
40
38
|
if (!this->get_register(SGP30_CMD_GET_SERIAL_ID, raw_serial_number, 3)) {
|
|
@@ -9,8 +9,6 @@ namespace sgp4x {
|
|
|
9
9
|
static const char *const TAG = "sgp4x";
|
|
10
10
|
|
|
11
11
|
void SGP4xComponent::setup() {
|
|
12
|
-
ESP_LOGCONFIG(TAG, "Running setup");
|
|
13
|
-
|
|
14
12
|
// Serial Number identification
|
|
15
13
|
uint16_t raw_serial_number[3];
|
|
16
14
|
if (!this->get_register(SGP4X_CMD_GET_SERIAL_ID, raw_serial_number, 3, 1)) {
|
|
@@ -25,7 +25,6 @@ static const uint16_t SHT3XD_COMMAND_POLLING_H = 0x2400;
|
|
|
25
25
|
static const uint16_t SHT3XD_COMMAND_FETCH_DATA = 0xE000;
|
|
26
26
|
|
|
27
27
|
void SHT3XDComponent::setup() {
|
|
28
|
-
ESP_LOGCONFIG(TAG, "Running setup");
|
|
29
28
|
uint16_t raw_serial_number[2];
|
|
30
29
|
if (!this->get_register(SHT3XD_COMMAND_READ_SERIAL_NUMBER_CLOCK_STRETCHING, raw_serial_number, 2)) {
|
|
31
30
|
this->error_code_ = READ_SERIAL_STRETCHED_FAILED;
|
|
@@ -61,7 +60,6 @@ void SHT3XDComponent::dump_config() {
|
|
|
61
60
|
ESP_LOGE(TAG, " Communication with SHT3xD failed!");
|
|
62
61
|
return;
|
|
63
62
|
}
|
|
64
|
-
ESP_LOGD(TAG, " Setup successful");
|
|
65
63
|
ESP_LOGD(TAG, " Serial Number: 0x%08" PRIX32, this->serial_number_);
|
|
66
64
|
ESP_LOGD(TAG, " Heater Enabled: %s", this->heater_enabled_ ? "true" : "false");
|
|
67
65
|
|
|
@@ -171,8 +171,7 @@ async def sim800l_dial_to_code(config, action_id, template_arg, args):
|
|
|
171
171
|
)
|
|
172
172
|
async def sim800l_connect_to_code(config, action_id, template_arg, args):
|
|
173
173
|
paren = await cg.get_variable(config[CONF_ID])
|
|
174
|
-
|
|
175
|
-
return var
|
|
174
|
+
return cg.new_Pvariable(action_id, template_arg, paren)
|
|
176
175
|
|
|
177
176
|
|
|
178
177
|
SIM800L_SEND_USSD_SCHEMA = cv.Schema(
|
|
@@ -201,5 +200,4 @@ async def sim800l_send_ussd_to_code(config, action_id, template_arg, args):
|
|
|
201
200
|
)
|
|
202
201
|
async def sim800l_disconnect_to_code(config, action_id, template_arg, args):
|
|
203
202
|
paren = await cg.get_variable(config[CONF_ID])
|
|
204
|
-
|
|
205
|
-
return var
|
|
203
|
+
return cg.new_Pvariable(action_id, template_arg, paren)
|
|
@@ -20,7 +20,6 @@ static const uint8_t SM2135_RGB = 0x00; // RGB channel
|
|
|
20
20
|
static const uint8_t SM2135_CW = 0x80; // CW channel (Chip default)
|
|
21
21
|
|
|
22
22
|
void SM2135::setup() {
|
|
23
|
-
ESP_LOGCONFIG(TAG, "Running setup");
|
|
24
23
|
this->data_pin_->setup();
|
|
25
24
|
this->data_pin_->digital_write(false);
|
|
26
25
|
this->data_pin_->pin_mode(gpio::FLAG_OUTPUT);
|