ESPHome 2022.1.0 - 19th January 2022
====================================

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

.. imgtable::
    :columns: 4

    BL0940, components/sensor/bl0940, bl0940.png
    BMP388 and BMP390, components/sensor/bmp3xx, bmp388.jpg
    CD74HC4067, components/sensor/cd74hc4067, cd74hc4067.jpg
    ESP32 Native CAN Bus, components/canbus, canbus.svg
    Growatt Solar, components/sensor/growatt_solar, growatt.jpg
    INA260, components/sensor/ina260, ina260.jpg
    Inkplate 10, components/display/inkplate6, inkplate6.jpg
    Kalman Combinator, components/sensor/kalman_combinator, function.svg, dark-invert
    MCP3204, components/sensor/mcp3204, mcp3204.jpg
    MCP47A1, components/output/mcp47a1, mcp47a1.svg
    Midea IR Climate, components/climate/ir_climate, air-conditioner-ir.svg, dark-invert
    Safe Mode Button, components/button/safe_mode, restart-alert.svg, dark-invert
    Shutdown Button, components/button/shutdown, power_settings.svg, dark-invert
    Tuya Number, components/number/tuya, tuya.png


HAPPY NEW YEAR!!

There are a few more new components this release than I expected, yay!!!


ESPHome Web
-----------

Today we're launching a new variant of the ESPHome dashboard: ESPHome Web – https://web.esphome.io.

The biggest challenge to getting started with ESPHome is the initial installation of ESPHome on your device. This installation needs be done by attaching the device to your computer via a cable. Once installed, updates can be installed over-the-air.

Last year we added support to the ESPHome dashboard to do the initial installation via the browser. Browsers security require the website to be served over HTTPS to allow device installation. Most people browse it from http://homeassistant.local or other local addresses so only users that manually configured external access or using Home Assistant Cloud could benefit.

With ESPHome Web we took the installation bits of the ESPHome dashboard and made them available on a website served over HTTPS. It works 100% in your browser without a backend or data leaving your computer. Now anyone can easily install ESPHome on their devices to get started.

`Visit ESPHome Web`_

.. _Visit ESPHome Web: https://web.esphome.io/

JSON
----

We upgraded the ArduinoJson library used to parse and build JSON strings to the latest version.
All of the internal code has been updated to work with the changes, but any custom code or even
``lambda`` might need updating now.

The most noticeble change is that the ``&`` reference modifier on the ``JsonObject`` that are
created in lambdas are no longer required.

Example:

.. code-block:: cpp

    JsonObject &blah = root.createNestedObject("blah");

    // This should now be:

    JsonObject blah = root.createNestedObject("blah");


Release 2022.1.1 - January 20
-----------------------------

- Add ``*.py.script`` files to distributions :esphomepr:`3074` by :ghuser:`jesserockz`

Release 2022.1.2 - January 25
-----------------------------

- [modbus_controller] fix incorrect start address for number write :esphomepr:`3073` by :ghuser:`martgras`
- Set the wrapped single light in light partition to internal :esphomepr:`3092` by :ghuser:`placidorevilla`

Release 2022.1.3 - February 2
-----------------------------

- Fix backwards string case helpers :esphomepr:`3126` by :ghuser:`jesserockz` (breaking-change)

Release 2022.1.4 - February 9
-----------------------------

- Enable mDNS during OTA safe mode :esphomepr:`3146` by :ghuser:`OttoWinter`
- Try fix canbus config validation :esphomepr:`3173` by :ghuser:`jesserockz`

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

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

- Support different run duration for non-timer wakeup :esphomepr:`2861` by :ghuser:`jhamhader` (new-feature)
- Add light.on_state trigger :esphomepr:`2868` by :ghuser:`tony-fav` (new-feature)
- Support inkplate10 :esphomepr:`2937` by :ghuser:`jesserockz` (new-feature)

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

