ESPHome 2022.12.0 - 14th December 2022
======================================

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

.. imgtable::
    :columns: 3

    ESP32, components/esp32, esp32.svg
    Bluetooth Proxy, components/bluetooth_proxy, bluetooth.svg, dark-invert
    SN74HC165 I/O Expander, components/sn74hc165, sn74hc595.jpg

The festive holidays are coming early and bring you an ESPHome release 1 week earlier than normal.
This release does not bring a bunch of new components like most releases, but instead the focus
has been on upgrading the core Arduino and ESP-IDF versions used for the ESP32 based devices.

Ethernet
--------

Because these core upgrade have aligned the version of ESP-IDF under the hood, ``ethernet``
is now able to be used when specifying ESP-IDF as your framework of choice.

Bluetooth Proxy
---------------

The Bluetooth Proxy has also had a whole lot of work done by :ghuser:`bdraco` under the hood to
improve the stability, speed and reliability between Home Assistant and the bluetooth devices
that get proxied through. Along with some of these bluetooth changes is a change to the
underlying flash partition table that ESPHome uses. OTA will work, but to fully take advantage
of the performance increases for bluetooth, it is best to at least one serial flash with ESPHome
2022.12.0 or later.

Container images
----------------

.. note::

    This breaking change only affects you if you use docker containers directly and specify the suffix
    in your image.

2022.12.6 changes the way the container images are built and published. This is due to something
breaking somewhere that we could not explain. It has to do with the ``docker manifest`` command
which has been around for a while but always been marked as ``experimental`` so we cannot really
complain.

From now on there will be no builds with tags for the ``-armv7`` / ``-amd64`` / ``aarch64`` suffixes,
but the main images (``ghcr.io/esphome/esphome:<version>``) will be multi-arch capable and work on the
3 supported architectures.

Release 2022.12.1 - December 16
-------------------------------

- Support non-multiarch toolchains on 32-bit ARM :esphomepr:`4191` by :ghuser:`agners`
- Mark ESP32-S2 as not having Bluetooth :esphomepr:`4194` by :ghuser:`jesserockz`
- Fix i2s_audio media_player compiling for esp32-s2 :esphomepr:`4195` by :ghuser:`jesserockz`

Release 2022.12.2 - December 20
-------------------------------

- Fix import_full_config for adoption configs :esphomepr:`4197` by :ghuser:`jesserockz`
- Handle zero padding anywhere in the combined adv data :esphomepr:`4208` by :ghuser:`bdraco`

Release 2022.12.3 - December 20
-------------------------------

- Fix ESP32 GPIO when using INPUT PULLUP mode :esphomepr:`4213` by :ghuser:`jesserockz`

Release 2022.12.4 - January 20
------------------------------

- Fix gpio pin mode for ISR pins :esphomepr:`4216` by :ghuser:`jesserockz`
- Always send the MTU request for BLE v3 cached connections :esphomepr:`4322` by :ghuser:`bdraco`

Release 2022.12.5 - January 23
------------------------------

- Bump nano version in lint docker image :esphomepr:`4218` by :ghuser:`jesserockz`

Release 2022.12.6 - January 24
------------------------------

- Move from docker manifest command to buildx with platforms :esphomepr:`4320` by :ghuser:`jesserockz` (breaking-change)

Release 2022.12.7 - January 26
------------------------------

- Add "content" to deploy-ha-addon-repo dispatch :esphomepr:`4349` by :ghuser:`ludeeus`
- fix stepper jump back with small steps :esphomepr:`4339` by :ghuser:`0xDRRB`
- rename esp32 CAN to TWAI, so it compiles again :esphomepr:`4334` by :ghuser:`designer2k2`
- Fix BME280 initialization before wifi setup :esphomepr:`4190` by :ghuser:`pxe-la`
- Add a soft reset in setup() for bmp280 :esphomepr:`4329` by :ghuser:`melyux`

Release 2022.12.8 - January 27
------------------------------

