ESPHome 2022.6.0 - 15th June 2022
=================================

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

.. imgtable::
    :columns: 2

    Tuya Select, components/select/tuya, tuya.png
    SGP41, components/sensor/sgp4x, sgp40.jpg
    Media Player Core, components/media_player/index, folder-open.svg
    I2S Audio, components/media_player/i2s_audio, i2s_audio.svg


We are almost half way through 2022 already! My, how fast time flies when we
are having fun with ESPHome. This release is kind of small, but packs some big features.
There will be no 2022.7.0 (July) release next month as I (:ghuser:`jesserockz`) will be away
around that time. So lets hope we can make 2022.8.0 worth the wait.

🎶🎶🎶 Media Players
--------------------

ESPHome can now become a media player target for Home Assistant. This allows users to buy or build
ESP32 based speakers and place them around the house.

We made a small website showing you a few tested `Media Players <https://esphome.github.io/media-players>`_ and you can
install ESPHome directly to them via the browser using ESP Web Tools.

Join us in a live stream all about Audio in the Open Home!

When: Thursday, June 16, at 7pm UTC / 12pm PST / 9pm CET

.. raw:: html

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


Includes with vars
------------------

:ghuser:`jimtng` is a newcomer to ESPHome. While migrating everything from a certain other
firmware, they found that they had to duplicate lots of yaml configuration for their many devices.
Basically, they decided to upgrade the ``!include`` yaml "directive" to allow variables.

.. code-block:: yaml

    # device.yaml
    binary_sensor:
      - <<: !include
          file: bin-sensor.yaml
          vars:
            pin: GPIO1
            name: "Binary Sensor 1"
            switch: my_switch_1_id
            delay: 10s
      - <<: !include
          file: bin-sensor.yaml
          vars:
            pin: GPIO1
            name: "Binary Sensor 2"
            switch: my_switch_2_id
            delay: 60s

    # bin-sensor.yaml
    platform: gpio
    pin: ${pin}
    name: ${name}
    on_press:
      - switch.turn_on: ${switch}
      - delay: ${delay}
      - switch.turn_off: ${switch}

Now while this is probably not the best example, the variables act as ``substitutions``
and can be used anywhere in the underlying yaml file and can very much DRY out your configurations.

Release 2022.6.1 - June 18
--------------------------

- Setup the mute pin if configured :esphomepr:`3568` by :ghuser:`jesserockz`
- Bugfix for ExternalRAMAllocator copy constructor :esphomepr:`3571` by :ghuser:`bnw`
- Media Player: added triggers :esphomepr:`3576` by :ghuser:`dudanov`

Release 2022.6.2 - June 23
--------------------------

- Move gas mbus config option being a define to being a build flag :esphomepr:`3575` by :ghuser:`lkomurcu`
- Fix: Make MQTT over TLS actually work :esphomepr:`3580` by :ghuser:`ShellAddicted`
- Fix wrong type for voc_state*_ in sgp4x component :esphomepr:`3581` by :ghuser:`kahrendt`
- Media Player: added play_media action :esphomepr:`3579` by :ghuser:`dudanov`
- Fix 2 small issues in BLEClient :esphomepr:`3544` by :ghuser:`jhansche`

Release 2022.6.3 - August 8
---------------------------

- FIX: Modbus queue deduplicator deleting custom commands :esphomepr:`3650` by :ghuser:`jpeletier`
- Update inkbird_ibsth1_mini.cpp :esphomepr:`3664` by :ghuser:`ssieb`
- Add CO device class to binary_sensor :esphomepr:`3656` by :ghuser:`berg`
- Use application/json instead of text/json :esphomepr:`3671` by :ghuser:`ssieb`
- Use correct struct members. :esphomepr:`3672` by :ghuser:`ssieb`

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

TCS34725 integration time
^^^^^^^^^^^^^^^^^^^^^^^^^

The sampling settings for the TCS34725 have had a new option ``auto`` added and set as the default. This allows for better accuracy.
You are able to set it back to the previous default value by specifying ``integration_time: 2.4ms`` in your configuration.

SGP40 moved
^^^^^^^^^^^

While adding support for the SGP41 chip, the SGP40 was moved and they were both combined into a new ``sgp4x`` component.

MQTT fan speeds
^^^^^^^^^^^^^^^

:esphomepr:`3397` removes deprecated MQTT fan speed state and speed command topics.
These were replaced with speed level state and command topics in ESPHome 2021.10.0.

AC Dimmer
^^^^^^^^^

Due to an output power calculation the perceived power might vary slightly specially in the lower and upper regions.

DisplayBuffer
^^^^^^^^^^^^^

A new virtual method was added to the DisplayBuffer class for specifying the display type. This change only affects ``external_components``.
See :esphomepr:`3430` for more details.

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

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

- Add Tuya select :esphomepr:`3469` by :ghuser:`bearpawmaxim` (new-integration)
- Add support for SGP41 :esphomepr:`3382` by :ghuser:`martgras` (new-integration) (breaking-change)
- Implement Media Player and I2S Media player :esphomepr:`3487` by :ghuser:`jesserockz` (new-integration)

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

- Tcs34725 automatic sampling settings for improved dynamics and accuracy :esphomepr:`3258` by :ghuser:`swifty99` (breaking-change)
- Add support for SGP41 :esphomepr:`3382` by :ghuser:`martgras` (new-integration) (breaking-change)
- Remove deprecated fan speeds :esphomepr:`3397` by :ghuser:`kbickar` (breaking-change)
- Output a true RMS voltage % :esphomepr:`3494` by :ghuser:`josephdouce` (breaking-change)
- Add display_type property to DisplayBuffer :esphomepr:`3430` by :ghuser:`guillempages` (breaking-change)

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

