esphome 2025.7.5__py3-none-any.whl → 2025.8.0b2__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- esphome/__main__.py +189 -82
- esphome/automation.py +2 -4
- esphome/build_gen/__init__.py +0 -0
- esphome/build_gen/platformio.py +102 -0
- esphome/components/a4988/a4988.cpp +0 -1
- esphome/components/absolute_humidity/absolute_humidity.cpp +0 -2
- esphome/components/absolute_humidity/sensor.py +2 -2
- esphome/components/adc/__init__.py +123 -85
- esphome/components/adc/adc_sensor.h +98 -35
- esphome/components/adc/adc_sensor_common.cpp +10 -4
- esphome/components/adc/adc_sensor_esp32.cpp +291 -123
- esphome/components/adc/adc_sensor_esp8266.cpp +1 -4
- esphome/components/adc/adc_sensor_libretiny.cpp +1 -2
- esphome/components/adc/adc_sensor_rp2040.cpp +1 -2
- esphome/components/adc/adc_sensor_zephyr.cpp +207 -0
- esphome/components/adc/sensor.py +61 -27
- esphome/components/adc128s102/adc128s102.cpp +1 -4
- esphome/components/ade7880/sensor.py +75 -49
- esphome/components/ads1115/ads1115.cpp +0 -1
- esphome/components/ads1118/ads1118.cpp +0 -1
- esphome/components/ags10/ags10.cpp +0 -4
- esphome/components/aht10/aht10.cpp +0 -4
- esphome/components/aic3204/aic3204.cpp +0 -2
- esphome/components/airthings_wave_plus/__init__.py +1 -1
- esphome/components/airthings_wave_plus/airthings_wave_plus.cpp +22 -4
- esphome/components/airthings_wave_plus/airthings_wave_plus.h +10 -1
- esphome/components/airthings_wave_plus/sensor.py +55 -28
- esphome/components/alarm_control_panel/__init__.py +4 -9
- esphome/components/am2315c/am2315c.cpp +0 -2
- esphome/components/am2320/am2320.cpp +0 -1
- esphome/components/animation/__init__.py +14 -11
- esphome/components/apds9306/apds9306.cpp +0 -4
- esphome/components/apds9960/apds9960.cpp +0 -1
- esphome/components/api/__init__.py +29 -4
- esphome/components/api/api_connection.cpp +378 -401
- esphome/components/api/api_connection.h +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 +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/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 +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 +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/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 +12 -16
- 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 +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 +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.5.dist-info → esphome-2025.8.0b2.dist-info}/METADATA +13 -14
- {esphome-2025.7.5.dist-info → esphome-2025.8.0b2.dist-info}/RECORD +751 -671
- 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.0b2.dist-info}/WHEEL +0 -0
- {esphome-2025.7.5.dist-info → esphome-2025.8.0b2.dist-info}/entry_points.txt +0 -0
- {esphome-2025.7.5.dist-info → esphome-2025.8.0b2.dist-info}/licenses/LICENSE +0 -0
- {esphome-2025.7.5.dist-info → esphome-2025.8.0b2.dist-info}/top_level.txt +0 -0
|
@@ -2,10 +2,11 @@
|
|
|
2
2
|
|
|
3
3
|
#include <array>
|
|
4
4
|
#include <cstdint>
|
|
5
|
+
#include <cstring>
|
|
6
|
+
#include <limits>
|
|
5
7
|
#include "esphome/core/hal.h"
|
|
6
8
|
|
|
7
|
-
namespace esphome {
|
|
8
|
-
namespace gpio_expander {
|
|
9
|
+
namespace esphome::gpio_expander {
|
|
9
10
|
|
|
10
11
|
/// @brief A class to cache the read state of a GPIO expander.
|
|
11
12
|
/// This class caches reads between GPIO Pins which are on the same bank.
|
|
@@ -17,12 +18,22 @@ namespace gpio_expander {
|
|
|
17
18
|
/// N - Number of pins
|
|
18
19
|
template<typename T, T N> class CachedGpioExpander {
|
|
19
20
|
public:
|
|
21
|
+
/// @brief Read the state of the given pin. This will invalidate the cache for the given pin number.
|
|
22
|
+
/// @param pin Pin number to read
|
|
23
|
+
/// @return Pin state
|
|
20
24
|
bool digital_read(T pin) {
|
|
21
|
-
uint8_t bank = pin /
|
|
22
|
-
|
|
23
|
-
|
|
25
|
+
const uint8_t bank = pin / BANK_SIZE;
|
|
26
|
+
const T pin_mask = (1 << (pin % BANK_SIZE));
|
|
27
|
+
// Check if specific pin cache is valid
|
|
28
|
+
if (this->read_cache_valid_[bank] & pin_mask) {
|
|
29
|
+
// Invalidate pin
|
|
30
|
+
this->read_cache_valid_[bank] &= ~pin_mask;
|
|
31
|
+
} else {
|
|
32
|
+
// Read whole bank from hardware
|
|
24
33
|
if (!this->digital_read_hw(pin))
|
|
25
34
|
return false;
|
|
35
|
+
// Mark bank cache as valid except the pin that is being returned now
|
|
36
|
+
this->read_cache_valid_[bank] = std::numeric_limits<T>::max() & ~pin_mask;
|
|
26
37
|
}
|
|
27
38
|
return this->digital_read_cache(pin);
|
|
28
39
|
}
|
|
@@ -36,18 +47,16 @@ template<typename T, T N> class CachedGpioExpander {
|
|
|
36
47
|
virtual bool digital_read_cache(T pin) = 0;
|
|
37
48
|
/// @brief Call component low level function to write GPIO state to device
|
|
38
49
|
virtual void digital_write_hw(T pin, bool value) = 0;
|
|
39
|
-
const uint8_t cache_byte_size_ = N / (sizeof(T) * BITS_PER_BYTE);
|
|
40
50
|
|
|
41
51
|
/// @brief Invalidate cache. This function should be called in component loop().
|
|
42
|
-
void reset_pin_cache_() {
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
52
|
+
void reset_pin_cache_() { memset(this->read_cache_valid_, 0x00, CACHE_SIZE_BYTES); }
|
|
53
|
+
|
|
54
|
+
static constexpr uint8_t BITS_PER_BYTE = 8;
|
|
55
|
+
static constexpr uint8_t BANK_SIZE = sizeof(T) * BITS_PER_BYTE;
|
|
56
|
+
static constexpr size_t BANKS = N / BANK_SIZE;
|
|
57
|
+
static constexpr size_t CACHE_SIZE_BYTES = BANKS * sizeof(T);
|
|
47
58
|
|
|
48
|
-
|
|
49
|
-
std::array<bool, N / (sizeof(T) * BITS_PER_BYTE)> read_cache_invalidated_{};
|
|
59
|
+
T read_cache_valid_[BANKS]{0};
|
|
50
60
|
};
|
|
51
61
|
|
|
52
|
-
} // namespace gpio_expander
|
|
53
|
-
} // namespace esphome
|
|
62
|
+
} // namespace esphome::gpio_expander
|
|
@@ -84,7 +84,6 @@ CONFIG_SCHEMA = cv.All(
|
|
|
84
84
|
)
|
|
85
85
|
.extend(cv.polling_component_schema("20s"))
|
|
86
86
|
.extend(uart.UART_DEVICE_SCHEMA),
|
|
87
|
-
cv.only_with_arduino,
|
|
88
87
|
)
|
|
89
88
|
FINAL_VALIDATE_SCHEMA = uart.final_validate_device_schema("gps", require_rx=True)
|
|
90
89
|
|
|
@@ -123,4 +122,9 @@ async def to_code(config):
|
|
|
123
122
|
cg.add(var.set_hdop_sensor(sens))
|
|
124
123
|
|
|
125
124
|
# https://platformio.org/lib/show/1655/TinyGPSPlus
|
|
126
|
-
|
|
125
|
+
# Using fork of TinyGPSPlus patched to build on ESP-IDF
|
|
126
|
+
cg.add_library(
|
|
127
|
+
"TinyGPSPlus",
|
|
128
|
+
None,
|
|
129
|
+
"https://github.com/esphome/TinyGPSPlus.git#v1.1.0",
|
|
130
|
+
)
|
esphome/components/gps/gps.cpp
CHANGED
|
@@ -1,5 +1,3 @@
|
|
|
1
|
-
#ifdef USE_ARDUINO
|
|
2
|
-
|
|
3
1
|
#include "gps.h"
|
|
4
2
|
#include "esphome/core/log.h"
|
|
5
3
|
|
|
@@ -22,73 +20,76 @@ void GPS::dump_config() {
|
|
|
22
20
|
}
|
|
23
21
|
|
|
24
22
|
void GPS::update() {
|
|
25
|
-
if (this->latitude_sensor_ != nullptr)
|
|
23
|
+
if (this->latitude_sensor_ != nullptr) {
|
|
26
24
|
this->latitude_sensor_->publish_state(this->latitude_);
|
|
25
|
+
}
|
|
27
26
|
|
|
28
|
-
if (this->longitude_sensor_ != nullptr)
|
|
27
|
+
if (this->longitude_sensor_ != nullptr) {
|
|
29
28
|
this->longitude_sensor_->publish_state(this->longitude_);
|
|
29
|
+
}
|
|
30
30
|
|
|
31
|
-
if (this->speed_sensor_ != nullptr)
|
|
31
|
+
if (this->speed_sensor_ != nullptr) {
|
|
32
32
|
this->speed_sensor_->publish_state(this->speed_);
|
|
33
|
+
}
|
|
33
34
|
|
|
34
|
-
if (this->course_sensor_ != nullptr)
|
|
35
|
+
if (this->course_sensor_ != nullptr) {
|
|
35
36
|
this->course_sensor_->publish_state(this->course_);
|
|
37
|
+
}
|
|
36
38
|
|
|
37
|
-
if (this->altitude_sensor_ != nullptr)
|
|
39
|
+
if (this->altitude_sensor_ != nullptr) {
|
|
38
40
|
this->altitude_sensor_->publish_state(this->altitude_);
|
|
41
|
+
}
|
|
39
42
|
|
|
40
|
-
if (this->satellites_sensor_ != nullptr)
|
|
43
|
+
if (this->satellites_sensor_ != nullptr) {
|
|
41
44
|
this->satellites_sensor_->publish_state(this->satellites_);
|
|
45
|
+
}
|
|
42
46
|
|
|
43
|
-
if (this->hdop_sensor_ != nullptr)
|
|
47
|
+
if (this->hdop_sensor_ != nullptr) {
|
|
44
48
|
this->hdop_sensor_->publish_state(this->hdop_);
|
|
49
|
+
}
|
|
45
50
|
}
|
|
46
51
|
|
|
47
52
|
void GPS::loop() {
|
|
48
53
|
while (this->available() > 0 && !this->has_time_) {
|
|
49
|
-
if (this->tiny_gps_.encode(this->read())) {
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
listener->on_update(this->tiny_gps_);
|
|
86
|
-
}
|
|
54
|
+
if (!this->tiny_gps_.encode(this->read())) {
|
|
55
|
+
continue;
|
|
56
|
+
}
|
|
57
|
+
if (this->tiny_gps_.location.isUpdated()) {
|
|
58
|
+
this->latitude_ = this->tiny_gps_.location.lat();
|
|
59
|
+
this->longitude_ = this->tiny_gps_.location.lng();
|
|
60
|
+
ESP_LOGV(TAG, "Latitude, Longitude: %.6f°, %.6f°", this->latitude_, this->longitude_);
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
if (this->tiny_gps_.speed.isUpdated()) {
|
|
64
|
+
this->speed_ = this->tiny_gps_.speed.kmph();
|
|
65
|
+
ESP_LOGV(TAG, "Speed: %.3f km/h", this->speed_);
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
if (this->tiny_gps_.course.isUpdated()) {
|
|
69
|
+
this->course_ = this->tiny_gps_.course.deg();
|
|
70
|
+
ESP_LOGV(TAG, "Course: %.2f°", this->course_);
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
if (this->tiny_gps_.altitude.isUpdated()) {
|
|
74
|
+
this->altitude_ = this->tiny_gps_.altitude.meters();
|
|
75
|
+
ESP_LOGV(TAG, "Altitude: %.2f m", this->altitude_);
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
if (this->tiny_gps_.satellites.isUpdated()) {
|
|
79
|
+
this->satellites_ = this->tiny_gps_.satellites.value();
|
|
80
|
+
ESP_LOGV(TAG, "Satellites: %d", this->satellites_);
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
if (this->tiny_gps_.hdop.isUpdated()) {
|
|
84
|
+
this->hdop_ = this->tiny_gps_.hdop.hdop();
|
|
85
|
+
ESP_LOGV(TAG, "HDOP: %.3f", this->hdop_);
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
for (auto *listener : this->listeners_) {
|
|
89
|
+
listener->on_update(this->tiny_gps_);
|
|
87
90
|
}
|
|
88
91
|
}
|
|
89
92
|
}
|
|
90
93
|
|
|
91
94
|
} // namespace gps
|
|
92
95
|
} // namespace esphome
|
|
93
|
-
|
|
94
|
-
#endif // USE_ARDUINO
|
esphome/components/gps/gps.h
CHANGED
|
@@ -1,10 +1,8 @@
|
|
|
1
1
|
#pragma once
|
|
2
2
|
|
|
3
|
-
#ifdef USE_ARDUINO
|
|
4
|
-
|
|
5
|
-
#include "esphome/core/component.h"
|
|
6
|
-
#include "esphome/components/uart/uart.h"
|
|
7
3
|
#include "esphome/components/sensor/sensor.h"
|
|
4
|
+
#include "esphome/components/uart/uart.h"
|
|
5
|
+
#include "esphome/core/component.h"
|
|
8
6
|
#include <TinyGPSPlus.h>
|
|
9
7
|
|
|
10
8
|
#include <vector>
|
|
@@ -53,8 +51,9 @@ class GPS : public PollingComponent, public uart::UARTDevice {
|
|
|
53
51
|
float speed_{NAN};
|
|
54
52
|
float course_{NAN};
|
|
55
53
|
float altitude_{NAN};
|
|
56
|
-
uint16_t satellites_{0};
|
|
57
54
|
float hdop_{NAN};
|
|
55
|
+
uint16_t satellites_{0};
|
|
56
|
+
bool has_time_{false};
|
|
58
57
|
|
|
59
58
|
sensor::Sensor *latitude_sensor_{nullptr};
|
|
60
59
|
sensor::Sensor *longitude_sensor_{nullptr};
|
|
@@ -64,12 +63,9 @@ class GPS : public PollingComponent, public uart::UARTDevice {
|
|
|
64
63
|
sensor::Sensor *satellites_sensor_{nullptr};
|
|
65
64
|
sensor::Sensor *hdop_sensor_{nullptr};
|
|
66
65
|
|
|
67
|
-
bool has_time_{false};
|
|
68
66
|
TinyGPSPlus tiny_gps_;
|
|
69
67
|
std::vector<GPSListener *> listeners_{};
|
|
70
68
|
};
|
|
71
69
|
|
|
72
70
|
} // namespace gps
|
|
73
71
|
} // namespace esphome
|
|
74
|
-
|
|
75
|
-
#endif // USE_ARDUINO
|
|
@@ -1,5 +1,3 @@
|
|
|
1
|
-
#ifdef USE_ARDUINO
|
|
2
|
-
|
|
3
1
|
#include "gps_time.h"
|
|
4
2
|
#include "esphome/core/log.h"
|
|
5
3
|
|
|
@@ -9,12 +7,10 @@ namespace gps {
|
|
|
9
7
|
static const char *const TAG = "gps.time";
|
|
10
8
|
|
|
11
9
|
void GPSTime::from_tiny_gps_(TinyGPSPlus &tiny_gps) {
|
|
12
|
-
if (!tiny_gps.time.isValid() || !tiny_gps.date.isValid())
|
|
13
|
-
|
|
14
|
-
if (!tiny_gps.time.isUpdated() || !tiny_gps.date.isUpdated())
|
|
15
|
-
return;
|
|
16
|
-
if (tiny_gps.date.year() < 2019)
|
|
10
|
+
if (!tiny_gps.time.isValid() || !tiny_gps.date.isValid() || !tiny_gps.time.isUpdated() ||
|
|
11
|
+
!tiny_gps.date.isUpdated() || tiny_gps.date.year() < 2025) {
|
|
17
12
|
return;
|
|
13
|
+
}
|
|
18
14
|
|
|
19
15
|
ESPTime val{};
|
|
20
16
|
val.year = tiny_gps.date.year();
|
|
@@ -34,5 +30,3 @@ void GPSTime::from_tiny_gps_(TinyGPSPlus &tiny_gps) {
|
|
|
34
30
|
|
|
35
31
|
} // namespace gps
|
|
36
32
|
} // namespace esphome
|
|
37
|
-
|
|
38
|
-
#endif // USE_ARDUINO
|
|
@@ -1,10 +1,8 @@
|
|
|
1
1
|
#pragma once
|
|
2
2
|
|
|
3
|
-
#ifdef USE_ARDUINO
|
|
4
|
-
|
|
5
|
-
#include "esphome/core/component.h"
|
|
6
|
-
#include "esphome/components/time/real_time_clock.h"
|
|
7
3
|
#include "esphome/components/gps/gps.h"
|
|
4
|
+
#include "esphome/components/time/real_time_clock.h"
|
|
5
|
+
#include "esphome/core/component.h"
|
|
8
6
|
|
|
9
7
|
namespace esphome {
|
|
10
8
|
namespace gps {
|
|
@@ -13,8 +11,9 @@ class GPSTime : public time::RealTimeClock, public GPSListener {
|
|
|
13
11
|
public:
|
|
14
12
|
void update() override { this->from_tiny_gps_(this->get_tiny_gps()); };
|
|
15
13
|
void on_update(TinyGPSPlus &tiny_gps) override {
|
|
16
|
-
if (!this->has_time_)
|
|
14
|
+
if (!this->has_time_) {
|
|
17
15
|
this->from_tiny_gps_(tiny_gps);
|
|
16
|
+
}
|
|
18
17
|
}
|
|
19
18
|
|
|
20
19
|
protected:
|
|
@@ -24,5 +23,3 @@ class GPSTime : public time::RealTimeClock, public GPSListener {
|
|
|
24
23
|
|
|
25
24
|
} // namespace gps
|
|
26
25
|
} // namespace esphome
|
|
27
|
-
|
|
28
|
-
#endif // USE_ARDUINO
|
|
@@ -116,7 +116,7 @@ GRAPH_SCHEMA = cv.Schema(
|
|
|
116
116
|
|
|
117
117
|
|
|
118
118
|
def _relocate_fields_to_subfolder(config, subfolder, subschema):
|
|
119
|
-
fields = [k.schema for k in subschema.schema
|
|
119
|
+
fields = [k.schema for k in subschema.schema]
|
|
120
120
|
fields.remove(CONF_ID)
|
|
121
121
|
if subfolder in config:
|
|
122
122
|
# Ensure no ambiguous fields in base of config
|
|
@@ -33,7 +33,6 @@ bool GroveGasMultichannelV2Component::read_sensor_(uint8_t address, sensor::Sens
|
|
|
33
33
|
}
|
|
34
34
|
|
|
35
35
|
void GroveGasMultichannelV2Component::setup() {
|
|
36
|
-
ESP_LOGCONFIG(TAG, "Running setup");
|
|
37
36
|
// Before reading sensor values, must preheat sensor
|
|
38
37
|
if (!(this->write_bytes(GROVE_GAS_MC_V2_HEAT_ON, {}))) {
|
|
39
38
|
this->mark_failed();
|
|
@@ -20,13 +20,11 @@ static const size_t MAX_BUTTONS = 4; // max number of buttons scanned
|
|
|
20
20
|
|
|
21
21
|
#define ERROR_CHECK(err) \
|
|
22
22
|
if ((err) != i2c::ERROR_OK) { \
|
|
23
|
-
this->status_set_warning(
|
|
23
|
+
this->status_set_warning(ESP_LOG_MSG_COMM_FAIL); \
|
|
24
24
|
return; \
|
|
25
25
|
}
|
|
26
26
|
|
|
27
27
|
void GT911Touchscreen::setup() {
|
|
28
|
-
i2c::ErrorCode err;
|
|
29
|
-
ESP_LOGCONFIG(TAG, "Running setup");
|
|
30
28
|
if (this->reset_pin_ != nullptr) {
|
|
31
29
|
this->reset_pin_->setup();
|
|
32
30
|
this->reset_pin_->digital_write(false);
|
|
@@ -36,9 +34,14 @@ void GT911Touchscreen::setup() {
|
|
|
36
34
|
this->interrupt_pin_->digital_write(false);
|
|
37
35
|
}
|
|
38
36
|
delay(2);
|
|
39
|
-
this->reset_pin_->digital_write(true);
|
|
40
|
-
|
|
37
|
+
this->reset_pin_->digital_write(true); // wait 50ms after reset
|
|
38
|
+
this->set_timeout(50, [this] { this->setup_internal_(); });
|
|
39
|
+
return;
|
|
41
40
|
}
|
|
41
|
+
this->setup_internal_();
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
void GT911Touchscreen::setup_internal_() {
|
|
42
45
|
if (this->interrupt_pin_ != nullptr) {
|
|
43
46
|
// set pre-configured input mode
|
|
44
47
|
this->interrupt_pin_->setup();
|
|
@@ -46,7 +49,7 @@ void GT911Touchscreen::setup() {
|
|
|
46
49
|
|
|
47
50
|
// check the configuration of the int line.
|
|
48
51
|
uint8_t data[4];
|
|
49
|
-
err = this->write(GET_SWITCHES, sizeof(GET_SWITCHES));
|
|
52
|
+
i2c::ErrorCode err = this->write(GET_SWITCHES, sizeof(GET_SWITCHES));
|
|
50
53
|
if (err != i2c::ERROR_OK && this->address_ == PRIMARY_ADDRESS) {
|
|
51
54
|
this->address_ = SECONDARY_ADDRESS;
|
|
52
55
|
err = this->write(GET_SWITCHES, sizeof(GET_SWITCHES));
|
|
@@ -54,7 +57,7 @@ void GT911Touchscreen::setup() {
|
|
|
54
57
|
if (err == i2c::ERROR_OK) {
|
|
55
58
|
err = this->read(data, 1);
|
|
56
59
|
if (err == i2c::ERROR_OK) {
|
|
57
|
-
ESP_LOGD(TAG, "
|
|
60
|
+
ESP_LOGD(TAG, "Switches ADDR: 0x%02X DATA: 0x%02X", this->address_, data[0]);
|
|
58
61
|
if (this->interrupt_pin_ != nullptr) {
|
|
59
62
|
this->attach_interrupt_(this->interrupt_pin_,
|
|
60
63
|
(data[0] & 1) ? gpio::INTERRUPT_FALLING_EDGE : gpio::INTERRUPT_RISING_EDGE);
|
|
@@ -76,18 +79,24 @@ void GT911Touchscreen::setup() {
|
|
|
76
79
|
}
|
|
77
80
|
}
|
|
78
81
|
if (err != i2c::ERROR_OK) {
|
|
79
|
-
this->mark_failed("
|
|
82
|
+
this->mark_failed("Calibration error");
|
|
80
83
|
return;
|
|
81
84
|
}
|
|
82
85
|
}
|
|
86
|
+
|
|
83
87
|
if (err != i2c::ERROR_OK) {
|
|
84
|
-
this->mark_failed(
|
|
88
|
+
this->mark_failed(ESP_LOG_MSG_COMM_FAIL);
|
|
89
|
+
return;
|
|
85
90
|
}
|
|
86
|
-
|
|
87
|
-
ESP_LOGCONFIG(TAG, "GT911 Touchscreen setup complete");
|
|
91
|
+
this->setup_done_ = true;
|
|
88
92
|
}
|
|
89
93
|
|
|
90
94
|
void GT911Touchscreen::update_touches() {
|
|
95
|
+
this->skip_update_ = true; // skip send touch events by default, set to false after successful error checks
|
|
96
|
+
if (!this->setup_done_) {
|
|
97
|
+
return;
|
|
98
|
+
}
|
|
99
|
+
|
|
91
100
|
i2c::ErrorCode err;
|
|
92
101
|
uint8_t touch_state = 0;
|
|
93
102
|
uint8_t data[MAX_TOUCHES + 1][8]; // 8 bytes each for each point, plus extra space for the key byte
|
|
@@ -100,7 +109,6 @@ void GT911Touchscreen::update_touches() {
|
|
|
100
109
|
uint8_t num_of_touches = touch_state & 0x07;
|
|
101
110
|
|
|
102
111
|
if ((touch_state & 0x80) == 0 || num_of_touches > MAX_TOUCHES) {
|
|
103
|
-
this->skip_update_ = true; // skip send touch events, touchscreen is not ready yet.
|
|
104
112
|
return;
|
|
105
113
|
}
|
|
106
114
|
|
|
@@ -110,6 +118,7 @@ void GT911Touchscreen::update_touches() {
|
|
|
110
118
|
err = this->read(data[0], sizeof(data[0]) * num_of_touches + 1);
|
|
111
119
|
ERROR_CHECK(err);
|
|
112
120
|
|
|
121
|
+
this->skip_update_ = false; // All error checks passed, send touch events
|
|
113
122
|
for (uint8_t i = 0; i != num_of_touches; i++) {
|
|
114
123
|
uint16_t id = data[i][0];
|
|
115
124
|
uint16_t x = encode_uint16(data[i][2], data[i][1]);
|
|
@@ -15,8 +15,20 @@ class GT911ButtonListener {
|
|
|
15
15
|
|
|
16
16
|
class GT911Touchscreen : public touchscreen::Touchscreen, public i2c::I2CDevice {
|
|
17
17
|
public:
|
|
18
|
+
/// @brief Initialize the GT911 touchscreen.
|
|
19
|
+
///
|
|
20
|
+
/// If @ref reset_pin_ is set, the touchscreen will be hardware reset,
|
|
21
|
+
/// and the rest of the setup will be scheduled to run 50ms later using @ref set_timeout()
|
|
22
|
+
/// to allow the device to stabilize after reset.
|
|
23
|
+
///
|
|
24
|
+
/// If @ref interrupt_pin_ is set, it will be temporarily configured during reset
|
|
25
|
+
/// to control I2C address selection.
|
|
26
|
+
///
|
|
27
|
+
/// After the timeout, or immediately if no reset is performed, @ref setup_internal_()
|
|
28
|
+
/// is called to complete the initialization.
|
|
18
29
|
void setup() override;
|
|
19
30
|
void dump_config() override;
|
|
31
|
+
bool can_proceed() override { return this->setup_done_; }
|
|
20
32
|
|
|
21
33
|
void set_interrupt_pin(InternalGPIOPin *pin) { this->interrupt_pin_ = pin; }
|
|
22
34
|
void set_reset_pin(GPIOPin *pin) { this->reset_pin_ = pin; }
|
|
@@ -25,8 +37,20 @@ class GT911Touchscreen : public touchscreen::Touchscreen, public i2c::I2CDevice
|
|
|
25
37
|
protected:
|
|
26
38
|
void update_touches() override;
|
|
27
39
|
|
|
28
|
-
|
|
29
|
-
|
|
40
|
+
/// @brief Perform the internal setup routine for the GT911 touchscreen.
|
|
41
|
+
///
|
|
42
|
+
/// This function checks the I2C address, configures the interrupt pin (if available),
|
|
43
|
+
/// reads the touchscreen mode from the controller, and attempts to read calibration
|
|
44
|
+
/// data (maximum X and Y values) if not already set.
|
|
45
|
+
///
|
|
46
|
+
/// On success, sets @ref setup_done_ to true.
|
|
47
|
+
/// On failure, calls @ref mark_failed() with an appropriate error message.
|
|
48
|
+
void setup_internal_();
|
|
49
|
+
/// @brief True if the touchscreen setup has completed successfully.
|
|
50
|
+
bool setup_done_{false};
|
|
51
|
+
|
|
52
|
+
InternalGPIOPin *interrupt_pin_{nullptr};
|
|
53
|
+
GPIOPin *reset_pin_{nullptr};
|
|
30
54
|
std::vector<GT911ButtonListener *> button_listeners_;
|
|
31
55
|
uint8_t button_state_{0xFF}; // last button state. Initial FF guarantees first update.
|
|
32
56
|
};
|
|
@@ -330,8 +330,7 @@ HAIER_HON_BASE_ACTION_SCHEMA = automation.maybe_simple_id(
|
|
|
330
330
|
)
|
|
331
331
|
async def display_action_to_code(config, action_id, template_arg, args):
|
|
332
332
|
paren = await cg.get_variable(config[CONF_ID])
|
|
333
|
-
|
|
334
|
-
return var
|
|
333
|
+
return cg.new_Pvariable(action_id, template_arg, paren)
|
|
335
334
|
|
|
336
335
|
|
|
337
336
|
@automation.register_action(
|
|
@@ -342,8 +341,7 @@ async def display_action_to_code(config, action_id, template_arg, args):
|
|
|
342
341
|
)
|
|
343
342
|
async def beeper_action_to_code(config, action_id, template_arg, args):
|
|
344
343
|
paren = await cg.get_variable(config[CONF_ID])
|
|
345
|
-
|
|
346
|
-
return var
|
|
344
|
+
return cg.new_Pvariable(action_id, template_arg, paren)
|
|
347
345
|
|
|
348
346
|
|
|
349
347
|
# Start self cleaning or steri-cleaning action action
|
|
@@ -359,8 +357,7 @@ async def beeper_action_to_code(config, action_id, template_arg, args):
|
|
|
359
357
|
)
|
|
360
358
|
async def start_cleaning_to_code(config, action_id, template_arg, args):
|
|
361
359
|
paren = await cg.get_variable(config[CONF_ID])
|
|
362
|
-
|
|
363
|
-
return var
|
|
360
|
+
return cg.new_Pvariable(action_id, template_arg, paren)
|
|
364
361
|
|
|
365
362
|
|
|
366
363
|
# Set vertical airflow direction action
|
|
@@ -417,8 +414,7 @@ async def haier_set_horizontal_airflow_to_code(config, action_id, template_arg,
|
|
|
417
414
|
)
|
|
418
415
|
async def health_action_to_code(config, action_id, template_arg, args):
|
|
419
416
|
paren = await cg.get_variable(config[CONF_ID])
|
|
420
|
-
|
|
421
|
-
return var
|
|
417
|
+
return cg.new_Pvariable(action_id, template_arg, paren)
|
|
422
418
|
|
|
423
419
|
|
|
424
420
|
@automation.register_action(
|
|
@@ -432,8 +428,7 @@ async def health_action_to_code(config, action_id, template_arg, args):
|
|
|
432
428
|
)
|
|
433
429
|
async def power_action_to_code(config, action_id, template_arg, args):
|
|
434
430
|
paren = await cg.get_variable(config[CONF_ID])
|
|
435
|
-
|
|
436
|
-
return var
|
|
431
|
+
return cg.new_Pvariable(action_id, template_arg, paren)
|
|
437
432
|
|
|
438
433
|
|
|
439
434
|
def _final_validate(config):
|
|
@@ -242,7 +242,6 @@ haier_protocol::HandlerError HaierClimateBase::timeout_default_handler_(haier_pr
|
|
|
242
242
|
}
|
|
243
243
|
|
|
244
244
|
void HaierClimateBase::setup() {
|
|
245
|
-
ESP_LOGCONFIG(TAG, "Running setup");
|
|
246
245
|
// Set timestamp here to give AC time to boot
|
|
247
246
|
this->last_request_timestamp_ = std::chrono::steady_clock::now();
|
|
248
247
|
this->set_phase(ProtocolPhases::SENDING_INIT_1);
|
|
@@ -10,8 +10,6 @@ static const char *const TAG = "switch.hbridge";
|
|
|
10
10
|
|
|
11
11
|
float HBridgeSwitch::get_setup_priority() const { return setup_priority::HARDWARE; }
|
|
12
12
|
void HBridgeSwitch::setup() {
|
|
13
|
-
ESP_LOGCONFIG(TAG, "Running setup for '%s'", this->name_.c_str());
|
|
14
|
-
|
|
15
13
|
optional<bool> initial_state = this->get_initial_state_with_restore_mode();
|
|
16
14
|
|
|
17
15
|
// Like GPIOSwitch does, set the pin state both before and after pin setup()
|
|
@@ -13,8 +13,6 @@ static const uint8_t HDC1080_CMD_TEMPERATURE = 0x00;
|
|
|
13
13
|
static const uint8_t HDC1080_CMD_HUMIDITY = 0x01;
|
|
14
14
|
|
|
15
15
|
void HDC1080Component::setup() {
|
|
16
|
-
ESP_LOGCONFIG(TAG, "Running setup");
|
|
17
|
-
|
|
18
16
|
const uint8_t data[2] = {
|
|
19
17
|
0b00000000, // resolution 14bit for both humidity and temperature
|
|
20
18
|
0b00000000 // reserved
|
|
@@ -126,6 +126,6 @@ async def to_code(config):
|
|
|
126
126
|
cg.add(var.set_max_temperature(config[CONF_MAX_TEMPERATURE]))
|
|
127
127
|
cg.add(var.set_min_temperature(config[CONF_MIN_TEMPERATURE]))
|
|
128
128
|
|
|
129
|
-
cg.add_library("tonia/HeatpumpIR", "1.0.
|
|
130
|
-
if CORE.is_libretiny:
|
|
129
|
+
cg.add_library("tonia/HeatpumpIR", "1.0.37")
|
|
130
|
+
if CORE.is_libretiny or CORE.is_esp32:
|
|
131
131
|
CORE.add_platformio_option("lib_ignore", "IRremoteESP8266")
|
|
@@ -11,7 +11,6 @@ static const uint32_t HLW8012_CLOCK_FREQUENCY = 3579000;
|
|
|
11
11
|
|
|
12
12
|
void HLW8012Component::setup() {
|
|
13
13
|
float reference_voltage = 0;
|
|
14
|
-
ESP_LOGCONFIG(TAG, "Running setup");
|
|
15
14
|
this->sel_pin_->setup();
|
|
16
15
|
this->sel_pin_->digital_write(this->current_mode_);
|
|
17
16
|
this->cf_store_.pulse_counter_setup(this->cf_pin_);
|
|
@@ -11,7 +11,6 @@ static const uint8_t PM_2_5_VALUE_INDEX = 6;
|
|
|
11
11
|
static const uint8_t PM_10_0_VALUE_INDEX = 7;
|
|
12
12
|
|
|
13
13
|
void HM3301Component::setup() {
|
|
14
|
-
ESP_LOGCONFIG(TAG, "Running setup");
|
|
15
14
|
if (i2c::ERROR_OK != this->write(&SELECT_COMM_CMD, 1)) {
|
|
16
15
|
error_code_ = ERROR_COMM;
|
|
17
16
|
this->mark_failed();
|
|
@@ -22,7 +22,6 @@ static const uint8_t HMC5883L_REGISTER_IDENTIFICATION_B = 0x0B;
|
|
|
22
22
|
static const uint8_t HMC5883L_REGISTER_IDENTIFICATION_C = 0x0C;
|
|
23
23
|
|
|
24
24
|
void HMC5883LComponent::setup() {
|
|
25
|
-
ESP_LOGCONFIG(TAG, "Running setup");
|
|
26
25
|
uint8_t id[3];
|
|
27
26
|
if (!this->read_byte(HMC5883L_REGISTER_IDENTIFICATION_A, &id[0]) ||
|
|
28
27
|
!this->read_byte(HMC5883L_REGISTER_IDENTIFICATION_B, &id[1]) ||
|
|
@@ -83,18 +83,22 @@ void HomeassistantNumber::control(float value) {
|
|
|
83
83
|
|
|
84
84
|
this->publish_state(value);
|
|
85
85
|
|
|
86
|
+
static constexpr auto SERVICE_NAME = StringRef::from_lit("number.set_value");
|
|
87
|
+
static constexpr auto ENTITY_ID_KEY = StringRef::from_lit("entity_id");
|
|
88
|
+
static constexpr auto VALUE_KEY = StringRef::from_lit("value");
|
|
89
|
+
|
|
86
90
|
api::HomeassistantServiceResponse resp;
|
|
87
|
-
resp.
|
|
91
|
+
resp.set_service(SERVICE_NAME);
|
|
88
92
|
|
|
89
|
-
|
|
90
|
-
entity_id
|
|
93
|
+
resp.data.emplace_back();
|
|
94
|
+
auto &entity_id = resp.data.back();
|
|
95
|
+
entity_id.set_key(ENTITY_ID_KEY);
|
|
91
96
|
entity_id.value = this->entity_id_;
|
|
92
|
-
resp.data.push_back(entity_id);
|
|
93
97
|
|
|
94
|
-
|
|
95
|
-
entity_value
|
|
98
|
+
resp.data.emplace_back();
|
|
99
|
+
auto &entity_value = resp.data.back();
|
|
100
|
+
entity_value.set_key(VALUE_KEY);
|
|
96
101
|
entity_value.value = to_string(value);
|
|
97
|
-
resp.data.push_back(entity_value);
|
|
98
102
|
|
|
99
103
|
api::global_api_server->send_homeassistant_service_call(resp);
|
|
100
104
|
}
|