ESPHome 2021.12.0 - 11th December 2021
======================================

.. seo::
    :description: Changelog for ESPHome 2021.12.0.
    :image: /_static/changelog-2021.12.0.png
    :author: ESPHome
    :author_twitter: @esphome_

.. imgtable::
    :columns: 3

    Button Core, components/button/index, folder-open.svg, dark-invert
    Template Button, components/button/template, description.svg, dark-invert
    Restart Button, components/button/restart, restart.svg, dark-invert
    BLE Binary Output, components/output/ble_client, bluetooth.svg, dark-invert
    Tuya Text Sensor, components/text_sensor/tuya, tuya.png
    SDP800 Series, components/sensor/sdp3x, sdp31.jpg, Pressure


State of the Open Smart Home
----------------------------

Today is the `State of the Open Smart Home <https://www.home-assistant.io/state-of-the-open-home/>`__ hosted by Nabu Casa, Home Assistant & ESPHome
and we’ll be joined by our friends from WLED, Z-Wave JS, Stanford’s OVAL lab and Northeastern University to talk about our work on making this vision a reality.

Where: YouTube

When: Today, Saturday, December 11, at 11am PST / 8pm CET

.. raw:: html

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

Buttons
-------

This release brings :doc:`buttons </components/button/index>` from Home Assistant. Many times there have been questions on how to simply trigger automations
from the Home Assistant frontend with a button so here you go. Here is a very simple example:

.. code:: yaml

    button:
      - platform: template
        name: Test Button
        on_press:
          then:
            - logger.log: "The button was pressed!!!"

Multiple WiFi networks with static IP
-------------------------------------

This release has a fix that allows using multiple networks each with their own static IP address configuration.
When using these options, you **must** also set ``wifi`` -> ``use_address`` when installing new firmware as ESPHome
cannot know which IP address to use automatically.

The Dashboard and secrets
-------------------------

The ESPHome Dashboard will now save the wifi credentials as secrets (``wifi_ssid`` / ``wifi_password``) for future use. If you are already using these secrets,
then the dashboard will not ask for credentials and will configure using them for you.

The dashboard also now can view the logs straight from a serial connected device via the web browser. It will show up as an option when choosing the method to
view them.

NEC remote protocol
-------------------

In this version, the order of transferring bits was corrected from MSB to LSB in accordance with the NEC standard.
Therefore, if the configuration file has come from an earlier version of ESPhome, it is necessary to reverse
the order of the address and command bits when moving to 2021.12 or above.
For example, address: ``0x84ED``, command: ``0x13EC`` becomes ``0xB721`` and ``0x37C8`` respectively.

Tuya Covers
-----------

:esphomepr:`2637` adds new functionality to the Tuya cover component, but at the same time removes the "soft"
inversion of the direction. Instead, it seems that most if not all tuya covers have a "hidden" datapoint that
sets the direction on the secondary MCU. See the :doc:`documentation </components/cover/tuya>` for the new
configuration options.

Release 2021.12.1 - December 15
-------------------------------

- Set text sensor state property to filter output :esphomepr:`2893` by :ghuser:`oxan`
- Allow button POST on press from web server :esphomepr:`2913` by :ghuser:`wilberforce`

Release 2021.12.2 - December 21
-------------------------------

- Don't disable idle task WDT when it's not enabled :esphomepr:`2856` by :ghuser:`oxan`
- Fix MQTT button press action :esphomepr:`2917` by :ghuser:`oxan`

Release 2021.12.3 - December 30
-------------------------------

- Require arduino in webserver for better validation :esphomepr:`2941` by :ghuser:`jesserockz`
- Only allow internal pins for dht sensor :esphomepr:`2940` by :ghuser:`jesserockz`
- Workaround installing as editable package not working :esphomepr:`2936` by :ghuser:`jesserockz`
- Remove -e for hassio images :esphomepr:`2964` by :ghuser:`jesserockz`

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

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