- publish fan speed count for discovery :esphomepr:`3537` by :ghuser:`ssieb`
- Nextion brightness setting requires an assignment :esphomepr:`3533` by :ghuser:`nagyv`
- Implement media player volume actions :esphomepr:`3551` by :ghuser:`jesserockz`
- Fix compilation with ESP32-S3 :esphomepr:`3543` by :ghuser:`misery`
- Bm3xx: Fix typo :esphomepr:`3559` by :ghuser:`martgras`

Notable Changes
^^^^^^^^^^^^^^^

- Add variable substitutions for !include :esphomepr:`3510` by :ghuser:`jimtng` (notable-change)

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

- Tcs34725 automatic sampling settings for improved dynamics and accuracy :esphomepr:`3258` by :ghuser:`swifty99` (breaking-change)
- Remove duplicate convert_to_8bit_color function. :esphomepr:`2469` by :ghuser:`davet2001`
- Bump esptool from 3.3 to 3.3.1 :esphomepr:`3468` by :ghuser:`dependabot[bot]`
- Bump pylint from 2.13.8 to 2.13.9 :esphomepr:`3470` by :ghuser:`dependabot[bot]`
- Tuya status gpio support :esphomepr:`3466` by :ghuser:`bearpawmaxim`
- Add Tuya select :esphomepr:`3469` by :ghuser:`bearpawmaxim` (new-integration)
- MQTT cover: send state even if position is available :esphomepr:`3473` by :ghuser:`pyos`
- Ili9341 8bit indexed mode pt1 :esphomepr:`2490` by :ghuser:`davet2001`
- feat: esp32-camera add stream event :esphomepr:`3285` by :ghuser:`myml`
- Add support for SGP41 :esphomepr:`3382` by :ghuser:`martgras` (new-integration) (breaking-change)
- add support user-defined modbus functions :esphomepr:`3461` by :ghuser:`gazoodle`
- Remove deprecated fan speeds :esphomepr:`3397` by :ghuser:`kbickar` (breaking-change)
- Fix compile issues on windows :esphomepr:`3491` by :ghuser:`jesserockz`
- midea: New power_toggle action. Auto-use remote transmitter. :esphomepr:`3496` by :ghuser:`dudanov`
- Output a true RMS voltage % :esphomepr:`3494` by :ghuser:`josephdouce` (breaking-change)
- [scd4x] Fix not passing arguments to templatable value for perform_forced_calibration :esphomepr:`3495` by :ghuser:`Wumpf`
- Thermostat preset with modes :esphomepr:`3298` by :ghuser:`MrMDavidson`
- Allow Prometheus component to export internal components :esphomepr:`3508` by :ghuser:`jangrewe`
- [BedJet] Add configurable heating strategy :esphomepr:`3519` by :ghuser:`jhansche`
- Add variable substitutions for !include :esphomepr:`3510` by :ghuser:`jimtng` (notable-change)
- Change rain intensity sensor string :esphomepr:`3511` by :ghuser:`wtremmel`
- Implement Media Player and I2S Media player :esphomepr:`3487` by :ghuser:`jesserockz` (new-integration)
- Add mqtt.on_connect and mqtt.on_disconnect triggers :esphomepr:`3520` by :ghuser:`jimtng`
- Refactor clock syncing :esphomepr:`3503` by :ghuser:`jhansche`
- Added RC6 protocol support :esphomepr:`3514` by :ghuser:`Emrvb`
- Add display_type property to DisplayBuffer :esphomepr:`3430` by :ghuser:`guillempages` (breaking-change)
- Correct ADC auto-range for ESP32-S2 variant (13 bit adc) :esphomepr:`3158` by :ghuser:`CarlosGS`
- Suppress first rotary encoder event :esphomepr:`3532` by :ghuser:`mmakaay`
- Fix endless 'WiFi Unknown connection status 0' loop :esphomepr:`3530` by :ghuser:`mmakaay`
- support rotated ILI9341 (ILI9342) :esphomepr:`3526` by :ghuser:`ssieb`
- Fix sdp3x error checking :esphomepr:`3531` by :ghuser:`Azimath`
- Fix percentage validation for wrong data type input :esphomepr:`3524` by :ghuser:`mmakaay`
- Block Tuya light from reacting to dp changes if transitioning :esphomepr:`3076` by :ghuser:`VitaliyKurokhtin`
- Cleanup deprecated EntityBase::hash_base() :esphomepr:`3525` by :ghuser:`mmakaay`
- Fix bogus reading on no communication with MAX31865 :esphomepr:`3505` by :ghuser:`DAVe3283`
- Implement the media player actions :esphomepr:`3534` by :ghuser:`jesserockz`
- RG15 data is float/double, not int :esphomepr:`3512` by :ghuser:`wtremmel`
- publish fan speed count for discovery :esphomepr:`3537` by :ghuser:`ssieb`
- Nextion brightness setting requires an assignment :esphomepr:`3533` by :ghuser:`nagyv`
- Implement media player volume actions :esphomepr:`3551` by :ghuser:`jesserockz`
- Fix compilation with ESP32-S3 :esphomepr:`3543` by :ghuser:`misery`
- Bm3xx: Fix typo :esphomepr:`3559` by :ghuser:`martgras`

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

- :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`
