From 9c1d3d35735165d722b41df56ca9d300671fa1a7 Mon Sep 17 00:00:00 2001 From: Jesse Hills <3060199+jesserockz@users.noreply.github.com> Date: Tue, 13 Feb 2024 09:45:31 +1300 Subject: [PATCH 01/19] Bump version to 2024.2.0b1 --- Doxygen | 2 +- Makefile | 2 +- _static/version | 2 +- conf.py | 4 ++-- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/Doxygen b/Doxygen index 8c5682359..0a1795ab7 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 = 2024.1.0-dev +PROJECT_NUMBER = 2024.2.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 299496721..730c90dcd 100644 --- a/Makefile +++ b/Makefile @@ -1,5 +1,5 @@ ESPHOME_PATH = ../esphome -ESPHOME_REF = dev +ESPHOME_REF = 2024.2.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 dd273dfb1..4164e16b3 100644 --- a/_static/version +++ b/_static/version @@ -1 +1 @@ -2024.1.0-dev \ No newline at end of file +2024.2.0b1 \ No newline at end of file diff --git a/conf.py b/conf.py index 6133991d7..cc188e211 100644 --- a/conf.py +++ b/conf.py @@ -67,9 +67,9 @@ author = "ESPHome" # built documents. # # The short X.Y version. -version = "2024.1" +version = "2024.2" # The full version, including alpha/beta/rc tags. -release = "2024.1.0-dev" +release = "2024.2.0b1" # The language for content autogenerated by Sphinx. Refer to documentation # for a list of supported languages. From a1929814ea7d4936be2fa822428281fd2f81e503 Mon Sep 17 00:00:00 2001 From: Jesse Hills <3060199+jesserockz@users.noreply.github.com> Date: Tue, 13 Feb 2024 10:09:50 +1300 Subject: [PATCH 02/19] Update changelog for 2024.2.0b1 --- _static/changelog-2024.2.0.png | Bin 0 -> 74547 bytes changelog/2024.2.0.rst | 199 +++++++++++++++++++++++++++++++++ changelog/index.rst | 2 +- index.rst | 8 +- 4 files changed, 205 insertions(+), 4 deletions(-) create mode 100644 _static/changelog-2024.2.0.png create mode 100644 changelog/2024.2.0.rst diff --git a/_static/changelog-2024.2.0.png b/_static/changelog-2024.2.0.png new file mode 100644 index 0000000000000000000000000000000000000000..b8544e42f2c1c409bb196a66eb358d7df3724a7e GIT binary patch literal 74547 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 HV-oydo-L*b literal 0 HcmV?d00001 diff --git a/changelog/2024.2.0.rst b/changelog/2024.2.0.rst new file mode 100644 index 000000000..7d5392702 --- /dev/null +++ b/changelog/2024.2.0.rst @@ -0,0 +1,199 @@ +ESPHome 2024.2.0 - 21st February 2024 +===================================== + +.. seo:: + :description: Changelog for ESPHome 2024.2.0. + :image: /_static/changelog-2024.2.0.png + :author: Jesse Hills + :author_twitter: @jesserockz + +.. imgtable:: + :columns: 4 + + micro Wake Word, components/micro_wake_word, voice-assistant.svg, dark-invert + AS5600, components/sensor/as5600, as5600.jpg + ST7567, components/display/st7567, st7567.jpg + BME280 SPI, components/sensor/bme280, bme280.jpg + VEML3235, components/sensor/veml3235, veml3235.jpg + Honeywell HIH I2C, components/sensor/honeywell_hih_i2c, honeywellhih.jpg + Combination, components/sensor/combination, function.svg, dark-invert + + +Full list of changes +-------------------- + +New Components +^^^^^^^^^^^^^^ + +- feat: add AS5600 component/sensor :esphomepr:`5174` by :ghuser:`ammmze` (new-integration) +- Support for ST7567 display 128x64 (I2C, SPI) :esphomepr:`5952` by :ghuser:`latonita` (new-integration) +- BME280 SPI :esphomepr:`5538` by :ghuser:`apbodrov` (new-integration) (breaking-change) +- Add support for VEML3235 lux sensor :esphomepr:`5959` by :ghuser:`kbx81` (new-integration) +- Add support of Honeywell HumidIcon (I2C HIH series) Temperature & Humidity sensor :esphomepr:`5730` by :ghuser:`Benichou34` (new-integration) +- Add combination sensor and remove absorbed kalman_combinator component :esphomepr:`5438` by :ghuser:`kahrendt` (new-integration) (breaking-change) +- Add micro_wake_word component :esphomepr:`6136` by :ghuser:`kahrendt` (new-integration) + +Breaking Changes +^^^^^^^^^^^^^^^^ + +- PMSx003 add relevant device and state classes to default config :esphomepr:`5633` by :ghuser:`wheimbigner` (breaking-change) +- BME280 SPI :esphomepr:`5538` by :ghuser:`apbodrov` (new-integration) (breaking-change) +- convert cse7766 to non-polling :esphomepr:`6095` by :ghuser:`ssieb` (breaking-change) +- Add combination sensor and remove absorbed kalman_combinator component :esphomepr:`5438` by :ghuser:`kahrendt` (new-integration) (breaking-change) + +All changes +^^^^^^^^^^^ + +- Bump esptool from 4.6.2 to 4.7.0 :esphomepr:`5935` by :ghuser:`dependabot[bot]` +- Bump actions/download-artifact from 3.0.2 to 4.0.0 :esphomepr:`5936` by :ghuser:`dependabot[bot]` +- Bump build-image action versions :esphomepr:`5954` by :ghuser:`jesserockz` +- Revert "Bump build-image action versions" :esphomepr:`5955` by :ghuser:`jesserockz` +- Revert "Bump actions/download-artifact from 3.0.2 to 4.0.0" :esphomepr:`5956` by :ghuser:`jesserockz` +- Bump zeroconf from 0.130.0 to 0.131.0 :esphomepr:`5967` by :ghuser:`dependabot[bot]` +- Add ability to lock to set mode :esphomepr:`5924` by :ghuser:`ysmilda` +- feat: add AS5600 component/sensor :esphomepr:`5174` by :ghuser:`ammmze` (new-integration) +- Add default substitutions for package includes :esphomepr:`5752` by :ghuser:`mknjc` +- Add gradient option to addressable color wipe effect :esphomepr:`5689` by :ghuser:`lifeisafractal` +- Added alarm processing for Haier component (hOn protocol) :esphomepr:`5965` by :ghuser:`paveldn` +- Allow haier remote protocol to use lambdas :esphomepr:`5898` by :ghuser:`catlee` +- PMSx003 add relevant device and state classes to default config :esphomepr:`5633` by :ghuser:`wheimbigner` (breaking-change) +- Add waveshare 2.7in V2 model :esphomepr:`5903` by :ghuser:`gumulka` +- Add support for waveshare 2.9in B V3 version :esphomepr:`5902` by :ghuser:`gumulka` +- Fix pin reuse in test1 :esphomepr:`5978` by :ghuser:`jesserockz` +- Add Waveshare 1.47in 172x320 to ST7789v component :esphomepr:`5884` by :ghuser:`mrtoy-me` +- (fingerprint_grow) Added on_finger_scan_invalid automation. :esphomepr:`5885` by :ghuser:`RubenNL` +- Alarm panel: Add changes to support enhanced features :esphomepr:`5671` by :ghuser:`hwstar` +- support default pins for adafruit esp32 feather v2 :esphomepr:`5482` by :ghuser:`sbrudenell` +- Bug: Unwanted change resistance in x9c component :esphomepr:`5483` by :ghuser:`fizista` +- Improvements to RF receiver for Drayton Digistat heating controller :esphomepr:`5504` by :ghuser:`marshn` +- Reduce memory usage with StringRef in MQTT Components :esphomepr:`5719` by :ghuser:`kahrendt` +- Nextion allow underscore on names :esphomepr:`5979` by :ghuser:`edwardtfn` +- Add Keeloq RF protocol :esphomepr:`5511` by :ghuser:`marshn` +- Add a Binary Sensor Filter for state settling :esphomepr:`5900` by :ghuser:`cottsay` +- Lint the script folder files :esphomepr:`5991` by :ghuser:`jesserockz` +- web_server support for home assistant like styling :esphomepr:`5854` by :ghuser:`afarago` +- [Touchscreen] Add expire of touch record. :esphomepr:`5986` by :ghuser:`Fabian-Schmidt` +- Support for ST7567 display 128x64 (I2C, SPI) :esphomepr:`5952` by :ghuser:`latonita` (new-integration) +- Add constants used by multiple display drivers to global const.py :esphomepr:`6033` by :ghuser:`clydebarrow` +- Nextion queue size :esphomepr:`6029` by :ghuser:`edwardtfn` +- Ble client additions and fixes :esphomepr:`5277` by :ghuser:`clydebarrow` +- HaierProtocol library updated to 0.9.25 to fix the answer_timeout bug :esphomepr:`6015` by :ghuser:`paveldn` +- GT911 touchscreen: Fix bug causing touch button release to fail :esphomepr:`6042` by :ghuser:`clydebarrow` +- Display: Introduce `draw_pixels_at()` method for fast block display rendering :esphomepr:`6034` by :ghuser:`clydebarrow` +- clang-format and clang-tidy scripts: More robust algorithm to find correct executable :esphomepr:`6041` by :ghuser:`clydebarrow` +- Don't crash with invalid adc pin :esphomepr:`6059` by :ghuser:`ssieb` +- Add questionmark to default glyphs. :esphomepr:`6053` by :ghuser:`RubenNL` +- pylontech: fix voltage_low and voltage_high wrong unit :esphomepr:`6060` by :ghuser:`functionpointer` +- Bump flake8 from 6.1.0 to 7.0.0 :esphomepr:`6058` by :ghuser:`dependabot[bot]` +- Nextion enable upload from https when using esp-idf :esphomepr:`6051` by :ghuser:`edwardtfn` +- Extends UART change at runtime to ESP8266 :esphomepr:`6019` by :ghuser:`edwardtfn` +- Nextion draw QR code at runtime :esphomepr:`6027` by :ghuser:`edwardtfn` +- Extend i2s config options :esphomepr:`6056` by :ghuser:`Hadatko` +- Add getter for image data_start :esphomepr:`6036` by :ghuser:`clydebarrow` +- Bump hypothesis to 6.92.1 :esphomepr:`6011` by :ghuser:`bdraco` +- Bump recommended ESP32 IDF to 4.4.6 :esphomepr:`6048` by :ghuser:`bdraco` +- Bump pytest from 7.4.3 to 7.4.4 :esphomepr:`6046` by :ghuser:`dependabot[bot]` +- dashboard: refactor ping implementation to be more efficient :esphomepr:`6002` by :ghuser:`bdraco` +- Bump pytest-asyncio from 0.23.2 to 0.23.3 :esphomepr:`6047` by :ghuser:`dependabot[bot]` +- Bump black from 23.12.0 to 23.12.1 :esphomepr:`6018` by :ghuser:`dependabot[bot]` +- Run python tests on windows and macos :esphomepr:`6010` by :ghuser:`bdraco` +- BME280 SPI :esphomepr:`5538` by :ghuser:`apbodrov` (new-integration) (breaking-change) +- Actions to enable and disable WireGuard connection :esphomepr:`5690` by :ghuser:`droscy` +- hydreon_rgxx - fix missing cg.add(var.set_model(...)) :esphomepr:`6065` by :ghuser:`mrtoy-me` +- Bump pillow to 10.2.0. :esphomepr:`6091` by :ghuser:`pfrenssen` +- convert cse7766 to non-polling :esphomepr:`6095` by :ghuser:`ssieb` (breaking-change) +- Use touch state from ft63x6 driver. :esphomepr:`6055` by :ghuser:`nielsnl68` +- update script/setup so it works fine on windows :esphomepr:`6087` by :ghuser:`nielsnl68` +- add Pico-ResTouch-LCD-3.5 :esphomepr:`6078` by :ghuser:`nielsnl68` +- Revert "add Pico-ResTouch-LCD-3.5" :esphomepr:`6098` by :ghuser:`nielsnl68` +- Add triangle shapes to display component :esphomepr:`6096` by :ghuser:`mathieu-mp` +- Fingerprint_grow: Trigger on finger scan start and on finger scan misplaced :esphomepr:`6003` by :ghuser:`alexborro` +- Add continuous option to the graph :esphomepr:`6093` by :ghuser:`ssieb` +- Add NFC binary sensor platform :esphomepr:`6068` by :ghuser:`kbx81` +- Socket: Add recvfrom method to receive UDP with source address. :esphomepr:`6103` by :ghuser:`clydebarrow` +- Add support for VEML3235 lux sensor :esphomepr:`5959` by :ghuser:`kbx81` (new-integration) +- CV: tidy up Schema wrapper :esphomepr:`6105` by :ghuser:`jesserockz` +- Add support X.509 client certificates for MQTT. :esphomepr:`5778` by :ghuser:`h2zero` +- Fix color observation for triangle outline in display component :esphomepr:`6107` by :ghuser:`mathieu-mp` +- Add support of Honeywell HumidIcon (I2C HIH series) Temperature & Humidity sensor :esphomepr:`5730` by :ghuser:`Benichou34` (new-integration) +- Proposal: Test yaml for each component :esphomepr:`5398` by :ghuser:`Fabian-Schmidt` +- WiFi fast_connect: save/load BSSID and channel for faster connect from sleep :esphomepr:`5931` by :ghuser:`rguca` +- Fixes Waveshare 7.5in B V2 and V3 :esphomepr:`6079` by :ghuser:`Pofilo` +- Add combination sensor and remove absorbed kalman_combinator component :esphomepr:`5438` by :ghuser:`kahrendt` (new-integration) (breaking-change) +- Bump platformio from 6.1.11 to 6.1.13 :esphomepr:`6086` by :ghuser:`dependabot[bot]` +- Bump actions/cache from 3.3.2 to 4.0.0 :esphomepr:`6110` by :ghuser:`dependabot[bot]` +- Enable networking and some other components on host platform :esphomepr:`6114` by :ghuser:`clydebarrow` +- Fix time component for host platform :esphomepr:`6118` by :ghuser:`clydebarrow` +- Add quad spi features :esphomepr:`5925` by :ghuser:`clydebarrow` +- add AM2120 device type :esphomepr:`6115` by :ghuser:`alexbuit` +- Add support for Waveshare EPD 2.13" V3 :esphomepr:`5363` by :ghuser:`clydebarrow` +- OTA 2 which confirm each written chunk :esphomepr:`6066` by :ghuser:`tomaszduda23` +- Remove optional<> for pointer types :esphomepr:`6120` by :ghuser:`kroimon` +- Improve temperature precision in BME280 and BMP280 :esphomepr:`6124` by :ghuser:`jxl77` +- Nextion TFT upload IDF memory optimization :esphomepr:`6128` by :ghuser:`edwardtfn` +- Add support for Pico-ResTouch-LCD-3.5 to ili9xxx driver :esphomepr:`6129` by :ghuser:`clydebarrow` +- Ensure filename is shown when YAML raises an error :esphomepr:`6139` by :ghuser:`bdraco` +- ILI9XXX: Restore offset usage in set_addr_window :esphomepr:`6147` by :ghuser:`clydebarrow` +- Minimum 1 for full_update_every to prevent IntegerDivideByZero. :esphomepr:`6150` by :ghuser:`RubenNL` +- Support tri-color waveshare eink displays 2.7inch B and B V2 :esphomepr:`4238` by :ghuser:`rnauber` +- Synchronise Device Classes from Home Assistant :esphomepr:`6158` by :ghuser:`esphomebot` +- dfrobot_sen0395: Use setLatency instead of outputLatency :esphomepr:`5665` by :ghuser:`jfroy` +- Add some components to the new testing framework (A part 1) :esphomepr:`6142` by :ghuser:`kbx81` +- WRGB or RGBW? WS2814 :esphomepr:`6164` by :ghuser:`mhetzi` +- Add some components to the new testing framework (A part 2) :esphomepr:`6162` by :ghuser:`kbx81` +- Bump aioesphomeapi to 21.0.2 :esphomepr:`6188` by :ghuser:`bdraco` +- Add some components to the new testing framework (B) :esphomepr:`6173` by :ghuser:`kbx81` +- Add "transformer_active" flag for use in effects. :esphomepr:`6157` by :ghuser:`TikiBill` +- CSE7766: fix power and current measurements at low loads :esphomepr:`6180` by :ghuser:`twasilczyk` +- host platform: improvements and bugfixes :esphomepr:`6137` by :ghuser:`clydebarrow` +- WLED Sync fix and BK72XX support :esphomepr:`6190` by :ghuser:`ChuckMash` +- Add missing vector.h for lightwaverf :esphomepr:`6196` by :ghuser:`kbx81` +- Add some components to the new testing framework (C) :esphomepr:`6174` by :ghuser:`kbx81` +- update docstrings in cpp_generator.py :esphomepr:`6212` by :ghuser:`nielsnl68` +- Fixed group mask logic for WLED Sync fix :esphomepr:`6193` by :ghuser:`ChuckMash` +- Add micro_wake_word component :esphomepr:`6136` by :ghuser:`kahrendt` (new-integration) + +Past Changelogs +--------------- + +- :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 6549def71..f5beccf61 100644 --- a/changelog/index.rst +++ b/changelog/index.rst @@ -2,7 +2,7 @@ Changelog ========= .. redirect:: - :url: /changelog/2023.12.0.html + :url: /changelog/2024.2.0.html .. toctree:: :glob: diff --git a/index.rst b/index.rst index ec3967c43..73b9ee187 100644 --- a/index.rst +++ b/index.rst @@ -385,7 +385,7 @@ Miscellaneous AS3935, components/sensor/as3935, as3935.jpg, Storm lightning Binary Sensor Map, components/sensor/binary_sensor_map, binary_sensor_map.jpg, Map binary to value b-parasite, components/sensor/b_parasite, b_parasite.jpg, Moisture & Temperature & Humidity & Light - Combination, components/sensor/combination, function.svg, dark-invert + Combination, components/sensor/combination, function.svg, dark-invert Duty Time, components/sensor/duty_time, timer-play-outline.svg, dark-invert EZO sensor circuits, components/sensor/ezo, ezo-ph-circuit.png, (pH) FS3000, components/sensor/fs3000, fs3000.jpg, Air velocity @@ -658,7 +658,7 @@ Display Components ILI9486, components/display/ili9xxx, ili9341.jpg ILI9488, components/display/ili9xxx, ili9488.svg WSPICOLCD, components/display/ili9xxx, ili9488.svg - + Inkplate, components/display/inkplate6, inkplate6.jpg LCD Display, components/display/lcd_display, lcd.jpg MAX7219, components/display/max7219, max7219.jpg @@ -694,7 +694,7 @@ Touchscreen Components XPT2046, components/touchscreen/xpt2046, xpt2046.jpg GT911, components/touchscreen/gt911, esp32_s3_box_3.png FT63X6, components/touchscreen/ft63x6, wt32-sc01.png - + Cover Components ---------------- @@ -830,10 +830,12 @@ Home Assistant Companion Components Bluetooth Proxy, components/bluetooth_proxy, bluetooth.svg, dark-invert Voice Assistant, components/voice_assistant, voice-assistant.svg, dark-invert + micro Wake Word, components/micro_wake_word, voice-assistant.svg, dark-invert Sensor, components/sensor/homeassistant, home-assistant.svg, dark-invert Text Sensor, components/text_sensor/homeassistant, home-assistant.svg, dark-invert Binary Sensor, components/binary_sensor/homeassistant, home-assistant.svg, dark-invert + Alarm Control Panel Components ------------------------------ From 3cdefb23fe64703d576f2680b3b91777a8b01387 Mon Sep 17 00:00:00 2001 From: Jesse Hills <3060199+jesserockz@users.noreply.github.com> Date: Tue, 13 Feb 2024 10:10:27 +1300 Subject: [PATCH 03/19] Update supporters for 2024.2.0b1 --- guides/supporters.rst | 76 +++++++++++++++++++++++++------------------ 1 file changed, 44 insertions(+), 32 deletions(-) diff --git a/guides/supporters.rst b/guides/supporters.rst index 1268eab7d..b5b2707c8 100644 --- a/guides/supporters.rst +++ b/guides/supporters.rst @@ -30,7 +30,7 @@ Contributors - `Alessandro Campolo (@a13ssandr0) `__ - `Aalian Khan (@AalianKhan) `__ - `Adam Liddell (@aaliddell) `__ -- `Aapeli (@aapeliv) `__ +- `Aapeli Vuorinen (@aapeliv) `__ - `Aaron Gamble (@aarongamble) `__ - `Aaron S. Jackson (@AaronJackson) `__ - `Abel Matser (@abelmatser) `__ @@ -73,7 +73,7 @@ Contributors - `Alexandre Danault (@AlexDanault) `__ - `Alex Iribarren (@alexiri) `__ - `Alex Mekkering (@AlexMekkering) `__ -- `Alex Yao (@alexyao2015) `__ +- `Alex (@alexyao2015) `__ - `Alfredo (@alfredopironti) `__ - `Alibloke (@Alibloke) `__ - `Alessandro Ranellucci (@alranel) `__ @@ -94,12 +94,12 @@ Contributors - `Andreas Hergert (@andreashergert1984) `__ - `Andrew J.Swan (@andrewjswan) `__ - `andrewpc (@andrewpc) `__ -- `Andrew Y. (@andrey-yantsen) `__ +- `Andrey Yantsen (@andrey-yantsen) `__ - `Andrzej (@andriej) `__ - `Andreas (@anduchs) `__ - `Andy2No (@Andy2No) `__ - `AndyRPH (@AndyRPH) `__ -- `Angel Nunez Mencias (@angelnu) `__ +- `Vegetto (@angelnu) `__ - `Sergey Anisimov (@anisimovsergey) `__ - `Nikolay Vasilchuk (@Anonym-tsk) `__ - `Anthony Keane (@anthonykeane) `__ @@ -129,13 +129,13 @@ Contributors - `Alexander Turlov (@aturlov) `__ - `aus (@aus) `__ - `AustinMorris (@AustinMorris) `__ -- `Denis Demchenko (@Avirsaam) `__ +- `Avirsaam (@Avirsaam) `__ - `Arsène von Wyss (@avonwyss) `__ - `Andrew Weddle (@aweddle2) `__ - `Alexis Iglauer (@ax42) `__ - `Achilleas Pipinellis (@axilleas) `__ - `Kamil Trzciński (@ayufan) `__ -- `Azimath (@Azimath) `__ +- `Nicholas Peters (@Azimath) `__ - `Daniel (@azrael783) `__ - `B48D81EFCC (@B48D81EFCC) `__ - `Florian Mösch (@badbadc0ffee) `__ @@ -150,7 +150,7 @@ Contributors - `Bascht74 (@Bascht74) `__ - `Viktr (@BbIKTOP) `__ - `J. Nick Koston (@bdraco) `__ -- `Maxym Ocheretianko (@bearpawmaxim) `__ +- `Maxim Ocheretianko (@bearpawmaxim) `__ - `beaudeanadams (@beaudeanadams) `__ - `Benjamin Freeman (@Beetix) `__ - `beikeland (@beikeland) `__ @@ -175,7 +175,7 @@ Contributors - `Bert Hertogen (@berthertogen) `__ - `Brandon (@bgulla) `__ - `Benedikt Hübschen (@bhuebschen) `__ -- `Stef (@Bierchermuesli) `__ +- `Bierchermuesli (@Bierchermuesli) `__ - `bigwoof (@bigwoof) `__ - `Bill Church (@billchurch) `__ - `Brian Kaufman (@bkaufx) `__ @@ -197,7 +197,7 @@ Contributors - `Casey Olson (@bookcasey) `__ - `Borja Burgos (@borjaburgos) `__ - `Brian Orpin (@borpin) `__ -- `bouhaa (@BoukeHaarsma23) `__ +- `BoukeHaarsma23 (@BoukeHaarsma23) `__ - `brabl2 (@brabl2) `__ - `brainiac27 (@brainiac27) `__ - `brambo123 (@brambo123) `__ @@ -254,6 +254,7 @@ Contributors - `Chris (@chrismaki) `__ - `Christoph Wagner (@Christoph-Wagner) `__ - `Christian Taedcke (@chrta) `__ +- `ChuckMash (@ChuckMash) `__ - `Pavel Skuratovich (@Chupaka) `__ - `Chris Johnson (@ciband) `__ - `CircuitGuy (@CircuitGuy) `__ @@ -393,7 +394,7 @@ Contributors - `dr-oblivium (@dr-oblivium) `__ - `Jean Louis-Guerin (@DrCoolzic) `__ - `Drew Perttula (@drewp) `__ -- `Angel G (@drmodding) `__ +- `drmodding (@drmodding) `__ - `drmpf (@drmpf) `__ - `drogfild (@drogfild) `__ - `Simone Rossetto (@droscy) `__ @@ -404,7 +405,7 @@ Contributors - `Tom Soer (@dtx3k) `__ - `dubit0 (@dubit0) `__ - `Mikkel Jeppesen (@Duckle29) `__ -- `Sergey Dudanov (@dudanov) `__ +- `Sergey V. DUDANOV (@dudanov) `__ - `David Girón (@duhow) `__ - `Duncan Findlay (@duncf) `__ - `David van der Leij (@dvanderleij) `__ @@ -425,7 +426,7 @@ Contributors - `Eli Fidler (@efidler) `__ - `egandro (@egandro) `__ - `Erwin Kooi (@egeltje) `__ -- `Egglestron (@Egglestron) `__ +- `Maxime Michel (@Egglestron) `__ - `Eike (@ei-ke) `__ - `Elazar Leibovich (@elazarl) `__ - `Eli (@eli-xciv) `__ @@ -459,6 +460,7 @@ Contributors - `Evan Coleman (@evandcoleman) `__ - `Clemens Kirchgatterer (@everslick) `__ - `Evgeni Golov (@evgeni) `__ +- `evlo (@evlo) `__ - `Expaso (@Expaso) `__ - `Malte Franken (@exxamalte) `__ - `f0rdprefect (@f0rdprefect) `__ @@ -485,6 +487,7 @@ Contributors - `Clemens (@firegore) `__ - `Fredrik Jansson (@fjansson) `__ - `Frédéric Jouault (@fjouault) `__ +- `FL42 (@fl42) `__ - `Sean Vig (@flacjacket) `__ - `Diego Elio Pettenò (@Flameeyes) `__ - `Flaviu Tamas (@flaviut) `__ @@ -492,6 +495,7 @@ Contributors - `fluffymonster (@fluffymonster) `__ - `flyize (@flyize) `__ - `风飘雨 (@flyrainning) `__ +- `foltymat (@foltymat) `__ - `Fabio Pugliese Ornellas (@fornellas) `__ - `Fractal147 (@Fractal147) `__ - `Francis-labo (@Francis-labo) `__ @@ -572,6 +576,7 @@ Contributors - `Peter van Dijk (@Habbie) `__ - `Dusan Cervenka (@Hadatko) `__ - `Hagai Shatz (@hagai-shatz) `__ +- `hajar97 (@hajar97) `__ - `Boris Hajduk (@hajdbo) `__ - `Gavin Mogan (@halkeye) `__ - `Charles (@hallard) `__ @@ -586,7 +591,7 @@ Contributors - `Jimmy Hedman (@HeMan) `__ - `Hemi03 (@Hemi03) `__ - `HengYongChao (@HengYongChao) `__ -- `Andrei Solodovnikov (@HepoH3) `__ +- `HepoH3 (@HepoH3) `__ - `Hermann Kraus (@herm) `__ - `Herr Frei (@herrfrei) `__ - `highground88 (@highground88) `__ @@ -609,7 +614,7 @@ Contributors - `Adrián Panella (@ianchi) `__ - `Ian Anderson (@ianderso) `__ - `Ian Leeder (@ianleeder) `__ -- `Honza Pobořil (@iBobik) `__ +- `Jan Pobořil (@iBobik) `__ - `igg (@igg) `__ - `Ignacio Hernandez-Ros (@IgnacioHR) `__ - `Ivan Grokhotkov (@igrr) `__ @@ -619,7 +624,6 @@ Contributors - `ilium007 (@ilium007) `__ - `Iman Ahmadvand (@IMAN4K) `__ - `imgbot[bot] (@imgbot[bot]) `__ -- `ImSorryButWho (@ImSorryButWho) `__ - `imwoo90 (@imwoo90) `__ - `Dom (@Ing-Dom) `__ - `Ingo Becker (@ingobecker) `__ @@ -666,6 +670,7 @@ Contributors - `jimtng (@jimtng) `__ - `jivesinger (@jivesinger) `__ - `jj-uk (@jj-uk) `__ +- `Jean J. de Jong (@jjdejong) `__ - `John K. Luebs (@jkl1337) `__ - `Jeppe Ladefoged (@jladefoged) `__ - `Jean-Luc Béchennec (@jlbirccyn) `__ @@ -690,11 +695,12 @@ Contributors - `Joris S (@Jorre05) `__ - `Jared Sanson (@jorticus) `__ - `JosephTang (@JosephTang) `__ +- `Joshua Baran (@joshbaran) `__ - `Joshua Spence (@joshuaspence) `__ - `joskfg (@joskfg) `__ - `Joscha Wagner (@jowgn) `__ - `Javier Peletier (@jpeletier) `__ -- `Jos Suanet (@jsuanet) `__ +- `jsuanet (@jsuanet) `__ - `James Szalay (@jtszalay) `__ - `Jules-R (@Jules-R) `__ - `Julie Koubová (@juliekoubova) `__ @@ -732,7 +738,7 @@ Contributors - `Kevin P. Fleming (@kpfleming) `__ - `Karl Q. (@kquinsland) `__ - `Anandha Saravanan (@KratosMr) `__ -- `Stefan Rado (@kroimon) `__ +- `kroimon (@kroimon) `__ - `krunkel (@krunkel) `__ - `kryptonitecb3 (@kryptonitecb3) `__ - `Kendell R (@KTibow) `__ @@ -746,16 +752,17 @@ Contributors - `Anton Viktorov (@latonita) `__ - `Lawrie George (@lawriege) `__ - `Ludovic BOUÉ (@lboue) `__ -- `Luca Cavalli (@lcavalli) `__ +- `lcavalli (@lcavalli) `__ - `Craig Fletcher (@leakypixel) `__ - `Dominik Wagenknecht (@LeDominik) `__ - `Benny de Leeuw (@leeuwte) `__ +- `Thayne (@Legot) `__ - `Leonardo La Rocca (@leoli51) `__ - `leoshusar (@leoshusar) `__ - `Leo Winter (@LeoWinterDE) `__ - `Lubos Horacek (@lhoracek) `__ - `Liionboy (@Liionboy) `__ -- `LiJu09 (@LiJu09) `__ +- `Juraj Liso (@LiJu09) `__ - `Li Junru (@lijunru-hub) `__ - `lillborje71 (@lillborje71) `__ - `Caleb Pryor (@lilmansplace) `__ @@ -802,6 +809,7 @@ Contributors - `Ben Marengo (@marengaz) `__ - `Marvin Gaube (@margau) `__ - `maringeph (@maringeph) `__ +- `Mario Di Vece (@mariodivece) `__ - `Mark Hildreth (@markhildreth) `__ - `Mark Schabacker (@markschabacker) `__ - `marshn (@marshn) `__ @@ -816,6 +824,7 @@ Contributors - `Mat931 (@Mat931) `__ - `mathieu-mp (@mathieu-mp) `__ - `matikij (@matikij) `__ +- `Matjah Sonneveld (@matjahs) `__ - `Michel Marti (@matoxp) `__ - `matt123p (@matt123p) `__ - `matthias882 (@matthias882) `__ @@ -885,7 +894,6 @@ Contributors - `Martin Wetterwald (@mwetterw) `__ - `mwolter805 (@mwolter805) `__ - `myhomeiot (@myhomeiot) `__ -- `Igor Scheller (@MyIgel) `__ - `Mykle (@myklemykle) `__ - `Mynasru (@Mynasru) `__ - `Kevin Uhlir (@n0bel) `__ @@ -905,6 +913,7 @@ Contributors - `Nazar Mokrynskyi (@nazar-pc) `__ - `Bergont Nicolas (@nbergont) `__ - `neilger (@neilger) `__ +- `Neil Martin (@neilmartin83) `__ - `Nejc Koncan (@nejc-cc) `__ - `Nerijus Baliūnas (@nerijus) `__ - `Nicolas Graziano (@ngraziano) `__ @@ -928,7 +937,6 @@ Contributors - `Greg Johnson (@notgwj) `__ - `JJ (@notjj) `__ - `Geoffrey Mayo (@notmayo) `__ -- `notsonominal (@notsonominal) `__ - `nouser2013 (@nouser2013) `__ - `Paul Read (@nsolvepaul) `__ - `Nick (@ntompson) `__ @@ -944,7 +952,7 @@ Contributors - `Ockert Marais (@OckertM) `__ - `Dave Walker (@oddsockmachine) `__ - `Odd Stråbø (@oddstr13) `__ -- `Andrii Ganzevych (@odya) `__ +- `Andrey Ganzevich (@odya) `__ - `ogatatsu (@ogatatsu) `__ - `Oğuzhan Başer (@oguzhanbaser) `__ - `Larry (@ojaksch) `__ @@ -955,7 +963,7 @@ Contributors - `Onne (@onnlucky) `__ - `optimusprimespace (@optimusprimespace) `__ - `Oscar Bolmsten (@oscar-b) `__ -- `Mauri (@Otamay) `__ +- `Otamay (@Otamay) `__ - `Otto Winter (@OttoWinter) `__ - `Maxime Dufour (@outscale-mdr) `__ - `Ben Owen (@owenb321) `__ @@ -1029,7 +1037,7 @@ Contributors - `RadekHvizdos (@RadekHvizdos) `__ - `rafalstarczak (@rafalstarczak) `__ - `Florian Ragwitz (@rafl) `__ -- `Ben Winslow (@raineth) `__ +- `raineth (@raineth) `__ - `Ben V. Brown (@Ralim) `__ - `Benjamin G. (@Randomblock1) `__ - `randomllama (@randomllama) `__ @@ -1050,7 +1058,7 @@ Contributors - `Robert Gabrielson (@rgabrielson11) `__ - `Rafael Goes (@rgriffogoes) `__ - `rheinz (@rheinz) `__ -- `Richard Hopton (@richardhopton) `__ +- `richardhopton (@richardhopton) `__ - `Richard Klingler (@richardklingler) `__ - `Richard Lewis (@richrd) `__ - `Rishab Mehta (@rishabmehta7) `__ @@ -1062,6 +1070,7 @@ Contributors - `rnauber (@rnauber) `__ - `Rob Deutsch (@rob-deutsch) `__ - `Robert Alfaro (@robert-alfaro) `__ +- `Robert91911 (@Robert91911) `__ - `Robinson1999 (@Robinson1999) `__ - `RoboMagus (@RoboMagus) `__ - `Roeland Lutters (@Roeland54) `__ @@ -1122,6 +1131,7 @@ Contributors - `signix (@signix) `__ - `SiliconAvatar (@SiliconAvatar) `__ - `Mark Lopez (@Silvenga) `__ +- `James Chaloupka (@SirGoodenough) `__ - `Maximilian Ertl (@Sirs0ri) `__ - `Francisco J. Solis (@sisco0) `__ - `Derek Hageman (@Sizurka) `__ @@ -1152,7 +1162,7 @@ Contributors - `sticilface (@sticilface) `__ - `Stijn Tintel (@stintel) `__ - `Mathias Stock (@Stock-M) `__ -- `Daniel Jönsson (@Strixx76) `__ +- `Strixx76 (@Strixx76) `__ - `stubs12 (@stubs12) `__ - `sud33p (@sud33p) `__ - `sumirati (@sumirati) `__ @@ -1206,8 +1216,9 @@ Contributors - `Thomas Langewouters (@thouters) `__ - `Transylvania High Tech (@thtro) `__ - `Thunderbiscuits (@Thunderbiscuits) `__ -- `Tiago Freire (@tiagofreire-pt) `__ +- `tiagofreire-pt (@tiagofreire-pt) `__ - `Tijs-B (@Tijs-B) `__ +- `Bill Adams (@TikiBill) `__ - `Tim Boldt (@timboldt) `__ - `Tim Laurence (@timdaman) `__ - `Aidan Timson (@timmo001) `__ @@ -1216,7 +1227,7 @@ Contributors - `Tinkerfish (@tinkerfish) `__ - `TJ Horner (@tjhorner) `__ - `Christian (@Tntdruid) `__ -- `Philipp Riederer (@toelke) `__ +- `Philipp Tölke (@toelke) `__ - `tomaszduda23 (@tomaszduda23) `__ - `Tom Brien (@TomBrien) `__ - `Thomas Combriat (@tomcombriat) `__ @@ -1229,7 +1240,7 @@ Contributors - `Aleksandra M (@tort32) `__ - `tracestep (@tracestep) `__ - `Trent Houliston (@TrentHouliston) `__ -- `Felix E (@tribut) `__ +- `Felix Eckhofer (@tribut) `__ - `Trick van Staveren (@trickv) `__ - `TripitakaBC (@TripitakaBC) `__ - `Tobias (@tripplet) `__ @@ -1255,6 +1266,7 @@ Contributors - `Vlad Yarotsky (@v-yarotsky) `__ - `Vc (@Valcob) `__ - `Nad (@valordk) `__ +- `Vicent Climent (@vcliment89) `__ - `Veli Veromann (@velijv) `__ - `André Lademann (@vergissberlin) `__ - `Austin (@vidplace7) `__ @@ -1279,7 +1291,7 @@ Contributors - `whimsee (@whimsee) `__ - `wifwucite (@wifwucite) `__ - `wilberforce (@wilberforce) `__ -- `Willem Vooijs (@wildekek) `__ +- `wildekek (@wildekek) `__ - `Wingman3434 (@Wingman3434) `__ - `Emil Hesslow (@WizKid) `__ - `WJCarpenter (@wjcarpenter) `__ @@ -1298,7 +1310,7 @@ Contributors - `Xose Pérez (@xoseperez) `__ - `WitchKing (@xvil) `__ - `Andrew Kroll (@xxxajk) `__ -- `Yaroslav Heriatovych (@Yarikx) `__ +- `Yaroslav (@Yarikx) `__ - `Marcin Jaworski (@yawor) `__ - `yousaf465 (@yousaf465) `__ - `Yuval Aboulafia (@yuvalabou) `__ @@ -1313,4 +1325,4 @@ Contributors - `Zsolt Zsiros (@ZsZs73) `__ - `Christian Zufferey (@zuzu59) `__ -*This page was last updated January 22, 2024.* +*This page was last updated February 13, 2024.* From 54d84e26c4ec84efa5fc2c4fa82d37cd5bc14dfc Mon Sep 17 00:00:00 2001 From: kahrendt Date: Sun, 18 Feb 2024 00:50:52 -0500 Subject: [PATCH 04/19] probability cutoff is a percentage (#3609) --- components/micro_wake_word.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/components/micro_wake_word.rst b/components/micro_wake_word.rst index 21103d56e..68e0b4280 100644 --- a/components/micro_wake_word.rst +++ b/components/micro_wake_word.rst @@ -38,7 +38,7 @@ Configuration variables: The below two options are provided by the JSON file, but can be overridden in YAML. -- **probability_cutoff** (*Optional*, float): The probability cutoff for the wake word detection. +- **probability_cutoff** (*Optional*, percentage): The probability cutoff for the wake word detection. If the probability of the wake word is below this value, the wake word is not detected. A larger value reduces the number of false accepts but increases the number of false rejections. - **sliding_window_average_size** (*Optional*, int): The size of the sliding window average for the wake word detection. A small value lowers latency but may increase the number of false accepts. From c473a1d6cd073c03a93c6c6430117e459bbf477f Mon Sep 17 00:00:00 2001 From: Jesse Hills <3060199+jesserockz@users.noreply.github.com> Date: Mon, 19 Feb 2024 11:53:00 +1300 Subject: [PATCH 05/19] microWakeWord: Add minimum_esphome_version as optional field (#3612) --- components/micro_wake_word.rst | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/components/micro_wake_word.rst b/components/micro_wake_word.rst index 68e0b4280..c541f72cc 100644 --- a/components/micro_wake_word.rst +++ b/components/micro_wake_word.rst @@ -61,7 +61,7 @@ Model JSON } } -The model JSON file contains the following fields that are all **required**: +The model JSON file contains the following fields that are all **required** unless otherwise specified: - **type** (string): The type of the model. This should always be ``micro``. - **wake_word** (string): The wake word that the model is trained to detect. @@ -74,6 +74,7 @@ The model JSON file contains the following fields that are all **required**: - **probability_cutoff** (float): The probability cutoff for the wake word detection. If the probability of the wake word is below this value, the wake word is not detected. - **sliding_window_average_size** (int): The size of the sliding window average for the wake word detection. + - **minimum_esphome_version** (*Optional* version): The minimum ESPHome version required to use this model. Automations From 1d6cf403acae7fa4b828b9ad6c9075850761360c Mon Sep 17 00:00:00 2001 From: Jesse Hills <3060199+jesserockz@users.noreply.github.com> Date: Mon, 19 Feb 2024 17:01:06 +1300 Subject: [PATCH 06/19] Bump version to 2024.2.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 0a1795ab7..a7512c2c1 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 = 2024.2.0b1 +PROJECT_NUMBER = 2024.2.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 730c90dcd..1edd7b01f 100644 --- a/Makefile +++ b/Makefile @@ -1,5 +1,5 @@ ESPHOME_PATH = ../esphome -ESPHOME_REF = 2024.2.0b1 +ESPHOME_REF = 2024.2.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 4164e16b3..4bd1e8a47 100644 --- a/_static/version +++ b/_static/version @@ -1 +1 @@ -2024.2.0b1 \ No newline at end of file +2024.2.0b2 \ No newline at end of file diff --git a/conf.py b/conf.py index cc188e211..f8647991a 100644 --- a/conf.py +++ b/conf.py @@ -69,7 +69,7 @@ author = "ESPHome" # The short X.Y version. version = "2024.2" # The full version, including alpha/beta/rc tags. -release = "2024.2.0b1" +release = "2024.2.0b2" # The language for content autogenerated by Sphinx. Refer to documentation # for a list of supported languages. From 499ee69d07706a1a92438cb54b2b7940a6569fe3 Mon Sep 17 00:00:00 2001 From: Jesse Hills <3060199+jesserockz@users.noreply.github.com> Date: Mon, 19 Feb 2024 17:01:44 +1300 Subject: [PATCH 07/19] Update changelog for 2024.2.0b2 --- changelog/2024.2.0.rst | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/changelog/2024.2.0.rst b/changelog/2024.2.0.rst index 7d5392702..80dbf36ab 100644 --- a/changelog/2024.2.0.rst +++ b/changelog/2024.2.0.rst @@ -41,6 +41,16 @@ Breaking Changes - convert cse7766 to non-polling :esphomepr:`6095` by :ghuser:`ssieb` (breaking-change) - Add combination sensor and remove absorbed kalman_combinator component :esphomepr:`5438` by :ghuser:`kahrendt` (new-integration) (breaking-change) +Beta Changes +^^^^^^^^^^^^ + +- AUTO_LOAD ``sensor`` for ``shelly_dimmer`` :esphomepr:`6223` by :ghuser:`kbx81` +- Add more debugging logs to microWakeWord :esphomepr:`6238` by :ghuser:`kahrendt` +- Fix to RF receiver for Drayton Digistat heating controller :esphomepr:`6235` by :ghuser:`marshn` +- WRGB Use correct multiplier :esphomepr:`6237` by :ghuser:`mhetzi` +- Add optional minimum esphome version to microWakeWord manifest :esphomepr:`6240` by :ghuser:`jesserockz` +- Fix xl9535 pin reads :esphomepr:`6242` by :ghuser:`jesserockz` + All changes ^^^^^^^^^^^ From 13a8c8f3908483bd57fb136f35e6af944dda8b9a Mon Sep 17 00:00:00 2001 From: Jesse Hills <3060199+jesserockz@users.noreply.github.com> Date: Mon, 19 Feb 2024 17:02:16 +1300 Subject: [PATCH 08/19] Update supporters for 2024.2.0b2 --- guides/supporters.rst | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/guides/supporters.rst b/guides/supporters.rst index b5b2707c8..b79f65ef9 100644 --- a/guides/supporters.rst +++ b/guides/supporters.rst @@ -45,7 +45,6 @@ Contributors - `Andrea Donno (@adonno) `__ - `Adrian Fretwell (@AdrianFretwell) `__ - `Adrien Brault (@adrienbrault) `__ -- `Ian Blais (@aeonsablaze) `__ - `Attila Farago (@afarago) `__ - `Kjell Braden (@afflux) `__ - `Alejandro Galfrascoli (@AGalfra) `__ @@ -178,6 +177,7 @@ Contributors - `Bierchermuesli (@Bierchermuesli) `__ - `bigwoof (@bigwoof) `__ - `Bill Church (@billchurch) `__ +- `bisbastuner (@bisbastuner) `__ - `Brian Kaufman (@bkaufx) `__ - `JDavid (@blackhack) `__ - `blackshoals (@blackshoals) `__ @@ -226,6 +226,7 @@ Contributors - `Carlos Gustavo Sarmiento (@carlos-sarmiento) `__ - `Carlos Garcia Saura (@CarlosGS) `__ - `Carlos Ruiz (@CarlosRDomin) `__ +- `Carlos Ortega (@carlosV2) `__ - `carlywarly (@carlywarly) `__ - `Carson Full (@CarsonF) `__ - `carstenschroeder (@carstenschroeder) `__ @@ -524,7 +525,6 @@ Contributors - `gcopeland (@gcopeland) `__ - `Greg Cormier (@gcormier) `__ - `GeekVisit (@GeekVisit) `__ -- `Ian Reinhart Geiser (@geiseri) `__ - `R Huish (@genestealer) `__ - `Geoff Davis (@geoffdavis) `__ - `Geoffrey Van Landeghem (@geoffrey-vl) `__ @@ -684,6 +684,7 @@ Contributors - `jochenvg (@jochenvg) `__ - `Johboh (@Johboh) `__ - `John Moxley (@johnmoxley) `__ +- `John White (@johnpwhite) `__ - `Dave Johnston (@johnsto) `__ - `joiboi (@joiboi) `__ - `JonasEr (@JonasEr) `__ @@ -848,6 +849,7 @@ Contributors - `Merlin Schumacher (@merlinschumacher) `__ - `Martin Flasskamp (@MFlasskamp) `__ - `Michael Hoffmann (@mghoffmann) `__ +- `Marcel Hetzendorfer (@mhetzi) `__ - `M Hightower (@mhightower83) `__ - `Michael Muré (@MichaelMure) `__ - `Michal Fapso (@michalfapso) `__ @@ -1102,6 +1104,7 @@ Contributors - `Sam Turner (@samturner3) `__ - `Sender (@sanderlv) `__ - `Sanjay Govind (@sanjay900) `__ +- `Marcin (@Santanachia) `__ - `sascha lammers (@sascha432) `__ - `Davide Perini (@sblantipodi) `__ - `sbur83 (@sbur83) `__ @@ -1318,11 +1321,10 @@ Contributors - `david reid (@zathras777) `__ - `Brynley McDonald (@ZephireNZ) `__ - `Geek_cat (@zhzhzhy) `__ -- `I. Tomita (@ziceva) `__ - `Stefan Goethals (@zipkid) `__ - `zivillian (@zivillian) `__ - `Zack Barett (@zsarnett) `__ - `Zsolt Zsiros (@ZsZs73) `__ - `Christian Zufferey (@zuzu59) `__ -*This page was last updated February 13, 2024.* +*This page was last updated February 19, 2024.* From 6a9e138cecd43df90e3bc1d21c01c4d5104c078b Mon Sep 17 00:00:00 2001 From: Keith Burzinski Date: Tue, 20 Feb 2024 15:38:28 -0600 Subject: [PATCH 09/19] Update VA docs to add on_idle action (#3572) --- components/voice_assistant.rst | 2 ++ 1 file changed, 2 insertions(+) diff --git a/components/voice_assistant.rst b/components/voice_assistant.rst index c59d57a5f..b3c487f36 100644 --- a/components/voice_assistant.rst +++ b/components/voice_assistant.rst @@ -64,6 +64,8 @@ Configuration: (voice response) playback starts. Requires ``speaker`` to be configured. - **on_tts_stream_end** (*Optional*, :ref:`Automation `): An automation to perform when audio stream (voice response) playback ends. Requires ``speaker`` to be configured. +- **on_idle** (*Optional*, :ref:`Automation `): An automation to perform + when the voice assistant is idle (no other actions/states are in progress). - **on_error** (*Optional*, :ref:`Automation `): An automation to perform when the voice assistant has encountered an error. The error code and message are available to automations as the variables ``code`` and ``message``. From f20d38f1f76ac6fb18ee1d181eef25b220c2bfcd Mon Sep 17 00:00:00 2001 From: Jesse Hills <3060199+jesserockz@users.noreply.github.com> Date: Wed, 21 Feb 2024 10:57:46 +1300 Subject: [PATCH 10/19] Bump version to 2024.2.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 a7512c2c1..b556707f8 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 = 2024.2.0b2 +PROJECT_NUMBER = 2024.2.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 1edd7b01f..3da249195 100644 --- a/Makefile +++ b/Makefile @@ -1,5 +1,5 @@ ESPHOME_PATH = ../esphome -ESPHOME_REF = 2024.2.0b2 +ESPHOME_REF = 2024.2.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 4bd1e8a47..d135791e8 100644 --- a/_static/version +++ b/_static/version @@ -1 +1 @@ -2024.2.0b2 \ No newline at end of file +2024.2.0b3 \ No newline at end of file diff --git a/conf.py b/conf.py index f8647991a..c437bda63 100644 --- a/conf.py +++ b/conf.py @@ -69,7 +69,7 @@ author = "ESPHome" # The short X.Y version. version = "2024.2" # The full version, including alpha/beta/rc tags. -release = "2024.2.0b2" +release = "2024.2.0b3" # The language for content autogenerated by Sphinx. Refer to documentation # for a list of supported languages. From f87dfbaf5f2df20ab30420693a46ca2a52a29835 Mon Sep 17 00:00:00 2001 From: Jesse Hills <3060199+jesserockz@users.noreply.github.com> Date: Wed, 21 Feb 2024 10:58:17 +1300 Subject: [PATCH 11/19] Update changelog for 2024.2.0b3 --- changelog/2024.2.0.rst | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/changelog/2024.2.0.rst b/changelog/2024.2.0.rst index 80dbf36ab..eb23e32fb 100644 --- a/changelog/2024.2.0.rst +++ b/changelog/2024.2.0.rst @@ -50,6 +50,11 @@ Beta Changes - WRGB Use correct multiplier :esphomepr:`6237` by :ghuser:`mhetzi` - Add optional minimum esphome version to microWakeWord manifest :esphomepr:`6240` by :ghuser:`jesserockz` - Fix xl9535 pin reads :esphomepr:`6242` by :ghuser:`jesserockz` +- hold interrupt disable for dallas one-wire :esphomepr:`6244` by :ghuser:`ssieb` +- Fix tm1651 enum :esphomepr:`6248` by :ghuser:`kbx81` +- Clear UART read buffer before sending next command :esphomepr:`6200` by :ghuser:`fototakas` +- Voice Assistant: add on_idle trigger and fix nevermind :esphomepr:`6141` by :ghuser:`synesthesiam` +- Tuya Fan component fix to handle enum datapoint type :esphomepr:`6135` by :ghuser:`sibowler` All changes ^^^^^^^^^^^ @@ -162,6 +167,17 @@ All changes - update docstrings in cpp_generator.py :esphomepr:`6212` by :ghuser:`nielsnl68` - Fixed group mask logic for WLED Sync fix :esphomepr:`6193` by :ghuser:`ChuckMash` - Add micro_wake_word component :esphomepr:`6136` by :ghuser:`kahrendt` (new-integration) +- AUTO_LOAD ``sensor`` for ``shelly_dimmer`` :esphomepr:`6223` by :ghuser:`kbx81` +- Add more debugging logs to microWakeWord :esphomepr:`6238` by :ghuser:`kahrendt` +- Fix to RF receiver for Drayton Digistat heating controller :esphomepr:`6235` by :ghuser:`marshn` +- WRGB Use correct multiplier :esphomepr:`6237` by :ghuser:`mhetzi` +- Add optional minimum esphome version to microWakeWord manifest :esphomepr:`6240` by :ghuser:`jesserockz` +- Fix xl9535 pin reads :esphomepr:`6242` by :ghuser:`jesserockz` +- hold interrupt disable for dallas one-wire :esphomepr:`6244` by :ghuser:`ssieb` +- Fix tm1651 enum :esphomepr:`6248` by :ghuser:`kbx81` +- Clear UART read buffer before sending next command :esphomepr:`6200` by :ghuser:`fototakas` +- Voice Assistant: add on_idle trigger and fix nevermind :esphomepr:`6141` by :ghuser:`synesthesiam` +- Tuya Fan component fix to handle enum datapoint type :esphomepr:`6135` by :ghuser:`sibowler` Past Changelogs --------------- From 6845bcfb9f8734be0ba01977ba8974daaf3bc97a Mon Sep 17 00:00:00 2001 From: Jesse Hills <3060199+jesserockz@users.noreply.github.com> Date: Wed, 21 Feb 2024 10:58:49 +1300 Subject: [PATCH 12/19] Update supporters for 2024.2.0b3 --- guides/supporters.rst | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/guides/supporters.rst b/guides/supporters.rst index b79f65ef9..55db7ba2d 100644 --- a/guides/supporters.rst +++ b/guides/supporters.rst @@ -143,6 +143,7 @@ Contributors - `balk77 (@balk77) `__ - `Paulus Schoutsen (@balloob) `__ - `Andrew Zaborowski (@balrog-kun) `__ +- `Josh Barnard (@barndawgie) `__ - `BarryMar (@BarryMar) `__ - `bartoszpierzchlewicz (@bartoszpierzchlewicz) `__ - `BartoszPierzchlewiczMacrix (@BartoszPierzchlewiczMacrix) `__ @@ -460,6 +461,7 @@ Contributors - `EtienneMD (@EtienneMD) `__ - `Evan Coleman (@evandcoleman) `__ - `Clemens Kirchgatterer (@everslick) `__ +- `Everything Smart Home (@EverythingSmartHome) `__ - `Evgeni Golov (@evgeni) `__ - `evlo (@evlo) `__ - `Expaso (@Expaso) `__ @@ -1327,4 +1329,4 @@ Contributors - `Zsolt Zsiros (@ZsZs73) `__ - `Christian Zufferey (@zuzu59) `__ -*This page was last updated February 19, 2024.* +*This page was last updated February 21, 2024.* From a7aad1dfe825ea33d987b1eeb4e35c86ba6998d9 Mon Sep 17 00:00:00 2001 From: Jesse Hills <3060199+jesserockz@users.noreply.github.com> Date: Wed, 21 Feb 2024 12:51:13 +1300 Subject: [PATCH 13/19] Bump version to 2024.2.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 b556707f8..3261a8bab 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 = 2024.2.0b3 +PROJECT_NUMBER = 2024.2.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 3da249195..eac5f8ff8 100644 --- a/Makefile +++ b/Makefile @@ -1,5 +1,5 @@ ESPHOME_PATH = ../esphome -ESPHOME_REF = 2024.2.0b3 +ESPHOME_REF = 2024.2.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 d135791e8..032892e0c 100644 --- a/_static/version +++ b/_static/version @@ -1 +1 @@ -2024.2.0b3 \ No newline at end of file +2024.2.0 \ No newline at end of file diff --git a/conf.py b/conf.py index c437bda63..c13fb7248 100644 --- a/conf.py +++ b/conf.py @@ -69,7 +69,7 @@ author = "ESPHome" # The short X.Y version. version = "2024.2" # The full version, including alpha/beta/rc tags. -release = "2024.2.0b3" +release = "2024.2.0" # The language for content autogenerated by Sphinx. Refer to documentation # for a list of supported languages. From caa873a6a5f08cf625ba84c2ce3148be322c8c66 Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Wed, 21 Feb 2024 10:48:31 -0500 Subject: [PATCH 14/19] Migrate ready-made projects to ESP Web Tools 10 (#3619) --- projects/installer.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/projects/installer.html b/projects/installer.html index 11d9b44bc..c8c36ddef 100644 --- a/projects/installer.html +++ b/projects/installer.html @@ -95,7 +95,7 @@