- pmsx003: add support for new PMS5003S device :esphomepr:`2710` by :ghuser:`NeoAcheron` (new-feature)
- Add climate on_state trigger :esphomepr:`2707` by :ghuser:`dudanov` (new-feature)
- Add greeyac protocol to IR Climate / HeatpumpIR :esphomepr:`2694` by :ghuser:`cmroche` (new-feature)
- Provide an option to select unique_id generator :esphomepr:`2701` by :ghuser:`kbialek` (new-feature)
- Ignore secrets yaml on command line :esphomepr:`2715` by :ghuser:`cvwillegen` (new-feature)
- Add max_telegram_length option to dsmr :esphomepr:`2674` by :ghuser:`mmakaay` (new-feature)
- Relax the icon validator to allow non-mdi icons :esphomepr:`2764` by :ghuser:`paulmonigatti` (new-feature)
- Add support for P1 Data Request pin control :esphomepr:`2676` by :ghuser:`mmakaay` (new-feature)
- Add support for sdp8xx :esphomepr:`2779` by :ghuser:`martgras` (new-feature)
- Add map filter for text sensors :esphomepr:`2761` by :ghuser:`oxan` (new-feature)
- Optionally show internal components on the web server :esphomepr:`2627` by :ghuser:`mechanarchy` (new-feature)
- cse7766: add energy sensor :esphomepr:`2822` by :ghuser:`ianchi` (new-feature)
- Allow Git credentials to be loaded from secrets :esphomepr:`2825` by :ghuser:`mechanarchy` (new-feature)
- Expand uart invert feature to ESP8266 :esphomepr:`1727` by :ghuser:`Lewn` (new-feature)

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

- Add ble_client binary_output :esphomepr:`2200` by :ghuser:`tekmaven` (new-integration)
- Add support for button entities :esphomepr:`2824` by :ghuser:`jesserockz` (new-integration)

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

- Fix NEC protocol implementation :esphomepr:`2534` by :ghuser:`dudanov` (breaking-change)
- Tuya Cover improvements :esphomepr:`2637` by :ghuser:`pauln` (breaking-change)

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

- Feed watchdog during OTA :esphomepr:`2852` by :ghuser:`oxan`
- Bump esphome-dashboard to 20211206.0 :esphomepr:`2870` by :ghuser:`jesserockz`
- tlc59208f : fix compilation error :esphomepr:`2867` by :ghuser:`martgras`
- ADC: Turn verbose the debugging "got voltage" :esphomepr:`2863` by :ghuser:`CarlosGS`
- SPS30 : fix i2c read size :esphomepr:`2866` by :ghuser:`martgras`
- Fix MCP23x17 not disabling pullup after config change :esphomepr:`2855` by :ghuser:`oxan`
- Ignore already stopped dhcp for ethernet :esphomepr:`2862` by :ghuser:`madron`
- Add endpoint to fetch secrets keys :esphomepr:`2873` by :ghuser:`jesserockz`
- Adopt using wifi secrets that should exist at this point :esphomepr:`2874` by :ghuser:`jesserockz`
- Allow wizard to specify secrets :esphomepr:`2875` by :ghuser:`jesserockz`
- Feed watchdog when no component loops :esphomepr:`2857` by :ghuser:`oxan`
- Bump esphome-dashboard to 20211207.0 :esphomepr:`2877` by :ghuser:`jesserockz`
- Feed watchdog while setting up OTA :esphomepr:`2876` by :ghuser:`CarlosGS`
- Use new platform component config blocks for wizard :esphomepr:`2885` by :ghuser:`jesserockz`
- Bump esphome-dashboard to 20211208.0 :esphomepr:`2887` by :ghuser:`jesserockz`
- Fix published state for modbus number :esphomepr:`2894` by :ghuser:`jesserockz`
- Modbus number/output use write single :esphomepr:`2896` by :ghuser:`glmnet`
- Fix for two points setting when fan_only_cooling is disabled :esphomepr:`2903` by :ghuser:`kbx81`
- Bump esphome-dashboard to 20211211.0 :esphomepr:`2904` by :ghuser:`jesserockz`

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

