From 0e83fc94fe495452034f11133a47aca6b0347377 Mon Sep 17 00:00:00 2001 From: Jesse Hills <3060199+jesserockz@users.noreply.github.com> Date: Wed, 8 Jun 2022 22:46:20 +1200 Subject: [PATCH 01/18] Bump version to 2022.6.0b1 --- Doxygen | 2 +- Makefile | 2 +- _static/version | 2 +- conf.py | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/Doxygen b/Doxygen index 8780564ca..9505c11fe 100644 --- a/Doxygen +++ b/Doxygen @@ -38,7 +38,7 @@ PROJECT_NAME = "ESPHome" # could be handy for archiving the generated documentation or if some version # control system is used. -PROJECT_NUMBER = 2022.6.0-dev +PROJECT_NUMBER = 2022.6.0b1 # Using the PROJECT_BRIEF tag one can provide an optional one line description # for a project that appears at the top of each page and should give viewer a diff --git a/Makefile b/Makefile index 36a481722..9c743e8ed 100644 --- a/Makefile +++ b/Makefile @@ -1,5 +1,5 @@ ESPHOME_PATH = ../esphome -ESPHOME_REF = dev +ESPHOME_REF = 2022.6.0b1 .PHONY: html html-strict cleanhtml deploy help live-html Makefile netlify netlify-api api netlify-dependencies svg2png copy-svg2png minify diff --git a/_static/version b/_static/version index da61ca8c4..dda065666 100644 --- a/_static/version +++ b/_static/version @@ -1 +1 @@ -2022.6.0-dev \ No newline at end of file +2022.6.0b1 \ No newline at end of file diff --git a/conf.py b/conf.py index c47417aec..fe73d5642 100644 --- a/conf.py +++ b/conf.py @@ -68,7 +68,7 @@ author = "ESPHome" # The short X.Y version. version = "2022.6" # The full version, including alpha/beta/rc tags. -release = "2022.6.0-dev" +release = "2022.6.0b1" # The language for content autogenerated by Sphinx. Refer to documentation # for a list of supported languages. From de9eaaaa4228e00a320e09d41c8a365133abda35 Mon Sep 17 00:00:00 2001 From: Jesse Hills <3060199+jesserockz@users.noreply.github.com> Date: Wed, 8 Jun 2022 23:13:07 +1200 Subject: [PATCH 02/18] Update changelog for 2022.6.0b1 --- changelog/2022.6.0.rst | 178 +++++++++++++++++++++++++++++++++++++++++ changelog/index.rst | 2 +- 2 files changed, 179 insertions(+), 1 deletion(-) create mode 100644 changelog/2022.6.0.rst diff --git a/changelog/2022.6.0.rst b/changelog/2022.6.0.rst new file mode 100644 index 000000000..1ca2cf0e0 --- /dev/null +++ b/changelog/2022.6.0.rst @@ -0,0 +1,178 @@ +ESPHome 2022.6.0 - 15th June 2022 +================================= + +.. seo:: + :description: Changelog for ESPHome 2022.6.0. + :image: /_static/changelog-2022.5.0.png + :author: Jesse Hills + :author_twitter: @jesserockz + +.. imgtable:: + :columns: 2 + + Tuya Select, components/select/tuya, tuya.png + SGP41, components/sensor/sgp4x, sgp40.jpg + Media Player Core, components/media_player/index, folder-open.svg + I2S Audio, components/media_player/i2s_audio, i2s_audio.svg + + +We are almost half way through 2022 already! My, how fast time flies when we +are having fun with ESPHome. This release is kind of small, but packs some big features. +There will be no 2022.7.0 (July) release next month as I (:ghuser:`jesserockz`) will be away +around that time. So lets hope we can make 2022.8.0 worth the wait. + +🎶🎶🎶 Media Players +-------------------- + +More info here... + +Link to `Media Players `_. + +Join us in a live stream all about Audio in the Open Home! + +When: Thursday, June 16, at 7pm UTC / 12pm PST / 9pm CET + +.. raw:: html + + + +Includes with vars +------------------ + +:ghuser:`jimtng` is a newcomer to ESPHome. While migrating everything from a certain other +firmware, they found that they had to duplicate lots of yaml configuration for their many devices. +Basically, they decided to upgrade the ``!include`` yaml "directive" to allow variables. + +.. code-block:: yaml + + # device.yaml + binary_sensor: + - <<: !include + file: bin-sensor.yaml + vars: + pin: GPIO1 + name: "Binary Sensor 1" + switch: my_switch_1_id + delay: 10s + - <<: !include + file: bin-sensor.yaml + vars: + pin: GPIO1 + name: "Binary Sensor 2" + switch: my_switch_2_id + delay: 60s + + # bin-sensor.yaml + platform: gpio + pin: ${pin} + name: ${name} + on_press: + - switch.turn_on: ${switch} + - delay: ${delay} + - switch.turn_off: ${switch} + +Now while this is probably not the best example, the variables act as ``substitutions`` +and can be used anywhere in the underlying yaml file and can very much DRY out your configurations. + + + +Flesh out breaking changes here (see list below) + + +Full list of changes +-------------------- + +New Components +^^^^^^^^^^^^^^ + +- Add Tuya select :esphomepr:`3469` by :ghuser:`bearpawmaxim` (new-integration) +- Add support for SGP41 :esphomepr:`3382` by :ghuser:`martgras` (new-integration) (breaking-change) +- Implement Media Player and I2S Media player :esphomepr:`3487` by :ghuser:`jesserockz` (new-integration) + +Breaking Changes +^^^^^^^^^^^^^^^^ + +- Tcs34725 automatic sampling settings for improved dynamics and accuracy :esphomepr:`3258` by :ghuser:`swifty99` (breaking-change) +- Add support for SGP41 :esphomepr:`3382` by :ghuser:`martgras` (new-integration) (breaking-change) +- Remove deprecated fan speeds :esphomepr:`3397` by :ghuser:`kbickar` (breaking-change) +- Output a true RMS voltage % :esphomepr:`3494` by :ghuser:`josephdouce` (breaking-change) +- Add display_type property to DisplayBuffer :esphomepr:`3430` by :ghuser:`guillempages` (breaking-change) + +Notable Changes +^^^^^^^^^^^^^^^ + +- Add variable substitutions for !include :esphomepr:`3510` by :ghuser:`jimtng` (notable-change) + +All changes +^^^^^^^^^^^ + +- Tcs34725 automatic sampling settings for improved dynamics and accuracy :esphomepr:`3258` by :ghuser:`swifty99` (breaking-change) +- Remove duplicate convert_to_8bit_color function. :esphomepr:`2469` by :ghuser:`davet2001` +- Bump esptool from 3.3 to 3.3.1 :esphomepr:`3468` by :ghuser:`dependabot[bot]` +- Bump pylint from 2.13.8 to 2.13.9 :esphomepr:`3470` by :ghuser:`dependabot[bot]` +- Tuya status gpio support :esphomepr:`3466` by :ghuser:`bearpawmaxim` +- Add Tuya select :esphomepr:`3469` by :ghuser:`bearpawmaxim` (new-integration) +- MQTT cover: send state even if position is available :esphomepr:`3473` by :ghuser:`pyos` +- Ili9341 8bit indexed mode pt1 :esphomepr:`2490` by :ghuser:`davet2001` +- feat: esp32-camera add stream event :esphomepr:`3285` by :ghuser:`myml` +- Add support for SGP41 :esphomepr:`3382` by :ghuser:`martgras` (new-integration) (breaking-change) +- add support user-defined modbus functions :esphomepr:`3461` by :ghuser:`gazoodle` +- Remove deprecated fan speeds :esphomepr:`3397` by :ghuser:`kbickar` (breaking-change) +- Fix compile issues on windows :esphomepr:`3491` by :ghuser:`jesserockz` +- midea: New power_toggle action. Auto-use remote transmitter. :esphomepr:`3496` by :ghuser:`dudanov` +- Output a true RMS voltage % :esphomepr:`3494` by :ghuser:`josephdouce` (breaking-change) +- [scd4x] Fix not passing arguments to templatable value for perform_forced_calibration :esphomepr:`3495` by :ghuser:`Wumpf` +- Thermostat preset with modes :esphomepr:`3298` by :ghuser:`MrMDavidson` +- Allow Prometheus component to export internal components :esphomepr:`3508` by :ghuser:`jangrewe` +- [BedJet] Add configurable heating strategy :esphomepr:`3519` by :ghuser:`jhansche` +- Add variable substitutions for !include :esphomepr:`3510` by :ghuser:`jimtng` (notable-change) +- Change rain intensity sensor string :esphomepr:`3511` by :ghuser:`wtremmel` +- Implement Media Player and I2S Media player :esphomepr:`3487` by :ghuser:`jesserockz` (new-integration) +- Add mqtt.on_connect and mqtt.on_disconnect triggers :esphomepr:`3520` by :ghuser:`jimtng` +- Refactor clock syncing :esphomepr:`3503` by :ghuser:`jhansche` +- Added RC6 protocol support :esphomepr:`3514` by :ghuser:`Emrvb` +- Add display_type property to DisplayBuffer :esphomepr:`3430` by :ghuser:`guillempages` (breaking-change) +- Correct ADC auto-range for ESP32-S2 variant (13 bit adc) :esphomepr:`3158` by :ghuser:`CarlosGS` +- Suppress first rotary encoder event :esphomepr:`3532` by :ghuser:`mmakaay` +- Fix endless 'WiFi Unknown connection status 0' loop :esphomepr:`3530` by :ghuser:`mmakaay` +- support rotated ILI9341 (ILI9342) :esphomepr:`3526` by :ghuser:`ssieb` +- Fix sdp3x error checking :esphomepr:`3531` by :ghuser:`Azimath` +- Fix percentage validation for wrong data type input :esphomepr:`3524` by :ghuser:`mmakaay` +- Block Tuya light from reacting to dp changes if transitioning :esphomepr:`3076` by :ghuser:`VitaliyKurokhtin` +- Cleanup deprecated EntityBase::hash_base() :esphomepr:`3525` by :ghuser:`mmakaay` +- Fix bogus reading on no communication with MAX31865 :esphomepr:`3505` by :ghuser:`DAVe3283` +- Implement the media player actions :esphomepr:`3534` by :ghuser:`jesserockz` +- RG15 data is float/double, not int :esphomepr:`3512` by :ghuser:`wtremmel` + + +Past Changelogs +--------------- + +- :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 56c0517e3..b395ce5f6 100644 --- a/changelog/index.rst +++ b/changelog/index.rst @@ -2,7 +2,7 @@ Changelog ========= .. redirect:: - :url: /changelog/2022.5.0.html + :url: /changelog/2022.6.0.html .. toctree:: :glob: From a1df33e5f1c44a07fea11fec2db0d4155f2be37a Mon Sep 17 00:00:00 2001 From: Jesse Hills <3060199+jesserockz@users.noreply.github.com> Date: Wed, 8 Jun 2022 23:13:45 +1200 Subject: [PATCH 03/18] Update supporters for 2022.6.0b1 --- guides/supporters.rst | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/guides/supporters.rst b/guides/supporters.rst index 94c2df205..7211496dd 100644 --- a/guides/supporters.rst +++ b/guides/supporters.rst @@ -132,6 +132,7 @@ Contributors - `cbialobos (@cbialobos) `__ - `Ciprian Constantinescu (@cciprian5) `__ - `Marco (@cdrfun) `__ +- `Cellie (@CelliesProjects) `__ - `Kostas Chatzikokolakis (@chatziko) `__ - `chris-jennings (@chris-jennings) `__ - `Christian Taedcke (@chrta) `__ @@ -203,6 +204,7 @@ Contributors - `Mark (@Diramu) `__ - `Dirk Heinke (@DirkHeinke) `__ - `Dirk Jahnke (@dirkj) `__ +- `Johann V. (@divinitas) `__ - `djwlindenaar (@djwlindenaar) `__ - `Marcos Pérez Ferro (@djwmarcx) `__ - `Dan Mannock (@dmannock) `__ @@ -242,6 +244,7 @@ Contributors - `EmbeddedDevver (@EmbeddedDevver) `__ - `EmmanuelLM (@EmmanuelLM) `__ - `Emory Dunn (@emorydunn) `__ +- `Eric van Blokland (@Emrvb) `__ - `Eric Muehlstein (@emuehlstein) `__ - `Anders Persson (@emwap) `__ - `Bert (@Engelbert) `__ @@ -272,6 +275,7 @@ Contributors - `Francis-labo (@Francis-labo) `__ - `Francisk0 (@Francisk0) `__ - `Frank Bakker (@FrankBakkerNl) `__ +- `Frank (@FrankBoesing) `__ - `Frank Langtind (@frankiboy1) `__ - `Frankster-NL (@Frankster-NL) `__ - `Fredrik Erlandsson (@fredrike) `__ @@ -358,6 +362,7 @@ Contributors - `James Braid (@jamesbraid) `__ - `James Duke (@jamesduke) `__ - `James Gao (@jamesgao) `__ +- `Jan Grewe (@jangrewe) `__ - `János Rusiczki (@janosrusiczki) `__ - `Jan Pieper (@janpieper) `__ - `Jarek.P (@JaroslawPrzybyl) `__ @@ -384,6 +389,7 @@ Contributors - `Yuval Brik (@jhamhader) `__ - `Joe (@jhansche) `__ - `Jim Bauwens (@jimbauwens) `__ +- `jimtng (@jimtng) `__ - `Jérémy JOURDIN (@JJK801) `__ - `Jonathan Jefferies (@jjok) `__ - `John K. Luebs (@jkl1337) `__ @@ -455,6 +461,7 @@ Contributors - `Luca Gugelmann (@lgugelmann) `__ - `Lubos Horacek (@lhoracek) `__ - `Juraj Liso (@LiJu09) `__ +- `lingex (@lingex) `__ - `Lazar Obradovic (@lobradov) `__ - `Barry Loong (@loongyh) `__ - `LuBeDa (@lubeda) `__ @@ -468,6 +475,7 @@ Contributors - `Alex Peters (@Lx) `__ - `Michael Klamminger (@m1ch) `__ - `M95D (@M95D) `__ +- `maaadc (@maaadc) `__ - `Marc-Antoine Courteau (@macourteau) `__ - `Massimiliano Ravelli (@madron) `__ - `Alexandre-Jacques St-Jacques (@Maelstrom96) `__ @@ -699,7 +707,9 @@ Contributors - `Jan Čermák (@sairon) `__ - `sascha lammers (@sascha432) `__ - `Nils Schulte (@Schnilz) `__ +- `Wolle (@schreibfaul1) `__ - `Ville Skyttä (@scop) `__ +- `Stefan Seyfried (@seife) `__ - `sekkr1 (@sekkr1) `__ - `SenexCrenshaw (@SenexCrenshaw) `__ - `Sergio (@sergio303) `__ @@ -742,6 +752,7 @@ Contributors - `Sympatron GmbH (@Sympatron) `__ - `synco (@synco) `__ - `Marcel Feix (@Syndlex) `__ +- `SyXavier (@SyXavier) `__ - `Teemu Mikkonen (@T3m3z) `__ - `Taigar2015 (@Taigar2015) `__ - `Levente Tamas (@tamisoft) `__ @@ -753,6 +764,7 @@ Contributors - `Greg Lincoln (@tetious) `__ - `Nejc (@thedexboy) `__ - `Thomas Eckerstorfer (@TheEggi) `__ +- `Theexternaldisk (@Theexternaldisk) `__ - `TheGroundZero (@TheGroundZero) `__ - `thejonesyboy (@thejonesyboy) `__ - `TheJulianJES (@TheJulianJES) `__ @@ -776,6 +788,7 @@ Contributors - `TomFahey (@TomFahey) `__ - `tomlut (@tomlut) `__ - `Tom Matheussen (@Tommatheussen) `__ +- `tomle (@tomole444) `__ - `Tom Price (@tomtom5152) `__ - `tony (@tony-fav) `__ - `David Kiliani (@torfbolt) `__ @@ -798,6 +811,7 @@ Contributors - `ukewea (@ukewea) `__ - `Unai (@unaiur) `__ - `user897943 (@user897943) `__ +- `UT2UH (@UT2UH) `__ - `Vc (@Valcob) `__ - `Nad (@valordk) `__ - `André Lademann (@vergissberlin) `__ @@ -824,17 +838,15 @@ Contributors - `Rick van Hattem (@WoLpH) `__ - `workingmanrob (@workingmanrob) `__ - `Wojtek Strzalka (@wstrzalka) `__ +- `Wolfgang Tremmel (@wtremmel) `__ - `Wumpf (@Wumpf) `__ -- `wysiwyng (@wysiwyng) `__ - `Mike (@xsnoopy) `__ - `Yaroslav (@Yarikx) `__ - `Marcin Jaworski (@yawor) `__ -- `ychieux (@ychieux) `__ - `Pavel (@yekm) `__ - `Atsuko Ito (@yottatsa) `__ - `Nico B (@youknow0) `__ - `Yuval Aboulafia (@yuvalabou) `__ -- `zaluthar (@zaluthar) `__ - `david reid (@zathras777) `__ - `Zebble (@Zebble) `__ - `ZJY (@zhangjingye03) `__ @@ -843,4 +855,4 @@ Contributors - `Michael Labuschke (@zigman79) `__ - `Christian Zufferey (@zuzu59) `__ -*This page was last updated May 24, 2022.* +*This page was last updated June 8, 2022.* From e7276f5efc3a07a6292e30db8a2e32fb6ebf1abf Mon Sep 17 00:00:00 2001 From: Jesse Hills <3060199+jesserockz@users.noreply.github.com> Date: Thu, 9 Jun 2022 20:25:57 +1200 Subject: [PATCH 04/18] Remove svg2png from netlify build (#2121) --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 9c743e8ed..3ebd5acbc 100644 --- a/Makefile +++ b/Makefile @@ -48,7 +48,7 @@ netlify-dependencies: copy-svg2png: cp svg2png/*.png _build/html/_images/ -netlify: netlify-dependencies netlify-api html svg2png copy-svg2png +netlify: netlify-dependencies netlify-api html copy-svg2png lint: html-strict python3 lint.py From 7be3b7605601b57cc907d75edb64b2ce5ad74538 Mon Sep 17 00:00:00 2001 From: Jesse Hills <3060199+jesserockz@users.noreply.github.com> Date: Thu, 9 Jun 2022 20:27:25 +1200 Subject: [PATCH 05/18] Bump version to 2022.6.0b2 --- Doxygen | 2 +- Makefile | 2 +- _static/version | 2 +- conf.py | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/Doxygen b/Doxygen index 9505c11fe..61f4f4495 100644 --- a/Doxygen +++ b/Doxygen @@ -38,7 +38,7 @@ PROJECT_NAME = "ESPHome" # could be handy for archiving the generated documentation or if some version # control system is used. -PROJECT_NUMBER = 2022.6.0b1 +PROJECT_NUMBER = 2022.6.0b2 # Using the PROJECT_BRIEF tag one can provide an optional one line description # for a project that appears at the top of each page and should give viewer a diff --git a/Makefile b/Makefile index 3ebd5acbc..8020558b1 100644 --- a/Makefile +++ b/Makefile @@ -1,5 +1,5 @@ ESPHOME_PATH = ../esphome -ESPHOME_REF = 2022.6.0b1 +ESPHOME_REF = 2022.6.0b2 .PHONY: html html-strict cleanhtml deploy help live-html Makefile netlify netlify-api api netlify-dependencies svg2png copy-svg2png minify diff --git a/_static/version b/_static/version index dda065666..677e9c706 100644 --- a/_static/version +++ b/_static/version @@ -1 +1 @@ -2022.6.0b1 \ No newline at end of file +2022.6.0b2 \ No newline at end of file diff --git a/conf.py b/conf.py index fe73d5642..737984f07 100644 --- a/conf.py +++ b/conf.py @@ -68,7 +68,7 @@ author = "ESPHome" # The short X.Y version. version = "2022.6" # The full version, including alpha/beta/rc tags. -release = "2022.6.0b1" +release = "2022.6.0b2" # The language for content autogenerated by Sphinx. Refer to documentation # for a list of supported languages. From 1e160c2e8b7d7be82d07bfb0cacf07e90fbd6955 Mon Sep 17 00:00:00 2001 From: Jesse Hills <3060199+jesserockz@users.noreply.github.com> Date: Thu, 9 Jun 2022 20:27:59 +1200 Subject: [PATCH 06/18] Update changelog for 2022.6.0b2 --- changelog/2022.6.0.rst | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/changelog/2022.6.0.rst b/changelog/2022.6.0.rst index 1ca2cf0e0..17f0ce2b3 100644 --- a/changelog/2022.6.0.rst +++ b/changelog/2022.6.0.rst @@ -107,6 +107,12 @@ Notable Changes - Add variable substitutions for !include :esphomepr:`3510` by :ghuser:`jimtng` (notable-change) +Beta Changes +^^^^^^^^^^^^ + +- publish fan speed count for discovery :esphomepr:`3537` by :ghuser:`ssieb` +- Nextion brightness setting requires an assignment :esphomepr:`3533` by :ghuser:`nagyv` + All changes ^^^^^^^^^^^ @@ -147,6 +153,8 @@ All changes - Fix bogus reading on no communication with MAX31865 :esphomepr:`3505` by :ghuser:`DAVe3283` - Implement the media player actions :esphomepr:`3534` by :ghuser:`jesserockz` - RG15 data is float/double, not int :esphomepr:`3512` by :ghuser:`wtremmel` +- publish fan speed count for discovery :esphomepr:`3537` by :ghuser:`ssieb` +- Nextion brightness setting requires an assignment :esphomepr:`3533` by :ghuser:`nagyv` Past Changelogs From 573e01eaa1154cebd4360ce3599657e7d50ee730 Mon Sep 17 00:00:00 2001 From: Jesse Hills <3060199+jesserockz@users.noreply.github.com> Date: Thu, 9 Jun 2022 20:28:32 +1200 Subject: [PATCH 07/18] Update supporters for 2022.6.0b2 --- guides/supporters.rst | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/guides/supporters.rst b/guides/supporters.rst index 7211496dd..e2520e5fb 100644 --- a/guides/supporters.rst +++ b/guides/supporters.rst @@ -562,6 +562,7 @@ Contributors - `Kevin Uhlir (@n0bel) `__ - `Erik Näsström (@Naesstrom) `__ - `H. Árkosi Róbert (@nagyrobi) `__ +- `Viktor Nagy (@nagyv) `__ - `Oskar Napieraj (@napieraj) `__ - `Nate Lust (@natelust) `__ - `ueno (@nayuta-ueno) `__ @@ -685,6 +686,7 @@ Contributors - `Robert Alfaro (@robert-alfaro) `__ - `Rob Gridley (@robgridley) `__ - `Robin Smidsrød (@robinsmidsrod) `__ +- `RoboMagus (@RoboMagus) `__ - `RockBomber (@RockBomber) `__ - `RoganDawes (@RoganDawes) `__ - `Roi Tagar (@roitagar) `__ @@ -810,7 +812,6 @@ Contributors - `Tyler Menezes (@tylermenezes) `__ - `ukewea (@ukewea) `__ - `Unai (@unaiur) `__ -- `user897943 (@user897943) `__ - `UT2UH (@UT2UH) `__ - `Vc (@Valcob) `__ - `Nad (@valordk) `__ @@ -818,7 +819,6 @@ Contributors - `Víctor Ferrer García (@vicfergar) `__ - `Vincèn (@vincegre) `__ - `VitaliyKurokhtin (@VitaliyKurokhtin) `__ -- `voibit (@voibit) `__ - `Xuming Feng (@voicevon) `__ - `vxider (@Vxider) `__ - `WallyCZ (@WallyCZ) `__ @@ -855,4 +855,4 @@ Contributors - `Michael Labuschke (@zigman79) `__ - `Christian Zufferey (@zuzu59) `__ -*This page was last updated June 8, 2022.* +*This page was last updated June 9, 2022.* From 04e247ec9ab14a323c8cdf88a4becdcb146d1e97 Mon Sep 17 00:00:00 2001 From: Jesse Hills <3060199+jesserockz@users.noreply.github.com> Date: Mon, 13 Jun 2022 13:29:35 +1200 Subject: [PATCH 08/18] Add volume actions for media player (#2124) --- components/media_player/index.rst | 57 ++++++++++++++++++++++++++++--- guides/automations.rst | 1 + 2 files changed, 54 insertions(+), 4 deletions(-) diff --git a/components/media_player/index.rst b/components/media_player/index.rst index 48fc9d368..fa7a241ad 100644 --- a/components/media_player/index.rst +++ b/components/media_player/index.rst @@ -38,10 +38,21 @@ Configuration variables: See https://developers.home-assistant.io/docs/core/entity/#generic-properties for a list of available options. Set to ``""`` to remove the default entity category. +Media Player Actions +-------------------- + +All ``media_player`` actions can be used without specifying an ``id`` if you have only one ``media_player`` in +your configuration YAML. + +Configuration variables: + +**id** (*Optional*, :ref:`config-id`): The media player to control. Defaults to the only one in YAML. + + .. _media_player-play: ``media_player.play`` Action ----------------------------- +^^^^^^^^^^^^^^^^^^^^^^^^^^^^ This action will resume playing the media player. A future change will allow specifying the ``media_url`` for starting @@ -50,24 +61,62 @@ a new stream. .. _media_player-pause: ``media_player.pause`` Action ------------------------------ +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ This action pauses the current playback. .. _media_player-stop: ``media_player.stop`` Action ----------------------------- +^^^^^^^^^^^^^^^^^^^^^^^^^^^^ This action stops the current playback. .. _media_player-toggle: ``media_player.toggle`` Action ------------------------------- +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ This action will pause or resume the current playback. +.. _media_player-volume_up: + +``media_player.volume_up`` Action +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +This action will increase the volume of the media player. + +.. _media_player-volume_down: + +``media_player.volume_down`` Action +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +This action will decrease the volume of the media player. + +.. _media_player-volume_set: + +``media_player.volume_set`` Action +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +This action will set the volume of the media player. + +.. code-block:: + + on_...: + # Simple + - media_player.volume_set: 50% + + # Full + - media_player.volume_set: + id: media_player_id + volume: 50% + + # Simple with lambda + - media_player.volume_set: !lambda "return 0.5;" + +Configuration variables: + +**volume** (**Required**, percentage): The volume to set the media player to. See Also -------- diff --git a/guides/automations.rst b/guides/automations.rst index ca1aada8c..fb457796b 100644 --- a/guides/automations.rst +++ b/guides/automations.rst @@ -393,6 +393,7 @@ All Actions - :ref:`number.set ` / :ref:`number.to_min ` / :ref:`number.to_max ` / :ref:`number.decrement ` / :ref:`number.increment ` / :ref:`number.operation ` - :ref:`select.set ` / :ref:`select.set_index ` / :ref:`select.first ` / :ref:`select.last ` / :ref:`select.previous ` / :ref:`select.next ` / :ref:`select.operation ` - :ref:`media_player.play ` / :ref:`media_player.pause ` / :ref:`media_player.stop ` / :ref:`media_player.toggle ` + / :ref:`media_player.volume_up ` / :ref:`media_player.volume_down ` / :ref:`media_player.volume_set ` .. _config-condition: From 856f2f301fe8a058c4cccf37722e3c65abc4f9f2 Mon Sep 17 00:00:00 2001 From: Jesse Hills <3060199+jesserockz@users.noreply.github.com> Date: Mon, 13 Jun 2022 13:32:45 +1200 Subject: [PATCH 09/18] Bump version to 2022.6.0b3 --- Doxygen | 2 +- Makefile | 2 +- _static/version | 2 +- conf.py | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/Doxygen b/Doxygen index 61f4f4495..935f0f618 100644 --- a/Doxygen +++ b/Doxygen @@ -38,7 +38,7 @@ PROJECT_NAME = "ESPHome" # could be handy for archiving the generated documentation or if some version # control system is used. -PROJECT_NUMBER = 2022.6.0b2 +PROJECT_NUMBER = 2022.6.0b3 # Using the PROJECT_BRIEF tag one can provide an optional one line description # for a project that appears at the top of each page and should give viewer a diff --git a/Makefile b/Makefile index 8020558b1..8e5591e0a 100644 --- a/Makefile +++ b/Makefile @@ -1,5 +1,5 @@ ESPHOME_PATH = ../esphome -ESPHOME_REF = 2022.6.0b2 +ESPHOME_REF = 2022.6.0b3 .PHONY: html html-strict cleanhtml deploy help live-html Makefile netlify netlify-api api netlify-dependencies svg2png copy-svg2png minify diff --git a/_static/version b/_static/version index 677e9c706..1559d289c 100644 --- a/_static/version +++ b/_static/version @@ -1 +1 @@ -2022.6.0b2 \ No newline at end of file +2022.6.0b3 \ No newline at end of file diff --git a/conf.py b/conf.py index 737984f07..5d4e88600 100644 --- a/conf.py +++ b/conf.py @@ -68,7 +68,7 @@ author = "ESPHome" # The short X.Y version. version = "2022.6" # The full version, including alpha/beta/rc tags. -release = "2022.6.0b2" +release = "2022.6.0b3" # The language for content autogenerated by Sphinx. Refer to documentation # for a list of supported languages. From b284b7414f269908da325aa10eed7b6be5932c11 Mon Sep 17 00:00:00 2001 From: Jesse Hills <3060199+jesserockz@users.noreply.github.com> Date: Mon, 13 Jun 2022 13:33:17 +1200 Subject: [PATCH 10/18] Update changelog for 2022.6.0b3 --- changelog/2022.6.0.rst | 2 ++ 1 file changed, 2 insertions(+) diff --git a/changelog/2022.6.0.rst b/changelog/2022.6.0.rst index 17f0ce2b3..7671400c7 100644 --- a/changelog/2022.6.0.rst +++ b/changelog/2022.6.0.rst @@ -112,6 +112,7 @@ Beta Changes - publish fan speed count for discovery :esphomepr:`3537` by :ghuser:`ssieb` - Nextion brightness setting requires an assignment :esphomepr:`3533` by :ghuser:`nagyv` +- Implement media player volume actions :esphomepr:`3551` by :ghuser:`jesserockz` All changes ^^^^^^^^^^^ @@ -155,6 +156,7 @@ All changes - RG15 data is float/double, not int :esphomepr:`3512` by :ghuser:`wtremmel` - publish fan speed count for discovery :esphomepr:`3537` by :ghuser:`ssieb` - Nextion brightness setting requires an assignment :esphomepr:`3533` by :ghuser:`nagyv` +- Implement media player volume actions :esphomepr:`3551` by :ghuser:`jesserockz` Past Changelogs From 8c562ad95aeba44d238180155a0732ea2f5b6b59 Mon Sep 17 00:00:00 2001 From: Jesse Hills <3060199+jesserockz@users.noreply.github.com> Date: Mon, 13 Jun 2022 13:33:51 +1200 Subject: [PATCH 11/18] Update supporters for 2022.6.0b3 --- guides/supporters.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/guides/supporters.rst b/guides/supporters.rst index e2520e5fb..dafaf10e3 100644 --- a/guides/supporters.rst +++ b/guides/supporters.rst @@ -855,4 +855,4 @@ Contributors - `Michael Labuschke (@zigman79) `__ - `Christian Zufferey (@zuzu59) `__ -*This page was last updated June 9, 2022.* +*This page was last updated June 13, 2022.* From 1b2456a6cd863d551a59731a6ae2fd42db52d637 Mon Sep 17 00:00:00 2001 From: Jesse Hills <3060199+jesserockz@users.noreply.github.com> Date: Tue, 14 Jun 2022 20:41:47 +1200 Subject: [PATCH 12/18] Bump version to 2022.6.0b4 --- Doxygen | 2 +- Makefile | 2 +- _static/version | 2 +- conf.py | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/Doxygen b/Doxygen index 935f0f618..913bd1d89 100644 --- a/Doxygen +++ b/Doxygen @@ -38,7 +38,7 @@ PROJECT_NAME = "ESPHome" # could be handy for archiving the generated documentation or if some version # control system is used. -PROJECT_NUMBER = 2022.6.0b3 +PROJECT_NUMBER = 2022.6.0b4 # Using the PROJECT_BRIEF tag one can provide an optional one line description # for a project that appears at the top of each page and should give viewer a diff --git a/Makefile b/Makefile index 8e5591e0a..9e10afcb2 100644 --- a/Makefile +++ b/Makefile @@ -1,5 +1,5 @@ ESPHOME_PATH = ../esphome -ESPHOME_REF = 2022.6.0b3 +ESPHOME_REF = 2022.6.0b4 .PHONY: html html-strict cleanhtml deploy help live-html Makefile netlify netlify-api api netlify-dependencies svg2png copy-svg2png minify diff --git a/_static/version b/_static/version index 1559d289c..695f04138 100644 --- a/_static/version +++ b/_static/version @@ -1 +1 @@ -2022.6.0b3 \ No newline at end of file +2022.6.0b4 \ No newline at end of file diff --git a/conf.py b/conf.py index 5d4e88600..39ac72d71 100644 --- a/conf.py +++ b/conf.py @@ -68,7 +68,7 @@ author = "ESPHome" # The short X.Y version. version = "2022.6" # The full version, including alpha/beta/rc tags. -release = "2022.6.0b3" +release = "2022.6.0b4" # The language for content autogenerated by Sphinx. Refer to documentation # for a list of supported languages. From e20d168bc33fa1b7e3c64b677e4ed8896298e551 Mon Sep 17 00:00:00 2001 From: Jesse Hills <3060199+jesserockz@users.noreply.github.com> Date: Tue, 14 Jun 2022 20:42:06 +1200 Subject: [PATCH 13/18] Update changelog for 2022.6.0b4 --- changelog/2022.6.0.rst | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/changelog/2022.6.0.rst b/changelog/2022.6.0.rst index 7671400c7..bd862ea8e 100644 --- a/changelog/2022.6.0.rst +++ b/changelog/2022.6.0.rst @@ -113,6 +113,8 @@ Beta Changes - publish fan speed count for discovery :esphomepr:`3537` by :ghuser:`ssieb` - Nextion brightness setting requires an assignment :esphomepr:`3533` by :ghuser:`nagyv` - Implement media player volume actions :esphomepr:`3551` by :ghuser:`jesserockz` +- Fix compilation with ESP32-S3 :esphomepr:`3543` by :ghuser:`misery` +- Bm3xx: Fix typo :esphomepr:`3559` by :ghuser:`martgras` All changes ^^^^^^^^^^^ @@ -157,7 +159,8 @@ All changes - publish fan speed count for discovery :esphomepr:`3537` by :ghuser:`ssieb` - Nextion brightness setting requires an assignment :esphomepr:`3533` by :ghuser:`nagyv` - Implement media player volume actions :esphomepr:`3551` by :ghuser:`jesserockz` - +- Fix compilation with ESP32-S3 :esphomepr:`3543` by :ghuser:`misery` +- Bm3xx: Fix typo :esphomepr:`3559` by :ghuser:`martgras` Past Changelogs --------------- From 226e896b0bea1e48587c7ffa714a514c02a59e2d Mon Sep 17 00:00:00 2001 From: Jesse Hills <3060199+jesserockz@users.noreply.github.com> Date: Tue, 14 Jun 2022 20:42:40 +1200 Subject: [PATCH 14/18] Update supporters for 2022.6.0b4 --- guides/supporters.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/guides/supporters.rst b/guides/supporters.rst index dafaf10e3..01d21de45 100644 --- a/guides/supporters.rst +++ b/guides/supporters.rst @@ -855,4 +855,4 @@ Contributors - `Michael Labuschke (@zigman79) `__ - `Christian Zufferey (@zuzu59) `__ -*This page was last updated June 13, 2022.* +*This page was last updated June 14, 2022.* From c4052cad3c0f779b2b1f97489cdd3ee443300386 Mon Sep 17 00:00:00 2001 From: Jesse Hills <3060199+jesserockz@users.noreply.github.com> Date: Wed, 15 Jun 2022 07:57:58 +1200 Subject: [PATCH 15/18] Update My link on getting started (#2131) --- guides/getting_started_hassio.rst | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/guides/getting_started_hassio.rst b/guides/getting_started_hassio.rst index 8e81cac0a..2be91479e 100644 --- a/guides/getting_started_hassio.rst +++ b/guides/getting_started_hassio.rst @@ -19,13 +19,9 @@ If you do not have the official ESPHome add-on repository added you can add with .. raw:: html - Open your Home Assistant instance and show the add add-on repository dialog with a specific repository URL pre-filled. - -If you have the repository then you can install the addon here: - -.. raw:: html - - Open your Home Assistant instance and show the dashboard of a Supervisor add-on. + + Open your Home Assistant instance and show the dashboard of the ESPHome add-on. + After that, wait a bit until it is installed (this can take a while). Click "Start" and then click "Open Web UI". If you see "502: Bad Gateway" it is currently starting, and you can refresh the page after a couple of seconds. From aa77b67881f05aa9ea51c2353141ad9555334b7f Mon Sep 17 00:00:00 2001 From: Jesse Hills <3060199+jesserockz@users.noreply.github.com> Date: Thu, 16 Jun 2022 11:31:38 +1200 Subject: [PATCH 16/18] Bump version to 2022.6.0 --- Doxygen | 2 +- Makefile | 2 +- _static/version | 2 +- conf.py | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/Doxygen b/Doxygen index 913bd1d89..aa8b95949 100644 --- a/Doxygen +++ b/Doxygen @@ -38,7 +38,7 @@ PROJECT_NAME = "ESPHome" # could be handy for archiving the generated documentation or if some version # control system is used. -PROJECT_NUMBER = 2022.6.0b4 +PROJECT_NUMBER = 2022.6.0 # Using the PROJECT_BRIEF tag one can provide an optional one line description # for a project that appears at the top of each page and should give viewer a diff --git a/Makefile b/Makefile index 9e10afcb2..8a9cebdd3 100644 --- a/Makefile +++ b/Makefile @@ -1,5 +1,5 @@ ESPHOME_PATH = ../esphome -ESPHOME_REF = 2022.6.0b4 +ESPHOME_REF = 2022.6.0 .PHONY: html html-strict cleanhtml deploy help live-html Makefile netlify netlify-api api netlify-dependencies svg2png copy-svg2png minify diff --git a/_static/version b/_static/version index 695f04138..1245b2d31 100644 --- a/_static/version +++ b/_static/version @@ -1 +1 @@ -2022.6.0b4 \ No newline at end of file +2022.6.0 \ No newline at end of file diff --git a/conf.py b/conf.py index 39ac72d71..fe8ab960a 100644 --- a/conf.py +++ b/conf.py @@ -68,7 +68,7 @@ author = "ESPHome" # The short X.Y version. version = "2022.6" # The full version, including alpha/beta/rc tags. -release = "2022.6.0b4" +release = "2022.6.0" # The language for content autogenerated by Sphinx. Refer to documentation # for a list of supported languages. From c058907a078defb08a075891eeb88948349a6404 Mon Sep 17 00:00:00 2001 From: Jesse Hills <3060199+jesserockz@users.noreply.github.com> Date: Thu, 16 Jun 2022 12:42:53 +1200 Subject: [PATCH 17/18] Update changelog for 2022.6.0 --- _static/changelog-2022.6.0.png | Bin 0 -> 36546 bytes changelog/2022.6.0.rst | 45 +++++++++++++++++++++++++++------ 2 files changed, 37 insertions(+), 8 deletions(-) create mode 100644 _static/changelog-2022.6.0.png diff --git a/_static/changelog-2022.6.0.png b/_static/changelog-2022.6.0.png new file mode 100644 index 0000000000000000000000000000000000000000..e612869e9a3dadbfaadac7ad12d976513d173255 GIT binary patch literal 36546 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 literal 0 HcmV?d00001 diff --git a/changelog/2022.6.0.rst b/changelog/2022.6.0.rst index bd862ea8e..88cf474b0 100644 --- a/changelog/2022.6.0.rst +++ b/changelog/2022.6.0.rst @@ -3,7 +3,7 @@ ESPHome 2022.6.0 - 15th June 2022 .. seo:: :description: Changelog for ESPHome 2022.6.0. - :image: /_static/changelog-2022.5.0.png + :image: /_static/changelog-2022.6.0.png :author: Jesse Hills :author_twitter: @jesserockz @@ -24,13 +24,15 @@ around that time. So lets hope we can make 2022.8.0 worth the wait. 🎶🎶🎶 Media Players -------------------- -More info here... +ESPHome can now become a media player target for Home Assistant. This allows users to buy or build +ESP32 based speakers and place them around the house. Link to `Media Players `_. Join us in a live stream all about Audio in the Open Home! When: Thursday, June 16, at 7pm UTC / 12pm PST / 9pm CET +More info here... .. raw:: html @@ -40,6 +42,7 @@ When: Thursday, June 16, at 7pm UTC / 12pm PST / 9pm CET allowfullscreen> + Includes with vars ------------------ @@ -78,10 +81,36 @@ Basically, they decided to upgrade the ``!include`` yaml "directive" to allow va Now while this is probably not the best example, the variables act as ``substitutions`` and can be used anywhere in the underlying yaml file and can very much DRY out your configurations. +Breaking Changes +---------------- +TCS34725 integration time +^^^^^^^^^^^^^^^^^^^^^^^^^ -Flesh out breaking changes here (see list below) +The sampling settings for the TCS34725 have had a new option ``auto`` added and set as the default. This allows for better accuracy. +You are able to set it back to the previous default value by specifying ``integration_time: 2.4ms`` in your configuration. +SGP40 moved +^^^^^^^^^^^ + +While adding support for the SGP41 chip, the SGP40 was moved and they were both combined into a new ``sgp4x`` component. + +MQTT fan speeds +^^^^^^^^^^^^^^^ + +:esphomepr:`3397` removes deprecated MQTT fan speed state and speed command topics. +These were replaced with speed level state and command topics in ESPHome 2021.10.0. + +AC Dimmer +^^^^^^^^^ + +Due to an output power calculation the perceived power might vary slightly specially in the lower and upper regions. + +DisplayBuffer +^^^^^^^^^^^^^ + +A new virtual method was added to the DisplayBuffer class for specifying the display type. This change only affects ``external_components``. +See :esphomepr:`3430` for more details. Full list of changes -------------------- @@ -102,11 +131,6 @@ Breaking Changes - Output a true RMS voltage % :esphomepr:`3494` by :ghuser:`josephdouce` (breaking-change) - Add display_type property to DisplayBuffer :esphomepr:`3430` by :ghuser:`guillempages` (breaking-change) -Notable Changes -^^^^^^^^^^^^^^^ - -- Add variable substitutions for !include :esphomepr:`3510` by :ghuser:`jimtng` (notable-change) - Beta Changes ^^^^^^^^^^^^ @@ -116,6 +140,11 @@ Beta Changes - Fix compilation with ESP32-S3 :esphomepr:`3543` by :ghuser:`misery` - Bm3xx: Fix typo :esphomepr:`3559` by :ghuser:`martgras` +Notable Changes +^^^^^^^^^^^^^^^ + +- Add variable substitutions for !include :esphomepr:`3510` by :ghuser:`jimtng` (notable-change) + All changes ^^^^^^^^^^^ From bc6c34412eba44854f45eeb2e9bd6bdae9194139 Mon Sep 17 00:00:00 2001 From: Jesse Hills <3060199+jesserockz@users.noreply.github.com> Date: Thu, 16 Jun 2022 12:43:28 +1200 Subject: [PATCH 18/18] Update supporters for 2022.6.0 --- guides/supporters.rst | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/guides/supporters.rst b/guides/supporters.rst index 01d21de45..755cd94ae 100644 --- a/guides/supporters.rst +++ b/guides/supporters.rst @@ -366,6 +366,7 @@ Contributors - `János Rusiczki (@janosrusiczki) `__ - `Jan Pieper (@janpieper) `__ - `Jarek.P (@JaroslawPrzybyl) `__ +- `Jason-nz (@Jason-nz) `__ - `Jason2866 (@Jason2866) `__ - `Jason Hines (@jasonehines) `__ - `JasperPlant (@JasperPlant) `__ @@ -855,4 +856,4 @@ Contributors - `Michael Labuschke (@zigman79) `__ - `Christian Zufferey (@zuzu59) `__ -*This page was last updated June 14, 2022.* +*This page was last updated June 16, 2022.*