esphome 2025.6.2__py3-none-any.whl → 2025.7.0b1__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- esphome/__main__.py +1 -3
- esphome/codegen.py +2 -0
- esphome/components/ac_dimmer/ac_dimmer.cpp +6 -6
- esphome/components/adc/__init__.py +25 -1
- esphome/components/adc/adc_sensor.h +11 -11
- esphome/components/adc/adc_sensor_common.cpp +1 -1
- esphome/components/adc/adc_sensor_esp32.cpp +16 -8
- esphome/components/ade7880/ade7880.h +0 -2
- esphome/components/ads1115/ads1115.h +0 -1
- esphome/components/ads1118/ads1118.h +0 -1
- esphome/components/ags10/ags10.h +0 -2
- esphome/components/aic3204/aic3204.h +0 -1
- esphome/components/alarm_control_panel/__init__.py +5 -2
- esphome/components/alpha3/alpha3.h +0 -1
- esphome/components/am43/cover/am43_cover.h +0 -1
- esphome/components/am43/sensor/am43_sensor.h +0 -1
- esphome/components/analog_threshold/analog_threshold_binary_sensor.h +0 -2
- esphome/components/anova/anova.cpp +5 -1
- esphome/components/anova/anova.h +0 -1
- esphome/components/apds9960/apds9960.cpp +1 -1
- esphome/components/api/__init__.py +42 -20
- esphome/components/api/api_connection.cpp +318 -391
- esphome/components/api/api_connection.h +206 -126
- esphome/components/api/api_frame_helper.cpp +89 -124
- esphome/components/api/api_frame_helper.h +57 -45
- esphome/components/api/api_pb2.cpp +414 -4350
- esphome/components/api/api_pb2.h +287 -198
- esphome/components/api/api_pb2_dump.cpp +4333 -0
- esphome/components/api/api_pb2_service.cpp +180 -425
- esphome/components/api/api_pb2_service.h +7 -6
- esphome/components/api/api_pb2_size.h +2 -4
- esphome/components/api/api_server.cpp +138 -167
- esphome/components/api/api_server.h +66 -12
- esphome/components/api/client.py +10 -4
- esphome/components/api/list_entities.cpp +36 -105
- esphome/components/api/list_entities.h +31 -23
- esphome/components/api/proto.h +26 -3
- esphome/components/api/subscribe_state.cpp +23 -29
- esphome/components/api/subscribe_state.h +26 -19
- esphome/components/as5600/as5600.h +0 -1
- esphome/components/async_tcp/__init__.py +14 -5
- esphome/components/atc_mithermometer/atc_mithermometer.h +0 -1
- esphome/components/atm90e32/atm90e32.cpp +2 -1
- esphome/components/audio/audio_decoder.cpp +1 -1
- esphome/components/audio/audio_transfer_buffer.cpp +2 -2
- esphome/components/b_parasite/b_parasite.h +0 -1
- esphome/components/bedjet/bedjet_hub.cpp +5 -1
- esphome/components/bedjet/climate/bedjet_climate.cpp +5 -1
- esphome/components/beken_spi_led_strip/led_strip.cpp +4 -2
- esphome/components/bh1750/bh1750.cpp +5 -5
- esphome/components/binary_sensor/__init__.py +82 -5
- esphome/components/binary_sensor/automation.h +19 -1
- esphome/components/binary_sensor/binary_sensor.cpp +12 -30
- esphome/components/binary_sensor/binary_sensor.h +11 -25
- esphome/components/binary_sensor/filter.cpp +29 -24
- esphome/components/binary_sensor/filter.h +20 -10
- esphome/components/ble_client/output/ble_binary_output.h +0 -1
- esphome/components/ble_client/sensor/ble_rssi_sensor.cpp +5 -1
- esphome/components/ble_client/sensor/ble_rssi_sensor.h +0 -1
- esphome/components/ble_client/sensor/ble_sensor.cpp +5 -1
- esphome/components/ble_client/sensor/ble_sensor.h +0 -1
- esphome/components/ble_client/switch/ble_switch.h +0 -1
- esphome/components/ble_client/text_sensor/ble_text_sensor.cpp +5 -1
- esphome/components/ble_client/text_sensor/ble_text_sensor.h +0 -1
- esphome/components/ble_presence/ble_presence_device.h +0 -1
- esphome/components/ble_rssi/ble_rssi_sensor.h +0 -1
- esphome/components/ble_scanner/ble_scanner.h +0 -1
- esphome/components/bluetooth_proxy/bluetooth_connection.h +9 -2
- esphome/components/bluetooth_proxy/bluetooth_proxy.cpp +16 -6
- esphome/components/bluetooth_proxy/bluetooth_proxy.h +8 -2
- esphome/components/bme680/sensor.py +1 -1
- esphome/components/bmp581/bmp581.h +0 -2
- esphome/components/button/__init__.py +5 -2
- esphome/components/camera/__init__.py +1 -0
- esphome/components/camera/camera.cpp +22 -0
- esphome/components/camera/camera.h +80 -0
- esphome/components/canbus/__init__.py +1 -0
- esphome/components/cap1188/cap1188.h +0 -1
- esphome/components/captive_portal/__init__.py +12 -2
- esphome/components/captive_portal/captive_portal.cpp +12 -2
- esphome/components/captive_portal/captive_portal.h +5 -2
- esphome/components/ccs811/ccs811.h +0 -2
- esphome/components/climate/__init__.py +5 -2
- esphome/components/cm1106/sensor.py +2 -2
- esphome/components/const/__init__.py +2 -0
- esphome/components/copy/binary_sensor/copy_binary_sensor.h +0 -1
- esphome/components/copy/button/copy_button.h +0 -1
- esphome/components/copy/cover/copy_cover.h +0 -1
- esphome/components/copy/fan/copy_fan.h +0 -1
- esphome/components/copy/lock/copy_lock.h +0 -1
- esphome/components/copy/number/copy_number.h +0 -1
- esphome/components/copy/select/copy_select.h +0 -1
- esphome/components/copy/sensor/copy_sensor.h +0 -1
- esphome/components/copy/switch/copy_switch.h +0 -1
- esphome/components/copy/text/copy_text.h +0 -1
- esphome/components/copy/text_sensor/copy_text_sensor.h +0 -1
- esphome/components/cover/__init__.py +5 -2
- esphome/components/cs5460a/cs5460a.h +0 -1
- esphome/components/datetime/__init__.py +4 -2
- esphome/components/debug/__init__.py +20 -0
- esphome/components/deep_sleep/__init__.py +43 -9
- esphome/components/demo/__init__.py +2 -2
- esphome/components/display/display.cpp +4 -3
- esphome/components/display/display.h +0 -2
- esphome/components/display/display_buffer.cpp +1 -1
- esphome/components/ds2484/__init__.py +1 -0
- esphome/components/ds2484/ds2484.cpp +209 -0
- esphome/components/ds2484/ds2484.h +43 -0
- esphome/components/ds2484/one_wire.py +37 -0
- esphome/components/duty_time/duty_time_sensor.h +0 -1
- esphome/components/ens160_base/ens160_base.h +0 -1
- esphome/components/es7210/es7210.h +0 -1
- esphome/components/es7243e/es7243e.h +0 -1
- esphome/components/es8156/es8156.h +0 -1
- esphome/components/es8311/es8311.h +0 -1
- esphome/components/es8388/es8388.h +0 -1
- esphome/components/esp32/__init__.py +102 -135
- esphome/components/esp32/core.cpp +0 -4
- esphome/components/esp32/gpio.h +1 -1
- esphome/components/esp32/helpers.cpp +69 -0
- esphome/components/esp32_ble/ble.cpp +5 -6
- esphome/components/esp32_ble/ble.h +29 -14
- esphome/components/esp32_ble/ble_event.h +6 -6
- esphome/components/esp32_ble_client/ble_client_base.cpp +21 -6
- esphome/components/esp32_ble_client/ble_client_base.h +24 -9
- esphome/components/esp32_ble_tracker/__init__.py +2 -8
- esphome/components/esp32_ble_tracker/esp32_ble_tracker.cpp +5 -5
- esphome/components/esp32_ble_tracker/esp32_ble_tracker.h +11 -7
- esphome/components/esp32_camera/__init__.py +111 -97
- esphome/components/esp32_camera/esp32_camera.cpp +41 -31
- esphome/components/esp32_camera/esp32_camera.h +35 -30
- esphome/components/esp32_camera_web_server/__init__.py +2 -1
- esphome/components/esp32_camera_web_server/camera_web_server.cpp +8 -8
- esphome/components/esp32_camera_web_server/camera_web_server.h +3 -3
- esphome/components/esp32_hall/sensor.py +2 -21
- esphome/components/esp32_hosted/__init__.py +101 -0
- esphome/components/esp32_hosted/esp32_hosted.py.script +12 -0
- esphome/components/esp32_improv/esp32_improv_component.cpp +3 -0
- esphome/components/esp32_rmt/__init__.py +0 -58
- esphome/components/esp32_rmt_led_strip/led_strip.cpp +77 -63
- esphome/components/esp32_rmt_led_strip/led_strip.h +11 -17
- esphome/components/esp32_rmt_led_strip/light.py +14 -76
- esphome/components/esp32_touch/esp32_touch.h +174 -28
- esphome/components/esp32_touch/esp32_touch_common.cpp +162 -0
- esphome/components/esp32_touch/esp32_touch_v1.cpp +238 -0
- esphome/components/esp32_touch/esp32_touch_v2.cpp +397 -0
- esphome/components/esp8266/__init__.py +1 -0
- esphome/components/esp8266/gpio.cpp +10 -10
- esphome/components/esp8266/helpers.cpp +31 -0
- esphome/components/esphome/ota/__init__.py +1 -0
- esphome/components/esphome/ota/ota_esphome.cpp +24 -19
- esphome/components/ethernet/__init__.py +42 -23
- esphome/components/ethernet/esp_eth_phy_jl1101.c +0 -16
- esphome/components/ethernet/ethernet_component.cpp +69 -29
- esphome/components/ethernet/ethernet_component.h +18 -10
- esphome/components/event/__init__.py +5 -2
- esphome/components/ezo/ezo.h +0 -1
- esphome/components/ezo_pmp/ezo_pmp.h +0 -1
- esphome/components/fan/__init__.py +5 -2
- esphome/components/feedback/feedback_cover.h +0 -1
- esphome/components/font/__init__.py +92 -82
- esphome/components/font/font.cpp +9 -2
- esphome/components/font/font.h +20 -5
- esphome/components/fs3000/fs3000.h +0 -1
- esphome/components/gcja5/gcja5.h +0 -1
- esphome/components/gl_r01_i2c/__init__.py +0 -0
- esphome/components/gl_r01_i2c/gl_r01_i2c.cpp +68 -0
- esphome/components/gl_r01_i2c/gl_r01_i2c.h +22 -0
- esphome/components/gl_r01_i2c/sensor.py +36 -0
- esphome/components/gp8403/gp8403.h +0 -1
- esphome/components/gpio/binary_sensor/__init__.py +17 -0
- esphome/components/gpio/binary_sensor/gpio_binary_sensor.cpp +77 -3
- esphome/components/gpio/binary_sensor/gpio_binary_sensor.h +40 -0
- esphome/components/grove_gas_mc_v2/grove_gas_mc_v2.h +0 -2
- esphome/components/he60r/he60r.h +0 -1
- esphome/components/heatpumpir/climate.py +2 -1
- esphome/components/heatpumpir/heatpumpir.cpp +1 -0
- esphome/components/heatpumpir/heatpumpir.h +1 -0
- esphome/components/honeywellabp2_i2c/honeywellabp2.h +0 -1
- esphome/components/host/__init__.py +2 -1
- esphome/components/host/helpers.cpp +57 -0
- esphome/components/http_request/__init__.py +19 -1
- esphome/components/http_request/http_request.h +1 -1
- esphome/components/http_request/http_request_arduino.cpp +0 -1
- esphome/components/http_request/http_request_arduino.h +1 -0
- esphome/components/http_request/http_request_idf.cpp +0 -1
- esphome/components/http_request/ota/ota_http_request.cpp +1 -1
- esphome/components/http_request/update/http_request_update.cpp +28 -9
- esphome/components/hydreon_rgxx/hydreon_rgxx.cpp +3 -9
- esphome/components/hydreon_rgxx/sensor.py +1 -1
- esphome/components/i2c/__init__.py +23 -11
- esphome/components/i2c/i2c_bus.h +8 -1
- esphome/components/i2c/i2c_bus_arduino.cpp +4 -3
- esphome/components/i2c/i2c_bus_arduino.h +6 -3
- esphome/components/i2c/i2c_bus_esp_idf.h +5 -3
- esphome/components/i2c_device/i2c_device.h +0 -1
- esphome/components/i2s_audio/__init__.py +2 -10
- esphome/components/i2s_audio/i2s_audio.cpp +1 -5
- esphome/components/i2s_audio/media_player/__init__.py +2 -2
- esphome/components/i2s_audio/speaker/i2s_audio_speaker.cpp +2 -2
- esphome/components/iaqcore/iaqcore.h +0 -2
- esphome/components/image/__init__.py +123 -24
- esphome/components/improv_serial/improv_serial_component.cpp +0 -4
- esphome/components/ina219/ina219.cpp +7 -0
- esphome/components/ina219/ina219.h +1 -0
- esphome/components/ina260/ina260.h +0 -2
- esphome/components/inkbird_ibsth1_mini/inkbird_ibsth1_mini.h +0 -1
- esphome/components/inkplate6/display.py +15 -0
- esphome/components/inkplate6/inkplate.cpp +2 -2
- esphome/components/integration/integration_sensor.h +0 -1
- esphome/components/internal_temperature/internal_temperature.cpp +8 -27
- esphome/components/internal_temperature/sensor.py +0 -26
- esphome/components/interval/interval.h +0 -2
- esphome/components/ld2410/button/__init__.py +3 -3
- esphome/components/ld2410/button/factory_reset_button.cpp +9 -0
- esphome/components/ld2410/button/{reset_button.h → factory_reset_button.h} +2 -2
- esphome/components/ld2410/ld2410.cpp +430 -261
- esphome/components/ld2410/ld2410.h +44 -146
- esphome/components/ld2410/number/__init__.py +2 -2
- esphome/components/ld2410/sensor.py +1 -1
- esphome/components/ld2410/switch/__init__.py +1 -1
- esphome/components/ld2420/ld2420.cpp +196 -100
- esphome/components/ld2420/ld2420.h +46 -118
- esphome/components/ld2420/number/__init__.py +2 -2
- esphome/components/ld2420/sensor/__init__.py +6 -2
- esphome/components/ld2420/sensor/ld2420_sensor.h +1 -1
- esphome/components/ld2450/button/__init__.py +3 -3
- esphome/components/ld2450/button/factory_reset_button.cpp +9 -0
- esphome/components/ld2450/button/{reset_button.h → factory_reset_button.h} +2 -2
- esphome/components/ld2450/ld2450.cpp +384 -232
- esphome/components/ld2450/ld2450.h +60 -69
- esphome/components/ld2450/switch/__init__.py +1 -1
- esphome/components/ledc/ledc_output.cpp +1 -63
- esphome/components/libretiny/__init__.py +4 -3
- esphome/components/libretiny/const.py +5 -0
- esphome/components/libretiny/generate_components.py +1 -0
- esphome/components/libretiny/helpers.cpp +35 -0
- esphome/components/libretiny/lt_component.cpp +5 -3
- esphome/components/light/__init__.py +4 -2
- esphome/components/light/addressable_light.h +3 -3
- esphome/components/light/light_call.cpp +180 -243
- esphome/components/light/light_call.h +72 -20
- esphome/components/light/light_color_values.h +14 -14
- esphome/components/light/light_state.h +15 -13
- esphome/components/light/transformers.h +2 -2
- esphome/components/ln882x/__init__.py +52 -0
- esphome/components/ln882x/boards.py +285 -0
- esphome/components/lock/__init__.py +5 -2
- esphome/components/logger/__init__.py +40 -3
- esphome/components/logger/logger.cpp +47 -12
- esphome/components/logger/logger.h +80 -49
- esphome/components/logger/logger_esp32.cpp +3 -3
- esphome/components/lps22/__init__.py +0 -0
- esphome/components/lps22/lps22.cpp +75 -0
- esphome/components/lps22/lps22.h +27 -0
- esphome/components/lps22/sensor.py +58 -0
- esphome/components/ltr390/ltr390.h +0 -1
- esphome/components/ltr501/ltr501.h +0 -1
- esphome/components/ltr_als_ps/ltr_als_ps.h +0 -1
- esphome/components/lvgl/__init__.py +1 -1
- esphome/components/lvgl/schemas.py +66 -6
- esphome/components/lvgl/styles.py +24 -16
- esphome/components/lvgl/widgets/__init__.py +12 -2
- esphome/components/lvgl/widgets/lv_bar.py +40 -19
- esphome/components/m5stack_8angle/light/m5stack_8angle_light.cpp +1 -1
- esphome/components/max9611/max9611.h +0 -1
- esphome/components/mcp23016/__init__.py +1 -1
- esphome/components/mcp23xxx_base/__init__.py +1 -1
- esphome/components/mcp4461/__init__.py +1 -1
- esphome/components/mcp4461/output/__init__.py +3 -2
- esphome/components/mcp9600/mcp9600.h +0 -2
- esphome/components/md5/md5.cpp +3 -3
- esphome/components/md5/md5.h +1 -6
- esphome/components/mdns/__init__.py +22 -11
- esphome/components/media_player/__init__.py +4 -3
- esphome/components/micro_wake_word/__init__.py +1 -5
- esphome/components/micro_wake_word/streaming_model.cpp +2 -2
- esphome/components/microphone/microphone.cpp +7 -9
- esphome/components/microphone/microphone.h +0 -2
- esphome/components/mipi_spi/display.py +1 -0
- esphome/components/mmc5603/mmc5603.cpp +1 -1
- esphome/components/modbus/modbus.cpp +33 -15
- esphome/components/modbus/modbus.h +9 -0
- esphome/components/modbus_controller/__init__.py +42 -10
- esphome/components/modbus_controller/modbus_controller.cpp +92 -11
- esphome/components/modbus_controller/modbus_controller.h +61 -7
- esphome/components/mopeka_pro_check/mopeka_pro_check.h +0 -1
- esphome/components/mopeka_std_check/mopeka_std_check.h +0 -1
- esphome/components/mpl3115a2/mpl3115a2.h +0 -2
- esphome/components/mqtt/__init__.py +16 -0
- esphome/components/mqtt/mqtt_backend.h +2 -1
- esphome/components/mqtt/mqtt_backend_esp32.cpp +126 -45
- esphome/components/mqtt/mqtt_backend_esp32.h +106 -4
- esphome/components/mqtt/mqtt_client.cpp +15 -9
- esphome/components/mqtt/mqtt_client.h +8 -3
- esphome/components/ms8607/ms8607.h +0 -1
- esphome/components/neopixelbus/light.py +4 -1
- esphome/components/neopixelbus/neopixelbus_light.h +1 -1
- esphome/components/network/__init__.py +4 -1
- esphome/components/network/ip_address.h +1 -0
- esphome/components/nextion/__init__.py +16 -0
- esphome/components/nextion/base_component.py +1 -0
- esphome/components/nextion/binary_sensor/nextion_binarysensor.cpp +1 -1
- esphome/components/nextion/display.py +14 -4
- esphome/components/nextion/nextion.cpp +166 -101
- esphome/components/nextion/nextion.h +84 -53
- esphome/components/nextion/nextion_commands.cpp +11 -10
- esphome/components/nextion/nextion_component.cpp +28 -28
- esphome/components/nextion/nextion_component.h +53 -18
- esphome/components/nextion/nextion_component_base.h +3 -0
- esphome/components/nextion/nextion_upload.cpp +36 -0
- esphome/components/nextion/nextion_upload_arduino.cpp +10 -35
- esphome/components/nextion/nextion_upload_idf.cpp +9 -33
- esphome/components/nextion/sensor/nextion_sensor.cpp +1 -1
- esphome/components/nextion/switch/nextion_switch.cpp +1 -1
- esphome/components/nextion/text_sensor/nextion_textsensor.cpp +1 -1
- esphome/components/nfc/nfc.cpp +3 -22
- esphome/components/nfc/nfc.h +3 -3
- esphome/components/number/__init__.py +5 -2
- esphome/components/online_image/__init__.py +5 -0
- esphome/components/online_image/online_image.cpp +6 -2
- esphome/components/online_image/online_image.h +4 -1
- esphome/components/opentherm/opentherm.cpp +7 -12
- esphome/components/openthread/__init__.py +47 -40
- esphome/components/openthread/const.py +1 -0
- esphome/components/openthread/openthread_esp.cpp +27 -5
- esphome/components/opt3001/__init__.py +0 -0
- esphome/components/opt3001/opt3001.cpp +122 -0
- esphome/components/opt3001/opt3001.h +27 -0
- esphome/components/opt3001/sensor.py +35 -0
- esphome/components/ota/__init__.py +17 -0
- esphome/components/ota/ota_backend.h +27 -1
- esphome/components/ota/ota_backend_arduino_esp32.cpp +12 -2
- esphome/components/ota/ota_backend_arduino_esp32.h +3 -0
- esphome/components/ota/ota_backend_arduino_esp8266.cpp +18 -4
- esphome/components/ota/ota_backend_arduino_esp8266.h +3 -0
- esphome/components/ota/ota_backend_arduino_libretiny.cpp +12 -2
- esphome/components/ota/ota_backend_arduino_libretiny.h +3 -0
- esphome/components/ota/ota_backend_arduino_rp2040.cpp +9 -2
- esphome/components/ota/ota_backend_arduino_rp2040.h +3 -0
- esphome/components/ota/ota_backend_esp_idf.cpp +10 -16
- esphome/components/ota/ota_backend_esp_idf.h +1 -0
- esphome/components/packages/__init__.py +5 -2
- esphome/components/packet_transport/binary_sensor.py +61 -4
- esphome/components/packet_transport/packet_transport.cpp +31 -1
- esphome/components/packet_transport/packet_transport.h +11 -5
- esphome/components/pcf8574/__init__.py +1 -1
- esphome/components/pi4ioe5v6408/__init__.py +84 -0
- esphome/components/pi4ioe5v6408/pi4ioe5v6408.cpp +171 -0
- esphome/components/pi4ioe5v6408/pi4ioe5v6408.h +70 -0
- esphome/components/pmsa003i/pmsa003i.h +0 -1
- esphome/components/pmsx003/pmsx003.h +0 -1
- esphome/components/pn7150/pn7150.cpp +7 -7
- esphome/components/pn7150/pn7150.h +0 -1
- esphome/components/pn7160/pn7160.cpp +7 -7
- esphome/components/pn7160/pn7160.h +0 -1
- esphome/components/preferences/syncer.h +2 -0
- esphome/components/prometheus/prometheus_handler.h +1 -1
- esphome/components/psram/psram.cpp +0 -20
- esphome/components/pulse_counter/pulse_counter_sensor.h +0 -1
- esphome/components/pulse_meter/pulse_meter_sensor.cpp +8 -4
- esphome/components/pulse_width/pulse_width.h +0 -1
- esphome/components/pvvx_mithermometer/display/pvvx_display.cpp +0 -4
- esphome/components/pvvx_mithermometer/display/pvvx_display.h +0 -2
- esphome/components/pvvx_mithermometer/pvvx_mithermometer.h +0 -1
- esphome/components/qr_code/__init__.py +13 -10
- esphome/components/qwiic_pir/qwiic_pir.h +0 -1
- esphome/components/radon_eye_ble/radon_eye_listener.cpp +1 -1
- esphome/components/rc522/rc522.h +0 -1
- esphome/components/rdm6300/rdm6300.h +0 -2
- esphome/components/remote_base/__init__.py +7 -5
- esphome/components/remote_base/remote_base.cpp +24 -21
- esphome/components/remote_base/remote_base.h +3 -26
- esphome/components/remote_receiver/__init__.py +40 -46
- esphome/components/remote_receiver/remote_receiver.h +4 -18
- esphome/components/remote_receiver/remote_receiver_esp32.cpp +0 -87
- esphome/components/remote_receiver/remote_receiver_esp8266.cpp +1 -1
- esphome/components/remote_transmitter/__init__.py +42 -43
- esphome/components/remote_transmitter/remote_transmitter.h +2 -14
- esphome/components/remote_transmitter/remote_transmitter_esp32.cpp +0 -77
- esphome/components/resistance/resistance_sensor.h +0 -1
- esphome/components/rp2040/__init__.py +1 -0
- esphome/components/rp2040/helpers.cpp +55 -0
- esphome/components/rp2040_pio_led_strip/led_strip.cpp +2 -2
- esphome/components/rpi_dpi_rgb/rpi_dpi_rgb.cpp +0 -4
- esphome/components/rtttl/__init__.py +4 -4
- esphome/components/rtttl/rtttl.cpp +10 -1
- esphome/components/ruuvitag/ruuvitag.h +0 -1
- esphome/components/safe_mode/safe_mode.cpp +2 -0
- esphome/components/safe_mode/safe_mode.h +4 -1
- esphome/components/scd30/scd30.h +0 -1
- esphome/components/scd30/sensor.py +2 -2
- esphome/components/scd4x/scd4x.cpp +61 -54
- esphome/components/scd4x/scd4x.h +17 -15
- esphome/components/scd4x/sensor.py +4 -4
- esphome/components/script/script.h +0 -2
- esphome/components/sdp3x/sensor.py +1 -1
- esphome/components/select/__init__.py +5 -2
- esphome/components/sen5x/sen5x.h +0 -1
- esphome/components/senseair/senseair.h +0 -1
- esphome/components/sensor/__init__.py +4 -2
- esphome/components/sensor/filter.cpp +1 -1
- esphome/components/sensor/sensor.cpp +12 -6
- esphome/components/sensor/sensor.h +13 -5
- esphome/components/servo/servo.h +0 -1
- esphome/components/sfa30/sfa30.h +0 -1
- esphome/components/sgp30/sgp30.h +0 -1
- esphome/components/sgp4x/sgp4x.h +0 -1
- esphome/components/shelly_dimmer/stm32flash.cpp +1 -2
- esphome/components/sht4x/sht4x.h +0 -1
- esphome/components/sm300d2/sm300d2.h +0 -2
- esphome/components/smt100/sensor.py +8 -4
- esphome/components/smt100/smt100.cpp +5 -5
- esphome/components/smt100/smt100.h +3 -3
- esphome/components/sn74hc595/__init__.py +1 -1
- esphome/components/sn74hc595/sn74hc595.cpp +5 -4
- esphome/components/sntp/sntp_component.cpp +9 -3
- esphome/components/sntp/time.py +2 -0
- esphome/components/socket/__init__.py +17 -0
- esphome/components/spi/__init__.py +27 -6
- esphome/components/spi/spi.cpp +3 -2
- esphome/components/spi/spi.h +9 -3
- esphome/components/spi/spi_arduino.cpp +3 -5
- esphome/components/spi/spi_esp_idf.cpp +40 -21
- esphome/components/spi_led_strip/spi_led_strip.cpp +1 -1
- esphome/components/sps30/sps30.h +0 -1
- esphome/components/ssd1306_base/ssd1306_base.cpp +1 -1
- esphome/components/st7701s/st7701s.cpp +0 -4
- esphome/components/status/status_binary_sensor.h +0 -2
- esphome/components/substitutions/__init__.py +76 -19
- esphome/components/substitutions/jinja.py +99 -0
- esphome/components/sun/sun.cpp +3 -4
- esphome/components/switch/__init__.py +5 -2
- esphome/components/switch/binary_sensor/switch_binary_sensor.h +0 -1
- esphome/components/sx126x/__init__.py +317 -0
- esphome/components/sx126x/automation.h +62 -0
- esphome/components/sx126x/packet_transport/__init__.py +26 -0
- esphome/components/sx126x/packet_transport/sx126x_transport.cpp +26 -0
- esphome/components/sx126x/packet_transport/sx126x_transport.h +25 -0
- esphome/components/sx126x/sx126x.cpp +523 -0
- esphome/components/sx126x/sx126x.h +140 -0
- esphome/components/sx126x/sx126x_reg.h +163 -0
- esphome/components/sx127x/__init__.py +325 -0
- esphome/components/sx127x/automation.h +62 -0
- esphome/components/sx127x/packet_transport/__init__.py +26 -0
- esphome/components/sx127x/packet_transport/sx127x_transport.cpp +26 -0
- esphome/components/sx127x/packet_transport/sx127x_transport.h +25 -0
- esphome/components/sx127x/sx127x.cpp +498 -0
- esphome/components/sx127x/sx127x.h +128 -0
- esphome/components/sx127x/sx127x_reg.h +295 -0
- esphome/components/syslog/esphome_syslog.cpp +5 -3
- esphome/components/syslog/esphome_syslog.h +1 -1
- esphome/components/tca9555/__init__.py +1 -1
- esphome/components/template/binary_sensor/template_binary_sensor.cpp +1 -9
- esphome/components/text/__init__.py +5 -2
- esphome/components/text_sensor/__init__.py +5 -2
- esphome/components/thermostat/thermostat_climate.cpp +34 -31
- esphome/components/thermostat/thermostat_climate.h +43 -39
- esphome/components/time/__init__.py +16 -2
- esphome/components/time/real_time_clock.cpp +4 -0
- esphome/components/time/real_time_clock.h +5 -1
- esphome/components/tlc5971/tlc5971.cpp +4 -1
- esphome/components/tmp1075/tmp1075.h +0 -2
- esphome/components/tof10120/tof10120_sensor.h +0 -1
- esphome/components/tormatic/tormatic_cover.h +0 -1
- esphome/components/total_daily_energy/total_daily_energy.h +0 -1
- esphome/components/tsl2591/tsl2591.cpp +1 -1
- esphome/components/ttp229_bsf/ttp229_bsf.h +0 -1
- esphome/components/ttp229_lsf/ttp229_lsf.h +0 -1
- esphome/components/tx20/tx20.cpp +2 -2
- esphome/components/uart/__init__.py +18 -0
- esphome/components/uart/uart_component_esp_idf.cpp +1 -5
- esphome/components/update/__init__.py +5 -2
- esphome/components/update/update_entity.h +8 -0
- esphome/components/usb_host/__init__.py +5 -2
- esphome/components/valve/__init__.py +5 -2
- esphome/components/vbus/vbus.h +0 -1
- esphome/components/veml3235/veml3235.h +0 -1
- esphome/components/veml7700/veml7700.h +0 -1
- esphome/components/vl53l0x/vl53l0x_sensor.h +0 -1
- esphome/components/voice_assistant/voice_assistant.cpp +4 -4
- esphome/components/watchdog/watchdog.cpp +0 -4
- esphome/components/waveshare_epaper/waveshare_epaper.cpp +6 -6
- esphome/components/web_server/__init__.py +34 -19
- esphome/components/web_server/ota/__init__.py +32 -0
- esphome/components/web_server/ota/ota_web_server.cpp +210 -0
- esphome/components/web_server/ota/ota_web_server.h +26 -0
- esphome/components/web_server/web_server.cpp +311 -430
- esphome/components/web_server/web_server.h +33 -23
- esphome/components/web_server/web_server_v1.cpp +4 -5
- esphome/components/web_server_base/__init__.py +5 -2
- esphome/components/web_server_base/web_server_base.cpp +2 -94
- esphome/components/web_server_base/web_server_base.h +5 -25
- esphome/components/web_server_idf/multipart.cpp +254 -0
- esphome/components/web_server_idf/multipart.h +86 -0
- esphome/components/web_server_idf/utils.cpp +32 -0
- esphome/components/web_server_idf/utils.h +10 -0
- esphome/components/web_server_idf/web_server_idf.cpp +162 -16
- esphome/components/web_server_idf/web_server_idf.h +11 -10
- esphome/components/wiegand/wiegand.cpp +2 -2
- esphome/components/wifi/__init__.py +18 -0
- esphome/components/wifi/wifi_component.cpp +17 -22
- esphome/components/wifi/wifi_component.h +27 -23
- esphome/components/wifi/wifi_component_esp32_arduino.cpp +52 -59
- esphome/components/wifi/wifi_component_esp8266.cpp +46 -46
- esphome/components/wifi/wifi_component_esp_idf.cpp +35 -36
- esphome/components/wifi/wifi_component_libretiny.cpp +26 -27
- esphome/components/wifi/wifi_component_pico_w.cpp +3 -3
- esphome/components/wifi_info/wifi_info_text_sensor.cpp +6 -6
- esphome/components/wireguard/__init__.py +2 -11
- esphome/components/xiaomi_ble/xiaomi_ble.cpp +13 -1
- esphome/components/xiaomi_ble/xiaomi_ble.h +1 -0
- esphome/components/xiaomi_cgd1/xiaomi_cgd1.h +0 -1
- esphome/components/xiaomi_cgdk2/xiaomi_cgdk2.h +0 -1
- esphome/components/xiaomi_cgg1/xiaomi_cgg1.h +0 -1
- esphome/components/xiaomi_cgpr1/xiaomi_cgpr1.h +0 -1
- esphome/components/xiaomi_gcls002/xiaomi_gcls002.h +0 -1
- esphome/components/xiaomi_hhccjcy01/xiaomi_hhccjcy01.h +0 -1
- esphome/components/xiaomi_hhccjcy10/xiaomi_hhccjcy10.h +0 -1
- esphome/components/xiaomi_hhccpot002/xiaomi_hhccpot002.h +0 -1
- esphome/components/xiaomi_jqjcy01ym/xiaomi_jqjcy01ym.h +0 -1
- esphome/components/xiaomi_lywsd02/xiaomi_lywsd02.h +0 -1
- esphome/components/xiaomi_lywsd02mmc/xiaomi_lywsd02mmc.h +0 -1
- esphome/components/xiaomi_lywsd03mmc/xiaomi_lywsd03mmc.h +0 -1
- esphome/components/xiaomi_lywsdcgq/xiaomi_lywsdcgq.h +0 -1
- esphome/components/xiaomi_mhoc303/xiaomi_mhoc303.h +0 -1
- esphome/components/xiaomi_mhoc401/xiaomi_mhoc401.h +0 -1
- esphome/components/xiaomi_miscale/xiaomi_miscale.h +0 -1
- esphome/components/xiaomi_mjyd02yla/xiaomi_mjyd02yla.h +0 -1
- esphome/components/xiaomi_mue4094rt/xiaomi_mue4094rt.h +0 -1
- esphome/components/xiaomi_rtcgq02lm/xiaomi_rtcgq02lm.h +0 -1
- esphome/components/xiaomi_wx08zm/xiaomi_wx08zm.h +0 -1
- esphome/components/xiaomi_xmwsdj04mmc/__init__.py +0 -0
- esphome/components/xiaomi_xmwsdj04mmc/sensor.py +77 -0
- esphome/components/xiaomi_xmwsdj04mmc/xiaomi_xmwsdj04mmc.cpp +77 -0
- esphome/components/xiaomi_xmwsdj04mmc/xiaomi_xmwsdj04mmc.h +36 -0
- esphome/components/zio_ultrasonic/zio_ultrasonic.h +0 -2
- esphome/components/zyaura/zyaura.h +0 -1
- esphome/config.py +88 -22
- esphome/config_helpers.py +74 -1
- esphome/config_validation.py +12 -1
- esphome/const.py +65 -10
- esphome/core/__init__.py +18 -2
- esphome/core/application.cpp +163 -10
- esphome/core/application.h +145 -165
- esphome/core/area.h +19 -0
- esphome/core/automation.h +58 -9
- esphome/core/color.cpp +3 -5
- esphome/core/color.h +16 -16
- esphome/core/component.cpp +151 -18
- esphome/core/component.h +98 -4
- esphome/core/component_iterator.cpp +7 -7
- esphome/core/component_iterator.h +9 -7
- esphome/core/config.py +155 -6
- esphome/core/controller.cpp +4 -2
- esphome/core/controller.h +1 -1
- esphome/core/datatypes.h +2 -2
- esphome/core/defines.h +17 -2
- esphome/core/device.h +20 -0
- esphome/core/entity_base.cpp +20 -15
- esphome/core/entity_base.h +76 -0
- esphome/core/entity_helpers.py +162 -1
- esphome/core/event_pool.h +81 -0
- esphome/core/helpers.cpp +75 -230
- esphome/core/helpers.h +164 -104
- esphome/core/lock_free_queue.h +151 -0
- esphome/core/log.cpp +2 -2
- esphome/core/log.h +2 -0
- esphome/core/optional.h +5 -0
- esphome/core/ring_buffer.cpp +2 -2
- esphome/core/scheduler.cpp +278 -103
- esphome/core/scheduler.h +157 -17
- esphome/core/time.cpp +5 -5
- esphome/core/time.h +5 -5
- esphome/cpp_generator.py +17 -0
- esphome/cpp_helpers.py +0 -22
- esphome/cpp_types.py +3 -1
- esphome/dashboard/entries.py +1 -1
- esphome/dashboard/util/text.py +5 -21
- esphome/dashboard/web_server.py +9 -1
- esphome/helpers.py +47 -0
- esphome/loader.py +15 -1
- esphome/pins.py +14 -8
- esphome/wizard.py +16 -3
- esphome/writer.py +21 -3
- esphome/yaml_util.py +0 -2
- {esphome-2025.6.2.dist-info → esphome-2025.7.0b1.dist-info}/METADATA +10 -9
- {esphome-2025.6.2.dist-info → esphome-2025.7.0b1.dist-info}/RECORD +593 -533
- esphome/components/esp32_ble/ble_event_pool.h +0 -72
- esphome/components/esp32_ble/queue.h +0 -85
- esphome/components/esp32_hall/esp32_hall.cpp +0 -25
- esphome/components/esp32_hall/esp32_hall.h +0 -23
- esphome/components/esp32_touch/esp32_touch.cpp +0 -355
- esphome/components/ld2410/button/reset_button.cpp +0 -9
- esphome/components/ld2450/button/reset_button.cpp +0 -9
- esphome/components/openthread/tlv.py +0 -65
- /esphome/{dashboard/enum.py → enum.py} +0 -0
- {esphome-2025.6.2.dist-info → esphome-2025.7.0b1.dist-info}/WHEEL +0 -0
- {esphome-2025.6.2.dist-info → esphome-2025.7.0b1.dist-info}/entry_points.txt +0 -0
- {esphome-2025.6.2.dist-info → esphome-2025.7.0b1.dist-info}/licenses/LICENSE +0 -0
- {esphome-2025.6.2.dist-info → esphome-2025.7.0b1.dist-info}/top_level.txt +0 -0
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
from esphome import pins
|
|
2
|
+
import esphome.codegen as cg
|
|
3
|
+
from esphome.components import i2c
|
|
4
|
+
import esphome.config_validation as cv
|
|
5
|
+
from esphome.const import (
|
|
6
|
+
CONF_ID,
|
|
7
|
+
CONF_INPUT,
|
|
8
|
+
CONF_INVERTED,
|
|
9
|
+
CONF_MODE,
|
|
10
|
+
CONF_NUMBER,
|
|
11
|
+
CONF_OUTPUT,
|
|
12
|
+
CONF_PULLDOWN,
|
|
13
|
+
CONF_PULLUP,
|
|
14
|
+
CONF_RESET,
|
|
15
|
+
)
|
|
16
|
+
|
|
17
|
+
AUTO_LOAD = ["gpio_expander"]
|
|
18
|
+
CODEOWNERS = ["@jesserockz"]
|
|
19
|
+
DEPENDENCIES = ["i2c"]
|
|
20
|
+
MULTI_CONF = True
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
pi4ioe5v6408_ns = cg.esphome_ns.namespace("pi4ioe5v6408")
|
|
24
|
+
PI4IOE5V6408Component = pi4ioe5v6408_ns.class_(
|
|
25
|
+
"PI4IOE5V6408Component", cg.Component, i2c.I2CDevice
|
|
26
|
+
)
|
|
27
|
+
PI4IOE5V6408GPIOPin = pi4ioe5v6408_ns.class_("PI4IOE5V6408GPIOPin", cg.GPIOPin)
|
|
28
|
+
|
|
29
|
+
CONF_PI4IOE5V6408 = "pi4ioe5v6408"
|
|
30
|
+
|
|
31
|
+
CONFIG_SCHEMA = (
|
|
32
|
+
cv.Schema(
|
|
33
|
+
{
|
|
34
|
+
cv.Required(CONF_ID): cv.declare_id(PI4IOE5V6408Component),
|
|
35
|
+
cv.Optional(CONF_RESET, default=True): cv.boolean,
|
|
36
|
+
}
|
|
37
|
+
)
|
|
38
|
+
.extend(cv.COMPONENT_SCHEMA)
|
|
39
|
+
.extend(i2c.i2c_device_schema(0x43))
|
|
40
|
+
)
|
|
41
|
+
|
|
42
|
+
|
|
43
|
+
async def to_code(config):
|
|
44
|
+
var = cg.new_Pvariable(config[CONF_ID])
|
|
45
|
+
await cg.register_component(var, config)
|
|
46
|
+
await i2c.register_i2c_device(var, config)
|
|
47
|
+
|
|
48
|
+
cg.add(var.set_reset(config[CONF_RESET]))
|
|
49
|
+
|
|
50
|
+
|
|
51
|
+
def validate_mode(value):
|
|
52
|
+
if not (value[CONF_INPUT] or value[CONF_OUTPUT]):
|
|
53
|
+
raise cv.Invalid("Mode must be either input or output")
|
|
54
|
+
if value[CONF_INPUT] and value[CONF_OUTPUT]:
|
|
55
|
+
raise cv.Invalid("Mode must be either input or output")
|
|
56
|
+
return value
|
|
57
|
+
|
|
58
|
+
|
|
59
|
+
PI4IOE5V6408_PIN_SCHEMA = pins.gpio_base_schema(
|
|
60
|
+
PI4IOE5V6408GPIOPin,
|
|
61
|
+
cv.int_range(min=0, max=7),
|
|
62
|
+
modes=[
|
|
63
|
+
CONF_INPUT,
|
|
64
|
+
CONF_OUTPUT,
|
|
65
|
+
CONF_PULLUP,
|
|
66
|
+
CONF_PULLDOWN,
|
|
67
|
+
],
|
|
68
|
+
mode_validator=validate_mode,
|
|
69
|
+
).extend(
|
|
70
|
+
{
|
|
71
|
+
cv.Required(CONF_PI4IOE5V6408): cv.use_id(PI4IOE5V6408Component),
|
|
72
|
+
}
|
|
73
|
+
)
|
|
74
|
+
|
|
75
|
+
|
|
76
|
+
@pins.PIN_SCHEMA_REGISTRY.register(CONF_PI4IOE5V6408, PI4IOE5V6408_PIN_SCHEMA)
|
|
77
|
+
async def pi4ioe5v6408_pin_schema(config):
|
|
78
|
+
var = cg.new_Pvariable(config[CONF_ID])
|
|
79
|
+
await cg.register_parented(var, config[CONF_PI4IOE5V6408])
|
|
80
|
+
|
|
81
|
+
cg.add(var.set_pin(config[CONF_NUMBER]))
|
|
82
|
+
cg.add(var.set_inverted(config[CONF_INVERTED]))
|
|
83
|
+
cg.add(var.set_flags(pins.gpio_flags_expr(config[CONF_MODE])))
|
|
84
|
+
return var
|
|
@@ -0,0 +1,171 @@
|
|
|
1
|
+
#include "pi4ioe5v6408.h"
|
|
2
|
+
#include "esphome/core/log.h"
|
|
3
|
+
|
|
4
|
+
namespace esphome {
|
|
5
|
+
namespace pi4ioe5v6408 {
|
|
6
|
+
|
|
7
|
+
static const uint8_t PI4IOE5V6408_REGISTER_DEVICE_ID = 0x01;
|
|
8
|
+
static const uint8_t PI4IOE5V6408_REGISTER_IO_DIR = 0x03;
|
|
9
|
+
static const uint8_t PI4IOE5V6408_REGISTER_OUT_SET = 0x05;
|
|
10
|
+
static const uint8_t PI4IOE5V6408_REGISTER_OUT_HIGH_IMPEDENCE = 0x07;
|
|
11
|
+
static const uint8_t PI4IOE5V6408_REGISTER_IN_DEFAULT_STATE = 0x09;
|
|
12
|
+
static const uint8_t PI4IOE5V6408_REGISTER_PULL_ENABLE = 0x0B;
|
|
13
|
+
static const uint8_t PI4IOE5V6408_REGISTER_PULL_SELECT = 0x0D;
|
|
14
|
+
static const uint8_t PI4IOE5V6408_REGISTER_IN_STATE = 0x0F;
|
|
15
|
+
static const uint8_t PI4IOE5V6408_REGISTER_INTERRUPT_ENABLE_MASK = 0x11;
|
|
16
|
+
static const uint8_t PI4IOE5V6408_REGISTER_INTERRUPT_STATUS = 0x13;
|
|
17
|
+
|
|
18
|
+
static const char *const TAG = "pi4ioe5v6408";
|
|
19
|
+
|
|
20
|
+
void PI4IOE5V6408Component::setup() {
|
|
21
|
+
ESP_LOGCONFIG(TAG, "Running setup");
|
|
22
|
+
if (this->reset_) {
|
|
23
|
+
this->reg(PI4IOE5V6408_REGISTER_DEVICE_ID) |= 0b00000001;
|
|
24
|
+
this->reg(PI4IOE5V6408_REGISTER_OUT_HIGH_IMPEDENCE) = 0b00000000;
|
|
25
|
+
} else {
|
|
26
|
+
if (!this->read_gpio_modes_()) {
|
|
27
|
+
this->mark_failed();
|
|
28
|
+
ESP_LOGE(TAG, "Failed to read GPIO modes");
|
|
29
|
+
return;
|
|
30
|
+
}
|
|
31
|
+
if (!this->read_gpio_outputs_()) {
|
|
32
|
+
this->mark_failed();
|
|
33
|
+
ESP_LOGE(TAG, "Failed to read GPIO outputs");
|
|
34
|
+
return;
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
void PI4IOE5V6408Component::dump_config() {
|
|
39
|
+
ESP_LOGCONFIG(TAG, "PI4IOE5V6408:");
|
|
40
|
+
LOG_I2C_DEVICE(this)
|
|
41
|
+
if (this->is_failed()) {
|
|
42
|
+
ESP_LOGE(TAG, ESP_LOG_MSG_COMM_FAIL);
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
void PI4IOE5V6408Component::pin_mode(uint8_t pin, gpio::Flags flags) {
|
|
46
|
+
if (flags & gpio::FLAG_OUTPUT) {
|
|
47
|
+
// Set mode mask bit
|
|
48
|
+
this->mode_mask_ |= 1 << pin;
|
|
49
|
+
} else if (flags & gpio::FLAG_INPUT) {
|
|
50
|
+
// Clear mode mask bit
|
|
51
|
+
this->mode_mask_ &= ~(1 << pin);
|
|
52
|
+
if (flags & gpio::FLAG_PULLUP) {
|
|
53
|
+
this->pull_up_down_mask_ |= 1 << pin;
|
|
54
|
+
this->pull_enable_mask_ |= 1 << pin;
|
|
55
|
+
} else if (flags & gpio::FLAG_PULLDOWN) {
|
|
56
|
+
this->pull_up_down_mask_ &= ~(1 << pin);
|
|
57
|
+
this->pull_enable_mask_ |= 1 << pin;
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
// Write GPIO to enable input mode
|
|
61
|
+
this->write_gpio_modes_();
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
void PI4IOE5V6408Component::loop() { this->reset_pin_cache_(); }
|
|
65
|
+
|
|
66
|
+
bool PI4IOE5V6408Component::read_gpio_outputs_() {
|
|
67
|
+
if (this->is_failed())
|
|
68
|
+
return false;
|
|
69
|
+
|
|
70
|
+
uint8_t data;
|
|
71
|
+
if (!this->read_byte(PI4IOE5V6408_REGISTER_OUT_SET, &data)) {
|
|
72
|
+
this->status_set_warning("Failed to read output register");
|
|
73
|
+
return false;
|
|
74
|
+
}
|
|
75
|
+
this->output_mask_ = data;
|
|
76
|
+
this->status_clear_warning();
|
|
77
|
+
return true;
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
bool PI4IOE5V6408Component::read_gpio_modes_() {
|
|
81
|
+
if (this->is_failed())
|
|
82
|
+
return false;
|
|
83
|
+
|
|
84
|
+
uint8_t data;
|
|
85
|
+
if (!this->read_byte(PI4IOE5V6408_REGISTER_IO_DIR, &data)) {
|
|
86
|
+
this->status_set_warning("Failed to read GPIO modes");
|
|
87
|
+
return false;
|
|
88
|
+
}
|
|
89
|
+
#if ESPHOME_LOG_LEVEL >= ESPHOME_LOG_LEVEL_VERBOSE
|
|
90
|
+
ESP_LOGV(TAG, "Read GPIO modes: 0b" BYTE_TO_BINARY_PATTERN, BYTE_TO_BINARY(data));
|
|
91
|
+
#endif
|
|
92
|
+
this->mode_mask_ = data;
|
|
93
|
+
this->status_clear_warning();
|
|
94
|
+
return true;
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
bool PI4IOE5V6408Component::digital_read_hw(uint8_t pin) {
|
|
98
|
+
if (this->is_failed())
|
|
99
|
+
return false;
|
|
100
|
+
|
|
101
|
+
uint8_t data;
|
|
102
|
+
if (!this->read_byte(PI4IOE5V6408_REGISTER_IN_STATE, &data)) {
|
|
103
|
+
this->status_set_warning("Failed to read GPIO state");
|
|
104
|
+
return false;
|
|
105
|
+
}
|
|
106
|
+
this->input_mask_ = data;
|
|
107
|
+
this->status_clear_warning();
|
|
108
|
+
return true;
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
void PI4IOE5V6408Component::digital_write_hw(uint8_t pin, bool value) {
|
|
112
|
+
if (this->is_failed())
|
|
113
|
+
return;
|
|
114
|
+
|
|
115
|
+
if (value) {
|
|
116
|
+
this->output_mask_ |= (1 << pin);
|
|
117
|
+
} else {
|
|
118
|
+
this->output_mask_ &= ~(1 << pin);
|
|
119
|
+
}
|
|
120
|
+
if (!this->write_byte(PI4IOE5V6408_REGISTER_OUT_SET, this->output_mask_)) {
|
|
121
|
+
this->status_set_warning("Failed to write output register");
|
|
122
|
+
return;
|
|
123
|
+
}
|
|
124
|
+
#if ESPHOME_LOG_LEVEL >= ESPHOME_LOG_LEVEL_VERBOSE
|
|
125
|
+
ESP_LOGV(TAG, "Wrote GPIO output: 0b" BYTE_TO_BINARY_PATTERN, BYTE_TO_BINARY(this->output_mask_));
|
|
126
|
+
#endif
|
|
127
|
+
this->status_clear_warning();
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
bool PI4IOE5V6408Component::write_gpio_modes_() {
|
|
131
|
+
if (this->is_failed())
|
|
132
|
+
return false;
|
|
133
|
+
|
|
134
|
+
if (!this->write_byte(PI4IOE5V6408_REGISTER_IO_DIR, this->mode_mask_)) {
|
|
135
|
+
this->status_set_warning("Failed to write GPIO modes");
|
|
136
|
+
return false;
|
|
137
|
+
}
|
|
138
|
+
if (!this->write_byte(PI4IOE5V6408_REGISTER_PULL_SELECT, this->pull_up_down_mask_)) {
|
|
139
|
+
this->status_set_warning("Failed to write GPIO pullup/pulldown");
|
|
140
|
+
return false;
|
|
141
|
+
}
|
|
142
|
+
if (!this->write_byte(PI4IOE5V6408_REGISTER_PULL_ENABLE, this->pull_enable_mask_)) {
|
|
143
|
+
this->status_set_warning("Failed to write GPIO pull enable");
|
|
144
|
+
return false;
|
|
145
|
+
}
|
|
146
|
+
#if ESPHOME_LOG_LEVEL >= ESPHOME_LOG_LEVEL_VERBOSE
|
|
147
|
+
ESP_LOGV(TAG,
|
|
148
|
+
"Wrote GPIO modes: 0b" BYTE_TO_BINARY_PATTERN "\n"
|
|
149
|
+
"Wrote GPIO pullup/pulldown: 0b" BYTE_TO_BINARY_PATTERN "\n"
|
|
150
|
+
"Wrote GPIO pull enable: 0b" BYTE_TO_BINARY_PATTERN,
|
|
151
|
+
BYTE_TO_BINARY(this->mode_mask_), BYTE_TO_BINARY(this->pull_up_down_mask_),
|
|
152
|
+
BYTE_TO_BINARY(this->pull_enable_mask_));
|
|
153
|
+
#endif
|
|
154
|
+
this->status_clear_warning();
|
|
155
|
+
return true;
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
bool PI4IOE5V6408Component::digital_read_cache(uint8_t pin) { return (this->input_mask_ & (1 << pin)); }
|
|
159
|
+
|
|
160
|
+
float PI4IOE5V6408Component::get_setup_priority() const { return setup_priority::IO; }
|
|
161
|
+
|
|
162
|
+
void PI4IOE5V6408GPIOPin::setup() { this->pin_mode(this->flags_); }
|
|
163
|
+
void PI4IOE5V6408GPIOPin::pin_mode(gpio::Flags flags) { this->parent_->pin_mode(this->pin_, flags); }
|
|
164
|
+
bool PI4IOE5V6408GPIOPin::digital_read() { return this->parent_->digital_read(this->pin_) != this->inverted_; }
|
|
165
|
+
void PI4IOE5V6408GPIOPin::digital_write(bool value) {
|
|
166
|
+
this->parent_->digital_write(this->pin_, value != this->inverted_);
|
|
167
|
+
}
|
|
168
|
+
std::string PI4IOE5V6408GPIOPin::dump_summary() const { return str_sprintf("%u via PI4IOE5V6408", this->pin_); }
|
|
169
|
+
|
|
170
|
+
} // namespace pi4ioe5v6408
|
|
171
|
+
} // namespace esphome
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
#pragma once
|
|
2
|
+
|
|
3
|
+
#include "esphome/components/gpio_expander/cached_gpio.h"
|
|
4
|
+
#include "esphome/components/i2c/i2c.h"
|
|
5
|
+
#include "esphome/core/component.h"
|
|
6
|
+
#include "esphome/core/hal.h"
|
|
7
|
+
|
|
8
|
+
namespace esphome {
|
|
9
|
+
namespace pi4ioe5v6408 {
|
|
10
|
+
class PI4IOE5V6408Component : public Component,
|
|
11
|
+
public i2c::I2CDevice,
|
|
12
|
+
public gpio_expander::CachedGpioExpander<uint8_t, 8> {
|
|
13
|
+
public:
|
|
14
|
+
PI4IOE5V6408Component() = default;
|
|
15
|
+
|
|
16
|
+
void setup() override;
|
|
17
|
+
void pin_mode(uint8_t pin, gpio::Flags flags);
|
|
18
|
+
|
|
19
|
+
float get_setup_priority() const override;
|
|
20
|
+
void dump_config() override;
|
|
21
|
+
void loop() override;
|
|
22
|
+
|
|
23
|
+
/// Indicate if the component should reset the state during setup
|
|
24
|
+
void set_reset(bool reset) { this->reset_ = reset; }
|
|
25
|
+
|
|
26
|
+
protected:
|
|
27
|
+
bool digital_read_hw(uint8_t pin) override;
|
|
28
|
+
bool digital_read_cache(uint8_t pin) override;
|
|
29
|
+
void digital_write_hw(uint8_t pin, bool value) override;
|
|
30
|
+
|
|
31
|
+
/// Mask for the pin mode - 1 means output, 0 means input
|
|
32
|
+
uint8_t mode_mask_{0x00};
|
|
33
|
+
/// The mask to write as output state - 1 means HIGH, 0 means LOW
|
|
34
|
+
uint8_t output_mask_{0x00};
|
|
35
|
+
/// The state read in digital_read_hw - 1 means HIGH, 0 means LOW
|
|
36
|
+
uint8_t input_mask_{0x00};
|
|
37
|
+
/// The mask to write as input buffer state - 1 means enabled, 0 means disabled
|
|
38
|
+
uint8_t pull_enable_mask_{0x00};
|
|
39
|
+
/// The mask to write as pullup state - 1 means pullup, 0 means pulldown
|
|
40
|
+
uint8_t pull_up_down_mask_{0x00};
|
|
41
|
+
|
|
42
|
+
bool reset_{true};
|
|
43
|
+
|
|
44
|
+
bool read_gpio_modes_();
|
|
45
|
+
bool write_gpio_modes_();
|
|
46
|
+
bool read_gpio_outputs_();
|
|
47
|
+
};
|
|
48
|
+
|
|
49
|
+
class PI4IOE5V6408GPIOPin : public GPIOPin, public Parented<PI4IOE5V6408Component> {
|
|
50
|
+
public:
|
|
51
|
+
void setup() override;
|
|
52
|
+
void pin_mode(gpio::Flags flags) override;
|
|
53
|
+
bool digital_read() override;
|
|
54
|
+
void digital_write(bool value) override;
|
|
55
|
+
std::string dump_summary() const override;
|
|
56
|
+
|
|
57
|
+
void set_pin(uint8_t pin) { this->pin_ = pin; }
|
|
58
|
+
void set_inverted(bool inverted) { this->inverted_ = inverted; }
|
|
59
|
+
void set_flags(gpio::Flags flags) { this->flags_ = flags; }
|
|
60
|
+
|
|
61
|
+
gpio::Flags get_flags() const override { return this->flags_; }
|
|
62
|
+
|
|
63
|
+
protected:
|
|
64
|
+
uint8_t pin_;
|
|
65
|
+
bool inverted_;
|
|
66
|
+
gpio::Flags flags_;
|
|
67
|
+
};
|
|
68
|
+
|
|
69
|
+
} // namespace pi4ioe5v6408
|
|
70
|
+
} // namespace esphome
|
|
@@ -32,7 +32,6 @@ class PMSA003IComponent : public PollingComponent, public i2c::I2CDevice {
|
|
|
32
32
|
void setup() override;
|
|
33
33
|
void dump_config() override;
|
|
34
34
|
void update() override;
|
|
35
|
-
float get_setup_priority() const override { return setup_priority::DATA; }
|
|
36
35
|
|
|
37
36
|
void set_standard_units(bool standard_units) { this->standard_units_ = standard_units; }
|
|
38
37
|
|
|
@@ -31,7 +31,6 @@ enum PMSX003State {
|
|
|
31
31
|
class PMSX003Component : public uart::UARTDevice, public Component {
|
|
32
32
|
public:
|
|
33
33
|
PMSX003Component() = default;
|
|
34
|
-
float get_setup_priority() const override { return setup_priority::DATA; }
|
|
35
34
|
void dump_config() override;
|
|
36
35
|
void loop() override;
|
|
37
36
|
|
|
@@ -584,7 +584,7 @@ void PN7150::nci_fsm_transition_() {
|
|
|
584
584
|
} else {
|
|
585
585
|
this->nci_fsm_set_state_(NCIState::NFCC_INIT);
|
|
586
586
|
}
|
|
587
|
-
|
|
587
|
+
[[fallthrough]];
|
|
588
588
|
|
|
589
589
|
case NCIState::NFCC_INIT:
|
|
590
590
|
if (this->init_core_() != nfc::STATUS_OK) {
|
|
@@ -594,7 +594,7 @@ void PN7150::nci_fsm_transition_() {
|
|
|
594
594
|
} else {
|
|
595
595
|
this->nci_fsm_set_state_(NCIState::NFCC_CONFIG);
|
|
596
596
|
}
|
|
597
|
-
|
|
597
|
+
[[fallthrough]];
|
|
598
598
|
|
|
599
599
|
case NCIState::NFCC_CONFIG:
|
|
600
600
|
if (this->send_init_config_() != nfc::STATUS_OK) {
|
|
@@ -605,7 +605,7 @@ void PN7150::nci_fsm_transition_() {
|
|
|
605
605
|
this->config_refresh_pending_ = false;
|
|
606
606
|
this->nci_fsm_set_state_(NCIState::NFCC_SET_DISCOVER_MAP);
|
|
607
607
|
}
|
|
608
|
-
|
|
608
|
+
[[fallthrough]];
|
|
609
609
|
|
|
610
610
|
case NCIState::NFCC_SET_DISCOVER_MAP:
|
|
611
611
|
if (this->set_discover_map_() != nfc::STATUS_OK) {
|
|
@@ -615,7 +615,7 @@ void PN7150::nci_fsm_transition_() {
|
|
|
615
615
|
} else {
|
|
616
616
|
this->nci_fsm_set_state_(NCIState::NFCC_SET_LISTEN_MODE_ROUTING);
|
|
617
617
|
}
|
|
618
|
-
|
|
618
|
+
[[fallthrough]];
|
|
619
619
|
|
|
620
620
|
case NCIState::NFCC_SET_LISTEN_MODE_ROUTING:
|
|
621
621
|
if (this->set_listen_mode_routing_() != nfc::STATUS_OK) {
|
|
@@ -625,7 +625,7 @@ void PN7150::nci_fsm_transition_() {
|
|
|
625
625
|
} else {
|
|
626
626
|
this->nci_fsm_set_state_(NCIState::RFST_IDLE);
|
|
627
627
|
}
|
|
628
|
-
|
|
628
|
+
[[fallthrough]];
|
|
629
629
|
|
|
630
630
|
case NCIState::RFST_IDLE:
|
|
631
631
|
if (this->nci_state_error_ == NCIState::RFST_DISCOVERY) {
|
|
@@ -650,14 +650,14 @@ void PN7150::nci_fsm_transition_() {
|
|
|
650
650
|
|
|
651
651
|
case NCIState::RFST_W4_HOST_SELECT:
|
|
652
652
|
select_endpoint_();
|
|
653
|
-
|
|
653
|
+
[[fallthrough]];
|
|
654
654
|
|
|
655
655
|
// All cases below are waiting for NOTIFICATION messages
|
|
656
656
|
case NCIState::RFST_DISCOVERY:
|
|
657
657
|
if (this->config_refresh_pending_) {
|
|
658
658
|
this->refresh_core_config_();
|
|
659
659
|
}
|
|
660
|
-
|
|
660
|
+
[[fallthrough]];
|
|
661
661
|
|
|
662
662
|
case NCIState::RFST_LISTEN_ACTIVE:
|
|
663
663
|
case NCIState::RFST_LISTEN_SLEEP:
|
|
@@ -146,7 +146,6 @@ class PN7150 : public nfc::Nfcc, public Component {
|
|
|
146
146
|
public:
|
|
147
147
|
void setup() override;
|
|
148
148
|
void dump_config() override;
|
|
149
|
-
float get_setup_priority() const override { return setup_priority::DATA; }
|
|
150
149
|
void loop() override;
|
|
151
150
|
|
|
152
151
|
void set_irq_pin(GPIOPin *irq_pin) { this->irq_pin_ = irq_pin; }
|
|
@@ -609,7 +609,7 @@ void PN7160::nci_fsm_transition_() {
|
|
|
609
609
|
} else {
|
|
610
610
|
this->nci_fsm_set_state_(NCIState::NFCC_INIT);
|
|
611
611
|
}
|
|
612
|
-
|
|
612
|
+
[[fallthrough]];
|
|
613
613
|
|
|
614
614
|
case NCIState::NFCC_INIT:
|
|
615
615
|
if (this->init_core_() != nfc::STATUS_OK) {
|
|
@@ -619,7 +619,7 @@ void PN7160::nci_fsm_transition_() {
|
|
|
619
619
|
} else {
|
|
620
620
|
this->nci_fsm_set_state_(NCIState::NFCC_CONFIG);
|
|
621
621
|
}
|
|
622
|
-
|
|
622
|
+
[[fallthrough]];
|
|
623
623
|
|
|
624
624
|
case NCIState::NFCC_CONFIG:
|
|
625
625
|
if (this->send_init_config_() != nfc::STATUS_OK) {
|
|
@@ -630,7 +630,7 @@ void PN7160::nci_fsm_transition_() {
|
|
|
630
630
|
this->config_refresh_pending_ = false;
|
|
631
631
|
this->nci_fsm_set_state_(NCIState::NFCC_SET_DISCOVER_MAP);
|
|
632
632
|
}
|
|
633
|
-
|
|
633
|
+
[[fallthrough]];
|
|
634
634
|
|
|
635
635
|
case NCIState::NFCC_SET_DISCOVER_MAP:
|
|
636
636
|
if (this->set_discover_map_() != nfc::STATUS_OK) {
|
|
@@ -640,7 +640,7 @@ void PN7160::nci_fsm_transition_() {
|
|
|
640
640
|
} else {
|
|
641
641
|
this->nci_fsm_set_state_(NCIState::NFCC_SET_LISTEN_MODE_ROUTING);
|
|
642
642
|
}
|
|
643
|
-
|
|
643
|
+
[[fallthrough]];
|
|
644
644
|
|
|
645
645
|
case NCIState::NFCC_SET_LISTEN_MODE_ROUTING:
|
|
646
646
|
if (this->set_listen_mode_routing_() != nfc::STATUS_OK) {
|
|
@@ -650,7 +650,7 @@ void PN7160::nci_fsm_transition_() {
|
|
|
650
650
|
} else {
|
|
651
651
|
this->nci_fsm_set_state_(NCIState::RFST_IDLE);
|
|
652
652
|
}
|
|
653
|
-
|
|
653
|
+
[[fallthrough]];
|
|
654
654
|
|
|
655
655
|
case NCIState::RFST_IDLE:
|
|
656
656
|
if (this->nci_state_error_ == NCIState::RFST_DISCOVERY) {
|
|
@@ -675,14 +675,14 @@ void PN7160::nci_fsm_transition_() {
|
|
|
675
675
|
|
|
676
676
|
case NCIState::RFST_W4_HOST_SELECT:
|
|
677
677
|
select_endpoint_();
|
|
678
|
-
|
|
678
|
+
[[fallthrough]];
|
|
679
679
|
|
|
680
680
|
// All cases below are waiting for NOTIFICATION messages
|
|
681
681
|
case NCIState::RFST_DISCOVERY:
|
|
682
682
|
if (this->config_refresh_pending_) {
|
|
683
683
|
this->refresh_core_config_();
|
|
684
684
|
}
|
|
685
|
-
|
|
685
|
+
[[fallthrough]];
|
|
686
686
|
|
|
687
687
|
case NCIState::RFST_LISTEN_ACTIVE:
|
|
688
688
|
case NCIState::RFST_LISTEN_SLEEP:
|
|
@@ -161,7 +161,6 @@ class PN7160 : public nfc::Nfcc, public Component {
|
|
|
161
161
|
public:
|
|
162
162
|
void setup() override;
|
|
163
163
|
void dump_config() override;
|
|
164
|
-
float get_setup_priority() const override { return setup_priority::DATA; }
|
|
165
164
|
void loop() override;
|
|
166
165
|
|
|
167
166
|
void set_dwl_req_pin(GPIOPin *dwl_req_pin) { this->dwl_req_pin_ = dwl_req_pin; }
|
|
@@ -12,6 +12,8 @@ class IntervalSyncer : public Component {
|
|
|
12
12
|
void setup() override {
|
|
13
13
|
if (this->write_interval_ != 0) {
|
|
14
14
|
set_interval(this->write_interval_, []() { global_preferences->sync(); });
|
|
15
|
+
// When using interval-based syncing, we don't need the loop
|
|
16
|
+
this->disable_loop();
|
|
15
17
|
}
|
|
16
18
|
}
|
|
17
19
|
void loop() override {
|
|
@@ -40,7 +40,7 @@ class PrometheusHandler : public AsyncWebHandler, public Component {
|
|
|
40
40
|
*/
|
|
41
41
|
void add_label_name(EntityBase *obj, const std::string &value) { relabel_map_name_.insert({obj, value}); }
|
|
42
42
|
|
|
43
|
-
bool canHandle(AsyncWebServerRequest *request) override {
|
|
43
|
+
bool canHandle(AsyncWebServerRequest *request) const override {
|
|
44
44
|
if (request->method() == HTTP_GET) {
|
|
45
45
|
if (request->url() == "/metrics")
|
|
46
46
|
return true;
|
|
@@ -2,9 +2,7 @@
|
|
|
2
2
|
#ifdef USE_ESP32
|
|
3
3
|
#include "psram.h"
|
|
4
4
|
#include <esp_idf_version.h>
|
|
5
|
-
#if defined(USE_ESP_IDF) && ESP_IDF_VERSION_MAJOR >= 5
|
|
6
5
|
#include <esp_psram.h>
|
|
7
|
-
#endif // USE_ESP_IDF
|
|
8
6
|
|
|
9
7
|
#include "esphome/core/log.h"
|
|
10
8
|
|
|
@@ -16,7 +14,6 @@ static const char *const TAG = "psram";
|
|
|
16
14
|
|
|
17
15
|
void PsramComponent::dump_config() {
|
|
18
16
|
ESP_LOGCONFIG(TAG, "PSRAM:");
|
|
19
|
-
#if defined(USE_ESP_IDF) && ESP_IDF_VERSION_MAJOR >= 5
|
|
20
17
|
bool available = esp_psram_is_initialized();
|
|
21
18
|
|
|
22
19
|
ESP_LOGCONFIG(TAG, " Available: %s", YESNO(available));
|
|
@@ -26,23 +23,6 @@ void PsramComponent::dump_config() {
|
|
|
26
23
|
ESP_LOGCONFIG(TAG, " ECC enabled: YES");
|
|
27
24
|
#endif
|
|
28
25
|
}
|
|
29
|
-
#else
|
|
30
|
-
// Technically this can be false if the PSRAM is full, but heap_caps_get_total_size() isn't always available, and it's
|
|
31
|
-
// very unlikely for the PSRAM to be full.
|
|
32
|
-
bool available = heap_caps_get_free_size(MALLOC_CAP_SPIRAM) > 0;
|
|
33
|
-
ESP_LOGCONFIG(TAG, " Available: %s", YESNO(available));
|
|
34
|
-
|
|
35
|
-
if (available) {
|
|
36
|
-
const size_t psram_total_size_bytes = heap_caps_get_total_size(MALLOC_CAP_SPIRAM);
|
|
37
|
-
const float psram_total_size_kb = psram_total_size_bytes / 1024.0f;
|
|
38
|
-
|
|
39
|
-
if (abs(std::round(psram_total_size_kb) - psram_total_size_kb) < 0.05f) {
|
|
40
|
-
ESP_LOGCONFIG(TAG, " Size: %.0f KB", psram_total_size_kb);
|
|
41
|
-
} else {
|
|
42
|
-
ESP_LOGCONFIG(TAG, " Size: %zu bytes", psram_total_size_bytes);
|
|
43
|
-
}
|
|
44
|
-
}
|
|
45
|
-
#endif // USE_ESP_IDF
|
|
46
26
|
}
|
|
47
27
|
|
|
48
28
|
} // namespace psram
|
|
@@ -76,7 +76,6 @@ class PulseCounterSensor : public sensor::Sensor, public PollingComponent {
|
|
|
76
76
|
/// Unit of measurement is "pulses/min".
|
|
77
77
|
void setup() override;
|
|
78
78
|
void update() override;
|
|
79
|
-
float get_setup_priority() const override { return setup_priority::DATA; }
|
|
80
79
|
void dump_config() override;
|
|
81
80
|
|
|
82
81
|
protected:
|
|
@@ -31,6 +31,10 @@ void PulseMeterSensor::setup() {
|
|
|
31
31
|
this->pulse_state_.latched_ = this->last_pin_val_;
|
|
32
32
|
this->pin_->attach_interrupt(PulseMeterSensor::pulse_intr, this, gpio::INTERRUPT_ANY_EDGE);
|
|
33
33
|
}
|
|
34
|
+
|
|
35
|
+
if (this->total_sensor_ != nullptr) {
|
|
36
|
+
this->total_sensor_->publish_state(this->total_pulses_);
|
|
37
|
+
}
|
|
34
38
|
}
|
|
35
39
|
|
|
36
40
|
void PulseMeterSensor::loop() {
|
|
@@ -63,7 +67,7 @@ void PulseMeterSensor::loop() {
|
|
|
63
67
|
// If an edge was peeked, repay the debt
|
|
64
68
|
if (this->peeked_edge_ && this->get_->count_ > 0) {
|
|
65
69
|
this->peeked_edge_ = false;
|
|
66
|
-
this->get_->count_--;
|
|
70
|
+
this->get_->count_--; // NOLINT(clang-diagnostic-deprecated-volatile)
|
|
67
71
|
}
|
|
68
72
|
|
|
69
73
|
// If there is an unprocessed edge, and filter_us_ has passed since, count this edge early
|
|
@@ -71,7 +75,7 @@ void PulseMeterSensor::loop() {
|
|
|
71
75
|
now - this->get_->last_rising_edge_us_ >= this->filter_us_) {
|
|
72
76
|
this->peeked_edge_ = true;
|
|
73
77
|
this->get_->last_detected_edge_us_ = this->get_->last_rising_edge_us_;
|
|
74
|
-
this->get_->count_++;
|
|
78
|
+
this->get_->count_++; // NOLINT(clang-diagnostic-deprecated-volatile)
|
|
75
79
|
}
|
|
76
80
|
|
|
77
81
|
// Check if we detected a pulse this loop
|
|
@@ -146,7 +150,7 @@ void IRAM_ATTR PulseMeterSensor::edge_intr(PulseMeterSensor *sensor) {
|
|
|
146
150
|
state.last_sent_edge_us_ = now;
|
|
147
151
|
set.last_detected_edge_us_ = now;
|
|
148
152
|
set.last_rising_edge_us_ = now;
|
|
149
|
-
set.count_++;
|
|
153
|
+
set.count_++; // NOLINT(clang-diagnostic-deprecated-volatile)
|
|
150
154
|
}
|
|
151
155
|
|
|
152
156
|
// This ISR is bound to rising edges, so the pin is high
|
|
@@ -169,7 +173,7 @@ void IRAM_ATTR PulseMeterSensor::pulse_intr(PulseMeterSensor *sensor) {
|
|
|
169
173
|
} else if (length && !state.latched_ && sensor->last_pin_val_) { // Long enough high edge
|
|
170
174
|
state.latched_ = true;
|
|
171
175
|
set.last_detected_edge_us_ = state.last_intr_;
|
|
172
|
-
set.count_++;
|
|
176
|
+
set.count_++; // NOLINT(clang-diagnostic-deprecated-volatile)
|
|
173
177
|
}
|
|
174
178
|
|
|
175
179
|
// Due to order of operations this includes
|
|
@@ -32,7 +32,6 @@ class PulseWidthSensor : public sensor::Sensor, public PollingComponent {
|
|
|
32
32
|
void set_pin(InternalGPIOPin *pin) { pin_ = pin; }
|
|
33
33
|
void setup() override { this->store_.setup(this->pin_); }
|
|
34
34
|
void dump_config() override;
|
|
35
|
-
float get_setup_priority() const override { return setup_priority::DATA; }
|
|
36
35
|
void update() override;
|
|
37
36
|
|
|
38
37
|
protected:
|
|
@@ -146,11 +146,7 @@ void PVVXDisplay::sync_time_() {
|
|
|
146
146
|
}
|
|
147
147
|
time.recalc_timestamp_utc(true); // calculate timestamp of local time
|
|
148
148
|
uint8_t blk[5] = {};
|
|
149
|
-
#if ESP_IDF_VERSION_MAJOR >= 5
|
|
150
149
|
ESP_LOGD(TAG, "[%s] Sync time with timestamp %" PRIu64 ".", this->parent_->address_str().c_str(), time.timestamp);
|
|
151
|
-
#else
|
|
152
|
-
ESP_LOGD(TAG, "[%s] Sync time with timestamp %lu.", this->parent_->address_str().c_str(), time.timestamp);
|
|
153
|
-
#endif
|
|
154
150
|
blk[0] = 0x23;
|
|
155
151
|
blk[1] = time.timestamp & 0xff;
|
|
156
152
|
blk[2] = (time.timestamp >> 8) & 0xff;
|
|
@@ -39,8 +39,6 @@ class PVVXDisplay : public ble_client::BLEClientNode, public PollingComponent {
|
|
|
39
39
|
|
|
40
40
|
void dump_config() override;
|
|
41
41
|
|
|
42
|
-
float get_setup_priority() const override { return setup_priority::DATA; }
|
|
43
|
-
|
|
44
42
|
void update() override;
|
|
45
43
|
|
|
46
44
|
void gattc_event_handler(esp_gattc_cb_event_t event, esp_gatt_if_t gattc_if,
|
|
@@ -25,7 +25,6 @@ class PVVXMiThermometer : public Component, public esp32_ble_tracker::ESPBTDevic
|
|
|
25
25
|
|
|
26
26
|
bool parse_device(const esp32_ble_tracker::ESPBTDevice &device) override;
|
|
27
27
|
void dump_config() override;
|
|
28
|
-
float get_setup_priority() const override { return setup_priority::DATA; }
|
|
29
28
|
void set_temperature(sensor::Sensor *temperature) { temperature_ = temperature; }
|
|
30
29
|
void set_humidity(sensor::Sensor *humidity) { humidity_ = humidity; }
|
|
31
30
|
void set_battery_level(sensor::Sensor *battery_level) { battery_level_ = battery_level; }
|
|
@@ -21,21 +21,24 @@ ECC = {
|
|
|
21
21
|
"HIGH": qrcodegen_Ecc.qrcodegen_Ecc_HIGH,
|
|
22
22
|
}
|
|
23
23
|
|
|
24
|
-
CONFIG_SCHEMA = cv.
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
24
|
+
CONFIG_SCHEMA = cv.ensure_list(
|
|
25
|
+
cv.Schema(
|
|
26
|
+
{
|
|
27
|
+
cv.Required(CONF_ID): cv.declare_id(QRCode),
|
|
28
|
+
cv.Required(CONF_VALUE): cv.string,
|
|
29
|
+
cv.Optional(CONF_ECC, default="LOW"): cv.enum(ECC, upper=True),
|
|
30
|
+
}
|
|
31
|
+
)
|
|
30
32
|
)
|
|
31
33
|
|
|
32
34
|
|
|
33
35
|
async def to_code(config):
|
|
34
36
|
cg.add_library("wjtje/qr-code-generator-library", "^1.7.0")
|
|
35
37
|
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
38
|
+
for entry in config:
|
|
39
|
+
var = cg.new_Pvariable(entry[CONF_ID])
|
|
40
|
+
cg.add(var.set_value(entry[CONF_VALUE]))
|
|
41
|
+
cg.add(var.set_ecc(ECC[entry[CONF_ECC]]))
|
|
42
|
+
await cg.register_component(var, entry)
|
|
40
43
|
|
|
41
44
|
cg.add_define("USE_QR_CODE")
|