- Defines tidy :esphomepr:`2696` by :ghuser:`jesserockz`
- pmsx003: add support for new PMS5003S device :esphomepr:`2710` by :ghuser:`NeoAcheron` (new-feature)
- Add climate on_state trigger :esphomepr:`2707` by :ghuser:`dudanov` (new-feature)
- Add greeyac protocol to IR Climate / HeatpumpIR :esphomepr:`2694` by :ghuser:`cmroche` (new-feature)
- Fix rom/rtc.h deprecation compile warning for debug component :esphomepr:`2520` by :ghuser:`mmakaay`
- Drop unused constants from const.py :esphomepr:`2718` by :ghuser:`oxan`
- Install test requirements in lint Docker image :esphomepr:`2719` by :ghuser:`oxan`
- Clean-up MAC address helpers :esphomepr:`2713` by :ghuser:`oxan`
- Provide an option to select unique_id generator :esphomepr:`2701` by :ghuser:`kbialek` (new-feature)
- Ignore secrets yaml on command line :esphomepr:`2715` by :ghuser:`cvwillegen` (new-feature)
- Allow for subsecond sampling of hmc5883l :esphomepr:`2735` by :ghuser:`jaharkes`
- Change log level from DEBUG to INFO for sniffing services of `rf_bridge` :esphomepr:`2736` by :ghuser:`nagyrobi`
- Add ble_client binary_output :esphomepr:`2200` by :ghuser:`tekmaven` (new-integration)
- Remove duplicated const data in esp8266 boards :esphomepr:`2740` by :ghuser:`jesserockz`
- Move to use improv lib from platformio :esphomepr:`2741` by :ghuser:`jesserockz`
- Add max_telegram_length option to dsmr :esphomepr:`2674` by :ghuser:`mmakaay` (new-feature)
- Changed LUT for DKE epaper on ttgo t5 2.13inch to improve partial rfresh :esphomepr:`2475` by :ghuser:`spattinson`
- Fix NEC protocol implementation :esphomepr:`2534` by :ghuser:`dudanov` (breaking-change)
- Remove arduino dependency from hm3301 :esphomepr:`2745` by :ghuser:`martgras`
- Add retry handler :esphomepr:`2721` by :ghuser:`martgras`
- Introduce str_snprintf helper function :esphomepr:`2780` by :ghuser:`oxan`
- Prettier date time display after time sync :esphomepr:`2778` by :ghuser:`cvwillegen`
- Fix distorted gif frames when resizing :esphomepr:`2774` by :ghuser:`davet2001`
- fixed wrong setup-usage tc9548a :esphomepr:`2766` by :ghuser:`andreashergert1984`
- Relax the icon validator to allow non-mdi icons :esphomepr:`2764` by :ghuser:`paulmonigatti` (new-feature)
- Bump black from 21.10b0 to 21.11b1 :esphomepr:`2760` by :ghuser:`dependabot[bot]`
- Update aht10.cpp to address issue #1635 :esphomepr:`2675` by :ghuser:`krunkel`
- Add support for P1 Data Request pin control :esphomepr:`2676` by :ghuser:`mmakaay` (new-feature)
- Allow specifying the dashboard bind address :esphomepr:`2787` by :ghuser:`jesserockz`
- remove LEDC_HIGH_SPEED_MODE for C3, S2, S3 :esphomepr:`2791` by :ghuser:`martgras`
- Fix LEDC resolution calculation on ESP32-C3/S2/S3 :esphomepr:`2794` by :ghuser:`rsumner`
- Add support for sdp8xx :esphomepr:`2779` by :ghuser:`martgras` (new-feature)
- Allow empty UART debug: option, logging in hex format by default :esphomepr:`2771` by :ghuser:`mmakaay`
- Bump pylint from 2.11.1 to 2.12.1 :esphomepr:`2798` by :ghuser:`dependabot[bot]`
- Fix CI cache key for test3.yaml compile :esphomepr:`2757` by :ghuser:`oxan`
- Drop obsolete comment from CI workflow file :esphomepr:`2758` by :ghuser:`oxan`
- Cache virtualenv instead of pip cache between CI runs :esphomepr:`2759` by :ghuser:`oxan`
- Add map filter for text sensors :esphomepr:`2761` by :ghuser:`oxan` (new-feature)
- Only match GCC warnings from ESPHome source files in CI :esphomepr:`2756` by :ghuser:`oxan`
- Correct constant for dynamic I2S bus in NeoPixelBus :esphomepr:`2797` by :ghuser:`oxan`
- Consistently format errors in CI scripts  :esphomepr:`2762` by :ghuser:`oxan`
- Cancel previous workflows for PRs and branches :esphomepr:`2800` by :ghuser:`jesserockz`
- total_daily_energy: allow to disable restore mode :esphomepr:`2795` by :ghuser:`ianchi`
- Modbus_controller: Add custom command. :esphomepr:`2680` by :ghuser:`martgras`
- Fix usage of deprecated climate method in anova :esphomepr:`2801` by :ghuser:`oxan`
- Make clang-tidy suggest stdint.h int types :esphomepr:`2820` by :ghuser:`oxan`
- Fixed data type inside fast_random_8() routine :esphomepr:`2818` by :ghuser:`anatoly-savchenkov`
- Improve DSMR read timeout handling :esphomepr:`2699` by :ghuser:`mmakaay`
- Optionally show internal components on the web server :esphomepr:`2627` by :ghuser:`mechanarchy` (new-feature)
- Fix custom mode_state_topic :esphomepr:`2827` by :ghuser:`definitio`
- Add support for button entities :esphomepr:`2824` by :ghuser:`jesserockz` (new-integration)
- Tuya text_sensor and raw data usage :esphomepr:`1812` by :ghuser:`dentra`
- Fix 8266 SPI Clock Polarity Setting :esphomepr:`2836` by :ghuser:`kbx81`
- Fix too-broad matcher for custom CI script :esphomepr:`2829` by :ghuser:`oxan`
- cse7766: add energy sensor :esphomepr:`2822` by :ghuser:`ianchi` (new-feature)
- Burst read for BME280, to reduce spurious spikes :esphomepr:`2809` by :ghuser:`CarlosGS`
- Bump aioesphomeapi from 10.2.0 to 10.6.0 :esphomepr:`2840` by :ghuser:`dependabot[bot]`
- Button device class :esphomepr:`2835` by :ghuser:`jesserockz`
- Implement unit_of_measurement for number component :esphomepr:`2804` by :ghuser:`puuu`
- Number mode :esphomepr:`2838` by :ghuser:`jesserockz`
- Bump esphome-dashboard to 20211201.0 :esphomepr:`2842` by :ghuser:`jesserockz`
- Allow Git credentials to be loaded from secrets :esphomepr:`2825` by :ghuser:`mechanarchy` (new-feature)
- Fix compile warning in Tuya automations :esphomepr:`2837` by :ghuser:`oxan`
- Add problem matcher for Python formatting errors :esphomepr:`2833` by :ghuser:`oxan`
- Fix CI check for Windows line endings :esphomepr:`2831` by :ghuser:`oxan`
- Don't enable namespace comment clang-tidy check twice :esphomepr:`2830` by :ghuser:`oxan`
- ESP32 Deep Sleep: correct level value :esphomepr:`2812` by :ghuser:`jhamhader`
- Fix OTA updates on esp8266 by declaring arch_get_cpu_cycle_count IRAM_ATTR and HOT :esphomepr:`2843` by :ghuser:`Doridian`
- Fix compilation using subprocesses :esphomepr:`2834` by :ghuser:`oxan`
- Expand uart invert feature to ESP8266 :esphomepr:`1727` by :ghuser:`Lewn` (new-feature)
- Support setting manual_ip under networks option :esphomepr:`2839` by :ghuser:`oxan`
- Enable a bunch of clang-tidy checks :esphomepr:`2149` by :ghuser:`oxan`
- Set ESP32 watchdog to loop task  :esphomepr:`2846` by :ghuser:`oxan`
- Tuya Cover improvements :esphomepr:`2637` by :ghuser:`pauln` (breaking-change)
- Fix wifi not working with manual_ip using esp-idf :esphomepr:`2849` by :ghuser:`Maelstrom96`
- modbus_controller: bugfix: enable overriding calculated register size :esphomepr:`2845` by :ghuser:`martgras`
- Feed watchdog during OTA :esphomepr:`2852` by :ghuser:`oxan`
- Bump esphome-dashboard to 20211206.0 :esphomepr:`2870` by :ghuser:`jesserockz`
- tlc59208f : fix compilation error :esphomepr:`2867` by :ghuser:`martgras`
- ADC: Turn verbose the debugging "got voltage" :esphomepr:`2863` by :ghuser:`CarlosGS`
- SPS30 : fix i2c read size :esphomepr:`2866` by :ghuser:`martgras`
- Fix MCP23x17 not disabling pullup after config change :esphomepr:`2855` by :ghuser:`oxan`
- Ignore already stopped dhcp for ethernet :esphomepr:`2862` by :ghuser:`madron`
- Add endpoint to fetch secrets keys :esphomepr:`2873` by :ghuser:`jesserockz`
- Adopt using wifi secrets that should exist at this point :esphomepr:`2874` by :ghuser:`jesserockz`
- Allow wizard to specify secrets :esphomepr:`2875` by :ghuser:`jesserockz`
- Feed watchdog when no component loops :esphomepr:`2857` by :ghuser:`oxan`
- Bump esphome-dashboard to 20211207.0 :esphomepr:`2877` by :ghuser:`jesserockz`
- Feed watchdog while setting up OTA :esphomepr:`2876` by :ghuser:`CarlosGS`
- Use new platform component config blocks for wizard :esphomepr:`2885` by :ghuser:`jesserockz`
- Bump esphome-dashboard to 20211208.0 :esphomepr:`2887` by :ghuser:`jesserockz`
- Fix published state for modbus number :esphomepr:`2894` by :ghuser:`jesserockz`
- Modbus number/output use write single :esphomepr:`2896` by :ghuser:`glmnet`
- Fix for two points setting when fan_only_cooling is disabled :esphomepr:`2903` by :ghuser:`kbx81`
- Bump esphome-dashboard to 20211211.0 :esphomepr:`2904` by :ghuser:`jesserockz`

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

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