ESPHome 2023.4.0 - 19th April 2023
==================================

.. seo::
    :description: Changelog for ESPHome 2023.4.0.
    :image: /_static/changelog-2023.4.0.png
    :author: Jesse Hills
    :author_twitter: @jesserockz

.. imgtable::
    :columns: 3

    Voice Assistant, components/voice_assistant, voice-assistant.svg, dark-invert
    Microphone Core, components/microphone/index, microphone.svg, dark-invert
    I2S Microphone, components/microphone/i2s_audio, i2s_audio.svg
    MMC5603, components/sensor/mmc5603, mmc5603.jpg
    KSZ8081 Ethernet, components/ethernet, ethernet.svg, dark-invert


Voice Assistant
---------------

This year is the Year of the Voice for Home Assistant, and ESPHome is charging ahead with this in mind.
We've added a new :doc:`/components/voice_assistant` component that allows you to use ESPHome devices as an input
for `assist <https://www.home-assistant.io/voice_control/>`__ in Home Assistant **2023.5 or later**.

With this also comes preliminary :doc:`microphone </components/microphone/index>` support, which has been built in a way that multiple
components, like ``voice_assistant`` can request start / stop of the microphone and get the data. We
hope this leads to more interesting use cases for the microphone in the future.

Home Assistant is hosting a live stream all about the Year of the Voice - Chapter 2.

.. raw:: html

    <iframe width="560" height="315" src="https://www.youtube-nocookie.com/embed/Tk-pnm7FY7c"
            title="YouTube video player" frameborder="0"
            allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture"
            allowfullscreen>
    </iframe>


Keith joins Nabu Casa
---------------------

Nabu Casa is pleased to announce that long time contributor Keith Burzinski (:ghuser:`kbx81`) is joining the
team as a full time developer to help out on ESPHome. Keith created the :doc:`/components/sprinkler`,
:doc:`/components/climate/thermostat`, a bunch of the ``ssd`` display components and a few other components
as well as fixing many bug along the way. I expect his house climate and garden area are kept well in line.

Looking forward to working with you Keith.

Release 2023.4.1 - April 24
---------------------------

- fix flip_x :esphomepr:`4727` by :ghuser:`ssieb`
- Use proper schema for delta filter :esphomepr:`4723` by :ghuser:`jesserockz`

Release 2023.4.2 - April 27
---------------------------

- I2c scan recovery reset fix :esphomepr:`4724` by :ghuser:`gcopeland`
- Debug component doesn't work on RP2040 :esphomepr:`4728` by :ghuser:`HeMan`
- Only request VA port from first client that is subscribed :esphomepr:`4747` by :ghuser:`jesserockz`
- Don't allow fingerprint_grow enroll cancellation when no enrollment started :esphomepr:`4745` by :ghuser:`itpeters`

Release 2023.4.3 - May 2
------------------------

- Fix sprinkler switch restore_mode :esphomepr:`4756` by :ghuser:`kbx81`
- Fix i2s media player on devices with no internal DAC :esphomepr:`4768` by :ghuser:`jesserockz`

Release 2023.4.4 - May 4
------------------------

- Fixes for Arduino 2.7.4 (for FastLED) :esphomepr:`4777` by :ghuser:`timn`

Breaking Changes
----------------

I²S Media Player
^^^^^^^^^^^^^^^^

With the introduction of the :doc:`/components/microphone/i2s_audio`, the media player platform has some
required breaking changes to the YAML configuration. This involves moving the ``i2s_lrclk_pin`` and
``i2s_bclk_pin`` to a new :doc:`/components/i2s_audio` component.

.. code-block:: yaml

    # Before
    media_player:
      - platform: i2s_audio
        name: ESPHome I2S Media Player
        dac_type: external
        i2s_lrclk_pin: GPIO33
        i2s_bclk_pin: GPIO19
        i2s_dout_pin: GPIO22
        mode: mono

    # After
    i2s_audio:
      i2s_lrclk_pin: GPIO33
      i2s_bclk_pin: GPIO19

    media_player:
      - platform: i2s_audio
        name: ESPHome I2S Media Player
        dac_type: external
        i2s_dout_pin: GPIO22
        mode: mono

