diff --git a/changelog/2024.6.0.rst b/changelog/2024.6.0.rst new file mode 100644 index 000000000..02fbe2f5b --- /dev/null +++ b/changelog/2024.6.0.rst @@ -0,0 +1,348 @@ +ESPHome 2024.6.0 - 19th June 2024 +================================= + +.. seo:: + :description: Changelog for ESPHome 2024.5.0. + :image: /_static/changelog-2024.5.0.png + :author: Jesse Hills + :author_twitter: @jesserockz + +.. imgtable:: + :columns: 3 + + ESPHome OTA Updates, components/ota, system-update.svg, dark-invert + HTTP Request OTA Updates, components/ota_http_request, system-update.svg, dark-invert + Managed Updates, components/update/http_request, system-update.svg, dark-invert + + 1-Wire, components/one_wire, one-wire.svg + GDK101, components/sensor/gdk101, gdk101.jpg + Beken SPI, components/light/beken_spi_led_strip, color_lens.svg, dark-invert + + INA2XX, components/sensor/ina2xx, ina2xx.jpg + LTR Light & Proximity Sensors, components/sensor/ltr_als_ps, ltr329.jpg, Lux + Host SDL2 display, components/display/sdl, sdl.png + +.. |ss| raw:: html + + + +.. |se| raw:: html + + + +An update on updates +-------------------- + +So we have a few updates to update you on this |ss| update |se| release. +Please do read these release notes carefully as there are quite a few breaking changes that +we know will affect a large portion of users. + +ESPHome branding +^^^^^^^^^^^^^^^^ + +In April, Nabu Casa donated ESPHome to the newly found Open Home Foundation. This foundation, +which also owns Home Assistant, fights for the rights of privacy, choice and sustainability +of the smart home - and everyone that lives in one. This was done to create a bulwark against +surveillance capitalism, the risk of buyout, and open-source projects becoming abandonware. +To an extent, this protection extends even against our future selves—so that smart home users +can continue to benefit for years, if not decades. No matter what comes. + +As part of this new governance, we decided to align the branding of Home Assistant and ESPHome, +the two consumer facing projects of the foundation, to communicate that we share a common vision. + +This change has not had any impact on the day-to-day of ESPHome. +Both Keith and myself will remain full-time employed at Nabu Casa, a commercial partner of +the Open Home Foundation, to further develop ESPHome to be the best way for anyone to create +smart home devices. To support our work, +`subscribe to Home Assistant Cloud by Nabu Casa `__. + +`Learn more about the Open Home Foundation `__ + +Update Entities +^^^^^^^^^^^^^^^ + +So, we created ``update`` entities. These are similar to the ones that Home Assistant shows now when +you have the ESPHome Add-on installed in Home Assistant OS, except those ones show you an update to the +version of the ESPHome Add-on and in the background will compile and upload new firmware to your device. + +These new ``update`` entities are a bit different. If you have acquired a device that was pre-installed +with ESPHome, the vendor you acquired the device from is now able to compile the firmware and host it +on a website along with a description of the firmware the device can read and present that there is an +update available for this device. You do not need to adopt the device into the ESPHome dashboard, and +you don't actually need the ESPHome dashboard installed. Using the new ``http_request`` OTA platform, +the device will be able to download the firmware and update itself. + +OTA Platforms +^^^^^^^^^^^^^ + +With the above mentioned ``http_request`` OTA platform, we made the decision to split out the current +``ota`` server to its own platform to make the code more managable and to allow for more flexibility going forward. + +Because of this, all configurations that currently have ``ota:`` in them will fail to validate after +updating to this release. + +You will need to change the configuration by adding a new line as below: + +.. code-block:: yaml + + # Old + ota: + + ota: + password: "xxxx" + + # New + ota: + platform: esphome + + ota: + platform: esphome + password: "xxxx" + +As part of this change also, :doc:`safe_mode ` has been pulled out into its own top level component. +It is automatically included in any configuration that has an ``ota`` configuration block, so there is nothing you +need to do unless you were overriding some of the safe mode specific configurations. + +1-Wire +^^^^^^ + +Up until now, the ``dallas`` sensor platform contained the only 1-wire implementation in ESPHome. +There had been requests to add support for other 1-wire based components, so :ghuser:`ssieb` has +made a new top level :doc:`1-wire ` component that will allow for this. +In doing so, the ``dallas`` sensor platform has been removed, and replaced with ``dallas_temp`` +to allow for other Dallas sensors to be implemented that are not temperature sensors. + +HTTP(s) Requests +^^^^^^^^^^^^^^^^ + +The :doc:`http_request ` platform has been rewritten in this release to +add support when using ESP-IDF or when using the :doc:`rp2040 ` platform. This will +also allow other ESPHome components to make HTTP(s) requests which includes the new ``http_request`` OTA platform and the +``update`` entities. + +As part of this, the configuration has been changed quite a bit so please read the documentation for the latest +configuration options. + +JSON parsing +^^^^^^^^^^^^ + +An internal helper component ``json`` has had some minor, but breaking changes that now require the parsing +callback function to return a boolean value, representing whether the parsing was successful or not. +This is mostly an internal change, but could be used by :doc:`external components ` +or lambdas in YAML. + + +Full list of changes +-------------------- + +New Features +^^^^^^^^^^^^ + +- Add ADC multisampling :esphomepr:`6330` by :ghuser:`Mat931` (new-feature) +- [voice_assistant] Timers :esphomepr:`6821` by :ghuser:`jesserockz` (new-feature) + +New Components +^^^^^^^^^^^^^^ + +- GDK101 support :esphomepr:`4703` by :ghuser:`Szewcson` (new-integration) +- Add beken_spi_led_strip component :esphomepr:`6515` by :ghuser:`Mat931` (new-integration) +- Separate ``OTABackend`` from OTA component :esphomepr:`6459` by :ghuser:`kbx81` (new-integration) (breaking-change) +- SPI and I2C for ENS160 :esphomepr:`6369` by :ghuser:`latonita` (new-integration) (breaking-change) +- INA228/INA229, INA238/INA239, INA237 power/energy/charge monitor (I2C, SPI) :esphomepr:`6138` by :ghuser:`latonita` (new-integration) +- [haier] ``text_sensor`` and ``button`` platforms :esphomepr:`6780` by :ghuser:`paveldn` (new-integration) +- LTR-303, LTR-329, LTR-553, LTR-556, LTR-559, LTR-659 Series of Lite-On Light (ALS) and Proximity(PS) sensors :esphomepr:`6076` by :ghuser:`latonita` (new-integration) +- Add host time platform; remove host support from sntp. :esphomepr:`6854` by :ghuser:`clydebarrow` (new-integration) +- [ota] http_request update platform :esphomepr:`5586` by :ghuser:`oarcher` (new-integration) +- [core] Update Entities :esphomepr:`6885` by :ghuser:`jesserockz` (new-integration) +- New 1-wire component :esphomepr:`6860` by :ghuser:`ssieb` (new-integration) (breaking-change) +- [display] SDL2 display driver for host platform :esphomepr:`6825` by :ghuser:`clydebarrow` (new-integration) + +New Platforms +^^^^^^^^^^^^^ + +- BedJet: expose the outlet temperature on the climate and as a sensor :esphomepr:`6633` by :ghuser:`javawizard` (new-platform) +- mpr121: Add GPIO support :esphomepr:`6776` by :ghuser:`polyfloyd` (new-platform) + +Breaking Changes +^^^^^^^^^^^^^^^^ + +- Separate ``OTABackend`` from OTA component :esphomepr:`6459` by :ghuser:`kbx81` (new-integration) (breaking-change) +- SPI and I2C for ENS160 :esphomepr:`6369` by :ghuser:`latonita` (new-integration) (breaking-change) +- Uncouple safe_mode from OTA :esphomepr:`6759` by :ghuser:`kbx81` (breaking-change) +- Fix incorrect naming of the AdaFruit MagTag display. :esphomepr:`6810` by :ghuser:`sasodoma` (breaking-change) +- [http_request] Add esp-idf and rp2040 support :esphomepr:`3256` by :ghuser:`jesserockz` (breaking-change) +- Allow parse_json to return a boolean result :esphomepr:`6884` by :ghuser:`jesserockz` (breaking-change) +- New 1-wire component :esphomepr:`6860` by :ghuser:`ssieb` (new-integration) (breaking-change) + +All changes +^^^^^^^^^^^ + +- Add IRK support to ble_rssi :esphomepr:`6422` by :ghuser:`chbmuc` +- Add new Error type to skip prepending path :esphomepr:`6716` by :ghuser:`jesserockz` +- [github] Only save platformio cache for dev branch :esphomepr:`6711` by :ghuser:`jesserockz` +- Only cache docker images on dev branch :esphomepr:`6714` by :ghuser:`jesserockz` +- Add pylint to git pre-commit hooks :esphomepr:`6726` by :ghuser:`clydebarrow` +- separate debug component for each platform in different file :esphomepr:`6715` by :ghuser:`tomaszduda23` +- GDK101 support :esphomepr:`4703` by :ghuser:`Szewcson` (new-integration) +- Typing hint and doc fixes :esphomepr:`6729` by :ghuser:`clydebarrow` +- time_based_cover.cpp with manual control fix :esphomepr:`6719` by :ghuser:`Jorge-Crespo-Celdran` +- [CST816] Add support for Hynitron Microelectronics CST826 capacitive touch :esphomepr:`6682` by :ghuser:`lboue` +- Bump pytest from 8.1.1 to 8.2.0 :esphomepr:`6732` by :ghuser:`dependabot[bot]` +- [web_server] Minor python formatting :esphomepr:`6735` by :ghuser:`jesserockz` +- [esp32_ble] Fix compilation error on esp32c6 :esphomepr:`6734` by :ghuser:`jesserockz` +- [core] Fix minor formatting issues :esphomepr:`6738` by :ghuser:`jesserockz` +- [config] Improve error reporting :esphomepr:`6736` by :ghuser:`clydebarrow` +- [tests] ``test2.yaml`` has become too large :esphomepr:`6750` by :ghuser:`kbx81` +- Bump esphome-dashboard from 20240412.0 to 20240429.1 :esphomepr:`6743` by :ghuser:`dependabot[bot]` +- BedJet: expose the outlet temperature on the climate and as a sensor :esphomepr:`6633` by :ghuser:`javawizard` (new-platform) +- Add beken_spi_led_strip component :esphomepr:`6515` by :ghuser:`Mat931` (new-integration) +- i2c: fix format string specifiers :esphomepr:`6746` by :ghuser:`ius` +- Allow one timing to cancel others :esphomepr:`6744` by :ghuser:`lbilger` +- fix rp2040_pio_led flicker and proper multi-strip support :esphomepr:`6194` by :ghuser:`Papa-DMan` +- Mirage remote receiver & transmitter :esphomepr:`6479` by :ghuser:`heggi` +- WPA2 Enterprise - Explicitly set TTLS Phase 2 :esphomepr:`6436` by :ghuser:`shxshxshxshx` +- Fix Prometheus Output to Match Spec :esphomepr:`6032` by :ghuser:`sdwilsh` +- Skip gpio validation :esphomepr:`5615` by :ghuser:`amcfague` +- [core] Migrate to pyproject.toml :esphomepr:`6737` by :ghuser:`jesserockz` +- [core] Move pytest config into pyproject.toml :esphomepr:`6740` by :ghuser:`jesserockz` +- [core] Move pylint config into pyproject.toml :esphomepr:`6739` by :ghuser:`jesserockz` +- [core] Fix running pylint via pre-commit from GUI apps :esphomepr:`6754` by :ghuser:`jesserockz` +- Separate ``OTABackend`` from OTA component :esphomepr:`6459` by :ghuser:`kbx81` (new-integration) (breaking-change) +- Add ADC multisampling :esphomepr:`6330` by :ghuser:`Mat931` (new-feature) +- [core] Fix some extends cases :esphomepr:`6748` by :ghuser:`jesserockz` +- Port wifi_component_esp32_arduino from tcpip_adapter to esp_netif :esphomepr:`6476` by :ghuser:`paravoid` +- SPI and I2C for ENS160 :esphomepr:`6369` by :ghuser:`latonita` (new-integration) (breaking-change) +- Fix wifi compile error on IDF 5.1+ :esphomepr:`6756` by :ghuser:`kbx81` +- [core] Update some coroutine priorities :esphomepr:`6755` by :ghuser:`jesserockz` +- INA228/INA229, INA238/INA239, INA237 power/energy/charge monitor (I2C, SPI) :esphomepr:`6138` by :ghuser:`latonita` (new-integration) +- [nextion] Fix type on sprintf for IDF v5 :esphomepr:`6758` by :ghuser:`edwardtfn` +- [core] Remove references to deleted setup.py :esphomepr:`6757` by :ghuser:`jesserockz` +- Fix pip3 install :esphomepr:`6771` by :ghuser:`syssi` +- [tests] make test_build_components work with venv without installing esphome :esphomepr:`6761` by :ghuser:`tomaszduda23` +- separate deep_sleep component for each platform in different file :esphomepr:`6762` by :ghuser:`tomaszduda23` +- Bump actions/checkout from 4.1.5 to 4.1.6 :esphomepr:`6764` by :ghuser:`dependabot[bot]` +- add rp2040 support to the wizard :esphomepr:`6239` by :ghuser:`fodfodfod` +- [ili9xxx] Add 18bit mode selection and custom init sequence :esphomepr:`6745` by :ghuser:`clydebarrow` +- Tiny fix in automation.h - unused return value removed :esphomepr:`6760` by :ghuser:`latonita` +- Uncouple safe_mode from OTA :esphomepr:`6759` by :ghuser:`kbx81` (breaking-change) +- Add support for acting as Modbus server :esphomepr:`4874` by :ghuser:`JeroenVanOort` +- Add on_safe_mode trigger :esphomepr:`6790` by :ghuser:`kbx81` +- [sx1509] Output open drain pin mode :esphomepr:`6788` by :ghuser:`Swamp-Ig` +- [ledc] Change some logging lines from debug to verbose :esphomepr:`6796` by :ghuser:`jesserockz` +- [haier] ``text_sensor`` and ``button`` platforms :esphomepr:`6780` by :ghuser:`paveldn` (new-integration) +- mpr121: Add GPIO support :esphomepr:`6776` by :ghuser:`polyfloyd` (new-platform) +- [nextion] Add basic functions to Intelligent series :esphomepr:`6791` by :ghuser:`edwardtfn` +- Fix incorrect naming of the AdaFruit MagTag display. :esphomepr:`6810` by :ghuser:`sasodoma` (breaking-change) +- [tuya] add support for extended services :esphomepr:`6808` by :ghuser:`augs` +- fix libretiny regression from #6715 :esphomepr:`6806` by :ghuser:`augs` +- Make i2s_audio compatible with IDF 5+ :esphomepr:`6534` by :ghuser:`pimdo` +- Fix compile errors on ESP32-C6 with latest ESP-IDF :esphomepr:`6822` by :ghuser:`DAVe3283` +- Use uint8_t instead of uint32_t for 8-bit values on mitsubishi :esphomepr:`6824` by :ghuser:`DAVe3283` +- Make SPI Ethernet (W5500) compatible with ESP-IDF v5 :esphomepr:`6778` by :ghuser:`fightforlife` +- [wake_on_lan] Make component platform independent :esphomepr:`6815` by :ghuser:`clydebarrow` +- Fix a bunch of components for IDF 5 compatibility and #6802 :esphomepr:`6805` by :ghuser:`kbx81` +- Bump docker/login-action from 3.1.0 to 3.2.0 :esphomepr:`6823` by :ghuser:`dependabot[bot]` +- Bump pytest-cov from 4.1.0 to 5.0.0 :esphomepr:`6580` by :ghuser:`dependabot[bot]` +- Bump peter-evans/create-pull-request from 6.0.4 to 6.0.5 :esphomepr:`6635` by :ghuser:`dependabot[bot]` +- Bump black from 24.4.0 to 24.4.2 :esphomepr:`6646` by :ghuser:`dependabot[bot]` +- [voice_assistant] Timers :esphomepr:`6821` by :ghuser:`jesserockz` (new-feature) +- [web_server] add entity sorting for v3 :esphomepr:`6445` by :ghuser:`RFDarter` +- [micro_wake_word] Ensure model string is Path :esphomepr:`6826` by :ghuser:`synesthesiam` +- Fix DHT reading timing for SI7021 on ESP32 :esphomepr:`6604` by :ghuser:`erdembey` +- [core] Const-ify some Component fields :esphomepr:`6831` by :ghuser:`jesserockz` +- LTR-303, LTR-329, LTR-553, LTR-556, LTR-559, LTR-659 Series of Lite-On Light (ALS) and Proximity(PS) sensors :esphomepr:`6076` by :ghuser:`latonita` (new-integration) +- Update const.py added missing millimeter :esphomepr:`6834` by :ghuser:`NonaSuomy` +- Fix log message in VA for IDF 5 :esphomepr:`6839` by :ghuser:`kbx81` +- Replace random non-ascii-print characters with standard substitutes :esphomepr:`6840` by :ghuser:`ptr727` +- Wireguard support for bk72 microcontrollers :esphomepr:`6842` by :ghuser:`droscy` +- Add messages when WiFi and Ethernet components set 'warning' flag. :esphomepr:`6850` by :ghuser:`kpfleming` +- [sntp] fix for ESP-IDF > 5.0 :esphomepr:`6769` by :ghuser:`HeMan` +- Avoid unsafe git error when container user and file config volume permissions don't match :esphomepr:`6843` by :ghuser:`ptr727` +- Add Ethernet MAC address to ethernet_info :esphomepr:`6835` by :ghuser:`ptr727` +- Add host time platform; remove host support from sntp. :esphomepr:`6854` by :ghuser:`clydebarrow` (new-integration) +- [wireguard] Implement workaround for crash on IDF 5+ :esphomepr:`6846` by :ghuser:`kbx81` +- [ft5x06] Interrupt pin and code quality improvements :esphomepr:`6851` by :ghuser:`jesserockz` +- [ethernet] Add config option to set arbitrary PHY register values :esphomepr:`6836` by :ghuser:`heythisisnate` +- Add carrier_frequency option to remote_transmitter.transmit_aeha :esphomepr:`6792` by :ghuser:`svxa` +- Add ``invert_position_report`` to ``tuya.cover`` :esphomepr:`6020` by :ghuser:`wrouesnel` +- [Tuya Climate] Support both datapoint and pins for active state :esphomepr:`6789` by :ghuser:`zry98` +- [config] Allow file: scheme for git external components :esphomepr:`6844` by :ghuser:`clydebarrow` +- [ota] http_request update platform :esphomepr:`5586` by :ghuser:`oarcher` (new-integration) +- [logger] Fix defines for development :esphomepr:`6870` by :ghuser:`jesserockz` +- [docker] Avoid unsafe git error when container user and file config volume permissions don't match :esphomepr:`6873` by :ghuser:`ptr727` +- [datetime] Add logs on DateCall perform :esphomepr:`6868` by :ghuser:`RFDarter` +- fix: arduino media player sets wrong state for announcements :esphomepr:`6849` by :ghuser:`gnumpi` +- [datetime] datetime-datetime strptime support value string without seconds :esphomepr:`6867` by :ghuser:`RFDarter` +- Update webserver local assets to 20240608-093147 :esphomepr:`6874` by :ghuser:`esphomebot` +- fix: arduino media player still sets wrong state. :esphomepr:`6875` by :ghuser:`gnumpi` +- [http_request] Add esp-idf and rp2040 support :esphomepr:`3256` by :ghuser:`jesserockz` (breaking-change) +- [i2s_speaker] A few fixes :esphomepr:`6872` by :ghuser:`jesserockz` +- [voice_assistant] Write less data to speaker each loop :esphomepr:`6877` by :ghuser:`jesserockz` +- Bump docker/build-push-action from 5.3.0 to 5.4.0 in /.github/actions/build-image :esphomepr:`6883` by :ghuser:`dependabot[bot]` +- Allow parse_json to return a boolean result :esphomepr:`6884` by :ghuser:`jesserockz` (breaking-change) +- Update webserver local assets to 20240610-230854 :esphomepr:`6886` by :ghuser:`esphomebot` +- [core] Update Entities :esphomepr:`6885` by :ghuser:`jesserockz` (new-integration) +- [Dockerfile] Sync platformio version with requirements.txt :esphomepr:`6888` by :ghuser:`ptr727` +- [Deep sleep] Compilation error with IDF >= 5.* :esphomepr:`6879` by :ghuser:`asergunov` +- [animation] Allow loading external url at build time :esphomepr:`6876` by :ghuser:`landonr` +- [waveshare_epaper] Add support for 13.3in-k :esphomepr:`6443` by :ghuser:`pgericson` +- Climate IR LG - Support fan only mode and all "on" commands :esphomepr:`3712` by :ghuser:`danieldabate` +- [safe_mode] Allow user-defined interval for successful boot :esphomepr:`6882` by :ghuser:`NMartin354` +- New 1-wire component :esphomepr:`6860` by :ghuser:`ssieb` (new-integration) (breaking-change) +- [he60r] Don't publish state unless it has changed. [BUGFIX] :esphomepr:`6869` by :ghuser:`clydebarrow` +- [image] Make PIL import local :esphomepr:`6864` by :ghuser:`guillempages` +- [config] Retain path information in validated configuration :esphomepr:`6785` by :ghuser:`clydebarrow` +- WebSocket overrides check_origin for reverse proxy configuration :esphomepr:`6845` by :ghuser:`gabest11` +- [config] Early termination of validation steps on error :esphomepr:`6837` by :ghuser:`clydebarrow` +- Fix media_player.volume_set when media player is not started :esphomepr:`6859` by :ghuser:`tetele` +- [display] SDL2 display driver for host platform :esphomepr:`6825` by :ghuser:`clydebarrow` (new-integration) +- [ili9xxx] Implement st7735 support :esphomepr:`6838` by :ghuser:`clydebarrow` + +Past Changelogs +--------------- + +- :doc:`2024.5.0` +- :doc:`2024.4.0` +- :doc:`2024.3.0` +- :doc:`2024.2.0` +- :doc:`2023.12.0` +- :doc:`2023.11.0` +- :doc:`2023.10.0` +- :doc:`2023.9.0` +- :doc:`2023.8.0` +- :doc:`2023.7.0` +- :doc:`2023.6.0` +- :doc:`2023.5.0` +- :doc:`2023.4.0` +- :doc:`2023.3.0` +- :doc:`2023.2.0` +- :doc:`2022.12.0` +- :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` diff --git a/changelog/index.rst b/changelog/index.rst index 9c1d040bf..469697974 100644 --- a/changelog/index.rst +++ b/changelog/index.rst @@ -2,7 +2,7 @@ Changelog ========= .. redirect:: - :url: /changelog/2024.5.0.html + :url: /changelog/2024.6.0.html .. toctree:: :glob: