esphome 2025.4.2__py3-none-any.whl → 2025.5.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- esphome/__main__.py +16 -14
- esphome/components/ac_dimmer/ac_dimmer.cpp +3 -2
- esphome/components/adc/__init__.py +51 -34
- esphome/components/airthings_wave_base/__init__.py +1 -1
- esphome/components/alarm_control_panel/__init__.py +37 -2
- esphome/components/am43/cover/__init__.py +4 -5
- esphome/components/analog_threshold/analog_threshold_binary_sensor.cpp +6 -4
- esphome/components/analog_threshold/analog_threshold_binary_sensor.h +4 -5
- esphome/components/analog_threshold/binary_sensor.py +10 -8
- esphome/components/anova/climate.py +4 -5
- esphome/components/api/__init__.py +25 -8
- esphome/components/api/api_connection.cpp +416 -662
- esphome/components/api/api_connection.h +256 -57
- esphome/components/api/api_frame_helper.cpp +232 -177
- esphome/components/api/api_frame_helper.h +61 -8
- esphome/components/api/api_noise_context.h +13 -4
- esphome/components/api/api_pb2.cpp +1422 -1
- esphome/components/api/api_pb2.h +255 -1
- esphome/components/api/api_pb2_service.cpp +162 -49
- esphome/components/api/api_pb2_service.h +90 -51
- esphome/components/api/api_pb2_size.h +361 -0
- esphome/components/api/api_server.cpp +110 -34
- esphome/components/api/api_server.h +8 -0
- esphome/components/api/proto.h +86 -17
- esphome/components/as7341/as7341.h +1 -1
- esphome/components/at581x/at581x.h +4 -4
- esphome/components/atm90e32/__init__.py +1 -0
- esphome/components/atm90e32/atm90e32.cpp +576 -199
- esphome/components/atm90e32/atm90e32.h +128 -31
- esphome/components/atm90e32/atm90e32_reg.h +4 -2
- esphome/components/atm90e32/button/__init__.py +62 -10
- esphome/components/atm90e32/button/atm90e32_button.cpp +63 -4
- esphome/components/atm90e32/button/atm90e32_button.h +36 -4
- esphome/components/atm90e32/number/__init__.py +130 -0
- esphome/components/atm90e32/number/atm90e32_number.h +16 -0
- esphome/components/atm90e32/sensor.py +21 -4
- esphome/components/atm90e32/text_sensor/__init__.py +48 -0
- esphome/components/audio/__init__.py +96 -49
- esphome/components/audio/audio.h +48 -0
- esphome/components/audio/audio_decoder.cpp +1 -1
- esphome/components/audio/audio_resampler.cpp +2 -0
- esphome/components/audio/audio_resampler.h +1 -0
- esphome/components/ballu/climate.py +2 -9
- esphome/components/bang_bang/climate.py +5 -6
- esphome/components/bedjet/bedjet_hub.cpp +1 -0
- esphome/components/bedjet/climate/__init__.py +3 -8
- esphome/components/bedjet/fan/__init__.py +2 -11
- esphome/components/binary/fan/__init__.py +13 -16
- esphome/components/binary_sensor/__init__.py +13 -10
- esphome/components/bl0906/constants.h +16 -16
- esphome/components/ble_client/text_sensor/__init__.py +3 -5
- esphome/components/bluetooth_proxy/bluetooth_connection.cpp +4 -6
- esphome/components/bluetooth_proxy/bluetooth_proxy.cpp +136 -21
- esphome/components/bluetooth_proxy/bluetooth_proxy.h +7 -0
- esphome/components/button/__init__.py +11 -8
- esphome/components/canbus/canbus.cpp +3 -0
- esphome/components/canbus/canbus.h +16 -0
- esphome/components/ccs811/sensor.py +9 -6
- esphome/components/climate/__init__.py +35 -2
- esphome/components/climate/climate_mode.h +1 -1
- esphome/components/climate/climate_traits.h +63 -57
- esphome/components/climate_ir/__init__.py +57 -17
- esphome/components/climate_ir_lg/climate.py +2 -5
- esphome/components/climate_ir_lg/climate_ir_lg.cpp +7 -7
- esphome/components/climate_ir_lg/climate_ir_lg.h +1 -1
- esphome/components/color/__init__.py +2 -0
- esphome/components/const/__init__.py +5 -0
- esphome/components/coolix/climate.py +2 -9
- esphome/components/copy/cover/__init__.py +10 -9
- esphome/components/copy/fan/__init__.py +11 -9
- esphome/components/copy/lock/__init__.py +11 -9
- esphome/components/copy/text/__init__.py +9 -6
- esphome/components/cover/__init__.py +37 -2
- esphome/components/cse7766/cse7766.cpp +2 -1
- esphome/components/cst226/binary_sensor/__init__.py +28 -0
- esphome/components/cst226/binary_sensor/cs226_button.h +22 -0
- esphome/components/cst226/binary_sensor/cstt6_button.cpp +19 -0
- esphome/components/cst226/touchscreen/cst226_touchscreen.cpp +27 -5
- esphome/components/cst226/touchscreen/cst226_touchscreen.h +10 -10
- esphome/components/current_based/cover.py +37 -36
- esphome/components/current_based/current_based_cover.cpp +2 -1
- esphome/components/daikin/climate.py +2 -9
- esphome/components/daikin/daikin.cpp +15 -9
- esphome/components/daikin/daikin.h +5 -5
- esphome/components/daikin_arc/climate.py +2 -7
- esphome/components/daikin_brc/climate.py +3 -5
- esphome/components/dallas_temp/dallas_temp.cpp +17 -24
- esphome/components/dallas_temp/dallas_temp.h +0 -1
- esphome/components/daly_bms/daly_bms.cpp +2 -1
- esphome/components/debug/debug_component.cpp +6 -1
- esphome/components/debug/debug_component.h +8 -0
- esphome/components/debug/debug_esp32.cpp +109 -254
- esphome/components/debug/sensor.py +14 -0
- esphome/components/deep_sleep/deep_sleep_esp32.cpp +13 -1
- esphome/components/delonghi/climate.py +2 -9
- esphome/components/demo/__init__.py +18 -20
- esphome/components/dfrobot_sen0395/switch/__init__.py +21 -22
- esphome/components/dps310/sensor.py +6 -6
- esphome/components/ee895/sensor.py +9 -9
- esphome/components/emmeti/climate.py +2 -9
- esphome/components/endstop/cover.py +17 -16
- esphome/components/endstop/endstop_cover.cpp +2 -1
- esphome/components/ens160_base/__init__.py +12 -9
- esphome/components/esp32/__init__.py +60 -3
- esphome/components/esp32/core.cpp +11 -5
- esphome/components/esp32/gpio.cpp +86 -24
- esphome/components/esp32/gpio.py +15 -16
- esphome/components/esp32/gpio_esp32.py +1 -2
- esphome/components/esp32/gpio_esp32_c2.py +1 -1
- esphome/components/esp32/gpio_esp32_c3.py +1 -1
- esphome/components/esp32/gpio_esp32_c6.py +1 -1
- esphome/components/esp32/gpio_esp32_h2.py +1 -1
- esphome/components/esp32_ble/ble.cpp +1 -0
- esphome/components/esp32_ble/ble.h +5 -3
- esphome/components/esp32_ble/ble_advertising.cpp +2 -1
- esphome/components/esp32_ble/ble_advertising.h +1 -0
- esphome/components/esp32_ble_server/__init__.py +3 -0
- esphome/components/esp32_ble_tracker/__init__.py +7 -1
- esphome/components/esp32_ble_tracker/esp32_ble_tracker.cpp +192 -118
- esphome/components/esp32_ble_tracker/esp32_ble_tracker.h +29 -3
- esphome/components/esp32_camera/__init__.py +1 -1
- esphome/components/esp32_camera/esp32_camera.cpp +2 -10
- esphome/components/esp32_camera/esp32_camera.h +1 -1
- esphome/components/esp32_can/esp32_can.cpp +1 -1
- esphome/components/esp32_improv/esp32_improv_component.cpp +1 -1
- esphome/components/esp32_rmt_led_strip/led_strip.cpp +1 -1
- esphome/components/esp32_rmt_led_strip/led_strip.h +7 -5
- esphome/components/esp32_rmt_led_strip/light.py +9 -1
- esphome/components/esp32_touch/esp32_touch.cpp +1 -1
- esphome/components/esp8266/gpio.cpp +69 -8
- esphome/components/ethernet/ethernet_component.cpp +1 -1
- esphome/components/event/__init__.py +13 -10
- esphome/components/factory_reset/switch/__init__.py +7 -21
- esphome/components/fan/__init__.py +52 -5
- esphome/components/fastled_base/__init__.py +1 -4
- esphome/components/fastled_base/fastled_light.cpp +1 -1
- esphome/components/feedback/cover.py +38 -33
- esphome/components/feedback/feedback_cover.cpp +2 -1
- esphome/components/fujitsu_general/climate.py +2 -9
- esphome/components/gcja5/gcja5.cpp +2 -1
- esphome/components/gpio/one_wire/gpio_one_wire.cpp +45 -43
- esphome/components/gpio/one_wire/gpio_one_wire.h +2 -1
- esphome/components/gpio_expander/cached_gpio.h +22 -7
- esphome/components/gps/__init__.py +47 -17
- esphome/components/gps/gps.cpp +42 -23
- esphome/components/gps/gps.h +17 -13
- esphome/components/graph/__init__.py +1 -2
- esphome/components/gree/climate.py +4 -6
- esphome/components/gree/gree.cpp +16 -2
- esphome/components/gree/gree.h +2 -2
- esphome/components/growatt_solar/growatt_solar.cpp +2 -1
- esphome/components/haier/climate.py +37 -34
- esphome/components/hbridge/fan/__init__.py +19 -17
- esphome/components/he60r/cover.py +4 -5
- esphome/components/heatpumpir/climate.py +3 -6
- esphome/components/hitachi_ac344/climate.py +2 -9
- esphome/components/hitachi_ac424/climate.py +2 -9
- esphome/components/hm3301/hm3301.h +1 -1
- esphome/components/hte501/sensor.py +6 -6
- esphome/components/http_request/__init__.py +39 -6
- esphome/components/http_request/http_request.cpp +20 -0
- esphome/components/http_request/http_request.h +57 -15
- esphome/components/http_request/http_request_arduino.cpp +22 -6
- esphome/components/http_request/http_request_arduino.h +4 -3
- esphome/components/http_request/http_request_host.cpp +141 -0
- esphome/components/http_request/http_request_host.h +37 -0
- esphome/components/http_request/http_request_idf.cpp +35 -3
- esphome/components/http_request/http_request_idf.h +10 -3
- esphome/components/http_request/httplib.h +9691 -0
- esphome/components/http_request/update/__init__.py +11 -8
- esphome/components/hyt271/sensor.py +6 -6
- esphome/components/i2c/i2c.h +4 -0
- esphome/components/i2c/i2c_bus_esp_idf.cpp +1 -1
- esphome/components/i2s_audio/__init__.py +131 -22
- esphome/components/i2s_audio/i2s_audio.h +44 -4
- esphome/components/i2s_audio/media_player/__init__.py +19 -9
- esphome/components/i2s_audio/microphone/__init__.py +63 -5
- esphome/components/i2s_audio/microphone/i2s_audio_microphone.cpp +351 -61
- esphome/components/i2s_audio/microphone/i2s_audio_microphone.h +40 -6
- esphome/components/i2s_audio/speaker/__init__.py +31 -5
- esphome/components/i2s_audio/speaker/i2s_audio_speaker.cpp +155 -19
- esphome/components/i2s_audio/speaker/i2s_audio_speaker.h +17 -4
- esphome/components/ili9xxx/ili9xxx_init.h +1 -1
- esphome/components/image/__init__.py +37 -17
- esphome/components/image/image.cpp +25 -8
- esphome/components/internal_temperature/internal_temperature.cpp +6 -4
- esphome/components/key_collector/__init__.py +35 -0
- esphome/components/key_collector/key_collector.cpp +8 -0
- esphome/components/key_collector/key_collector.h +10 -0
- esphome/components/kuntze/kuntze.cpp +2 -1
- esphome/components/ld2410/ld2410.h +1 -1
- esphome/components/ld2450/ld2450.h +1 -1
- esphome/components/light/__init__.py +57 -0
- esphome/components/lock/__init__.py +51 -4
- esphome/components/lock/automation.h +2 -13
- esphome/components/logger/__init__.py +22 -0
- esphome/components/logger/logger.cpp +154 -103
- esphome/components/logger/logger.h +211 -36
- esphome/components/logger/task_log_buffer.cpp +138 -0
- esphome/components/logger/task_log_buffer.h +69 -0
- esphome/components/lvgl/__init__.py +13 -5
- esphome/components/lvgl/automation.py +50 -1
- esphome/components/lvgl/defines.py +0 -1
- esphome/components/lvgl/lvgl_esphome.cpp +5 -1
- esphome/components/lvgl/text/__init__.py +1 -2
- esphome/components/mapping/__init__.py +134 -0
- esphome/components/matrix_keypad/matrix_keypad.cpp +2 -1
- esphome/components/max7219digit/max7219digit.cpp +28 -27
- esphome/components/mdns/__init__.py +11 -5
- esphome/components/mdns/mdns_component.cpp +11 -5
- esphome/components/mdns/mdns_component.h +3 -2
- esphome/components/mdns/mdns_esp32.cpp +4 -3
- esphome/components/mdns/mdns_esp8266.cpp +4 -2
- esphome/components/mdns/mdns_libretiny.cpp +4 -2
- esphome/components/mdns/mdns_rp2040.cpp +4 -2
- esphome/components/media_player/__init__.py +33 -1
- esphome/components/mhz19/sensor.py +11 -7
- esphome/components/micro_wake_word/__init__.py +99 -31
- esphome/components/micro_wake_word/automation.h +54 -0
- esphome/components/micro_wake_word/micro_wake_word.cpp +331 -319
- esphome/components/micro_wake_word/micro_wake_word.h +58 -105
- esphome/components/micro_wake_word/preprocessor_settings.h +19 -2
- esphome/components/micro_wake_word/streaming_model.cpp +158 -41
- esphome/components/micro_wake_word/streaming_model.h +85 -13
- esphome/components/microphone/__init__.py +139 -9
- esphome/components/microphone/automation.h +14 -2
- esphome/components/microphone/microphone.cpp +21 -0
- esphome/components/microphone/microphone.h +14 -5
- esphome/components/microphone/microphone_source.cpp +95 -0
- esphome/components/microphone/microphone_source.h +80 -0
- esphome/components/mics_4514/sensor.py +25 -14
- esphome/components/midea/climate.py +3 -4
- esphome/components/midea_ir/climate.py +3 -5
- esphome/components/mipi_spi/__init__.py +15 -0
- esphome/components/mipi_spi/display.py +474 -0
- esphome/components/mipi_spi/mipi_spi.cpp +481 -0
- esphome/components/mipi_spi/mipi_spi.h +171 -0
- esphome/components/mipi_spi/models/__init__.py +65 -0
- esphome/components/mipi_spi/models/amoled.py +72 -0
- esphome/components/mipi_spi/models/commands.py +82 -0
- esphome/components/mipi_spi/models/cyd.py +10 -0
- esphome/components/mipi_spi/models/ili.py +749 -0
- esphome/components/mipi_spi/models/jc.py +260 -0
- esphome/components/mipi_spi/models/lanbon.py +15 -0
- esphome/components/mipi_spi/models/lilygo.py +60 -0
- esphome/components/mipi_spi/models/waveshare.py +139 -0
- esphome/components/mitsubishi/climate.py +2 -5
- esphome/components/mitsubishi/mitsubishi.cpp +9 -9
- esphome/components/mixer/speaker/mixer_speaker.cpp +12 -22
- esphome/components/mixer/speaker/mixer_speaker.h +1 -3
- esphome/components/mlx90393/sensor.py +5 -0
- esphome/components/mlx90393/sensor_mlx90393.cpp +195 -13
- esphome/components/mlx90393/sensor_mlx90393.h +21 -4
- esphome/components/modbus/modbus.cpp +2 -1
- esphome/components/mqtt/__init__.py +1 -1
- esphome/components/mqtt/mqtt_client.cpp +6 -2
- esphome/components/mqtt/mqtt_const.h +4 -0
- esphome/components/mqtt/mqtt_fan.cpp +39 -0
- esphome/components/mqtt/mqtt_fan.h +2 -0
- esphome/components/ms5611/sensor.py +6 -6
- esphome/components/ms8607/sensor.py +3 -3
- esphome/components/network/__init__.py +1 -1
- esphome/components/nextion/base_component.py +17 -16
- esphome/components/nextion/display.py +11 -2
- esphome/components/nextion/nextion.cpp +39 -1
- esphome/components/nextion/nextion.h +50 -0
- esphome/components/noblex/climate.py +2 -9
- esphome/components/number/__init__.py +12 -9
- esphome/components/one_wire/one_wire_bus.cpp +14 -10
- esphome/components/one_wire/one_wire_bus.h +14 -8
- esphome/components/online_image/bmp_image.cpp +48 -11
- esphome/components/online_image/bmp_image.h +2 -0
- esphome/components/opentherm/binary_sensor/__init__.py +2 -4
- esphome/components/opentherm/number/__init__.py +11 -20
- esphome/components/opentherm/sensor/__init__.py +3 -3
- esphome/components/opentherm/switch/__init__.py +3 -5
- esphome/components/output/lock/__init__.py +11 -9
- esphome/components/packages/__init__.py +33 -31
- esphome/components/packet_transport/__init__.py +201 -0
- esphome/components/packet_transport/binary_sensor.py +19 -0
- esphome/components/packet_transport/packet_transport.cpp +534 -0
- esphome/components/packet_transport/packet_transport.h +154 -0
- esphome/components/packet_transport/sensor.py +19 -0
- esphome/components/pca9685/pca9685_output.cpp +2 -1
- esphome/components/pid/climate.py +2 -4
- esphome/components/pm2005/__init__.py +1 -0
- esphome/components/pm2005/pm2005.cpp +123 -0
- esphome/components/pm2005/pm2005.h +46 -0
- esphome/components/pm2005/sensor.py +86 -0
- esphome/components/pmsa003i/pmsa003i.cpp +43 -16
- esphome/components/pmsa003i/pmsa003i.h +25 -25
- esphome/components/pmsx003/pmsx003.cpp +195 -230
- esphome/components/pmsx003/pmsx003.h +51 -33
- esphome/components/pmsx003/sensor.py +21 -11
- esphome/components/pn7150/pn7150.h +2 -2
- esphome/components/pn7160/pn7160.h +2 -2
- esphome/components/prometheus/prometheus_handler.cpp +174 -0
- esphome/components/prometheus/prometheus_handler.h +17 -0
- esphome/components/psram/__init__.py +7 -5
- esphome/components/pulse_meter/pulse_meter_sensor.cpp +32 -12
- esphome/components/pulse_meter/pulse_meter_sensor.h +5 -5
- esphome/components/pzem004t/pzem004t.cpp +2 -1
- esphome/components/qspi_dbi/__init__.py +0 -1
- esphome/components/qspi_dbi/display.py +2 -1
- esphome/components/qspi_dbi/models.py +1 -2
- esphome/components/remote_base/__init__.py +91 -0
- esphome/components/remote_base/beo4_protocol.cpp +153 -0
- esphome/components/remote_base/beo4_protocol.h +43 -0
- esphome/components/remote_base/gobox_protocol.cpp +131 -0
- esphome/components/remote_base/gobox_protocol.h +54 -0
- esphome/components/remote_receiver/remote_receiver_esp32.cpp +16 -9
- esphome/components/resampler/speaker/resampler_speaker.cpp +12 -10
- esphome/components/resampler/speaker/resampler_speaker.h +1 -1
- esphome/components/rf_bridge/rf_bridge.cpp +2 -1
- esphome/components/scd30/sensor.py +2 -3
- esphome/components/scd4x/sensor.py +4 -5
- esphome/components/sdp3x/sensor.py +2 -1
- esphome/components/sds011/sds011.cpp +2 -1
- esphome/components/select/__init__.py +19 -20
- esphome/components/sen5x/sen5x.cpp +55 -36
- esphome/components/sen5x/sensor.py +1 -1
- esphome/components/senseair/sensor.py +3 -3
- esphome/components/sensor/__init__.py +158 -14
- esphome/components/sensor/filter.cpp +23 -0
- esphome/components/sensor/filter.h +22 -0
- esphome/components/sgp30/sensor.py +14 -16
- esphome/components/sgp4x/sensor.py +1 -1
- esphome/components/sht4x/sht4x.cpp +43 -22
- esphome/components/sht4x/sht4x.h +1 -1
- esphome/components/shtcx/sensor.py +6 -6
- esphome/components/slow_pwm/slow_pwm_output.cpp +2 -1
- esphome/components/sml/text_sensor/__init__.py +4 -6
- esphome/components/sound_level/__init__.py +0 -0
- esphome/components/sound_level/sensor.py +97 -0
- esphome/components/sound_level/sound_level.cpp +194 -0
- esphome/components/sound_level/sound_level.h +73 -0
- esphome/components/speaker/media_player/__init__.py +4 -8
- esphome/components/speaker/media_player/speaker_media_player.cpp +0 -18
- esphome/components/speaker/media_player/speaker_media_player.h +0 -11
- esphome/components/speaker/speaker.h +4 -7
- esphome/components/speed/fan/__init__.py +17 -16
- esphome/components/spi/spi.h +11 -1
- esphome/components/sprinkler/__init__.py +18 -19
- esphome/components/sprinkler/sprinkler.cpp +6 -5
- esphome/components/switch/__init__.py +32 -42
- esphome/components/syslog/__init__.py +41 -0
- esphome/components/syslog/esphome_syslog.cpp +49 -0
- esphome/components/syslog/esphome_syslog.h +27 -0
- esphome/components/t6615/sensor.py +3 -3
- esphome/components/t6615/t6615.cpp +2 -1
- esphome/components/tca9555/tca9555.cpp +11 -6
- esphome/components/tcl112/climate.py +2 -9
- esphome/components/template/alarm_control_panel/__init__.py +7 -6
- esphome/components/template/alarm_control_panel/template_alarm_control_panel.cpp +21 -17
- esphome/components/template/alarm_control_panel/template_alarm_control_panel.h +2 -1
- esphome/components/template/cover/__init__.py +27 -21
- esphome/components/template/fan/__init__.py +14 -12
- esphome/components/template/lock/__init__.py +20 -25
- esphome/components/template/lock/automation.h +18 -0
- esphome/components/template/text/__init__.py +4 -3
- esphome/components/template/valve/__init__.py +32 -21
- esphome/components/template/valve/automation.h +24 -0
- esphome/components/text/__init__.py +32 -1
- esphome/components/text_sensor/__init__.py +24 -29
- esphome/components/thermostat/climate.py +5 -5
- esphome/components/time_based/cover.py +17 -16
- esphome/components/time_based/time_based_cover.cpp +2 -1
- esphome/components/tm1638/switch/__init__.py +10 -7
- esphome/components/tormatic/cover.py +4 -5
- esphome/components/toshiba/climate.py +3 -5
- esphome/components/touchscreen/touchscreen.cpp +3 -1
- esphome/components/tuya/climate/__init__.py +5 -6
- esphome/components/tuya/cover/__init__.py +6 -11
- esphome/components/tuya/select/__init__.py +15 -5
- esphome/components/tuya/select/tuya_select.cpp +6 -1
- esphome/components/tuya/select/tuya_select.h +5 -1
- esphome/components/uart/packet_transport/__init__.py +20 -0
- esphome/components/uart/packet_transport/uart_transport.cpp +88 -0
- esphome/components/uart/packet_transport/uart_transport.h +41 -0
- esphome/components/uart/switch/uart_switch.cpp +2 -1
- esphome/components/udp/__init__.py +126 -128
- esphome/components/udp/automation.h +40 -0
- esphome/components/udp/binary_sensor.py +3 -25
- esphome/components/udp/packet_transport/__init__.py +29 -0
- esphome/components/udp/packet_transport/udp_transport.cpp +36 -0
- esphome/components/udp/packet_transport/udp_transport.h +28 -0
- esphome/components/udp/sensor.py +3 -25
- esphome/components/udp/udp_component.cpp +26 -470
- esphome/components/udp/udp_component.h +21 -128
- esphome/components/update/__init__.py +31 -1
- esphome/components/uponor_smatrix/climate/__init__.py +4 -9
- esphome/components/uponor_smatrix/climate/uponor_smatrix_climate.cpp +2 -1
- esphome/components/uponor_smatrix/uponor_smatrix.cpp +2 -1
- esphome/components/uptime/text_sensor/__init__.py +47 -7
- esphome/components/uptime/text_sensor/uptime_text_sensor.cpp +12 -7
- esphome/components/uptime/text_sensor/uptime_text_sensor.h +19 -0
- esphome/components/valve/__init__.py +34 -3
- esphome/components/valve/automation.h +1 -19
- esphome/components/vl53l0x/sensor.py +11 -0
- esphome/components/vl53l0x/vl53l0x_sensor.cpp +5 -1
- esphome/components/vl53l0x/vl53l0x_sensor.h +2 -1
- esphome/components/voice_assistant/__init__.py +36 -10
- esphome/components/voice_assistant/voice_assistant.cpp +170 -144
- esphome/components/voice_assistant/voice_assistant.h +26 -25
- esphome/components/waveshare_epaper/display.py +6 -0
- esphome/components/waveshare_epaper/waveshare_epaper.cpp +439 -37
- esphome/components/waveshare_epaper/waveshare_epaper.h +60 -11
- esphome/components/weikai/weikai.cpp +0 -52
- esphome/components/whirlpool/climate.py +3 -5
- esphome/components/whynter/climate.py +3 -5
- esphome/components/xpt2046/touchscreen/xpt2046.cpp +1 -1
- esphome/components/yashima/climate.py +6 -6
- esphome/components/zhlt01/climate.py +2 -7
- esphome/config.py +13 -13
- esphome/config_validation.py +38 -58
- esphome/const.py +15 -1
- esphome/core/__init__.py +2 -0
- esphome/core/application.cpp +27 -10
- esphome/core/application.h +9 -1
- esphome/core/automation.h +4 -3
- esphome/core/component.cpp +28 -7
- esphome/core/component.h +10 -1
- esphome/core/defines.h +23 -17
- esphome/core/doxygen.h +13 -0
- esphome/core/macros.h +4 -0
- esphome/core/scheduler.cpp +7 -1
- esphome/cpp_generator.py +6 -2
- esphome/dashboard/web_server.py +3 -3
- esphome/helpers.py +39 -0
- esphome/loader.py +4 -0
- esphome/log.py +15 -19
- esphome/mqtt.py +23 -10
- esphome/platformio_api.py +1 -1
- esphome/schema_extractors.py +0 -1
- esphome/voluptuous_schema.py +3 -1
- esphome/vscode.py +15 -0
- esphome/wizard.py +47 -37
- esphome/zeroconf.py +7 -3
- {esphome-2025.4.2.dist-info → esphome-2025.5.0.dist-info}/METADATA +10 -11
- {esphome-2025.4.2.dist-info → esphome-2025.5.0.dist-info}/RECORD +444 -383
- {esphome-2025.4.2.dist-info → esphome-2025.5.0.dist-info}/WHEEL +1 -1
- {esphome-2025.4.2.dist-info → esphome-2025.5.0.dist-info}/entry_points.txt +0 -0
- {esphome-2025.4.2.dist-info → esphome-2025.5.0.dist-info}/licenses/LICENSE +0 -0
- {esphome-2025.4.2.dist-info → esphome-2025.5.0.dist-info}/top_level.txt +0 -0
@@ -0,0 +1,260 @@
|
|
1
|
+
from esphome.components.spi import TYPE_QUAD
|
2
|
+
import esphome.config_validation as cv
|
3
|
+
from esphome.const import CONF_IGNORE_STRAPPING_WARNING, CONF_NUMBER
|
4
|
+
|
5
|
+
from .. import MODE_RGB
|
6
|
+
from . import DriverChip
|
7
|
+
|
8
|
+
AXS15231 = DriverChip(
|
9
|
+
"AXS15231",
|
10
|
+
draw_rounding=8,
|
11
|
+
swap_xy=cv.UNDEFINED,
|
12
|
+
color_order=MODE_RGB,
|
13
|
+
bus_mode=TYPE_QUAD,
|
14
|
+
initsequence=(
|
15
|
+
(0xBB, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5A, 0xA5),
|
16
|
+
(0xC1, 0x33),
|
17
|
+
(0xBB, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00),
|
18
|
+
),
|
19
|
+
)
|
20
|
+
|
21
|
+
AXS15231.extend(
|
22
|
+
"JC3248W535",
|
23
|
+
width=320,
|
24
|
+
height=480,
|
25
|
+
cs_pin={CONF_NUMBER: 45, CONF_IGNORE_STRAPPING_WARNING: True},
|
26
|
+
data_rate="40MHz",
|
27
|
+
)
|
28
|
+
|
29
|
+
DriverChip(
|
30
|
+
"JC3636W518",
|
31
|
+
height=360,
|
32
|
+
width=360,
|
33
|
+
offset_height=1,
|
34
|
+
draw_rounding=1,
|
35
|
+
cs_pin=10,
|
36
|
+
reset_pin=47,
|
37
|
+
invert_colors=True,
|
38
|
+
color_order=MODE_RGB,
|
39
|
+
bus_mode=TYPE_QUAD,
|
40
|
+
data_rate="40MHz",
|
41
|
+
initsequence=(
|
42
|
+
(0xF0, 0x08),
|
43
|
+
(0xF2, 0x08),
|
44
|
+
(0x9B, 0x51),
|
45
|
+
(0x86, 0x53),
|
46
|
+
(0xF2, 0x80),
|
47
|
+
(0xF0, 0x00),
|
48
|
+
(0xF0, 0x01),
|
49
|
+
(0xF1, 0x01),
|
50
|
+
(0xB0, 0x54),
|
51
|
+
(0xB1, 0x3F),
|
52
|
+
(0xB2, 0x2A),
|
53
|
+
(0xB4, 0x46),
|
54
|
+
(0xB5, 0x34),
|
55
|
+
(0xB6, 0xD5),
|
56
|
+
(0xB7, 0x30),
|
57
|
+
(0xBA, 0x00),
|
58
|
+
(0xBB, 0x08),
|
59
|
+
(0xBC, 0x08),
|
60
|
+
(0xBD, 0x00),
|
61
|
+
(0xC0, 0x80),
|
62
|
+
(0xC1, 0x10),
|
63
|
+
(0xC2, 0x37),
|
64
|
+
(0xC3, 0x80),
|
65
|
+
(0xC4, 0x10),
|
66
|
+
(0xC5, 0x37),
|
67
|
+
(0xC6, 0xA9),
|
68
|
+
(0xC7, 0x41),
|
69
|
+
(0xC8, 0x51),
|
70
|
+
(0xC9, 0xA9),
|
71
|
+
(0xCA, 0x41),
|
72
|
+
(0xCB, 0x51),
|
73
|
+
(0xD0, 0x91),
|
74
|
+
(0xD1, 0x68),
|
75
|
+
(0xD2, 0x69),
|
76
|
+
(0xF5, 0x00, 0xA5),
|
77
|
+
(0xDD, 0x3F),
|
78
|
+
(0xDE, 0x3F),
|
79
|
+
(0xF1, 0x10),
|
80
|
+
(0xF0, 0x00),
|
81
|
+
(0xF0, 0x02),
|
82
|
+
(
|
83
|
+
0xE0,
|
84
|
+
0x70,
|
85
|
+
0x09,
|
86
|
+
0x12,
|
87
|
+
0x0C,
|
88
|
+
0x0B,
|
89
|
+
0x27,
|
90
|
+
0x38,
|
91
|
+
0x54,
|
92
|
+
0x4E,
|
93
|
+
0x19,
|
94
|
+
0x15,
|
95
|
+
0x15,
|
96
|
+
0x2C,
|
97
|
+
0x2F,
|
98
|
+
),
|
99
|
+
(
|
100
|
+
0xE1,
|
101
|
+
0x70,
|
102
|
+
0x08,
|
103
|
+
0x11,
|
104
|
+
0x0C,
|
105
|
+
0x0B,
|
106
|
+
0x27,
|
107
|
+
0x38,
|
108
|
+
0x43,
|
109
|
+
0x4C,
|
110
|
+
0x18,
|
111
|
+
0x14,
|
112
|
+
0x14,
|
113
|
+
0x2B,
|
114
|
+
0x2D,
|
115
|
+
),
|
116
|
+
(0xF0, 0x10),
|
117
|
+
(0xF3, 0x10),
|
118
|
+
(0xE0, 0x08),
|
119
|
+
(0xE1, 0x00),
|
120
|
+
(0xE2, 0x00),
|
121
|
+
(0xE3, 0x00),
|
122
|
+
(0xE4, 0xE0),
|
123
|
+
(0xE5, 0x06),
|
124
|
+
(0xE6, 0x21),
|
125
|
+
(0xE7, 0x00),
|
126
|
+
(0xE8, 0x05),
|
127
|
+
(0xE9, 0x82),
|
128
|
+
(0xEA, 0xDF),
|
129
|
+
(0xEB, 0x89),
|
130
|
+
(0xEC, 0x20),
|
131
|
+
(0xED, 0x14),
|
132
|
+
(0xEE, 0xFF),
|
133
|
+
(0xEF, 0x00),
|
134
|
+
(0xF8, 0xFF),
|
135
|
+
(0xF9, 0x00),
|
136
|
+
(0xFA, 0x00),
|
137
|
+
(0xFB, 0x30),
|
138
|
+
(0xFC, 0x00),
|
139
|
+
(0xFD, 0x00),
|
140
|
+
(0xFE, 0x00),
|
141
|
+
(0xFF, 0x00),
|
142
|
+
(0x60, 0x42),
|
143
|
+
(0x61, 0xE0),
|
144
|
+
(0x62, 0x40),
|
145
|
+
(0x63, 0x40),
|
146
|
+
(0x64, 0x02),
|
147
|
+
(0x65, 0x00),
|
148
|
+
(0x66, 0x40),
|
149
|
+
(0x67, 0x03),
|
150
|
+
(0x68, 0x00),
|
151
|
+
(0x69, 0x00),
|
152
|
+
(0x6A, 0x00),
|
153
|
+
(0x6B, 0x00),
|
154
|
+
(0x70, 0x42),
|
155
|
+
(0x71, 0xE0),
|
156
|
+
(0x72, 0x40),
|
157
|
+
(0x73, 0x40),
|
158
|
+
(0x74, 0x02),
|
159
|
+
(0x75, 0x00),
|
160
|
+
(0x76, 0x40),
|
161
|
+
(0x77, 0x03),
|
162
|
+
(0x78, 0x00),
|
163
|
+
(0x79, 0x00),
|
164
|
+
(0x7A, 0x00),
|
165
|
+
(0x7B, 0x00),
|
166
|
+
(0x80, 0x48),
|
167
|
+
(0x81, 0x00),
|
168
|
+
(0x82, 0x05),
|
169
|
+
(0x83, 0x02),
|
170
|
+
(0x84, 0xDD),
|
171
|
+
(0x85, 0x00),
|
172
|
+
(0x86, 0x00),
|
173
|
+
(0x87, 0x00),
|
174
|
+
(0x88, 0x48),
|
175
|
+
(0x89, 0x00),
|
176
|
+
(0x8A, 0x07),
|
177
|
+
(0x8B, 0x02),
|
178
|
+
(0x8C, 0xDF),
|
179
|
+
(0x8D, 0x00),
|
180
|
+
(0x8E, 0x00),
|
181
|
+
(0x8F, 0x00),
|
182
|
+
(0x90, 0x48),
|
183
|
+
(0x91, 0x00),
|
184
|
+
(0x92, 0x09),
|
185
|
+
(0x93, 0x02),
|
186
|
+
(0x94, 0xE1),
|
187
|
+
(0x95, 0x00),
|
188
|
+
(0x96, 0x00),
|
189
|
+
(0x97, 0x00),
|
190
|
+
(0x98, 0x48),
|
191
|
+
(0x99, 0x00),
|
192
|
+
(0x9A, 0x0B),
|
193
|
+
(0x9B, 0x02),
|
194
|
+
(0x9C, 0xE3),
|
195
|
+
(0x9D, 0x00),
|
196
|
+
(0x9E, 0x00),
|
197
|
+
(0x9F, 0x00),
|
198
|
+
(0xA0, 0x48),
|
199
|
+
(0xA1, 0x00),
|
200
|
+
(0xA2, 0x04),
|
201
|
+
(0xA3, 0x02),
|
202
|
+
(0xA4, 0xDC),
|
203
|
+
(0xA5, 0x00),
|
204
|
+
(0xA6, 0x00),
|
205
|
+
(0xA7, 0x00),
|
206
|
+
(0xA8, 0x48),
|
207
|
+
(0xA9, 0x00),
|
208
|
+
(0xAA, 0x06),
|
209
|
+
(0xAB, 0x02),
|
210
|
+
(0xAC, 0xDE),
|
211
|
+
(0xAD, 0x00),
|
212
|
+
(0xAE, 0x00),
|
213
|
+
(0xAF, 0x00),
|
214
|
+
(0xB0, 0x48),
|
215
|
+
(0xB1, 0x00),
|
216
|
+
(0xB2, 0x08),
|
217
|
+
(0xB3, 0x02),
|
218
|
+
(0xB4, 0xE0),
|
219
|
+
(0xB5, 0x00),
|
220
|
+
(0xB6, 0x00),
|
221
|
+
(0xB7, 0x00),
|
222
|
+
(0xB8, 0x48),
|
223
|
+
(0xB9, 0x00),
|
224
|
+
(0xBA, 0x0A),
|
225
|
+
(0xBB, 0x02),
|
226
|
+
(0xBC, 0xE2),
|
227
|
+
(0xBD, 0x00),
|
228
|
+
(0xBE, 0x00),
|
229
|
+
(0xBF, 0x00),
|
230
|
+
(0xC0, 0x12),
|
231
|
+
(0xC1, 0xAA),
|
232
|
+
(0xC2, 0x65),
|
233
|
+
(0xC3, 0x74),
|
234
|
+
(0xC4, 0x47),
|
235
|
+
(0xC5, 0x56),
|
236
|
+
(0xC6, 0x00),
|
237
|
+
(0xC7, 0x88),
|
238
|
+
(0xC8, 0x99),
|
239
|
+
(0xC9, 0x33),
|
240
|
+
(0xD0, 0x21),
|
241
|
+
(0xD1, 0xAA),
|
242
|
+
(0xD2, 0x65),
|
243
|
+
(0xD3, 0x74),
|
244
|
+
(0xD4, 0x47),
|
245
|
+
(0xD5, 0x56),
|
246
|
+
(0xD6, 0x00),
|
247
|
+
(0xD7, 0x88),
|
248
|
+
(0xD8, 0x99),
|
249
|
+
(0xD9, 0x33),
|
250
|
+
(0xF3, 0x01),
|
251
|
+
(0xF0, 0x00),
|
252
|
+
(0xF0, 0x01),
|
253
|
+
(0xF1, 0x01),
|
254
|
+
(0xA0, 0x0B),
|
255
|
+
(0xA3, 0x2A),
|
256
|
+
(0xA5, 0xC3),
|
257
|
+
),
|
258
|
+
)
|
259
|
+
|
260
|
+
models = {}
|
@@ -0,0 +1,60 @@
|
|
1
|
+
from esphome.components.spi import TYPE_OCTAL
|
2
|
+
|
3
|
+
from .. import MODE_BGR
|
4
|
+
from .ili import ST7789V, ST7796
|
5
|
+
|
6
|
+
ST7789V.extend(
|
7
|
+
"T-EMBED",
|
8
|
+
width=170,
|
9
|
+
height=320,
|
10
|
+
offset_width=35,
|
11
|
+
color_order=MODE_BGR,
|
12
|
+
invert_colors=True,
|
13
|
+
draw_rounding=1,
|
14
|
+
cs_pin=10,
|
15
|
+
dc_pin=13,
|
16
|
+
reset_pin=9,
|
17
|
+
data_rate="80MHz",
|
18
|
+
)
|
19
|
+
|
20
|
+
ST7789V.extend(
|
21
|
+
"T-DISPLAY",
|
22
|
+
height=240,
|
23
|
+
width=135,
|
24
|
+
offset_width=52,
|
25
|
+
offset_height=40,
|
26
|
+
draw_rounding=1,
|
27
|
+
cs_pin=5,
|
28
|
+
dc_pin=16,
|
29
|
+
invert_colors=True,
|
30
|
+
)
|
31
|
+
ST7789V.extend(
|
32
|
+
"T-DISPLAY-S3",
|
33
|
+
height=320,
|
34
|
+
width=170,
|
35
|
+
offset_width=35,
|
36
|
+
color_order=MODE_BGR,
|
37
|
+
invert_colors=True,
|
38
|
+
draw_rounding=1,
|
39
|
+
dc_pin=7,
|
40
|
+
cs_pin=6,
|
41
|
+
reset_pin=5,
|
42
|
+
enable_pin=[9, 15],
|
43
|
+
data_rate="10MHz",
|
44
|
+
bus_mode=TYPE_OCTAL,
|
45
|
+
)
|
46
|
+
|
47
|
+
ST7796.extend(
|
48
|
+
"T-DISPLAY-S3-PRO",
|
49
|
+
width=222,
|
50
|
+
height=480,
|
51
|
+
offset_width=49,
|
52
|
+
draw_rounding=1,
|
53
|
+
cs_pin=39,
|
54
|
+
reset_pin=47,
|
55
|
+
dc_pin=9,
|
56
|
+
backlight_pin=48,
|
57
|
+
invert_colors=True,
|
58
|
+
)
|
59
|
+
|
60
|
+
models = {}
|
@@ -0,0 +1,139 @@
|
|
1
|
+
from . import DriverChip
|
2
|
+
from .ili import ILI9488_A
|
3
|
+
|
4
|
+
DriverChip(
|
5
|
+
"WAVESHARE-4-TFT",
|
6
|
+
width=320,
|
7
|
+
height=480,
|
8
|
+
invert_colors=True,
|
9
|
+
spi_16=True,
|
10
|
+
initsequence=(
|
11
|
+
(
|
12
|
+
0xF9,
|
13
|
+
0x00,
|
14
|
+
0x08,
|
15
|
+
),
|
16
|
+
(
|
17
|
+
0xC0,
|
18
|
+
0x19,
|
19
|
+
0x1A,
|
20
|
+
),
|
21
|
+
(
|
22
|
+
0xC1,
|
23
|
+
0x45,
|
24
|
+
0x00,
|
25
|
+
),
|
26
|
+
(
|
27
|
+
0xC2,
|
28
|
+
0x33,
|
29
|
+
),
|
30
|
+
(
|
31
|
+
0xC5,
|
32
|
+
0x00,
|
33
|
+
0x28,
|
34
|
+
),
|
35
|
+
(
|
36
|
+
0xB1,
|
37
|
+
0xA0,
|
38
|
+
0x11,
|
39
|
+
),
|
40
|
+
(
|
41
|
+
0xB4,
|
42
|
+
0x02,
|
43
|
+
),
|
44
|
+
(
|
45
|
+
0xB6,
|
46
|
+
0x00,
|
47
|
+
0x42,
|
48
|
+
0x3B,
|
49
|
+
),
|
50
|
+
(
|
51
|
+
0xB7,
|
52
|
+
0x07,
|
53
|
+
),
|
54
|
+
(
|
55
|
+
0xE0,
|
56
|
+
0x1F,
|
57
|
+
0x25,
|
58
|
+
0x22,
|
59
|
+
0x0B,
|
60
|
+
0x06,
|
61
|
+
0x0A,
|
62
|
+
0x4E,
|
63
|
+
0xC6,
|
64
|
+
0x39,
|
65
|
+
0x00,
|
66
|
+
0x00,
|
67
|
+
0x00,
|
68
|
+
0x00,
|
69
|
+
0x00,
|
70
|
+
0x00,
|
71
|
+
),
|
72
|
+
(
|
73
|
+
0xE1,
|
74
|
+
0x1F,
|
75
|
+
0x3F,
|
76
|
+
0x3F,
|
77
|
+
0x0F,
|
78
|
+
0x1F,
|
79
|
+
0x0F,
|
80
|
+
0x46,
|
81
|
+
0x49,
|
82
|
+
0x31,
|
83
|
+
0x05,
|
84
|
+
0x09,
|
85
|
+
0x03,
|
86
|
+
0x1C,
|
87
|
+
0x1A,
|
88
|
+
0x00,
|
89
|
+
),
|
90
|
+
(
|
91
|
+
0xF1,
|
92
|
+
0x36,
|
93
|
+
0x04,
|
94
|
+
0x00,
|
95
|
+
0x3C,
|
96
|
+
0x0F,
|
97
|
+
0x0F,
|
98
|
+
0xA4,
|
99
|
+
0x02,
|
100
|
+
),
|
101
|
+
(
|
102
|
+
0xF2,
|
103
|
+
0x18,
|
104
|
+
0xA3,
|
105
|
+
0x12,
|
106
|
+
0x02,
|
107
|
+
0x32,
|
108
|
+
0x12,
|
109
|
+
0xFF,
|
110
|
+
0x32,
|
111
|
+
0x00,
|
112
|
+
),
|
113
|
+
(
|
114
|
+
0xF4,
|
115
|
+
0x40,
|
116
|
+
0x00,
|
117
|
+
0x08,
|
118
|
+
0x91,
|
119
|
+
0x04,
|
120
|
+
),
|
121
|
+
(
|
122
|
+
0xF8,
|
123
|
+
0x21,
|
124
|
+
0x04,
|
125
|
+
),
|
126
|
+
),
|
127
|
+
)
|
128
|
+
|
129
|
+
ILI9488_A.extend(
|
130
|
+
"PICO-RESTOUCH-LCD-3.5",
|
131
|
+
spi_16=True,
|
132
|
+
pixel_mode="16bit",
|
133
|
+
mirror_x=True,
|
134
|
+
dc_pin=33,
|
135
|
+
cs_pin=34,
|
136
|
+
reset_pin=40,
|
137
|
+
data_rate="20MHz",
|
138
|
+
invert_colors=True,
|
139
|
+
)
|
@@ -1,7 +1,6 @@
|
|
1
1
|
import esphome.codegen as cg
|
2
2
|
from esphome.components import climate_ir
|
3
3
|
import esphome.config_validation as cv
|
4
|
-
from esphome.const import CONF_ID
|
5
4
|
|
6
5
|
CODEOWNERS = ["@RubyBailey"]
|
7
6
|
AUTO_LOAD = ["climate_ir"]
|
@@ -44,9 +43,8 @@ VERTICAL_DIRECTIONS = {
|
|
44
43
|
}
|
45
44
|
|
46
45
|
|
47
|
-
CONFIG_SCHEMA = climate_ir.
|
46
|
+
CONFIG_SCHEMA = climate_ir.climate_ir_with_receiver_schema(MitsubishiClimate).extend(
|
48
47
|
{
|
49
|
-
cv.GenerateID(): cv.declare_id(MitsubishiClimate),
|
50
48
|
cv.Optional(CONF_SET_FAN_MODE, default="3levels"): cv.enum(SETFANMODE),
|
51
49
|
cv.Optional(CONF_SUPPORTS_DRY, default=False): cv.boolean,
|
52
50
|
cv.Optional(CONF_SUPPORTS_FAN_ONLY, default=False): cv.boolean,
|
@@ -61,8 +59,7 @@ CONFIG_SCHEMA = climate_ir.CLIMATE_IR_WITH_RECEIVER_SCHEMA.extend(
|
|
61
59
|
|
62
60
|
|
63
61
|
async def to_code(config):
|
64
|
-
var =
|
65
|
-
await climate_ir.register_climate_ir(var, config)
|
62
|
+
var = await climate_ir.new_climate_ir(config)
|
66
63
|
|
67
64
|
cg.add(var.set_fan_mode(config[CONF_SET_FAN_MODE]))
|
68
65
|
cg.add(var.set_supports_dry(config[CONF_SUPPORTS_DRY]))
|
@@ -25,8 +25,8 @@ const uint8_t MITSUBISHI_FAN_AUTO = 0x00;
|
|
25
25
|
|
26
26
|
const uint8_t MITSUBISHI_VERTICAL_VANE_SWING = 0x38;
|
27
27
|
|
28
|
-
// const uint8_t MITSUBISHI_AUTO =
|
29
|
-
const uint8_t MITSUBISHI_OTHERWISE =
|
28
|
+
// const uint8_t MITSUBISHI_AUTO = 0x80;
|
29
|
+
const uint8_t MITSUBISHI_OTHERWISE = 0x40;
|
30
30
|
const uint8_t MITSUBISHI_POWERFUL = 0x08;
|
31
31
|
|
32
32
|
// Optional presets used to enable some model features
|
@@ -42,13 +42,13 @@ const uint16_t MITSUBISHI_HEADER_SPACE = 1700;
|
|
42
42
|
const uint16_t MITSUBISHI_MIN_GAP = 17500;
|
43
43
|
|
44
44
|
// Marker bytes
|
45
|
-
const uint8_t MITSUBISHI_BYTE00 =
|
46
|
-
const uint8_t MITSUBISHI_BYTE01 =
|
47
|
-
const uint8_t MITSUBISHI_BYTE02 =
|
48
|
-
const uint8_t MITSUBISHI_BYTE03 =
|
49
|
-
const uint8_t MITSUBISHI_BYTE04 =
|
50
|
-
const uint8_t MITSUBISHI_BYTE13 =
|
51
|
-
const uint8_t MITSUBISHI_BYTE16 =
|
45
|
+
const uint8_t MITSUBISHI_BYTE00 = 0x23;
|
46
|
+
const uint8_t MITSUBISHI_BYTE01 = 0xCB;
|
47
|
+
const uint8_t MITSUBISHI_BYTE02 = 0x26;
|
48
|
+
const uint8_t MITSUBISHI_BYTE03 = 0x01;
|
49
|
+
const uint8_t MITSUBISHI_BYTE04 = 0x00;
|
50
|
+
const uint8_t MITSUBISHI_BYTE13 = 0x00;
|
51
|
+
const uint8_t MITSUBISHI_BYTE16 = 0x00;
|
52
52
|
|
53
53
|
climate::ClimateTraits MitsubishiClimate::traits() {
|
54
54
|
auto traits = climate::ClimateTraits();
|
@@ -53,14 +53,15 @@ void SourceSpeaker::dump_config() {
|
|
53
53
|
}
|
54
54
|
|
55
55
|
void SourceSpeaker::setup() {
|
56
|
-
this->parent_->get_output_speaker()->add_audio_output_callback(
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
56
|
+
this->parent_->get_output_speaker()->add_audio_output_callback([this](uint32_t new_frames, int64_t write_timestamp) {
|
57
|
+
// The SourceSpeaker may not have included any audio in the mixed output, so verify there were pending frames
|
58
|
+
uint32_t speakers_playback_frames = std::min(new_frames, this->pending_playback_frames_);
|
59
|
+
this->pending_playback_frames_ -= speakers_playback_frames;
|
60
|
+
|
61
|
+
if (speakers_playback_frames > 0) {
|
62
|
+
this->audio_output_callback_(speakers_playback_frames, write_timestamp);
|
63
|
+
}
|
64
|
+
});
|
64
65
|
}
|
65
66
|
|
66
67
|
void SourceSpeaker::loop() {
|
@@ -153,6 +154,7 @@ esp_err_t SourceSpeaker::start_() {
|
|
153
154
|
}
|
154
155
|
}
|
155
156
|
|
157
|
+
this->pending_playback_frames_ = 0; // reset
|
156
158
|
return this->parent_->start(this->audio_stream_info_);
|
157
159
|
}
|
158
160
|
|
@@ -542,11 +544,7 @@ void MixerSpeaker::audio_mixer_task(void *params) {
|
|
542
544
|
|
543
545
|
// Update source speaker buffer length
|
544
546
|
transfer_buffers_with_data[0]->decrease_buffer_length(active_stream_info.frames_to_bytes(frames_to_mix));
|
545
|
-
speakers_with_data[0]->
|
546
|
-
|
547
|
-
// Add new audio duration to the source speaker pending playback
|
548
|
-
speakers_with_data[0]->pending_playback_ms_ +=
|
549
|
-
active_stream_info.frames_to_milliseconds_with_remainder(&speakers_with_data[0]->accumulated_frames_read_);
|
547
|
+
speakers_with_data[0]->pending_playback_frames_ += frames_to_mix;
|
550
548
|
|
551
549
|
// Update output transfer buffer length
|
552
550
|
output_transfer_buffer->increase_buffer_length(
|
@@ -586,10 +584,6 @@ void MixerSpeaker::audio_mixer_task(void *params) {
|
|
586
584
|
reinterpret_cast<int16_t *>(output_transfer_buffer->get_buffer_end()),
|
587
585
|
this_mixer->audio_stream_info_.value(), frames_to_mix);
|
588
586
|
|
589
|
-
speakers_with_data[i]->pending_playback_ms_ +=
|
590
|
-
speakers_with_data[i]->get_audio_stream_info().frames_to_milliseconds_with_remainder(
|
591
|
-
&speakers_with_data[i]->accumulated_frames_read_);
|
592
|
-
|
593
587
|
if (i != transfer_buffers_with_data.size() - 1) {
|
594
588
|
// Need to mix more streams together, point primary buffer and stream info to the already mixed output
|
595
589
|
primary_buffer = reinterpret_cast<int16_t *>(output_transfer_buffer->get_buffer_end());
|
@@ -601,11 +595,7 @@ void MixerSpeaker::audio_mixer_task(void *params) {
|
|
601
595
|
for (int i = 0; i < transfer_buffers_with_data.size(); ++i) {
|
602
596
|
transfer_buffers_with_data[i]->decrease_buffer_length(
|
603
597
|
speakers_with_data[i]->get_audio_stream_info().frames_to_bytes(frames_to_mix));
|
604
|
-
speakers_with_data[i]->
|
605
|
-
|
606
|
-
speakers_with_data[i]->pending_playback_ms_ +=
|
607
|
-
speakers_with_data[i]->get_audio_stream_info().frames_to_milliseconds_with_remainder(
|
608
|
-
&speakers_with_data[i]->accumulated_frames_read_);
|
598
|
+
speakers_with_data[i]->pending_playback_frames_ += frames_to_mix;
|
609
599
|
}
|
610
600
|
|
611
601
|
// Update output transfer buffer length
|
@@ -114,9 +114,7 @@ class SourceSpeaker : public speaker::Speaker, public Component {
|
|
114
114
|
uint32_t ducking_transition_samples_remaining_{0};
|
115
115
|
uint32_t samples_per_ducking_step_{0};
|
116
116
|
|
117
|
-
uint32_t
|
118
|
-
|
119
|
-
uint32_t pending_playback_ms_{0};
|
117
|
+
uint32_t pending_playback_frames_{0};
|
120
118
|
};
|
121
119
|
|
122
120
|
class MixerSpeaker : public Component {
|
@@ -63,6 +63,11 @@ def _validate(config):
|
|
63
63
|
raise cv.Invalid(
|
64
64
|
f"{axis}: {CONF_RESOLUTION} cannot be {res} with {CONF_TEMPERATURE_COMPENSATION} enabled"
|
65
65
|
)
|
66
|
+
if config[CONF_HALLCONF] == 0xC:
|
67
|
+
if (config[CONF_OVERSAMPLING], config[CONF_FILTER]) in [(0, 0), (1, 0), (0, 1)]:
|
68
|
+
raise cv.Invalid(
|
69
|
+
f"{CONF_OVERSAMPLING}=={config[CONF_OVERSAMPLING]} and {CONF_FILTER}=={config[CONF_FILTER]} not allowed with {CONF_HALLCONF}=={config[CONF_HALLCONF]:#02x}"
|
70
|
+
)
|
66
71
|
return config
|
67
72
|
|
68
73
|
|