Default restore mode for Switches, Fans and Lights
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

The default ``restore_mode`` for switches, fans and lights has been changed
from ``RESTORE_DEFAULT_OFF`` to ``ALWAYS_OFF`` with the intention that restoring values
from flash should be manually specified by a user if desired in their YAML configuration.

Number ``step``
^^^^^^^^^^^^^^^

The ``number`` components have always internally set a ``step`` required in config,
but allowed it to be not specified at all. This caused issues on the Home Assistant side
of things. This is only a breaking change for external components that have a ``number`` platform.

UART ids
^^^^^^^^

Due to ``uart0`` / ``uart1`` / ``uart2`` being defined in some of the platform code ESPHome uses,
ESPHome will now disallow these ids from being used in the config. You can simply change them to
``uart_0`` to continue using.

Full list of changes
--------------------

New Components
^^^^^^^^^^^^^^

- Added in mmc5603 code :esphomepr:`4175` by :ghuser:`benhoff` (new-integration)
- Add push to talk voice assistant :esphomepr:`4648` by :ghuser:`jesserockz` (new-integration)

Breaking Changes
^^^^^^^^^^^^^^^^

- Disallow uart0/1/2 as ids in config :esphomepr:`4446` by :ghuser:`jesserockz` (breaking-change)
- Require step to be set when calling register_number :esphomepr:`4622` by :ghuser:`jesserockz` (breaking-change)
- Fix restore :esphomepr:`4655` by :ghuser:`spacemanspiff2007` (breaking-change)

Beta Changes
^^^^^^^^^^^^