- Add growatt modbus sensor :esphomepr:`2922` by :ghuser:`leeuwte` (new-integration)
- Add Tuya Number support :esphomepr:`2765` by :ghuser:`frankiboy1` (new-integration)
- Add shutdown and safe_mode button :esphomepr:`2918` by :ghuser:`jsuanet` (new-integration)
- INA260 Current and Power Sensor support :esphomepr:`2788` by :ghuser:`MrEditor97` (new-integration)
- Improve PSRAM support :esphomepr:`2884` by :ghuser:`oxan` (new-integration)
- Add bl0940 component used by e.g. tuya devices :esphomepr:`1904` by :ghuser:`tobias-` (new-integration)
- Add support for BMP388 / BMP 390 pressure and temperature sensor  :esphomepr:`2716` by :ghuser:`martgras` (new-integration)
- Add MCP47A1 DAC output :esphomepr:`3014` by :ghuser:`jesserockz` (new-integration)
- Create new kalman_combinator component :esphomepr:`2965` by :ghuser:`Cat-Ion` (new-integration)
- New Midea IR component, improvements and fixes :esphomepr:`2847` by :ghuser:`dudanov` (new-integration)
- MCP3204 4-channel 12-bit ADC component :esphomepr:`2895` by :ghuser:`rsumner` (new-integration)
- Add cd74hc4067 multiplexer :esphomepr:`2431` by :ghuser:`asoehlke` (new-integration)
- Native ESP32 CAN support :esphomepr:`1629` by :ghuser:`Sympatron` (new-integration)

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

- Modbus: use multiply for publishing number :esphomepr:`2916` by :ghuser:`martgras` (breaking-change)
- Upgrade ArduinoJson to 6.18.5 and migrate code :esphomepr:`2844` by :ghuser:`jesserockz` (breaking-change)
- Fix backwards string case helpers :esphomepr:`3126` by :ghuser:`jesserockz` (breaking-change)

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

- Add factory to download name :esphomepr:`3040` by :ghuser:`balloob`
- Bump dashboard to 20220113.2 :esphomepr:`3041` by :ghuser:`balloob`
- Disable caching for binary download :esphomepr:`3054` by :ghuser:`lutzky`
- Rename post_build scripts to fix codeowners script :esphomepr:`3057` by :ghuser:`oxan`
- Remove deprecated attribute from virtual entity methods :esphomepr:`3056` by :ghuser:`oxan`
- Add number setting to web_server/rest_api :esphomepr:`3055` by :ghuser:`jesserockz`
- bump dashboard to 20220116.0 :esphomepr:`3061` by :ghuser:`balloob`
- [modbus_controller] add missing skip_updates :esphomepr:`3063` by :ghuser:`martgras`
- Fail hard if no random bytes available for encryption :esphomepr:`3067` by :ghuser:`oxan`

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