- Upgrades add-on base image to 6.2.0 :esphomepr:`4310` by :ghuser:`frenck`
- Migrate old-style S6 scripts to s6-rc.d :esphomepr:`4311` by :ghuser:`frenck`
- Refactor NGINX configuration of Home Assistant Add-on :esphomepr:`4312` by :ghuser:`frenck`
- Add Home Assistant integration discovery :esphomepr:`4328` by :ghuser:`frenck`

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

New Features
^^^^^^^^^^^^

- PID Climate - deadband and output sampling :esphomepr:`3254` by :ghuser:`patrickcollins12` (new-feature)

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

- Add sn74hc165 input shift register :esphomepr:`4151` by :ghuser:`jesserockz` (new-integration)

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

- Update esp32 arduino and platform versions :esphomepr:`3564` by :ghuser:`jesserockz` (notable-change) (breaking-change)

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

- Fix ble parsing with zero padded advertisements :esphomepr:`4162` by :ghuser:`jesserockz`
- Increase watchdog timeout when starting OTA :esphomepr:`4172` by :ghuser:`jesserockz`
- Bump esphome-dashboard to 20221213.0 :esphomepr:`4176` by :ghuser:`jesserockz`
- Remove internal pin restriction from cd74hc4067 :esphomepr:`4179` by :ghuser:`jesserockz`
- Speed up bluetooth proxy connections when using esp-idf :esphomepr:`4171` by :ghuser:`bdraco` (notable-change)
- Remove warnings when falling through switch cases on purpose :esphomepr:`4181` by :ghuser:`jesserockz`
- Revert camera config change for esp-idf :esphomepr:`4182` by :ghuser:`jesserockz`

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

- Update esp32 arduino and platform versions :esphomepr:`3564` by :ghuser:`jesserockz` (notable-change) (breaking-change)
- Update ESP-IDF and platform version :esphomepr:`3565` by :ghuser:`jesserockz` (notable-change)
- Speed up bluetooth proxy connections when using esp-idf :esphomepr:`4171` by :ghuser:`bdraco` (notable-change)

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

