esphome 2025.7.5__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 +102 -52
- 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/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 +0 -1
- esphome/components/i2s_audio/microphone/i2s_audio_microphone.h +2 -2
- 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/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.5.dist-info → esphome-2025.8.0.dist-info}/METADATA +13 -14
- {esphome-2025.7.5.dist-info → esphome-2025.8.0.dist-info}/RECORD +755 -675
- 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.5.dist-info → esphome-2025.8.0.dist-info}/WHEEL +0 -0
- {esphome-2025.7.5.dist-info → esphome-2025.8.0.dist-info}/entry_points.txt +0 -0
- {esphome-2025.7.5.dist-info → esphome-2025.8.0.dist-info}/licenses/LICENSE +0 -0
- {esphome-2025.7.5.dist-info → esphome-2025.8.0.dist-info}/top_level.txt +0 -0
|
@@ -186,8 +186,7 @@ def _process_package(package_config, config):
|
|
|
186
186
|
package_config = _process_base_package(package_config)
|
|
187
187
|
if isinstance(package_config, dict):
|
|
188
188
|
recursive_package = do_packages_pass(package_config)
|
|
189
|
-
|
|
190
|
-
return config
|
|
189
|
+
return merge_config(recursive_package, config)
|
|
191
190
|
|
|
192
191
|
|
|
193
192
|
def do_packages_pass(config: dict):
|
|
@@ -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;
|
|
@@ -23,20 +23,18 @@ void Pipsolar::loop() {
|
|
|
23
23
|
// Read message
|
|
24
24
|
if (this->state_ == STATE_IDLE) {
|
|
25
25
|
this->empty_uart_buffer_();
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
case 1:
|
|
36
|
-
// command send
|
|
37
|
-
return;
|
|
38
|
-
break;
|
|
26
|
+
|
|
27
|
+
if (this->send_next_command_()) {
|
|
28
|
+
// command sent
|
|
29
|
+
return;
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
if (this->send_next_poll_()) {
|
|
33
|
+
// poll sent
|
|
34
|
+
return;
|
|
39
35
|
}
|
|
36
|
+
|
|
37
|
+
return;
|
|
40
38
|
}
|
|
41
39
|
if (this->state_ == STATE_COMMAND_COMPLETE) {
|
|
42
40
|
if (this->check_incoming_length_(4)) {
|
|
@@ -530,7 +528,7 @@ void Pipsolar::loop() {
|
|
|
530
528
|
// '(00000000000000000000000000000000'
|
|
531
529
|
// iterate over all available flag (as not all models have all flags, but at least in the same order)
|
|
532
530
|
this->value_warnings_present_ = false;
|
|
533
|
-
this->value_faults_present_ =
|
|
531
|
+
this->value_faults_present_ = false;
|
|
534
532
|
|
|
535
533
|
for (size_t i = 1; i < strlen(tmp); i++) {
|
|
536
534
|
enabled = tmp[i] == '1';
|
|
@@ -708,6 +706,7 @@ void Pipsolar::loop() {
|
|
|
708
706
|
return;
|
|
709
707
|
}
|
|
710
708
|
// crc ok
|
|
709
|
+
this->used_polling_commands_[this->last_polling_command_].needs_update = false;
|
|
711
710
|
this->state_ = STATE_POLL_CHECKED;
|
|
712
711
|
return;
|
|
713
712
|
} else {
|
|
@@ -788,7 +787,7 @@ uint8_t Pipsolar::check_incoming_crc_() {
|
|
|
788
787
|
}
|
|
789
788
|
|
|
790
789
|
// send next command used
|
|
791
|
-
|
|
790
|
+
bool Pipsolar::send_next_command_() {
|
|
792
791
|
uint16_t crc16;
|
|
793
792
|
if (!this->command_queue_[this->command_queue_position_].empty()) {
|
|
794
793
|
const char *command = this->command_queue_[this->command_queue_position_].c_str();
|
|
@@ -809,37 +808,43 @@ uint8_t Pipsolar::send_next_command_() {
|
|
|
809
808
|
// end Byte
|
|
810
809
|
this->write(0x0D);
|
|
811
810
|
ESP_LOGD(TAG, "Sending command from queue: %s with length %d", command, length);
|
|
812
|
-
return
|
|
811
|
+
return true;
|
|
813
812
|
}
|
|
814
|
-
return
|
|
813
|
+
return false;
|
|
815
814
|
}
|
|
816
815
|
|
|
817
|
-
|
|
816
|
+
bool Pipsolar::send_next_poll_() {
|
|
818
817
|
uint16_t crc16;
|
|
819
|
-
|
|
820
|
-
|
|
821
|
-
this->last_polling_command_ =
|
|
822
|
-
|
|
823
|
-
|
|
824
|
-
|
|
825
|
-
|
|
818
|
+
|
|
819
|
+
for (uint8_t i = 0; i < POLLING_COMMANDS_MAX; i++) {
|
|
820
|
+
this->last_polling_command_ = (this->last_polling_command_ + 1) % POLLING_COMMANDS_MAX;
|
|
821
|
+
if (this->used_polling_commands_[this->last_polling_command_].length == 0) {
|
|
822
|
+
// not enabled
|
|
823
|
+
continue;
|
|
824
|
+
}
|
|
825
|
+
if (!this->used_polling_commands_[this->last_polling_command_].needs_update) {
|
|
826
|
+
// no update requested
|
|
827
|
+
continue;
|
|
828
|
+
}
|
|
829
|
+
this->state_ = STATE_POLL;
|
|
830
|
+
this->command_start_millis_ = millis();
|
|
831
|
+
this->empty_uart_buffer_();
|
|
832
|
+
this->read_pos_ = 0;
|
|
833
|
+
crc16 = this->pipsolar_crc_(this->used_polling_commands_[this->last_polling_command_].command,
|
|
834
|
+
this->used_polling_commands_[this->last_polling_command_].length);
|
|
835
|
+
this->write_array(this->used_polling_commands_[this->last_polling_command_].command,
|
|
836
|
+
this->used_polling_commands_[this->last_polling_command_].length);
|
|
837
|
+
// checksum
|
|
838
|
+
this->write(((uint8_t) ((crc16) >> 8))); // highbyte
|
|
839
|
+
this->write(((uint8_t) ((crc16) &0xff))); // lowbyte
|
|
840
|
+
// end Byte
|
|
841
|
+
this->write(0x0D);
|
|
842
|
+
ESP_LOGD(TAG, "Sending polling command : %s with length %d",
|
|
843
|
+
this->used_polling_commands_[this->last_polling_command_].command,
|
|
844
|
+
this->used_polling_commands_[this->last_polling_command_].length);
|
|
845
|
+
return true;
|
|
826
846
|
}
|
|
827
|
-
|
|
828
|
-
this->command_start_millis_ = millis();
|
|
829
|
-
this->empty_uart_buffer_();
|
|
830
|
-
this->read_pos_ = 0;
|
|
831
|
-
crc16 = this->pipsolar_crc_(this->used_polling_commands_[this->last_polling_command_].command,
|
|
832
|
-
this->used_polling_commands_[this->last_polling_command_].length);
|
|
833
|
-
this->write_array(this->used_polling_commands_[this->last_polling_command_].command,
|
|
834
|
-
this->used_polling_commands_[this->last_polling_command_].length);
|
|
835
|
-
// checksum
|
|
836
|
-
this->write(((uint8_t) ((crc16) >> 8))); // highbyte
|
|
837
|
-
this->write(((uint8_t) ((crc16) &0xff))); // lowbyte
|
|
838
|
-
// end Byte
|
|
839
|
-
this->write(0x0D);
|
|
840
|
-
ESP_LOGD(TAG, "Sending polling command : %s with length %d",
|
|
841
|
-
this->used_polling_commands_[this->last_polling_command_].command,
|
|
842
|
-
this->used_polling_commands_[this->last_polling_command_].length);
|
|
847
|
+
return false;
|
|
843
848
|
}
|
|
844
849
|
|
|
845
850
|
void Pipsolar::queue_command_(const char *command, uint8_t length) {
|
|
@@ -869,7 +874,13 @@ void Pipsolar::dump_config() {
|
|
|
869
874
|
}
|
|
870
875
|
}
|
|
871
876
|
}
|
|
872
|
-
void Pipsolar::update() {
|
|
877
|
+
void Pipsolar::update() {
|
|
878
|
+
for (auto &used_polling_command : this->used_polling_commands_) {
|
|
879
|
+
if (used_polling_command.length != 0) {
|
|
880
|
+
used_polling_command.needs_update = true;
|
|
881
|
+
}
|
|
882
|
+
}
|
|
883
|
+
}
|
|
873
884
|
|
|
874
885
|
void Pipsolar::add_polling_command_(const char *command, ENUMPollingCommand polling_command) {
|
|
875
886
|
for (auto &used_polling_command : this->used_polling_commands_) {
|
|
@@ -891,6 +902,7 @@ void Pipsolar::add_polling_command_(const char *command, ENUMPollingCommand poll
|
|
|
891
902
|
used_polling_command.errors = 0;
|
|
892
903
|
used_polling_command.identifier = polling_command;
|
|
893
904
|
used_polling_command.length = length - 1;
|
|
905
|
+
used_polling_command.needs_update = true;
|
|
894
906
|
return;
|
|
895
907
|
}
|
|
896
908
|
}
|
|
@@ -25,6 +25,7 @@ struct PollingCommand {
|
|
|
25
25
|
uint8_t length = 0;
|
|
26
26
|
uint8_t errors;
|
|
27
27
|
ENUMPollingCommand identifier;
|
|
28
|
+
bool needs_update;
|
|
28
29
|
};
|
|
29
30
|
|
|
30
31
|
#define PIPSOLAR_VALUED_ENTITY_(type, name, polling_command, value_type) \
|
|
@@ -189,14 +190,14 @@ class Pipsolar : public uart::UARTDevice, public PollingComponent {
|
|
|
189
190
|
static const size_t PIPSOLAR_READ_BUFFER_LENGTH = 110; // maximum supported answer length
|
|
190
191
|
static const size_t COMMAND_QUEUE_LENGTH = 10;
|
|
191
192
|
static const size_t COMMAND_TIMEOUT = 5000;
|
|
192
|
-
|
|
193
|
+
static const size_t POLLING_COMMANDS_MAX = 15;
|
|
193
194
|
void add_polling_command_(const char *command, ENUMPollingCommand polling_command);
|
|
194
195
|
void empty_uart_buffer_();
|
|
195
196
|
uint8_t check_incoming_crc_();
|
|
196
197
|
uint8_t check_incoming_length_(uint8_t length);
|
|
197
198
|
uint16_t pipsolar_crc_(uint8_t *msg, uint8_t len);
|
|
198
|
-
|
|
199
|
-
|
|
199
|
+
bool send_next_command_();
|
|
200
|
+
bool send_next_poll_();
|
|
200
201
|
void queue_command_(const char *command, uint8_t length);
|
|
201
202
|
std::string command_queue_[COMMAND_QUEUE_LENGTH];
|
|
202
203
|
uint8_t command_queue_position_ = 0;
|
|
@@ -216,7 +217,7 @@ class Pipsolar : public uart::UARTDevice, public PollingComponent {
|
|
|
216
217
|
};
|
|
217
218
|
|
|
218
219
|
uint8_t last_polling_command_ = 0;
|
|
219
|
-
PollingCommand used_polling_commands_[
|
|
220
|
+
PollingCommand used_polling_commands_[POLLING_COMMANDS_MAX];
|
|
220
221
|
};
|
|
221
222
|
|
|
222
223
|
} // namespace pipsolar
|
|
@@ -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 {
|
|
@@ -16,6 +16,7 @@ from esphome.components.esp32.const import (
|
|
|
16
16
|
import esphome.config_validation as cv
|
|
17
17
|
from esphome.const import (
|
|
18
18
|
CONF_ADVANCED,
|
|
19
|
+
CONF_DISABLED,
|
|
19
20
|
CONF_FRAMEWORK,
|
|
20
21
|
CONF_ID,
|
|
21
22
|
CONF_MODE,
|
|
@@ -28,12 +29,13 @@ from esphome.core import CORE
|
|
|
28
29
|
import esphome.final_validate as fv
|
|
29
30
|
|
|
30
31
|
CODEOWNERS = ["@esphome/core"]
|
|
32
|
+
DOMAIN = "psram"
|
|
31
33
|
|
|
32
34
|
DEPENDENCIES = [PLATFORM_ESP32]
|
|
33
35
|
|
|
34
36
|
_LOGGER = logging.getLogger(__name__)
|
|
35
37
|
|
|
36
|
-
psram_ns = cg.esphome_ns.namespace(
|
|
38
|
+
psram_ns = cg.esphome_ns.namespace(DOMAIN)
|
|
37
39
|
PsramComponent = psram_ns.class_("PsramComponent", cg.Component)
|
|
38
40
|
|
|
39
41
|
TYPE_QUAD = "quad"
|
|
@@ -101,6 +103,7 @@ def get_config_schema(config):
|
|
|
101
103
|
cv.Optional(CONF_MODE, default=modes[0]): cv.one_of(*modes, lower=True),
|
|
102
104
|
cv.Optional(CONF_ENABLE_ECC, default=False): cv.boolean,
|
|
103
105
|
cv.Optional(CONF_SPEED, default=speeds[0]): cv.one_of(*speeds, upper=True),
|
|
106
|
+
cv.Optional(CONF_DISABLED, default=False): cv.boolean,
|
|
104
107
|
}
|
|
105
108
|
)(config)
|
|
106
109
|
|
|
@@ -111,6 +114,8 @@ FINAL_VALIDATE_SCHEMA = validate_psram_mode
|
|
|
111
114
|
|
|
112
115
|
|
|
113
116
|
async def to_code(config):
|
|
117
|
+
if config[CONF_DISABLED]:
|
|
118
|
+
return
|
|
114
119
|
if CORE.using_arduino:
|
|
115
120
|
cg.add_build_flag("-DBOARD_HAS_PSRAM")
|
|
116
121
|
if config[CONF_MODE] == TYPE_OCTAL:
|
|
@@ -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
|