Changelog - Version 1.12.0
==========================

.. seo::
    :description: Changelog for ESPHome version 1.12.0.
    :image: /_static/changelog-1.12.0.png
    :author: Otto Winter
    :author_twitter: @OttoWinter_

.. imgtable::

    User-Defined Services, components/api.html#user-defined-services, home-assistant.svg, dark-invert
    ESP32 Camera, components/esp32_camera, camera.svg, dark-invert
    MPR121, components/binary_sensor/mpr121, mpr121.jpg

    SDS011, components/sensor/sds011, sds011.jpg
    MCP23017, components/mcp23017, mcp23017.svg
    Servo, components/servo, servo.svg

    WiFi Info, components/text_sensor/wifi_info, network-wifi.svg, dark-invert

It's release day! 🎉 Today I'm happy to release ESPHome 1.12.0. What's new? A lot of awesome
stuff got added! Let me walk you through it:

Before 1.12, it was only possible to transfer data from ESPHome to Home Assistant (with the
``homeassistant.service`` call). With 1.12 you get :ref:`User-defined services <api-services>`,
just define a service in your ESPHome file and call it like any other service from HA. All the
rest (like variables, data validation, etc) are handled automatically!

:doc:`ESP32 Camera Support </components/esp32_camera>`: This is huge. When integrating cameras
into your smart home you'd always have to weigh between security and price; cheap cameras often
are very insecure (and sometimes even exposed on the web). And even the pricier ones would
sometimes phone back to the manufacturer and upload your data. With ESPHome, everything's 100%
local and communicates *directly* with Home Assistant. It took a bit longer than I initially
anticipated to iron out most stability issues, but with 1.12.0 it's finally here :)

And thanks very much to :ghuser:`puuu` for the :doc:`SDS011 Particulate Matter integration </components/sensor/sds011>` and
:ghuser:`mvturnho` for the newly added
:doc:`MPR121 Capacitive Touch sensor </components/binary_sensor/mpr121>` support!

And as always, this release contains tons of small adjustments (like automatically providing
suggestions for validation errors) and bug fixes to make your life easier.

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

- The ``timeout_meter`` and ``timeout_time`` options of the ultrasonic sensor
  have been merged into ``timeout``. (:doc:`/components/sensor/ultrasonic`)
- Ultrasonic Sensor no longer works with GPIO16 as echo pin on ESP8266s because
  the implementation switched to an asynchronous interrupt mode.

Other notable changes:
----------------------

- Added ``calibrate_linear`` sensor filter for easier calibration of sensors
  (:ref:`sensor-filter-calibrate_linear`)
- Added ``for`` parameter to :ref:`binary_sensor.is_on <binary_sensor-is_on_condition>` condition.
- Added ``streamer_mode``, ``status_use_ping`` and ``relative_url`` options to the Hass.io addon
  (see addon description).
- Improved validation. For small typos for config variables similar keys are automatically
  suggested.
- Added ``esp8266_restore_from_flash`` to :doc:`esphome section </components/esphome>` which
  enables restoring state from flash instead of RTC memory - this allows recovering relay state
  even after a power cycle.
- Added ability
- ``!secret`` values are now hidden for config validation.
- Rotary Encoders have a new ``min_value`` and ``max_value`` option. (:doc:`/components/sensor/rotary_encoder`)
- Fixed OTA not working for ESP32 when BLE enabled.
- Added a "delete" button in the dashboard interface to delete configuration files.
- Reworked GPIO interrupts, this will fix a bunch of issues with components that use interrupts
  (rotary encoder, software uart, remote receiver, ...)
- Allowed the use of newest Arduino Core version for ESP8266: ``2.5.0`` (not default yet,
  please try it out on non-critical devices and report if there are no wifi issues)

Release 1.12.1 - March 20
-------------------------

- core: Fix homeassistant mqtt discovery for light components :corepr:`553` by :ghuser:`puuu`
- esphome: Fix filter_out: nan filer :esphomepr:`486`
- docs: Sonoff S20 yaml fix :docspr:`200` by :ghuser:`BananaPukeh`
- core: Fix WiFi Info Text Sensor :corepr:`554`
- core: Fix addressable lights starting white at boot :corepr:`556`
- esphome: Fix IPAddress in validate secret :esphomepr:`488`