- Bump colorama from 0.4.5 to 0.4.6 :esphomepr:`4010` by :ghuser:`dependabot[bot]`
- Bump frenck/action-yamllint from 1.3.0 to 1.3.1 :esphomepr:`4011` by :ghuser:`dependabot[bot]`
- add two new icons :esphomepr:`3963` by :ghuser:`nagyrobi`
- Move CONF_INTERRUPT_PIN to const.py :esphomepr:`4014` by :ghuser:`jesserockz`
- Bump pyupgrade from 3.2.0 to 3.2.2 :esphomepr:`4017` by :ghuser:`dependabot[bot]`
- Add reset_reason text sensor to debug component :esphomepr:`3814` by :ghuser:`kuba2k2`
- remove unused variable last_save in total_daily_energy :esphomepr:`4039` by :ghuser:`bkaufx`
- Bump base image versions to latest :esphomepr:`4016` by :ghuser:`jesserockz`
- Add number device class support :esphomepr:`4042` by :ghuser:`frenck`
- Update esp32 arduino and platform versions :esphomepr:`3564` by :ghuser:`jesserockz` (notable-change) (breaking-change)
- Update esp32 boards list :esphomepr:`4056` by :ghuser:`jesserockz`
- Add Lolin S2 Mini board :esphomepr:`3264` by :ghuser:`jhamhader`
- Add pin aliases for upesy boards :esphomepr:`3794` by :ghuser:`uPesy`
- Bump pylint from 2.15.5 to 2.15.6 :esphomepr:`4058` by :ghuser:`dependabot[bot]`
- fix display_menu recursive schema gen :esphomepr:`4045` by :ghuser:`glmnet`
- Remove manual handling of ethernet power pin :esphomepr:`4062` by :ghuser:`jesserockz`
- Bump aioesphomeapi from 11.4.3 to 12.0.0 :esphomepr:`4070` by :ghuser:`dependabot[bot]`
- Update ESP-IDF and platform version :esphomepr:`3565` by :ghuser:`jesserockz` (notable-change)
- Always use brackets around single log macros :esphomepr:`4072` by :ghuser:`jesserockz`
- Midea ir templatable code :esphomepr:`4053` by :ghuser:`reidprojects`
- Boards: Adafruit QT Py ESP32 Pico/C3/S2 :esphomepr:`4064` by :ghuser:`jenscski`
- Dont set esp32 pin drive strength unless pin is set for output :esphomepr:`4075` by :ghuser:`jesserockz`
- Don't allow debug component if you don't have at least debug logging level :esphomepr:`4076` by :ghuser:`jesserockz`
- Remove a bunch of unnecessary pylint disabling :esphomepr:`4079` by :ghuser:`jesserockz`
- Update ESP32-audioI2S library :esphomepr:`4073` by :ghuser:`jesserockz`
- Add vector includes :esphomepr:`4080` by :ghuser:`jesserockz`
- Allow manually specifying binary file to OTA :esphomepr:`4054` by :ghuser:`jesserockz`
- Fix regressed 'esphome run' :esphomepr:`4094` by :ghuser:`mmakaay`
- Make parse_characteristics and parse_descriptors lazy to reduce memory pressure :esphomepr:`4063` by :ghuser:`bdraco`
- Speed up BLE connections :esphomepr:`4093` by :ghuser:`bdraco`
- Align BLE service logging :esphomepr:`4095` by :ghuser:`bdraco`
- Suppress logging unhandled ESP_BLE_AD_TYPE_INT_RANGE :esphomepr:`4096` by :ghuser:`bdraco`
- Make sure all BLE address strings are uppercase :esphomepr:`4097` by :ghuser:`bdraco`
- Add logging for BLE connection slots :esphomepr:`4098` by :ghuser:`bdraco`
- Fix registering for gatt notify when characteristic only support indicate :esphomepr:`4092` by :ghuser:`bdraco`
- Fix descriptors not being deleted :esphomepr:`4104` by :ghuser:`bdraco`
- Improve reliability of bluetooth active connections :esphomepr:`4049` by :ghuser:`bdraco`
- Always use generated api options from aioesphomeapi :esphomepr:`4116` by :ghuser:`jesserockz`
- Fix bluetooth_gatt_write_descriptor never getting a response :esphomepr:`4112` by :ghuser:`bdraco`
- Combine the scanner failure check so we only stop the scanner once :esphomepr:`4111` by :ghuser:`bdraco`
- Reduce memory needed to send the services list :esphomepr:`4110` by :ghuser:`bdraco`
- Avoid parsing characteristics and descriptors to reduce memory pressure :esphomepr:`4109` by :ghuser:`bdraco`
- Send device address type alongside ble advertisements :esphomepr:`4115` by :ghuser:`jesserockz`
- Remove uuid lookups from BLE read/write/notify characteristics :esphomepr:`4102` by :ghuser:`bdraco`
- Active BLE connection v3 :esphomepr:`4113` by :ghuser:`bdraco`
- preprocess out proto_enum_to_string if not needed :esphomepr:`4119` by :ghuser:`jesserockz`
- Bump aioesphomeapi from 12.0.0 to 12.2.0 :esphomepr:`4120` by :ghuser:`dependabot[bot]`
- Avoid parsing services with v3 connections without cache :esphomepr:`4117` by :ghuser:`bdraco`
- FIX: Unnecessary flash writes by ModbusSwitch component :esphomepr:`3648` by :ghuser:`jpeletier`
- Speed up uuid parsing when fetching the service list :esphomepr:`4121` by :ghuser:`bdraco`
- modbus_switch: honor switch:restore_mode :esphomepr:`4122` by :ghuser:`jpeletier`
- PID Climate - deadband and output sampling :esphomepr:`3254` by :ghuser:`patrickcollins12` (new-feature)
- Allow auto setting of ble client id if there is only 1 in config :esphomepr:`4125` by :ghuser:`jesserockz`
- fix RESTORE_INVERTED switch:restore_mode :esphomepr:`4129` by :ghuser:`jpeletier`
- Bump pylint from 2.15.6 to 2.15.7 :esphomepr:`4127` by :ghuser:`dependabot[bot]`
- Allow global setting of compile process limit :esphomepr:`4081` by :ghuser:`jesserockz`
- Bump flake8 from 5.0.4 to 6.0.0 :esphomepr:`4084` by :ghuser:`dependabot[bot]`
- Bump arduino pico and update wifi methods :esphomepr:`4144` by :ghuser:`jesserockz`
- Bump aioesphomeapi from 12.2.0 to 12.2.1 :esphomepr:`4133` by :ghuser:`dependabot[bot]`
- Bump esptool from 3.3.1 to 4.4 :esphomepr:`4071` by :ghuser:`dependabot[bot]`
- Fix mismatched flake8 version in pre-commit :esphomepr:`4145` by :ghuser:`jesserockz`
- Detect BLE stack unrecoverable state :esphomepr:`4128` by :ghuser:`bdraco`
- Bump pylint from 2.15.7 to 2.15.8 :esphomepr:`4148` by :ghuser:`dependabot[bot]`
- Fix crash with bluetooth tracker and esp-idf :esphomepr:`4140` by :ghuser:`bdraco`
- Use ENTITY_CATEGORY_CONFIG for sprinkler config switches. :esphomepr:`4141` by :ghuser:`schinckel`
- fix switch initialization :esphomepr:`4153` by :ghuser:`ssieb`
- Change 4 chip limit on sn74hc595 to 256 :esphomepr:`4108` by :ghuser:`jesserockz`
- Add reports fahrenheit to tuya climate :esphomepr:`4032` by :ghuser:`jesserockz`
- Allow dashboard import to pull complete file from github :esphomepr:`3982` by :ghuser:`jesserockz`
- Invalid config for waveshare models with no full_update_every :esphomepr:`4066` by :ghuser:`Nizzle`
- Add sn74hc165 input shift register :esphomepr:`4151` by :ghuser:`jesserockz` (new-integration)
- Fixed deep sleep for ESP32C3 :esphomepr:`4143` by :ghuser:`pistifonok`
- ESP32 IDF: Override toolchain-esp32ulp with espressifs own published version :esphomepr:`4155` by :ghuser:`jesserockz`
- Add API for dashboard to get boards list :esphomepr:`4154` by :ghuser:`jesserockz`
- Bump pytest-asyncio from 0.20.1 to 0.20.2 :esphomepr:`4019` by :ghuser:`dependabot[bot]`
- Bump pyupgrade from 3.2.2 to 3.3.0 :esphomepr:`4137` by :ghuser:`dependabot[bot]`
- Bump dessant/lock-threads from 3 to 4 :esphomepr:`4150` by :ghuser:`dependabot[bot]`
- Bump aioesphomeapi from 12.2.1 to 13.0.1 :esphomepr:`4149` by :ghuser:`dependabot[bot]`
- Bump esphome-dashboard to 20221207.0 :esphomepr:`4156` by :ghuser:`jesserockz`
- Fix ble parsing with zero padded advertisements :esphomepr:`4162` by :ghuser:`jesserockz`
- Increase watchdog timeout when starting OTA :esphomepr:`4172` by :ghuser:`jesserockz`
- Bump esphome-dashboard to 20221213.0 :esphomepr:`4176` by :ghuser:`jesserockz`
- Remove internal pin restriction from cd74hc4067 :esphomepr:`4179` by :ghuser:`jesserockz`
- Speed up bluetooth proxy connections when using esp-idf :esphomepr:`4171` by :ghuser:`bdraco` (notable-change)
- Remove warnings when falling through switch cases on purpose :esphomepr:`4181` by :ghuser:`jesserockz`
- Revert camera config change for esp-idf :esphomepr:`4182` by :ghuser:`jesserockz`

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

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