esphome 2025.5.1__py3-none-any.whl → 2025.6.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 +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 +712 -358
- esphome/components/api/api_connection.h +343 -284
- esphome/components/api/api_frame_helper.cpp +349 -344
- esphome/components/api/api_frame_helper.h +121 -94
- esphome/components/api/api_pb2.cpp +2 -0
- esphome/components/api/api_pb2.h +637 -1
- 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 -2
- 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 +4 -3
- 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 +16 -14
- esphome/components/bme280_base/bme280_base.cpp +3 -3
- 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/debug/debug_component.cpp +1 -5
- 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 +88 -20
- 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 +11 -9
- esphome/components/esp32_ble/ble_uuid.h +1 -1
- 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 +6 -2
- esphome/components/esp32_ble_tracker/esp32_ble_tracker.cpp +12 -9
- 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/gpio.cpp +10 -1
- 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 +4 -2
- 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 +54 -64
- esphome/components/i2s_audio/microphone/i2s_audio_microphone.h +4 -0
- 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 +2 -1
- 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 +9 -5
- esphome/components/logger/logger.h +4 -4
- 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 +2 -2
- 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 +2 -3
- 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 +58 -61
- esphome/components/nextion/nextion_upload_idf.cpp +69 -72
- esphome/components/nextion/sensor/nextion_sensor.cpp +4 -4
- esphome/components/nextion/switch/nextion_switch.cpp +2 -2
- esphome/components/nextion/text_sensor/nextion_textsensor.cpp +2 -2
- 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/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/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/gpio.cpp +26 -9
- 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/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.h +9 -5
- 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 +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 +38 -12
- esphome/components/template/alarm_control_panel/template_alarm_control_panel.h +3 -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_sensor/__init__.py +1 -0
- 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/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/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/utils.cpp +1 -1
- esphome/components/web_server_idf/web_server_idf.cpp +1 -1
- esphome/components/weikai/__init__.py +2 -0
- esphome/components/weikai/weikai.cpp +23 -21
- 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 +188 -5
- esphome/core/application.h +110 -0
- esphome/core/component.h +13 -0
- esphome/core/config.py +12 -0
- esphome/core/defines.h +10 -2
- esphome/core/hal.h +5 -0
- esphome/core/helpers.cpp +1 -1
- esphome/core/helpers.h +4 -4
- 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/writer.py +5 -3
- esphome/yaml_util.py +6 -1
- esphome/zeroconf.py +1 -1
- {esphome-2025.5.1.dist-info → esphome-2025.6.0b1.dist-info}/METADATA +12 -11
- {esphome-2025.5.1.dist-info → esphome-2025.6.0b1.dist-info}/RECORD +720 -667
- {esphome-2025.5.1.dist-info → esphome-2025.6.0b1.dist-info}/WHEEL +1 -1
- {esphome-2025.5.1.dist-info → esphome-2025.6.0b1.dist-info}/entry_points.txt +0 -0
- {esphome-2025.5.1.dist-info → esphome-2025.6.0b1.dist-info}/licenses/LICENSE +0 -0
- {esphome-2025.5.1.dist-info → esphome-2025.6.0b1.dist-info}/top_level.txt +0 -0
@@ -1,5 +1,6 @@
|
|
1
1
|
#include "seeed_mr24hpc1.h"
|
2
2
|
|
3
|
+
#include "esphome/core/helpers.h"
|
3
4
|
#include "esphome/core/log.h"
|
4
5
|
|
5
6
|
#include <utility>
|
@@ -61,7 +62,7 @@ void MR24HPC1Component::dump_config() {
|
|
61
62
|
|
62
63
|
// Initialisation functions
|
63
64
|
void MR24HPC1Component::setup() {
|
64
|
-
ESP_LOGCONFIG(TAG, "
|
65
|
+
ESP_LOGCONFIG(TAG, "Running setup");
|
65
66
|
this->check_uart_settings(115200);
|
66
67
|
|
67
68
|
if (this->custom_mode_number_ != nullptr) {
|
@@ -533,7 +534,7 @@ void MR24HPC1Component::r24_frame_parse_work_status_(uint8_t *data) {
|
|
533
534
|
this->custom_mode_number_->publish_state(0);
|
534
535
|
}
|
535
536
|
if (this->custom_mode_end_text_sensor_ != nullptr) {
|
536
|
-
this->custom_mode_end_text_sensor_->publish_state("Setup in progress
|
537
|
+
this->custom_mode_end_text_sensor_->publish_state("Setup in progress");
|
537
538
|
}
|
538
539
|
} else if (data[FRAME_COMMAND_WORD_INDEX] == 0x81) {
|
539
540
|
ESP_LOGD(TAG, "Reply: get radar init status 0x%02X", data[FRAME_DATA_INDEX]);
|
@@ -1,4 +1,5 @@
|
|
1
1
|
#include "seeed_mr60fda2.h"
|
2
|
+
#include "esphome/core/helpers.h"
|
2
3
|
#include "esphome/core/log.h"
|
3
4
|
|
4
5
|
#include <cinttypes>
|
@@ -30,7 +31,7 @@ void MR60FDA2Component::dump_config() {
|
|
30
31
|
|
31
32
|
// Initialisation functions
|
32
33
|
void MR60FDA2Component::setup() {
|
33
|
-
ESP_LOGCONFIG(TAG, "
|
34
|
+
ESP_LOGCONFIG(TAG, "Running setup");
|
34
35
|
this->check_uart_settings(115200);
|
35
36
|
|
36
37
|
this->current_frame_locate_ = LOCATE_FRAME_HEADER;
|
@@ -335,7 +336,7 @@ void MR60FDA2Component::set_install_height(uint8_t index) {
|
|
335
336
|
|
336
337
|
void MR60FDA2Component::set_height_threshold(uint8_t index) {
|
337
338
|
uint8_t send_data[13] = {0x01, 0x00, 0x00, 0x00, 0x04, 0x0E, 0x08, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00};
|
338
|
-
float_to_bytes(
|
339
|
+
float_to_bytes(HEIGHT_THRESHOLD[index], &send_data[8]);
|
339
340
|
send_data[12] = calculate_checksum(send_data + 8, 4);
|
340
341
|
this->write_array(send_data, 13);
|
341
342
|
ESP_LOGV(TAG, "SEND HEIGHT THRESHOLD: %s", format_hex_pretty(send_data, 13).c_str());
|
@@ -1,5 +1,6 @@
|
|
1
1
|
#include "selec_meter.h"
|
2
2
|
#include "selec_meter_registers.h"
|
3
|
+
#include "esphome/core/helpers.h"
|
3
4
|
#include "esphome/core/log.h"
|
4
5
|
|
5
6
|
namespace esphome {
|
@@ -83,8 +84,10 @@ void SelecMeter::on_modbus_data(const std::vector<uint8_t> &data) {
|
|
83
84
|
|
84
85
|
void SelecMeter::update() { this->send(MODBUS_CMD_READ_IN_REGISTERS, 0, MODBUS_REGISTER_COUNT); }
|
85
86
|
void SelecMeter::dump_config() {
|
86
|
-
ESP_LOGCONFIG(TAG,
|
87
|
-
|
87
|
+
ESP_LOGCONFIG(TAG,
|
88
|
+
"SELEC Meter:\n"
|
89
|
+
" Address: 0x%02X",
|
90
|
+
this->address_);
|
88
91
|
LOG_SENSOR(" ", "Total Active Energy", this->total_active_energy_sensor_);
|
89
92
|
LOG_SENSOR(" ", "Import Active Energy", this->import_active_energy_sensor_);
|
90
93
|
LOG_SENSOR(" ", "Export Active Energy", this->export_active_energy_sensor_);
|
@@ -111,6 +111,7 @@ async def register_select(var, config, *, options: list[str]):
|
|
111
111
|
if not CORE.has_id(config[CONF_ID]):
|
112
112
|
var = cg.Pvariable(config[CONF_ID], var)
|
113
113
|
cg.add(cg.App.register_select(var))
|
114
|
+
CORE.register_platform_component("select", var)
|
114
115
|
await setup_select_core_(var, config, options=options)
|
115
116
|
|
116
117
|
|
@@ -8,7 +8,7 @@ namespace sen0321_sensor {
|
|
8
8
|
static const char *const TAG = "sen0321_sensor.sensor";
|
9
9
|
|
10
10
|
void Sen0321Sensor::setup() {
|
11
|
-
ESP_LOGCONFIG(TAG, "
|
11
|
+
ESP_LOGCONFIG(TAG, "Running setup");
|
12
12
|
if (!this->write_byte(SENSOR_MODE_REGISTER, SENSOR_MODE_AUTO)) {
|
13
13
|
ESP_LOGW(TAG, "Error setting measurement mode.");
|
14
14
|
this->mark_failed();
|
@@ -21,7 +21,7 @@ void Sen0321Sensor::dump_config() {
|
|
21
21
|
ESP_LOGCONFIG(TAG, "DF Robot Ozone Sensor sen0321:");
|
22
22
|
LOG_I2C_DEVICE(this);
|
23
23
|
if (this->is_failed()) {
|
24
|
-
ESP_LOGE(TAG,
|
24
|
+
ESP_LOGE(TAG, ESP_LOG_MSG_COMM_FAIL);
|
25
25
|
}
|
26
26
|
LOG_UPDATE_INTERVAL(this);
|
27
27
|
}
|
@@ -12,7 +12,7 @@ void Sen21231Sensor::dump_config() {
|
|
12
12
|
ESP_LOGCONFIG(TAG, "SEN21231:");
|
13
13
|
LOG_I2C_DEVICE(this);
|
14
14
|
if (this->is_failed()) {
|
15
|
-
ESP_LOGE(TAG,
|
15
|
+
ESP_LOGE(TAG, ESP_LOG_MSG_COMM_FAIL);
|
16
16
|
}
|
17
17
|
ESP_LOGI(TAG, "SEN21231: %s", this->is_failed() ? "FAILED" : "OK");
|
18
18
|
LOG_UPDATE_INTERVAL(this);
|
@@ -30,7 +30,7 @@ static const int8_t SEN5X_MIN_INDEX_VALUE = 1 * SEN5X_INDEX_SCALE_FACTOR; //
|
|
30
30
|
static const int16_t SEN5X_MAX_INDEX_VALUE = 500 * SEN5X_INDEX_SCALE_FACTOR; // must be adjusted by the scale factor
|
31
31
|
|
32
32
|
void SEN5XComponent::setup() {
|
33
|
-
ESP_LOGCONFIG(TAG, "
|
33
|
+
ESP_LOGCONFIG(TAG, "Running setup");
|
34
34
|
|
35
35
|
// the sensor needs 1000 ms to enter the idle state
|
36
36
|
this->set_timeout(1000, [this]() {
|
@@ -245,10 +245,10 @@ void SEN5XComponent::dump_config() {
|
|
245
245
|
if (this->is_failed()) {
|
246
246
|
switch (this->error_code_) {
|
247
247
|
case COMMUNICATION_FAILED:
|
248
|
-
ESP_LOGW(TAG,
|
248
|
+
ESP_LOGW(TAG, ESP_LOG_MSG_COMM_FAIL);
|
249
249
|
break;
|
250
250
|
case MEASUREMENT_INIT_FAILED:
|
251
|
-
ESP_LOGW(TAG, "Measurement Initialization failed
|
251
|
+
ESP_LOGW(TAG, "Measurement Initialization failed");
|
252
252
|
break;
|
253
253
|
case SERIAL_NUMBER_IDENTIFICATION_FAILED:
|
254
254
|
ESP_LOGW(TAG, "Unable to read sensor serial id");
|
@@ -260,13 +260,16 @@ void SEN5XComponent::dump_config() {
|
|
260
260
|
ESP_LOGW(TAG, "Unable to read sensor firmware version");
|
261
261
|
break;
|
262
262
|
default:
|
263
|
-
ESP_LOGW(TAG, "Unknown setup error
|
263
|
+
ESP_LOGW(TAG, "Unknown setup error");
|
264
264
|
break;
|
265
265
|
}
|
266
266
|
}
|
267
|
-
ESP_LOGCONFIG(TAG,
|
268
|
-
|
269
|
-
|
267
|
+
ESP_LOGCONFIG(TAG,
|
268
|
+
" Productname: %s\n"
|
269
|
+
" Firmware version: %d\n"
|
270
|
+
" Serial number %02d.%02d.%02d",
|
271
|
+
this->product_name_.c_str(), this->firmware_version_, serial_number_[0], serial_number_[1],
|
272
|
+
serial_number_[2]);
|
270
273
|
if (this->auto_cleaning_interval_.has_value()) {
|
271
274
|
ESP_LOGCONFIG(TAG, " Auto cleaning interval %" PRId32 " seconds", auto_cleaning_interval_.value());
|
272
275
|
}
|
@@ -43,8 +43,10 @@ from esphome.const import (
|
|
43
43
|
CONF_WINDOW_SIZE,
|
44
44
|
DEVICE_CLASS_APPARENT_POWER,
|
45
45
|
DEVICE_CLASS_AQI,
|
46
|
+
DEVICE_CLASS_AREA,
|
46
47
|
DEVICE_CLASS_ATMOSPHERIC_PRESSURE,
|
47
48
|
DEVICE_CLASS_BATTERY,
|
49
|
+
DEVICE_CLASS_BLOOD_GLUCOSE_CONCENTRATION,
|
48
50
|
DEVICE_CLASS_CARBON_DIOXIDE,
|
49
51
|
DEVICE_CLASS_CARBON_MONOXIDE,
|
50
52
|
DEVICE_CLASS_CONDUCTIVITY,
|
@@ -56,6 +58,7 @@ from esphome.const import (
|
|
56
58
|
DEVICE_CLASS_DURATION,
|
57
59
|
DEVICE_CLASS_EMPTY,
|
58
60
|
DEVICE_CLASS_ENERGY,
|
61
|
+
DEVICE_CLASS_ENERGY_DISTANCE,
|
59
62
|
DEVICE_CLASS_ENERGY_STORAGE,
|
60
63
|
DEVICE_CLASS_FREQUENCY,
|
61
64
|
DEVICE_CLASS_GAS,
|
@@ -77,6 +80,7 @@ from esphome.const import (
|
|
77
80
|
DEVICE_CLASS_PRECIPITATION,
|
78
81
|
DEVICE_CLASS_PRECIPITATION_INTENSITY,
|
79
82
|
DEVICE_CLASS_PRESSURE,
|
83
|
+
DEVICE_CLASS_REACTIVE_ENERGY,
|
80
84
|
DEVICE_CLASS_REACTIVE_POWER,
|
81
85
|
DEVICE_CLASS_SIGNAL_STRENGTH,
|
82
86
|
DEVICE_CLASS_SOUND_PRESSURE,
|
@@ -92,6 +96,7 @@ from esphome.const import (
|
|
92
96
|
DEVICE_CLASS_VOLUME_STORAGE,
|
93
97
|
DEVICE_CLASS_WATER,
|
94
98
|
DEVICE_CLASS_WEIGHT,
|
99
|
+
DEVICE_CLASS_WIND_DIRECTION,
|
95
100
|
DEVICE_CLASS_WIND_SPEED,
|
96
101
|
ENTITY_CATEGORY_CONFIG,
|
97
102
|
)
|
@@ -104,8 +109,10 @@ CODEOWNERS = ["@esphome/core"]
|
|
104
109
|
DEVICE_CLASSES = [
|
105
110
|
DEVICE_CLASS_APPARENT_POWER,
|
106
111
|
DEVICE_CLASS_AQI,
|
112
|
+
DEVICE_CLASS_AREA,
|
107
113
|
DEVICE_CLASS_ATMOSPHERIC_PRESSURE,
|
108
114
|
DEVICE_CLASS_BATTERY,
|
115
|
+
DEVICE_CLASS_BLOOD_GLUCOSE_CONCENTRATION,
|
109
116
|
DEVICE_CLASS_CARBON_DIOXIDE,
|
110
117
|
DEVICE_CLASS_CARBON_MONOXIDE,
|
111
118
|
DEVICE_CLASS_CONDUCTIVITY,
|
@@ -117,6 +124,7 @@ DEVICE_CLASSES = [
|
|
117
124
|
DEVICE_CLASS_DURATION,
|
118
125
|
DEVICE_CLASS_EMPTY,
|
119
126
|
DEVICE_CLASS_ENERGY,
|
127
|
+
DEVICE_CLASS_ENERGY_DISTANCE,
|
120
128
|
DEVICE_CLASS_ENERGY_STORAGE,
|
121
129
|
DEVICE_CLASS_FREQUENCY,
|
122
130
|
DEVICE_CLASS_GAS,
|
@@ -138,6 +146,7 @@ DEVICE_CLASSES = [
|
|
138
146
|
DEVICE_CLASS_PRECIPITATION,
|
139
147
|
DEVICE_CLASS_PRECIPITATION_INTENSITY,
|
140
148
|
DEVICE_CLASS_PRESSURE,
|
149
|
+
DEVICE_CLASS_REACTIVE_ENERGY,
|
141
150
|
DEVICE_CLASS_REACTIVE_POWER,
|
142
151
|
DEVICE_CLASS_SIGNAL_STRENGTH,
|
143
152
|
DEVICE_CLASS_SOUND_PRESSURE,
|
@@ -153,11 +162,11 @@ DEVICE_CLASSES = [
|
|
153
162
|
DEVICE_CLASS_VOLUME_STORAGE,
|
154
163
|
DEVICE_CLASS_WATER,
|
155
164
|
DEVICE_CLASS_WEIGHT,
|
165
|
+
DEVICE_CLASS_WIND_DIRECTION,
|
156
166
|
DEVICE_CLASS_WIND_SPEED,
|
157
167
|
]
|
158
168
|
|
159
169
|
_LOGGER = logging.getLogger(__name__)
|
160
|
-
|
161
170
|
sensor_ns = cg.esphome_ns.namespace("sensor")
|
162
171
|
StateClasses = sensor_ns.enum("StateClass")
|
163
172
|
STATE_CLASSES = {
|
@@ -830,6 +839,7 @@ async def register_sensor(var, config):
|
|
830
839
|
if not CORE.has_id(config[CONF_ID]):
|
831
840
|
var = cg.Pvariable(config[CONF_ID], var)
|
832
841
|
cg.add(cg.App.register_sensor(var))
|
842
|
+
CORE.register_platform_component("sensor", var)
|
833
843
|
await setup_sensor_core_(var, config)
|
834
844
|
|
835
845
|
|
@@ -1,9 +1,9 @@
|
|
1
1
|
#pragma once
|
2
2
|
|
3
|
-
#include "esphome/core/log.h"
|
4
3
|
#include "esphome/core/component.h"
|
5
4
|
#include "esphome/core/entity_base.h"
|
6
5
|
#include "esphome/core/helpers.h"
|
6
|
+
#include "esphome/core/log.h"
|
7
7
|
#include "esphome/components/sensor/filter.h"
|
8
8
|
|
9
9
|
#include <vector>
|
@@ -13,13 +13,17 @@ namespace sensor {
|
|
13
13
|
|
14
14
|
#define LOG_SENSOR(prefix, type, obj) \
|
15
15
|
if ((obj) != nullptr) { \
|
16
|
-
ESP_LOGCONFIG(TAG,
|
16
|
+
ESP_LOGCONFIG(TAG, \
|
17
|
+
"%s%s '%s'\n" \
|
18
|
+
"%s State Class: '%s'\n" \
|
19
|
+
"%s Unit of Measurement: '%s'\n" \
|
20
|
+
"%s Accuracy Decimals: %d", \
|
21
|
+
prefix, LOG_STR_LITERAL(type), (obj)->get_name().c_str(), prefix, \
|
22
|
+
state_class_to_string((obj)->get_state_class()).c_str(), prefix, \
|
23
|
+
(obj)->get_unit_of_measurement().c_str(), prefix, (obj)->get_accuracy_decimals()); \
|
17
24
|
if (!(obj)->get_device_class().empty()) { \
|
18
25
|
ESP_LOGCONFIG(TAG, "%s Device Class: '%s'", prefix, (obj)->get_device_class().c_str()); \
|
19
26
|
} \
|
20
|
-
ESP_LOGCONFIG(TAG, "%s State Class: '%s'", prefix, state_class_to_string((obj)->get_state_class()).c_str()); \
|
21
|
-
ESP_LOGCONFIG(TAG, "%s Unit of Measurement: '%s'", prefix, (obj)->get_unit_of_measurement().c_str()); \
|
22
|
-
ESP_LOGCONFIG(TAG, "%s Accuracy Decimals: %d", prefix, (obj)->get_accuracy_decimals()); \
|
23
27
|
if (!(obj)->get_icon().empty()) { \
|
24
28
|
ESP_LOGCONFIG(TAG, "%s Icon: '%s'", prefix, (obj)->get_icon().c_str()); \
|
25
29
|
} \
|
@@ -11,12 +11,15 @@ static const char *const TAG = "servo";
|
|
11
11
|
uint32_t global_servo_id = 1911044085ULL; // NOLINT(cppcoreguidelines-avoid-non-const-global-variables)
|
12
12
|
|
13
13
|
void Servo::dump_config() {
|
14
|
-
ESP_LOGCONFIG(TAG,
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
14
|
+
ESP_LOGCONFIG(TAG,
|
15
|
+
"Servo:\n"
|
16
|
+
" Idle Level: %.1f%%\n"
|
17
|
+
" Min Level: %.1f%%\n"
|
18
|
+
" Max Level: %.1f%%\n"
|
19
|
+
" Auto-detach time: %" PRIu32 " ms\n"
|
20
|
+
" Run duration: %" PRIu32 " ms",
|
21
|
+
this->idle_level_ * 100.0f, this->min_level_ * 100.0f, this->max_level_ * 100.0f,
|
22
|
+
this->auto_detach_time_, this->transition_length_);
|
20
23
|
}
|
21
24
|
|
22
25
|
void Servo::setup() {
|
@@ -41,7 +44,7 @@ void Servo::loop() {
|
|
41
44
|
if (millis() - this->start_millis_ > this->auto_detach_time_) {
|
42
45
|
this->detach();
|
43
46
|
this->start_millis_ = 0;
|
44
|
-
ESP_LOGD(TAG, "
|
47
|
+
ESP_LOGD(TAG, "Detached on auto_detach_time");
|
45
48
|
}
|
46
49
|
}
|
47
50
|
if (this->target_value_ != this->current_value_ && this->state_ == STATE_ATTACHED) {
|
@@ -63,7 +66,7 @@ void Servo::loop() {
|
|
63
66
|
if (this->target_value_ == this->current_value_ && this->state_ == STATE_ATTACHED) {
|
64
67
|
this->state_ = STATE_TARGET_REACHED;
|
65
68
|
this->start_millis_ = millis(); // set current stamp for potential auto_detach_time_ check
|
66
|
-
ESP_LOGD(TAG, "
|
69
|
+
ESP_LOGD(TAG, "Reached target");
|
67
70
|
}
|
68
71
|
}
|
69
72
|
|
@@ -78,7 +81,7 @@ void Servo::write(float value) {
|
|
78
81
|
this->source_value_ = this->current_value_;
|
79
82
|
this->state_ = STATE_ATTACHED;
|
80
83
|
this->start_millis_ = millis();
|
81
|
-
ESP_LOGD(TAG, "
|
84
|
+
ESP_LOGD(TAG, "New target: %f", value);
|
82
85
|
}
|
83
86
|
|
84
87
|
void Servo::internal_write(float value) {
|
esphome/components/servo/servo.h
CHANGED
@@ -11,7 +11,7 @@ static const uint16_t SFA30_CMD_START_CONTINUOUS_MEASUREMENTS = 0x0006;
|
|
11
11
|
static const uint16_t SFA30_CMD_READ_MEASUREMENT = 0x0327;
|
12
12
|
|
13
13
|
void SFA30Component::setup() {
|
14
|
-
ESP_LOGCONFIG(TAG, "
|
14
|
+
ESP_LOGCONFIG(TAG, "Running setup");
|
15
15
|
|
16
16
|
// Serial Number identification
|
17
17
|
uint16_t raw_device_marking[16];
|
@@ -33,7 +33,7 @@ const uint32_t SHORTEST_BASELINE_STORE_INTERVAL = 3600;
|
|
33
33
|
const uint32_t MAXIMUM_STORAGE_DIFF = 50;
|
34
34
|
|
35
35
|
void SGP30Component::setup() {
|
36
|
-
ESP_LOGCONFIG(TAG, "
|
36
|
+
ESP_LOGCONFIG(TAG, "Running setup");
|
37
37
|
|
38
38
|
// Serial Number identification
|
39
39
|
uint16_t raw_serial_number[3];
|
@@ -232,27 +232,29 @@ void SGP30Component::dump_config() {
|
|
232
232
|
if (this->is_failed()) {
|
233
233
|
switch (this->error_code_) {
|
234
234
|
case COMMUNICATION_FAILED:
|
235
|
-
ESP_LOGW(TAG,
|
235
|
+
ESP_LOGW(TAG, ESP_LOG_MSG_COMM_FAIL);
|
236
236
|
break;
|
237
237
|
case MEASUREMENT_INIT_FAILED:
|
238
|
-
ESP_LOGW(TAG, "Measurement Initialization failed
|
238
|
+
ESP_LOGW(TAG, "Measurement Initialization failed");
|
239
239
|
break;
|
240
240
|
case INVALID_ID:
|
241
241
|
ESP_LOGW(TAG, "Sensor reported an invalid ID. Is this an SGP30?");
|
242
242
|
break;
|
243
243
|
case UNSUPPORTED_ID:
|
244
|
-
ESP_LOGW(TAG, "Sensor reported an unsupported ID (SGPC3)
|
244
|
+
ESP_LOGW(TAG, "Sensor reported an unsupported ID (SGPC3)");
|
245
245
|
break;
|
246
246
|
default:
|
247
|
-
ESP_LOGW(TAG, "Unknown setup error
|
247
|
+
ESP_LOGW(TAG, "Unknown setup error");
|
248
248
|
break;
|
249
249
|
}
|
250
250
|
} else {
|
251
251
|
ESP_LOGCONFIG(TAG, " Serial number: %" PRIu64, this->serial_number_);
|
252
252
|
if (this->eco2_baseline_ != 0x0000 && this->tvoc_baseline_ != 0x0000) {
|
253
|
-
ESP_LOGCONFIG(TAG,
|
254
|
-
|
255
|
-
|
253
|
+
ESP_LOGCONFIG(TAG,
|
254
|
+
" Baseline:\n"
|
255
|
+
" eCO2 Baseline: 0x%04X\n"
|
256
|
+
" TVOC Baseline: 0x%04X",
|
257
|
+
this->eco2_baseline_, this->tvoc_baseline_);
|
256
258
|
} else {
|
257
259
|
ESP_LOGCONFIG(TAG, " Baseline: No baseline configured");
|
258
260
|
}
|
@@ -9,34 +9,34 @@ namespace sgp4x {
|
|
9
9
|
static const char *const TAG = "sgp4x";
|
10
10
|
|
11
11
|
void SGP4xComponent::setup() {
|
12
|
-
ESP_LOGCONFIG(TAG, "
|
12
|
+
ESP_LOGCONFIG(TAG, "Running setup");
|
13
13
|
|
14
14
|
// Serial Number identification
|
15
15
|
uint16_t raw_serial_number[3];
|
16
16
|
if (!this->get_register(SGP4X_CMD_GET_SERIAL_ID, raw_serial_number, 3, 1)) {
|
17
|
-
ESP_LOGE(TAG, "
|
17
|
+
ESP_LOGE(TAG, "Get serial number failed");
|
18
18
|
this->error_code_ = SERIAL_NUMBER_IDENTIFICATION_FAILED;
|
19
19
|
this->mark_failed();
|
20
20
|
return;
|
21
21
|
}
|
22
22
|
this->serial_number_ = (uint64_t(raw_serial_number[0]) << 24) | (uint64_t(raw_serial_number[1]) << 16) |
|
23
23
|
(uint64_t(raw_serial_number[2]));
|
24
|
-
ESP_LOGD(TAG, "Serial
|
24
|
+
ESP_LOGD(TAG, "Serial number: %" PRIu64, this->serial_number_);
|
25
25
|
|
26
26
|
// Featureset identification for future use
|
27
|
-
uint16_t
|
28
|
-
if (!this->get_register(SGP4X_CMD_GET_FEATURESET,
|
29
|
-
ESP_LOGD(TAG, "
|
27
|
+
uint16_t featureset;
|
28
|
+
if (!this->get_register(SGP4X_CMD_GET_FEATURESET, featureset, 1)) {
|
29
|
+
ESP_LOGD(TAG, "Get feature set failed");
|
30
30
|
this->mark_failed();
|
31
31
|
return;
|
32
32
|
}
|
33
|
-
|
34
|
-
if (
|
35
|
-
sgp_type_ = SGP40;
|
36
|
-
self_test_time_ = SPG40_SELFTEST_TIME;
|
37
|
-
measure_time_ = SGP40_MEASURE_TIME;
|
33
|
+
featureset &= 0x1FF;
|
34
|
+
if (featureset == SGP40_FEATURESET) {
|
35
|
+
this->sgp_type_ = SGP40;
|
36
|
+
this->self_test_time_ = SPG40_SELFTEST_TIME;
|
37
|
+
this->measure_time_ = SGP40_MEASURE_TIME;
|
38
38
|
if (this->nox_sensor_) {
|
39
|
-
ESP_LOGE(TAG, "
|
39
|
+
ESP_LOGE(TAG, "SGP41 required for NOx");
|
40
40
|
// disable the sensor
|
41
41
|
this->nox_sensor_->set_disabled_by_default(true);
|
42
42
|
// make sure it's not visible in HA
|
@@ -45,20 +45,17 @@ void SGP4xComponent::setup() {
|
|
45
45
|
// remove pointer to sensor
|
46
46
|
this->nox_sensor_ = nullptr;
|
47
47
|
}
|
48
|
+
} else if (featureset == SGP41_FEATURESET) {
|
49
|
+
this->sgp_type_ = SGP41;
|
50
|
+
this->self_test_time_ = SPG41_SELFTEST_TIME;
|
51
|
+
this->measure_time_ = SGP41_MEASURE_TIME;
|
48
52
|
} else {
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
measure_time_ = SGP41_MEASURE_TIME;
|
53
|
-
} else {
|
54
|
-
ESP_LOGD(TAG, "Product feature set failed 0x%0X , expecting 0x%0X", uint16_t(this->featureset_ & 0x1FF),
|
55
|
-
SGP40_FEATURESET);
|
56
|
-
this->mark_failed();
|
57
|
-
return;
|
58
|
-
}
|
53
|
+
ESP_LOGD(TAG, "Unknown feature set 0x%0X", featureset);
|
54
|
+
this->mark_failed();
|
55
|
+
return;
|
59
56
|
}
|
60
57
|
|
61
|
-
ESP_LOGD(TAG, "
|
58
|
+
ESP_LOGD(TAG, "Version 0x%0X", featureset);
|
62
59
|
|
63
60
|
if (this->store_baseline_) {
|
64
61
|
// Hash with compilation time and serial number
|
@@ -70,7 +67,7 @@ void SGP4xComponent::setup() {
|
|
70
67
|
if (this->pref_.load(&this->voc_baselines_storage_)) {
|
71
68
|
this->voc_state0_ = this->voc_baselines_storage_.state0;
|
72
69
|
this->voc_state1_ = this->voc_baselines_storage_.state1;
|
73
|
-
|
70
|
+
ESP_LOGV(TAG, "Loaded VOC baseline state0: 0x%04" PRIX32 ", state1: 0x%04" PRIX32,
|
74
71
|
this->voc_baselines_storage_.state0, voc_baselines_storage_.state1);
|
75
72
|
}
|
76
73
|
|
@@ -78,7 +75,7 @@ void SGP4xComponent::setup() {
|
|
78
75
|
this->seconds_since_last_store_ = 0;
|
79
76
|
|
80
77
|
if (this->voc_baselines_storage_.state0 > 0 && this->voc_baselines_storage_.state1 > 0) {
|
81
|
-
|
78
|
+
ESP_LOGV(TAG, "Setting VOC baseline from save state0: 0x%04" PRIX32 ", state1: 0x%04" PRIX32,
|
82
79
|
this->voc_baselines_storage_.state0, voc_baselines_storage_.state1);
|
83
80
|
voc_algorithm_.set_states(this->voc_baselines_storage_.state0, this->voc_baselines_storage_.state1);
|
84
81
|
}
|
@@ -110,39 +107,29 @@ void SGP4xComponent::setup() {
|
|
110
107
|
limit the amount of communication done over wifi for power consumption or to keep the
|
111
108
|
number of records reported from being overwhelming.
|
112
109
|
*/
|
113
|
-
|
110
|
+
ESP_LOGV(TAG, "Component requires sampling of 1Hz, setting up background sampler");
|
114
111
|
this->set_interval(1000, [this]() { this->take_sample(); });
|
115
112
|
}
|
116
113
|
|
117
114
|
void SGP4xComponent::self_test_() {
|
118
|
-
ESP_LOGD(TAG, "
|
115
|
+
ESP_LOGD(TAG, "Starting self-test");
|
119
116
|
if (!this->write_command(SGP4X_CMD_SELF_TEST)) {
|
120
117
|
this->error_code_ = COMMUNICATION_FAILED;
|
121
|
-
ESP_LOGD(TAG,
|
118
|
+
ESP_LOGD(TAG, ESP_LOG_MSG_COMM_FAIL);
|
122
119
|
this->mark_failed();
|
123
120
|
}
|
124
121
|
|
125
|
-
this->set_timeout(self_test_time_, [this]() {
|
126
|
-
uint16_t reply;
|
127
|
-
if (!this->read_data(reply)) {
|
122
|
+
this->set_timeout(this->self_test_time_, [this]() {
|
123
|
+
uint16_t reply = 0;
|
124
|
+
if (!this->read_data(reply) || (reply != 0xD400)) {
|
128
125
|
this->error_code_ = SELF_TEST_FAILED;
|
129
|
-
|
126
|
+
ESP_LOGW(TAG, "Self-test failed (0x%X)", reply);
|
130
127
|
this->mark_failed();
|
131
128
|
return;
|
132
129
|
}
|
133
130
|
|
134
|
-
|
135
|
-
|
136
|
-
ESP_LOGD(TAG, "Self-test completed");
|
137
|
-
return;
|
138
|
-
} else {
|
139
|
-
this->error_code_ = SELF_TEST_FAILED;
|
140
|
-
ESP_LOGD(TAG, "Self-test failed 0x%X", reply);
|
141
|
-
return;
|
142
|
-
}
|
143
|
-
|
144
|
-
ESP_LOGD(TAG, "Self-test failed 0x%X", reply);
|
145
|
-
this->mark_failed();
|
131
|
+
this->self_test_complete_ = true;
|
132
|
+
ESP_LOGD(TAG, "Self-test complete");
|
146
133
|
});
|
147
134
|
}
|
148
135
|
|
@@ -150,7 +137,7 @@ void SGP4xComponent::update_gas_indices_() {
|
|
150
137
|
this->voc_index_ = this->voc_algorithm_.process(this->voc_sraw_);
|
151
138
|
if (this->nox_sensor_ != nullptr)
|
152
139
|
this->nox_index_ = this->nox_algorithm_.process(this->nox_sraw_);
|
153
|
-
ESP_LOGV(TAG, "VOC
|
140
|
+
ESP_LOGV(TAG, "VOC: %" PRId32 ", NOx: %" PRId32, this->voc_index_, this->nox_index_);
|
154
141
|
// Store baselines after defined interval or if the difference between current and stored baseline becomes too
|
155
142
|
// much
|
156
143
|
if (this->store_baseline_ && this->seconds_since_last_store_ > SHORTEST_BASELINE_STORE_INTERVAL) {
|
@@ -162,18 +149,18 @@ void SGP4xComponent::update_gas_indices_() {
|
|
162
149
|
this->voc_baselines_storage_.state1 = this->voc_state1_;
|
163
150
|
|
164
151
|
if (this->pref_.save(&this->voc_baselines_storage_)) {
|
165
|
-
|
152
|
+
ESP_LOGV(TAG, "Stored VOC baseline state0: 0x%04" PRIX32 ", state1: 0x%04" PRIX32,
|
166
153
|
this->voc_baselines_storage_.state0, this->voc_baselines_storage_.state1);
|
167
154
|
} else {
|
168
|
-
ESP_LOGW(TAG, "
|
155
|
+
ESP_LOGW(TAG, "Storing VOC baselines failed");
|
169
156
|
}
|
170
157
|
}
|
171
158
|
}
|
172
159
|
|
173
160
|
if (this->samples_read_ < this->samples_to_stabilize_) {
|
174
161
|
this->samples_read_++;
|
175
|
-
ESP_LOGD(TAG, "
|
176
|
-
this->
|
162
|
+
ESP_LOGD(TAG, "Stabilizing (%d/%d); VOC index: %" PRIu32, this->samples_read_, this->samples_to_stabilize_,
|
163
|
+
this->voc_index_);
|
177
164
|
}
|
178
165
|
}
|
179
166
|
|
@@ -182,7 +169,7 @@ void SGP4xComponent::measure_raw_() {
|
|
182
169
|
static uint32_t nox_conditioning_start = millis();
|
183
170
|
|
184
171
|
if (!this->self_test_complete_) {
|
185
|
-
|
172
|
+
ESP_LOGW(TAG, "Self-test incomplete");
|
186
173
|
return;
|
187
174
|
}
|
188
175
|
if (this->humidity_sensor_ != nullptr) {
|
@@ -270,37 +257,38 @@ void SGP4xComponent::update() {
|
|
270
257
|
void SGP4xComponent::dump_config() {
|
271
258
|
ESP_LOGCONFIG(TAG, "SGP4x:");
|
272
259
|
LOG_I2C_DEVICE(this);
|
273
|
-
ESP_LOGCONFIG(TAG, "
|
260
|
+
ESP_LOGCONFIG(TAG, " Store baseline: %s", YESNO(this->store_baseline_));
|
274
261
|
|
275
262
|
if (this->is_failed()) {
|
276
263
|
switch (this->error_code_) {
|
277
264
|
case COMMUNICATION_FAILED:
|
278
|
-
ESP_LOGW(TAG,
|
265
|
+
ESP_LOGW(TAG, ESP_LOG_MSG_COMM_FAIL);
|
279
266
|
break;
|
280
267
|
case SERIAL_NUMBER_IDENTIFICATION_FAILED:
|
281
|
-
ESP_LOGW(TAG, "Get
|
268
|
+
ESP_LOGW(TAG, "Get serial number failed");
|
282
269
|
break;
|
283
270
|
case SELF_TEST_FAILED:
|
284
|
-
ESP_LOGW(TAG, "Self
|
271
|
+
ESP_LOGW(TAG, "Self-test failed");
|
285
272
|
break;
|
286
|
-
|
287
273
|
default:
|
288
|
-
ESP_LOGW(TAG, "Unknown
|
274
|
+
ESP_LOGW(TAG, "Unknown error");
|
289
275
|
break;
|
290
276
|
}
|
291
277
|
} else {
|
292
|
-
ESP_LOGCONFIG(TAG,
|
293
|
-
|
294
|
-
|
278
|
+
ESP_LOGCONFIG(TAG,
|
279
|
+
" Type: %s\n"
|
280
|
+
" Serial number: %" PRIu64 "\n"
|
281
|
+
" Minimum Samples: %f",
|
282
|
+
sgp_type_ == SGP41 ? "SGP41" : "SPG40", this->serial_number_, GasIndexAlgorithm_INITIAL_BLACKOUT);
|
295
283
|
}
|
296
284
|
LOG_UPDATE_INTERVAL(this);
|
297
285
|
|
286
|
+
ESP_LOGCONFIG(TAG, " Compensation:");
|
298
287
|
if (this->humidity_sensor_ != nullptr || this->temperature_sensor_ != nullptr) {
|
299
|
-
ESP_LOGCONFIG(TAG, " Compensation:");
|
300
288
|
LOG_SENSOR(" ", "Temperature Source:", this->temperature_sensor_);
|
301
289
|
LOG_SENSOR(" ", "Humidity Source:", this->humidity_sensor_);
|
302
290
|
} else {
|
303
|
-
ESP_LOGCONFIG(TAG, "
|
291
|
+
ESP_LOGCONFIG(TAG, " No source configured");
|
304
292
|
}
|
305
293
|
LOG_SENSOR(" ", "VOC", this->voc_sensor_);
|
306
294
|
LOG_SENSOR(" ", "NOx", this->nox_sensor_);
|
esphome/components/sgp4x/sgp4x.h
CHANGED