esphome 2025.7.4__py3-none-any.whl → 2025.8.0b1__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of esphome might be problematic. Click here for more details.
- esphome/__main__.py +189 -82
- esphome/automation.py +2 -4
- esphome/build_gen/__init__.py +0 -0
- esphome/build_gen/platformio.py +102 -0
- esphome/components/a4988/a4988.cpp +0 -1
- esphome/components/absolute_humidity/absolute_humidity.cpp +0 -2
- esphome/components/absolute_humidity/sensor.py +2 -2
- esphome/components/adc/__init__.py +123 -85
- esphome/components/adc/adc_sensor.h +98 -35
- esphome/components/adc/adc_sensor_common.cpp +10 -4
- esphome/components/adc/adc_sensor_esp32.cpp +291 -123
- esphome/components/adc/adc_sensor_esp8266.cpp +1 -4
- esphome/components/adc/adc_sensor_libretiny.cpp +1 -2
- esphome/components/adc/adc_sensor_rp2040.cpp +1 -2
- esphome/components/adc/adc_sensor_zephyr.cpp +207 -0
- esphome/components/adc/sensor.py +61 -27
- esphome/components/adc128s102/adc128s102.cpp +1 -4
- esphome/components/ade7880/sensor.py +75 -49
- esphome/components/ads1115/ads1115.cpp +0 -1
- esphome/components/ads1118/ads1118.cpp +0 -1
- esphome/components/ags10/ags10.cpp +0 -4
- esphome/components/aht10/aht10.cpp +0 -4
- esphome/components/aic3204/aic3204.cpp +0 -2
- esphome/components/airthings_wave_plus/__init__.py +1 -1
- esphome/components/airthings_wave_plus/airthings_wave_plus.cpp +22 -4
- esphome/components/airthings_wave_plus/airthings_wave_plus.h +10 -1
- esphome/components/airthings_wave_plus/sensor.py +55 -28
- esphome/components/alarm_control_panel/__init__.py +4 -9
- esphome/components/am2315c/am2315c.cpp +0 -2
- esphome/components/am2320/am2320.cpp +0 -1
- esphome/components/animation/__init__.py +14 -11
- esphome/components/apds9306/apds9306.cpp +0 -4
- esphome/components/apds9960/apds9960.cpp +0 -1
- esphome/components/api/__init__.py +29 -4
- esphome/components/api/api_connection.cpp +378 -401
- esphome/components/api/api_connection.h +112 -56
- esphome/components/api/api_frame_helper.cpp +69 -896
- esphome/components/api/api_frame_helper.h +31 -126
- esphome/components/api/api_frame_helper_noise.cpp +583 -0
- esphome/components/api/api_frame_helper_noise.h +68 -0
- esphome/components/api/api_frame_helper_plaintext.cpp +290 -0
- esphome/components/api/api_frame_helper_plaintext.h +53 -0
- esphome/components/api/api_noise_context.h +2 -4
- esphome/components/api/api_pb2.cpp +1601 -1808
- esphome/components/api/api_pb2.h +367 -323
- esphome/components/api/api_pb2_dump.cpp +1137 -3466
- esphome/components/api/api_pb2_includes.h +34 -0
- esphome/components/api/api_pb2_service.cpp +94 -105
- esphome/components/api/api_pb2_service.h +27 -16
- esphome/components/api/api_server.cpp +18 -17
- esphome/components/api/api_server.h +8 -5
- esphome/components/api/client.py +16 -8
- esphome/components/api/custom_api_device.h +68 -14
- esphome/components/api/homeassistant_service.h +24 -19
- esphome/components/api/list_entities.cpp +3 -5
- esphome/components/api/list_entities.h +2 -4
- esphome/components/api/proto.cpp +3 -5
- esphome/components/api/proto.h +239 -274
- esphome/components/api/subscribe_state.cpp +2 -4
- esphome/components/api/subscribe_state.h +2 -4
- esphome/components/api/user_services.cpp +2 -4
- esphome/components/api/user_services.h +8 -8
- esphome/components/as3935/as3935.cpp +0 -2
- esphome/components/as3935_spi/as3935_spi.cpp +0 -2
- esphome/components/as5600/__init__.py +1 -1
- esphome/components/as5600/as5600.cpp +0 -2
- esphome/components/as5600/sensor/__init__.py +0 -1
- esphome/components/as7341/as7341.cpp +0 -1
- esphome/components/async_tcp/__init__.py +1 -1
- esphome/components/at581x/at581x.cpp +1 -1
- esphome/components/atm90e26/atm90e26.cpp +0 -1
- esphome/components/atm90e32/atm90e32.cpp +488 -118
- esphome/components/atm90e32/atm90e32.h +44 -5
- esphome/components/audio/audio.h +2 -2
- esphome/components/axs15231/touchscreen/axs15231_touchscreen.cpp +0 -2
- esphome/components/beken_spi_led_strip/led_strip.cpp +0 -2
- esphome/components/bh1750/bh1750.cpp +0 -1
- esphome/components/binary_sensor/__init__.py +14 -12
- esphome/components/ble_client/__init__.py +4 -7
- esphome/components/bluetooth_proxy/__init__.py +40 -3
- esphome/components/bluetooth_proxy/bluetooth_connection.cpp +387 -82
- esphome/components/bluetooth_proxy/bluetooth_connection.h +16 -5
- esphome/components/bluetooth_proxy/bluetooth_proxy.cpp +102 -311
- esphome/components/bluetooth_proxy/bluetooth_proxy.h +30 -14
- esphome/components/bme280_base/bme280_base.cpp +15 -16
- esphome/components/bme680/bme680.cpp +2 -3
- esphome/components/bme680_bsec/bme680_bsec.cpp +0 -2
- esphome/components/bme68x_bsec2/bme68x_bsec2.cpp +0 -2
- esphome/components/bmi160/bmi160.cpp +0 -1
- esphome/components/bmp085/bmp085.cpp +0 -1
- esphome/components/bmp280_base/bmp280_base.cpp +13 -14
- esphome/components/bmp3xx_base/bmp3xx_base.cpp +0 -1
- esphome/components/bmp581/bmp581.cpp +0 -2
- esphome/components/bp1658cj/bp1658cj.cpp +0 -1
- esphome/components/bp5758d/bp5758d.cpp +0 -1
- esphome/components/button/__init__.py +0 -1
- esphome/components/canbus/__init__.py +2 -3
- esphome/components/canbus/canbus.cpp +0 -1
- esphome/components/cap1188/cap1188.cpp +0 -2
- esphome/components/captive_portal/__init__.py +1 -1
- esphome/components/cd74hc4067/cd74hc4067.cpp +0 -2
- esphome/components/ch422g/ch422g.cpp +0 -1
- esphome/components/chsc6x/chsc6x_touchscreen.cpp +0 -3
- esphome/components/climate/__init__.py +0 -1
- esphome/components/climate/climate_traits.h +24 -0
- esphome/components/cm1106/cm1106.cpp +0 -1
- esphome/components/const/__init__.py +6 -0
- esphome/components/cover/__init__.py +0 -1
- esphome/components/cover/cover.cpp +9 -13
- esphome/components/cs5460a/cs5460a.cpp +0 -2
- esphome/components/cse7761/cse7761.cpp +0 -1
- esphome/components/cst226/touchscreen/cst226_touchscreen.cpp +0 -2
- esphome/components/cst816/touchscreen/cst816_touchscreen.cpp +0 -2
- esphome/components/dac7678/dac7678_output.cpp +0 -2
- esphome/components/dallas_temp/dallas_temp.cpp +0 -1
- esphome/components/datetime/__init__.py +0 -2
- esphome/components/debug/__init__.py +15 -1
- esphome/components/debug/debug_zephyr.cpp +281 -0
- esphome/components/debug/sensor.py +2 -1
- esphome/components/deep_sleep/deep_sleep_component.cpp +0 -1
- esphome/components/deep_sleep/deep_sleep_esp32.cpp +20 -1
- esphome/components/dfrobot_sen0395/__init__.py +1 -2
- esphome/components/dht/dht.cpp +0 -1
- esphome/components/dht12/dht12.cpp +0 -1
- esphome/components/display/__init__.py +16 -3
- esphome/components/display_menu_base/__init__.py +1 -1
- esphome/components/dps310/dps310.cpp +0 -2
- esphome/components/ds1307/ds1307.cpp +0 -1
- esphome/components/ds2484/ds2484.cpp +0 -1
- esphome/components/duty_cycle/duty_cycle_sensor.cpp +0 -1
- esphome/components/ee895/ee895.cpp +0 -1
- esphome/components/ektf2232/touchscreen/ektf2232.cpp +0 -1
- esphome/components/emc2101/emc2101.cpp +0 -2
- esphome/components/ens160_base/ens160_base.cpp +0 -2
- esphome/components/ens210/ens210.cpp +0 -1
- esphome/components/es7210/es7210.cpp +0 -2
- esphome/components/es7243e/es7243e.cpp +0 -2
- esphome/components/es8156/es8156.cpp +0 -2
- esphome/components/es8311/es8311.cpp +0 -2
- esphome/components/es8388/es8388.cpp +0 -2
- esphome/components/esp32/__init__.py +199 -58
- esphome/components/esp32/boards.py +17 -0
- esphome/components/esp32/gpio.cpp +0 -1
- esphome/components/esp32/gpio.py +1 -2
- esphome/components/esp32/gpio_esp32_h2.py +2 -7
- esphome/components/esp32/gpio_esp32_p4.py +2 -7
- esphome/components/esp32/post_build.py.script +112 -61
- esphome/components/esp32_ble/__init__.py +40 -2
- esphome/components/esp32_ble/ble.cpp +12 -8
- esphome/components/esp32_ble/ble.h +18 -18
- esphome/components/esp32_ble/ble_advertising.cpp +5 -5
- esphome/components/esp32_ble/ble_advertising.h +7 -5
- esphome/components/esp32_ble/ble_event.h +2 -4
- esphome/components/esp32_ble/ble_scan_result.h +2 -4
- esphome/components/esp32_ble/ble_uuid.cpp +5 -5
- esphome/components/esp32_ble/ble_uuid.h +6 -5
- esphome/components/esp32_ble_beacon/__init__.py +4 -0
- esphome/components/esp32_ble_client/__init__.py +1 -1
- esphome/components/esp32_ble_client/ble_characteristic.cpp +4 -4
- esphome/components/esp32_ble_client/ble_characteristic.h +6 -4
- esphome/components/esp32_ble_client/ble_client_base.cpp +155 -104
- esphome/components/esp32_ble_client/ble_client_base.h +17 -6
- esphome/components/esp32_ble_client/ble_descriptor.h +6 -4
- esphome/components/esp32_ble_client/ble_service.cpp +4 -4
- esphome/components/esp32_ble_client/ble_service.h +6 -4
- esphome/components/esp32_ble_server/__init__.py +15 -12
- esphome/components/esp32_ble_tracker/__init__.py +79 -11
- esphome/components/esp32_ble_tracker/automation.h +4 -4
- esphome/components/esp32_ble_tracker/esp32_ble_tracker.cpp +264 -261
- esphome/components/esp32_ble_tracker/esp32_ble_tracker.h +103 -37
- esphome/components/esp32_camera/__init__.py +13 -1
- esphome/components/esp32_camera/esp32_camera.cpp +7 -2
- esphome/components/esp32_camera/esp32_camera.h +1 -0
- esphome/components/esp32_dac/esp32_dac.cpp +3 -19
- esphome/components/esp32_dac/esp32_dac.h +4 -8
- esphome/components/esp32_rmt_led_strip/led_strip.cpp +1 -6
- esphome/components/esp32_rmt_led_strip/light.py +1 -1
- esphome/components/esp32_touch/__init__.py +2 -3
- esphome/components/esp32_touch/esp32_touch.h +9 -6
- esphome/components/esp32_touch/esp32_touch_common.cpp +2 -0
- esphome/components/esp32_touch/esp32_touch_v1.cpp +7 -9
- esphome/components/esp32_touch/esp32_touch_v2.cpp +10 -6
- esphome/components/esp8266/__init__.py +3 -1
- esphome/components/esp8266_pwm/esp8266_pwm.cpp +0 -1
- esphome/components/esphome/ota/__init__.py +1 -2
- esphome/components/esphome/ota/ota_esphome.cpp +150 -77
- esphome/components/esphome/ota/ota_esphome.h +8 -1
- esphome/components/espnow/__init__.py +309 -0
- esphome/components/espnow/automation.h +175 -0
- esphome/components/espnow/espnow_component.cpp +468 -0
- esphome/components/espnow/espnow_component.h +183 -0
- esphome/components/espnow/espnow_err.h +19 -0
- esphome/components/espnow/espnow_packet.h +166 -0
- esphome/components/ethernet/__init__.py +7 -1
- esphome/components/ethernet/esp_eth_phy_jl1101.c +5 -0
- esphome/components/ethernet/ethernet_component.cpp +0 -1
- esphome/components/ethernet/ethernet_component.h +4 -0
- esphome/components/ethernet_info/ethernet_info_text_sensor.h +0 -3
- esphome/components/event/__init__.py +0 -1
- esphome/components/factory_reset/__init__.py +92 -0
- esphome/components/factory_reset/factory_reset.cpp +76 -0
- esphome/components/factory_reset/factory_reset.h +43 -0
- esphome/components/fan/__init__.py +0 -1
- esphome/components/fan/fan_traits.h +16 -0
- esphome/components/fastled_base/fastled_light.cpp +0 -1
- esphome/components/fastled_spi/light.py +1 -3
- esphome/components/fingerprint_grow/fingerprint_grow.cpp +0 -2
- esphome/components/font/__init__.py +9 -1
- esphome/components/fs3000/fs3000.cpp +0 -2
- esphome/components/ft5x06/touchscreen/ft5x06_touchscreen.cpp +0 -2
- esphome/components/ft63x6/ft63x6.cpp +0 -1
- esphome/components/gdk101/gdk101.cpp +0 -1
- esphome/components/gl_r01_i2c/gl_r01_i2c.cpp +0 -1
- esphome/components/gl_r01_i2c/sensor.py +1 -1
- esphome/components/gpio/one_wire/gpio_one_wire.cpp +0 -1
- esphome/components/gpio/switch/gpio_switch.cpp +0 -2
- esphome/components/gpio_expander/cached_gpio.h +24 -15
- esphome/components/gps/__init__.py +6 -2
- esphome/components/gps/gps.cpp +50 -49
- esphome/components/gps/gps.h +4 -8
- esphome/components/gps/time/gps_time.cpp +3 -9
- esphome/components/gps/time/gps_time.h +4 -7
- esphome/components/graph/__init__.py +1 -1
- esphome/components/grove_gas_mc_v2/grove_gas_mc_v2.cpp +0 -1
- esphome/components/grove_tb6612fng/grove_tb6612fng.cpp +0 -1
- esphome/components/gt911/touchscreen/gt911_touchscreen.cpp +21 -12
- esphome/components/gt911/touchscreen/gt911_touchscreen.h +26 -2
- esphome/components/haier/climate.py +5 -10
- esphome/components/haier/haier_base.cpp +0 -1
- esphome/components/hbridge/switch/hbridge_switch.cpp +0 -2
- esphome/components/hdc1080/hdc1080.cpp +0 -2
- esphome/components/heatpumpir/climate.py +2 -2
- esphome/components/hlw8012/hlw8012.cpp +0 -1
- esphome/components/hm3301/hm3301.cpp +0 -1
- esphome/components/hmc5883l/hmc5883l.cpp +0 -1
- esphome/components/homeassistant/__init__.py +1 -0
- esphome/components/homeassistant/number/__init__.py +1 -0
- esphome/components/homeassistant/number/homeassistant_number.cpp +11 -7
- esphome/components/homeassistant/switch/__init__.py +1 -0
- esphome/components/homeassistant/switch/homeassistant_switch.cpp +9 -5
- esphome/components/honeywellabp/honeywellabp.cpp +1 -4
- esphome/components/host/__init__.py +2 -0
- esphome/components/hte501/hte501.cpp +0 -1
- esphome/components/http_request/__init__.py +2 -3
- esphome/components/http_request/http_request_idf.cpp +2 -2
- esphome/components/htu21d/htu21d.cpp +0 -2
- esphome/components/htu31d/htu31d.cpp +0 -2
- esphome/components/hx711/hx711.cpp +0 -1
- esphome/components/hydreon_rgxx/hydreon_rgxx.cpp +0 -1
- esphome/components/hydreon_rgxx/sensor.py +4 -5
- esphome/components/i2c/i2c_bus.h +1 -1
- esphome/components/i2c/i2c_bus_arduino.cpp +1 -2
- esphome/components/i2c/i2c_bus_esp_idf.cpp +192 -17
- esphome/components/i2c/i2c_bus_esp_idf.h +11 -1
- esphome/components/i2s_audio/__init__.py +6 -5
- esphome/components/i2s_audio/i2s_audio.cpp +0 -2
- esphome/components/i2s_audio/media_player/i2s_audio_media_player.cpp +1 -4
- esphome/components/i2s_audio/microphone/__init__.py +4 -6
- esphome/components/i2s_audio/microphone/i2s_audio_microphone.cpp +46 -19
- esphome/components/i2s_audio/microphone/i2s_audio_microphone.h +4 -3
- esphome/components/i2s_audio/speaker/i2s_audio_speaker.cpp +273 -269
- esphome/components/i2s_audio/speaker/i2s_audio_speaker.h +19 -34
- esphome/components/ili9xxx/display.py +4 -3
- esphome/components/ili9xxx/ili9xxx_display.cpp +0 -2
- esphome/components/image/__init__.py +123 -92
- esphome/components/improv_serial/__init__.py +7 -8
- esphome/components/ina219/ina219.cpp +0 -1
- esphome/components/ina226/ina226.cpp +0 -2
- esphome/components/ina260/ina260.cpp +0 -2
- esphome/components/ina2xx_base/__init__.py +2 -5
- esphome/components/ina2xx_base/ina2xx_base.cpp +0 -2
- esphome/components/ina3221/ina3221.cpp +0 -1
- esphome/components/internal_temperature/internal_temperature.cpp +0 -2
- esphome/components/interval/interval.h +5 -9
- esphome/components/json/__init__.py +1 -1
- esphome/components/kmeteriso/kmeteriso.cpp +0 -2
- esphome/components/lc709203f/lc709203f.cpp +0 -2
- esphome/components/lcd_gpio/display.py +1 -3
- esphome/components/lcd_gpio/gpio_lcd_display.cpp +0 -1
- esphome/components/lcd_pcf8574/pcf8574_display.cpp +0 -1
- esphome/components/ld2410/__init__.py +4 -6
- esphome/components/ld2410/binary_sensor.py +4 -0
- esphome/components/ld2410/ld2410.cpp +56 -100
- esphome/components/ld2410/ld2410.h +17 -15
- esphome/components/ld2410/sensor.py +24 -10
- esphome/components/ld2412/__init__.py +46 -0
- esphome/components/ld2412/binary_sensor.py +70 -0
- esphome/components/ld2412/button/__init__.py +74 -0
- esphome/components/ld2412/button/factory_reset_button.cpp +9 -0
- esphome/components/ld2412/button/factory_reset_button.h +18 -0
- esphome/components/ld2412/button/query_button.cpp +9 -0
- esphome/components/ld2412/button/query_button.h +18 -0
- esphome/components/ld2412/button/restart_button.cpp +9 -0
- esphome/components/ld2412/button/restart_button.h +18 -0
- esphome/components/ld2412/button/start_dynamic_background_correction_button.cpp +11 -0
- esphome/components/ld2412/button/start_dynamic_background_correction_button.h +18 -0
- esphome/components/ld2412/ld2412.cpp +861 -0
- esphome/components/ld2412/ld2412.h +141 -0
- esphome/components/ld2412/number/__init__.py +126 -0
- esphome/components/ld2412/number/gate_threshold_number.cpp +14 -0
- esphome/components/ld2412/number/gate_threshold_number.h +19 -0
- esphome/components/ld2412/number/light_threshold_number.cpp +12 -0
- esphome/components/ld2412/number/light_threshold_number.h +18 -0
- esphome/components/ld2412/number/max_distance_timeout_number.cpp +12 -0
- esphome/components/ld2412/number/max_distance_timeout_number.h +18 -0
- esphome/components/ld2412/select/__init__.py +82 -0
- esphome/components/ld2412/select/baud_rate_select.cpp +12 -0
- esphome/components/ld2412/select/baud_rate_select.h +18 -0
- esphome/components/ld2412/select/distance_resolution_select.cpp +12 -0
- esphome/components/ld2412/select/distance_resolution_select.h +18 -0
- esphome/components/ld2412/select/light_out_control_select.cpp +12 -0
- esphome/components/ld2412/select/light_out_control_select.h +18 -0
- esphome/components/ld2412/sensor.py +124 -0
- esphome/components/ld2412/switch/__init__.py +45 -0
- esphome/components/ld2412/switch/bluetooth_switch.cpp +12 -0
- esphome/components/ld2412/switch/bluetooth_switch.h +18 -0
- esphome/components/ld2412/switch/engineering_mode_switch.cpp +12 -0
- esphome/components/ld2412/switch/engineering_mode_switch.h +18 -0
- esphome/components/ld2412/text_sensor.py +34 -0
- esphome/components/ld2420/ld2420.cpp +0 -1
- esphome/components/ld2450/__init__.py +3 -4
- esphome/components/ld2450/binary_sensor.py +3 -0
- esphome/components/ld2450/ld2450.cpp +77 -165
- esphome/components/ld2450/ld2450.h +26 -54
- esphome/components/ld2450/sensor.py +120 -6
- esphome/components/ld2450/text_sensor.py +5 -4
- esphome/components/ld24xx/__init__.py +1 -0
- esphome/components/ld24xx/ld24xx.h +65 -0
- esphome/components/ledc/ledc_output.cpp +0 -1
- esphome/components/libretiny/__init__.py +2 -0
- esphome/components/light/__init__.py +0 -1
- esphome/components/light/effects.py +70 -45
- esphome/components/light/light_call.cpp +101 -66
- esphome/components/light/light_color_values.h +16 -11
- esphome/components/light/light_json_schema.cpp +46 -44
- esphome/components/light/light_state.cpp +8 -11
- esphome/components/light/light_traits.h +17 -0
- esphome/components/lightwaverf/lightwaverf.cpp +0 -2
- esphome/components/lilygo_t5_47/touchscreen/lilygo_t5_47_touchscreen.cpp +0 -1
- esphome/components/lock/__init__.py +0 -1
- esphome/components/logger/__init__.py +31 -9
- esphome/components/logger/logger.cpp +12 -7
- esphome/components/logger/logger.h +25 -14
- esphome/components/logger/logger_esp32.cpp +2 -7
- esphome/components/logger/logger_esp8266.cpp +2 -4
- esphome/components/logger/logger_host.cpp +2 -4
- esphome/components/logger/logger_libretiny.cpp +2 -4
- esphome/components/logger/logger_rp2040.cpp +2 -4
- esphome/components/logger/logger_zephyr.cpp +86 -0
- esphome/components/logger/select/logger_level_select.cpp +2 -4
- esphome/components/logger/select/logger_level_select.h +2 -4
- esphome/components/logger/task_log_buffer.cpp +2 -4
- esphome/components/logger/task_log_buffer.h +2 -4
- esphome/components/lps22/sensor.py +5 -5
- esphome/components/ltr390/ltr390.cpp +0 -2
- esphome/components/ltr501/ltr501.cpp +0 -1
- esphome/components/ltr_als_ps/ltr_als_ps.cpp +0 -1
- esphome/components/lvgl/__init__.py +14 -13
- esphome/components/lvgl/automation.py +2 -4
- esphome/components/lvgl/defines.py +0 -2
- esphome/components/lvgl/helpers.py +1 -1
- esphome/components/lvgl/lv_validation.py +7 -4
- esphome/components/lvgl/lvgl_esphome.cpp +2 -3
- esphome/components/lvgl/styles.py +2 -2
- esphome/components/lvgl/types.py +1 -1
- esphome/components/lvgl/widgets/__init__.py +2 -2
- esphome/components/lvgl/widgets/arc.py +14 -11
- esphome/components/lvgl/widgets/buttonmatrix.py +1 -1
- esphome/components/lvgl/widgets/qrcode.py +7 -7
- esphome/components/lvgl/widgets/spinner.py +6 -6
- esphome/components/lvgl/widgets/switch.py +2 -2
- esphome/components/lvgl/widgets/tabview.py +3 -3
- esphome/components/lvgl/widgets/tileview.py +15 -7
- esphome/components/m5stack_8angle/m5stack_8angle.cpp +0 -1
- esphome/components/matrix_keypad/__init__.py +4 -3
- esphome/components/max17043/max17043.cpp +0 -2
- esphome/components/max31855/max31855.cpp +1 -4
- esphome/components/max31856/max31856.cpp +0 -4
- esphome/components/max31865/max31865.cpp +0 -1
- esphome/components/max44009/max44009.cpp +0 -1
- esphome/components/max6675/max6675.cpp +1 -4
- esphome/components/max6956/max6956.cpp +0 -1
- esphome/components/max7219/max7219.cpp +0 -1
- esphome/components/max7219digit/display.py +1 -1
- esphome/components/max7219digit/max7219digit.cpp +0 -1
- esphome/components/max9611/max9611.cpp +0 -1
- esphome/components/mcp23008/__init__.py +1 -1
- esphome/components/mcp23008/mcp23008.cpp +0 -1
- esphome/components/mcp23016/mcp23016.cpp +0 -1
- esphome/components/mcp23017/__init__.py +1 -1
- esphome/components/mcp23017/mcp23017.cpp +0 -1
- esphome/components/mcp23s08/__init__.py +1 -1
- esphome/components/mcp23s08/mcp23s08.cpp +0 -1
- esphome/components/mcp23s17/__init__.py +1 -1
- esphome/components/mcp23s17/mcp23s17.cpp +0 -1
- esphome/components/mcp23x08_base/__init__.py +2 -0
- esphome/components/mcp23x08_base/mcp23x08_base.cpp +9 -7
- esphome/components/mcp23x08_base/mcp23x08_base.h +9 -4
- esphome/components/mcp23x17_base/__init__.py +2 -0
- esphome/components/mcp23x17_base/mcp23x17_base.cpp +20 -7
- esphome/components/mcp23x17_base/mcp23x17_base.h +9 -4
- esphome/components/mcp23xxx_base/__init__.py +11 -5
- esphome/components/mcp23xxx_base/mcp23xxx_base.cpp +15 -12
- esphome/components/mcp23xxx_base/mcp23xxx_base.h +8 -7
- esphome/components/mcp3008/mcp3008.cpp +1 -4
- esphome/components/mcp3204/mcp3204.cpp +1 -4
- esphome/components/mcp4461/mcp4461.cpp +0 -1
- esphome/components/mcp4725/mcp4725.cpp +0 -1
- esphome/components/mcp4728/mcp4728.cpp +0 -1
- esphome/components/mcp9600/mcp9600.cpp +0 -2
- esphome/components/mcp9808/mcp9808.cpp +0 -2
- esphome/components/mdns/__init__.py +3 -0
- esphome/components/mdns/mdns_component.cpp +2 -0
- esphome/components/mdns/mdns_component.h +4 -0
- esphome/components/media_player/__init__.py +40 -0
- esphome/components/media_player/automation.h +16 -0
- esphome/components/media_player/media_player.cpp +13 -0
- esphome/components/media_player/media_player.h +50 -3
- esphome/components/micro_wake_word/micro_wake_word.cpp +0 -3
- esphome/components/mics_4514/mics_4514.cpp +1 -6
- esphome/components/midea/ir_transmitter.h +4 -4
- esphome/components/mipi/__init__.py +416 -0
- esphome/components/mipi_dsi/__init__.py +5 -0
- esphome/components/mipi_dsi/display.py +233 -0
- esphome/components/mipi_dsi/mipi_dsi.cpp +379 -0
- esphome/components/mipi_dsi/mipi_dsi.h +123 -0
- esphome/components/mipi_dsi/models/__init__.py +0 -0
- esphome/components/mipi_dsi/models/guition.py +38 -0
- esphome/components/mipi_dsi/models/m5stack.py +57 -0
- esphome/components/mipi_dsi/models/waveshare.py +105 -0
- esphome/components/mipi_rgb/models/lilygo.py +0 -0
- esphome/components/mipi_spi/__init__.py +0 -9
- esphome/components/mipi_spi/display.py +220 -256
- esphome/components/mipi_spi/mipi_spi.cpp +1 -485
- esphome/components/mipi_spi/mipi_spi.h +556 -108
- esphome/components/mipi_spi/models/__init__.py +0 -65
- esphome/components/mipi_spi/models/adafruit.py +30 -0
- esphome/components/mipi_spi/models/amoled.py +41 -5
- esphome/components/mipi_spi/models/ili.py +5 -5
- esphome/components/mipi_spi/models/jc.py +1 -3
- esphome/components/mipi_spi/models/lilygo.py +1 -1
- esphome/components/mipi_spi/models/waveshare.py +16 -1
- esphome/components/mixer/speaker/__init__.py +4 -5
- esphome/components/mlx90393/sensor.py +7 -5
- esphome/components/mlx90393/sensor_mlx90393.cpp +0 -1
- esphome/components/mlx90614/mlx90614.cpp +0 -1
- esphome/components/mmc5603/mmc5603.cpp +0 -1
- esphome/components/mmc5983/mmc5983.cpp +0 -2
- esphome/components/mpl3115a2/mpl3115a2.cpp +0 -2
- esphome/components/mpr121/__init__.py +7 -6
- esphome/components/mpr121/mpr121.cpp +0 -1
- esphome/components/mpu6050/mpu6050.cpp +0 -1
- esphome/components/mpu6886/mpu6886.cpp +0 -1
- esphome/components/mqtt/__init__.py +1 -2
- esphome/components/mqtt/mqtt_button.cpp +1 -1
- esphome/components/mqtt/mqtt_client.cpp +0 -1
- esphome/components/mqtt/mqtt_component.cpp +8 -14
- esphome/components/mqtt/mqtt_component.h +0 -7
- esphome/components/mqtt/mqtt_sensor.cpp +0 -1
- esphome/components/mqtt/mqtt_sensor.h +0 -1
- esphome/components/mqtt/mqtt_text_sensor.cpp +0 -1
- esphome/components/mqtt/mqtt_text_sensor.h +0 -1
- esphome/components/ms5611/ms5611.cpp +0 -1
- esphome/components/ms8607/ms8607.cpp +0 -1
- esphome/components/msa3xx/msa3xx.cpp +0 -2
- esphome/components/my9231/my9231.cpp +0 -2
- esphome/components/nau7802/nau7802.cpp +0 -1
- esphome/components/neopixelbus/light.py +3 -0
- esphome/components/network/util.cpp +29 -0
- esphome/components/nextion/nextion.cpp +0 -1
- esphome/components/nfc/binary_sensor/{binary_sensor.cpp → nfc_binary_sensor.cpp} +1 -1
- esphome/components/npi19/npi19.cpp +0 -2
- esphome/components/nrf52/__init__.py +223 -0
- esphome/components/nrf52/boards.py +34 -0
- esphome/components/nrf52/const.py +18 -0
- esphome/components/nrf52/gpio.py +79 -0
- esphome/components/number/__init__.py +2 -1
- esphome/components/one_wire/__init__.py +1 -2
- esphome/components/one_wire/one_wire.cpp +0 -2
- esphome/components/one_wire/one_wire.h +0 -2
- esphome/components/opentherm/hub.cpp +0 -1
- esphome/components/opentherm/number/__init__.py +2 -2
- esphome/components/openthread/__init__.py +2 -3
- esphome/components/openthread/openthread.cpp +30 -13
- esphome/components/openthread/openthread.h +3 -0
- esphome/components/openthread/openthread_esp.cpp +3 -1
- esphome/components/opt3001/sensor.py +2 -6
- esphome/components/output/__init__.py +38 -0
- esphome/components/output/automation.h +24 -0
- esphome/components/output/switch/output_switch.cpp +0 -2
- esphome/components/packages/__init__.py +1 -2
- esphome/components/packet_transport/__init__.py +4 -3
- esphome/components/pca6416a/pca6416a.cpp +0 -1
- esphome/components/pca9554/pca9554.cpp +0 -1
- esphome/components/pca9685/pca9685_output.cpp +0 -2
- esphome/components/pcf85063/pcf85063.cpp +0 -1
- esphome/components/pcf8563/pcf8563.cpp +0 -1
- esphome/components/pcf8574/pcf8574.cpp +0 -1
- esphome/components/pi4ioe5v6408/pi4ioe5v6408.cpp +0 -1
- esphome/components/pipsolar/sensor/__init__.py +1 -1
- esphome/components/pm2005/pm2005.cpp +0 -1
- esphome/components/pmsa003i/pmsa003i.cpp +0 -2
- esphome/components/pmwcs3/sensor.py +1 -2
- esphome/components/pn532/pn532.cpp +0 -2
- esphome/components/pn532_spi/pn532_spi.cpp +0 -2
- esphome/components/power_supply/power_supply.cpp +7 -10
- esphome/components/power_supply/power_supply.h +1 -1
- esphome/components/psram/__init__.py +2 -1
- esphome/components/pulse_counter/pulse_counter_sensor.cpp +0 -1
- esphome/components/pulse_counter/sensor.py +9 -6
- esphome/components/pylontech/pylontech.cpp +0 -1
- esphome/components/qmc5883l/qmc5883l.cpp +0 -1
- esphome/components/qmp6988/qmp6988.cpp +0 -2
- esphome/components/qspi_dbi/display.py +2 -3
- esphome/components/qspi_dbi/qspi_dbi.cpp +0 -2
- esphome/components/qwiic_pir/binary_sensor.py +2 -3
- esphome/components/qwiic_pir/qwiic_pir.cpp +0 -2
- esphome/components/rc522/rc522.cpp +9 -31
- esphome/components/rc522_spi/rc522_spi.cpp +0 -1
- esphome/components/remote_base/__init__.py +5 -6
- esphome/components/remote_receiver/remote_receiver_esp32.cpp +0 -1
- esphome/components/remote_receiver/remote_receiver_esp8266.cpp +0 -1
- esphome/components/remote_receiver/remote_receiver_libretiny.cpp +0 -1
- esphome/components/remote_transmitter/__init__.py +26 -0
- esphome/components/remote_transmitter/automation.h +18 -0
- esphome/components/remote_transmitter/remote_transmitter.h +2 -1
- esphome/components/remote_transmitter/remote_transmitter_esp32.cpp +0 -1
- esphome/components/remote_transmitter/remote_transmitter_esp8266.cpp +2 -0
- esphome/components/remote_transmitter/remote_transmitter_libretiny.cpp +2 -0
- esphome/components/resampler/speaker/__init__.py +4 -5
- esphome/components/rf_bridge/__init__.py +4 -8
- esphome/components/rotary_encoder/rotary_encoder.cpp +0 -2
- esphome/components/rp2040/__init__.py +3 -1
- esphome/components/rp2040_pio_led_strip/led_strip.cpp +0 -2
- esphome/components/rp2040_pio_led_strip/light.py +1 -2
- esphome/components/rp2040_pwm/rp2040_pwm.cpp +1 -5
- esphome/components/rpi_dpi_rgb/display.py +13 -15
- esphome/components/rpi_dpi_rgb/rpi_dpi_rgb.cpp +0 -3
- esphome/components/runtime_stats/__init__.py +34 -0
- esphome/components/runtime_stats/runtime_stats.cpp +102 -0
- esphome/components/runtime_stats/runtime_stats.h +132 -0
- esphome/components/scd30/scd30.cpp +0 -2
- esphome/components/scd30/sensor.py +1 -2
- esphome/components/scd4x/scd4x.cpp +0 -1
- esphome/components/scd4x/sensor.py +1 -3
- esphome/components/sdl/display.py +3 -1
- esphome/components/sdl/sdl_esphome.cpp +0 -2
- esphome/components/sdp3x/sdp3x.cpp +0 -2
- esphome/components/seeed_mr24hpc1/seeed_mr24hpc1.cpp +0 -2
- esphome/components/seeed_mr60fda2/seeed_mr60fda2.cpp +0 -3
- esphome/components/select/__init__.py +2 -3
- esphome/components/select/select_traits.cpp +1 -1
- esphome/components/select/select_traits.h +1 -1
- esphome/components/sen0321/sen0321.cpp +0 -1
- esphome/components/sen5x/sen5x.cpp +0 -2
- esphome/components/sensor/__init__.py +36 -4
- esphome/components/sensor/filter.cpp +49 -10
- esphome/components/sensor/filter.h +22 -7
- esphome/components/sensor/sensor.cpp +0 -1
- esphome/components/sensor/sensor.h +0 -9
- esphome/components/sfa30/sfa30.cpp +0 -4
- esphome/components/sgp30/sgp30.cpp +0 -2
- esphome/components/sgp4x/sensor.py +1 -1
- esphome/components/sgp4x/sgp4x.cpp +0 -2
- esphome/components/shelly_dimmer/shelly_dimmer.cpp +0 -2
- esphome/components/sht3xd/sht3xd.cpp +0 -2
- esphome/components/sht4x/sht4x.cpp +0 -2
- esphome/components/shtcx/shtcx.cpp +0 -1
- esphome/components/sim800l/__init__.py +2 -4
- esphome/components/sm16716/sm16716.cpp +0 -1
- esphome/components/sm2135/sm2135.cpp +0 -1
- esphome/components/sm2235/sm2235.cpp +0 -1
- esphome/components/sm2335/sm2335.cpp +0 -1
- esphome/components/sn74hc165/sn74hc165.cpp +0 -1
- esphome/components/sn74hc595/sn74hc595.cpp +0 -1
- esphome/components/sntp/sntp_component.cpp +0 -1
- esphome/components/sound_level/sensor.py +1 -1
- esphome/components/speaker/media_player/__init__.py +21 -33
- esphome/components/speaker/media_player/audio_pipeline.cpp +4 -7
- esphome/components/spi/__init__.py +29 -13
- esphome/components/spi/spi.cpp +0 -2
- esphome/components/spi_device/spi_device.cpp +1 -4
- esphome/components/sprinkler/__init__.py +4 -4
- esphome/components/sps30/sps30.cpp +0 -1
- esphome/components/ssd1306_base/__init__.py +11 -11
- esphome/components/ssd1306_base/ssd1306_base.cpp +1 -1
- esphome/components/ssd1306_i2c/ssd1306_i2c.cpp +0 -1
- esphome/components/ssd1306_spi/ssd1306_spi.cpp +0 -1
- esphome/components/ssd1322_spi/ssd1322_spi.cpp +0 -1
- esphome/components/ssd1325_spi/ssd1325_spi.cpp +0 -1
- esphome/components/ssd1327_i2c/ssd1327_i2c.cpp +0 -1
- esphome/components/ssd1327_spi/ssd1327_spi.cpp +0 -1
- esphome/components/ssd1331_spi/ssd1331_spi.cpp +0 -1
- esphome/components/ssd1351_spi/ssd1351_spi.cpp +0 -1
- esphome/components/st7567_i2c/st7567_i2c.cpp +0 -1
- esphome/components/st7567_spi/st7567_spi.cpp +0 -1
- esphome/components/st7701s/display.py +10 -14
- esphome/components/st7701s/st7701s.cpp +0 -3
- esphome/components/st7735/st7735.cpp +0 -1
- esphome/components/st7789v/st7789v.cpp +0 -1
- esphome/components/st7920/st7920.cpp +0 -1
- esphome/components/status_led/light/status_led_light.cpp +0 -2
- esphome/components/status_led/status_led.cpp +0 -1
- esphome/components/stepper/__init__.py +2 -4
- esphome/components/sts3x/sts3x.cpp +0 -1
- esphome/components/substitutions/__init__.py +10 -16
- esphome/components/substitutions/jinja.py +24 -1
- esphome/components/sun/__init__.py +2 -3
- esphome/components/switch/__init__.py +31 -1
- esphome/components/switch/automation.h +24 -0
- esphome/components/switch/switch.cpp +8 -0
- esphome/components/switch/switch.h +8 -0
- esphome/components/sx126x/sx126x.cpp +0 -2
- esphome/components/sx127x/sx127x.cpp +0 -2
- esphome/components/sx1509/__init__.py +7 -5
- esphome/components/sx1509/output/sx1509_float_output.cpp +1 -1
- esphome/components/sx1509/sx1509.cpp +0 -2
- esphome/components/syslog/esphome_syslog.cpp +1 -1
- esphome/components/tc74/tc74.cpp +0 -1
- esphome/components/tca9548a/tca9548a.cpp +0 -1
- esphome/components/tca9555/tca9555.cpp +0 -1
- esphome/components/tcs34725/tcs34725.cpp +0 -1
- esphome/components/tee501/tee501.cpp +0 -1
- esphome/components/tem3200/tem3200.cpp +0 -2
- esphome/components/template/alarm_control_panel/template_alarm_control_panel.cpp +0 -1
- esphome/components/template/cover/template_cover.cpp +0 -1
- esphome/components/template/select/template_select.cpp +0 -1
- esphome/components/template/text/template_text.cpp +0 -2
- esphome/components/template/valve/template_valve.cpp +0 -1
- esphome/components/text/__init__.py +0 -1
- esphome/components/text/text_traits.h +2 -0
- esphome/components/text_sensor/__init__.py +2 -1
- esphome/components/text_sensor/text_sensor.cpp +0 -2
- esphome/components/text_sensor/text_sensor.h +0 -8
- esphome/components/thermostat/climate.py +4 -4
- esphome/components/time/__init__.py +7 -4
- esphome/components/time/real_time_clock.cpp +16 -3
- esphome/components/tlc59208f/tlc59208f_output.cpp +0 -2
- esphome/components/tlc5947/tlc5947.cpp +0 -2
- esphome/components/tlc5971/tlc5971.cpp +0 -2
- esphome/components/tm1621/tm1621.cpp +0 -2
- esphome/components/tm1637/tm1637.cpp +0 -2
- esphome/components/tm1638/tm1638.cpp +0 -2
- esphome/components/tm1651/__init__.py +45 -48
- esphome/components/tm1651/tm1651.cpp +213 -47
- esphome/components/tm1651/tm1651.h +37 -32
- esphome/components/tmp117/tmp117.cpp +0 -2
- esphome/components/tsl2561/tsl2561.cpp +0 -1
- esphome/components/tsl2591/tsl2591.cpp +0 -1
- esphome/components/tt21100/touchscreen/tt21100.cpp +0 -2
- esphome/components/ttp229_bsf/ttp229_bsf.cpp +0 -1
- esphome/components/ttp229_lsf/ttp229_lsf.cpp +0 -1
- esphome/components/tuya/climate/__init__.py +9 -10
- esphome/components/tuya/number/__init__.py +8 -6
- esphome/components/tx20/tx20.cpp +0 -1
- esphome/components/uart/uart_component_esp32_arduino.cpp +0 -1
- esphome/components/uart/uart_component_esp8266.cpp +0 -1
- esphome/components/uart/uart_component_esp_idf.cpp +0 -2
- esphome/components/uart/uart_component_libretiny.cpp +0 -2
- esphome/components/uart/uart_component_rp2040.cpp +0 -2
- esphome/components/udp/__init__.py +1 -1
- esphome/components/ufire_ec/sensor.py +1 -2
- esphome/components/ufire_ec/ufire_ec.cpp +0 -2
- esphome/components/ufire_ise/sensor.py +1 -2
- esphome/components/ufire_ise/ufire_ise.cpp +0 -2
- esphome/components/ultrasonic/ultrasonic_sensor.cpp +0 -1
- esphome/components/update/__init__.py +0 -1
- esphome/components/uptime/sensor/uptime_seconds_sensor.cpp +0 -1
- esphome/components/uptime/sensor/uptime_seconds_sensor.h +0 -2
- esphome/components/usb_host/usb_host_client.cpp +0 -1
- esphome/components/usb_host/usb_host_component.cpp +0 -1
- esphome/components/valve/__init__.py +0 -1
- esphome/components/veml3235/veml3235.cpp +0 -3
- esphome/components/veml7700/veml7700.cpp +0 -2
- esphome/components/version/version_text_sensor.cpp +0 -1
- esphome/components/version/version_text_sensor.h +0 -1
- esphome/components/vl53l0x/vl53l0x_sensor.cpp +0 -4
- esphome/components/voice_assistant/voice_assistant.cpp +9 -8
- esphome/components/web_server/__init__.py +13 -0
- esphome/components/web_server/web_server.cpp +187 -352
- esphome/components/web_server/web_server.h +61 -1
- esphome/components/web_server_base/__init__.py +1 -1
- esphome/components/web_server_base/web_server_base.cpp +2 -0
- esphome/components/web_server_base/web_server_base.h +6 -0
- esphome/components/web_server_idf/web_server_idf.cpp +10 -8
- esphome/components/web_server_idf/web_server_idf.h +2 -0
- esphome/components/weikai_i2c/weikai_i2c.cpp +1 -2
- esphome/components/weikai_spi/weikai_spi.cpp +1 -1
- esphome/components/wifi/__init__.py +8 -43
- esphome/components/wifi/wifi_component.cpp +100 -36
- esphome/components/wifi/wifi_component.h +5 -1
- esphome/components/wifi/wifi_component_esp32_arduino.cpp +30 -0
- esphome/components/wifi/wifi_component_esp_idf.cpp +30 -0
- esphome/components/wifi_info/wifi_info_text_sensor.h +0 -6
- esphome/components/wifi_signal/wifi_signal_sensor.h +0 -1
- esphome/components/wireguard/wireguard.cpp +0 -2
- esphome/components/x9c/x9c.cpp +0 -2
- esphome/components/xgzp68xx/xgzp68xx.cpp +0 -1
- esphome/components/xl9535/xl9535.cpp +0 -2
- esphome/components/zephyr/__init__.py +252 -0
- esphome/components/zephyr/const.py +16 -0
- esphome/components/zephyr/core.cpp +90 -0
- esphome/components/zephyr/gpio.cpp +120 -0
- esphome/components/zephyr/gpio.h +38 -0
- esphome/components/zephyr/pre_build.py.script +4 -0
- esphome/components/zephyr/preferences.cpp +156 -0
- esphome/components/zephyr/preferences.h +13 -0
- esphome/config.py +38 -16
- esphome/config_helpers.py +1 -2
- esphome/config_validation.py +8 -15
- esphome/const.py +26 -1
- esphome/core/__init__.py +88 -51
- esphome/core/application.cpp +75 -21
- esphome/core/application.h +106 -171
- esphome/core/color.h +10 -0
- esphome/core/component.cpp +41 -25
- esphome/core/component.h +9 -6
- esphome/core/component_iterator.cpp +61 -261
- esphome/core/component_iterator.h +15 -0
- esphome/core/config.py +26 -11
- esphome/core/defines.h +40 -2
- esphome/core/entity_base.h +18 -0
- esphome/core/entity_helpers.py +41 -6
- esphome/core/helpers.cpp +8 -15
- esphome/core/helpers.h +60 -6
- esphome/core/lock_free_queue.h +1 -1
- esphome/core/scheduler.cpp +277 -74
- esphome/core/scheduler.h +89 -27
- esphome/cpp_generator.py +2 -6
- esphome/cpp_helpers.py +1 -1
- esphome/dashboard/dashboard.py +2 -3
- esphome/dashboard/dns.py +2 -8
- esphome/dashboard/web_server.py +34 -19
- esphome/espota2.py +1 -4
- esphome/git.py +3 -1
- esphome/helpers.py +23 -4
- esphome/log.py +3 -1
- esphome/mqtt.py +3 -5
- esphome/platformio_api.py +7 -4
- esphome/types.py +12 -0
- esphome/util.py +20 -8
- esphome/voluptuous_schema.py +4 -3
- esphome/vscode.py +1 -2
- esphome/wizard.py +1 -4
- esphome/writer.py +5 -107
- esphome/yaml_util.py +7 -5
- {esphome-2025.7.4.dist-info → esphome-2025.8.0b1.dist-info}/METADATA +12 -13
- {esphome-2025.7.4.dist-info → esphome-2025.8.0b1.dist-info}/RECORD +753 -673
- esphome/components/mipi_spi/models/commands.py +0 -82
- /esphome/components/nfc/binary_sensor/{binary_sensor.h → nfc_binary_sensor.h} +0 -0
- {esphome-2025.7.4.dist-info → esphome-2025.8.0b1.dist-info}/WHEEL +0 -0
- {esphome-2025.7.4.dist-info → esphome-2025.8.0b1.dist-info}/entry_points.txt +0 -0
- {esphome-2025.7.4.dist-info → esphome-2025.8.0b1.dist-info}/licenses/LICENSE +0 -0
- {esphome-2025.7.4.dist-info → esphome-2025.8.0b1.dist-info}/top_level.txt +0 -0
|
@@ -89,9 +89,10 @@ def validate_(config):
|
|
|
89
89
|
raise cv.Invalid("No sensors or binary sensors to encrypt")
|
|
90
90
|
elif config[CONF_ROLLING_CODE_ENABLE]:
|
|
91
91
|
raise cv.Invalid("Rolling code requires an encryption key")
|
|
92
|
-
if config[CONF_PING_PONG_ENABLE]
|
|
93
|
-
|
|
94
|
-
|
|
92
|
+
if config[CONF_PING_PONG_ENABLE] and not any(
|
|
93
|
+
CONF_ENCRYPTION in p for p in config.get(CONF_PROVIDERS) or ()
|
|
94
|
+
):
|
|
95
|
+
raise cv.Invalid("Ping-pong requires at least one encrypted provider")
|
|
95
96
|
return config
|
|
96
97
|
|
|
97
98
|
|
|
@@ -24,7 +24,6 @@ enum PCA6416AGPIORegisters {
|
|
|
24
24
|
static const char *const TAG = "pca6416a";
|
|
25
25
|
|
|
26
26
|
void PCA6416AComponent::setup() {
|
|
27
|
-
ESP_LOGCONFIG(TAG, "Running setup");
|
|
28
27
|
// Test to see if device exists
|
|
29
28
|
uint8_t value;
|
|
30
29
|
if (!this->read_register_(PCA6416A_INPUT0, &value)) {
|
|
@@ -13,7 +13,6 @@ const uint8_t CONFIG_REG = 3;
|
|
|
13
13
|
static const char *const TAG = "pca9554";
|
|
14
14
|
|
|
15
15
|
void PCA9554Component::setup() {
|
|
16
|
-
ESP_LOGCONFIG(TAG, "Running setup");
|
|
17
16
|
this->reg_width_ = (this->pin_count_ + 7) / 8;
|
|
18
17
|
// Test to see if device exists
|
|
19
18
|
if (!this->read_inputs_()) {
|
|
@@ -26,8 +26,6 @@ static const uint8_t PCA9685_MODE1_AUTOINC = 0b00100000;
|
|
|
26
26
|
static const uint8_t PCA9685_MODE1_SLEEP = 0b00010000;
|
|
27
27
|
|
|
28
28
|
void PCA9685Output::setup() {
|
|
29
|
-
ESP_LOGCONFIG(TAG, "Running setup");
|
|
30
|
-
|
|
31
29
|
ESP_LOGV(TAG, " Resetting devices");
|
|
32
30
|
if (!this->write_bytes(PCA9685_REGISTER_SOFTWARE_RESET, nullptr, 0)) {
|
|
33
31
|
this->mark_failed();
|
|
@@ -18,7 +18,6 @@ static const uint8_t PI4IOE5V6408_REGISTER_INTERRUPT_STATUS = 0x13;
|
|
|
18
18
|
static const char *const TAG = "pi4ioe5v6408";
|
|
19
19
|
|
|
20
20
|
void PI4IOE5V6408Component::setup() {
|
|
21
|
-
ESP_LOGCONFIG(TAG, "Running setup");
|
|
22
21
|
if (this->reset_) {
|
|
23
22
|
this->reg(PI4IOE5V6408_REGISTER_DEVICE_ID) |= 0b00000001;
|
|
24
23
|
this->reg(PI4IOE5V6408_REGISTER_OUT_HIGH_IMPEDENCE) = 0b00000000;
|
|
@@ -273,7 +273,7 @@ CONFIG_SCHEMA = PIPSOLAR_COMPONENT_SCHEMA.extend(
|
|
|
273
273
|
async def to_code(config):
|
|
274
274
|
paren = await cg.get_variable(config[CONF_PIPSOLAR_ID])
|
|
275
275
|
|
|
276
|
-
for type
|
|
276
|
+
for type in TYPES:
|
|
277
277
|
if type in config:
|
|
278
278
|
conf = config[type]
|
|
279
279
|
sens = await sensor.new_sensor(conf)
|
|
@@ -39,7 +39,6 @@ static const LogString *pm2005_get_measuring_mode_string(int status) {
|
|
|
39
39
|
static inline uint16_t get_sensor_value(const uint8_t *data, uint8_t i) { return data[i] * 0x100 + data[i + 1]; }
|
|
40
40
|
|
|
41
41
|
void PM2005Component::setup() {
|
|
42
|
-
ESP_LOGCONFIG(TAG, "Running setup");
|
|
43
42
|
if (this->sensor_type_ == PM2005) {
|
|
44
43
|
this->situation_value_index_ = 3;
|
|
45
44
|
this->pm_1_0_value_index_ = 4;
|
|
@@ -114,8 +114,7 @@ PMWCS3_CALIBRATION_SCHEMA = cv.Schema(
|
|
|
114
114
|
)
|
|
115
115
|
async def pmwcs3_calibration_to_code(config, action_id, template_arg, args):
|
|
116
116
|
parent = await cg.get_variable(config[CONF_ID])
|
|
117
|
-
|
|
118
|
-
return var
|
|
117
|
+
return cg.new_Pvariable(action_id, template_arg, parent)
|
|
119
118
|
|
|
120
119
|
|
|
121
120
|
PMWCS3_NEW_I2C_ADDRESS_SCHEMA = cv.maybe_simple_value(
|
|
@@ -15,8 +15,6 @@ namespace pn532 {
|
|
|
15
15
|
static const char *const TAG = "pn532";
|
|
16
16
|
|
|
17
17
|
void PN532::setup() {
|
|
18
|
-
ESP_LOGCONFIG(TAG, "Running setup");
|
|
19
|
-
|
|
20
18
|
// Get version data
|
|
21
19
|
if (!this->write_command_({PN532_COMMAND_VERSION_DATA})) {
|
|
22
20
|
ESP_LOGW(TAG, "Error sending version command, trying again");
|
|
@@ -12,12 +12,10 @@ namespace pn532_spi {
|
|
|
12
12
|
static const char *const TAG = "pn532_spi";
|
|
13
13
|
|
|
14
14
|
void PN532Spi::setup() {
|
|
15
|
-
ESP_LOGI(TAG, "PN532Spi setup started!");
|
|
16
15
|
this->spi_setup();
|
|
17
16
|
|
|
18
17
|
this->cs_->digital_write(false);
|
|
19
18
|
delay(10);
|
|
20
|
-
ESP_LOGI(TAG, "SPI setup finished!");
|
|
21
19
|
PN532::setup();
|
|
22
20
|
}
|
|
23
21
|
|
|
@@ -7,22 +7,19 @@ namespace power_supply {
|
|
|
7
7
|
static const char *const TAG = "power_supply";
|
|
8
8
|
|
|
9
9
|
void PowerSupply::setup() {
|
|
10
|
-
ESP_LOGCONFIG(TAG, "Running setup");
|
|
11
|
-
|
|
12
10
|
this->pin_->setup();
|
|
13
11
|
this->pin_->digital_write(false);
|
|
14
12
|
if (this->enable_on_boot_)
|
|
15
13
|
this->request_high_power();
|
|
16
14
|
}
|
|
17
15
|
void PowerSupply::dump_config() {
|
|
18
|
-
ESP_LOGCONFIG(TAG, "Power Supply:");
|
|
19
|
-
LOG_PIN(" Pin: ", this->pin_);
|
|
20
16
|
ESP_LOGCONFIG(TAG,
|
|
17
|
+
"Power Supply:\n"
|
|
21
18
|
" Time to enable: %" PRIu32 " ms\n"
|
|
22
|
-
" Keep on time:
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
19
|
+
" Keep on time: %" PRIu32 " s\n"
|
|
20
|
+
" Enable at startup: %s",
|
|
21
|
+
this->enable_time_, this->keep_on_time_ / 1000u, YESNO(this->enable_on_boot_));
|
|
22
|
+
LOG_PIN(" Pin: ", this->pin_);
|
|
26
23
|
}
|
|
27
24
|
|
|
28
25
|
float PowerSupply::get_setup_priority() const { return setup_priority::IO; }
|
|
@@ -32,7 +29,7 @@ bool PowerSupply::is_enabled() const { return this->active_requests_ != 0; }
|
|
|
32
29
|
void PowerSupply::request_high_power() {
|
|
33
30
|
if (this->active_requests_ == 0) {
|
|
34
31
|
this->cancel_timeout("power-supply-off");
|
|
35
|
-
|
|
32
|
+
ESP_LOGV(TAG, "Enabling");
|
|
36
33
|
this->pin_->digital_write(true);
|
|
37
34
|
delay(this->enable_time_);
|
|
38
35
|
}
|
|
@@ -47,7 +44,7 @@ void PowerSupply::unrequest_high_power() {
|
|
|
47
44
|
this->active_requests_--;
|
|
48
45
|
if (this->active_requests_ == 0) {
|
|
49
46
|
this->set_timeout("power-supply-off", this->keep_on_time_, [this]() {
|
|
50
|
-
|
|
47
|
+
ESP_LOGV(TAG, "Disabling");
|
|
51
48
|
this->pin_->digital_write(false);
|
|
52
49
|
});
|
|
53
50
|
}
|
|
@@ -36,10 +36,10 @@ class PowerSupply : public Component {
|
|
|
36
36
|
|
|
37
37
|
protected:
|
|
38
38
|
GPIOPin *pin_;
|
|
39
|
-
bool enable_on_boot_{false};
|
|
40
39
|
uint32_t enable_time_;
|
|
41
40
|
uint32_t keep_on_time_;
|
|
42
41
|
int16_t active_requests_{0}; // use signed integer to make catching negative requests easier.
|
|
42
|
+
bool enable_on_boot_{false};
|
|
43
43
|
};
|
|
44
44
|
|
|
45
45
|
class PowerSupplyRequester {
|
|
@@ -28,12 +28,13 @@ from esphome.core import CORE
|
|
|
28
28
|
import esphome.final_validate as fv
|
|
29
29
|
|
|
30
30
|
CODEOWNERS = ["@esphome/core"]
|
|
31
|
+
DOMAIN = "psram"
|
|
31
32
|
|
|
32
33
|
DEPENDENCIES = [PLATFORM_ESP32]
|
|
33
34
|
|
|
34
35
|
_LOGGER = logging.getLogger(__name__)
|
|
35
36
|
|
|
36
|
-
psram_ns = cg.esphome_ns.namespace(
|
|
37
|
+
psram_ns = cg.esphome_ns.namespace(DOMAIN)
|
|
37
38
|
PsramComponent = psram_ns.class_("PsramComponent", cg.Component)
|
|
38
39
|
|
|
39
40
|
TYPE_QUAD = "quad"
|
|
@@ -156,7 +156,6 @@ pulse_counter_t HwPulseCounterStorage::read_raw_value() {
|
|
|
156
156
|
#endif // HAS_PCNT
|
|
157
157
|
|
|
158
158
|
void PulseCounterSensor::setup() {
|
|
159
|
-
ESP_LOGCONFIG(TAG, "Running setup for '%s'", this->name_.c_str());
|
|
160
159
|
if (!this->storage_.pulse_counter_setup(this->pin_)) {
|
|
161
160
|
this->mark_failed();
|
|
162
161
|
return;
|
|
@@ -49,12 +49,15 @@ def validate_internal_filter(value):
|
|
|
49
49
|
[CONF_USE_PCNT],
|
|
50
50
|
)
|
|
51
51
|
|
|
52
|
-
if
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
52
|
+
if (
|
|
53
|
+
CORE.is_esp32
|
|
54
|
+
and use_pcnt
|
|
55
|
+
and value.get(CONF_INTERNAL_FILTER).total_microseconds > 13
|
|
56
|
+
):
|
|
57
|
+
raise cv.Invalid(
|
|
58
|
+
"Maximum internal filter value when using ESP32 hardware PCNT is 13us",
|
|
59
|
+
[CONF_INTERNAL_FILTER],
|
|
60
|
+
)
|
|
58
61
|
|
|
59
62
|
return value
|
|
60
63
|
|
|
@@ -24,7 +24,6 @@ static const uint8_t QMC5883L_REGISTER_CONTROL_2 = 0x0A;
|
|
|
24
24
|
static const uint8_t QMC5883L_REGISTER_PERIOD = 0x0B;
|
|
25
25
|
|
|
26
26
|
void QMC5883LComponent::setup() {
|
|
27
|
-
ESP_LOGCONFIG(TAG, "Running setup");
|
|
28
27
|
// Soft Reset
|
|
29
28
|
if (!this->write_byte(QMC5883L_REGISTER_CONTROL_2, 1 << 7)) {
|
|
30
29
|
this->error_code_ = COMMUNICATION_FAILED;
|
|
@@ -73,9 +73,8 @@ def map_sequence(value):
|
|
|
73
73
|
|
|
74
74
|
def _validate(config):
|
|
75
75
|
chip = DriverChip.chips[config[CONF_MODEL]]
|
|
76
|
-
if not chip.initsequence:
|
|
77
|
-
|
|
78
|
-
raise cv.Invalid(f"{chip.name} model requires init_sequence")
|
|
76
|
+
if not chip.initsequence and CONF_INIT_SEQUENCE not in config:
|
|
77
|
+
raise cv.Invalid(f"{chip.name} model requires init_sequence")
|
|
79
78
|
return config
|
|
80
79
|
|
|
81
80
|
|
|
@@ -6,7 +6,6 @@ namespace esphome {
|
|
|
6
6
|
namespace qspi_dbi {
|
|
7
7
|
|
|
8
8
|
void QspiDbi::setup() {
|
|
9
|
-
ESP_LOGCONFIG(TAG, "Running setup");
|
|
10
9
|
this->spi_setup();
|
|
11
10
|
if (this->enable_pin_ != nullptr) {
|
|
12
11
|
this->enable_pin_->setup();
|
|
@@ -113,7 +112,6 @@ void QspiDbi::write_init_sequence_() {
|
|
|
113
112
|
}
|
|
114
113
|
this->reset_params_(true);
|
|
115
114
|
this->setup_complete_ = true;
|
|
116
|
-
ESP_LOGCONFIG(TAG, "QSPI_DBI setup complete");
|
|
117
115
|
}
|
|
118
116
|
|
|
119
117
|
void QspiDbi::set_addr_window_(uint16_t x1, uint16_t y1, uint16_t x2, uint16_t y2) {
|
|
@@ -24,9 +24,8 @@ QwiicPIRComponent = qwiic_pir_ns.class_(
|
|
|
24
24
|
|
|
25
25
|
|
|
26
26
|
def validate_no_debounce_unless_native(config):
|
|
27
|
-
if CONF_DEBOUNCE in config:
|
|
28
|
-
if
|
|
29
|
-
raise cv.Invalid("debounce can only be set if debounce_mode is NATIVE")
|
|
27
|
+
if CONF_DEBOUNCE in config and config[CONF_DEBOUNCE_MODE] != "NATIVE":
|
|
28
|
+
raise cv.Invalid("debounce can only be set if debounce_mode is NATIVE")
|
|
30
29
|
return config
|
|
31
30
|
|
|
32
31
|
|
|
@@ -7,8 +7,6 @@ namespace qwiic_pir {
|
|
|
7
7
|
static const char *const TAG = "qwiic_pir";
|
|
8
8
|
|
|
9
9
|
void QwiicPIRComponent::setup() {
|
|
10
|
-
ESP_LOGCONFIG(TAG, "Running setup");
|
|
11
|
-
|
|
12
10
|
// Verify I2C communcation by reading and verifying the chip ID
|
|
13
11
|
uint8_t chip_id;
|
|
14
12
|
if (!this->read_byte(QWIIC_PIR_CHIP_ID, &chip_id)) {
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
#include "rc522.h"
|
|
2
|
+
#include "esphome/core/helpers.h"
|
|
2
3
|
#include "esphome/core/log.h"
|
|
3
4
|
|
|
4
5
|
// Based on:
|
|
@@ -13,30 +14,6 @@ static const char *const TAG = "rc522";
|
|
|
13
14
|
|
|
14
15
|
static const uint8_t RESET_COUNT = 5;
|
|
15
16
|
|
|
16
|
-
std::string format_buffer(uint8_t *b, uint8_t len) {
|
|
17
|
-
char buf[32];
|
|
18
|
-
int offset = 0;
|
|
19
|
-
for (uint8_t i = 0; i < len; i++) {
|
|
20
|
-
const char *format = "%02X";
|
|
21
|
-
if (i + 1 < len)
|
|
22
|
-
format = "%02X-";
|
|
23
|
-
offset += sprintf(buf + offset, format, b[i]);
|
|
24
|
-
}
|
|
25
|
-
return std::string(buf);
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
std::string format_uid(std::vector<uint8_t> &uid) {
|
|
29
|
-
char buf[32];
|
|
30
|
-
int offset = 0;
|
|
31
|
-
for (size_t i = 0; i < uid.size(); i++) {
|
|
32
|
-
const char *format = "%02X";
|
|
33
|
-
if (i + 1 < uid.size())
|
|
34
|
-
format = "%02X-";
|
|
35
|
-
offset += sprintf(buf + offset, format, uid[i]);
|
|
36
|
-
}
|
|
37
|
-
return std::string(buf);
|
|
38
|
-
}
|
|
39
|
-
|
|
40
17
|
void RC522::setup() {
|
|
41
18
|
state_ = STATE_SETUP;
|
|
42
19
|
// Pull device out of power down / reset state.
|
|
@@ -215,7 +192,7 @@ void RC522::loop() {
|
|
|
215
192
|
ESP_LOGV(TAG, "STATE_READ_SERIAL_DONE -> TIMEOUT (no tag present) %d", status);
|
|
216
193
|
} else {
|
|
217
194
|
ESP_LOGW(TAG, "Unexpected response. Read status is %d. Read bytes: %d (%s)", status, back_length_,
|
|
218
|
-
|
|
195
|
+
format_hex_pretty(buffer_, back_length_, '-', false).c_str());
|
|
219
196
|
}
|
|
220
197
|
|
|
221
198
|
state_ = STATE_DONE;
|
|
@@ -239,7 +216,7 @@ void RC522::loop() {
|
|
|
239
216
|
|
|
240
217
|
std::vector<uint8_t> rfid_uid(std::begin(uid_buffer_), std::begin(uid_buffer_) + uid_idx_);
|
|
241
218
|
uid_idx_ = 0;
|
|
242
|
-
// ESP_LOGD(TAG, "Processing '%s'",
|
|
219
|
+
// ESP_LOGD(TAG, "Processing '%s'", format_hex_pretty(rfid_uid, '-', false).c_str());
|
|
243
220
|
pcd_antenna_off_();
|
|
244
221
|
state_ = STATE_INIT; // scan again on next update
|
|
245
222
|
bool report = true;
|
|
@@ -260,13 +237,13 @@ void RC522::loop() {
|
|
|
260
237
|
trigger->process(rfid_uid);
|
|
261
238
|
|
|
262
239
|
if (report) {
|
|
263
|
-
ESP_LOGD(TAG, "Found new tag '%s'",
|
|
240
|
+
ESP_LOGD(TAG, "Found new tag '%s'", format_hex_pretty(rfid_uid, '-', false).c_str());
|
|
264
241
|
}
|
|
265
242
|
break;
|
|
266
243
|
}
|
|
267
244
|
case STATE_DONE: {
|
|
268
245
|
if (!this->current_uid_.empty()) {
|
|
269
|
-
ESP_LOGV(TAG, "Tag '%s' removed",
|
|
246
|
+
ESP_LOGV(TAG, "Tag '%s' removed", format_hex_pretty(this->current_uid_, '-', false).c_str());
|
|
270
247
|
for (auto *trigger : this->triggers_ontagremoved_)
|
|
271
248
|
trigger->process(this->current_uid_);
|
|
272
249
|
}
|
|
@@ -361,7 +338,7 @@ void RC522::pcd_clear_register_bit_mask_(PcdRegister reg, ///< The register to
|
|
|
361
338
|
* @return STATUS_OK on success, STATUS_??? otherwise.
|
|
362
339
|
*/
|
|
363
340
|
void RC522::pcd_transceive_data_(uint8_t send_len) {
|
|
364
|
-
ESP_LOGV(TAG, "PCD TRANSCEIVE: RX: %s",
|
|
341
|
+
ESP_LOGV(TAG, "PCD TRANSCEIVE: RX: %s", format_hex_pretty(buffer_, send_len, '-', false).c_str());
|
|
365
342
|
delayMicroseconds(1000); // we need 1 ms delay between antenna on and those communication commands
|
|
366
343
|
send_len_ = send_len;
|
|
367
344
|
// Prepare values for BitFramingReg
|
|
@@ -435,7 +412,8 @@ RC522::StatusCode RC522::await_transceive_() {
|
|
|
435
412
|
error_reg_value); // TODO: is this always due to collissions?
|
|
436
413
|
return STATUS_ERROR;
|
|
437
414
|
}
|
|
438
|
-
ESP_LOGV(TAG, "received %d bytes: %s", back_length_,
|
|
415
|
+
ESP_LOGV(TAG, "received %d bytes: %s", back_length_,
|
|
416
|
+
format_hex_pretty(buffer_ + send_len_, back_length_, '-', false).c_str());
|
|
439
417
|
|
|
440
418
|
return STATUS_OK;
|
|
441
419
|
}
|
|
@@ -499,7 +477,7 @@ bool RC522BinarySensor::process(std::vector<uint8_t> &data) {
|
|
|
499
477
|
this->found_ = result;
|
|
500
478
|
return result;
|
|
501
479
|
}
|
|
502
|
-
void RC522Trigger::process(std::vector<uint8_t> &data) { this->trigger(
|
|
480
|
+
void RC522Trigger::process(std::vector<uint8_t> &data) { this->trigger(format_hex_pretty(data, '-', false)); }
|
|
503
481
|
|
|
504
482
|
} // namespace rc522
|
|
505
483
|
} // namespace esphome
|
|
@@ -1062,12 +1062,11 @@ def validate_raw_alternating(value):
|
|
|
1062
1062
|
last_negative = None
|
|
1063
1063
|
for i, val in enumerate(value):
|
|
1064
1064
|
this_negative = val < 0
|
|
1065
|
-
if i != 0:
|
|
1066
|
-
|
|
1067
|
-
|
|
1068
|
-
|
|
1069
|
-
|
|
1070
|
-
)
|
|
1065
|
+
if i != 0 and this_negative == last_negative:
|
|
1066
|
+
raise cv.Invalid(
|
|
1067
|
+
f"Values must alternate between being positive and negative, please see index {i} and {i + 1}",
|
|
1068
|
+
[i],
|
|
1069
|
+
)
|
|
1071
1070
|
last_negative = this_negative
|
|
1072
1071
|
return value
|
|
1073
1072
|
|
|
@@ -38,7 +38,6 @@ static bool IRAM_ATTR HOT rmt_callback(rmt_channel_handle_t channel, const rmt_r
|
|
|
38
38
|
}
|
|
39
39
|
|
|
40
40
|
void RemoteReceiverComponent::setup() {
|
|
41
|
-
ESP_LOGCONFIG(TAG, "Running setup");
|
|
42
41
|
rmt_rx_channel_config_t channel;
|
|
43
42
|
memset(&channel, 0, sizeof(channel));
|
|
44
43
|
channel.clk_src = RMT_CLK_SRC_DEFAULT;
|
|
@@ -13,6 +13,7 @@ from esphome.const import (
|
|
|
13
13
|
CONF_PIN,
|
|
14
14
|
CONF_RMT_SYMBOLS,
|
|
15
15
|
CONF_USE_DMA,
|
|
16
|
+
CONF_VALUE,
|
|
16
17
|
PlatformFramework,
|
|
17
18
|
)
|
|
18
19
|
from esphome.core import CORE
|
|
@@ -22,11 +23,17 @@ AUTO_LOAD = ["remote_base"]
|
|
|
22
23
|
CONF_EOT_LEVEL = "eot_level"
|
|
23
24
|
CONF_ON_TRANSMIT = "on_transmit"
|
|
24
25
|
CONF_ON_COMPLETE = "on_complete"
|
|
26
|
+
CONF_TRANSMITTER_ID = remote_base.CONF_TRANSMITTER_ID
|
|
25
27
|
|
|
26
28
|
remote_transmitter_ns = cg.esphome_ns.namespace("remote_transmitter")
|
|
27
29
|
RemoteTransmitterComponent = remote_transmitter_ns.class_(
|
|
28
30
|
"RemoteTransmitterComponent", remote_base.RemoteTransmitterBase, cg.Component
|
|
29
31
|
)
|
|
32
|
+
DigitalWriteAction = remote_transmitter_ns.class_(
|
|
33
|
+
"DigitalWriteAction",
|
|
34
|
+
automation.Action,
|
|
35
|
+
cg.Parented.template(RemoteTransmitterComponent),
|
|
36
|
+
)
|
|
30
37
|
|
|
31
38
|
MULTI_CONF = True
|
|
32
39
|
CONFIG_SCHEMA = cv.Schema(
|
|
@@ -63,6 +70,25 @@ CONFIG_SCHEMA = cv.Schema(
|
|
|
63
70
|
}
|
|
64
71
|
).extend(cv.COMPONENT_SCHEMA)
|
|
65
72
|
|
|
73
|
+
DIGITAL_WRITE_ACTION_SCHEMA = cv.maybe_simple_value(
|
|
74
|
+
{
|
|
75
|
+
cv.GenerateID(CONF_TRANSMITTER_ID): cv.use_id(RemoteTransmitterComponent),
|
|
76
|
+
cv.Required(CONF_VALUE): cv.templatable(cv.boolean),
|
|
77
|
+
},
|
|
78
|
+
key=CONF_VALUE,
|
|
79
|
+
)
|
|
80
|
+
|
|
81
|
+
|
|
82
|
+
@automation.register_action(
|
|
83
|
+
"remote_transmitter.digital_write", DigitalWriteAction, DIGITAL_WRITE_ACTION_SCHEMA
|
|
84
|
+
)
|
|
85
|
+
async def digital_write_action_to_code(config, action_id, template_arg, args):
|
|
86
|
+
var = cg.new_Pvariable(action_id, template_arg)
|
|
87
|
+
await cg.register_parented(var, config[CONF_TRANSMITTER_ID])
|
|
88
|
+
template_ = await cg.templatable(config[CONF_VALUE], args, bool)
|
|
89
|
+
cg.add(var.set_value(template_))
|
|
90
|
+
return var
|
|
91
|
+
|
|
66
92
|
|
|
67
93
|
async def to_code(config):
|
|
68
94
|
pin = await cg.gpio_pin_expression(config[CONF_PIN])
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
#pragma once
|
|
2
|
+
|
|
3
|
+
#include "esphome/components/remote_transmitter/remote_transmitter.h"
|
|
4
|
+
#include "esphome/core/automation.h"
|
|
5
|
+
#include "esphome/core/component.h"
|
|
6
|
+
#include "esphome/core/helpers.h"
|
|
7
|
+
|
|
8
|
+
namespace esphome {
|
|
9
|
+
namespace remote_transmitter {
|
|
10
|
+
|
|
11
|
+
template<typename... Ts> class DigitalWriteAction : public Action<Ts...>, public Parented<RemoteTransmitterComponent> {
|
|
12
|
+
public:
|
|
13
|
+
TEMPLATABLE_VALUE(bool, value)
|
|
14
|
+
void play(Ts... x) override { this->parent_->digital_write(this->value_.value(x...)); }
|
|
15
|
+
};
|
|
16
|
+
|
|
17
|
+
} // namespace remote_transmitter
|
|
18
|
+
} // namespace esphome
|
|
@@ -30,10 +30,11 @@ class RemoteTransmitterComponent : public remote_base::RemoteTransmitterBase,
|
|
|
30
30
|
|
|
31
31
|
void set_carrier_duty_percent(uint8_t carrier_duty_percent) { this->carrier_duty_percent_ = carrier_duty_percent; }
|
|
32
32
|
|
|
33
|
+
void digital_write(bool value);
|
|
34
|
+
|
|
33
35
|
#if defined(USE_ESP32)
|
|
34
36
|
void set_with_dma(bool with_dma) { this->with_dma_ = with_dma; }
|
|
35
37
|
void set_eot_level(bool eot_level) { this->eot_level_ = eot_level; }
|
|
36
|
-
void digital_write(bool value);
|
|
37
38
|
#endif
|
|
38
39
|
|
|
39
40
|
Trigger<> *get_transmit_trigger() const { return this->transmit_trigger_; };
|
|
@@ -73,6 +73,8 @@ void RemoteTransmitterComponent::space_(uint32_t usec) {
|
|
|
73
73
|
this->target_time_ += usec;
|
|
74
74
|
}
|
|
75
75
|
|
|
76
|
+
void RemoteTransmitterComponent::digital_write(bool value) { this->pin_->digital_write(value); }
|
|
77
|
+
|
|
76
78
|
void RemoteTransmitterComponent::send_internal(uint32_t send_times, uint32_t send_wait) {
|
|
77
79
|
ESP_LOGD(TAG, "Sending remote code");
|
|
78
80
|
uint32_t on_time, off_time;
|
|
@@ -75,6 +75,8 @@ void RemoteTransmitterComponent::space_(uint32_t usec) {
|
|
|
75
75
|
this->target_time_ += usec;
|
|
76
76
|
}
|
|
77
77
|
|
|
78
|
+
void RemoteTransmitterComponent::digital_write(bool value) { this->pin_->digital_write(value); }
|
|
79
|
+
|
|
78
80
|
void RemoteTransmitterComponent::send_internal(uint32_t send_times, uint32_t send_wait) {
|
|
79
81
|
ESP_LOGD(TAG, "Sending remote code");
|
|
80
82
|
uint32_t on_time, off_time;
|
|
@@ -90,11 +90,10 @@ async def to_code(config):
|
|
|
90
90
|
|
|
91
91
|
if task_stack_in_psram := config.get(CONF_TASK_STACK_IN_PSRAM):
|
|
92
92
|
cg.add(var.set_task_stack_in_psram(task_stack_in_psram))
|
|
93
|
-
if task_stack_in_psram:
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
)
|
|
93
|
+
if task_stack_in_psram and config[CONF_TASK_STACK_IN_PSRAM]:
|
|
94
|
+
esp32.add_idf_sdkconfig_option(
|
|
95
|
+
"CONFIG_SPIRAM_ALLOW_STACK_EXTERNAL_MEMORY", True
|
|
96
|
+
)
|
|
98
97
|
|
|
99
98
|
cg.add(var.set_target_bits_per_sample(config[CONF_BITS_PER_SAMPLE]))
|
|
100
99
|
cg.add(var.set_target_sample_rate(config[CONF_SAMPLE_RATE]))
|