Release 1.12.2 - March 31
-------------------------

- esphome: Better symlink support under Windows :esphomepr:`487` by :ghuser:`glmnet`
- core: Fix WiFi Info sensor for ESP32 :corepr:`561`
- core: Revert ultrasonic sensor to non-interrupt mode :corepr:`562`
- core: Fix web_server for text_sensors :corepr:`567`
- core: Fix ESP8266 cannot OTA after failed OTA attempt :corepr:`564`
- core: ESP8266 SDK Core 2.3.0 compat :corepr:`563`
- esphome: ESP8266 SDK 2.3.0 compat :esphomepr:`490`
- docs: Expand USB flashing, clarify how to report a bug. :docspr:`204` by :ghuser:`balloob`
- core: Fix dallas on GPIO0 :corepr:`568`
- docs: Fix api homeassistant.service docs :docspr:`209` by :ghuser:`davericher`
- esphome: Upgrade ESPAsyncTCP to 1.2.0 :esphomepr:`497`
- core: Upgrade espasynctcp :corepr:`576`
- esphome: Fix dashboard wizard unicode :esphomepr:`494`
- esphome: Fix text sensor MQTT settings :esphomepr:`495`
- core: Split up WiFi ESP32 and ESP8266 implementation :corepr:`572`
- core: Fix MCP23017 to work on OUTPUT mode. :corepr:`571` by :ghuser:`puerari`
- core: Disable wifi interface on shutdown :corepr:`566`
- core: Fix light flashes :corepr:`578`
- core: Rewrite PN532 to fix some lowvbat issues :corepr:`575`
- core: cse7766 fix :corepr:`558` by :ghuser:`brianrjones69`
- esphome: Upgrade docker base image to 1.4.3 :esphomepr:`499`
- core: Fix neopixelbus logging causes section type conflict :corepr:`579`

All changes
-----------

