esphome 2025.5.2__py3-none-any.whl → 2025.6.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 +20 -14
- esphome/components/a4988/a4988.cpp +1 -1
- esphome/components/absolute_humidity/absolute_humidity.cpp +6 -4
- esphome/components/ac_dimmer/ac_dimmer.cpp +4 -2
- esphome/components/adc/adc_sensor_esp32.cpp +5 -3
- esphome/components/adc/adc_sensor_esp8266.cpp +5 -3
- esphome/components/adc/adc_sensor_libretiny.cpp +5 -3
- esphome/components/adc/adc_sensor_rp2040.cpp +5 -3
- esphome/components/adc128s102/adc128s102.cpp +1 -1
- esphome/components/ade7880/ade7880.cpp +28 -17
- esphome/components/ade7953_base/ade7953_base.cpp +12 -9
- esphome/components/ade7953_i2c/ade7953_i2c.cpp +1 -1
- esphome/components/ade7953_spi/ade7953_spi.cpp +1 -1
- esphome/components/ads1115/ads1115.cpp +3 -5
- esphome/components/ads1118/ads1118.cpp +2 -1
- esphome/components/ags10/ags10.cpp +3 -2
- esphome/components/aht10/aht10.cpp +27 -29
- esphome/components/aic3204/aic3204.cpp +2 -2
- esphome/components/alarm_control_panel/__init__.py +1 -0
- esphome/components/am2315c/am2315c.cpp +2 -2
- esphome/components/am2320/am2320.cpp +2 -2
- esphome/components/am43/am43_base.h +1 -1
- esphome/components/am43/cover/am43_cover.cpp +4 -2
- esphome/components/analog_threshold/analog_threshold_binary_sensor.cpp +4 -2
- esphome/components/apds9306/apds9306.cpp +8 -5
- esphome/components/apds9960/apds9960.cpp +2 -2
- esphome/components/api/__init__.py +5 -0
- esphome/components/api/api_connection.cpp +753 -379
- esphome/components/api/api_connection.h +341 -283
- esphome/components/api/api_frame_helper.cpp +349 -344
- esphome/components/api/api_frame_helper.h +121 -94
- esphome/components/api/api_pb2.cpp +3 -0
- esphome/components/api/api_pb2.h +702 -227
- esphome/components/api/api_pb2_service.cpp +12 -688
- esphome/components/api/api_pb2_service.h +53 -207
- esphome/components/api/api_server.cpp +71 -29
- esphome/components/api/api_server.h +9 -0
- esphome/components/api/client.py +5 -4
- esphome/components/api/homeassistant_service.h +1 -1
- esphome/components/api/list_entities.cpp +1 -1
- esphome/components/api/proto.cpp +1 -0
- esphome/components/api/proto.h +5 -4
- esphome/components/api/subscribe_state.cpp +8 -16
- esphome/components/as3935/as3935.cpp +3 -3
- esphome/components/as5600/as5600.cpp +9 -7
- esphome/components/as7341/as7341.cpp +7 -5
- esphome/components/at581x/at581x.cpp +13 -10
- esphome/components/atm90e26/atm90e26.cpp +2 -2
- esphome/components/atm90e32/atm90e32.cpp +3 -3
- esphome/components/axs15231/touchscreen/axs15231_touchscreen.cpp +5 -3
- esphome/components/bang_bang/bang_bang_climate.cpp +8 -5
- esphome/components/bedjet/bedjet_hub.cpp +6 -4
- esphome/components/beken_spi_led_strip/led_strip.cpp +11 -7
- esphome/components/bh1750/bh1750.cpp +2 -2
- esphome/components/binary_sensor/__init__.py +1 -0
- esphome/components/binary_sensor/automation.cpp +1 -2
- esphome/components/bl0906/bl0906.cpp +1 -1
- esphome/components/bl0942/bl0942.cpp +11 -8
- esphome/components/bl0942/sensor.py +1 -1
- esphome/components/ble_client/__init__.py +5 -1
- esphome/components/ble_client/output/ble_binary_output.cpp +6 -3
- esphome/components/ble_client/sensor/ble_sensor.cpp +9 -6
- esphome/components/ble_client/text_sensor/ble_text_sensor.cpp +8 -5
- esphome/components/bluetooth_proxy/__init__.py +5 -1
- esphome/components/bluetooth_proxy/bluetooth_connection.cpp +5 -5
- esphome/components/bluetooth_proxy/bluetooth_proxy.cpp +18 -16
- esphome/components/bluetooth_proxy/bluetooth_proxy.h +1 -1
- esphome/components/bme280_base/bme280_base.cpp +5 -6
- esphome/components/bme680/bme680.cpp +3 -3
- esphome/components/bme680/sensor.py +2 -2
- esphome/components/bme680_bsec/bme680_bsec.cpp +11 -7
- esphome/components/bme680_bsec/sensor.py +7 -3
- esphome/components/bme68x_bsec2/__init__.py +6 -5
- esphome/components/bme68x_bsec2/bme68x_bsec2.cpp +17 -13
- esphome/components/bme68x_bsec2/sensor.py +4 -4
- esphome/components/bme68x_bsec2_i2c/bme68x_bsec2_i2c.cpp +1 -0
- esphome/components/bmi160/bmi160.cpp +11 -11
- esphome/components/bmp085/bmp085.cpp +2 -2
- esphome/components/bmp280_base/bmp280_base.cpp +3 -3
- esphome/components/bmp3xx_base/bmp3xx_base.cpp +13 -13
- esphome/components/bmp581/bmp581.cpp +33 -27
- esphome/components/bp1658cj/bp1658cj.cpp +5 -3
- esphome/components/bp5758d/bp5758d.cpp +1 -1
- esphome/components/button/__init__.py +1 -0
- esphome/components/canbus/canbus.cpp +1 -1
- esphome/components/cap1188/cap1188.cpp +6 -4
- esphome/components/captive_portal/captive_portal.cpp +1 -1
- esphome/components/ccs811/ccs811.cpp +3 -2
- esphome/components/cd74hc4067/cd74hc4067.cpp +1 -1
- esphome/components/ch422g/ch422g.cpp +2 -2
- esphome/components/chsc6x/chsc6x_touchscreen.cpp +6 -4
- esphome/components/climate/__init__.py +1 -0
- esphome/components/climate/climate.cpp +12 -7
- esphome/components/climate/climate.h +1 -1
- esphome/components/climate_ir/climate_ir.cpp +7 -4
- esphome/components/cm1106/__init__.py +1 -0
- esphome/components/cm1106/cm1106.cpp +112 -0
- esphome/components/cm1106/cm1106.h +40 -0
- esphome/components/cm1106/sensor.py +72 -0
- esphome/components/const/__init__.py +1 -0
- esphome/components/cover/__init__.py +1 -0
- esphome/components/cs5460a/cs5460a.cpp +16 -11
- esphome/components/cse7761/cse7761.cpp +2 -2
- esphome/components/cse7766/cse7766.cpp +0 -5
- esphome/components/cse7766/cse7766.h +5 -1
- esphome/components/cst226/touchscreen/cst226_touchscreen.cpp +1 -1
- esphome/components/cst816/touchscreen/cst816_touchscreen.cpp +6 -3
- esphome/components/current_based/current_based_cover.cpp +4 -2
- esphome/components/dac7678/dac7678_output.cpp +4 -4
- esphome/components/dallas_temp/dallas_temp.cpp +2 -3
- esphome/components/daly_bms/daly_bms.cpp +2 -1
- esphome/components/dashboard_import/__init__.py +1 -2
- esphome/components/datetime/__init__.py +3 -1
- esphome/components/datetime/date_entity.cpp +5 -5
- esphome/components/datetime/datetime_base.h +0 -5
- esphome/components/datetime/datetime_entity.cpp +8 -8
- esphome/components/datetime/time_entity.cpp +4 -4
- esphome/components/debug/debug_component.cpp +1 -1
- esphome/components/debug/debug_component.h +1 -1
- esphome/components/debug/debug_esp32.cpp +4 -2
- esphome/components/deep_sleep/deep_sleep_component.cpp +11 -5
- esphome/components/deep_sleep/deep_sleep_esp32.cpp +7 -5
- esphome/components/demo/__init__.py +206 -0
- esphome/components/demo/demo_alarm_control_panel.h +65 -0
- esphome/components/demo/demo_button.h +15 -0
- esphome/components/demo/demo_date.h +34 -0
- esphome/components/demo/demo_datetime.h +40 -0
- esphome/components/demo/demo_lock.h +17 -0
- esphome/components/demo/demo_select.h +15 -0
- esphome/components/demo/demo_text.h +18 -0
- esphome/components/demo/demo_time.h +34 -0
- esphome/components/demo/demo_valve.h +54 -0
- esphome/components/dfrobot_sen0395/commands.cpp +3 -3
- esphome/components/dht/dht.cpp +29 -50
- esphome/components/dht12/dht12.cpp +2 -2
- esphome/components/display/display.h +5 -3
- esphome/components/dps310/dps310.cpp +7 -5
- esphome/components/ds1307/ds1307.cpp +2 -2
- esphome/components/dsmr/dsmr.cpp +5 -3
- esphome/components/duty_cycle/duty_cycle_sensor.cpp +2 -2
- esphome/components/duty_time/duty_time_sensor.cpp +5 -3
- esphome/components/ee895/ee895.cpp +3 -3
- esphome/components/ektf2232/touchscreen/ektf2232.cpp +1 -1
- esphome/components/emc2101/emc2101.cpp +11 -9
- esphome/components/ens160_base/ens160_base.cpp +2 -2
- esphome/components/ens210/ens210.cpp +2 -2
- esphome/components/es7210/es7210.cpp +6 -4
- esphome/components/es7243e/es7243e.cpp +1 -1
- esphome/components/es8156/es8156.cpp +1 -1
- esphome/components/es8311/es8311.cpp +8 -6
- esphome/components/es8388/__init__.py +0 -0
- esphome/components/es8388/audio_dac.py +26 -0
- esphome/components/es8388/es8388.cpp +289 -0
- esphome/components/es8388/es8388.h +81 -0
- esphome/components/es8388/es8388_const.h +83 -0
- esphome/components/es8388/select/__init__.py +47 -0
- esphome/components/es8388/select/adc_input_mic_select.cpp +12 -0
- esphome/components/es8388/select/adc_input_mic_select.h +15 -0
- esphome/components/es8388/select/dac_output_select.cpp +12 -0
- esphome/components/es8388/select/dac_output_select.h +15 -0
- esphome/components/esp32/__init__.py +118 -23
- esphome/components/esp32/boards.py +208 -125
- esphome/components/esp32/const.py +6 -0
- esphome/components/esp32/gpio.py +14 -1
- esphome/components/esp32/gpio_esp32_c5.py +45 -0
- esphome/components/esp32/gpio_esp32_p4.py +43 -0
- esphome/components/esp32/preferences.cpp +7 -7
- esphome/components/esp32_ble/__init__.py +115 -0
- esphome/components/esp32_ble/ble.cpp +101 -54
- esphome/components/esp32_ble/ble.h +24 -5
- esphome/components/esp32_ble/ble_event.h +172 -32
- esphome/components/esp32_ble/ble_scan_result.h +24 -0
- esphome/components/esp32_ble/ble_uuid.h +1 -1
- esphome/components/esp32_ble/queue.h +53 -27
- esphome/components/esp32_ble_client/ble_client_base.cpp +4 -2
- esphome/components/esp32_ble_server/__init__.py +4 -1
- esphome/components/esp32_ble_server/ble_characteristic.cpp +1 -0
- esphome/components/esp32_ble_server/ble_server.h +0 -1
- esphome/components/esp32_ble_tracker/__init__.py +7 -2
- esphome/components/esp32_ble_tracker/esp32_ble_tracker.cpp +107 -75
- esphome/components/esp32_ble_tracker/esp32_ble_tracker.h +16 -16
- esphome/components/esp32_camera/esp32_camera.cpp +35 -27
- esphome/components/esp32_camera_web_server/camera_web_server.cpp +4 -2
- esphome/components/esp32_dac/esp32_dac.cpp +2 -2
- esphome/components/esp32_improv/__init__.py +5 -1
- esphome/components/esp32_improv/esp32_improv_component.cpp +2 -2
- esphome/components/esp32_rmt_led_strip/led_strip.cpp +11 -7
- esphome/components/esp32_rmt_led_strip/light.py +5 -1
- esphome/components/esp32_touch/esp32_touch.cpp +12 -8
- esphome/components/esp8266/preferences.cpp +6 -6
- esphome/components/esp8266_pwm/esp8266_pwm.cpp +3 -3
- esphome/components/esp_ldo/__init__.py +91 -0
- esphome/components/esp_ldo/esp_ldo.cpp +43 -0
- esphome/components/esp_ldo/esp_ldo.h +43 -0
- esphome/components/esphome/ota/ota_esphome.cpp +15 -8
- esphome/components/ethernet/ethernet_component.cpp +38 -26
- esphome/components/ethernet/ethernet_component.h +1 -1
- esphome/components/event/__init__.py +1 -0
- esphome/components/exposure_notifications/exposure_notifications.cpp +1 -1
- esphome/components/ezo/ezo.cpp +1 -1
- esphome/components/ezo_pmp/ezo_pmp.cpp +1 -1
- esphome/components/factory_reset/button/factory_reset_button.cpp +1 -1
- esphome/components/factory_reset/switch/factory_reset_switch.cpp +1 -1
- esphome/components/fan/__init__.py +1 -0
- esphome/components/fan/fan.cpp +30 -19
- esphome/components/fastled_base/fastled_light.cpp +7 -5
- esphome/components/fingerprint_grow/fingerprint_grow.cpp +8 -6
- esphome/components/fs3000/fs3000.cpp +1 -1
- esphome/components/ft5x06/touchscreen/ft5x06_touchscreen.cpp +7 -4
- esphome/components/ft63x6/ft63x6.cpp +5 -3
- esphome/components/gcja5/gcja5.cpp +0 -12
- esphome/components/gcja5/gcja5.h +8 -3
- esphome/components/gdk101/gdk101.cpp +2 -2
- esphome/components/globals/globals_component.h +13 -10
- esphome/components/gp2y1010au0f/gp2y1010au0f.cpp +4 -2
- esphome/components/gp8403/gp8403.cpp +4 -2
- esphome/components/gp8403/output/gp8403_output.cpp +4 -2
- esphome/components/gpio/one_wire/gpio_one_wire.cpp +2 -2
- esphome/components/gpio/output/gpio_binary_output.cpp +1 -1
- esphome/components/gpio/switch/gpio_switch.cpp +1 -1
- esphome/components/graphical_display_menu/graphical_display_menu.cpp +12 -8
- esphome/components/grove_gas_mc_v2/grove_gas_mc_v2.cpp +5 -6
- esphome/components/grove_tb6612fng/grove_tb6612fng.cpp +1 -1
- esphome/components/grove_tb6612fng/grove_tb6612fng.h +1 -1
- esphome/components/growatt_solar/growatt_solar.cpp +6 -3
- esphome/components/gt911/touchscreen/gt911_touchscreen.cpp +1 -1
- esphome/components/haier/haier_base.cpp +2 -2
- esphome/components/haier/hon_climate.cpp +13 -6
- esphome/components/havells_solar/havells_solar.cpp +5 -2
- esphome/components/hbridge/switch/hbridge_switch.cpp +1 -1
- esphome/components/hdc1080/hdc1080.cpp +2 -2
- esphome/components/he60r/he60r.cpp +4 -2
- esphome/components/hlw8012/hlw8012.cpp +6 -4
- esphome/components/hm3301/hm3301.cpp +2 -2
- esphome/components/hmc5883l/hmc5883l.cpp +2 -2
- esphome/components/homeassistant/time/homeassistant_time.cpp +4 -2
- esphome/components/honeywell_hih_i2c/honeywell_hih.cpp +4 -4
- esphome/components/honeywellabp/honeywellabp.cpp +4 -2
- esphome/components/honeywellabp2_i2c/honeywellabp2.cpp +8 -6
- esphome/components/hte501/hte501.cpp +3 -2
- esphome/components/http_request/__init__.py +2 -2
- esphome/components/http_request/http_request.cpp +7 -5
- esphome/components/http_request/http_request_idf.cpp +4 -2
- esphome/components/http_request/ota/ota_http_request.cpp +1 -1
- esphome/components/htu21d/htu21d.cpp +2 -2
- esphome/components/htu31d/htu31d.cpp +2 -2
- esphome/components/hx711/hx711.cpp +2 -2
- esphome/components/hydreon_rgxx/hydreon_rgxx.cpp +5 -3
- esphome/components/hyt271/hyt271.cpp +2 -2
- esphome/components/i2c/i2c_bus_arduino.cpp +14 -11
- esphome/components/i2c/i2c_bus_esp_idf.cpp +13 -11
- esphome/components/i2s_audio/__init__.py +2 -0
- esphome/components/i2s_audio/i2s_audio.cpp +3 -4
- esphome/components/i2s_audio/i2s_audio.h +1 -1
- esphome/components/i2s_audio/media_player/__init__.py +1 -1
- esphome/components/i2s_audio/media_player/i2s_audio_media_player.cpp +5 -3
- esphome/components/i2s_audio/microphone/i2s_audio_microphone.cpp +13 -10
- esphome/components/i2s_audio/speaker/i2s_audio_speaker.cpp +1 -1
- esphome/components/iaqcore/iaqcore.cpp +3 -3
- esphome/components/ili9xxx/ili9xxx_display.cpp +12 -7
- esphome/components/ili9xxx/ili9xxx_display.h +1 -1
- esphome/components/image/image.cpp +1 -0
- esphome/components/ina219/ina219.cpp +2 -2
- esphome/components/ina226/ina226.cpp +8 -5
- esphome/components/ina260/ina260.cpp +1 -1
- esphome/components/ina2xx_base/ina2xx_base.cpp +13 -9
- esphome/components/ina3221/ina3221.cpp +2 -2
- esphome/components/inkplate6/display.py +12 -2
- esphome/components/inkplate6/inkplate.cpp +13 -9
- esphome/components/inkplate6/inkplate.h +7 -6
- esphome/components/integration/integration_sensor.cpp +1 -1
- esphome/components/internal_temperature/internal_temperature.cpp +4 -4
- esphome/components/json/json_util.cpp +4 -5
- esphome/components/kamstrup_kmp/kamstrup_kmp.cpp +1 -1
- esphome/components/key_collector/key_collector.cpp +4 -2
- esphome/components/kmeteriso/kmeteriso.cpp +4 -4
- esphome/components/kuntze/kuntze.cpp +4 -2
- esphome/components/lc709203f/__init__.py +1 -0
- esphome/components/lc709203f/lc709203f.cpp +299 -0
- esphome/components/lc709203f/lc709203f.h +55 -0
- esphome/components/lc709203f/sensor.py +93 -0
- esphome/components/lcd_base/lcd_display.cpp +2 -2
- esphome/components/lcd_gpio/gpio_lcd_display.cpp +5 -3
- esphome/components/lcd_menu/lcd_menu.cpp +6 -4
- esphome/components/lcd_pcf8574/pcf8574_display.cpp +6 -4
- esphome/components/ld2410/ld2410.cpp +6 -7
- esphome/components/ld2420/ld2420.cpp +9 -7
- esphome/components/ld2450/ld2450.cpp +6 -4
- esphome/components/ld2450/sensor.py +2 -2
- esphome/components/ledc/ledc_output.cpp +32 -28
- esphome/components/libretiny/const.py +1 -1
- esphome/components/libretiny/preferences.cpp +6 -7
- esphome/components/light/__init__.py +2 -1
- esphome/components/light/esp_hsv_color.h +1 -1
- esphome/components/light/light_state.cpp +9 -5
- esphome/components/light/light_transformer.h +1 -1
- esphome/components/lightwaverf/LwTx.cpp +1 -1
- esphome/components/lightwaverf/lightwaverf.cpp +1 -1
- esphome/components/lilygo_t5_47/touchscreen/lilygo_t5_47_touchscreen.cpp +1 -1
- esphome/components/lock/__init__.py +1 -0
- esphome/components/lock/lock.h +1 -1
- esphome/components/logger/__init__.py +6 -0
- esphome/components/logger/logger.cpp +11 -20
- esphome/components/logger/logger.h +1 -2
- esphome/components/logger/logger_esp32.cpp +5 -5
- esphome/components/ltr390/ltr390.cpp +8 -5
- esphome/components/ltr501/ltr501.cpp +19 -14
- esphome/components/ltr_als_ps/ltr_als_ps.cpp +20 -13
- esphome/components/lvgl/__init__.py +2 -2
- esphome/components/lvgl/automation.py +5 -4
- esphome/components/lvgl/defines.py +0 -2
- esphome/components/lvgl/lv_validation.py +1 -3
- esphome/components/lvgl/lvcode.py +7 -8
- esphome/components/lvgl/lvgl_esphome.cpp +26 -10
- esphome/components/lvgl/schemas.py +22 -23
- esphome/components/lvgl/trigger.py +8 -3
- esphome/components/lvgl/widgets/__init__.py +2 -2
- esphome/components/lvgl/widgets/canvas.py +9 -3
- esphome/components/lvgl/widgets/line.py +2 -1
- esphome/components/lvgl/widgets/tabview.py +7 -0
- esphome/components/m5stack_8angle/m5stack_8angle.cpp +3 -3
- esphome/components/matrix_keypad/matrix_keypad.cpp +2 -2
- esphome/components/max17043/max17043.cpp +2 -2
- esphome/components/max31855/max31855.cpp +2 -1
- esphome/components/max31856/max31856.cpp +9 -11
- esphome/components/max31865/max31865.cpp +6 -4
- esphome/components/max44009/max44009.cpp +2 -2
- esphome/components/max6675/max6675.cpp +1 -1
- esphome/components/max6956/max6956.cpp +5 -3
- esphome/components/max7219/max7219.cpp +8 -6
- esphome/components/max7219digit/automation.h +52 -0
- esphome/components/max7219digit/display.py +93 -1
- esphome/components/max7219digit/max7219digit.cpp +16 -13
- esphome/components/max9611/max9611.cpp +9 -6
- esphome/components/mcp23008/mcp23008.cpp +1 -1
- esphome/components/mcp23016/mcp23016.cpp +1 -1
- esphome/components/mcp23017/mcp23017.cpp +1 -1
- esphome/components/mcp23s08/mcp23s08.cpp +1 -1
- esphome/components/mcp23s17/mcp23s17.cpp +1 -1
- esphome/components/mcp3008/mcp3008.cpp +1 -1
- esphome/components/mcp3008/sensor/mcp3008_sensor.cpp +5 -3
- esphome/components/mcp3204/mcp3204.cpp +1 -1
- esphome/components/mcp4461/mcp4461.cpp +2 -2
- esphome/components/mcp4725/mcp4725.cpp +2 -2
- esphome/components/mcp4728/mcp4728.cpp +2 -2
- esphome/components/mcp9600/mcp9600.cpp +1 -1
- esphome/components/mcp9808/mcp9808.cpp +4 -4
- esphome/components/mdns/mdns_component.cpp +8 -2
- esphome/components/mdns/mdns_component.h +3 -1
- esphome/components/mdns/mdns_esp32.cpp +2 -2
- esphome/components/media_player/__init__.py +1 -0
- esphome/components/micro_wake_word/micro_wake_word.cpp +1 -1
- esphome/components/micro_wake_word/streaming_model.cpp +10 -6
- esphome/components/micronova/micronova.h +2 -2
- esphome/components/mics_4514/mics_4514.cpp +2 -2
- esphome/components/midea/air_conditioner.cpp +7 -5
- esphome/components/midea_ir/midea_ir.cpp +1 -1
- esphome/components/mipi_spi/mipi_spi.cpp +24 -15
- esphome/components/mixer/speaker/mixer_speaker.cpp +8 -4
- esphome/components/mlx90393/sensor_mlx90393.cpp +2 -2
- esphome/components/mlx90614/mlx90614.cpp +4 -3
- esphome/components/mmc5603/mmc5603.cpp +2 -2
- esphome/components/mmc5983/mmc5983.cpp +1 -1
- esphome/components/modbus/modbus.cpp +7 -5
- esphome/components/modbus_controller/modbus_controller.cpp +6 -4
- esphome/components/modbus_controller/output/modbus_output.cpp +10 -6
- esphome/components/modbus_controller/switch/__init__.py +6 -2
- esphome/components/modbus_controller/switch/modbus_switch.cpp +4 -0
- esphome/components/modbus_controller/switch/modbus_switch.h +3 -0
- esphome/components/mpl3115a2/mpl3115a2.cpp +3 -2
- esphome/components/mpr121/mpr121.cpp +2 -2
- esphome/components/mpu6050/mpu6050.cpp +6 -6
- esphome/components/mpu6886/mpu6886.cpp +6 -6
- esphome/components/mqtt/mqtt_alarm_control_panel.cpp +7 -3
- esphome/components/mqtt/mqtt_backend_esp32.cpp +1 -1
- esphome/components/mqtt/mqtt_client.cpp +31 -24
- esphome/components/mqtt/mqtt_component.cpp +3 -3
- esphome/components/mqtt/mqtt_cover.cpp +8 -4
- esphome/components/mqtt/mqtt_fan.cpp +12 -6
- esphome/components/mqtt/mqtt_valve.cpp +4 -2
- esphome/components/ms5611/ms5611.cpp +2 -2
- esphome/components/ms8607/ms8607.cpp +2 -2
- esphome/components/msa3xx/msa3xx.cpp +16 -12
- esphome/components/my9231/my9231.cpp +7 -5
- esphome/components/nau7802/nau7802.cpp +6 -4
- esphome/components/neopixelbus/neopixelbus_light.h +2 -2
- esphome/components/network/ip_address.h +1 -1
- esphome/components/network/util.cpp +13 -0
- esphome/components/nextion/base_component.py +2 -0
- esphome/components/nextion/binary_sensor/nextion_binarysensor.cpp +3 -4
- esphome/components/nextion/display.py +34 -22
- esphome/components/nextion/nextion.cpp +182 -143
- esphome/components/nextion/nextion.h +36 -0
- esphome/components/nextion/nextion_commands.cpp +3 -3
- esphome/components/nextion/nextion_upload_arduino.cpp +69 -69
- esphome/components/nextion/nextion_upload_idf.cpp +79 -80
- esphome/components/nextion/sensor/nextion_sensor.cpp +5 -5
- esphome/components/nextion/switch/nextion_switch.cpp +2 -2
- esphome/components/nextion/text_sensor/nextion_textsensor.cpp +3 -3
- esphome/components/nfc/nci_message.h +1 -1
- esphome/components/nfc/ndef_record.h +1 -1
- esphome/components/nfc/ndef_record_text.h +1 -1
- esphome/components/nfc/ndef_record_uri.h +1 -1
- esphome/components/nfc/nfc.h +1 -1
- esphome/components/nfc/nfc_tag.h +1 -1
- esphome/components/noblex/noblex.cpp +1 -1
- esphome/components/npi19/npi19.cpp +5 -7
- esphome/components/number/__init__.py +11 -0
- esphome/components/number/number.cpp +1 -1
- esphome/components/number/number.h +0 -4
- esphome/components/online_image/__init__.py +13 -1
- esphome/components/online_image/online_image.cpp +26 -4
- esphome/components/online_image/online_image.h +21 -4
- esphome/components/opentherm/generate.py +3 -3
- esphome/components/opentherm/hub.cpp +11 -7
- esphome/components/opentherm/number/number.cpp +5 -3
- esphome/components/opentherm/opentherm.h +1 -1
- esphome/components/opentherm/schema.py +13 -13
- esphome/components/opentherm/validate.py +1 -1
- esphome/components/openthread/__init__.py +146 -0
- esphome/components/openthread/const.py +10 -0
- esphome/components/openthread/openthread.cpp +206 -0
- esphome/components/openthread/openthread.h +68 -0
- esphome/components/openthread/openthread_esp.cpp +164 -0
- esphome/components/openthread/tlv.py +58 -0
- esphome/components/openthread_info/__init__.py +0 -0
- esphome/components/openthread_info/openthread_info_text_sensor.cpp +24 -0
- esphome/components/openthread_info/openthread_info_text_sensor.h +218 -0
- esphome/components/openthread_info/text_sensor.py +105 -0
- esphome/components/output/float_output.cpp +1 -1
- esphome/components/output/switch/output_switch.cpp +1 -1
- esphome/components/packet_transport/packet_transport.cpp +6 -4
- esphome/components/pca6416a/pca6416a.cpp +2 -2
- esphome/components/pca9554/pca9554.cpp +6 -4
- esphome/components/pca9685/pca9685_output.cpp +12 -8
- esphome/components/pcd8544/pcd_8544.cpp +1 -1
- esphome/components/pcf85063/pcf85063.cpp +2 -2
- esphome/components/pcf8563/pcf8563.cpp +2 -2
- esphome/components/pcf8574/pcf8574.cpp +2 -2
- esphome/components/pid/pid_climate.cpp +8 -5
- esphome/components/pid/pid_climate.h +1 -1
- esphome/components/pid/sensor/pid_climate_sensor.cpp +1 -1
- esphome/components/pipsolar/output/pipsolar_output.cpp +1 -1
- esphome/components/pipsolar/pipsolar.cpp +3 -3
- esphome/components/pm1006/pm1006.cpp +3 -7
- esphome/components/pm1006/pm1006.h +4 -1
- esphome/components/pm2005/pm2005.cpp +12 -13
- esphome/components/pm2005/sensor.py +1 -1
- esphome/components/pmsa003i/pmsa003i.cpp +2 -2
- esphome/components/pmsx003/pmsx003.cpp +0 -4
- esphome/components/pmsx003/pmsx003.h +5 -2
- esphome/components/pmwcs3/pmwcs3.cpp +9 -13
- esphome/components/pmwcs3/pmwcs3.h +0 -1
- esphome/components/pn532/pn532.cpp +7 -7
- esphome/components/pn532/pn532.h +1 -1
- esphome/components/pn532_spi/pn532_spi.cpp +1 -1
- esphome/components/pn7150/pn7150.cpp +4 -4
- esphome/components/pn7160/pn7160.cpp +4 -4
- esphome/components/power_supply/power_supply.cpp +6 -4
- esphome/components/power_supply/power_supply.h +1 -1
- esphome/components/prometheus/__init__.py +0 -1
- esphome/components/psram/__init__.py +59 -35
- esphome/components/pulse_counter/pulse_counter_sensor.cpp +7 -4
- esphome/components/pvvx_mithermometer/display/pvvx_display.cpp +8 -5
- esphome/components/pylontech/pylontech.cpp +2 -2
- esphome/components/pylontech/sensor/pylontech_sensor.cpp +4 -2
- esphome/components/pylontech/text_sensor/pylontech_text_sensor.cpp +4 -2
- esphome/components/pzemac/pzemac.cpp +4 -2
- esphome/components/pzemdc/pzemdc.cpp +4 -2
- esphome/components/qmc5883l/qmc5883l.cpp +2 -2
- esphome/components/qmp6988/qmp6988.cpp +2 -2
- esphome/components/qmp6988/qmp6988.h +1 -1
- esphome/components/qr_code/qr_code.cpp +5 -3
- esphome/components/qspi_dbi/qspi_dbi.cpp +1 -1
- esphome/components/qwiic_pir/qwiic_pir.cpp +26 -28
- esphome/components/rc522/rc522.cpp +5 -5
- esphome/components/rdm6300/rdm6300.cpp +1 -0
- esphome/components/remote_receiver/__init__.py +10 -2
- esphome/components/remote_receiver/remote_receiver_esp32.cpp +22 -12
- esphome/components/remote_receiver/remote_receiver_esp8266.cpp +10 -7
- esphome/components/remote_receiver/remote_receiver_libretiny.cpp +10 -7
- esphome/components/remote_transmitter/__init__.py +10 -2
- esphome/components/remote_transmitter/remote_transmitter_esp32.cpp +10 -6
- esphome/components/remote_transmitter/remote_transmitter_esp8266.cpp +5 -3
- esphome/components/remote_transmitter/remote_transmitter_libretiny.cpp +5 -3
- esphome/components/resistance/resistance_sensor.cpp +6 -3
- esphome/components/restart/button/restart_button.cpp +1 -1
- esphome/components/restart/switch/restart_switch.cpp +1 -1
- esphome/components/rotary_encoder/rotary_encoder.cpp +2 -2
- esphome/components/rp2040/__init__.py +7 -0
- esphome/components/rp2040/core.cpp +8 -1
- esphome/components/rp2040/preferences.cpp +3 -3
- esphome/components/rp2040_pio_led_strip/led_strip.cpp +11 -8
- esphome/components/rp2040_pio_led_strip/light.py +1 -1
- esphome/components/rp2040_pwm/rp2040_pwm.cpp +1 -1
- esphome/components/rpi_dpi_rgb/rpi_dpi_rgb.cpp +1 -1
- esphome/components/rtttl/rtttl.cpp +11 -9
- esphome/components/safe_mode/button/safe_mode_button.cpp +1 -1
- esphome/components/safe_mode/safe_mode.cpp +9 -8
- esphome/components/safe_mode/switch/safe_mode_switch.cpp +1 -1
- esphome/components/scd30/scd30.cpp +11 -8
- esphome/components/scd4x/scd4x.cpp +12 -8
- esphome/components/sdl/display.py +40 -0
- esphome/components/sdl/sdl_esphome.cpp +2 -2
- esphome/components/sdl/sdl_esphome.h +8 -0
- esphome/components/sdm_meter/sdm_meter.cpp +5 -2
- esphome/components/sdp3x/sdp3x.cpp +11 -11
- esphome/components/sds011/sds011.cpp +5 -6
- esphome/components/sds011/sds011.h +4 -1
- esphome/components/seeed_mr24hpc1/seeed_mr24hpc1.cpp +3 -2
- esphome/components/seeed_mr60bha2/seeed_mr60bha2.cpp +1 -0
- esphome/components/seeed_mr60fda2/seeed_mr60fda2.cpp +3 -2
- esphome/components/selec_meter/selec_meter.cpp +5 -2
- esphome/components/select/__init__.py +1 -0
- esphome/components/select/select.cpp +1 -1
- esphome/components/select/select.h +0 -4
- esphome/components/sen0321/sen0321.cpp +2 -2
- esphome/components/sen21231/sen21231.cpp +1 -1
- esphome/components/sen5x/sen5x.cpp +10 -7
- esphome/components/sensirion_common/i2c_sensirion.cpp +2 -1
- esphome/components/sensirion_common/i2c_sensirion.h +1 -0
- esphome/components/sensor/__init__.py +11 -1
- esphome/components/sensor/filter.h +1 -1
- esphome/components/sensor/sensor.cpp +8 -4
- esphome/components/sensor/sensor.h +12 -11
- esphome/components/servo/servo.cpp +12 -9
- esphome/components/servo/servo.h +1 -1
- esphome/components/sfa30/sfa30.cpp +1 -1
- esphome/components/sgp30/sgp30.cpp +10 -8
- esphome/components/sgp4x/sgp4x.cpp +49 -61
- esphome/components/sgp4x/sgp4x.h +0 -1
- esphome/components/shelly_dimmer/shelly_dimmer.cpp +11 -7
- esphome/components/sht3xd/sht3xd.cpp +1 -1
- esphome/components/sht4x/sht4x.cpp +2 -2
- esphome/components/shtcx/shtcx.cpp +13 -16
- esphome/components/shutdown/button/shutdown_button.cpp +1 -1
- esphome/components/shutdown/switch/shutdown_switch.cpp +1 -1
- esphome/components/sim800l/sim800l.cpp +2 -2
- esphome/components/slow_pwm/slow_pwm_output.cpp +4 -2
- esphome/components/sm16716/sm16716.cpp +1 -1
- esphome/components/sm2135/sm2135.cpp +1 -1
- esphome/components/sm2235/sm2235.cpp +5 -3
- esphome/components/sm2335/sm2335.cpp +5 -3
- esphome/components/sml/sml.cpp +1 -1
- esphome/components/sn74hc165/sn74hc165.cpp +1 -2
- esphome/components/sn74hc595/sn74hc595.cpp +1 -2
- esphome/components/sntp/sntp_component.cpp +1 -1
- esphome/components/socket/__init__.py +2 -0
- esphome/components/socket/bsd_sockets_impl.cpp +51 -7
- esphome/components/socket/lwip_raw_tcp_impl.cpp +5 -0
- esphome/components/socket/lwip_sockets_impl.cpp +51 -7
- esphome/components/socket/socket.cpp +31 -0
- esphome/components/socket/socket.h +27 -1
- esphome/components/sonoff_d1/sonoff_d1.cpp +7 -4
- esphome/components/sonoff_d1/sonoff_d1.h +2 -2
- esphome/components/sound_level/sound_level.cpp +4 -2
- esphome/components/speaker/media_player/__init__.py +3 -0
- esphome/components/speaker/media_player/speaker_media_player.cpp +1 -3
- esphome/components/speaker/media_player/speaker_media_player.h +6 -0
- esphome/components/spi/__init__.py +10 -2
- esphome/components/spi/spi.cpp +4 -4
- esphome/components/spi_device/spi_device.cpp +1 -2
- esphome/components/sprinkler/sprinkler.cpp +9 -6
- esphome/components/sps30/sps30.cpp +16 -15
- esphome/components/ssd1306_base/ssd1306_base.cpp +1 -1
- esphome/components/ssd1306_i2c/ssd1306_i2c.cpp +11 -8
- esphome/components/ssd1306_spi/ssd1306_spi.cpp +10 -7
- esphome/components/ssd1322_base/ssd1322_base.cpp +1 -1
- esphome/components/ssd1322_spi/ssd1322_spi.cpp +1 -1
- esphome/components/ssd1325_base/ssd1325_base.cpp +1 -1
- esphome/components/ssd1325_spi/ssd1325_spi.cpp +1 -1
- esphome/components/ssd1327_base/ssd1327_base.cpp +1 -1
- esphome/components/ssd1327_i2c/ssd1327_i2c.cpp +2 -2
- esphome/components/ssd1327_spi/ssd1327_spi.cpp +1 -1
- esphome/components/ssd1331_base/ssd1331_base.cpp +1 -1
- esphome/components/ssd1331_spi/ssd1331_spi.cpp +1 -1
- esphome/components/ssd1351_base/ssd1351_base.cpp +1 -1
- esphome/components/ssd1351_spi/ssd1351_spi.cpp +1 -1
- esphome/components/st7567_base/st7567_base.cpp +3 -3
- esphome/components/st7567_i2c/st7567_i2c.cpp +7 -5
- esphome/components/st7567_spi/st7567_spi.cpp +1 -1
- esphome/components/st7701s/st7701s.cpp +4 -2
- esphome/components/st7735/st7735.cpp +3 -3
- esphome/components/st7789v/st7789v.cpp +10 -7
- esphome/components/st7920/st7920.cpp +6 -4
- esphome/components/statsd/statsd.cpp +9 -5
- esphome/components/status_led/light/status_led_light.cpp +3 -3
- esphome/components/status_led/light/status_led_light.h +1 -1
- esphome/components/status_led/status_led.cpp +1 -1
- esphome/components/stepper/stepper.h +5 -3
- esphome/components/sts3x/sts3x.cpp +2 -2
- esphome/components/switch/__init__.py +1 -0
- esphome/components/switch/switch.cpp +18 -12
- esphome/components/switch/switch.h +1 -1
- esphome/components/sx1509/__init__.py +53 -20
- esphome/components/sx1509/sx1509.cpp +29 -5
- esphome/components/sx1509/sx1509.h +9 -1
- esphome/components/t6615/t6615.cpp +1 -0
- esphome/components/tc74/tc74.cpp +1 -1
- esphome/components/tca9548a/tca9548a.cpp +1 -1
- esphome/components/tca9555/tca9555.cpp +2 -2
- esphome/components/tcs34725/tcs34725.cpp +4 -4
- esphome/components/tee501/tee501.cpp +3 -2
- esphome/components/tem3200/tem3200.cpp +5 -6
- esphome/components/template/alarm_control_panel/__init__.py +6 -0
- esphome/components/template/alarm_control_panel/template_alarm_control_panel.cpp +43 -12
- esphome/components/template/alarm_control_panel/template_alarm_control_panel.h +4 -1
- esphome/components/template/cover/template_cover.cpp +1 -1
- esphome/components/template/select/template_select.cpp +6 -4
- esphome/components/template/text/template_text.cpp +2 -3
- esphome/components/template/valve/template_valve.cpp +5 -3
- esphome/components/text/__init__.py +10 -11
- esphome/components/text/text.cpp +1 -1
- esphome/components/text/text.h +0 -4
- esphome/components/text_sensor/__init__.py +1 -0
- esphome/components/text_sensor/text_sensor.cpp +8 -4
- esphome/components/text_sensor/text_sensor.h +6 -6
- esphome/components/thermostat/thermostat_climate.cpp +67 -43
- esphome/components/time/__init__.py +1 -2
- esphome/components/time_based/time_based_cover.cpp +4 -2
- esphome/components/tlc59208f/tlc59208f_output.cpp +8 -6
- esphome/components/tm1621/tm1621.cpp +3 -3
- esphome/components/tm1637/tm1637.cpp +9 -7
- esphome/components/tm1638/tm1638.cpp +7 -5
- esphome/components/tm1651/tm1651.cpp +2 -2
- esphome/components/tmp102/tmp102.cpp +1 -3
- esphome/components/tmp102/tmp102.h +0 -3
- esphome/components/tmp1075/tmp1075.cpp +12 -9
- esphome/components/tmp117/tmp117.cpp +2 -2
- esphome/components/tof10120/tof10120_sensor.cpp +2 -2
- esphome/components/tormatic/tormatic_cover.cpp +4 -2
- esphome/components/tsl2561/tsl2561.cpp +7 -5
- esphome/components/tsl2591/tsl2591.cpp +25 -27
- esphome/components/tt21100/touchscreen/tt21100.cpp +1 -1
- esphome/components/ttp229_bsf/ttp229_bsf.cpp +1 -1
- esphome/components/ttp229_lsf/ttp229_lsf.cpp +2 -2
- esphome/components/tuya/select/tuya_select.cpp +5 -3
- esphome/components/tx20/tx20.cpp +3 -3
- esphome/components/uart/__init__.py +4 -5
- esphome/components/uart/button/uart_button.cpp +1 -1
- esphome/components/uart/switch/uart_switch.cpp +2 -2
- esphome/components/uart/uart.cpp +2 -2
- esphome/components/uart/uart_component_esp32_arduino.cpp +8 -6
- esphome/components/uart/uart_component_esp8266.cpp +9 -7
- esphome/components/uart/uart_component_esp_idf.cpp +9 -7
- esphome/components/uart/uart_component_host.cpp +11 -8
- esphome/components/uart/uart_component_libretiny.cpp +8 -6
- esphome/components/uart/uart_component_rp2040.cpp +8 -6
- esphome/components/udp/udp_component.cpp +9 -5
- esphome/components/ufire_ec/ufire_ec.cpp +5 -3
- esphome/components/ufire_ise/ufire_ise.cpp +1 -1
- esphome/components/ultrasonic/ultrasonic_sensor.cpp +5 -3
- esphome/components/update/__init__.py +1 -0
- esphome/components/update/update_entity.cpp +1 -1
- esphome/components/update/update_entity.h +0 -3
- esphome/components/uponor_smatrix/climate/uponor_smatrix_climate.cpp +1 -1
- esphome/components/uponor_smatrix/sensor/uponor_smatrix_sensor.cpp +4 -2
- esphome/components/uponor_smatrix/uponor_smatrix.cpp +2 -1
- esphome/components/uptime/sensor/uptime_timestamp_sensor.cpp +1 -1
- esphome/components/usb_host/__init__.py +64 -0
- esphome/components/usb_host/usb_host.h +116 -0
- esphome/components/usb_host/usb_host_client.cpp +394 -0
- esphome/components/usb_host/usb_host_component.cpp +35 -0
- esphome/components/usb_uart/__init__.py +134 -0
- esphome/components/usb_uart/ch34x.cpp +80 -0
- esphome/components/usb_uart/cp210x.cpp +126 -0
- esphome/components/usb_uart/usb_uart.cpp +328 -0
- esphome/components/usb_uart/usb_uart.h +151 -0
- esphome/components/valve/__init__.py +1 -0
- esphome/components/veml3235/veml3235.cpp +13 -9
- esphome/components/veml7700/veml7700.cpp +10 -6
- esphome/components/voice_assistant/voice_assistant.cpp +7 -7
- esphome/components/wake_on_lan/wake_on_lan.cpp +1 -1
- esphome/components/waveshare_epaper/waveshare_epaper.cpp +1 -1
- esphome/components/web_server/server_index_v2.h +632 -630
- esphome/components/web_server/server_index_v3.h +411 -409
- esphome/components/web_server/web_server.cpp +5 -3
- esphome/components/web_server_base/web_server_base.cpp +1 -1
- esphome/components/web_server_idf/__init__.py +0 -2
- esphome/components/web_server_idf/utils.cpp +1 -1
- esphome/components/web_server_idf/web_server_idf.cpp +7 -3
- esphome/components/web_server_idf/web_server_idf.h +7 -0
- esphome/components/weikai/__init__.py +2 -0
- esphome/components/weikai/weikai.cpp +24 -22
- esphome/components/weikai_i2c/weikai_i2c.cpp +14 -9
- esphome/components/weikai_spi/weikai_spi.cpp +11 -6
- esphome/components/wiegand/wiegand.cpp +1 -1
- esphome/components/wifi/wifi_component.cpp +50 -37
- esphome/components/wifi/wifi_component.h +7 -4
- esphome/components/wifi/wifi_component_esp32_arduino.cpp +2 -2
- esphome/components/wifi/wifi_component_esp8266.cpp +3 -3
- esphome/components/wifi/wifi_component_libretiny.cpp +4 -4
- esphome/components/wireguard/wireguard.cpp +21 -21
- esphome/components/wl_134/text_sensor.py +1 -2
- esphome/components/wled/wled_light_effect.cpp +1 -1
- esphome/components/x9c/x9c.cpp +5 -3
- esphome/components/xgzp68xx/xgzp68xx.cpp +8 -6
- esphome/components/xiaomi_cgd1/xiaomi_cgd1.cpp +4 -2
- esphome/components/xiaomi_cgdk2/xiaomi_cgdk2.cpp +4 -2
- esphome/components/xiaomi_cgg1/xiaomi_cgg1.cpp +4 -2
- esphome/components/xiaomi_hhccjcy10/xiaomi_hhccjcy10.cpp +1 -1
- esphome/components/xiaomi_lywsd02mmc/xiaomi_lywsd02mmc.cpp +4 -2
- esphome/components/xiaomi_lywsd03mmc/xiaomi_lywsd03mmc.cpp +4 -2
- esphome/components/xiaomi_mhoc401/xiaomi_mhoc401.cpp +4 -2
- esphome/components/xl9535/xl9535.cpp +2 -2
- esphome/components/xpt2046/touchscreen/xpt2046.cpp +12 -11
- esphome/components/xpt2046/touchscreen/xpt2046.h +2 -2
- esphome/config.py +3 -2
- esphome/config_validation.py +46 -17
- esphome/const.py +10 -1
- esphome/core/__init__.py +37 -18
- esphome/core/application.cpp +197 -8
- esphome/core/application.h +116 -6
- esphome/core/component.cpp +36 -15
- esphome/core/component.h +43 -13
- esphome/core/config.py +12 -0
- esphome/core/defines.h +10 -2
- esphome/core/entity_base.cpp +4 -16
- esphome/core/entity_base.h +27 -13
- esphome/core/helpers.cpp +1 -1
- esphome/core/helpers.h +5 -5
- esphome/core/log.h +2 -0
- esphome/core/log_const_en.h +4 -0
- esphome/core/scheduler.cpp +2 -2
- esphome/coroutine.py +3 -4
- esphome/cpp_generator.py +32 -32
- esphome/dashboard/core.py +2 -2
- esphome/dashboard/web_server.py +2 -2
- esphome/git.py +4 -4
- esphome/helpers.py +5 -6
- esphome/loader.py +8 -7
- esphome/log.py +7 -1
- esphome/platformio_api.py +2 -3
- esphome/storage_json.py +13 -5
- esphome/types.py +12 -13
- esphome/util.py +1 -2
- esphome/wizard.py +0 -16
- esphome/writer.py +5 -3
- esphome/yaml_util.py +6 -1
- esphome/zeroconf.py +1 -1
- {esphome-2025.5.2.dist-info → esphome-2025.6.0b2.dist-info}/METADATA +12 -11
- {esphome-2025.5.2.dist-info → esphome-2025.6.0b2.dist-info}/RECORD +746 -692
- {esphome-2025.5.2.dist-info → esphome-2025.6.0b2.dist-info}/WHEEL +1 -1
- {esphome-2025.5.2.dist-info → esphome-2025.6.0b2.dist-info}/entry_points.txt +0 -0
- {esphome-2025.5.2.dist-info → esphome-2025.6.0b2.dist-info}/licenses/LICENSE +0 -0
- {esphome-2025.5.2.dist-info → esphome-2025.6.0b2.dist-info}/top_level.txt +0 -0
@@ -8,9 +8,9 @@ namespace sx1509 {
|
|
8
8
|
static const char *const TAG = "sx1509";
|
9
9
|
|
10
10
|
void SX1509Component::setup() {
|
11
|
-
ESP_LOGCONFIG(TAG, "
|
11
|
+
ESP_LOGCONFIG(TAG, "Running setup");
|
12
12
|
|
13
|
-
ESP_LOGV(TAG, " Resetting devices
|
13
|
+
ESP_LOGV(TAG, " Resetting devices");
|
14
14
|
if (!this->write_byte(REG_RESET, 0x12)) {
|
15
15
|
this->mark_failed();
|
16
16
|
return;
|
@@ -48,6 +48,30 @@ void SX1509Component::loop() {
|
|
48
48
|
uint16_t key_data = this->read_key_data();
|
49
49
|
for (auto *binary_sensor : this->keypad_binary_sensors_)
|
50
50
|
binary_sensor->process(key_data);
|
51
|
+
if (this->keys_.empty())
|
52
|
+
return;
|
53
|
+
if (key_data == 0) {
|
54
|
+
this->last_key_ = 0;
|
55
|
+
return;
|
56
|
+
}
|
57
|
+
int row, col;
|
58
|
+
for (row = 0; row < 7; row++) {
|
59
|
+
if (key_data & (1 << row))
|
60
|
+
break;
|
61
|
+
}
|
62
|
+
for (col = 8; col < 15; col++) {
|
63
|
+
if (key_data & (1 << col))
|
64
|
+
break;
|
65
|
+
}
|
66
|
+
col -= 8;
|
67
|
+
uint8_t key = this->keys_[row * this->cols_ + col];
|
68
|
+
if (key == this->last_key_)
|
69
|
+
return;
|
70
|
+
this->last_key_ = key;
|
71
|
+
ESP_LOGV(TAG, "row %d, col %d, key '%c'", row, col, key);
|
72
|
+
for (auto &trigger : this->key_triggers_)
|
73
|
+
trigger->trigger(key);
|
74
|
+
this->send_key_(key);
|
51
75
|
}
|
52
76
|
}
|
53
77
|
|
@@ -230,9 +254,9 @@ void SX1509Component::setup_keypad_() {
|
|
230
254
|
scan_time_bits &= 0b111; // Scan time is bits 2:0
|
231
255
|
temp_byte = sleep_time_ | scan_time_bits;
|
232
256
|
this->write_byte(REG_KEY_CONFIG_1, temp_byte);
|
233
|
-
|
234
|
-
|
235
|
-
this->write_byte(REG_KEY_CONFIG_2,
|
257
|
+
temp_byte = ((this->rows_ - 1) & 0b111) << 3; // 0 = off, 0b001 = 2 rows, 0b111 = 8 rows, etc.
|
258
|
+
temp_byte |= (this->cols_ - 1) & 0b111; // 0b000 = 1 column, ob111 = 8 columns, etc.
|
259
|
+
this->write_byte(REG_KEY_CONFIG_2, temp_byte);
|
236
260
|
}
|
237
261
|
|
238
262
|
uint16_t SX1509Component::read_key_data() {
|
@@ -1,6 +1,7 @@
|
|
1
1
|
#pragma once
|
2
2
|
|
3
3
|
#include "esphome/components/i2c/i2c.h"
|
4
|
+
#include "esphome/components/key_provider/key_provider.h"
|
4
5
|
#include "esphome/core/component.h"
|
5
6
|
#include "esphome/core/hal.h"
|
6
7
|
#include "sx1509_gpio_pin.h"
|
@@ -27,7 +28,9 @@ class SX1509Processor {
|
|
27
28
|
virtual void process(uint16_t data){};
|
28
29
|
};
|
29
30
|
|
30
|
-
class
|
31
|
+
class SX1509KeyTrigger : public Trigger<uint8_t> {};
|
32
|
+
|
33
|
+
class SX1509Component : public Component, public i2c::I2CDevice, public key_provider::KeyProvider {
|
31
34
|
public:
|
32
35
|
SX1509Component() = default;
|
33
36
|
|
@@ -47,12 +50,14 @@ class SX1509Component : public Component, public i2c::I2CDevice {
|
|
47
50
|
this->cols_ = cols;
|
48
51
|
this->has_keypad_ = true;
|
49
52
|
};
|
53
|
+
void set_keys(std::string keys) { this->keys_ = std::move(keys); };
|
50
54
|
void set_sleep_time(uint16_t sleep_time) { this->sleep_time_ = sleep_time; };
|
51
55
|
void set_scan_time(uint8_t scan_time) { this->scan_time_ = scan_time; };
|
52
56
|
void set_debounce_time(uint8_t debounce_time = 1) { this->debounce_time_ = debounce_time; };
|
53
57
|
void register_keypad_binary_sensor(SX1509Processor *binary_sensor) {
|
54
58
|
this->keypad_binary_sensors_.push_back(binary_sensor);
|
55
59
|
}
|
60
|
+
void register_key_trigger(SX1509KeyTrigger *trig) { this->key_triggers_.push_back(trig); };
|
56
61
|
void setup_led_driver(uint8_t pin);
|
57
62
|
|
58
63
|
protected:
|
@@ -65,10 +70,13 @@ class SX1509Component : public Component, public i2c::I2CDevice {
|
|
65
70
|
bool has_keypad_ = false;
|
66
71
|
uint8_t rows_ = 0;
|
67
72
|
uint8_t cols_ = 0;
|
73
|
+
std::string keys_;
|
68
74
|
uint16_t sleep_time_ = 128;
|
69
75
|
uint8_t scan_time_ = 1;
|
70
76
|
uint8_t debounce_time_ = 1;
|
77
|
+
uint8_t last_key_ = 0;
|
71
78
|
std::vector<SX1509Processor *> keypad_binary_sensors_;
|
79
|
+
std::vector<SX1509KeyTrigger *> key_triggers_;
|
72
80
|
|
73
81
|
uint32_t last_loop_timestamp_ = 0;
|
74
82
|
const uint32_t min_loop_period_ = 15; // ms
|
esphome/components/tc74/tc74.cpp
CHANGED
@@ -15,7 +15,7 @@ static const uint8_t TC74_DATA_READY_MASK = 0x40;
|
|
15
15
|
// It is possible the "Data Ready" bit will not be set if the TC74 has not been powered on for at least 250ms, so it not
|
16
16
|
// being set does not constitute a failure.
|
17
17
|
void TC74Component::setup() {
|
18
|
-
ESP_LOGCONFIG(TAG, "
|
18
|
+
ESP_LOGCONFIG(TAG, "Running setup");
|
19
19
|
uint8_t config_reg;
|
20
20
|
if (this->read_register(TC74_REGISTER_CONFIGURATION, &config_reg, 1) != i2c::ERROR_OK) {
|
21
21
|
this->mark_failed();
|
@@ -24,7 +24,7 @@ i2c::ErrorCode TCA9548AChannel::writev(uint8_t address, i2c::WriteBuffer *buffer
|
|
24
24
|
}
|
25
25
|
|
26
26
|
void TCA9548AComponent::setup() {
|
27
|
-
ESP_LOGCONFIG(TAG, "
|
27
|
+
ESP_LOGCONFIG(TAG, "Running setup");
|
28
28
|
uint8_t status = 0;
|
29
29
|
if (this->read(&status, 1) != i2c::ERROR_OK) {
|
30
30
|
ESP_LOGE(TAG, "TCA9548A failed");
|
@@ -16,7 +16,7 @@ namespace tca9555 {
|
|
16
16
|
static const char *const TAG = "tca9555";
|
17
17
|
|
18
18
|
void TCA9555Component::setup() {
|
19
|
-
ESP_LOGCONFIG(TAG, "
|
19
|
+
ESP_LOGCONFIG(TAG, "Running setup");
|
20
20
|
if (!this->read_gpio_modes_()) {
|
21
21
|
this->mark_failed();
|
22
22
|
return;
|
@@ -30,7 +30,7 @@ void TCA9555Component::dump_config() {
|
|
30
30
|
ESP_LOGCONFIG(TAG, "TCA9555:");
|
31
31
|
LOG_I2C_DEVICE(this)
|
32
32
|
if (this->is_failed()) {
|
33
|
-
ESP_LOGE(TAG,
|
33
|
+
ESP_LOGE(TAG, ESP_LOG_MSG_COMM_FAIL);
|
34
34
|
}
|
35
35
|
}
|
36
36
|
void TCA9555Component::pin_mode(uint8_t pin, gpio::Flags flags) {
|
@@ -1,8 +1,8 @@
|
|
1
1
|
#include "tcs34725.h"
|
2
|
-
#include "esphome/core/log.h"
|
3
2
|
#include "esphome/core/hal.h"
|
4
|
-
#include <algorithm>
|
5
3
|
#include "esphome/core/helpers.h"
|
4
|
+
#include "esphome/core/log.h"
|
5
|
+
#include <algorithm>
|
6
6
|
|
7
7
|
namespace esphome {
|
8
8
|
namespace tcs34725 {
|
@@ -18,7 +18,7 @@ static const uint8_t TCS34725_REGISTER_ENABLE = TCS34725_COMMAND_BIT | 0x00;
|
|
18
18
|
static const uint8_t TCS34725_REGISTER_CRGBDATAL = TCS34725_COMMAND_BIT | 0x14;
|
19
19
|
|
20
20
|
void TCS34725Component::setup() {
|
21
|
-
ESP_LOGCONFIG(TAG, "
|
21
|
+
ESP_LOGCONFIG(TAG, "Running setup");
|
22
22
|
uint8_t id;
|
23
23
|
if (this->read_register(TCS34725_REGISTER_ID, &id, 1) != i2c::ERROR_OK) {
|
24
24
|
this->mark_failed();
|
@@ -46,7 +46,7 @@ void TCS34725Component::dump_config() {
|
|
46
46
|
ESP_LOGCONFIG(TAG, "TCS34725:");
|
47
47
|
LOG_I2C_DEVICE(this);
|
48
48
|
if (this->is_failed()) {
|
49
|
-
ESP_LOGE(TAG,
|
49
|
+
ESP_LOGE(TAG, ESP_LOG_MSG_COMM_FAIL);
|
50
50
|
}
|
51
51
|
LOG_UPDATE_INTERVAL(this);
|
52
52
|
|
@@ -1,4 +1,5 @@
|
|
1
1
|
#include "tee501.h"
|
2
|
+
#include "esphome/core/helpers.h"
|
2
3
|
#include "esphome/core/log.h"
|
3
4
|
|
4
5
|
namespace esphome {
|
@@ -7,7 +8,7 @@ namespace tee501 {
|
|
7
8
|
static const char *const TAG = "tee501";
|
8
9
|
|
9
10
|
void TEE501Component::setup() {
|
10
|
-
ESP_LOGCONFIG(TAG, "
|
11
|
+
ESP_LOGCONFIG(TAG, "Running setup");
|
11
12
|
uint8_t address[] = {0x70, 0x29};
|
12
13
|
this->write(address, 2, false);
|
13
14
|
uint8_t identification[9];
|
@@ -25,7 +26,7 @@ void TEE501Component::dump_config() {
|
|
25
26
|
LOG_I2C_DEVICE(this);
|
26
27
|
switch (this->error_code_) {
|
27
28
|
case COMMUNICATION_FAILED:
|
28
|
-
ESP_LOGE(TAG,
|
29
|
+
ESP_LOGE(TAG, ESP_LOG_MSG_COMM_FAIL);
|
29
30
|
break;
|
30
31
|
case CRC_CHECK_FAILED:
|
31
32
|
ESP_LOGE(TAG, "The crc check failed");
|
@@ -1,7 +1,7 @@
|
|
1
1
|
#include "tem3200.h"
|
2
|
-
#include "esphome/core/log.h"
|
3
|
-
#include "esphome/core/helpers.h"
|
4
2
|
#include "esphome/core/hal.h"
|
3
|
+
#include "esphome/core/helpers.h"
|
4
|
+
#include "esphome/core/log.h"
|
5
5
|
|
6
6
|
namespace esphome {
|
7
7
|
namespace tem3200 {
|
@@ -16,7 +16,7 @@ enum ErrorCode {
|
|
16
16
|
};
|
17
17
|
|
18
18
|
void TEM3200Component::setup() {
|
19
|
-
ESP_LOGCONFIG(TAG, "
|
19
|
+
ESP_LOGCONFIG(TAG, "Running setup");
|
20
20
|
|
21
21
|
uint8_t status(NONE);
|
22
22
|
uint16_t raw_temperature(0);
|
@@ -24,7 +24,7 @@ void TEM3200Component::setup() {
|
|
24
24
|
|
25
25
|
i2c::ErrorCode err = this->read_(status, raw_temperature, raw_pressure);
|
26
26
|
if (err != i2c::ERROR_OK) {
|
27
|
-
ESP_LOGCONFIG(TAG,
|
27
|
+
ESP_LOGCONFIG(TAG, ESP_LOG_MSG_COMM_FAIL);
|
28
28
|
this->mark_failed();
|
29
29
|
return;
|
30
30
|
}
|
@@ -43,7 +43,6 @@ void TEM3200Component::setup() {
|
|
43
43
|
this->status_set_warning();
|
44
44
|
break;
|
45
45
|
}
|
46
|
-
ESP_LOGCONFIG(TAG, " Success...");
|
47
46
|
}
|
48
47
|
|
49
48
|
void TEM3200Component::dump_config() {
|
@@ -115,7 +114,7 @@ void TEM3200Component::update() {
|
|
115
114
|
i2c::ErrorCode err = this->read_(status, raw_temperature, raw_pressure);
|
116
115
|
|
117
116
|
if (err != i2c::ERROR_OK) {
|
118
|
-
ESP_LOGW(TAG,
|
117
|
+
ESP_LOGW(TAG, ESP_LOG_MSG_COMM_FAIL);
|
119
118
|
this->status_set_warning();
|
120
119
|
return;
|
121
120
|
}
|
@@ -10,6 +10,7 @@ CODEOWNERS = ["@grahambrown11", "@hwstar"]
|
|
10
10
|
CONF_CODES = "codes"
|
11
11
|
CONF_BYPASS_ARMED_HOME = "bypass_armed_home"
|
12
12
|
CONF_BYPASS_ARMED_NIGHT = "bypass_armed_night"
|
13
|
+
CONF_BYPASS_AUTO = "bypass_auto"
|
13
14
|
CONF_CHIME = "chime"
|
14
15
|
CONF_TRIGGER_MODE = "trigger_mode"
|
15
16
|
CONF_REQUIRES_CODE_TO_ARM = "requires_code_to_arm"
|
@@ -23,6 +24,7 @@ CONF_TRIGGER_TIME = "trigger_time"
|
|
23
24
|
FLAG_NORMAL = "normal"
|
24
25
|
FLAG_BYPASS_ARMED_HOME = "bypass_armed_home"
|
25
26
|
FLAG_BYPASS_ARMED_NIGHT = "bypass_armed_night"
|
27
|
+
FLAG_BYPASS_AUTO = "bypass_auto"
|
26
28
|
FLAG_CHIME = "chime"
|
27
29
|
|
28
30
|
BinarySensorFlags = {
|
@@ -30,6 +32,7 @@ BinarySensorFlags = {
|
|
30
32
|
FLAG_BYPASS_ARMED_HOME: 1 << 1,
|
31
33
|
FLAG_BYPASS_ARMED_NIGHT: 1 << 2,
|
32
34
|
FLAG_CHIME: 1 << 3,
|
35
|
+
FLAG_BYPASS_AUTO: 1 << 4,
|
33
36
|
}
|
34
37
|
|
35
38
|
|
@@ -68,6 +71,7 @@ TEMPLATE_ALARM_CONTROL_PANEL_BINARY_SENSOR_SCHEMA = cv.maybe_simple_value(
|
|
68
71
|
cv.Required(CONF_INPUT): cv.use_id(binary_sensor.BinarySensor),
|
69
72
|
cv.Optional(CONF_BYPASS_ARMED_HOME, default=False): cv.boolean,
|
70
73
|
cv.Optional(CONF_BYPASS_ARMED_NIGHT, default=False): cv.boolean,
|
74
|
+
cv.Optional(CONF_BYPASS_AUTO, default=False): cv.boolean,
|
71
75
|
cv.Optional(CONF_CHIME, default=False): cv.boolean,
|
72
76
|
cv.Optional(CONF_TRIGGER_MODE, default="DELAYED"): cv.enum(
|
73
77
|
ALARM_SENSOR_TYPES, upper=True, space="_"
|
@@ -143,6 +147,8 @@ async def to_code(config):
|
|
143
147
|
if sensor[CONF_BYPASS_ARMED_NIGHT]:
|
144
148
|
flags |= BinarySensorFlags[FLAG_BYPASS_ARMED_NIGHT]
|
145
149
|
supports_arm_night = True
|
150
|
+
if sensor[CONF_BYPASS_AUTO]:
|
151
|
+
flags |= BinarySensorFlags[FLAG_BYPASS_AUTO]
|
146
152
|
if sensor[CONF_CHIME]:
|
147
153
|
flags |= BinarySensorFlags[FLAG_CHIME]
|
148
154
|
cg.add(var.add_sensor(bs, flags, sensor[CONF_TRIGGER_MODE]))
|
@@ -29,8 +29,10 @@ void TemplateAlarmControlPanel::add_sensor(binary_sensor::BinarySensor *sensor,
|
|
29
29
|
|
30
30
|
void TemplateAlarmControlPanel::dump_config() {
|
31
31
|
ESP_LOGCONFIG(TAG, "TemplateAlarmControlPanel:");
|
32
|
-
ESP_LOGCONFIG(TAG,
|
33
|
-
|
32
|
+
ESP_LOGCONFIG(TAG,
|
33
|
+
" Current State: %s\n"
|
34
|
+
" Number of Codes: %u",
|
35
|
+
LOG_STR_ARG(alarm_control_panel_state_to_string(this->current_state_)), this->codes_.size());
|
34
36
|
if (!this->codes_.empty())
|
35
37
|
ESP_LOGCONFIG(TAG, " Requires Code To Arm: %s", YESNO(this->requires_code_to_arm_));
|
36
38
|
ESP_LOGCONFIG(TAG, " Arming Away Time: %" PRIu32 "s", (this->arming_away_time_ / 1000));
|
@@ -38,18 +40,25 @@ void TemplateAlarmControlPanel::dump_config() {
|
|
38
40
|
ESP_LOGCONFIG(TAG, " Arming Home Time: %" PRIu32 "s", (this->arming_home_time_ / 1000));
|
39
41
|
if (this->arming_night_time_ != 0)
|
40
42
|
ESP_LOGCONFIG(TAG, " Arming Night Time: %" PRIu32 "s", (this->arming_night_time_ / 1000));
|
41
|
-
ESP_LOGCONFIG(TAG,
|
42
|
-
|
43
|
-
|
43
|
+
ESP_LOGCONFIG(TAG,
|
44
|
+
" Pending Time: %" PRIu32 "s\n"
|
45
|
+
" Trigger Time: %" PRIu32 "s\n"
|
46
|
+
" Supported Features: %" PRIu32,
|
47
|
+
(this->pending_time_ / 1000), (this->trigger_time_ / 1000), this->get_supported_features());
|
44
48
|
#ifdef USE_BINARY_SENSOR
|
45
49
|
for (auto sensor_info : this->sensor_map_) {
|
46
50
|
ESP_LOGCONFIG(TAG, " Binary Sensor:");
|
47
|
-
ESP_LOGCONFIG(TAG,
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
51
|
+
ESP_LOGCONFIG(TAG,
|
52
|
+
" Name: %s\n"
|
53
|
+
" Armed home bypass: %s\n"
|
54
|
+
" Armed night bypass: %s\n"
|
55
|
+
" Auto bypass: %s\n"
|
56
|
+
" Chime mode: %s",
|
57
|
+
sensor_info.first->get_name().c_str(),
|
58
|
+
TRUEFALSE(sensor_info.second.flags & BINARY_SENSOR_MODE_BYPASS_ARMED_HOME),
|
59
|
+
TRUEFALSE(sensor_info.second.flags & BINARY_SENSOR_MODE_BYPASS_ARMED_NIGHT),
|
60
|
+
TRUEFALSE(sensor_info.second.flags & BINARY_SENSOR_MODE_BYPASS_AUTO),
|
61
|
+
TRUEFALSE(sensor_info.second.flags & BINARY_SENSOR_MODE_CHIME));
|
53
62
|
const char *sensor_type;
|
54
63
|
switch (sensor_info.second.type) {
|
55
64
|
case ALARM_SENSOR_TYPE_INSTANT:
|
@@ -71,7 +80,7 @@ void TemplateAlarmControlPanel::dump_config() {
|
|
71
80
|
}
|
72
81
|
|
73
82
|
void TemplateAlarmControlPanel::setup() {
|
74
|
-
ESP_LOGCONFIG(TAG, "
|
83
|
+
ESP_LOGCONFIG(TAG, "Running setup for '%s'", this->name_.c_str());
|
75
84
|
switch (this->restore_mode_) {
|
76
85
|
case ALARM_CONTROL_PANEL_ALWAYS_DISARMED:
|
77
86
|
this->current_state_ = ACP_STATE_DISARMED;
|
@@ -101,6 +110,7 @@ void TemplateAlarmControlPanel::loop() {
|
|
101
110
|
delay = this->arming_night_time_;
|
102
111
|
}
|
103
112
|
if ((millis() - this->last_update_) > delay) {
|
113
|
+
this->bypass_before_arming();
|
104
114
|
this->publish_state(this->desired_state_);
|
105
115
|
}
|
106
116
|
return;
|
@@ -137,6 +147,11 @@ void TemplateAlarmControlPanel::loop() {
|
|
137
147
|
}
|
138
148
|
// Check for triggered sensors
|
139
149
|
if (sensor_info.first->state) { // Sensor triggered?
|
150
|
+
// Skip if auto bypassed
|
151
|
+
if (std::count(this->bypassed_sensor_indicies_.begin(), this->bypassed_sensor_indicies_.end(),
|
152
|
+
sensor_info.second.store_index) == 1) {
|
153
|
+
continue;
|
154
|
+
}
|
140
155
|
// Skip if bypass armed home
|
141
156
|
if (this->current_state_ == ACP_STATE_ARMED_HOME &&
|
142
157
|
(sensor_info.second.flags & BINARY_SENSOR_MODE_BYPASS_ARMED_HOME)) {
|
@@ -236,10 +251,23 @@ void TemplateAlarmControlPanel::arm_(optional<std::string> code, alarm_control_p
|
|
236
251
|
if (delay > 0) {
|
237
252
|
this->publish_state(ACP_STATE_ARMING);
|
238
253
|
} else {
|
254
|
+
this->bypass_before_arming();
|
239
255
|
this->publish_state(state);
|
240
256
|
}
|
241
257
|
}
|
242
258
|
|
259
|
+
void TemplateAlarmControlPanel::bypass_before_arming() {
|
260
|
+
#ifdef USE_BINARY_SENSOR
|
261
|
+
for (auto sensor_info : this->sensor_map_) {
|
262
|
+
// Check for sensors left on and set to bypass automatically and remove them from monitoring
|
263
|
+
if ((sensor_info.second.flags & BINARY_SENSOR_MODE_BYPASS_AUTO) && (sensor_info.first->state)) {
|
264
|
+
ESP_LOGW(TAG, "'%s' is left on and will be automatically bypassed", sensor_info.first->get_name().c_str());
|
265
|
+
this->bypassed_sensor_indicies_.push_back(sensor_info.second.store_index);
|
266
|
+
}
|
267
|
+
}
|
268
|
+
#endif
|
269
|
+
}
|
270
|
+
|
243
271
|
void TemplateAlarmControlPanel::control(const AlarmControlPanelCall &call) {
|
244
272
|
if (call.get_state()) {
|
245
273
|
if (call.get_state() == ACP_STATE_ARMED_AWAY) {
|
@@ -255,6 +283,9 @@ void TemplateAlarmControlPanel::control(const AlarmControlPanelCall &call) {
|
|
255
283
|
}
|
256
284
|
this->desired_state_ = ACP_STATE_DISARMED;
|
257
285
|
this->publish_state(ACP_STATE_DISARMED);
|
286
|
+
#ifdef USE_BINARY_SENSOR
|
287
|
+
this->bypassed_sensor_indicies_.clear();
|
288
|
+
#endif
|
258
289
|
} else if (call.get_state() == ACP_STATE_TRIGGERED) {
|
259
290
|
this->publish_state(ACP_STATE_TRIGGERED);
|
260
291
|
} else if (call.get_state() == ACP_STATE_PENDING) {
|
@@ -22,6 +22,7 @@ enum BinarySensorFlags : uint16_t {
|
|
22
22
|
BINARY_SENSOR_MODE_BYPASS_ARMED_HOME = 1 << 1,
|
23
23
|
BINARY_SENSOR_MODE_BYPASS_ARMED_NIGHT = 1 << 2,
|
24
24
|
BINARY_SENSOR_MODE_CHIME = 1 << 3,
|
25
|
+
BINARY_SENSOR_MODE_BYPASS_AUTO = 1 << 4,
|
25
26
|
};
|
26
27
|
|
27
28
|
enum AlarmSensorType : uint16_t {
|
@@ -59,6 +60,7 @@ class TemplateAlarmControlPanel : public alarm_control_panel::AlarmControlPanel,
|
|
59
60
|
bool get_requires_code_to_arm() const override { return this->requires_code_to_arm_; }
|
60
61
|
bool get_all_sensors_ready() { return this->sensors_ready_; };
|
61
62
|
void set_restore_mode(TemplateAlarmControlPanelRestoreMode restore_mode) { this->restore_mode_ = restore_mode; }
|
63
|
+
void bypass_before_arming();
|
62
64
|
|
63
65
|
#ifdef USE_BINARY_SENSOR
|
64
66
|
/** Add a binary_sensor to the alarm_panel.
|
@@ -121,7 +123,8 @@ class TemplateAlarmControlPanel : public alarm_control_panel::AlarmControlPanel,
|
|
121
123
|
#ifdef USE_BINARY_SENSOR
|
122
124
|
// This maps a binary sensor to its type and attribute bits
|
123
125
|
std::map<binary_sensor::BinarySensor *, SensorInfo> sensor_map_;
|
124
|
-
|
126
|
+
// a list of automatically bypassed sensors
|
127
|
+
std::vector<uint8_t> bypassed_sensor_indicies_;
|
125
128
|
#endif
|
126
129
|
TemplateAlarmControlPanelRestoreMode restore_mode_{};
|
127
130
|
|
@@ -16,7 +16,7 @@ TemplateCover::TemplateCover()
|
|
16
16
|
position_trigger_(new Trigger<float>()),
|
17
17
|
tilt_trigger_(new Trigger<float>()) {}
|
18
18
|
void TemplateCover::setup() {
|
19
|
-
ESP_LOGCONFIG(TAG, "
|
19
|
+
ESP_LOGCONFIG(TAG, "Running setup for '%s'", this->name_.c_str());
|
20
20
|
switch (this->restore_mode_) {
|
21
21
|
case COVER_NO_RESTORE:
|
22
22
|
break;
|
@@ -11,7 +11,7 @@ void TemplateSelect::setup() {
|
|
11
11
|
return;
|
12
12
|
|
13
13
|
std::string value;
|
14
|
-
ESP_LOGD(TAG, "Setting up
|
14
|
+
ESP_LOGD(TAG, "Setting up");
|
15
15
|
if (!this->restore_value_) {
|
16
16
|
value = this->initial_option_;
|
17
17
|
ESP_LOGD(TAG, "State from initial: %s", value.c_str());
|
@@ -66,9 +66,11 @@ void TemplateSelect::dump_config() {
|
|
66
66
|
LOG_UPDATE_INTERVAL(this);
|
67
67
|
if (this->f_.has_value())
|
68
68
|
return;
|
69
|
-
ESP_LOGCONFIG(TAG,
|
70
|
-
|
71
|
-
|
69
|
+
ESP_LOGCONFIG(TAG,
|
70
|
+
" Optimistic: %s\n"
|
71
|
+
" Initial Option: %s\n"
|
72
|
+
" Restore Value: %s",
|
73
|
+
YESNO(this->optimistic_), this->initial_option_.c_str(), YESNO(this->restore_value_));
|
72
74
|
}
|
73
75
|
|
74
76
|
} // namespace template_
|
@@ -12,9 +12,8 @@ void TemplateText::setup() {
|
|
12
12
|
return;
|
13
13
|
}
|
14
14
|
|
15
|
-
|
16
|
-
|
17
|
-
value = this->initial_value_;
|
15
|
+
ESP_LOGCONFIG(TAG, "Running setup for '%s'", this->name_.c_str());
|
16
|
+
std::string value = this->initial_value_;
|
18
17
|
if (!this->pref_) {
|
19
18
|
ESP_LOGD(TAG, "State from initial: %s", value.c_str());
|
20
19
|
} else {
|
@@ -16,7 +16,7 @@ TemplateValve::TemplateValve()
|
|
16
16
|
position_trigger_(new Trigger<float>()) {}
|
17
17
|
|
18
18
|
void TemplateValve::setup() {
|
19
|
-
ESP_LOGCONFIG(TAG, "
|
19
|
+
ESP_LOGCONFIG(TAG, "Running setup for '%s'", this->name_.c_str());
|
20
20
|
switch (this->restore_mode_) {
|
21
21
|
case VALVE_NO_RESTORE:
|
22
22
|
break;
|
@@ -66,8 +66,10 @@ Trigger<> *TemplateValve::get_toggle_trigger() const { return this->toggle_trigg
|
|
66
66
|
|
67
67
|
void TemplateValve::dump_config() {
|
68
68
|
LOG_VALVE("", "Template Valve", this);
|
69
|
-
ESP_LOGCONFIG(TAG,
|
70
|
-
|
69
|
+
ESP_LOGCONFIG(TAG,
|
70
|
+
" Has position: %s\n"
|
71
|
+
" Optimistic: %s",
|
72
|
+
YESNO(this->has_position_), YESNO(this->optimistic_));
|
71
73
|
}
|
72
74
|
|
73
75
|
void TemplateValve::control(const ValveCall &call) {
|
@@ -1,5 +1,3 @@
|
|
1
|
-
from typing import Optional
|
2
|
-
|
3
1
|
from esphome import automation
|
4
2
|
import esphome.codegen as cg
|
5
3
|
from esphome.components import mqtt, web_server
|
@@ -92,9 +90,9 @@ async def setup_text_core_(
|
|
92
90
|
var,
|
93
91
|
config,
|
94
92
|
*,
|
95
|
-
min_length:
|
96
|
-
max_length:
|
97
|
-
pattern:
|
93
|
+
min_length: int | None,
|
94
|
+
max_length: int | None,
|
95
|
+
pattern: str | None,
|
98
96
|
):
|
99
97
|
await setup_entity(var, config)
|
100
98
|
|
@@ -121,13 +119,14 @@ async def register_text(
|
|
121
119
|
var,
|
122
120
|
config,
|
123
121
|
*,
|
124
|
-
min_length:
|
125
|
-
max_length:
|
126
|
-
pattern:
|
122
|
+
min_length: int | None = 0,
|
123
|
+
max_length: int | None = 255,
|
124
|
+
pattern: str | None = None,
|
127
125
|
):
|
128
126
|
if not CORE.has_id(config[CONF_ID]):
|
129
127
|
var = cg.Pvariable(config[CONF_ID], var)
|
130
128
|
cg.add(cg.App.register_text(var))
|
129
|
+
CORE.register_platform_component("text", var)
|
131
130
|
await setup_text_core_(
|
132
131
|
var, config, min_length=min_length, max_length=max_length, pattern=pattern
|
133
132
|
)
|
@@ -136,9 +135,9 @@ async def register_text(
|
|
136
135
|
async def new_text(
|
137
136
|
config,
|
138
137
|
*,
|
139
|
-
min_length:
|
140
|
-
max_length:
|
141
|
-
pattern:
|
138
|
+
min_length: int | None = 0,
|
139
|
+
max_length: int | None = 255,
|
140
|
+
pattern: str | None = None,
|
142
141
|
):
|
143
142
|
var = cg.new_Pvariable(config[CONF_ID])
|
144
143
|
await register_text(
|
esphome/components/text/text.cpp
CHANGED
@@ -7,7 +7,7 @@ namespace text {
|
|
7
7
|
static const char *const TAG = "text";
|
8
8
|
|
9
9
|
void Text::publish_state(const std::string &state) {
|
10
|
-
this->
|
10
|
+
this->set_has_state(true);
|
11
11
|
this->state = state;
|
12
12
|
if (this->traits.get_mode() == TEXT_MODE_PASSWORD) {
|
13
13
|
ESP_LOGD(TAG, "'%s': Sending state " LOG_SECRET("'%s'"), this->get_name().c_str(), state.c_str());
|
esphome/components/text/text.h
CHANGED
@@ -28,9 +28,6 @@ class Text : public EntityBase {
|
|
28
28
|
|
29
29
|
void publish_state(const std::string &state);
|
30
30
|
|
31
|
-
/// Return whether this text input has gotten a full state yet.
|
32
|
-
bool has_state() const { return has_state_; }
|
33
|
-
|
34
31
|
/// Instantiate a TextCall object to modify this text component's state.
|
35
32
|
TextCall make_call() { return TextCall(this); }
|
36
33
|
|
@@ -48,7 +45,6 @@ class Text : public EntityBase {
|
|
48
45
|
virtual void control(const std::string &value) = 0;
|
49
46
|
|
50
47
|
CallbackManager<void(std::string)> state_callback_;
|
51
|
-
bool has_state_{false};
|
52
48
|
};
|
53
49
|
|
54
50
|
} // namespace text
|
@@ -215,6 +215,7 @@ async def register_text_sensor(var, config):
|
|
215
215
|
if not CORE.has_id(config[CONF_ID]):
|
216
216
|
var = cg.Pvariable(config[CONF_ID], var)
|
217
217
|
cg.add(cg.App.register_text_sensor(var))
|
218
|
+
CORE.register_platform_component("text_sensor", var)
|
218
219
|
await setup_text_sensor_core_(var, config)
|
219
220
|
|
220
221
|
|
@@ -8,7 +8,9 @@ static const char *const TAG = "text_sensor";
|
|
8
8
|
|
9
9
|
void TextSensor::publish_state(const std::string &state) {
|
10
10
|
this->raw_state = state;
|
11
|
-
this->raw_callback_
|
11
|
+
if (this->raw_callback_) {
|
12
|
+
this->raw_callback_->call(state);
|
13
|
+
}
|
12
14
|
|
13
15
|
ESP_LOGV(TAG, "'%s': Received new state %s", this->name_.c_str(), state.c_str());
|
14
16
|
|
@@ -53,20 +55,22 @@ void TextSensor::add_on_state_callback(std::function<void(std::string)> callback
|
|
53
55
|
this->callback_.add(std::move(callback));
|
54
56
|
}
|
55
57
|
void TextSensor::add_on_raw_state_callback(std::function<void(std::string)> callback) {
|
56
|
-
this->raw_callback_
|
58
|
+
if (!this->raw_callback_) {
|
59
|
+
this->raw_callback_ = make_unique<CallbackManager<void(std::string)>>();
|
60
|
+
}
|
61
|
+
this->raw_callback_->add(std::move(callback));
|
57
62
|
}
|
58
63
|
|
59
64
|
std::string TextSensor::get_state() const { return this->state; }
|
60
65
|
std::string TextSensor::get_raw_state() const { return this->raw_state; }
|
61
66
|
void TextSensor::internal_send_state_to_frontend(const std::string &state) {
|
62
67
|
this->state = state;
|
63
|
-
this->
|
68
|
+
this->set_has_state(true);
|
64
69
|
ESP_LOGD(TAG, "'%s': Sending state '%s'", this->name_.c_str(), state.c_str());
|
65
70
|
this->callback_.call(state);
|
66
71
|
}
|
67
72
|
|
68
73
|
std::string TextSensor::unique_id() { return ""; }
|
69
|
-
bool TextSensor::has_state() { return this->has_state_; }
|
70
74
|
|
71
75
|
} // namespace text_sensor
|
72
76
|
} // namespace esphome
|
@@ -6,6 +6,7 @@
|
|
6
6
|
#include "esphome/components/text_sensor/filter.h"
|
7
7
|
|
8
8
|
#include <vector>
|
9
|
+
#include <memory>
|
9
10
|
|
10
11
|
namespace esphome {
|
11
12
|
namespace text_sensor {
|
@@ -33,6 +34,8 @@ namespace text_sensor {
|
|
33
34
|
|
34
35
|
class TextSensor : public EntityBase, public EntityBase_DeviceClass {
|
35
36
|
public:
|
37
|
+
TextSensor() = default;
|
38
|
+
|
36
39
|
/// Getter-syntax for .state.
|
37
40
|
std::string get_state() const;
|
38
41
|
/// Getter-syntax for .raw_state
|
@@ -67,17 +70,14 @@ class TextSensor : public EntityBase, public EntityBase_DeviceClass {
|
|
67
70
|
*/
|
68
71
|
virtual std::string unique_id();
|
69
72
|
|
70
|
-
bool has_state();
|
71
|
-
|
72
73
|
void internal_send_state_to_frontend(const std::string &state);
|
73
74
|
|
74
75
|
protected:
|
75
|
-
CallbackManager<void(std::string)
|
76
|
-
|
76
|
+
std::unique_ptr<CallbackManager<void(std::string)>>
|
77
|
+
raw_callback_; ///< Storage for raw state callbacks (lazy allocated).
|
78
|
+
CallbackManager<void(std::string)> callback_; ///< Storage for filtered state callbacks.
|
77
79
|
|
78
80
|
Filter *filter_list_{nullptr}; ///< Store all active filters.
|
79
|
-
|
80
|
-
bool has_state_{false};
|
81
81
|
};
|
82
82
|
|
83
83
|
} // namespace text_sensor
|