- debug component, allow without debug logging :esphomepr:`4685` by :ghuser:`jesserockz`
- Fixed dns2 for ethernet :esphomepr:`4698` by :ghuser:`HeMan`
- Add timeout to i2c write error logs :esphomepr:`4697` by :ghuser:`Szewcson`
- Add event triggers to voice_assistant :esphomepr:`4699` by :ghuser:`jesserockz`
- Call on_error if no api client connected that handles voice :esphomepr:`4709` by :ghuser:`jesserockz`
- Add ethernet powerdown (fixes esphome/issues#4420) :esphomepr:`4706` by :ghuser:`tracestep`
- Bump arduino platform version to 5.3.0 :esphomepr:`4713` by :ghuser:`jesserockz`

All changes
^^^^^^^^^^^

- Mark unique_id() virtual method as deprecated :esphomepr:`4538` by :ghuser:`oxan`
- Drop deprecated entity property base methods :esphomepr:`4539` by :ghuser:`oxan`
- Format test files :esphomepr:`4541` by :ghuser:`jesserockz`
- EntityBase: Icon string can stay in flash. :esphomepr:`4566` by :ghuser:`Fabian-Schmidt`
- Update the delta filter to be able to take a percentage change :esphomepr:`4391` by :ghuser:`TrentHouliston`
- Added missing PM_1_0 and PM_10_0 for PMS5003T and PMS5003ST  :esphomepr:`4560` by :ghuser:`genestealer`
- Add an option to force SPI into software mode :esphomepr:`4556` by :ghuser:`wupeka`
- allow using a binary output for the status led :esphomepr:`4532` by :ghuser:`ssieb`
- Add option flip_x :esphomepr:`4555` by :ghuser:`rafal83`
- Bump aioesphomeapi from 13.5.0 to 13.5.1 :esphomepr:`4572` by :ghuser:`dependabot[bot]`
- Verbose output of define. :esphomepr:`4576` by :ghuser:`Fabian-Schmidt`
- Add support for ESP32 CAM 3MP and 5MP resolutions and arbitrary camera clock. :esphomepr:`4580` by :ghuser:`peterhalicky`
- Add a simple 'skip_initial' filter :esphomepr:`4582` by :ghuser:`sybrenstuvel`
- Fix outdated filter string in platformio_api :esphomepr:`4587` by :ghuser:`LordMike`
- Split test3.yaml :esphomepr:`4591` by :ghuser:`jesserockz`
- Disallow uart0/1/2 as ids in config :esphomepr:`4446` by :ghuser:`jesserockz` (breaking-change)
- Upgrade clang-format to v13 :esphomepr:`4535` by :ghuser:`oxan`
- B/W support for GooDisplay GDEY029T94 (as used on Adafruit MagTag) :esphomepr:`4222` by :ghuser:`AaronJackson`
- Fix negative sqrt root in ct_clamp_sensor.cpp :esphomepr:`4236` by :ghuser:`jerome992`
- Wrap ipv6 code a bit more :esphomepr:`4574` by :ghuser:`jesserockz`
- Remove EntityBase from sprinkler :esphomepr:`4606` by :ghuser:`jesserockz`
- Fix wrong port multiplexer name in dump GPIO function of sx1509 :esphomepr:`4592` by :ghuser:`skaldo`
- Bump zeroconf from 0.47.3 to 0.47.4 :esphomepr:`4597` by :ghuser:`dependabot[bot]`
- Bump pytest-asyncio from 0.20.3 to 0.21.0 :esphomepr:`4599` by :ghuser:`dependabot[bot]`
- Limit range on filter time period for remote_receiver :esphomepr:`4604` by :ghuser:`RoboMagus`
- add select_schema to select component :esphomepr:`4545` by :ghuser:`regevbr`
- Add ability to clear the gatt cache :esphomepr:`4621` by :ghuser:`bdraco`
- Bump actions/stale from 7 to 8 :esphomepr:`4615` by :ghuser:`dependabot[bot]`
- Require step to be set when calling register_number :esphomepr:`4622` by :ghuser:`jesserockz` (breaking-change)
- Lower range of CONF_FREQUENCY :esphomepr:`4619` by :ghuser:`berendhaan`
- Allow entity names to be set to None :esphomepr:`4607` by :ghuser:`jesserockz`
- Fix platform restriction for bme680_bsec :esphomepr:`4616` by :ghuser:`jesserockz`
- Fix EzoCommandType enum :esphomepr:`4593` by :ghuser:`alfredopironti`
- `EntityBase` Name can stay in flash. :esphomepr:`4594` by :ghuser:`Fabian-Schmidt`
- feat: Add support to unsubscribe from BLE advertisements :esphomepr:`4620` by :ghuser:`richardhopton`
- EntityBase: Move ObjectId to Flash  :esphomepr:`4569` by :ghuser:`Fabian-Schmidt`
- Add workflow to sync device classes with HA dev :esphomepr:`4629` by :ghuser:`jesserockz`
- Synchronise Device Classes from Home Assistant :esphomepr:`4633` by :ghuser:`github-actions[bot]`
- Remove AUTO_LOAD from as3935 :esphomepr:`4630` by :ghuser:`jesserockz`
- Add ifdef to new bt proxy unsubscribe :esphomepr:`4634` by :ghuser:`jesserockz`
- add bluetooth mac address in dump_config() :esphomepr:`4628` by :ghuser:`felixlungu`
- Binary map bugfixes :esphomepr:`4636` by :ghuser:`kahrendt`
- entity_base avoid padding bytes. :esphomepr:`4637` by :ghuser:`Fabian-Schmidt`
- Avoid sensor padding. :esphomepr:`4638` by :ghuser:`Fabian-Schmidt`
- Support advanced UART customization :esphomepr:`4465` by :ghuser:`Fabian-Schmidt`
- Log calibration results at level INFO :esphomepr:`4240` by :ghuser:`Duckle29`
- Number step not optional :esphomepr:`4649` by :ghuser:`RoboMagus`
- VSCode / devcontainer updates :esphomepr:`4647` by :ghuser:`jesserockz`
- Retry PN532_COMMAND_VERSION_DATA on setup() (fixes esphome/issues#3823) :esphomepr:`4651` by :ghuser:`tracestep`
- Bump pylint from 2.16.4 to 2.17.2 :esphomepr:`4650` by :ghuser:`dependabot[bot]`
- Bump black from 23.1.0 to 23.3.0 :esphomepr:`4635` by :ghuser:`dependabot[bot]`
- Added in mmc5603 code :esphomepr:`4175` by :ghuser:`benhoff` (new-integration)
- fix compilation with latest esp-idf :esphomepr:`4671` by :ghuser:`Mic92`
- Bump zeroconf from 0.47.4 to 0.56.0 :esphomepr:`4674` by :ghuser:`dependabot[bot]`
- Bump pytest from 7.2.2 to 7.3.0 :esphomepr:`4673` by :ghuser:`dependabot[bot]`
- Add push to talk voice assistant :esphomepr:`4648` by :ghuser:`jesserockz` (new-integration)
- Fix ESP32 SPI hardware assignment in Arduino fw :esphomepr:`4669` by :ghuser:`kbx81`
- Fix some NFC/PN532 crashes :esphomepr:`4678` by :ghuser:`kbx81`
- Add support for SSD1306 72x40 displays :esphomepr:`4659` by :ghuser:`johnsto`
- Fix pin schema for i2s microphone :esphomepr:`4680` by :ghuser:`jesserockz`
- Fix BedJet setup priority [fixes esphome/issues#3807] :esphomepr:`4677` by :ghuser:`jhansche`
- Add always trigger stop :esphomepr:`4249` by :ghuser:`X-Ryl669`
- Fix graph limits for negative values and other corner cases :esphomepr:`4253` by :ghuser:`unhold`
- Fix cut-off on 2.13" waveshare/ttgo epaper displays :esphomepr:`4255` by :ghuser:`unhold`
- [Ethernet] Add PHY KSZ8081 support :esphomepr:`4668` by :ghuser:`Fabian-Schmidt`
- Fix restore :esphomepr:`4655` by :ghuser:`spacemanspiff2007` (breaking-change)
- debug component, allow without debug logging :esphomepr:`4685` by :ghuser:`jesserockz`
- Fixed dns2 for ethernet :esphomepr:`4698` by :ghuser:`HeMan`
- Add timeout to i2c write error logs :esphomepr:`4697` by :ghuser:`Szewcson`
- Add event triggers to voice_assistant :esphomepr:`4699` by :ghuser:`jesserockz`
- Call on_error if no api client connected that handles voice :esphomepr:`4709` by :ghuser:`jesserockz`
- Add ethernet powerdown (fixes esphome/issues#4420) :esphomepr:`4706` by :ghuser:`tracestep`
- Bump arduino platform version to 5.3.0 :esphomepr:`4713` by :ghuser:`jesserockz`

Past Changelogs
---------------

- :doc:`2023.3.0`
- :doc:`2023.2.0`
- :doc:`2022.12.0`
- :doc:`2022.11.0`
- :doc:`2022.10.0`
- :doc:`2022.9.0`
- :doc:`2022.8.0`
- :doc:`2022.6.0`
- :doc:`2022.5.0`
- :doc:`2022.4.0`
- :doc:`2022.3.0`
- :doc:`2022.2.0`
- :doc:`2022.1.0`
- :doc:`2021.12.0`
- :doc:`2021.11.0`
- :doc:`2021.10.0`
- :doc:`2021.9.0`
- :doc:`2021.8.0`
- :doc:`v1.20.0`
- :doc:`v1.19.0`
- :doc:`v1.18.0`
- :doc:`v1.17.0`
- :doc:`v1.16.0`
- :doc:`v1.15.0`
- :doc:`v1.14.0`
- :doc:`v1.13.0`
- :doc:`v1.12.0`
- :doc:`v1.11.0`
- :doc:`v1.10.0`
- :doc:`v1.9.0`
- :doc:`v1.8.0`
- :doc:`v1.7.0`