- core: Fix feed_wdt :corepr:`520`
- core: Speed up waveshare Epaper :corepr:`518`
- esphome: Improve dashboard setup wizard :esphomepr:`450`
- core: Add MPR121 support for esphome-core :corepr:`517` by :ghuser:`mvturnho`
- esphome: Add MPR121 Capacitive Touch Sensor :esphomepr:`449` by :ghuser:`mvturnho`
- core: Add restore state from flash option :corepr:`530`
- esphome: Add restore state from flash option :esphomepr:`459`
- docs: Add restore state from flash option :docspr:`181`
- esphome: Automatically hide secrets in validation :esphomepr:`455`
- core: Add nextion commands :corepr:`523`
- core: Add logic in Output for minimum power setting :corepr:`516` by :ghuser:`mtl010957`
- esphome: Add handling for min power output setting :esphomepr:`448` by :ghuser:`mtl010957`
- docs: Update output documentation for min_power configuration :docspr:`167` by :ghuser:`mtl010957`
- esphome: Recommend similar keys for spelling errors :esphomepr:`458`
- core: Convert Automation engine to variadic templates :corepr:`519`
- core: Add linear calibration filter :corepr:`524`
- esphome: Convert automation engine to use variadic templates :esphomepr:`452`
- docs: Add linear calibration filter :docspr:`180`
- core: Add native API User-Defined services :corepr:`522`
- esphome: Add native API User-Defined services :esphomepr:`453`
- esphome: Add linear calibration sensor filter :esphomepr:`454`
- docs: Component reshuffle :docspr:`183` by :ghuser:`FrengerH`
- docs: Add MPR121 support :docspr:`176` by :ghuser:`mvturnho`
- esphome: Fix os.symlink on Windows :esphomepr:`460`
- esphome: Enable i2c scanning by default :esphomepr:`462`
- core: Add rotary encoder min/max value :corepr:`534`
- esphome: Add rotary encoder min/max value :esphomepr:`463`
- esphome: Fix gain setting for ADS1115 :esphomepr:`468` by :ghuser:`Melkor82`
- core: Use clang-format and clang-tidy in CI :corepr:`540`
- core: Add GPIO interrupt abstraction :corepr:`535`
- core: Add MCP23017 :corepr:`537`
- core: Add WiFi/MQTT/API connected condition :corepr:`536`
- core: Fix debug statement in ESP32 Hall Sensor :corepr:`533` by :ghuser:`emwap`
- core: Remove light mqtt_json warning :corepr:`532`
- esphome: Add WiFi/MQTT/API connected condition :esphomepr:`465`
- esphome: Rewrite interrupt components :esphomepr:`464`
- esphome: Add relative_url, streamer_mode, status_use_ping dashboard options :esphomepr:`461`
- esphome: Add MCP23017 :esphomepr:`466`
- esphome: Allow Arduino Core 2.5.0 for ESP8266 :esphomepr:`469`
- core: Add copy output platform :corepr:`542`
- core: Add 'for' to binary sensor conditions :corepr:`541`
- esphome: Upgrade ESP32 core to 1.0.1 :esphomepr:`470`
- core: Add WiFi Info Text Sensor :corepr:`543`
- esphome: Add for to binary sensor conditions :esphomepr:`471`
- esphome: Add connected condition :esphomepr:`474`
- esphome: Add copy output platform :esphomepr:`472`
- esphome: Add Wifi info text sensor :esphomepr:`473`
- docs: Add text-based sensor example to OLED cookbook entry :docspr:`190` by :ghuser:`tubalainen`
- docs: H801 Cookbook Edit Language about holding GPIOs during flashing :docspr:`189` by :ghuser:`2016for`
- docs: Adding manual for Sonoff T1 UK 3 Gang V1.1 :docspr:`182` by :ghuser:`nnmalex`
- core: Add SDS011 :corepr:`538` by :ghuser:`puuu`
- esphome: Support SDS011 component. :esphomepr:`467` by :ghuser:`puuu`
- docs: Document SDS011 component :docspr:`185` by :ghuser:`puuu`
- docs: Add Teckin SP20 (US) example to 'Generic Sonoff' page :docspr:`191` by :ghuser:`mjoshd`
- esphome: Add color to login error for better visibility :esphomepr:`478` by :ghuser:`TheZoker`
- core: Fixed: Waveshare 4.2in display timing problem due to high speed SPI u… :corepr:`546` by :ghuser:`dirkj`
- docs: Update information on flashing OTA to old ip :docspr:`193` by :ghuser:`tubalainen`
- docs: NeopixelBus Light: Fix GPIO2 not GPIO3 for uart1 method :docspr:`194` by :ghuser:`Bierchermuesli`
- docs: Cookbook Guide for Mirabella Genio Smart Bulbs :docspr:`184` by :ghuser:`cryptelli`
- docs: Improve bme280_environment cookbook for stable climates :docspr:`149` by :ghuser:`hajdbo`
- core: SDS011: change type of update_interval_min to uint8_t :corepr:`545` by :ghuser:`puuu`
- core: Add ESP32 camera support :corepr:`544`
- docs: Cookbook Guide for Brilliant / Mirabella Genio Smart Plugs :docspr:`195` by :ghuser:`cryptelli`
- esphome: Add ESP32 Camera :esphomepr:`475`
- docs: Add native API User-Defined services :docspr:`171` (cherry-picked)
- docs: BME280 environment micrograms -> grams :docspr:`198` by :ghuser:`hajdbo`
- esphome: Changes for 1.12 :esphomepr:`482` (cherry-picked)
- core: Fixes for 1.12 :corepr:`551` (cherry-picked)
- core: More changes for 1.12 :corepr:`552`
- esphome: More changes for 1.12 :esphomepr:`483`
- esphome: Update Hassio base image to 1.4.1 :esphomepr:`484`

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

- :doc:`v1.11.0`
- :doc:`v1.10.0`
- :doc:`v1.9.0`
- :doc:`v1.8.0`
- :doc:`v1.7.0`