- Add a simple helper to remap values :esphomepr:`2850` by :ghuser:`jesserockz`
- Bump pylint from 2.12.1 to 2.12.2 :esphomepr:`2858` by :ghuser:`dependabot[bot]`
- Support different run duration for non-timer wakeup :esphomepr:`2861` by :ghuser:`jhamhader` (new-feature)
- Drop len parameter from parse_number() :esphomepr:`2883` by :ghuser:`oxan`
- Drop unused xSemaphoreWait define :esphomepr:`2888` by :ghuser:`oxan`
- Move i2c scan to setup :esphomepr:`2869` by :ghuser:`martgras`
- Introduce hex parsing & formatting helper functions  :esphomepr:`2882` by :ghuser:`oxan`
- Add light.on_state trigger :esphomepr:`2868` by :ghuser:`tony-fav` (new-feature)
- Reduce timing noise in duty_cycle :esphomepr:`2881` by :ghuser:`CarlosGS`
- Turn verbose a debug statement in bme280 :esphomepr:`2906` by :ghuser:`CarlosGS`
- Add reset_duration option for waveshare epaper HAT rev 2.1 :esphomepr:`1481` by :ghuser:`owenb321`
- Log the actual value in modbus number :esphomepr:`2901` by :ghuser:`jesserockz`
- Add gpio 12 to strapping pin list :esphomepr:`2902` by :ghuser:`martgras`
- Added access to ble_scan_result_evt_param as get_scan_result :esphomepr:`2854` by :ghuser:`myhomeiot`
- fix multi-line comment warning/error :esphomepr:`2891` by :ghuser:`martgras`
- Bump black from 21.11b1 to 21.12b0 :esphomepr:`2879` by :ghuser:`dependabot[bot]`
- Adding Pascal unit to constants :esphomepr:`2914` by :ghuser:`jddonovan`
- quantile filter support :esphomepr:`2900` by :ghuser:`konikvranik`
- ESP32 CAM add Automatic Exposure Control option :esphomepr:`2892` by :ghuser:`sveip`
- Modbus: use multiply for publishing number :esphomepr:`2916` by :ghuser:`martgras` (breaking-change)
- Add growatt modbus sensor :esphomepr:`2922` by :ghuser:`leeuwte` (new-integration)
- Add Tuya Number support :esphomepr:`2765` by :ghuser:`frankiboy1` (new-integration)
- Support inverted tm1637 display :esphomepr:`2878` by :ghuser:`jlsjonas`
- Fix tm1637 bootloop :esphomepr:`2929` by :ghuser:`jlsjonas`
- Add shutdown and safe_mode button :esphomepr:`2918` by :ghuser:`jsuanet` (new-integration)
- Support inkplate10 :esphomepr:`2937` by :ghuser:`jesserockz` (new-feature)
- bang_bang: respect set cool- and heat-only modes :esphomepr:`2926` by :ghuser:`sairon`
- Update curl package version in docker :esphomepr:`2939` by :ghuser:`jesserockz`
- Change HDC1080 init instruction failure from error to warning :esphomepr:`2927` by :ghuser:`grob6000`
- Add option to load docker image when building :esphomepr:`2938` by :ghuser:`jesserockz`
- Disable nightly dev build :esphomepr:`2943` by :ghuser:`jesserockz`
- Revert "Disable nightly dev build" :esphomepr:`2944` by :ghuser:`jesserockz`
- Remove Content-Length header from camera snapshot response :esphomepr:`2860` by :ghuser:`DotNetDann`
- ST7920 ESP32 fix :esphomepr:`2962` by :ghuser:`marsjan155`
- Fix switch log state if inverted :esphomepr:`2960` by :ghuser:`hobbyquaker`
- Add pin aliases for featheresp32-s2 :esphomepr:`2970` by :ghuser:`arunderwood`
- INA260 Current and Power Sensor support :esphomepr:`2788` by :ghuser:`MrEditor97` (new-integration)
- Upgrade ArduinoJson to 6.18.5 and migrate code :esphomepr:`2844` by :ghuser:`jesserockz` (breaking-change)
- Don't use pyproject.toml for esphome build :esphomepr:`2980` by :ghuser:`agners`
- Explicitly use overloaded begin() for I2C master initialization :esphomepr:`2978` by :ghuser:`agners`
- Use template path :esphomepr:`2961` by :ghuser:`balloob`
- Fix compile error for idf projects with ArduinoJson 6 :esphomepr:`2979` by :ghuser:`martgras`
- Modbus: fix response parsing error for coil write :esphomepr:`2986` by :ghuser:`martgras`
- Change unset ESPHOME_LOG_LEVEL fallback to NONE :esphomepr:`2982` by :ghuser:`dbuezas`
- Add SH1107_128x64 to the ssd1306 component :esphomepr:`2967` by :ghuser:`arunderwood`
- Add logging for some Nextion errors that didn't have any :esphomepr:`2957` by :ghuser:`masto`
- Fix HTTPRequestComponent::get_string return value :esphomepr:`2987` by :ghuser:`martgras`
- Improve PSRAM support :esphomepr:`2884` by :ghuser:`oxan` (new-integration)
- Support ISR based pulse counter on ESP32-C3 :esphomepr:`2983` by :ghuser:`agners`
- Use to_string() from STL when available :esphomepr:`2992` by :ghuser:`oxan`
- Set UTF-8 encoding and version for prometheus /metrics :esphomepr:`2993` by :ghuser:`MyIgel`
- Introduce bit_cast() backport :esphomepr:`2991` by :ghuser:`oxan`
- Apply --no-use-pep517 for docker images :esphomepr:`2985` by :ghuser:`jesserockz`
- Dont validate baud_rate for sim800l platform :esphomepr:`2945` by :ghuser:`jesserockz`
- Modbus: add binary output :esphomepr:`2931` by :ghuser:`martgras`
- Add bl0940 component used by e.g. tuya devices :esphomepr:`1904` by :ghuser:`tobias-` (new-integration)
- Honor user set values for col/row start for INITR_MINI_160X80. :esphomepr:`2976` by :ghuser:`gonzalop`
- Fix clang-tidy with multiple ESP32 toolchains installed :esphomepr:`2998` by :ghuser:`oxan`
- Set correct include_dir in platformio.ini  :esphomepr:`2999` by :ghuser:`oxan`
- SGP40 - Reduce delay in measurement :esphomepr:`2996` by :ghuser:`martgras`
- atc mithermometer: Add possibility to report signal strength :esphomepr:`3000` by :ghuser:`mknjc`
- Support clang-tidy for ESP32 variants :esphomepr:`3001` by :ghuser:`oxan`
- Fix SlowPWM output switch at the end of period :esphomepr:`2984` by :ghuser:`Chupaka`
- Add support for BMP388 / BMP 390 pressure and temperature sensor  :esphomepr:`2716` by :ghuser:`martgras` (new-integration)
- Clean-up reverse_bits helpers :esphomepr:`3011` by :ghuser:`oxan`
- Convert clamp() helper to backport of std::clamp() :esphomepr:`3010` by :ghuser:`oxan`
- Introduce str_lower_case() and str_upper_case() helpers :esphomepr:`3008` by :ghuser:`oxan`
- Drop uint{32,64}_to_string() helper functions :esphomepr:`3009` by :ghuser:`oxan`
- Bump PlatformIO to 5.2.4 and zeroconf to 0.37.0 :esphomepr:`3007` by :ghuser:`oxan`
- Offset bugfix in Modbus Text Sensor :esphomepr:`3006` by :ghuser:`stegm`
- Add MCP47A1 DAC output :esphomepr:`3014` by :ghuser:`jesserockz` (new-integration)
- Bump docker dependencies :esphomepr:`3019` by :ghuser:`OttoWinter`
- Fix register ranges in modbus controller :esphomepr:`2981` by :ghuser:`stegm`
- Add restore_mode to output switch :esphomepr:`3016` by :ghuser:`joshuaspence`
- Add turn_on/off trigger to slow_pwm :esphomepr:`2921` by :ghuser:`martgras`
- Convert is_callable to a backport of std::is_invocable :esphomepr:`3023` by :ghuser:`oxan`
- Create new kalman_combinator component :esphomepr:`2965` by :ghuser:`Cat-Ion` (new-integration)
- New Midea IR component, improvements and fixes :esphomepr:`2847` by :ghuser:`dudanov` (new-integration)
- Extend esp32_camera with requester to improve performance :esphomepr:`2813` by :ghuser:`ayufan`
- MCP3204 4-channel 12-bit ADC component :esphomepr:`2895` by :ghuser:`rsumner` (new-integration)
- Adding sdm_meter ability to report total power :esphomepr:`2959` by :ghuser:`MiKuBB`
- [Modbus_controller] Fix binary sensor lambda :esphomepr:`3020` by :ghuser:`martgras`
-  Clean-up random helper functions  :esphomepr:`3022` by :ghuser:`oxan`
- Fix display picture for nextion display :esphomepr:`3018` by :ghuser:`lhoracek`
- Fix heatpumpir codegen min/max temperatures :esphomepr:`3025` by :ghuser:`jeffborg`
- Add an action for pzemac to reset the total energy :esphomepr:`2480` by :ghuser:`nuttytree`
- Nexa 433MHz RF protocol :esphomepr:`2037` by :ghuser:`GruffyPuffy`
- Deprecate virtual methods to set entity properties :esphomepr:`3021` by :ghuser:`oxan`
- Run post scripts for factory binaries for flashing :esphomepr:`3003` by :ghuser:`jesserockz`
- Add cd74hc4067 multiplexer :esphomepr:`2431` by :ghuser:`asoehlke` (new-integration)
- Native ESP32 CAN support :esphomepr:`1629` by :ghuser:`Sympatron` (new-integration)
- [Modbus_controller] Fix duplicate cmd check :esphomepr:`3031` by :ghuser:`martgras`
- Introduce big- and little-endian integer types :esphomepr:`2997` by :ghuser:`oxan`
- Generate basic config for esphome-web devices :esphomepr:`3036` by :ghuser:`jesserockz`
- Bump esphome-dashboard to 20220113.1 :esphomepr:`3038` by :ghuser:`jesserockz`
- Add factory to download name :esphomepr:`3040` by :ghuser:`balloob`
- Bump dashboard to 20220113.2 :esphomepr:`3041` by :ghuser:`balloob`
- Disable caching for binary download :esphomepr:`3054` by :ghuser:`lutzky`
- Rename post_build scripts to fix codeowners script :esphomepr:`3057` by :ghuser:`oxan`
- Remove deprecated attribute from virtual entity methods :esphomepr:`3056` by :ghuser:`oxan`
- Add number setting to web_server/rest_api :esphomepr:`3055` by :ghuser:`jesserockz`
- bump dashboard to 20220116.0 :esphomepr:`3061` by :ghuser:`balloob`
- [modbus_controller] add missing skip_updates :esphomepr:`3063` by :ghuser:`martgras`
- Fail hard if no random bytes available for encryption :esphomepr:`3067` by :ghuser:`oxan`

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

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