Compare commits

...

560 Commits

Author SHA1 Message Date
Clyde Stubbs 66e70ecc88
Document host platform (#3893) 2024-06-01 15:25:53 +10:00
Eduard Llull 0626032aca
The event type is accesible using the event_type variable. (#3891)
In the event.on_event automation, the event type that triggered the event is accesible using the event_type variable.
2024-05-31 13:13:15 +02:00
H. Árkosi Róbert d4ad0730db
ancient version mentions removed + version sensor screenshot update (#3885) 2024-05-31 07:33:34 +12:00
Clyde Stubbs 13fbdb1d00
Make search results appear in a fixed window; (#3858) 2024-05-30 10:08:17 +12:00
RFDarter 0138eca827
Change datetime id names in examples (#3777) 2024-05-30 10:07:25 +12:00
RFDarter 83c29b6c74
Webserver-mention-v3 (#3881)
Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com>
2024-05-30 06:58:30 +12:00
Jesse Hills bc91bdd2a6
Merge pull request #3876 from esphome/bump-2024.5.4
2024.5.4
2024-05-28 12:50:51 +12:00
Jesse Hills d33c020096
Update supporters for 2024.5.4 2024-05-28 08:31:16 +12:00
Jesse Hills cf630bb4ff
Update changelog for 2024.5.4 2024-05-28 08:30:23 +12:00
Jesse Hills c64cc01a70
Bump version to 2024.5.4 2024-05-28 08:29:21 +12:00
Honza Pobořil 89d087197f
Fixed attenuation values (#3868)
According to the docs 12db is not allowed.
https://docs.espressif.com/projects/esp-idf/en/v4.4.7/esp32/api-reference/peripherals/adc.html#_CPPv425adc1_config_channel_atten14adc1_channel_t11adc_atten_t
2024-05-25 15:46:32 +02:00
Jesse Hills 102aafa9b1
Merge pull request #3867 from esphome/bump-2024.5.3
2024.5.3
2024-05-25 08:25:00 +12:00
Jesse Hills 2d9b49e898
Update supporters for 2024.5.3 2024-05-25 08:17:10 +12:00
Jesse Hills 79bdcf23d0
Update changelog for 2024.5.3 2024-05-25 08:16:29 +12:00
Jesse Hills 612bbad86e
Bump version to 2024.5.3 2024-05-25 08:14:40 +12:00
Chris Feenstra 99219c4fcd
Fixed broken text (#3705) 2024-05-22 06:11:57 +02:00
Samuel Tardieu a2357ba9c2
Fix typos in time-based cover documentation (#3856) 2024-05-22 06:05:26 +02:00
bzzzbzzzzz 7fe65f6415
Add note that the PWM and RS485 versions of the A02YYUW are not supported (#3828)
* Update a02yyuw.rst to emphasize that the PWM and RS485 versions of the sensor are not supported.

* Update a02yyuw.rst

---------

Co-authored-by: H. Árkosi Róbert <robreg@zsurob.hu>
2024-05-21 18:22:11 +02:00
Jesse Hills e928b57eb0
Merge pull request #3852 from esphome/bump-2024.5.2
2024.5.2
2024-05-21 12:29:29 +12:00
Jesse Hills 8791d49740
Update supporters for 2024.5.2 2024-05-21 11:35:56 +12:00
Jesse Hills 48647e3a4a
Update changelog for 2024.5.2 2024-05-21 11:35:17 +12:00
Jesse Hills 7c5783375d
Bump version to 2024.5.2 2024-05-21 11:07:21 +12:00
Jesse Hills 584d0bc69f
Merge pull request #3850 from esphome/bump-2024.5.1
2024.5.1
2024-05-20 19:49:18 +12:00
dependabot[bot] 4d6a5a74ac
Bump jaxxstorm/action-install-gh-release from 1.10.0 to 1.12.0 (#3849)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-05-20 09:33:51 +02:00
Jesse Hills 67a0341bf4
Update supporters for 2024.5.1 2024-05-20 17:16:58 +12:00
Jesse Hills e9fb841886
Update changelog for 2024.5.1 2024-05-20 17:16:15 +12:00
Jesse Hills 0c22be3083
Bump version to 2024.5.1 2024-05-20 17:14:19 +12:00
Clyde Stubbs dd263f2966
Replace Sphinx search with Pagefind (#3186)
Co-authored-by: clydeps <U5yx99dok9>
Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com>
2024-05-19 11:21:53 +12:00
Andy Barratt a1910a39be
Update esp32_camera.rst with aspect ratios (#3549)
* Update esp32_camera.rst with aspect ratios

* Corrected typo
2024-05-18 08:34:32 +02:00
Fabian a3905e0b70
add `touch_timeout` config option. (#3553)
* add `touch_timeout` config option.

* Update lilygo_t5_47.rst

---------

Co-authored-by: Your Name <you@example.com>
Co-authored-by: H. Árkosi Róbert <robreg@zsurob.hu>
2024-05-17 10:58:59 +02:00
dependabot[bot] 16983af440
Bump actions/checkout from 4.1.5 to 4.1.6 (#3843) 2024-05-17 07:35:34 +02:00
Veli Veromann 8c40a72d5f
Update pca9685.rst (#3842)
Fix typo, adjust wording to be common ("defaults to" instead of "default")
2024-05-16 19:50:07 +02:00
imgbot[bot] aaba9e9745
[ImgBot] Optimize images (#3840)
Co-authored-by: ImgBotApp <ImgBotHelp@gmail.com>
2024-05-15 08:47:55 +02:00
Jesse Hills 856ed2b062
Merge pull request #3839 from esphome/bump-2024.5.0
2024.5.0
2024-05-15 18:28:12 +12:00
Jesse Hills b5acb91c76
Update changelog for 2024.5.0 2024-05-15 17:10:56 +12:00
Jesse Hills 5fbe51ab4d
Bump version to 2024.5.0 2024-05-15 17:08:45 +12:00
Jesse Hills e7747603cf
Merge pull request #3838 from esphome/bump-2024.5.0b6
2024.5.0b6
2024-05-15 16:25:34 +12:00
Jesse Hills a0771bfe4a
Update changelog for 2024.5.0b6 2024-05-15 13:22:10 +12:00
Jesse Hills 88dea1e7c6
Bump version to 2024.5.0b6 2024-05-15 13:14:18 +12:00
Jesse Hills 524b74e8f8
[adc] Change 11dB references to 12dB (#3837) 2024-05-15 13:14:18 +12:00
Jesse Hills bf4433ecac
Merge branch 'current' into beta 2024-05-15 13:14:09 +12:00
Clyde Stubbs d06ece2d70
Use GPIOXX in sample configs (#3702) 2024-05-15 12:56:30 +12:00
Jesse Hills 2fbd8dda6d
Merge pull request #3835 from esphome/bump-2024.5.0b5
2024.5.0b5
2024-05-15 10:02:10 +12:00
Jesse Hills af5938ac19
Update supporters for 2024.5.0b5 2024-05-15 07:41:33 +12:00
Jesse Hills 2e9611656f
Update changelog for 2024.5.0b5 2024-05-15 07:40:41 +12:00
Jesse Hills e739302140
Bump version to 2024.5.0b5 2024-05-15 07:37:23 +12:00
Jesse Hills bf6be4e96a
Merge pull request #3834 from esphome/bump-2024.5.0b4
2024.5.0b4
2024-05-14 11:38:19 +12:00
Jesse Hills e07b8e5b44
Update supporters for 2024.5.0b4 2024-05-14 10:03:26 +12:00
Jesse Hills 55465c0910
Update changelog for 2024.5.0b4 2024-05-14 10:02:42 +12:00
Jesse Hills 0bb2e73699
Bump version to 2024.5.0b4 2024-05-14 10:02:23 +12:00
Jesse Hills 43eeb5444d
Merge branch 'current' into beta 2024-05-14 10:02:10 +12:00
Peter bfda3aadb7
Update ota.rst - added OTA port for Beken chips (#3522)
Added OTA port information (port 8892) for Beken chips as used by libretiny
2024-05-12 08:30:09 +02:00
Jesse Hills deb981bfde
Merge pull request #3827 from esphome/bump-2024.5.0b3
2024.5.0b3
2024-05-09 23:05:24 +12:00
Jesse Hills 7799087d2b
Update supporters for 2024.5.0b3 2024-05-09 21:56:46 +12:00
Jesse Hills dec87dd8cf
Update changelog for 2024.5.0b3 2024-05-09 21:56:00 +12:00
Jesse Hills faf0a937fe
Bump version to 2024.5.0b3 2024-05-09 21:55:36 +12:00
Jesse Hills 88f62741b4
Merge pull request #3825 from esphome/bump-2024.5.0b2
2024.5.0b2
2024-05-09 17:34:02 +12:00
Jesse Hills 639cfebaf3
Update supporters for 2024.5.0b2 2024-05-09 14:47:16 +12:00
Jesse Hills bcba5ffaca
Update changelog for 2024.5.0b2 2024-05-09 14:46:36 +12:00
Jesse Hills dc587831fe
Bump version to 2024.5.0b2 2024-05-09 14:45:41 +12:00
Jesse Hills 2713b9ca83
Merge pull request #3823 from esphome/bump-2024.5.0b1
2024.5.0b1
2024-05-08 14:08:36 +12:00
Jesse Hills 318405b5b1
Update supporters for 2024.5.0b1 2024-05-08 13:33:18 +12:00
Jesse Hills c3274a7b90
Update changelog for 2024.5.0b1 2024-05-08 13:32:37 +12:00
Jesse Hills 5d186a0306
Bump version to 2024.5.0b1 2024-05-08 13:22:05 +12:00
Jesse Hills 0cfbc64f6a
Merge branch 'current' into next 2024-05-08 13:19:52 +12:00
RFDarter 32a3645a05
Datetime lambda call fix (#3778) 2024-05-07 14:41:44 +02:00
RFDarter 2a55cf0d50
datetime typo (#3776) 2024-05-07 14:41:16 +02:00
imgbot[bot] 7f7878559b
[ImgBot] Optimize images (#3766)
Co-authored-by: ImgBotApp <ImgBotHelp@gmail.com>
2024-05-07 14:40:06 +02:00
dependabot[bot] b960a1b49e
Bump actions/checkout from 4.1.0 to 4.1.5 (#3820) 2024-05-07 08:21:04 +02:00
Jesse Hills 696a828156
Merge branch 'current' into next 2024-05-07 05:45:51 +00:00
Jesse Hills 88e315e0e4
Many example yaml tidy-ups (#3821)
* Many example yaml tidy-ups

* Update components/sensor/hlw8012.rst

---------

Co-authored-by: Keith Burzinski <kbx81x@gmail.com>
2024-05-07 00:40:12 -05:00
Keith Burzinski ca96dd49e1
Change "integration" -> "component", minor copy fixes (#3790) 2024-05-07 17:16:56 +12:00
joukepouke-personal 435ac13488
Update getting_started_command_line.rst (#3814)
* Update getting_started_command_line.rst

* add space
2024-05-06 20:07:27 -05:00
IreuN 567fa6a76a
Update bme680_bsec licence url (#3818) 2024-05-06 20:04:42 -05:00
Tomek Wasilczyk 8143158399
External components: add documentation about path for git source (#3815) 2024-05-06 15:19:19 +12:00
Carsten Grohmann cb230f57d4
Order of esphome parameters corrected II (#3816) 2024-05-05 18:07:49 +02:00
Carsten Grohmann 5266732e88
Order of esphome parameters corrected (#3813) 2024-05-04 12:27:48 +02:00
Daniel Baulig 5d69b7c7df
web_server: Update documentation for changes in PR #6269 (#3626)
* web_server: Update documentation for changes in PR #6269

Also fixed a small formatting bug in the color_temp documentation

* Remove linebreaks

---------

Co-authored-by: H. Árkosi Róbert <robreg@zsurob.hu>
2024-05-04 07:55:06 +02:00
Nico Peter bf72d1bba0
Update time_based.rst (#3532)
added docs for feature_time_based_cover_last_operation
2024-05-03 21:15:41 +02:00
Anton Viktorov 4217ab9c30
bmp3xx SPI support added (#3801)
Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com>
2024-05-02 13:49:06 +12:00
Mat931 74686fadb2
Remote receiver improvements (#2797)
Co-authored-by: Keith Burzinski <kbx81x@gmail.com>
Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com>
Co-authored-by: H. Árkosi Róbert <robreg@zsurob.hu>
2024-05-02 13:22:30 +12:00
Jesse Hills 1a221b51a3
Merge pull request #3804 from esphome/bump-2024.4.2
2024.4.2
2024-04-30 16:30:21 +12:00
Jesse Hills 9955fcb151
Update supporters for 2024.4.2 2024-04-30 15:50:06 +12:00
Jesse Hills fe89003adf
Update changelog for 2024.4.2 2024-04-30 15:49:32 +12:00
Jesse Hills 7a11619a8b
Bump version to 2024.4.2 2024-04-30 15:47:41 +12:00
Lucas Hartmann 98b7c74e96
Add transition_length to strobe effect. (#3775) 2024-04-29 07:47:17 +12:00
Alex Boyd 051ed8736d
Redo the homeassistant service call API setup instructions (#3631)
Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com>
2024-04-26 21:52:15 +10:00
polyfloyd 1f272092d6
waveshare_epaper: Add 2.90in-dke (#3780) 2024-04-26 18:44:04 +10:00
NP v/d Spek e242b5102e
Update description about showing the Color Test Card. (#3796)
Co-authored-by: Clyde Stubbs <2366188+clydebarrow@users.noreply.github.com>
2024-04-26 13:23:03 +10:00
Jesse Hills 57c9493b1b
Add DateTime datetime type entities to docs (#3784)
Co-authored-by: Keith Burzinski <kbx81x@gmail.com>
2024-04-26 09:19:56 +12:00
Alex Boyd 03807510dc
Fix Docker build (#3798) 2024-04-25 23:23:40 +12:00
rforro ab21cada93
Include roomba ir in docs (#2767)
Co-authored-by: Richard Forro <r@f.rf>
Co-authored-by: H. Árkosi Róbert <robreg@zsurob.hu>
Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com>
2024-04-24 15:21:12 +12:00
David Friedland d9e12e594f
Event components (#3722)
Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com>
2024-04-24 14:35:29 +12:00
Jean Louis-Guerin 0559ef14fb
Add WeiKai component documentation (#3113)
Co-authored-by: Keith Burzinski <kbx81x@gmail.com>
Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com>
Co-authored-by: H. Árkosi Róbert <robreg@zsurob.hu>
2024-04-24 13:21:48 +12:00
Jesse Hills ab42cc0fef
Merge branch 'current' into next 2024-04-24 00:52:23 +00:00
Keith Burzinski 96f8f859d2
Organize main page better (#3789) 2024-04-24 12:51:00 +12:00
H. Árkosi Róbert c20f304142
Graphical menu screenshot (#3791) 2024-04-24 07:52:39 +12:00
Jesse Hills cda94f58d3
[sn74hc595] Update documentation for type and spi_id (#3787) 2024-04-23 17:22:17 +12:00
Keith Burzinski f1b31e85b7
Add documentation for valve component (#3763)
Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com>
2024-04-23 16:47:09 +12:00
Jesse Hills b8523b89fb
Remove "Required Home Assistant XXXX.X" messages for older versions (#3788) 2024-04-23 16:46:47 +12:00
Jesse Hills 6f0e2c6b19
Add fosstodon verification tag (#3786) 2024-04-23 15:12:01 +12:00
Jesse Hills eb1af142c1
Merge branch 'current' into next 2024-04-23 02:33:07 +00:00
Jesse Hills e10a485ef5
Update Dockerfile (#3785) 2024-04-23 14:32:37 +12:00
Jesse Hills fbc49ffceb
Merge branch 'current' into next 2024-04-23 11:58:41 +12:00
Jesse Hills 1fd6faf2a2
Merge pull request #3783 from esphome/bump-2024.4.1
2024.4.1
2024-04-23 11:51:49 +12:00
Jesse Hills 31234fada1
Update supporters for 2024.4.1 2024-04-23 10:52:22 +12:00
Jesse Hills 3fb31e4d2d
Update changelog for 2024.4.1 2024-04-23 10:51:48 +12:00
Jesse Hills 960d40a559
Bump version to 2024.4.1 2024-04-23 10:50:42 +12:00
Jesse Hills ea6c5af299
Merge branch 'current' into next 2024-04-23 10:50:27 +12:00
eagleco db5b1de530
Update status_led.rst (#3768)
Include note about status led blinking slowly when native API is included in configuration but no api client is connected.
2024-04-18 07:04:42 +02:00
Jesse Hills 94ae812c28
Merge branch 'current' into next 2024-04-17 14:23:00 +12:00
Jesse Hills 655c977731
Merge pull request #3765 from esphome/bump-2024.4.0
2024.4.0
2024-04-17 14:14:02 +12:00
Jesse Hills 0f32998af2
Update supporters for 2024.4.0 2024-04-17 13:10:01 +12:00
Jesse Hills 32a802c468
Update changelog for 2024.4.0 2024-04-17 13:09:30 +12:00
Jesse Hills 0901d39a8b
Bump version to 2024.4.0 2024-04-17 13:08:27 +12:00
Jesse Hills a24044d410
Merge branch 'current' into next 2024-04-17 13:08:24 +12:00
Jesse Hills 62cbd7ada1
Merge branch 'current' into beta 2024-04-17 13:08:24 +12:00
tronikos ff64f4b804
Update diy.rst (#3759) 2024-04-15 06:41:27 +02:00
Jesse Hills de53429d8e
Merge branch 'beta' into next 2024-04-15 16:02:54 +12:00
Jesse Hills a844b8fa73
Merge pull request #3760 from esphome/bump-2024.4.0b3
2024.4.0b3
2024-04-15 16:01:50 +12:00
Jesse Hills 3c94dc6fff
Update supporters for 2024.4.0b3 2024-04-15 13:27:56 +12:00
Jesse Hills ae80927c12
Update changelog for 2024.4.0b3 2024-04-15 13:27:24 +12:00
Jesse Hills 5e2a0ec676
Bump version to 2024.4.0b3 2024-04-15 13:27:03 +12:00
Jesse Hills 57e080464a
Merge branch 'current' into beta 2024-04-15 13:25:48 +12:00
Jesse Hills 33c433dc84
Merge branch 'current' into next 2024-04-15 13:25:22 +12:00
Jesse Hills 7e6f761a42
Made for ESPHome: Specify adopted configs must compile (#3758) 2024-04-14 16:35:30 -05:00
H. Árkosi Róbert 412aef3574
Display rendering engine screenshots (#3738) 2024-04-15 09:08:28 +12:00
H. Árkosi Róbert 5c254fb842
Esphome flasher deprecated (#3717) 2024-04-15 09:07:00 +12:00
tronikos 9c65aae94a
Add esphome-gdo link (#3434) 2024-04-15 09:05:05 +12:00
Dawid Wróbel e90f8c7b19
Update xiaomi_ble: Bluetooth Proxy supports stock firmware, too (#3747) 2024-04-15 09:04:42 +12:00
voed d0ad059ff2
Remove unnecessary lambda from example (#3600) 2024-04-15 09:00:46 +12:00
Jimmy Hedman 6ba642635c
Add DNS sensor (#3721) 2024-04-12 14:01:13 +10:00
MRemy2 cc0dc1dccb
Update htu21d.rst (#3742) 2024-04-12 11:29:02 +12:00
Jesse Hills c75a354273
Merge pull request #3756 from esphome/bump-2024.4.0b2
2024.4.0b2
2024-04-12 09:19:48 +12:00
Jesse Hills f8080b0000
Update supporters for 2024.4.0b2 2024-04-12 08:09:20 +12:00
Jesse Hills f85cca78b6
Update changelog for 2024.4.0b2 2024-04-12 08:08:47 +12:00
Jesse Hills 2cec84c820
Bump version to 2024.4.0b2 2024-04-12 08:02:53 +12:00
Jesse Hills 8eba6a5271
Merge pull request #3751 from esphome/bump-2024.4.0b1
2024.4.0b1
2024-04-10 14:13:50 +12:00
Jesse Hills 22693387e2
Update supporters for 2024.4.0b1 2024-04-10 12:53:43 +12:00
Jesse Hills 08936968f4
Update changelog for 2024.4.0b1 2024-04-10 12:53:12 +12:00
Jesse Hills 53331c31f1
Bump version to 2024.4.0b1 2024-04-10 12:49:47 +12:00
Jesse Hills a2779b3a30
Bump version to 2024.5.0-dev 2024-04-10 11:48:29 +12:00
Jesse Hills d6c38a14cd
Merge branch 'current' into next 2024-04-10 11:40:29 +12:00
bukureckid ac56a77d26
Add documentation for Dooya RF (#3749)
Co-authored-by: Dusan Bukurecki <dusanb@thevtool.com>
2024-04-10 09:04:38 +12:00
IJssel e70f6482a1
Added tlc5971 documentation (#3744) 2024-04-10 08:03:21 +12:00
Jesse Hills b22c58f517
Update for rmt_channel on receiver and transmitter (#3745) 2024-04-08 20:54:02 -05:00
Jesse Hills 69fb6f6c82
Add docs for time entities (#3748) 2024-04-08 20:46:40 -05:00
Mat931 8b13ddc3e7
Add ABB-Welcome / Busch-Welcome Door Intercom Protocol (#2844)
Co-authored-by: H. Árkosi Róbert <robreg@zsurob.hu>
2024-04-09 13:43:56 +12:00
imgbot[bot] df6d0246db
[ImgBot] Optimize images (#3698)
Co-authored-by: ImgBotApp <ImgBotHelp@gmail.com>
2024-04-09 13:23:45 +12:00
tracestep b9666b2e30
Add timeout option on i2c.rst (esphome/issues#4340) (#2778)
Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com>
2024-04-09 13:11:49 +12:00
fariouche d72ce9e136
added documentation for the pink version of miflora sensor (#3465)
Co-authored-by: H. Árkosi Róbert <robreg@zsurob.hu>
Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com>
2024-04-09 10:18:59 +12:00
Mat931 26be239efc
Internal temperature: Support Beken platform (#3746) 2024-04-09 07:21:55 +12:00
Jesse Hills 99207f1fa6
Merge pull request #3737 from esphome/bump-2024.3.2
2024.3.2
2024-04-08 10:41:11 +12:00
Jesse Hills 49a2cb248f
Update supporters for 2024.3.2 2024-04-04 18:13:24 +13:00
Jesse Hills b069dd08eb
Update changelog for 2024.3.2 2024-04-04 18:12:51 +13:00
Jesse Hills 1504128286
Bump version to 2024.3.2 2024-04-04 18:12:29 +13:00
tronikos 53230c9fb6
Add temperature for QMC5883L (#3730) 2024-04-03 15:57:12 +13:00
Penny Wood 6fa3868347
Raw values access (#3729) 2024-04-02 17:01:27 +02:00
yousaf465 14321df03d
Update bl0942.rst (#3728) 2024-04-02 19:13:05 +13:00
B48D81EFCC 89767169d7
Update ethernet.rst. Added more details. (#3726)
Added details about the specific board. There is a ESP32 and a ESP32-S3 variant which uses a different network chip.
2024-04-01 19:50:49 +02:00
Teppo Kurki 21d9205e4f
Wireguard: add netmask caveat note (#3584)
With the default netmask no outgoing traffic will pass through the tunnel, so add a note about this in the sample configuration.
2024-03-31 09:38:58 +02:00
[NUT] 67e5ba0c19
Guide on creating and including sound clips to be played by the i2s Speaker component. (#3718)
* Add files via upload

* Add files via upload

* Update audio_clips_for_i2s.rst

* Update audio_clips_for_i2s.rst

* Update audio_clips_for_i2s.rst

* Update index.rst

missing link to the speaker component (this page is well hidden!) and added the link to the guide.

* Update audio_clips_for_i2s.rst

Dots on i

* Update audio_clips_for_i2s.rst

updated links

* Update audio_clips_for_i2s.rst

xxd link for anything else but Linux...

* Update index.rst

links in this format are strange.

* Update audio_clips_for_i2s.rst

And again... links are weird.

* Update audio_clips_for_i2s.rst

---------

Co-authored-by: H. Árkosi Róbert <robreg@zsurob.hu>
2024-03-28 08:37:40 +01:00
mrtoy-me eb562e89b0
Update for SHT85 support (#3703) 2024-03-28 15:19:30 +13:00
Jesse Hills e349f6af81
Merge branch 'current' into next 2024-03-28 13:34:50 +13:00
Daniel Eisterhold 3c9096eadf
Add example for get_size() (#3711) 2024-03-28 12:56:35 +13:00
MagicBear a843812997
add doc for daikin_arc (#3709)
Co-authored-by: MagicBear <mb@bilibili.com>
2024-03-28 07:56:22 +13:00
Jesse Hills cdb3b5cad4
Merge pull request #3715 from esphome/bump-2024.3.1
2024.3.1
2024-03-27 14:15:03 +13:00
Mafus1 d80425d7eb
Documentation for JSN-SR04T Ultrasonic Sensor (#3501) 2024-03-27 14:14:26 +13:00
Jesse Hills f8e9abc402
Update supporters for 2024.3.1 2024-03-27 12:18:42 +13:00
Jesse Hills 5c8c644b14
Update changelog for 2024.3.1 2024-03-27 12:18:07 +13:00
Jesse Hills 532cbb60c1
Bump version to 2024.3.1 2024-03-27 12:17:32 +13:00
X-Ryl669 9af1575411
Add documentation for AT581x Radar component (#3646)
Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com>
2024-03-27 11:52:05 +13:00
Simone Rossetto 7263d0b157
WireGuard for esp8266 (#3708) 2024-03-25 11:21:07 +13:00
Götz Görisch b5d475d1af
doc: describe the IPv6 address generation (#3704)
* doc: describe the IPv6 address generation

* fixes https://github.com/esphome/issues/issues/5618

* Update network.rst

---------

Co-authored-by: H. Árkosi Róbert <robreg@zsurob.hu>
2024-03-21 20:24:15 +01:00
Mat931 416a7edd80
Add sun_gtil2 component (#3005)
Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com>
2024-03-21 16:23:34 +13:00
Moriah Morgan 9a710041e2
Update Tuya Climate for new esphome PR (#3096)
* Update Tuya Climate for new esphome PR

Update Tuya Climate to document related to https://github.com/esphome/esphome/pull/5159

* Remove Deprecated Config Block

Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com>

* Update tuya.rst

* Restore basic device configuration sample block, will use more specific examples in the device repo

* Apply suggestions from code review

Copy fixes

---------

Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com>
Co-authored-by: H. Árkosi Róbert <robreg@zsurob.hu>
Co-authored-by: Keith Burzinski <kbx81x@gmail.com>
2024-03-20 19:40:20 -05:00
Clyde Stubbs 56e9418b08
Correct example config for T-Display S3 Amoled (#3701) 2024-03-21 12:07:47 +13:00
Jesse Hills f81ab2fe7c
Add thank you note to release notes (#3700)
* Add thank you note to release notes

* typo
2024-03-20 15:04:46 -04:00
SodaWithoutSparkles 008766717a
fix(ina219): typo (#3697)
esphome/issues#5613
2024-03-20 15:53:54 +01:00
Jasper Albering 4ab8499c90
sm2135: add separate_modes option (#3579) 2024-03-20 21:17:55 +13:00
Gagootron d3cff88a0f
add phase_angle to ledc component (#3671) 2024-03-20 21:17:26 +13:00
cvwillegen 4601524bd3
Pronto protocol customize delta (#3044) 2024-03-20 21:16:55 +13:00
Jesse Hills 323663190c
Merge branch 'current' into next 2024-03-20 18:33:02 +13:00
Jesse Hills e743c1664e
Merge pull request #3696 from esphome/bump-2024.3.0
2024.3.0
2024-03-20 18:31:19 +13:00
Jesse Hills eda17c78e1
Update supporters for 2024.3.0 2024-03-20 17:19:41 +13:00
Jesse Hills 639d754d29
Update changelog for 2024.3.0 2024-03-20 17:19:09 +13:00
Jesse Hills 245b658c35
Bump version to 2024.3.0 2024-03-20 17:15:20 +13:00
Jesse Hills aec6df1693
Merge pull request #3695 from esphome/bump-2024.3.0b5
2024.3.0b5
2024-03-20 17:11:40 +13:00
Jesse Hills 8e0eaec0cf
Update supporters for 2024.3.0b5 2024-03-20 16:49:13 +13:00
Jesse Hills 4e6dd90872
Update changelog for 2024.3.0b5 2024-03-20 16:48:39 +13:00
Jesse Hills 7d35c0ad48
Bump version to 2024.3.0b5 2024-03-20 16:38:16 +13:00
Jesse Hills 09183a8f10
Merge pull request #3693 from esphome/bump-2024.3.0b4
2024.3.0b4
2024-03-19 15:37:47 +13:00
Jesse Hills 45695558ac
Update supporters for 2024.3.0b4 2024-03-19 14:33:03 +13:00
Jesse Hills 98e6ab84d1
Update changelog for 2024.3.0b4 2024-03-19 14:32:28 +13:00
Jesse Hills 11adc1fa2b
Bump version to 2024.3.0b4 2024-03-19 14:22:30 +13:00
Jesse Hills 50c83ef824
Merge branch 'current' into beta 2024-03-19 14:22:17 +13:00
Jesse Hills ad8aaea3ce
Merge branch 'current' into next 2024-03-19 14:22:16 +13:00
Milan Dzuriš 1bdfb560a6
Title Fix Update diy.rst (#3691) 2024-03-18 16:39:12 +01:00
Jesse Hills 9c8cadb9c5
Merge pull request #3690 from esphome/bump-2024.3.0b3
2024.3.0b3
2024-03-18 19:35:51 +13:00
Jesse Hills 6ba0d43f5b
Update supporters for 2024.3.0b3 2024-03-18 16:44:12 +13:00
Jesse Hills 599bf6dc8f
Update changelog for 2024.3.0b3 2024-03-18 16:43:39 +13:00
Jesse Hills bf2117d243
Bump version to 2024.3.0b3 2024-03-18 16:38:33 +13:00
Jesse Hills 732e3e5528
Merge branch 'current' into next 2024-03-18 14:21:25 +13:00
Jesse Hills 042070e133
Merge branch 'current' into beta 2024-03-18 14:21:25 +13:00
Daniel Eisterhold 26b3ada768
Add documentation for line_at_angle (#3687) 2024-03-18 12:51:48 +13:00
Oliver Großkloß c7422f01e8
typo (#3685) 2024-03-15 23:36:28 +01:00
Jesse Hills 5c301b1653
Merge pull request #3684 from esphome/bump-2024.3.0b2
2024.3.0b2
2024-03-15 17:06:32 +13:00
Jesse Hills fd9121fea5
Fix again 2024-03-15 16:43:03 +13:00
Jesse Hills 94f8cb51e7
Fix link 2024-03-15 16:38:57 +13:00
Jesse Hills 333207cd92
Update supporters for 2024.3.0b2 2024-03-15 14:33:10 +13:00
Jesse Hills 566da20dab
Update changelog for 2024.3.0b2 2024-03-15 14:32:37 +13:00
Jesse Hills 19c470619a
Bump version to 2024.3.0b2 2024-03-15 14:23:14 +13:00
Jesse Hills 18cf4c08d7
Merge branch 'current' into beta 2024-03-15 14:23:02 +13:00
Tomasz 9ce573d884
Update installer.html (#3442)
change url for media players

Co-authored-by: H. Árkosi Róbert <robreg@zsurob.hu>
2024-03-13 21:35:43 +01:00
ColoMAX 5cd1c8aa8c
Update diy.rst (#3548)
update list

Co-authored-by: guillempages <guillempages@users.noreply.github.com>
2024-03-13 21:28:53 +01:00
DK ccbe48eed7
Update bme280_environment.rst to reference bme280_i2c (#3581) 2024-03-13 21:19:33 +01:00
Milan Dzuriš 21120e2f16
Update diy.rst (#3653) 2024-03-13 21:17:26 +01:00
Zynth-dev 7696f6e6f3
Update index.rst to provide missing information on the on_value behavior (#3652)
* Update index.rst to provide missing information on the on_value behavior

The on_value behavior was unclear about what happens when the selected-value is set to the same value as it already was.

* Update components/select/index.rst

Co-authored-by: guillempages <guillempages@users.noreply.github.com>

---------

Co-authored-by: guillempages <guillempages@users.noreply.github.com>
Co-authored-by: H. Árkosi Róbert <robreg@zsurob.hu>
2024-03-13 21:16:09 +01:00
Michał Sochoń 69dd4c41ee
Fix indentation for SGP4x (#3670)
Co-authored-by: guillempages <guillempages@users.noreply.github.com>
2024-03-13 20:44:38 +01:00
Jesse Hills 507e8e8f73
Merge pull request #3682 from esphome/bump-2024.3.0b1
2024.3.0b1
2024-03-13 17:29:10 +13:00
Jesse Hills ddacbe25bd
Update image 2024-03-13 16:56:27 +13:00
Jesse Hills 2ef7c05135
Add template fan to the table 2024-03-13 16:55:16 +13:00
Jesse Hills 68f7b1a317
Update supporters for 2024.3.0b1 2024-03-13 16:48:28 +13:00
Jesse Hills 8b8d662e1e
Update changelog for 2024.3.0b1 2024-03-13 16:47:52 +13:00
Jesse Hills b159709a3f
Bump version to 2024.4.0-dev 2024-03-13 16:33:44 +13:00
Jesse Hills 5f0c7b9c43
Bump version to 2024.3.0b1 2024-03-13 16:33:43 +13:00
Jesse Hills 244ed32046
Merge branch 'current' into next 2024-03-13 16:33:13 +13:00
kev300 d47883aa54
add possibility to provide different conversion times for Bus Voltage… (#3661)
Co-authored-by: Kevin Hübner <k.huebner@ceyoniq.com>
2024-03-13 16:25:41 +13:00
Chris Feenstra c02f4106d8
Kamstrup KMP (#3513)
Co-authored-by: Chris Feenstra <chris@cfeenstra.nl>
Co-authored-by: H. Árkosi Róbert <robreg@zsurob.hu>
Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com>
2024-03-13 16:01:26 +13:00
Ettore Beltrame 4ba09c09da
Add Emmeti platform to climate_ir.rst (#3109) 2024-03-13 14:16:07 +13:00
Mark Spicer 5acfce67c1
feat: Add HTU31D Documentation (#3397)
* feat: Add HTU31D Documentation

This commit adds documentation for the HTU31D component.

* Fix image size

---------

Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com>
2024-03-13 14:05:02 +13:00
Sorin Iordachescu e31870f247
ADE7953: Add the ability to use accumulating energy registers, more precise power reporting (#3656) 2024-03-13 12:17:10 +13:00
Clyde Stubbs 707614f1cf
Document quad SPI AMOLED displays (#3677)
Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com>
2024-03-13 12:15:00 +13:00
Landon Rohatensky 0c1658259b
add docs for load font from url (#3261) 2024-03-13 12:07:44 +13:00
Jimmy Hedman 621299e930
Fix spelling (#3679) 2024-03-12 11:08:57 +01:00
Kevin Reilly def1caf939
Deep sleep: example of getting wakeup cause (#3663)
* Deep sleep: example of getting wakeup cause

* Update deep_sleep.rst

---------

Co-authored-by: H. Árkosi Róbert <robreg@zsurob.hu>
2024-03-12 09:13:45 +01:00
Citric Lee 8f85d9152e
Add Seeed Studio mmWave Sensor MR24HPC1 document (#3383)
Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com>
2024-03-12 16:33:45 +13:00
Anton Viktorov 039846406b
VEML7700 and VEML6030 light sensors (#3525)
* VEML7700 and VEML6030 light sensors

* VEML7700 math indent

* VEML7700 tidy

* VEML7700 tidy

* VEML7700 update

* VEML7700 pic fix

* VEML7700 typo

* VEML7700 doc fix

* Apply suggestions from code review

Co-authored-by: Keith Burzinski <kbx81x@gmail.com>

* VEML7700 minor fixes after the review

* simplified sensor config

* Update components/sensor/veml7700.rst

---------

Co-authored-by: Keith Burzinski <kbx81x@gmail.com>
2024-03-11 21:51:05 -05:00
Clyde Stubbs 95fc5a0b24
Update quad spi docs (#3676) 2024-03-12 15:50:27 +13:00
mrtoy-me 9f30cf7b60
hydreon_rgxx - add resolution option (#3529) 2024-03-12 15:32:01 +13:00
Clyde Stubbs d2af542012
Add st7701s and rpi_dpi_rgb docs (#3546)
Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com>
2024-03-12 11:45:57 +13:00
RubyBailey df6b8af452
Mitsubishi update (#2353)
Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com>
Co-authored-by: RubyBailey <ruby_bailey11@hotmail.com>
2024-03-12 10:01:10 +13:00
H. Árkosi Róbert cde95b10cf
Add note about fake RP2040 unsupported (#3675)
* Add note about fake RP2040 unsupported

* Update rp2040.rst

* Update rp2040.rst

* Update components/rp2040.rst

Co-authored-by: Clyde Stubbs <2366188+clydebarrow@users.noreply.github.com>

---------

Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com>
Co-authored-by: Clyde Stubbs <2366188+clydebarrow@users.noreply.github.com>
2024-03-11 21:05:50 +01:00
Manuel Kasper 031ea607a8
Document new support for Waveshare 2.13" V2 display (#3669)
* Document new support for Waveshare 2.13" V2 display

* Revert line that has gone missing and fix typo
2024-03-12 05:39:15 +11:00
Mike La Spina dd22ca90cc
ATM90E32 advanced features (#3573)
Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com>
2024-03-12 07:23:17 +13:00
Fabio Pugliese Ornellas 7010eabcea
Add MHZ-19 warmup time (#3604) 2024-03-12 07:17:50 +13:00
Clyde Stubbs 7d53484c83
Font: document new font features (#3596)
* Document new font features

* Add entry in index.rst

* Update components/display/fonts.rst

Co-authored-by: Keith Burzinski <kbx81x@gmail.com>

* Make html-strict happy

---------

Co-authored-by: Keith Burzinski <kbx81x@gmail.com>
2024-03-11 04:03:42 -05:00
Clyde Stubbs e895ebbc30
Add Cst226 touchscreen docs (#3577)
Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com>
2024-03-11 18:35:42 +11:00
Clyde Stubbs d1cdeb2913
Add GC9A01A docs (#3674)
* Add GCA901A model to ili9xxx

* Fix name
2024-03-11 17:47:25 +11:00
Clyde Stubbs d358a90aee
Add docs for ble_presence timeout (#3500) 2024-03-11 17:39:04 +11:00
swoboda1337 1de513d903
Add AM2315C docs (#3625)
Co-authored-by: Jonathan Swoboda <jonathan.swoboda>
Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com>
2024-03-11 19:33:46 +13:00
Clyde Stubbs 9cdbd6da73
Add CST816 touchscreen docs (#3459)
* Add CST816 touchscreen docs


---------

Co-authored-by: H. Árkosi Róbert <robreg@zsurob.hu>
2024-03-11 16:35:08 +11:00
Rodrigo Martín 9279b696e1
feat(MQTT): Add QoS option for each MQTT component (#3635) 2024-03-11 13:12:56 +13:00
NP v/d Spek 51deedd88c
Update ili9xxx documentation in regards of SPI settings (#3673)
* Update ili9xxx documentation in regards of SPI settings

Co-authored-by: Clyde Stubbs <2366188+clydebarrow@users.noreply.github.com>

---------
2024-03-11 10:20:52 +11:00
chbmuc f66261f2b8
Add IRK support to allow tracking of devices with random MAC addresses (#3666)
Co-authored-by: Clyde Stubbs <2366188+clydebarrow@users.noreply.github.com>
2024-03-11 10:12:03 +11:00
alexborro 66f924f816
[Fingerprint_grow] Add description for Sleep Mode Feature (#3558) 2024-03-11 12:04:20 +13:00
Samuel Sieb b32101c04b
document template fan and fan triggers (#3655) 2024-03-10 15:42:14 -07:00
Solomon 2af197fe09
Add documentation for ADS1118 (#3606)
Co-authored-by: Solomon <solomon.gorkhover@finnpartners.com>
Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com>
2024-03-11 11:09:09 +13:00
Dmitry ab4e7bd835
Add AGS10 Sensor (#3527)
Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com>
2024-03-11 10:19:14 +13:00
RFDarter d549160fc9
add doc for datetime component (#3595)
Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com>
2024-03-11 07:52:24 +13:00
Ludovic BOUÉ 57dd5aa844
Update pca9554.rst (#3662)
Fix typo
2024-03-06 16:26:55 +01:00
Jesse Hills e396c3acc4
Merge pull request #3660 from esphome/bump-2024.2.2
2024.2.2
2024-03-06 10:28:48 +13:00
Jesse Hills 69cedefad0
Update supporters for 2024.2.2 2024-03-06 09:37:22 +13:00
Jesse Hills 22a7334446
Update changelog for 2024.2.2 2024-03-06 09:36:45 +13:00
Jesse Hills 3a732f993f
Bump version to 2024.2.2 2024-03-06 09:34:52 +13:00
Samuel Sieb cf4a5f5d40
optional output is temporary (#3654) 2024-03-06 09:34:52 +13:00
Jesse Hills fd936fc082
Add docs for passing the used wake word to the voice_assistant (#3651) 2024-03-06 09:34:51 +13:00
Jesse Hills 49d194a538
Merge branch 'current' into next 2024-03-06 09:32:01 +13:00
Samuel Sieb 89ce2b20f4
optional output is temporary (#3654) 2024-03-06 07:41:53 +13:00
Jesse Hills 0ca8a1868e
Add docs for passing the used wake word to the voice_assistant (#3651) 2024-03-06 07:41:24 +13:00
Nate Clark 6d1ed9878e
Add toggle command to cover REST API commands (#3658) 2024-03-05 10:55:13 +13:00
Pavlo Dudnytskyi f3c10ed34b
Help for additional haier climete sensors added (#3628)
Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com>
Co-authored-by: Pavlo Dudnytskyi <pdudnytskyi@astrata.eu>
2024-03-05 10:54:04 +13:00
Dan Jackson 480478582a
Support for MS8607 PHT (Pressure Humidity Temperature) sensor (#1974)
Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com>
2024-03-05 10:50:11 +13:00
tikismoke c76dc4e574
Update pulse_meter.rst (#3512)
change service to match pulse_meter
2024-03-03 05:00:45 +01:00
DrBlokmeister 94ed0d76c4
Correct pulse_counter to pulse_meter (#3511)
The service pulse_counter.set_total_pulses does not exist. Instead it should be pulse_meter.
2024-03-03 04:59:53 +01:00
mathieu-mp 4d279427e5
Add regular polygon shapes to display component (#3551) 2024-03-01 16:49:29 +13:00
Jeroen van Oort 3d9616b5eb
Document W5500 support (#2843)
Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com>
2024-03-01 13:46:12 +13:00
DAVe3283 5fd4b4d74d
CSE7766 Apparent Power & Power Factor calculations (#3643) 2024-02-29 10:12:06 +13:00
Kevin Reilly 89f7224656
FAQ: fixed location of re-add when unavailable (#3650) 2024-02-28 18:23:44 +01:00
Jesse Hills b93759a2c8
Add docs for esphome->project->on_update (#3647) 2024-02-28 02:01:59 -06:00
Kevin Reilly eb3cfff760
FAQ: unavailable entities during deep sleep (#3648)
* FAQ: unavailable entities during deep sleep

* Deep sleep: added note about unavailable entity states

---------

Co-authored-by: Kevin Reilly <kevin.reilly@epicgames.com>
2024-02-28 07:51:46 +01:00
Dariusz Dalecki 17b35f9942
Update description to 2.9in V2 eink display variant (#3637)
As doc extension for this pull request which introduces "2.90inv2-r2" model:
https://github.com/esphome/esphome/pull/5481
2024-02-28 13:28:02 +11:00
NP v/d Spek 19876e886b
[RTTTL] add Gain volume control (#3644) 2024-02-28 11:31:36 +13:00
Zynth-dev a49bc0140e
Update index.rst (#3645)
Explanation for how to check if the select has a specific value selected. This is very difficult to find/deduce from the documentation.
2024-02-27 20:47:11 +01:00
Jimmy Hedman 3d2defde69
Document new parameter `min_ipv6_addr_count` and sub sensors for wifi_info and ethernet_info (#3234)
Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com>
Co-authored-by: ghsensdev <145111396+ghsensdev@users.noreply.github.com>
Co-authored-by: Daniel Baulig <me@danielbaulig.de>
2024-02-28 07:14:49 +13:00
Clyde Stubbs b8e58d401d
Add info about work-around for ble_tracker and wifi use on single core (#3502)
chips.
2024-02-27 07:04:03 +01:00
BigBobbas d0cb0a4188
Docs should specify that PSRAM is required (#3621)
* added requires PSRAM

* Update components/micro_wake_word.rst

---------

Co-authored-by: Keith Burzinski <kbx81x@gmail.com>
2024-02-26 08:57:53 +00:00
BigBobbas 83d95b71ef
Update bme280_environment.rst (#3641)
* Update bme280_environment.rst

update to doc to include use of _i2c or _spi as per recent platform change

* Update cookbook/bme280_environment.rst

---------

Co-authored-by: Keith Burzinski <kbx81x@gmail.com>
2024-02-26 02:55:29 -06:00
dougiteixeira 23c23421aa
Add device class support to text sensor (#3599)
Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com>
2024-02-26 11:29:42 +13:00
Alexander Puzynia e34ef83ad2
Update esphome.rst docs for ESPHOME_BUILD_PATH environment variable (#3183) 2024-02-26 11:29:18 +13:00
H. Árkosi Róbert a618617e64
Remove dead inkplate link (#3515) 2024-02-25 20:20:23 +00:00
H. Árkosi Róbert ccfbee538f
Delete devices directory (#3472) 2024-02-26 09:18:01 +13:00
Jesse Hills 0be12a282e
Merge pull request #3639 from esphome/bump-2024.2.1
2024.2.1
2024-02-26 09:04:54 +13:00
Jesse Hills e28a91071b
Update supporters for 2024.2.1 2024-02-26 07:54:02 +13:00
Jesse Hills 902f9b3f29
Update changelog for 2024.2.1 2024-02-26 07:53:28 +13:00
Jesse Hills 408e49efe2
Bump version to 2024.2.1 2024-02-26 07:52:29 +13:00
Samuel Sieb e875695aee
output is optional (#3633) 2024-02-26 07:52:29 +13:00
Jesse Hills a1ac3dc1b5
Merge branch 'current' into next 2024-02-26 07:46:51 +13:00
betz0r 2037a12f8d
Fix typo liquit to liquid (#3638) 2024-02-26 07:40:12 +13:00
Samuel Sieb 88cdf5cc4e
output is optional (#3633) 2024-02-26 07:22:50 +13:00
Alex Boyd d3dab083db
Build Docker image for arm64 (#3630)
This is needed in order for the esphome-docs Docker image to run on Docker Desktop on MacBook M1/2/3.
2024-02-24 13:00:42 +01:00
Jesse Hills a2df0f7838
Add some details to the 2024.2.0 release notes (#3629) 2024-02-23 11:10:06 -08:00
MrEditor97 68adb55c79
Update I2C minimum bus speed (#3493)
Co-authored-by: H. Árkosi Róbert <robreg@zsurob.hu>
2024-02-23 07:05:04 +01:00
Stefan Rado ce7d691779
Add documentation for uponor_smatrix component (#3381) 2024-02-22 16:03:17 +13:00
Jesse Hills 9871113af2
Point to new microWakeWord specific firmware (#3623) 2024-02-22 14:30:15 +13:00
Paulus Schoutsen caa873a6a5
Migrate ready-made projects to ESP Web Tools 10 (#3619) 2024-02-21 10:48:31 -05:00
Stephen Tierney 46790fd346
LTR390 - Multiple fixes (sensor name, descriptions and notes) (#3585)
Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com>
2024-02-21 17:10:07 +13:00
Jesse Hills 378fd6b9a0
Merge pull request #3618 from esphome/bump-2024.2.0
2024.2.0
2024-02-21 13:49:19 +13:00
Jesse Hills a7aad1dfe8
Bump version to 2024.2.0 2024-02-21 12:51:13 +13:00
Jesse Hills 488078cc26
Merge pull request #3617 from esphome/bump-2024.2.0b3
2024.2.0b3
2024-02-21 11:38:25 +13:00
Jesse Hills 6845bcfb9f
Update supporters for 2024.2.0b3 2024-02-21 10:58:49 +13:00
Jesse Hills f87dfbaf5f
Update changelog for 2024.2.0b3 2024-02-21 10:58:17 +13:00
Jesse Hills f20d38f1f7
Bump version to 2024.2.0b3 2024-02-21 10:57:46 +13:00
Keith Burzinski 6a9e138cec
Update VA docs to add on_idle action (#3572) 2024-02-21 10:57:46 +13:00
Jesse Hills 59d2ffe796
Merge branch 'current' into beta 2024-02-21 10:57:32 +13:00
Jesse Hills 80884a1d11
Merge branch 'current' into next 2024-02-21 10:57:31 +13:00
Keith Burzinski 26a717af0a
Update VA docs to add on_idle action (#3572) 2024-02-21 10:38:28 +13:00
Kevin P. Fleming 6bae4e4037
New component: ADE7880 voltage/current/power/energy sensor (#3123) 2024-02-20 12:24:49 +13:00
Sjors fb6439b62b
Flip configuration and command in example (#3615)
Since running `esphome <MY_DEVICE>.yaml compile` generates the warning 
```
WARNING Calling ESPHome with the configuration before the command is deprecated and will be removed in the future. 
WARNING Please instead use:
WARNING    esphome compile powerplug.yaml
```
2024-02-19 23:16:09 +01:00
Jesse Hills ce15850be0
Merge pull request #3613 from esphome/bump-2024.2.0b2
2024.2.0b2
2024-02-19 17:36:28 +13:00
Jesse Hills 13a8c8f390
Update supporters for 2024.2.0b2 2024-02-19 17:02:16 +13:00
Jesse Hills 499ee69d07
Update changelog for 2024.2.0b2 2024-02-19 17:01:44 +13:00
Jesse Hills 1d6cf403ac
Bump version to 2024.2.0b2 2024-02-19 17:01:06 +13:00
Jesse Hills c473a1d6cd
microWakeWord: Add minimum_esphome_version as optional field (#3612) 2024-02-19 17:01:05 +13:00
kahrendt 54d84e26c4
probability cutoff is a percentage (#3609) 2024-02-19 17:01:05 +13:00
Anton Viktorov 7d8c3c757a
INA226 - new options added for ADC configuration; Fixed improper work with signed values (#3608) 2024-02-19 14:25:02 +13:00
Jesse Hills 8fd1f43376
microWakeWord: Add minimum_esphome_version as optional field (#3612) 2024-02-19 11:53:00 +13:00
bisbastuner 491c33fc15
Add documentation about the new supply_voltage option (#3607) 2024-02-19 07:44:29 +13:00
kahrendt 49afad2a65
probability cutoff is a percentage (#3609) 2024-02-18 18:50:52 +13:00
Jesse Hills db16e12dad
Merge pull request #3605 from esphome/bump-2024.2.0b1
2024.2.0b1
2024-02-13 10:59:44 +13:00
Jesse Hills 3cdefb23fe
Update supporters for 2024.2.0b1 2024-02-13 10:10:27 +13:00
Jesse Hills a1929814ea
Update changelog for 2024.2.0b1 2024-02-13 10:09:50 +13:00
Jesse Hills 1578be61f1
Bump version to 2024.3.0-dev 2024-02-13 09:45:31 +13:00
Jesse Hills 9c1d3d3573
Bump version to 2024.2.0b1 2024-02-13 09:45:31 +13:00
Jesse Hills 9f189c737a
Merge branch 'current' into next 2024-02-13 09:44:35 +13:00
Jesse Hills 2dd2324963
Micro Wake Word docs (#3603) 2024-02-13 09:39:03 +13:00
ChuckMash b8bb71d71f
Documentation for 6190 & 6193 (WLED Sync fix and BK72XX support) (#3602) 2024-02-12 17:31:27 +13:00
Clyde Stubbs e4308e4e92
Fix ili9xxx docs, specifically example configs. (#3451) 2024-02-11 07:42:44 +01:00
NP v/d Spek 359ce8c896
[touchscreen] Add a note to the update_interval (#3601)
* [touchscreen] Add a note to the update_interval

* Update index.rst

---------

Co-authored-by: H. Árkosi Róbert <robreg@zsurob.hu>
2024-02-11 00:21:41 +01:00
fodfodfod 13988c20cf
Add All other options from Light (#3592) 2024-02-07 00:18:25 +00:00
Marcel Hetzendorfer 904568ca7e
add is_wrgb to esp32_rmt_led_strip (#3590) 2024-02-07 04:03:11 +09:00
dougiteixeira c6372c19a7
Updates links to device class list (#3594)
* Updates link to documentation for device classes for sensors

* Updates link to documentation for device classes and state classes for binary sensors

* Updates link to documentation for device classes and state classes for buttons

* Updates link to documentation for device classes and state classes for covers

* Updates link to documentation for device classes and state classes for numbers

* Updates link to documentation for device classes and state classes for swtichs
2024-02-06 06:52:40 +01:00
Matt Lyons-Wood 440947762d
Fixed wikipedia link (#3593) 2024-02-06 06:48:35 +01:00
VivantSenior ef18810315
Update logger.rst (#3588)
No logger level "WARNING". Should be "WARN"
2024-02-03 12:16:23 +01:00
Michael b1c36410d4
Update power_supply.rst (#3587)
Added maximum time for enable_time.
A delay() command of longer than 5 seconds triggers the watch dog timer and forces reset.
2024-02-03 11:51:18 +01:00
H. Árkosi Róbert 9e4ff6e250
Brush up modbus docs (#3478) 2024-01-30 18:01:35 -06:00
icefest 67065801c4
better description and note for pulse_meter graph (#3582) 2024-01-30 01:03:08 -08:00
rnauber d0a2aab79c
waveshare_eink_color: add 2.7inch B and V2 (#3580)
Co-authored-by: Richard Nauber <richard@nauber.dev>
2024-01-30 15:16:07 +11:00
yousaf465 eeb9c3fafa
Update inkplate6.rst (#3578)
correct switch spelling
2024-01-28 14:18:59 +01:00
Ricardo Peironcely 2e864dac2d
Olimex POE WOVER uses GPIO0 for clock (#3576)
Update ethernet.rst
2024-01-27 16:21:35 +01:00
Keith Burzinski 8211b73f95
I missed a couple of 's's (#3568) 2024-01-24 10:19:27 +01:00
Keith Burzinski 57e12be14e
Made for ESPHome doc updates (#3567) 2024-01-23 17:02:52 -06:00
Clyde Stubbs 4b4814b2b7
Document Pico-ResTouch-LCD-3.5 support in ili9xxx (#3563) 2024-01-24 07:40:46 +11:00
Keith Burzinski 6045e49142
Merge pull request #3565 from esphome/bump-2023.12.9
2023.12.9
2024-01-22 19:54:30 -06:00
Keith Burzinski 4839a5aabc
Update supporters for 2023.12.9 2024-01-22 19:30:53 -06:00
Keith Burzinski dde59cc464
Update changelog for 2023.12.9 2024-01-22 19:30:15 -06:00
Keith Burzinski 429ffeeb0f
Bump version to 2023.12.9 2024-01-22 19:28:13 -06:00
Dion 8bb4d7df8e
Update MCP3008 Formatting & Readability (#3564)
Increase readability and fix some minor punctuation / formatting issues.
2024-01-22 21:25:36 +01:00
Bascht74 c7f204fc8b
remove serial command text (#3561)
## Description:
The serial command text at the end is not needed anymore becaus of: https://github.com/esphome/esphome/pull/2214

Was probably forgotten to remove

**Related issue (if applicable):**
./.

**Pull request in [esphome]:**
./.

## Checklist:

  - [ ] I am merging into `next` because this is new documentation that has a matching pull-request in [esphome](https://github.com/esphome/esphome) as linked above.  
    or
  - [X] I am merging into `current` because this is a fix, change and/or adjustment in the current documentation and is not for a new component or feature.

  - [ ] Link added in `/index.rst` when creating new documents for new components or cookbook.
2024-01-20 19:30:17 +01:00
Jesse Hills 1bc652023a
Merge pull request #3560 from esphome/bump-2023.12.8
2023.12.8
2024-01-20 04:22:52 +13:00
Jesse Hills 1b8fc96097
Update supporters for 2023.12.8 2024-01-19 23:41:45 +09:00
Jesse Hills 75f7fa827e
Update changelog for 2023.12.8 2024-01-19 23:41:14 +09:00
Jesse Hills 96dbff7afc
Bump version to 2023.12.8 2024-01-19 23:40:27 +09:00
Jesse Hills 2b8777da69
Merge branch 'current' into next 2024-01-19 23:40:10 +09:00
tomaszduda23 6571a2bc32
OTA version documentation (#3552)
Co-authored-by: Keith Burzinski <kbx81x@gmail.com>
Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com>
2024-01-19 13:18:09 +09:00
Clyde Stubbs fe7f53e93c
Add Waveshare epd2.13v3 (#3171) 2024-01-19 12:10:55 +09:00
Jesse Hills d1d889d3f8
Add AM2120 model to dht (#3559) 2024-01-19 11:50:04 +09:00
Clyde Stubbs 90f45472da
Document quad spi config (#3454) 2024-01-19 13:30:57 +11:00
Steffen Pankratz 711e4c0002
bluetooth_proxy.rst: Fix typo (#3557)
Signed-off-by: Steffen Pankratz <kratz00@gmx.de>
2024-01-18 22:09:32 +01:00
kahrendt 340bd0d1c5
Add documentation for combination sensor (#3216) 2024-01-18 18:09:52 +09:00
Benoît Leforestier a7ac33d1bb
Add doc for Honeywell HumidIcon (I2C HIH series) Temperature & Humidity sensor (#3357)
Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com>
2024-01-18 09:57:00 +09:00
h2zero 54926d3843
Add documentation for MQTT X.509 client certificates. (#3387)
Co-authored-by: h2zero <powellperalata@gmail.com>
Co-authored-by: H. Árkosi Róbert <robreg@zsurob.hu>
Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com>
2024-01-18 08:27:07 +09:00
Keith Burzinski 92c48dd837
Add docs for VEML3235 lux sensor (#3471)
Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com>
2024-01-17 15:50:56 +09:00
Jesse Hills 76333cfdf7
Merge pull request #3547 from esphome/bump-2023.12.7
2023.12.7
2024-01-17 13:24:16 +13:00
Jesse Hills f77e8a9555
Update supporters for 2023.12.7 2024-01-17 08:29:58 +09:00
Jesse Hills 8a994302db
Update changelog for 2023.12.7 2024-01-17 08:29:29 +09:00
Jesse Hills 764c92a0d3
Bump version to 2023.12.7 2024-01-17 08:27:04 +09:00
Jesse Hills a27d88dacf
Merge branch 'current' into next 2024-01-17 08:26:33 +09:00
Keith Burzinski 1288961250
Add NFC binary sensor platform doc (#3526)
Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com>
2024-01-16 17:05:10 +09:00
Samuel Sieb b8feef3b60
document continuous option (#3537) 2024-01-16 16:44:13 +09:00
alexborro bc23d861d6
[Fingerprint_grow] Add description for on_finger_scan_misplaced and on_finger_scan_start triggers (#3490) 2024-01-16 16:38:22 +09:00
mathieu-mp b5f9550cf0
Add triangle shapes to display component (#3544) 2024-01-16 15:38:12 +09:00
JLo eebee22f8a
Add i2s_audio_id to i2s speaker (#3545) 2024-01-16 00:14:38 +09:00
NP v/d Spek 215e8f6eb0
add new display model and option to set 18Bit color mode. (#3542) 2024-01-15 11:09:38 +09:00
Jesse Hills f519fc37ae
Merge pull request #3541 from esphome/bump-2023.12.6
2023.12.6
2024-01-15 13:07:14 +13:00
Samuel Sieb 62292906f0
document cse7766 changes (#3539) 2024-01-15 09:05:50 +09:00
Jesse Hills 6ddf0e1a8c
Update supporters for 2023.12.6 2024-01-15 08:26:38 +09:00
Jesse Hills 34d17422f3
Update changelog for 2023.12.6 2024-01-15 08:26:06 +09:00
Jesse Hills 3e9a2c9290
Bump version to 2023.12.6 2024-01-15 08:25:50 +09:00
Jesse Hills cc2f6abe0c
Merge branch 'current' into next 2024-01-15 08:23:35 +09:00
NP v/d Spek c3f21fbbb3
clarify the use of "on_update (#3538) 2024-01-14 07:54:52 +01:00
rossking 398e67c9eb
Update ili9xxx.rst (#3536)
Fixed the T-Embed dimensions to follow proper format. Added code block to make this work for TTGO boards.
2024-01-13 15:54:31 +01:00
85368.MB b21f225872
fix ota trigger example (#3530) 2024-01-11 14:54:19 -08:00
Simone Rossetto 0cac6380d5
Documentation for WireGuard actions and conditions (#3342) 2024-01-11 14:09:45 +09:00
Andrey Bodrov 3f20eb3a22
Add BME280 SPI Component (#3273)
* Update bme280.rst

add BME280 SPI doc

* Update bme280.rst
2024-01-09 22:31:47 -06:00
Fabian Muehlberger ac1c66f3d8
Update neopixelbus.rst (#3524)
Removed minor spelling error on line 16
2024-01-09 15:27:18 +01:00
Dusan Cervenka 15ca0fae0a
Extend i2s config options (#3517) 2024-01-09 10:07:24 +09:00
Edward Firmo fb8e25267d
Extends UART change at runtime to ESP8266 (#3496) 2024-01-09 09:45:51 +09:00
functionpointer ceec8f6685
pylontech: document voltage_low and voltage_high correctly (#3519) 2024-01-09 08:30:01 +09:00
Ruben van Dijk fca598b833
Add questionmark to default glyphs. (#3516) 2024-01-09 08:19:12 +09:00
DominikBitzer b510a08540
Hint for using 433Mhz transmitter (#3521)
This has to be added in order for the example to work, otherwise the example won't work because homeassistant is expecting a feedback sensor (for 433 transmitters, there is usually no feedback from e.g. the RC-lightbulb)
2024-01-07 22:06:04 +01:00
attilioscot 3162638b25
Update pulse_meter.rst (#3518)
fix action in example
2024-01-06 08:29:14 +01:00
NP v/d Spek 5cc4b67696
Update the touchscreen document's (#3487)
* Update Touchscreen documentation
move the XPT2046 component to the right section.

* search what is wrong

* fix typo

* restore last fix

* Update index.rst

* try to resolve the issue by removing the ref-link

* Update index.rst

* Update components/touchscreen/index.rst

Co-authored-by: Keith Burzinski <kbx81x@gmail.com>

* Update components/touchscreen/index.rst

Co-authored-by: Keith Burzinski <kbx81x@gmail.com>

* Update components/touchscreen/index.rst

Co-authored-by: Keith Burzinski <kbx81x@gmail.com>

* Update components/touchscreen/index.rst

Co-authored-by: Keith Burzinski <kbx81x@gmail.com>

* Update components/touchscreen/index.rst

Co-authored-by: Keith Burzinski <kbx81x@gmail.com>

* Update components/touchscreen/index.rst

Co-authored-by: Keith Burzinski <kbx81x@gmail.com>

* Update components/touchscreen/index.rst

Co-authored-by: Keith Burzinski <kbx81x@gmail.com>

* Update components/touchscreen/index.rst

Co-authored-by: Keith Burzinski <kbx81x@gmail.com>

* opdate xpt2046 doc for new Touchscreen component.

* add documentation for the ft63x6 touchscreen

* add new-line

* Move image around

* Update components/touchscreen/index.rst

* Update components/touchscreen/index.rst

* Update components/touchscreen/index.rst

* Update components/touchscreen/index.rst

* Update touchscreen documentation needed to be updated

* fix reported issue

* fix reported issue

* fix reported ref issue

---------

Co-authored-by: Keith Burzinski <kbx81x@gmail.com>
Co-authored-by: Clyde Stubbs <2366188+clydebarrow@users.noreply.github.com>
2024-01-03 17:01:11 +01:00
bwynants 4b5a5159ff
medisana scale (#3506)
Co-authored-by: H. Árkosi Róbert <robreg@zsurob.hu>
2024-01-02 20:20:25 +01:00
Peter van Dijk 470d4a5338
Update AHT10 docs to show support for AHT30 sensor (#3508)
A few users commented in https://github.com/esphome/esphome/pull/5198 to say their AHT30 works now.
I tested this, and indeed it works.
2024-01-01 23:00:12 +01:00
Michael Davidson 8eb3206560
Add note about the requirement for Pages in Pop Up Mode + sample to emulate Pop Up Mode in Advanced Mdoe (#3504) 2023-12-30 09:33:42 +01:00
Clyde Stubbs 830575fdc0
Ble client additions. (#3138)
* Add ble_client actions

* Fix heading length

---------

Co-authored-by: H. Árkosi Róbert <robreg@zsurob.hu>
2023-12-29 01:38:14 -06:00
Samuel Sieb f95d5e4b2f
mcp4728 is required (#3302)
Co-authored-by: H. Árkosi Róbert <robreg@zsurob.hu>
2023-12-29 08:28:19 +01:00
Dion 083f3f264b
Update ld2410.rst - Typo (#3503)
perfrom -> perform (button heading)
2023-12-28 20:52:05 +01:00
Clyde Stubbs e1f1cc9771
Note about st7789v being replaced by ili9xxx (#3499) 2023-12-27 00:25:10 -06:00
Anton Viktorov da8e29245e
ST7567 display support (#3482) 2023-12-27 12:04:14 +11:00
Jesse Hills 2b0f1ac8c4
Merge pull request #3495 from esphome/bump-2023.12.5
2023.12.5
2023-12-26 02:45:13 +13:00
Jesse Hills c010c94efd
Update changelog for 2023.12.5 2023-12-25 22:24:50 +09:00
Jesse Hills 713c381ec2
Bump version to 2023.12.5 2023-12-25 22:24:14 +09:00
Jesse Hills ad03f2e4ff
Merge branch 'current' into next 2023-12-25 22:23:38 +09:00
Jesse Hills afdf66ea33
Merge pull request #3494 from esphome/bump-2023.12.4
2023.12.4
2023-12-26 01:45:56 +13:00
Jesse Hills 0feac97921
Update supporters for 2023.12.4 2023-12-25 21:18:36 +09:00
Jesse Hills 51290a106f
Update changelog for 2023.12.4 2023-12-25 21:18:05 +09:00
Jesse Hills 915ff76846
Bump version to 2023.12.4 2023-12-25 21:14:56 +09:00
Jesse Hills d34972ea3d
Merge branch 'current' into next 2023-12-25 21:14:37 +09:00
Maximilian Ertl 8e983bd8d5
Fix type in ble_presence.rst (#3489)
- "present" was misspelled as "precent"
- all other lines ent with a period
2023-12-23 07:18:31 +01:00
Jesse Hills cf7f8bf32d
Merge pull request #3486 from esphome/bump-2023.12.3
2023.12.3
2023-12-22 21:42:55 +13:00
Jesse Hills 623f31f1b2
Update changelog for 2023.12.3 2023-12-22 17:13:08 +09:00
Jesse Hills 1a18ed3739
Bump version to 2023.12.3 2023-12-22 17:12:43 +09:00
Jesse Hills 5f8cbb2bd1
Merge branch 'current' into next 2023-12-22 17:12:04 +09:00
Jesse Hills 2880b24026
Merge pull request #3485 from esphome/bump-2023.12.2
2023.12.2
2023-12-22 15:57:25 +13:00
Scott K Logan e3ec10f8c7
Add a Binary Sensor Filter for state settling (#3439)
Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com>
2023-12-22 11:33:32 +09:00
Jesse Hills 75c986611e
Update supporters for 2023.12.2 2023-12-22 11:05:16 +09:00
Jesse Hills 407cef741c
Update changelog for 2023.12.2 2023-12-22 11:04:47 +09:00
Jesse Hills 16c7e15ebc
Bump version to 2023.12.2 2023-12-22 11:04:03 +09:00
Edward Firmo 89efea7d96
UART changing at runtime (#3456)
Based on esphome/esphome#5909
2023-12-22 11:04:03 +09:00
Jesse Hills 13d8585470
Merge branch 'current' into next 2023-12-22 11:03:43 +09:00
Jesse Hills d3b6751e80
Add a bit more text to the pin reuse message in changelog (#3484) 2023-12-22 10:42:40 +09:00
marshn 9caae65c93
Add KeeLoq RF protocol to remote_base integration (#3255) 2023-12-22 09:30:26 +09:00
Jesse Hills 007d30aba0
Merge pull request #3483 from esphome/bump-2023.12.1
2023.12.1
2023-12-22 04:02:55 +13:00
Jesse Hills a760ae2af5
Remove extra character 2023-12-21 23:44:55 +09:00
Jesse Hills 09b205a347
Update supporters for 2023.12.1 2023-12-21 23:34:27 +09:00
Jesse Hills 887c86a64c
Update changelog for 2023.12.1 2023-12-21 23:33:54 +09:00
Jesse Hills 60b7943eab
Bump version to 2023.12.1 2023-12-21 23:33:36 +09:00
Steve Rodgers 790c14cccb
Update alarm docs to reflect changes in esphome/esphome#5671 (#3334)
Co-authored-by: Keith Burzinski <kbx81x@gmail.com>
2023-12-21 14:10:59 +09:00
Ruben van Dijk 5e052c2bf7
(fingerprint_grow) on_finger_scan_invalid automation. (#3430) 2023-12-21 13:39:58 +09:00
mrtoy-me 90ca1b6cc6
Add Waveshare 1.47in to st7789v (documentation for esphome PR#5884) (#3440) 2023-12-21 13:38:20 +09:00
Fabian Pflug 52f3fa8fa8
Add waveshare 2.9inV3 model (#3443) 2023-12-21 13:36:48 +09:00
Fabian Pflug f6ffef3df4
Add 2.7inv2 version for waveshare (#3444) 2023-12-21 13:30:13 +09:00
yousaf465 c8ff8f8d75
Update ens160.rst (#3481)
* Update ens160.rst

update datasheet link. pervious one is broken

* Update ens160.rst
2023-12-20 21:59:01 -06:00
Pavlo Dudnytskyi 00f10d2b87
Updated Haier integration documentation to support alarm triggers (#3474)
Co-authored-by: Keith Burzinski <kbx81x@gmail.com>
2023-12-21 09:10:53 +09:00
Matthew Campbell 64cccc6f10
Add docs for addressable color wipe gradient feature (#3339)
Co-authored-by: Keith Burzinski <kbx81x@gmail.com>
2023-12-21 09:09:23 +09:00
mknjc 159663ac62
Add documentation for include substitution defaults (#3370)
Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com>
2023-12-21 09:08:16 +09:00
Branden Cash 1b497bfa82
feat: add documentation for AS5600 (#3304)
Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com>
2023-12-21 09:07:49 +09:00
Jesse Hills 863a9388c9
Merge branch 'current' into next 2023-12-21 09:07:19 +09:00
Jesse Hills af4b7569dc
Merge pull request #3480 from esphome/bump-2023.12.0
2023.12.0
2023-12-21 08:48:11 +09:00
Jesse Hills a51d9869d6
Update supporters for 2023.12.0 2023-12-21 08:11:22 +09:00
Jesse Hills 85c52e1972
Update changelog for 2023.12.0 2023-12-21 08:10:53 +09:00
Jesse Hills eafbb32313
Bump version to 2023.12.0 2023-12-21 08:09:10 +09:00
Jesse Hills 284db0af5f
Merge pull request #3479 from esphome/bump-2023.12.0b6
2023.12.0b6
2023-12-21 07:56:25 +09:00
Jesse Hills 57992bdf56
Update supporters for 2023.12.0b6 2023-12-20 21:00:36 +09:00
Jesse Hills 931e46315f
Update changelog for 2023.12.0b6 2023-12-20 21:00:06 +09:00
Jesse Hills bf81979580
Bump version to 2023.12.0b6 2023-12-20 20:59:47 +09:00
Jesse Hills 4dcc5cbe0e
Merge branch 'current' into next 2023-12-20 20:59:40 +09:00
Jesse Hills 4005bdb0c9
Merge branch 'current' into beta 2023-12-20 20:59:40 +09:00
Yorick Smilda 2b2c0e2259
`HLW8012`: add `"never"` option to `change_mode_every` (#3473) 2023-12-20 04:52:59 -06:00
Jesse Hills 66ea5acfc2
Draft PR explanation (#3450) 2023-12-20 19:11:04 +09:00
Jesse Hills a9d57c4b1c
Merge pull request #3476 from esphome/bump-2023.12.0b5
2023.12.0b5
2023-12-20 14:17:45 +09:00
Jesse Hills 788d6a361d
Fix changelog 2023-12-20 13:47:05 +09:00
Jesse Hills 0d3b3536d3
Update supporters for 2023.12.0b5 2023-12-20 13:44:34 +09:00
Jesse Hills 4bb0a0d796
Update changelog for 2023.12.0b5 2023-12-20 13:44:05 +09:00
Jesse Hills 4fdd78c8ea
Bump version to 2023.12.0b5 2023-12-20 13:43:45 +09:00
Keith Burzinski fea3671c7c
Update logger component docs for new USB support (#3469) 2023-12-20 13:43:45 +09:00
Keith Burzinski 2544de1052
Update logger component docs for new USB support (#3469) 2023-12-20 11:45:10 +09:00
Jesse Hills 89fd09f8e5
Merge pull request #3475 from esphome/bump-2023.12.0b4
2023.12.0b4
2023-12-20 10:49:56 +09:00
Jesse Hills d3f194bcc8
Fix doc link 2023-12-20 10:35:11 +09:00
Jesse Hills c8741f5e7b
Update supporters for 2023.12.0b4 2023-12-20 10:16:47 +09:00
Jesse Hills 7fff990f8f
Update changelog for 2023.12.0b4 2023-12-20 10:16:18 +09:00
Jesse Hills c6df0af940
Bump version to 2023.12.0b4 2023-12-20 09:59:59 +09:00
Jesse Hills 1a2beda1ef
Merge branch 'current' into beta 2023-12-20 09:57:28 +09:00
Jesse Hills d8d06a274a
Add 'important' class to css to fix for dark mode (#3470) 2023-12-19 11:52:43 +09:00
Jesse Hills 3fdfb7aaec
Merge pull request #3464 from esphome/bump-2023.12.0b3
2023.12.0b3
2023-12-18 17:32:17 +09:00
Jesse Hills 28cd1e3d6a
Update supporters for 2023.12.0b3 2023-12-18 16:52:09 +09:00
Jesse Hills 331c5fed10
Update changelog for 2023.12.0b3 2023-12-18 16:51:39 +09:00
Jesse Hills dc854620ea
Bump version to 2023.12.0b3 2023-12-18 16:51:12 +09:00
Clyde Stubbs 2188a7948a
Added 5t5x06 (#3423) 2023-12-16 17:51:42 -06:00
Jesse Hills 46090fe37f
Merge pull request #3457 from esphome/bump-2023.12.0b2
2023.12.0b2
2023-12-15 15:26:43 +09:00
Edward Firmo d2a65e9a74
UART changing at runtime (#3456)
Based on esphome/esphome#5909
2023-12-15 07:07:54 +01:00
Jesse Hills 05a9f3d22b
Update supporters for 2023.12.0b2 2023-12-15 15:03:56 +09:00
Jesse Hills 9a3cfd4d78
Update changelog for 2023.12.0b2 2023-12-15 15:03:27 +09:00
Jesse Hills a500a5fe63
Bump version to 2023.12.0b2 2023-12-15 15:02:49 +09:00
jochenvg 1bfc664024
Template cover toggle (#3452) 2023-12-15 15:02:49 +09:00
jochenvg fd321edb44
Template cover toggle (#3452) 2023-12-14 14:01:08 +09:00
Jesse Hills 7fc5131a58
Merge pull request #3453 from esphome/bump-2023.12.0b1
2023.12.0b1
2023-12-14 09:01:04 +09:00
Jesse Hills e710723463
Update supporters for 2023.12.0b1 2023-12-14 08:35:48 +09:00
Jesse Hills f5f8782691
Update changelog for 2023.12.0b1 2023-12-14 08:35:14 +09:00
Jesse Hills 4de34d9b1f
Bump version to 2024.1.0-dev 2023-12-14 08:30:47 +09:00
Jesse Hills 484408b53e
Bump version to 2023.12.0b1 2023-12-14 08:30:47 +09:00
Keith Burzinski 7f50128530
Add PN7150 doc (#3242)
Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com>
2023-12-14 08:27:40 +09:00
Jesse Hills fdf872309a
Merge branch 'current' into next 2023-12-14 08:22:41 +09:00
Keith Burzinski c46c395099
Add PN7160 doc (#3241)
Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com>
2023-12-14 07:54:58 +09:00
Stefan Rado 97aa75ae7e
Add humidity support to climate (#3359) 2023-12-13 10:23:05 +09:00
Nicolas Gilles 2cfaa985f4
Add doc for nec repeats commands field (#3069)
Co-authored-by: H. Árkosi Róbert <robreg@zsurob.hu>
Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com>
2023-12-13 08:55:24 +09:00
Theo Hussey d1b1d2a3d6
New documentation for AHT10/AHT20 sensors (#3221)
Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com>
2023-12-13 08:29:01 +09:00
Thomas Bræmer eb8ee0bcab
Added the A02YYUW distance sensor (#3356) 2023-12-13 08:26:13 +09:00
NP v/d Spek aeb867d4ab
Touchscreen update to explain the new features added (#3405)
Co-authored-by: Keith Burzinski <kbx81x@gmail.com>
Co-authored-by: Clyde Stubbs <2366188+clydebarrow@users.noreply.github.com>
2023-12-13 10:01:23 +11:00
Tucker Kern fe5a2862ce
Update speed fan with configuration options for preset modes (#3362)
Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com>
2023-12-12 14:13:33 +09:00
Evgeny 43d22a4c81
Added description for `on_image` callback. (#2933)
Co-authored-by: H. Árkosi Róbert <robreg@zsurob.hu>
Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com>
2023-12-12 13:48:25 +09:00
Michael Davidson a56be58f14
Add graphical display menu docs (#2572)
Co-authored-by: H. Árkosi Róbert <robreg@zsurob.hu>
Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com>
2023-12-12 12:16:02 +09:00
dependabot[bot] 2552595c6b
Bump actions/setup-python from 4 to 5 (#3438) 2023-12-07 08:27:06 +01:00
Edward Firmo 565e0703c2
Nextion exit reparse mode on startup (#3421)
* Adds docs for Nextion `start_up_page`

Based on changes from https://github.com/esphome/esphome/pull/5673

* Nextion - On_touch event

* Fix list of variables

* Fix list

* Lint - add blank line

* Lint - Fix underline size

* Nextion exit reparse mode on startup

Related to https://github.com/esphome/esphome/pull/5868

* Update components/display/nextion.rst

Co-authored-by: Keith Burzinski <kbx81x@gmail.com>

---------

Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com>
Co-authored-by: Keith Burzinski <kbx81x@gmail.com>
2023-12-06 00:55:27 -06:00
Michael Hoffmann fb7634f15f
Added a missing tab to fix code formatting (#3436) 2023-12-06 06:51:39 +01:00
Subhash Chandra bb2a740d8d
add documentation for !remove (#3406)
Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com>
2023-12-06 10:04:20 +09:00
tronikos 51dbc47f7e
Fix typo (#3435) 2023-12-05 19:40:47 +01:00
Philippe LUC cd566bc2f9
Update teleinfo.rst (#3432) 2023-12-05 09:32:02 +09:00
Peter Kindström 1f0e3ea985
Update configuration-types.rst (#3425) 2023-12-05 09:31:24 +09:00
Josh Barnard 0bfc2244df
Adding ESPHome-Econet pointer (#3422) 2023-12-05 09:28:59 +09:00
Tomasz 019b2fa4c4
Change the URL of the YAML repository, as the old one is archived (#3420) 2023-12-05 09:28:36 +09:00
Clyde Stubbs 2bdece17dd
Document option to suppress check for multiple pin usage (#3366) 2023-12-05 08:56:57 +09:00
Fabio Pugliese Ornellas d38368d4a6
Security improvement: Support wifi ap_timeout=0s (disable) (#3431) 2023-12-05 08:50:05 +09:00
jiriappl 9841389c97
Add missing required attribute name (#3428)
airthings_wave_plug requires `id` or `name` attributes, but both were missing in the sample. Adding `name` into the sample to have a working sample.
2023-12-03 06:03:47 +01:00
Piotr Szulc e470d7e9ab
Warn users about ESP32 Tasmota v12 incompatibility (#3426)
* Warn users about ESP32 Tasmota v12 incompatibility

* Fixed underline
2023-12-03 01:22:53 +01:00
Clyde Stubbs 8065e5c8b1
ili9xxx display component doc update (#3200) 2023-11-29 14:06:55 +13:00
Clyde Stubbs 06d33db20e
Add HE60R Garage Door Opener (#3413) 2023-11-29 10:42:41 +13:00
Maurice Makaay 9eacd73d83
Fix DSMR request pin diagram for 3V3 GPIO output (#3396)
The request pin diagram used a ballast resistor of 330 Ohm, which was
based on a GPIO output of 5V. This should have been 200 Ohm, based on a
GPIO output of 3.3V.

This patch updates both the related description and the diagram image.
2023-11-28 11:17:28 +01:00
Saentist 342c7df193
Update sntp.rst (#3386)
* Update sntp.rst

More detailed example

* Don't use corporate servers in the example

---------

Co-authored-by: H. Árkosi Róbert <robreg@zsurob.hu>
2023-11-28 10:14:19 +00:00
erapade 18ee074864
missing change directory directive (#3391)
* missing change directory directive

I added the "cd esphome" command in the GIT section to make it easier for users not that familiar with GIT

* Update contributing.rst

---------

Co-authored-by: H. Árkosi Róbert <robreg@zsurob.hu>
2023-11-28 10:10:31 +00:00
Dawid Cieszyński 0ee6b29edb
Update ld2420.rst (#3402)
Replace timeout with presence_timeout in the example
2023-11-28 11:08:02 +01:00
Harrison Jones f765421aba
Update spi_led_strip.rst (#3408)
Mention that the component also supports the `P9813` LED driver.
2023-11-28 11:06:58 +01:00
Benjamin G 686946db82
Clarify NEC data length (#3393) 2023-11-28 11:06:06 +01:00
Sean Brogan 75e5c52ee1
Update mopeka pro documentation to include details about universal sensor (#3418) 2023-11-28 20:00:50 +13:00
Edward Firmo ddf45531d5
Nextion `on_touch` trigger (#3412)
Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com>
2023-11-28 17:15:05 +13:00
Jesse Hills 3285cd184b
Merge branch 'current' into next 2023-11-28 12:31:33 +13:00
functionpointer d848f0b941
Add pylontech integration (#2841)
Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com>
2023-11-28 11:43:06 +13:00
Jesse Hills 19e8c11d0a
Merge branch 'current' into next 2023-11-28 11:14:07 +13:00
Jesse Hills c935cd8cd0
Add 'voice_assistant.connected' condition (#3414) 2023-11-27 14:57:51 -06:00
Clyde Stubbs 815684df11
Gt911 touchscreen component (#3400)
Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com>
2023-11-28 09:42:38 +13:00
Clyde Stubbs 91761cf259
Add docs for power_supply enable_on_boot config option. (#3411) 2023-11-27 10:37:20 +13:00
Vincent Schmandt 10bdd79d7b
Documentation for `ens160` component (#2931)
* Create ens160.rst

Add ens160

* Update index.rst

* Update index.rst

* Add ens160 image

* Add files via upload

* Delete ens160.jpg

* Add files via upload

* Update ens160.rst

* Add files via upload

* Update ens160.rst

* Update ens160.rst

* Update ens160.rst

* Update ens160.rst

A few extra bits of information about 1 sec measurement frequency and compensation

* Update ens160.rst

fixing a few mistakes and omission

* Update ens160.rst

* Update ens160.rst

* Update components/sensor/ens160.rst

Co-authored-by: Keith Burzinski <kbx81x@gmail.com>

* Update components/sensor/ens160.rst

Co-authored-by: Keith Burzinski <kbx81x@gmail.com>

* Update components/sensor/ens160.rst

Co-authored-by: Keith Burzinski <kbx81x@gmail.com>

* Update components/sensor/ens160.rst

Co-authored-by: Keith Burzinski <kbx81x@gmail.com>

* Update components/sensor/ens160.rst

Co-authored-by: Keith Burzinski <kbx81x@gmail.com>

* Update components/sensor/ens160.rst

Co-authored-by: Keith Burzinski <kbx81x@gmail.com>

* Update index.rst

---------

Co-authored-by: mrtoy-me <118446898+mrtoy-me@users.noreply.github.com>
Co-authored-by: H. Árkosi Róbert <robreg@zsurob.hu>
Co-authored-by: Keith Burzinski <kbx81x@gmail.com>
2023-11-23 22:31:21 -06:00
Jesse Hills be2bbb0b0c
Merge branch 'current' into next 2023-11-24 10:19:54 +13:00
Ilia Sotnikov a9c5f2e547
Pillow: bump to 10.1.0 (#3401) 2023-11-24 08:55:45 +13:00
Jesse Hills a53fc6b37e
Add documentation for images using URL (#3409) 2023-11-24 08:10:39 +13:00
Clyde Stubbs 0df31afcfd
Document startup_delay for interval component (#3158)
Co-authored-by: H. Árkosi Róbert <robreg@zsurob.hu>
2023-11-23 20:31:30 +13:00
matt7aylor 225263669e
sen5x normalized_offset_slope as float (#2981)
Co-authored-by: H. Árkosi Róbert <robreg@zsurob.hu>
2023-11-23 08:48:43 +13:00
Jesse Hills e870b4cf96
Merge branch 'current' into next 2023-11-22 11:07:58 +13:00
Keith Burzinski dfab9bd249
Add some additional VA triggers, part 2 (#3399)
Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com>
2023-11-22 10:09:18 +13:00
Pavlo Dudnytskyi 745e118317
Updated Haier documentation with new configuration values description (#3349)
Co-authored-by: Pavlo Dudnytskyi <pdudnytskyi@astrata.eu>
2023-11-21 14:12:41 +13:00
Jesse Hills db2f969377
Merge branch 'current' into next 2023-11-18 21:03:47 +13:00
Keith Burzinski 53f9b84ad2
Add 2MB option for partitions.csv generation and restore use of user-defined partitions (#3388) 2023-11-18 21:01:02 +13:00
Nikita Kuklev b02e8d209c
Add SH1107 documentation to SSD1306 page (#3094) 2023-11-16 21:06:06 +13:00
Keith Burzinski 97f37708d8
Add docs for additional VA triggers (#3382) 2023-11-15 21:29:58 -06:00
Jesse Hills 1f7ad776c1
Revert "Add Seeed Studio mmWave Sensor MR24HPC1 document" (#3380) 2023-11-16 06:57:44 +13:00
Citric Lee 18af7f8bb0
Add Seeed Studio mmWave Sensor MR24HPC1 document (#3376)
* Add Seeed Studio mmWave Sensor MR24HPC1 document

* Add Seeed Studio mmWave Sensor MR24HPC1 document

* Adding documents to the index

* Fix problems with the documentation

* Fix problems with the documentation

* Fix problems with the documentation

* Fix problems with the documentation

* Fix problems with the documentation

* Fix URL error
2023-11-15 13:52:16 +01:00
Jesse Hills dcf9ff2b47
Merge branch 'current' into next 2023-11-15 16:15:17 +13:00
Jesse Hills 548de9d55f
Merge branch 'current' into next 2023-11-15 12:44:54 +13:00
Jesse Hills 2e77a2f31f
Merge branch 'current' into next 2023-11-14 14:32:27 +13:00
Jordan W. Cobb 6afb421ba6
Fix typo, double colon in fan action (#3363) 2023-11-14 14:31:20 +13:00
Keith Burzinski a6e090d379
Add documentation for flash size (#3345) 2023-11-14 13:47:30 +13:00
guillempages 8894726b60
Fix types for text template options (#3360)
Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com>
2023-11-13 15:26:02 +13:00
guillempages 814b3f1ce7
Fix a typo in the text template documentation (#3358) 2023-11-12 14:02:43 +13:00
Mike La Spina 76abb6a0ae
Missing rename (#3354) 2023-11-10 19:01:04 +01:00
Samuel Sieb 72feb57cdc
describe valid pin numbers (#3352) 2023-11-10 06:27:02 +01:00
Jesse Hills 93afb6f86c
Merge branch 'current' into next 2023-11-09 12:46:45 +13:00
Keith Burzinski 3be8681ee7
Tidying up LD2420 doc (#3337)
Co-authored-by: H. Árkosi Róbert <robreg@zsurob.hu>
2023-11-08 15:27:15 +13:00
Jesse Hills ad9c4e4dc7
Bump version to 2023.12.0-dev 2023-11-08 13:13:58 +13:00
504 changed files with 14102 additions and 5956 deletions

View File

@ -18,9 +18,17 @@ jobs:
build:
runs-on: ubuntu-latest
steps:
-
name: Install pagefind
uses: jaxxstorm/action-install-gh-release@v1.12.0
with:
repo: cloudcannon/pagefind
-
name: Checkout source code
uses: actions/checkout@v4.1.0
uses: actions/checkout@v4.1.6
-
name: Set up QEMU
uses: docker/setup-qemu-action@v3
-
name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
@ -43,6 +51,7 @@ jobs:
with:
context: .
push: true
platforms: linux/amd64,linux/arm64
tags: |
esphome/esphome-docs:latest
ghcr.io/esphome/esphome-docs:latest

View File

@ -19,9 +19,13 @@ jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4.1.0
- name: Install pagefind
uses: jaxxstorm/action-install-gh-release@v1.12.0
with:
repo: cloudcannon/pagefind
- uses: actions/checkout@v4.1.6
- name: Set up Python 3.8
uses: actions/setup-python@v4
uses: actions/setup-python@v5
with:
python-version: 3.8
- name: Install dependencies

View File

@ -1,4 +1,4 @@
FROM python:3.8-slim
FROM python:3.12-slim
RUN apt-get update && apt-get install -y --no-install-recommends \
curl \
@ -9,10 +9,25 @@ RUN apt-get update && apt-get install -y --no-install-recommends \
software-properties-common \
&& apt-get clean && rm -rf /var/lib/apt/lists/* /tmp/*
COPY requirements.txt .
RUN useradd -ms /bin/bash esphome
USER esphome
WORKDIR /workspaces/esphome-docs
ENV PATH="${PATH}:/home/esphome/.local/bin"
COPY requirements.txt ./
RUN pip3 install --no-cache-dir --no-binary :all: -r requirements.txt
EXPOSE 8000
WORKDIR /data/esphomedocs
CMD ["make", "live-html"]
LABEL \
org.opencontainers.image.title="esphome-docs" \
org.opencontainers.image.description="An image to help with ESPHomes documentation development" \
org.opencontainers.image.vendor="ESPHome" \
org.opencontainers.image.licenses="CC BY-NC-SA 4.0" \
org.opencontainers.image.url="https://esphome.io" \
org.opencontainers.image.source="https://github.com/esphome/esphome-docs" \
org.opencontainers.image.documentation="https://github.com/esphome/esphome-docs/blob/current/README.md"

View File

@ -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 = 2023.11.6
PROJECT_NUMBER = 2024.5.4
# 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

View File

@ -1,15 +1,24 @@
ESPHOME_PATH = ../esphome
ESPHOME_REF = 2023.11.6
ESPHOME_REF = 2024.5.4
PAGEFIND_VERSION=1.1.0
PAGEFIND=pagefind
NET_PAGEFIND=../pagefindbin/pagefind
.PHONY: html html-strict cleanhtml deploy help live-html Makefile netlify netlify-api api netlify-dependencies svg2png copy-svg2png minify
.PHONY: html html-strict cleanhtml deploy help live-html live-pagefind Makefile netlify netlify-api api netlify-dependencies svg2png copy-svg2png minify
html:
sphinx-build -M html . _build -j auto -n $(O)
live-html:
${PAGEFIND}
live-html: html
sphinx-autobuild . _build -j auto -n $(O) --host 0.0.0.0
live-pagefind: html
${PAGEFIND} --serve
html-strict:
sphinx-build -M html . _build -W -j auto -n $(O)
${PAGEFIND}
minify:
minify _static/webserver-v1.js > _static/webserver-v1.min.js
@ -32,6 +41,10 @@ api:
fi
ESPHOME_PATH=$(ESPHOME_PATH) doxygen Doxygen
net-html:
sphinx-build -M html . _build -j auto -n $(O)
${NET_PAGEFIND}
netlify-api: netlify-dependencies
mkdir -p _build/html/api
@if [ ! -d "$(ESPHOME_PATH)" ]; then \
@ -40,15 +53,23 @@ netlify-api: netlify-dependencies
fi
ESPHOME_PATH=$(ESPHOME_PATH) ../doxybin/doxygen Doxygen
netlify-dependencies:
netlify-dependencies: pagefind-binary
mkdir -p ../doxybin
curl -L https://github.com/esphome/esphome-docs/releases/download/v1.10.1/doxygen-1.8.13.xz | xz -d >../doxybin/doxygen
chmod +x ../doxybin/doxygen
pagefind-binary:
mkdir -p ../pagefindbin
curl -o pagefind-v$(PAGEFIND_VERSION)-x86_64-unknown-linux-musl.tar.gz https://github.com/CloudCannon/pagefind/releases/download/v$(PAGEFIND_VERSION)/pagefind-v$(PAGEFIND_VERSION)-x86_64-unknown-linux-musl.tar.gz -L
tar xzf pagefind-v$(PAGEFIND_VERSION)-x86_64-unknown-linux-musl.tar.gz
rm pagefind-v$(PAGEFIND_VERSION)-x86_64-unknown-linux-musl.tar.gz
mv pagefind ${NET_PAGEFIND}
copy-svg2png:
cp svg2png/*.png _build/html/_images/
netlify: netlify-dependencies netlify-api html copy-svg2png
netlify: netlify-dependencies netlify-api net-html copy-svg2png
lint: html-strict
python3 lint.py

Binary file not shown.

Before

Width:  |  Height:  |  Size: 24 KiB

After

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 133 KiB

After

Width:  |  Height:  |  Size: 132 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 80 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 72 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 167 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 277 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 111 KiB

View File

@ -1,3 +1,9 @@
/* provide this to be queried in JS. Sadly can't be used in media-queries just yet*/
:root {
--mobile-width-stop: 875;
}
.row-odd {
background-color: #f3f6f6;
}
@ -240,9 +246,56 @@ a:hover code {
background: none;
}
/* don't underline links that contain an image and nothing else */
a:has(> img:only-child) {
border-bottom: none;
}
div.body p, div.body dd, div.body li, div.body blockquote {
hyphens: none;
}
.pagefind-ui__form {
width: 100%;
max-width: 300px;
left: auto;
right: auto;
position: relative;
}
.pagefind-modular-list-excerpt, .pagefind-modular-list-title {
color: #111111 !important;
}
.search-results {
background-color: #f8f8f8;
box-shadow: 0 6px 10px rgb(0 0 0 / 0.2);
position: fixed;
z-index: 1500;
padding-right: 6px;
padding-left: 6px;
border-radius: 12px;
overflow: auto;
width: 0;
height: fit-content;
max-width: 650px;
transition: height, width 0.1s ease-in-out;
display: none;
}
@media screen and (max-width: 875px) {
/* hide search result thumbnails on mobile */
.pagefind-modular-list-thumb {
width: 0;
}
/* reduce height of search box */
.pagefind-modular-input-wrapper {
scale: 90%;
}
.logo {
scale: 60%;
}
}
/* dark theme */
@media (prefers-color-scheme: dark) {
@ -256,7 +309,7 @@ div.body p, div.body dd, div.body li, div.body blockquote {
background: #212121;
color: #ececec;
}
}
body, div.body {
@ -281,7 +334,7 @@ div.body p, div.body dd, div.body li, div.body blockquote {
color: #ececec;
background-color: #212121;
}
a, a.reference, a:visited {
color: #00bfff;
border-bottom: 1px dotted #00bfff;
@ -326,7 +379,7 @@ div.body p, div.body dd, div.body li, div.body blockquote {
color: #e2e2e2;
}
div.note, div.tip {
div.note, div.tip, div.important {
background-color: #2d2c2c;
border: 1px solid #808080;
}
@ -339,4 +392,25 @@ div.body p, div.body dd, div.body li, div.body blockquote {
background-color: #8e8129;
}
}
.search-results {
background-color: #313131;
box-shadow: 0 6px 10px rgb(0 0 0 / 0.8);
}
.pagefind-modular-list-excerpt, .pagefind-modular-list-title {
color: #eeeeee !important;
}
.pagefind-ui__form, .pagefind-modular-input, .search-results {
color: #ececec !important;
}
:root {
--pagefind-ui-primary: #eeeeee;
--pagefind-ui-text: #eeeeee;
--pagefind-ui-background: #152028;
--pagefind-ui-border: #152028;
--pagefind-ui-tag: #152028;
}
}

View File

@ -1 +1 @@
2023.11.6
2024.5.4

View File

@ -5,6 +5,7 @@
{% endblock %}
{%- block extrahead %}
<link href="/pagefind/pagefind-modular-ui.css" rel="stylesheet">
<link rel="stylesheet" href="{{ pathto('_static/custom.css', 1) }}?hash={{ custom_css_hash }}" type="text/css" />
<link rel="apple-touch-icon" sizes="180x180" href="/_static/apple-touch-icon.png">
<link rel="shortcut icon" href="/_static/favicon.ico">
@ -16,6 +17,7 @@
<link rel="icon" type="image/png" sizes="16x16" href="/_static/favicon-16x16.png">
<link rel="manifest" href="/_static/site.webmanifest">
<link rel="mask-icon" href="/_static/safari-pinned-tab.svg" color="#646464">
<link rel="me" href="https://fosstodon.org/@esphome">
<meta name="apple-mobile-web-app-title" content="ESPHome">
<meta name="application-name" content="ESPHome">
<meta name="msapplication-TileColor" content="#dfdfdf">
@ -24,23 +26,25 @@
<meta name="HandheldFriendly" content="True">
<meta name="MobileOptimized" content="320">
<meta property="og:site_name" content="ESPHome">
<meta name="viewport" content="width=device-width, initial-scale=0.9, maximum-scale=0.9">
<meta name="viewport"
content="width=device-width, initial-scale=1, maximum-scale=3, interactive-widget=overlays-content">
{% endblock %}
{% block relbar_top %}
{% if parents|length > 0 %}
<ul class="breadcrumbs">
{% if parents|length > 0 %}
{%- for doc in parents %}
<li><a href="{{ doc.link|e }}">{{ doc.title }}</a></li>
{%- endfor %}
<li>{{title}}</li>
</ul>
{% endif %}
</ul>
{% endblock %}
{% block footer %}
<div id="upgrade-footer">
A new version has been release since you last visited this page: {{ release }} 🎉
A new version has been released since you last visited this page: {{ release }} 🎉
<div class="footer-button-container">
<div role="button" id="upgrade-footer-dismiss" class="footer-button">Dismiss</div>
<a id="upgrade-footer-changelog" class="footer-button" href="/changelog/{{ version }}.0.html">View Changelog</a>

36
_templates/search.html Normal file
View File

@ -0,0 +1,36 @@
<!-- docs/_templates/search.html -->
{% extends "page.html" %}
{%- block htmltitle -%}
<title>{{ _("Search") }} - {{ docstitle }}</title>
{%- endblock htmltitle -%}
{% block content %}
<h1>{{ _("Search") }}</h1>
<div id="search"></div>
{% endblock %}
{% block scripts -%}
{{ super() }}
{%- endblock scripts %}
{% block extra_styles -%}
{{ super() }}
<style type="text/css">
#search form input[type="text"] {
box-sizing: border-box;
width: 100%;
line-height: 2em;
padding-inline: 0.6em;
font-size: 1.2rem;
border-radius: 0.05rem;
border: 2px solid var(--color-foreground-border);
border-bottom-color: 2px solid var(--color-foreground-secondary);
transition: border-color 20ms ease;
}
#search form input[type="text"]:focus {
border-color: var(--color-foreground-primary);
}
</style>
{%- endblock extra_styles %}

188
_templates/searchbox.html Normal file
View File

@ -0,0 +1,188 @@
<script src="/pagefind/pagefind-modular-ui.js"></script>
<div class="pagefind-ui__form" id="search"></div>
<script>
class El {
constructor(tagname) {
this.element = document.createElement(tagname);
}
id(s) {
this.element.id = s;
return this;
}
class(s) {
this.element.classList.add(s);
return this;
}
attrs(obj) {
for (const [k,v] of Object.entries(obj)) {
this.element.setAttribute(k, v);
}
return this;
}
text(t) {
this.element.innerText = t;
return this;
}
html(t) {
this.element.innerHTML = t;
return this;
}
handle(e, f) {
this.element.addEventListener(e, f);
return this;
}
addTo(el) {
if (el instanceof El) {
el.element.appendChild(this.element);
} else {
el.appendChild(this.element);
}
return this.element;
}
}
window.addEventListener('DOMContentLoaded', (event) => {
const targetClass = "search-results";
const docel = document.getElementsByClassName("document");
if (docel.length === 0)
return;
const inpel = document.getElementById("search");
if (!inpel)
return;
var mobileWidth = getComputedStyle(document.body).getPropertyValue("--mobile-width-stop");
function isMobile() {
return window.innerWidth <= mobileWidth;
}
const target = document.createElement("div");
target.classList.add(targetClass);
target.id = targetClass;
target.style.display = "none";
docel.item(0).appendChild(target);
const margin = 20;
const resultTemplate = (result) => {
let wrapper = new El("li").class("pagefind-modular-list-result");
let thumb = new El("div").class("pagefind-modular-list-thumb").addTo(wrapper);
if (result?.meta?.image) {
new El("img").class("pagefind-modular-list-image").attrs({
src: result.meta.image,
alt: result.meta.image_alt || result.meta.title
}).addTo(thumb);
}
let inner = new El("div").class("pagefind-modular-list-inner").addTo(wrapper);
let title = new El("p").class("pagefind-modular-list-title").addTo(inner);
new El("a").class("pagefind-modular-list-link").text(result.meta?.title).attrs({
href: result.meta?.url || result.url
}).addTo(title);
let excerpt = new El("p").class("pagefind-modular-list-excerpt").addTo(inner);
new El("a").class("pagefind-modular-list-link").html(result.excerpt).attrs({
href: result.meta?.url || result.url
}).addTo(excerpt);
return wrapper.element;
}
function resizeTarget() {
const searchPos = inpel.getBoundingClientRect();
var leftPos;
var topPos;
var maxWidth = 650;
target.style.width = "auto;"
target.style.height = "fit-content";
target.style.maxWidth = maxWidth + "px";
let rightPos = margin;
if (isMobile()) {
// position search results left aligned with the search box, and below.
leftPos = margin / 2;
topPos = searchPos.bottom + margin / 2;
rightPos = margin / 2;
} else {
// position search results top aligned with the search box, and to its right.
leftPos = searchPos.right + margin * 2;
topPos = searchPos.top;
if (rightPos - leftPos > maxWidth)
rightPos = leftPos + maxWidth;
}
target.style.right = rightPos + "px";
target.style.top = topPos + "px";
target.style.left = leftPos + "px";
let twidth = window.innerWidth - margin - leftPos;
if (twidth > maxWidth)
twidth = maxWidth;
target.style.width = twidth + "px";
target.style.maxHeight = (window.innerHeight - margin - topPos) + "px";
}
window.addEventListener("resize", (event) => { resizeTarget(); });
function showTarget() {
if (target.style.display !== "block") {
target.style.display = "block";
document.addEventListener('click', clickCallback);
}
resizeTarget();
}
function hideTargets() {
if (target.style.display !== "none") {
target.style.display = "none";
document.removeEventListener('click', clickCallback);
}
}
const instance = new PagefindModularUI.Instance({
showSubResults: true,
showImages: false,
ranking: {
pageLength: 0.0,
termSaturation: 1.6,
termFrequency: 0.4,
termSimilarity: 6.0
}
});
instance.add(new PagefindModularUI.Input({
containerElement: "#search"
}));
instance.add(new PagefindModularUI.ResultList({
containerElement: "#search-results",
resultTemplate: resultTemplate
}));
const clickCallback = (event) => {
const path = event.composedPath();
if (path.includes(target) || path.includes(inpel))
return;
hideTargets();
};
if (target) {
instance.on("results", (results) => {
if (results.results.length) {
showTarget();
} else {
hideTargets();
}
});
}
});
</script>

361
changelog/2023.12.0.rst Normal file
View File

@ -0,0 +1,361 @@
ESPHome 2023.12.0 - 20th December 2023
======================================
.. seo::
:description: Changelog for ESPHome 2023.12.0.
:image: /_static/changelog-2023.12.0.png
:author: Jesse Hills
:author_twitter: @jesserockz
.. imgtable::
:columns: 3
ENS160, components/sensor/ens160, ens160.jpg, CO2 & Air Quality
GT911, components/touchscreen/gt911, esp32_s3_box_3.png
Pylontech Batteries, components/pylontech, pylontech.jpg
HE60R Cover, components/cover/he60r, he60r.jpg
Graphical Display Menu, components/display_menu/graphical_display_menu, graphical_display_menu.png
FT63X6, components/touchscreen/ft63x6, wt32-sc01.png
A02YYUW, components/sensor/a02yyuw, a02yyuw.jpg
PN7150, components/binary_sensor/pn7150, pn7150.jpg
PN716X, components/binary_sensor/pn7160, pn716x.jpg
Graphical Menu
--------------
Following on from the previous :doc:`/components/display_menu/lcd_menu` that was only for LCD displays,
there is now a new :doc:`/components/display_menu/graphical_display_menu` that can be used with any
graphical/pixel based display.
Pin Reuse validation
--------------------
There is a new validation performed on configurations to ensure that pins are not reused unintentionally.
This is a common source of issues and generally a pin does not need to be reused across multiple components
in a single configuration. Pins should only be reused in a very limited set of circumstances and seeing the
error will generally mean that you need to reorganise your configuration to not reuse the pins.
The error can be bypassed by specifically adding another config item to all of the
duplicate pin definitions. See the :ref:`config-pin_schema` for details.
Touchscreen internal changes
----------------------------
The touchscreen compoenent code has had a big overhaul which breaks any external components or open PRs for
new touchscreens. See :esphomepr:`4596` for details if this affects you.
MCP3008 breaking changes
------------------------
The MCP3008 has has a restructure of the code and at the same time the default update interval has been changed to 60 seconds,
the units, device class and state class default have also been set to sane defaults expected for a voltage sensor.
Release 2023.12.1 - December 21
-------------------------------
- Fix replaced - in allowed characters during object_id sanitizing :esphomepr:`5983` by :ghuser:`jesserockz`
Release 2023.12.2 - December 22
-------------------------------
- ESP32-S3 and ESP-IDF don't play well with USB_CDC and need USB_SERIAL_JTAG :esphomepr:`5929` by :ghuser:`clydebarrow`
- Update libtiff6 :esphomepr:`5985` by :ghuser:`cvandesande`
- Override GPIOs 12 and 13 on the airm2m (LuatOS) board :esphomepr:`5982` by :ghuser:`davidmonro`
- Add workaround for crash in Arduino 2.0.9 when CDC is configured :esphomepr:`5987` by :ghuser:`kbx81`
- web_server.py: return empty content when file doesn't exist :esphomepr:`5980` by :ghuser:`jessicah`
Release 2023.12.3 - December 22
-------------------------------
- Fix unexpected disconnects when outgoing buffer is full during keepalive :esphomepr:`5988` by :ghuser:`bdraco`
- Regenerate api_pb2 after manual changes were added incorrectly in #5732 :esphomepr:`5990` by :ghuser:`jesserockz`
- Improved sensor readings in htu21d component. :esphomepr:`5839` by :ghuser:`matzman666`
- Fix dashboard logs when api is disabled and using MQTT :esphomepr:`5992` by :ghuser:`bdraco`
- Fix broken configs with non-existent components :esphomepr:`5993` by :ghuser:`jesserockz`
Release 2023.12.4 - December 25
-------------------------------
- dashboard: Only ping when polling is active :esphomepr:`6001` by :ghuser:`bdraco`
- tt21100: restore init read :esphomepr:`6008` by :ghuser:`nielsnl68`
- dashboard: Fix file writes on Windows :esphomepr:`6013` by :ghuser:`bdraco`
- Display: fix class inherence in Python script :esphomepr:`6009` by :ghuser:`nielsnl68`
Release 2023.12.5 - December 25
-------------------------------
- Fix docker builds :esphomepr:`6012` by :ghuser:`bdraco`
Release 2023.12.6 - January 15
------------------------------
- Fix device not requesting Home Assistant time at the update interval :esphomepr:`6022` by :ghuser:`bdraco`
- fix compilation error for libretiny :esphomepr:`6064` by :ghuser:`tomaszduda23`
- pylontech: Fix parsing error with US2000 :esphomepr:`6061` by :ghuser:`functionpointer`
- Support full (>460 char) dumps of Pronto IR commands :esphomepr:`6040` by :ghuser:`rpaskowitz`
- ESP32-C3 USB_CDC fixes :esphomepr:`6069` by :ghuser:`kbx81`
- Improv Serial -- don't wait for incoming bytes :esphomepr:`6089` by :ghuser:`kbx81`
- add STATE_CLASS_TOTAL_INCREASING to bl0940 and bl0942 :esphomepr:`6090` by :ghuser:`tomaszduda23`
- Fallback to pure-python loader for better error when YAML loading fails :esphomepr:`6081` by :ghuser:`bdraco`
Release 2023.12.7 - January 17
------------------------------
- Fix RMT timing clock base :esphomepr:`6101` by :ghuser:`majkrzak`
- Create RingBuffer for VoiceAssistant :esphomepr:`6102` by :ghuser:`jesserockz`
- Inkplate6: Fix crash with initial set of greyscale :esphomepr:`6038` by :ghuser:`clydebarrow`
Release 2023.12.8 - January 19
------------------------------
- Let show_*_page actions depend on "Display" :esphomepr:`6092` by :ghuser:`guillempages`
- Fix some Voice Assistant bugs :esphomepr:`6121` by :ghuser:`jesserockz`
Release 2023.12.9 - January 22
------------------------------
- fix sen5x negative temperature :esphomepr:`6082` by :ghuser:`ssieb`
- negative values for all DHT22 variants :esphomepr:`6074` by :ghuser:`ssieb`
- fix negative temperature for pmsx003 :esphomepr:`6083` by :ghuser:`ssieb`
- fix: negative temperatures on PMS5003T sensors :esphomepr:`6100` by :ghuser:`aschmitz`
Full list of changes
--------------------
New Components
^^^^^^^^^^^^^^
- Add ENS160 Sensor :esphomepr:`4243` by :ghuser:`vincentscode` (new-integration)
- Create GT911 Touchscreen component :esphomepr:`4027` by :ghuser:`jesserockz` (new-integration)
- Pylontech integration (solar battery bank) :esphomepr:`4688` by :ghuser:`functionpointer` (new-integration)
- Add Chamberlain/HomEntry HE60R garage door opener :esphomepr:`5834` by :ghuser:`clydebarrow` (new-integration)
- Add graphical display menu :esphomepr:`4105` by :ghuser:`MrMDavidson` (new-integration)
- Updating the touchscreen interface structure :esphomepr:`4596` by :ghuser:`nielsnl68` (new-integration) (breaking-change)
- Added the A02YYUW distance sensor :esphomepr:`5729` by :ghuser:`TH-Braemer` (new-integration)
- Add support for PN7160 :esphomepr:`5486` by :ghuser:`kbx81` (new-integration)
- Add support for PN7150 :esphomepr:`5487` by :ghuser:`kbx81` (new-integration)
Breaking Changes
^^^^^^^^^^^^^^^^
- Add proper support for SH1107 to SSD1306 component :esphomepr:`5166` by :ghuser:`nikitakuklev` (breaking-change)
- sen5x fix temperature compensation and gas tuning :esphomepr:`4901` by :ghuser:`matt7aylor` (breaking-change)
- Ensure names containing characters other than `a-z` `A-Z` `0-9` or `_` are unique :esphomepr:`5810` by :ghuser:`bdraco` (breaking-change)
- mcp3008: Tidy up and fix auto load bug :esphomepr:`5842` by :ghuser:`jesserockz` (breaking-change)
- Nextion colors parameters :esphomepr:`5699` by :ghuser:`edwardtfn` (breaking-change)
- Checks for pins used in multiple places :esphomepr:`5666` by :ghuser:`clydebarrow` (breaking-change)
- Updating the touchscreen interface structure :esphomepr:`4596` by :ghuser:`nielsnl68` (new-integration) (breaking-change)
Beta Changes
^^^^^^^^^^^^
- Allow use of CDC/JTAG loggers on esp32 variants with Arduino :esphomepr:`4658` by :ghuser:`jesserockz`
- [Logger] ESP32 S3 serial logger :esphomepr:`4853` by :ghuser:`Fabian-Schmidt`
- Support toggle action for template cover :esphomepr:`5917` by :ghuser:`jochenvg`
- Fix SplitDefault with variants :esphomepr:`5928` by :ghuser:`jesserockz`
- Update ENS160 TVOC device_class and AQI units to match required by HA :esphomepr:`5939` by :ghuser:`mrtoy-me`
- Bump zeroconf from 0.128.4 to 0.130.0 :esphomepr:`5950` by :ghuser:`dependabot[bot]`
- UARTComponent inline doc :esphomepr:`5930` by :ghuser:`edwardtfn`
- Fix - Tuya Fan - Allow integer speed datapoint :esphomepr:`5948` by :ghuser:`cram42`
- i2s_audio: Set player_task's prio to 1 :esphomepr:`5945` by :ghuser:`gaaf`
- esp32_camera: Set framebuffer task prio to 1 :esphomepr:`5943` by :ghuser:`gaaf`
- web_server_idf: fix call with hardcoded http code :esphomepr:`5942` by :ghuser:`dentra`
- Revert pure virtual functions in UART component from #5920 :esphomepr:`5932` by :ghuser:`DrCoolzic`
- Use the correct UART/`Serial` when CDC is enabled :esphomepr:`5957` by :ghuser:`kbx81`
- rename ``set_raw_touch_position_`` to ``add_raw_touch_position_`` :esphomepr:`5962` by :ghuser:`nielsnl68`
- Fix build issue with UART component when building with Arduino and CDC :esphomepr:`5964` by :ghuser:`kbx81`
- Fix ``I2CBus::write()`` bug and add i2c documentation :esphomepr:`5947` by :ghuser:`DrCoolzic`
- Add deep sleep between updates for waveshare epaper 1.54in and 1.54inv2 :esphomepr:`5961` by :ghuser:`mathieu-mp`
- Speed up writing protobuf strings/bytes :esphomepr:`5828` by :ghuser:`bdraco`
- Bump aioesphomeapi to 21.0.1 :esphomepr:`5969` by :ghuser:`bdraco`
- image: allow the image to by auto-loaded by animation :esphomepr:`5139` by :ghuser:`ayufan`
- Fix pin reuse error with pin expanders :esphomepr:`5973` by :ghuser:`jesserockz`
All changes
^^^^^^^^^^^
- Nextion support to ``esp-idf`` :esphomepr:`5667` by :ghuser:`edwardtfn`
- fix pin range for xl9535 :esphomepr:`5722` by :ghuser:`ssieb`
- Bump black from 23.10.1 to 23.11.0 :esphomepr:`5702` by :ghuser:`dependabot[bot]`
- Speed up YAML by using YAML C loader when available :esphomepr:`5721` by :ghuser:`bdraco`
- Bump Arduino Pico Framework to 3.6.0 and Platform to 1.10.0 :esphomepr:`5731` by :ghuser:`HeMan`
- Correct url for Arduino platform :esphomepr:`5744` by :ghuser:`HeMan`
- remote_base: added helper class and schemas :esphomepr:`5169` by :ghuser:`dudanov`
- Bump zeroconf from 0.123.0 to 0.126.0 :esphomepr:`5748` by :ghuser:`dependabot[bot]`
- Make precommit checks happy :esphomepr:`5751` by :ghuser:`HeMan`
- dashboard: Use mdns cache when available if device connection is OTA :esphomepr:`5724` by :ghuser:`bdraco`
- Speed up OTAs :esphomepr:`5720` by :ghuser:`bdraco`
- dashboard: convert ping thread to use asyncio :esphomepr:`5749` by :ghuser:`bdraco`
- dashboard: Break apart dashboard into separate modules :esphomepr:`5764` by :ghuser:`bdraco`
- dashboard: split dashboard web server code into its own module :esphomepr:`5770` by :ghuser:`bdraco`
- Bump zeroconf from 0.126.0 to 0.127.0 :esphomepr:`5768` by :ghuser:`dependabot[bot]`
- dashboard: fix subprocesses blocking the event loop :esphomepr:`5772` by :ghuser:`bdraco`
- dashboard: use fastest available yaml loader in the dashboard :esphomepr:`5771` by :ghuser:`bdraco`
- dashboard: Centralize dashboard entries into DashboardEntries class :esphomepr:`5774` by :ghuser:`bdraco`
- Pass the name to the log runner when available :esphomepr:`5759` by :ghuser:`bdraco`
- Add proper support for SH1107 to SSD1306 component :esphomepr:`5166` by :ghuser:`nikitakuklev` (breaking-change)
- Split release workflow jobs per system arch :esphomepr:`5723` by :ghuser:`jesserockz`
- Bump aioesphomeapi to 18.5.3 :esphomepr:`5785` by :ghuser:`bdraco`
- Refactor log api client to let aioesphomeapi manage zeroconf :esphomepr:`5783` by :ghuser:`bdraco`
- dashboard: Add support for firing events :esphomepr:`5775` by :ghuser:`bdraco`
- dashboard: Ensure disk I/O happens in the executor :esphomepr:`5789` by :ghuser:`bdraco`
- dashboard: Add lookup by name to entries :esphomepr:`5790` by :ghuser:`bdraco`
- Refactor StorageJSON to keep loaded_integrations a set until its converted to JSON :esphomepr:`5793` by :ghuser:`bdraco`
- wifi: Don't build SoftAP/DHCPS support unless 'ap' is in config. :esphomepr:`5649` by :ghuser:`kpfleming`
- ssd1306: handle V_COM differently for SH1106 :esphomepr:`5796` by :ghuser:`papillon81`
- Bump aioesphomeapi from 18.5.3 to 18.5.5 :esphomepr:`5804` by :ghuser:`dependabot[bot]`
- dashboard: Fix online status when api is disabled :esphomepr:`5792` by :ghuser:`bdraco`
- Haier component updated to support new protocol variations :esphomepr:`5713` by :ghuser:`paveldn`
- sen5x fix temperature compensation and gas tuning :esphomepr:`4901` by :ghuser:`matt7aylor` (breaking-change)
- Add startup_delay to interval. :esphomepr:`5327` by :ghuser:`clydebarrow`
- Pillow: bump to 10.1.0 :esphomepr:`5815` by :ghuser:`hostcc`
- dashboard: set nodelay on the websocket to avoid a delay seeing log messages :esphomepr:`5802` by :ghuser:`bdraco`
- Bump aioesphomeapi from 18.5.5 to 18.5.7 :esphomepr:`5822` by :ghuser:`dependabot[bot]`
- Ensure names containing characters other than `a-z` `A-Z` `0-9` or `_` are unique :esphomepr:`5810` by :ghuser:`bdraco` (breaking-change)
- Add ENS160 Sensor :esphomepr:`4243` by :ghuser:`vincentscode` (new-integration)
- Bump actions/github-script from 6.4.1 to 7.0.1 :esphomepr:`5803` by :ghuser:`dependabot[bot]`
- Run all tests when local testing. :esphomepr:`5717` by :ghuser:`Fabian-Schmidt`
- Bump aioesphomeapi from 18.5.7 to 18.5.9 :esphomepr:`5830` by :ghuser:`dependabot[bot]`
- Allow split uart pin inversion for ESP-IDF :esphomepr:`5831` by :ghuser:`clydebarrow`
- Add ``is_detected()`` for Nextion displays :esphomepr:`5825` by :ghuser:`edwardtfn`
- Pull PollingComponent up from individual display drivers to Display. :esphomepr:`5444` by :ghuser:`clydebarrow`
- Implement variable length single word SPI writes. :esphomepr:`5678` by :ghuser:`clydebarrow`
- Add 'enable_on_boot' feature to power_supply :esphomepr:`5826` by :ghuser:`clydebarrow`
- mcp3008: Tidy up and fix auto load bug :esphomepr:`5842` by :ghuser:`jesserockz` (breaking-change)
- Create GT911 Touchscreen component :esphomepr:`4027` by :ghuser:`jesserockz` (new-integration)
- Bump aioesphomeapi from 18.5.9 to 19.1.2 :esphomepr:`5844` by :ghuser:`dependabot[bot]`
- Nextion - Standardizing log messages :esphomepr:`5837` by :ghuser:`edwardtfn`
- dashboard: Small cleanups to dashboard :esphomepr:`5841` by :ghuser:`bdraco`
- Pylontech integration (solar battery bank) :esphomepr:`4688` by :ghuser:`functionpointer` (new-integration)
- Implement deep sleep and clear screen on Waveshare 7.5in B V3 :esphomepr:`5239` by :ghuser:`lucasprim`
- Fix ESP-IDF uart initialisation sequence to match Espressif docs. :esphomepr:`5838` by :ghuser:`clydebarrow`
- Nextion - Align strings on ``dump_config`` :esphomepr:`5824` by :ghuser:`edwardtfn`
- Speed up (and fix) ili9xxx display component. :esphomepr:`5406` by :ghuser:`clydebarrow`
- Fix regex for 'byte' custom CI check :esphomepr:`5851` by :ghuser:`jesserockz`
- Pass through additional arguments to create number :esphomepr:`5849` by :ghuser:`clydebarrow`
- Nextion ``on_touch`` trigger :esphomepr:`5833` by :ghuser:`edwardtfn`
- Nextion colors parameters :esphomepr:`5699` by :ghuser:`edwardtfn` (breaking-change)
- dashboard: fix supervisor auth doing I/O in the event loop :esphomepr:`5807` by :ghuser:`bdraco`
- Improve reliability of Nextion TFT uploads (Arduino) :esphomepr:`5683` by :ghuser:`edwardtfn`
- Add Pro Check Universal sensor support. :esphomepr:`5798` by :ghuser:`spbrogan`
- Bump aioesphomeapi from 19.1.2 to 19.1.7 :esphomepr:`5859` by :ghuser:`dependabot[bot]`
- Pn532 non blocking scan :esphomepr:`5191` by :ghuser:`sharkydog`
- Add Chamberlain/HomEntry HE60R garage door opener :esphomepr:`5834` by :ghuser:`clydebarrow` (new-integration)
- Bump aioesphomeapi from 19.1.7 to 19.2.1 :esphomepr:`5863` by :ghuser:`dependabot[bot]`
- Bump tornado from 6.3.3 to 6.4 :esphomepr:`5862` by :ghuser:`dependabot[bot]`
- add missing ifdef to pvvx_mithermometer :esphomepr:`5880` by :ghuser:`ssieb`
- Fix un-initialized version string :esphomepr:`5865` by :ghuser:`descipher`
- fix a01nyub data reading :esphomepr:`5882` by :ghuser:`ssieb`
- Bump pytest-asyncio from 0.21.1 to 0.23.2 :esphomepr:`5888` by :ghuser:`dependabot[bot]`
- Bump zeroconf from 0.127.0 to 0.128.0 :esphomepr:`5889` by :ghuser:`dependabot[bot]`
- Bump pylint from 2.17.6 to 3.0.2 :esphomepr:`5592` by :ghuser:`dependabot[bot]`
- Bump voluptuous from 0.13.1 to 0.14.1 :esphomepr:`5784` by :ghuser:`dependabot[bot]`
- Security improvement: Support wifi ap_timeout=0s (disable) :esphomepr:`5887` by :ghuser:`fornellas`
- Suppress full config output of "esphome config" when -q option is used. :esphomepr:`5852` by :ghuser:`clydebarrow`
- Checks for pins used in multiple places :esphomepr:`5666` by :ghuser:`clydebarrow` (breaking-change)
- Nextion support to idf with `cinttypes` :esphomepr:`5876` by :ghuser:`edwardtfn`
- Fix test4.yaml after #5666 :esphomepr:`5890` by :ghuser:`kbx81`
- Fix template text component length check :esphomepr:`5881` by :ghuser:`fornellas`
- RC522 - Fix error counter error :esphomepr:`5873` by :ghuser:`kbx81`
- feat(packages): support removing components :esphomepr:`5821` by :ghuser:`TMaYaD`
- dashboard: Add some basic tests for the dashboard :esphomepr:`5870` by :ghuser:`bdraco`
- Nextion exit reparse mode on startup :esphomepr:`5868` by :ghuser:`edwardtfn`
- Bump aioesphomeapi from 19.2.1 to 19.3.0 :esphomepr:`5895` by :ghuser:`dependabot[bot]`
- Add framework info to Nextion log tags :esphomepr:`5864` by :ghuser:`edwardtfn`
- Handle case where using enetity level name: None with MQTT :esphomepr:`5897` by :ghuser:`mtl010957`
- Bump actions/setup-python from 4.7.1 to 5.0.0 :esphomepr:`5896` by :ghuser:`dependabot[bot]`
- Bump zeroconf from 0.128.0 to 0.128.4 :esphomepr:`5906` by :ghuser:`dependabot[bot]`
- Fix 18 bit displays. :esphomepr:`5908` by :ghuser:`clydebarrow`
- fix RGBW Mode on RP2040 :esphomepr:`5907` by :ghuser:`firegore`
- Add graphical display menu :esphomepr:`4105` by :ghuser:`MrMDavidson` (new-integration)
- Added on_image callback to ESP32 Cam :esphomepr:`4860` by :ghuser:`freekode`
- Bump actions/stale from 8.0.0 to 9.0.0 :esphomepr:`5899` by :ghuser:`dependabot[bot]`
- Bump pylint from 3.0.2 to 3.0.3 :esphomepr:`5905` by :ghuser:`dependabot[bot]`
- Bump frenck/action-yamllint from 1.4.1 to 1.4.2 :esphomepr:`5716` by :ghuser:`dependabot[bot]`
- Bump dessant/lock-threads from 4.0.1 to 5.0.1 :esphomepr:`5820` by :ghuser:`dependabot[bot]`
- Add support for fan preset modes :esphomepr:`5694` by :ghuser:`mill1000`
- Fix uninitialized climate target temperature :esphomepr:`5795` by :ghuser:`ckoca`
- Bump aioesphomeapi from 19.3.0 to 20.0.0 :esphomepr:`5911` by :ghuser:`dependabot[bot]`
- Bump black from 23.11.0 to 23.12.0 :esphomepr:`5912` by :ghuser:`dependabot[bot]`
- Updating the touchscreen interface structure :esphomepr:`4596` by :ghuser:`nielsnl68` (new-integration) (breaking-change)
- Added the A02YYUW distance sensor :esphomepr:`5729` by :ghuser:`TH-Braemer` (new-integration)
- Fix AHT10 / AHT20 communication :esphomepr:`5198` by :ghuser:`flaminggoat`
- Fix crash when handling pin_check error :esphomepr:`5915` by :ghuser:`clydebarrow`
- Bump aioesphomeapi to 20.1.0 :esphomepr:`5914` by :ghuser:`bdraco`
- Remove setpoint-change from error when calculating derivative in pid controller :esphomepr:`4737` by :ghuser:`Newspaperman57`
- ir_transmitter: add support for repeated commands in NEC protocol :esphomepr:`4995` by :ghuser:`ngilles`
- BP1658CJ - Fix timing for all platforms, now consistent with other drivers :esphomepr:`5799` by :ghuser:`Cossid`
- Add humidity support to climate :esphomepr:`5732` by :ghuser:`kroimon`
- Remove lingering note :esphomepr:`5916` by :ghuser:`jesserockz`
- Fix typo added in esp32 post_build filename :esphomepr:`5918` by :ghuser:`jesserockz`
- Copy esp32 custom partition files to build folder :esphomepr:`5919` by :ghuser:`jesserockz`
- UART change at runtime :esphomepr:`5909` by :ghuser:`edwardtfn`
- Bump aioesphomeapi from 20.1.0 to 21.0.0 :esphomepr:`5922` by :ghuser:`dependabot[bot]`
- Fix the initial run of lambda light effects :esphomepr:`5921` by :ghuser:`smithjacobj`
- Exposes ``load_settings`` to `UARTComponent` class :esphomepr:`5920` by :ghuser:`edwardtfn`
- Add support for PN7160 :esphomepr:`5486` by :ghuser:`kbx81` (new-integration)
- Add support for PN7150 :esphomepr:`5487` by :ghuser:`kbx81` (new-integration)
- Allow use of CDC/JTAG loggers on esp32 variants with Arduino :esphomepr:`4658` by :ghuser:`jesserockz`
- [Logger] ESP32 S3 serial logger :esphomepr:`4853` by :ghuser:`Fabian-Schmidt`
- Support toggle action for template cover :esphomepr:`5917` by :ghuser:`jochenvg`
- Fix SplitDefault with variants :esphomepr:`5928` by :ghuser:`jesserockz`
- Update ENS160 TVOC device_class and AQI units to match required by HA :esphomepr:`5939` by :ghuser:`mrtoy-me`
- Bump zeroconf from 0.128.4 to 0.130.0 :esphomepr:`5950` by :ghuser:`dependabot[bot]`
- UARTComponent inline doc :esphomepr:`5930` by :ghuser:`edwardtfn`
- Fix - Tuya Fan - Allow integer speed datapoint :esphomepr:`5948` by :ghuser:`cram42`
- i2s_audio: Set player_task's prio to 1 :esphomepr:`5945` by :ghuser:`gaaf`
- esp32_camera: Set framebuffer task prio to 1 :esphomepr:`5943` by :ghuser:`gaaf`
- web_server_idf: fix call with hardcoded http code :esphomepr:`5942` by :ghuser:`dentra`
- Revert pure virtual functions in UART component from #5920 :esphomepr:`5932` by :ghuser:`DrCoolzic`
- Use the correct UART/`Serial` when CDC is enabled :esphomepr:`5957` by :ghuser:`kbx81`
- rename ``set_raw_touch_position_`` to ``add_raw_touch_position_`` :esphomepr:`5962` by :ghuser:`nielsnl68`
- Fix build issue with UART component when building with Arduino and CDC :esphomepr:`5964` by :ghuser:`kbx81`
- Fix I2CBus::write() bug and add i2c documentation :esphomepr:`5947` by :ghuser:`DrCoolzic`
- Add deep sleep between updates for waveshare epaper 1.54in and 1.54inv2 :esphomepr:`5961` by :ghuser:`mathieu-mp`
- Speed up writing protobuf strings/bytes :esphomepr:`5828` by :ghuser:`bdraco`
- Bump aioesphomeapi to 21.0.1 :esphomepr:`5969` by :ghuser:`bdraco`
- image: allow the image to by auto-loaded by animation :esphomepr:`5139` by :ghuser:`ayufan`
- Fix pin reuse error with pin expanders :esphomepr:`5973` by :ghuser:`jesserockz`
Past Changelogs
---------------
- :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`

281
changelog/2024.2.0.rst Normal file
View File

@ -0,0 +1,281 @@
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
micro Wake Word
---------------
ESPHome implements an on-device wake word detection framework from `microWakeWord <https://github.com/kahrendt/microWakeWord>`__.
See the :doc:`component documentation </components/micro_wake_word>` for details on how to use it.
Check out the live stream replay below for more details about how it works and came to be.
.. raw:: html
<iframe width="560" height="315" src="https://www.youtube-nocookie.com/embed/NQIv3nsu7dE"
title="YouTube video player" frameborder="0"
allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture"
allowfullscreen>
</iframe>
BME280 changes
--------------
:ghuser:`apbodrov` has added support for the BME280 sensor over SPI. This change is a breaking change for any existing configurations using
the BME280 over I2C as the platform name has been changed from ``bme280`` to ``bme280_i2c``. There are no other configuration changes required
to continue using the BME280 over I2C. See the :doc:`component documentation </components/sensor/bme280>` for the latest configuration variables.
CSE7766 changes
---------------
:ghuser:`ssieb` has changed the CSE7766 sensor from appearing to be a polling component.
It has a high update rate, so if you don't want to send a lot of data to HA, you can
add the :ref:`throttle_average <sensor-filters>` filter
with the time period you were using for the update interval (the default is 60s) to each
sensor. The example in the sensor doc page has been updated to show this.
Release 2024.2.1 - February 26
------------------------------
- Add missing timeout to "async_request" :esphomepr:`6267` by :ghuser:`jesserockz`
- Bump zeroconf timeout to 3000 :esphomepr:`6270` by :ghuser:`jesserockz`
- web_server: Add a position property for cover entities that have the supports position trait :esphomepr:`6269` by :ghuser:`DanielBaulig`
- allow multiple emc2101 :esphomepr:`6272` by :ghuser:`ssieb`
- Fix RP2040 SPI pin validation :esphomepr:`6277` by :ghuser:`kbx81`
- dashboard: move storage json update to a background task in edit save :esphomepr:`6280` by :ghuser:`bdraco`
- make output optional for speed fan :esphomepr:`6274` by :ghuser:`ssieb`
- fix throttle average nan handling :esphomepr:`6275` by :ghuser:`ssieb`
- Fix thermostat supplemental actions :esphomepr:`6282` by :ghuser:`kbx81`
Release 2024.2.2 - March 6
--------------------------
- CSE7766: Fix energy calculation :esphomepr:`6286` by :ghuser:`puuu`
- handling with the negative temperature in the sensor tmp102 :esphomepr:`6316` by :ghuser:`FlyingFeng2021`
- fix tmp102 negative calculation :esphomepr:`6320` by :ghuser:`ssieb`
- auto load output for now :esphomepr:`6309` by :ghuser:`ssieb`
- Add wake word phrase to voice assistant start command :esphomepr:`6290` by :ghuser:`jesserockz`
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)
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`
- 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
^^^^^^^^^^^
- 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)
- 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
---------------
- :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`

311
changelog/2024.3.0.rst Normal file
View File

@ -0,0 +1,311 @@
ESPHome 2024.3.0 - 20th March 2024
==================================
.. seo::
:description: Changelog for ESPHome 2024.3.0.
:image: /_static/changelog-2024.3.0.png
:author: Jesse Hills
:author_twitter: @jesserockz
.. imgtable::
:columns: 5
Datetime Core, components/datetime/index, clock-outline.svg, dark-invert
Template Datetime, components/datetime/template, description.svg, dark-invert
AM2315C, components/sensor/am2315c, am2315c.jpg
HTU31D, components/sensor/htu31d, htu31d.jpg,
MS8607, components/sensor/ms8607, ms8607.jpg
AGS10, components/sensor/ags10, ags10.jpg
VEML6030, components/sensor/veml7700, veml6030.jpg
VEML7700, components/sensor/veml7700, veml7700.jpg
MR24HPC1 mmWave, components/seeed_mr24hpc1, seeed-mr24hpc1.jpg
ADS1118, components/sensor/ads1118, ads1118.jpg
CST816, components/touchscreen/cst816, cst816.jpg
CST226, components/touchscreen/cst226, t4-s3.jpg
RPI_DPI_RGB, components/display/rpi_dpi_rgb, waveshare_touch-s3.jpg
Quad SPI AMOLED, components/display/qspi_amoled, t4-s3.jpg
ST7701S, components/display/st7701s, indicator.jpg
ADE7880, components/sensor/ade7880, ade7880.svg
Emmeti, components/climate/climate_ir, air-conditioner-ir.svg, dark-invert
Uponor Smatrix, components/uponor_smatrix, uponor.svg
Kamstrup KMP, components/sensor/kamstrup_kmp, kamstrup_kmp.jpg
Template Fan, components/fan/template, description.svg, dark-invert
Dates
-----
ESPHome now has support for ``date`` entities that can be set from the frontend (like Home Assistant) for you to check against and execute
automations in the future.
ESPHome Dates require Home Assistant 2024.4 or later.
IPv6
----
ESPHome is now prepared for the future! The future that is the old IPv6 that is.
Dualstack is added and it could now have up to 5 ip addresses of any type, and communication with Home assistant,
MQTT and NTP works with IPv6. ESPHome still depends on IPv4, but the crystal ball shows sign of IPv6-only networks.
If you are building an :doc:`/components/external_components` or you use
``network::get_ip_address()``, ``wifi::global_wifi_component->get_ip_address()`` or ``ethernet::global_eth_component->get_ip_address()``,
these functions have been renamed to ``::get_ip_addresses()`` respectively and now return a list of all IP addresses.
Release 2024.3.1 - March 27
---------------------------
- AHT10: Fix bug :esphomepr:`6409` by :ghuser:`clydebarrow`
- microWakeWord: Fix model path joining :esphomepr:`6426` by :ghuser:`ebw44`
- Don't compile strptime unless its required :esphomepr:`6424` by :ghuser:`gabest11`
- Fix editor live validation :esphomepr:`6431` by :ghuser:`bdraco`
Release 2024.3.2 - April 4
--------------------------
- Fix logger compile error on ESP32-C6 :esphomepr:`6323` by :ghuser:`DAVe3283`
- Add missing ethernet types :esphomepr:`6444` by :ghuser:`ssieb`
- fix: changing the content source when playing is paused blocks the player :esphomepr:`6454` by :ghuser:`NewoPL`
Thank you for your support
--------------------------
We would like to thank all Home Assistant Cloud subscribers for their support. It allows `Nabu Casa <https://nabucasa.com/>`__ to
employ two developers to maintain and further develop the ESPHome project.
Full list of changes
--------------------
New Components
^^^^^^^^^^^^^^
- New component: ADE7880 voltage/current/power/energy sensor :esphomepr:`5242` by :ghuser:`kpfleming` (new-integration)
- Add Uponor Smatrix component :esphomepr:`5769` by :ghuser:`kroimon` (new-integration)
- Support for MS8607 PHT (Pressure Humidity Temperature) sensor :esphomepr:`3307` by :ghuser:`e28eta` (new-integration)
- Add datetime date entities :esphomepr:`6191` by :ghuser:`RFDarter` (new-integration)
- Add AGS10 Sensor :esphomepr:`6070` by :ghuser:`mak-42` (new-integration)
- ads1118 component :esphomepr:`5711` by :ghuser:`solomondg1` (new-integration)
- Add CST816 touchscreen driver :esphomepr:`5941` by :ghuser:`clydebarrow` (new-integration)
- AM2315C Temperature + Humidity Sensor :esphomepr:`6266` by :ghuser:`swoboda1337` (new-integration)
- Touchscreen: add support for CST226 controller chip :esphomepr:`6151` by :ghuser:`clydebarrow` (new-integration)
- Drivers for RGB 16 bit parallel displays :esphomepr:`5872` by :ghuser:`clydebarrow` (new-integration)
- VEML7700 and VEML6030 light sensors :esphomepr:`6067` by :ghuser:`latonita` (new-integration)
- Add Seeed Studio mmWave Kit MR24HPC1 :esphomepr:`5761` by :ghuser:`limengdu` (new-integration)
- Add driver for quad SPI AMOLED displays :esphomepr:`6354` by :ghuser:`clydebarrow` (new-integration)
- feat: Add HTU31D Support :esphomepr:`5805` by :ghuser:`betterengineering` (new-integration)
- Emmeti infrared climate support :esphomepr:`5197` by :ghuser:`E440QF` (new-integration)
- Added Kamstrup Multical 40x component :esphomepr:`4200` by :ghuser:`cfeenstra1024` (new-integration)
New Platforms
^^^^^^^^^^^^^
- Additional sensors and binary sensors support for Haier Climate :esphomepr:`6257` by :ghuser:`paveldn` (breaking-change) (new-platform)
- add template fan :esphomepr:`6310` by :ghuser:`ssieb` (breaking-change) (new-platform)
Breaking Changes
^^^^^^^^^^^^^^^^
- LTR390 - Multiple bugfixes :esphomepr:`6161` by :ghuser:`sjtrny` (breaking-change)
- Touchscreen component and driver fixes :esphomepr:`5997` by :ghuser:`nielsnl68` (breaking-change)
- Additional sensors and binary sensors support for Haier Climate :esphomepr:`6257` by :ghuser:`paveldn` (breaking-change) (new-platform)
- add template fan :esphomepr:`6310` by :ghuser:`ssieb` (breaking-change) (new-platform)
Beta Changes
^^^^^^^^^^^^
- SPI: Revert clk_pin to standard output pin schema :esphomepr:`6368` by :ghuser:`clydebarrow`
- Allow actions in web_server to be executed via GET method :esphomepr:`5938` by :ghuser:`afarago`
- fix servo restore :esphomepr:`6370` by :ghuser:`ssieb`
- Don't try to get IPv6 addresses when disabled :esphomepr:`6366` by :ghuser:`HeMan`
- Use AQI device class :esphomepr:`6376` by :ghuser:`fgsch`
- Fix list-components when PR is not targeting dev :esphomepr:`6375` by :ghuser:`jesserockz`
- allow negative ppm for sensair :esphomepr:`6385` by :ghuser:`ssieb`
- microWakeWord - add new ops and small improvements :esphomepr:`6360` by :ghuser:`kahrendt`
- Fix compilation for uponor_smatrix without time component :esphomepr:`6389` by :ghuser:`kroimon`
- Shows component operation time in ``ms`` :esphomepr:`6388` by :ghuser:`edwardtfn`
- IPv6 can't be enabled for libretiny :esphomepr:`6387` by :ghuser:`HeMan`
- Replace name and friendly name in full adopted configs :esphomepr:`4456` by :ghuser:`jesserockz`
- Fix bug in ``remote_base`` conditional :esphomepr:`6281` by :ghuser:`swoboda1337`
- Fix sending packets to uponor_smatrix devices :esphomepr:`6392` by :ghuser:`kroimon`
- Fix wrong initialization of vectors in ade7953_i2c :esphomepr:`6393` by :ghuser:`kroimon`
- ld2420: Firmware v1.5.4+ bug workaround :esphomepr:`6168` by :ghuser:`descipher`
- Require xsrf/csrf when using a password :esphomepr:`6396` by :ghuser:`jesserockz`
- AHT10: Use state machine to avoid blocking delay :esphomepr:`6401` by :ghuser:`clydebarrow`
- Show component warnings and errors in the log; :esphomepr:`6400` by :ghuser:`clydebarrow`
- web_server support for v3 :esphomepr:`6203` by :ghuser:`RFDarter`
All changes
^^^^^^^^^^^
- Bump openssh-client to 1:9.2p1-2+deb12u2 :esphomepr:`6216` by :ghuser:`jesserockz`
- Add support for 1.8V-powered devices :esphomepr:`6234` by :ghuser:`bisbastuner`
- Adjust HeatpumpIR dependency :esphomepr:`6222` by :ghuser:`ivankravets`
- INA226 - fixed improper work with signed values, added configurable ADC parameters :esphomepr:`6172` by :ghuser:`latonita`
- Prevent network config on rpipico board :esphomepr:`5832` by :ghuser:`carlosV2`
- Bump pytest-asyncio from 0.23.3 to 0.23.5 :esphomepr:`6201` by :ghuser:`dependabot[bot]`
- New component: ADE7880 voltage/current/power/energy sensor :esphomepr:`5242` by :ghuser:`kpfleming` (new-integration)
- Add some components to the new testing framework (D) :esphomepr:`6175` by :ghuser:`kbx81`
- Provide example devcontainer config for mdns and USB passthrough :esphomepr:`6094` by :ghuser:`linkedupbits`
- Bump black from 23.12.1 to 24.2.0 :esphomepr:`6221` by :ghuser:`dependabot[bot]`
- Bump pytest from 7.4.4 to 8.0.1 :esphomepr:`6246` by :ghuser:`dependabot[bot]`
- Bump codecov/codecov-action from 3 to 4 :esphomepr:`6160` by :ghuser:`dependabot[bot]`
- Bump peter-evans/create-pull-request from 5.0.2 to 6.0.0 :esphomepr:`6159` by :ghuser:`dependabot[bot]`
- Bump frenck/action-yamllint from 1.4.2 to 1.5.0 :esphomepr:`6236` by :ghuser:`dependabot[bot]`
- Bump voluptuous from 0.14.1 to 0.14.2 :esphomepr:`6181` by :ghuser:`dependabot[bot]`
- Bump pyupgrade from 3.15.0 to 3.15.1 :esphomepr:`6247` by :ghuser:`dependabot[bot]`
- LTR390 - Multiple bugfixes :esphomepr:`6161` by :ghuser:`sjtrny` (breaking-change)
- Fix yamllint :esphomepr:`6253` by :ghuser:`jesserockz`
- Improve the error message on OTA version mismatch :esphomepr:`6259` by :ghuser:`sybrenstuvel`
- Bump aioesphomeapi from 21.0.2 to 22.0.0 :esphomepr:`6263` by :ghuser:`dependabot[bot]`
- Allow ESP8266 to use multiple i2c busses :esphomepr:`6145` by :ghuser:`LouDou`
- Add Uponor Smatrix component :esphomepr:`5769` by :ghuser:`kroimon` (new-integration)
- Fix test_build_components for macOS sed :esphomepr:`6278` by :ghuser:`kbx81`
- Allow to specify global build directory :esphomepr:`6276` by :ghuser:`werwolfby`
- Add device class support to text sensor :esphomepr:`6202` by :ghuser:`dougiteixeira`
- Bump pytest from 8.0.1 to 8.0.2 :esphomepr:`6288` by :ghuser:`dependabot[bot]`
- Improve dualstack and IPv6 support :esphomepr:`5449` by :ghuser:`HeMan`
- Waveshare e-ink 2IN9_V2 - fix full and partial update based on vendor… :esphomepr:`5481` by :ghuser:`darianndd`
- Add RTTTL volume control. :esphomepr:`5968` by :ghuser:`nielsnl68`
- Touchscreen component and driver fixes :esphomepr:`5997` by :ghuser:`nielsnl68` (breaking-change)
- Add `on_update` trigger for Project versions :esphomepr:`6298` by :ghuser:`jesserockz`
- Bump peter-evans/create-pull-request from 6.0.0 to 6.0.1 :esphomepr:`6302` by :ghuser:`dependabot[bot]`
- CSE7766 Apparent Power & Power Factor calculations :esphomepr:`6292` by :ghuser:`DAVe3283`
- Adding W5500 support to ethernet component :esphomepr:`4424` by :ghuser:`JeroenVanOort`
- Fix numbering of ip_address sensors :esphomepr:`6305` by :ghuser:`HeMan`
- Bump aioesphomeapi from 22.0.0 to 23.0.0 :esphomepr:`6293` by :ghuser:`dependabot[bot]`
- Add regular polygon shapes to display component :esphomepr:`6108` by :ghuser:`mathieu-mp`
- Fix return value in `core/automation.h` :esphomepr:`6314` by :ghuser:`FlyingFeng2021`
- aht10: Added new CMD and renamed existing CMD to match datasheet :esphomepr:`6303` by :ghuser:`cptskippy`
- handling with the negative temperature in the sensor tmp102 :esphomepr:`6316` by :ghuser:`FlyingFeng2021`
- x9c: fix off by 1 error :esphomepr:`6318` by :ghuser:`andynumber2`
- Support for MS8607 PHT (Pressure Humidity Temperature) sensor :esphomepr:`3307` by :ghuser:`e28eta` (new-integration)
- Separate logger implementations for each hardware platform into different files :esphomepr:`6167` by :ghuser:`tomaszduda23`
- Additional sensors and binary sensors support for Haier Climate :esphomepr:`6257` by :ghuser:`paveldn` (breaking-change) (new-platform)
- Add toggle command to cover web_server endpoint :esphomepr:`6319` by :ghuser:`heythisisnate`
- Improv: support connecting to hidden networks :esphomepr:`6322` by :ghuser:`jesserockz`
- Update mDNS for IDF >= 5.0 :esphomepr:`6328` by :ghuser:`HeMan`
- DFPlayer: refix Bug created with PR 4758 :esphomepr:`5861` by :ghuser:`sandronidi`
- Fix build failures on host platform caused by #6167 :esphomepr:`6338` by :ghuser:`clydebarrow`
- Update bang_bang to log two decimal places in config dump :esphomepr:`6304` by :ghuser:`rafalw1277`
- Add datetime date entities :esphomepr:`6191` by :ghuser:`RFDarter` (new-integration)
- Add AGS10 Sensor :esphomepr:`6070` by :ghuser:`mak-42` (new-integration)
- Bump aioesphomeapi from 23.0.0 to 23.1.0 :esphomepr:`6332` by :ghuser:`dependabot[bot]`
- Bump pytest-asyncio from 0.23.5 to 0.23.5.post1 :esphomepr:`6334` by :ghuser:`dependabot[bot]`
- Bump docker/setup-buildx-action from 3.0.0 to 3.1.0 :esphomepr:`6295` by :ghuser:`dependabot[bot]`
- Set dependabot to look at composite actions versions :esphomepr:`6343` by :ghuser:`jesserockz`
- ads1118 component :esphomepr:`5711` by :ghuser:`solomondg1` (new-integration)
- Bump actions/cache from 4.0.0 to 4.0.1 :esphomepr:`6306` by :ghuser:`dependabot[bot]`
- Bump docker/build-push-action from 5.0.0 to 5.2.0 in /.github/actions/build-image :esphomepr:`6347` by :ghuser:`dependabot[bot]`
- fix: modbus_textsensor response is too long in some cases :esphomepr:`6333` by :ghuser:`NewoPL`
- add template fan :esphomepr:`6310` by :ghuser:`ssieb` (breaking-change) (new-platform)
- dump config after logging CDC port is opened by host :esphomepr:`6169` by :ghuser:`tomaszduda23`
- Add IRK support to allow tracking of devices with random MAC addresses :esphomepr:`6335` by :ghuser:`chbmuc`
- [Fingerprint_grow] Implements Sleep Mode feature :esphomepr:`6116` by :ghuser:`alexborro`
- cleanup ili9xxx component by removing data rate define :esphomepr:`6350` by :ghuser:`nielsnl68`
- web_server_idf: support x-www-form-urlencoded POST requests :esphomepr:`6037` by :ghuser:`dentra`
- feat(MQTT): Add QoS option for each MQTT component :esphomepr:`6279` by :ghuser:`Rapsssito`
- Check permissions :esphomepr:`6255` by :ghuser:`OdileVidrine`
- Add CST816 touchscreen driver :esphomepr:`5941` by :ghuser:`clydebarrow` (new-integration)
- ILI9XXX: Lazily allocate buffer :esphomepr:`6352` by :ghuser:`clydebarrow`
- AM2315C Temperature + Humidity Sensor :esphomepr:`6266` by :ghuser:`swoboda1337` (new-integration)
- Add ble_presence binary sensor timeout config value. :esphomepr:`6024` by :ghuser:`clydebarrow`
- Add state listeners to `rotary_encoder` :esphomepr:`6035` by :ghuser:`clydebarrow`
- ili9xxx: Add support for GC9A01A display :esphomepr:`6351` by :ghuser:`clydebarrow`
- Touchscreen: add support for CST226 controller chip :esphomepr:`6151` by :ghuser:`clydebarrow` (new-integration)
- font: add anti-aliasing and other features :esphomepr:`6198` by :ghuser:`clydebarrow`
- Mhz19 warmup :esphomepr:`6214` by :ghuser:`fornellas`
- Refactor ATM90E32 to reduce blocking time and improve accuracy. :esphomepr:`5670` by :ghuser:`descipher`
- Bump aioesphomeapi from 23.1.0 to 23.1.1 :esphomepr:`6348` by :ghuser:`dependabot[bot]`
- Bump pytest from 8.0.2 to 8.1.1 :esphomepr:`6346` by :ghuser:`dependabot[bot]`
- Add support for Waveshare 2.13" V2 display :esphomepr:`6337` by :ghuser:`manuelkasper`
- Mitsubishi Climate updates :esphomepr:`3886` by :ghuser:`RubyBailey`
- Drivers for RGB 16 bit parallel displays :esphomepr:`5872` by :ghuser:`clydebarrow` (new-integration)
- hydreon_rgxx - add resolution option :esphomepr:`6077` by :ghuser:`mrtoy-me`
- SPI schema now uses typed_schema with `type` key :esphomepr:`6353` by :ghuser:`clydebarrow`
- VEML7700 and VEML6030 light sensors :esphomepr:`6067` by :ghuser:`latonita` (new-integration)
- Add Seeed Studio mmWave Kit MR24HPC1 :esphomepr:`5761` by :ghuser:`limengdu` (new-integration)
- Add getter for font glyph data :esphomepr:`6355` by :ghuser:`clydebarrow`
- Require reset_pin for certain waveshare_epaper models in YAML validation :esphomepr:`6357` by :ghuser:`manuelkasper`
- touchscreen driver fixes :esphomepr:`6356` by :ghuser:`clydebarrow`
- Make USE_HOST compilable on msys2 :esphomepr:`6359` by :ghuser:`maruel`
- download font from url on build :esphomepr:`5254` by :ghuser:`landonr`
- Add driver for quad SPI AMOLED displays :esphomepr:`6354` by :ghuser:`clydebarrow` (new-integration)
- ADE7953: Add the ability to use accumulating energy registers, more precise power reporting :esphomepr:`6311` by :ghuser:`isorin`
- feat: Add HTU31D Support :esphomepr:`5805` by :ghuser:`betterengineering` (new-integration)
- Emmeti infrared climate support :esphomepr:`5197` by :ghuser:`E440QF` (new-integration)
- Added Kamstrup Multical 40x component :esphomepr:`4200` by :ghuser:`cfeenstra1024` (new-integration)
- add possibility to provide different conversion times for Bus Voltage… :esphomepr:`6327` by :ghuser:`kev300`
- SPI: Revert clk_pin to standard output pin schema :esphomepr:`6368` by :ghuser:`clydebarrow`
- Allow actions in web_server to be executed via GET method :esphomepr:`5938` by :ghuser:`afarago`
- fix servo restore :esphomepr:`6370` by :ghuser:`ssieb`
- Don't try to get IPv6 addresses when disabled :esphomepr:`6366` by :ghuser:`HeMan`
- Use AQI device class :esphomepr:`6376` by :ghuser:`fgsch`
- Fix list-components when PR is not targeting dev :esphomepr:`6375` by :ghuser:`jesserockz`
- allow negative ppm for sensair :esphomepr:`6385` by :ghuser:`ssieb`
- microWakeWord - add new ops and small improvements :esphomepr:`6360` by :ghuser:`kahrendt`
- Fix compilation for uponor_smatrix without time component :esphomepr:`6389` by :ghuser:`kroimon`
- Shows component operation time in ``ms`` :esphomepr:`6388` by :ghuser:`edwardtfn`
- IPv6 can't be enabled for libretiny :esphomepr:`6387` by :ghuser:`HeMan`
- Replace name and friendly name in full adopted configs :esphomepr:`4456` by :ghuser:`jesserockz`
- Fix bug in ``remote_base`` conditional :esphomepr:`6281` by :ghuser:`swoboda1337`
- Fix sending packets to uponor_smatrix devices :esphomepr:`6392` by :ghuser:`kroimon`
- Fix wrong initialization of vectors in ade7953_i2c :esphomepr:`6393` by :ghuser:`kroimon`
- ld2420: Firmware v1.5.4+ bug workaround :esphomepr:`6168` by :ghuser:`descipher`
- Require xsrf/csrf when using a password :esphomepr:`6396` by :ghuser:`jesserockz`
- AHT10: Use state machine to avoid blocking delay :esphomepr:`6401` by :ghuser:`clydebarrow`
- Show component warnings and errors in the log; :esphomepr:`6400` by :ghuser:`clydebarrow`
- web_server support for v3 :esphomepr:`6203` by :ghuser:`RFDarter`
Past Changelogs
---------------
- :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`

231
changelog/2024.4.0.rst Normal file
View File

@ -0,0 +1,231 @@
ESPHome 2024.4.0 - 17th April 2024
==================================
.. seo::
:description: Changelog for ESPHome 2024.4.0.
:image: /_static/changelog-2024.4.0.png
:author: Jesse Hills
:author_twitter: @jesserockz
.. imgtable::
:columns: 4
Template Datetime Time, components/datetime/template, description.svg, dark-invert
SUN-GTIL2 inverter, components/sun_gtil2, sun_1000g2.png
AT581X, components/at581x, at581x.png
JSN-SR04T, components/sensor/jsn_sr04t, jsn-sr04t-v3.jpg
Daikin ARC, components/climate/climate_ir, air-conditioner-ir.svg, dark-invert
HHCCJCY10 (MiFlora Pink), components/sensor/xiaomi_hhccjcy10, xiaomi_hhccjcy10.jpg
TLC5971, components/output/tlc5971, tlc5971.jpg
Dooya, components/remote_transmitter, remote.svg
Time Entities
-------------
ESPHome now has support for ``time`` entities that can be set from the frontend (like Home Assistant). THis allows you to set a timer to execute future automations on device.
ESPHome Dates require Home Assistant 2024.4 or later.
Voice Assistant Audio
---------------------
This release adds support for sending and receiving audio to/from voice assistants via the API. Currently ESPHome sends and receives the Voice Assistant audio bytes
via a UDP socket which can be unreliable and insecure. Beginning with Home Assistant 2024.5, both sides will automatically recognise that they both support API Audio and will
use that route instead. This is more reliable because the ESPHome API uses a TCP socket, so packet order and delivery is guaranteed, and if you use API Encryption,
your audio will also be encrypted in transit.
Release 2024.4.1 - April 23
---------------------------
- [Tuya Climate] Fix compilation error caused by codegen :esphomepr:`6568` by :ghuser:`zry98`
- wifi: fix reconnect issue due to enablement of fast connect :esphomepr:`6598` by :ghuser:`jpeletier`
- Calibrate Beken internal temperature :esphomepr:`6599` by :ghuser:`Mat931`
- fix streaming logs from MQTT for ESP32 devices using TLS :esphomepr:`6605` by :ghuser:`ccutrer`
- Disallow variant/family override for known boards :esphomepr:`6512` by :ghuser:`clydebarrow`
- esp32_ble: Consider ESP_BT_STATUS_DONE a successful state :esphomepr:`6493` by :ghuser:`polyfloyd`
- Fix or filter :esphomepr:`6574` by :ghuser:`swoboda1337`
Release 2024.4.2 - April 30
---------------------------
- Fix SHT3xd fails sometimes in 2024.4.0 :esphomepr:`6592` by :ghuser:`mrtoy-me`
- allow defaults with no include vars :esphomepr:`6613` by :ghuser:`ssieb`
- Revert #6458 :esphomepr:`6650` by :ghuser:`tronikos`
- [i2s_audio.microphone] Fixing adc bug :esphomepr:`6654` by :ghuser:`jesserockz`
Full list of changes
--------------------
New Components
^^^^^^^^^^^^^^
- Add sun_gtil2 component (for SUN-1000G2 / SUN-2000G2 grid tie inverters) :esphomepr:`4958` by :ghuser:`Mat931` (new-integration)
- Add support for AT581x component :esphomepr:`6297` by :ghuser:`X-Ryl669` (new-integration)
- Add new Component: Ultrasonic Distance Sensor JSN-SR04T :esphomepr:`6023` by :ghuser:`Mafus1` (new-integration)
- feat: Add Daikin ARC (tested on Daikin ARC472A62) :esphomepr:`6429` by :ghuser:`magicbear` (new-integration)
- add support for Tuya pink version of miflora :esphomepr:`5402` by :ghuser:`fariouche` (new-integration)
- Implemented support for the TLC5971 as an output component :esphomepr:`6494` by :ghuser:`IJIJI` (new-integration)
Breaking Changes
^^^^^^^^^^^^^^^^
- Add support for new modes in Tuya Climate :esphomepr:`5159` by :ghuser:`moriahmorgan` (breaking-change)
- IPv6 string representation follows RFC5952 :esphomepr:`6449` by :ghuser:`HeMan` (breaking-change)
Beta Changes
^^^^^^^^^^^^
- Add dooya remote transmitter test :esphomepr:`6508` by :ghuser:`jesserockz`
- ads1115: remove auto-load and split sensor into platform folder :esphomepr:`5981` by :ghuser:`jesserockz` (new-platform)
- Bump esphome-dashboard to 20240412.0 :esphomepr:`6517` by :ghuser:`jesserockz`
- Fix missing ifdefs in voice assistant :esphomepr:`6520` by :ghuser:`jesserockz`
- Fix project version longer than 30 characters breaking compilation :esphomepr:`6535` by :ghuser:`jesserockz`
- Fix no-release bug on ft6x36 :esphomepr:`6527` by :ghuser:`clydebarrow`
All changes
^^^^^^^^^^^
- Bump docker/login-action from 3.0.0 to 3.1.0 :esphomepr:`6367` by :ghuser:`dependabot[bot]`
- Bump peter-evans/create-pull-request from 6.0.1 to 6.0.2 :esphomepr:`6361` by :ghuser:`dependabot[bot]`
- Bump docker/build-push-action from 5.2.0 to 5.3.0 in /.github/actions/build-image :esphomepr:`6373` by :ghuser:`dependabot[bot]`
- Bump docker/setup-buildx-action from 3.1.0 to 3.2.0 :esphomepr:`6372` by :ghuser:`dependabot[bot]`
- Fix deep_sleep for ESP32-C6 :esphomepr:`6377` by :ghuser:`ferrets6`
- Fix keeloq for IDF 5+ :esphomepr:`6382` by :ghuser:`kbx81`
- Fix Nextion set_component_picture call :esphomepr:`6378` by :ghuser:`edwardtfn`
- Add line_at_angle method to Display component :esphomepr:`6381` by :ghuser:`deisterhold`
- Check generated proto files are as expected if any are modified in PRs :esphomepr:`6254` by :ghuser:`jesserockz`
- ld2420: fix energy mode documentation :esphomepr:`6225` by :ghuser:`andresv`
- Add actions for component tests A, B and C :esphomepr:`6256` by :ghuser:`kbx81`
- Add some components to the new testing framework (V) :esphomepr:`6231` by :ghuser:`kbx81`
- Add some components to the new testing framework (X,Y,Z) :esphomepr:`6233` by :ghuser:`kbx81`
- Add some components to the new testing framework (E) :esphomepr:`6176` by :ghuser:`kbx81`
- Make SPI compile with IDF >= 5.0 :esphomepr:`6383` by :ghuser:`HeMan`
- Fix esp32-camera test yaml :esphomepr:`6398` by :ghuser:`kbx81`
- Bump pytest-asyncio from 0.23.5.post1 to 0.23.6 :esphomepr:`6402` by :ghuser:`dependabot[bot]`
- Bump actions/cache from 4.0.1 to 4.0.2 in /.github/actions/restore-python :esphomepr:`6403` by :ghuser:`dependabot[bot]`
- Bump actions/cache from 4.0.1 to 4.0.2 :esphomepr:`6404` by :ghuser:`dependabot[bot]`
- Bump ESP8266 Arduino versions :esphomepr:`5359` by :ghuser:`HeMan`
- Allow accept/reject delta to be specified. :esphomepr:`5060` by :ghuser:`cvwillegen`
- Allow setting htop for ledc :esphomepr:`6340` by :ghuser:`Gagootron`
- sm2135: add separate_modes option to support different chip variants :esphomepr:`6152` by :ghuser:`jasperro`
- AHT10: fix temperature-only operation; add warning/error messages :esphomepr:`6405` by :ghuser:`clydebarrow`
- Add support for new modes in Tuya Climate :esphomepr:`5159` by :ghuser:`moriahmorgan` (breaking-change)
- Add sun_gtil2 component (for SUN-1000G2 / SUN-2000G2 grid tie inverters) :esphomepr:`4958` by :ghuser:`Mat931` (new-integration)
- SPI: Make some validation failures give more useful messages. :esphomepr:`6413` by :ghuser:`clydebarrow`
- Bump aioesphomeapi from 23.1.1 to 23.2.0 :esphomepr:`6412` by :ghuser:`dependabot[bot]`
- Add check for use of GPIOXX in config :esphomepr:`6419` by :ghuser:`clydebarrow`
- WireGuard for esp8266 :esphomepr:`6365` by :ghuser:`droscy`
- setup.cfg: drop duplicate, underintended trove classifier :esphomepr:`6421` by :ghuser:`mweinelt`
- Store preferences in disk file on host platform :esphomepr:`6428` by :ghuser:`clydebarrow`
- Add support for AT581x component :esphomepr:`6297` by :ghuser:`X-Ryl669` (new-integration)
- Add some components to the new testing framework (F) :esphomepr:`6177` by :ghuser:`kbx81`
- Add get_contrast() and get_brightness() to SSD1306 class to get protected variables :esphomepr:`6435` by :ghuser:`benediktkr`
- Add new Component: Ultrasonic Distance Sensor JSN-SR04T :esphomepr:`6023` by :ghuser:`Mafus1` (new-integration)
- Add some components to the new testing framework (G) :esphomepr:`6178` by :ghuser:`kbx81`
- Add some components to the new testing framework (K) :esphomepr:`6186` by :ghuser:`kbx81`
- Add some components to the new testing framework (N) :esphomepr:`6210` by :ghuser:`kbx81`
- Add some components to the new testing framework (Q) :esphomepr:`6218` by :ghuser:`kbx81`
- Add some components to the new testing framework (U) :esphomepr:`6230` by :ghuser:`kbx81`
- Fix spacing in new test yaml :esphomepr:`6441` by :ghuser:`kbx81`
- Add some components to the new testing framework (W) :esphomepr:`6232` by :ghuser:`kbx81`
- Add some components to the new testing framework (L) :esphomepr:`6195` by :ghuser:`kbx81`
- feat: Add Daikin ARC (tested on Daikin ARC472A62) :esphomepr:`6429` by :ghuser:`magicbear` (new-integration)
- Disable truthy yamllint rule :esphomepr:`6442` by :ghuser:`jesserockz`
- Add get_size method to QR Code header :esphomepr:`6430` by :ghuser:`deisterhold`
- Minor change to support sht85 sensor :esphomepr:`6415` by :ghuser:`mrtoy-me`
- IPv6 string representation follows RFC5952 :esphomepr:`6449` by :ghuser:`HeMan` (breaking-change)
- Bump actions/setup-python from 5.0.0 to 5.1.0 :esphomepr:`6437` by :ghuser:`dependabot[bot]`
- Bump actions/setup-python from 5.0.0 to 5.1.0 in /.github/actions/restore-python :esphomepr:`6438` by :ghuser:`dependabot[bot]`
- Optimize QMC5883L: Read registers only for enabled sensors :esphomepr:`6458` by :ghuser:`tronikos`
- minor refactor to allow commit hash as ref value. :esphomepr:`6446` by :ghuser:`LelandSindt`
- TMP117 fix polling period config :esphomepr:`6452` by :ghuser:`mrtoy-me`
- Bump Arduino Pico Framework to 3.7.2 and Platform to 1.12.0 :esphomepr:`6386` by :ghuser:`HeMan`
- Display menu: Allow "left" key to exit current menu if not editing :esphomepr:`6460` by :ghuser:`jesserockz`
- Fix NOLINT on inclusive-language check :esphomepr:`6464` by :ghuser:`jesserockz`
- Add yamllint to dev requirements :esphomepr:`6466` by :ghuser:`jesserockz`
- Add temperature for QMC5883L :esphomepr:`6456` by :ghuser:`tronikos`
- web_server: Return early if no clients connected :esphomepr:`6467` by :ghuser:`jesserockz`
- ESP32 Arduino WiFi: misc bug fixes :esphomepr:`6470` by :ghuser:`paravoid`
- Replace std::regex with sscanf calls :esphomepr:`6468` by :ghuser:`jesserockz`
- Include "Failed" status in config log. :esphomepr:`6482` by :ghuser:`clydebarrow`
- Fix Microphone IsCapturingCondition :esphomepr:`6490` by :ghuser:`RaymiiOrg`
- Remove misleading tag/line in messages :esphomepr:`6495` by :ghuser:`clydebarrow`
- Send/Receive Voice Assistant audio via API :esphomepr:`6471` by :ghuser:`jesserockz`
- Datetime date initial value fix :esphomepr:`6483` by :ghuser:`RFDarter`
- If the loop() took more than the required time, don't delay further :esphomepr:`6496` by :ghuser:`clydebarrow`
- Bump LibreTiny version to 1.5.1 :esphomepr:`6500` by :ghuser:`kuba2k2`
- Internal temperature: Support Beken platform :esphomepr:`6491` by :ghuser:`Mat931`
- Bump docker/setup-buildx-action from 3.2.0 to 3.3.0 :esphomepr:`6502` by :ghuser:`dependabot[bot]`
- add support for Tuya pink version of miflora :esphomepr:`5402` by :ghuser:`fariouche` (new-integration)
- Add MAC address to WiFi config reply :esphomepr:`6489` by :ghuser:`cvwillegen`
- Adds i2c timeout config :esphomepr:`4614` by :ghuser:`tracestep`
- Add ABB-Welcome / Busch-Welcome Door Intercom Protocol :esphomepr:`4689` by :ghuser:`Mat931`
- Add support for time entities :esphomepr:`6399` by :ghuser:`jesserockz`
- Fix Match by IRK :esphomepr:`6499` by :ghuser:`MRemy2`
- Add rmt_channel to remote_transmitter and remote_receiver :esphomepr:`6497` by :ghuser:`jesserockz` (new-integration)
- Rework tlc5947 to remove AUTO_LOAD :esphomepr:`6503` by :ghuser:`jesserockz`
- UART: ignore require_tx/rx if not a native uart implementation :esphomepr:`6504` by :ghuser:`jesserockz`
- esp32_rmt_led_strip bugfixes :esphomepr:`6506` by :ghuser:`Mat931`
- Implemented support for the TLC5971 as an output component :esphomepr:`6494` by :ghuser:`IJIJI` (new-integration)
- Add Dooya protocol to remote_base :esphomepr:`6488` by :ghuser:`bukureckid`
- Only give error for connected sensors at startup :esphomepr:`6474` by :ghuser:`leejoow`
- Webserver float to string fix :esphomepr:`6507` by :ghuser:`RFDarter`
- Add dooya remote transmitter test :esphomepr:`6508` by :ghuser:`jesserockz`
- ads1115: remove auto-load and split sensor into platform folder :esphomepr:`5981` by :ghuser:`jesserockz` (new-platform)
- Bump esphome-dashboard to 20240412.0 :esphomepr:`6517` by :ghuser:`jesserockz`
- Fix missing ifdefs in voice assistant :esphomepr:`6520` by :ghuser:`jesserockz`
- Fix project version longer than 30 characters breaking compilation :esphomepr:`6535` by :ghuser:`jesserockz`
- Fix no-release bug on ft6x36 :esphomepr:`6527` by :ghuser:`clydebarrow`
Past Changelogs
---------------
- :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`

319
changelog/2024.5.0.rst Normal file
View File

@ -0,0 +1,319 @@
ESPHome 2024.5.0 - 15th May 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
Valve Core, components/valve/index, folder-open.svg, dark-invert
Template Valve, components/valve/template, description.svg, dark-invert
Event Core, components/event/index, folder-open.svg, dark-invert
Template Event, components/event/template, description.svg, dark-invert
Template Time, components/datetime/template, description.svg, dark-invert
Template Datetime, components/datetime/template, description.svg, dark-invert
WeiKai SPI/I²C UART/IO Expander, components/weikai, wk2168.jpg
Valves, Events, and More
------------------------
This release brings a new ``Valve`` component, which can be used to control valves.
A ``Valve`` can be opened, closed, or a specific position set if supported.
``Event`` entities were added to Home Assistant in `2023.8 <https://www.home-assistant.io/blog/2023/08/02/release-20238/#introducing-the-event-entity>`__.
They allow better structure and also history and logging of the events sent from ESPHome to Home Assistant compared to just using publishing events onto the
Home Assistant event bus with the ``homeassistant.event`` action.
The ``datetime`` component has also been extended with ``DateTime`` and ``Time`` entity types this release.
ESP32 ADC Attenuation
---------------------
The attenuation configuration option for ESP32 ``adc`` sensors has had a deprecation in the underlying ESP-IDF framework with the ``11dB`` option.
The value to replace ``11dB`` with is ``12dB``. There are no functionality changes otherwise. There will be a warning in the logs when installing if you
are using ``11dB`` and it will be removed in **2024.8.0**.
Remote Receiver tolerance
-------------------------
The ``tolerance`` option in the ``remote_receiver`` component has been extended to allow time values, but at the same time the validation is now more strict.
If you were using a raw value with no unit before 2024.5.0, for example ``25``, you will need to change it to ``25%``.
Release 2024.5.1 - May 20
-------------------------
- Add device_class to valve core config :esphomepr:`6765` by :ghuser:`acshef`
- Synchronise Device Classes from Home Assistant :esphomepr:`6768` by :ghuser:`esphomebot`
- Fix Upload from Dashboard with MQTT discovery. :esphomepr:`6774` by :ghuser:`Links2004`
- Fix MQTT dashboard discovery (Exception in MqttStatusThread). :esphomepr:`6775` by :ghuser:`Links2004`
Release 2024.5.2 - May 21
-------------------------
- Revert "Fix MQTT dashboard discovery (Exception in MqttStatusThread)." :esphomepr:`6782` by :ghuser:`bdraco`
- Fix DashboardEntries.all() call :esphomepr:`6783` by :ghuser:`bdraco`
- [remote_receiver] Add better error message for tolerance breaking change :esphomepr:`6784` by :ghuser:`jesserockz`
- Update webserver local assets to 20240519-215627 :esphomepr:`6779` by :ghuser:`esphomebot`
Release 2024.5.3 - May 25
-------------------------
- [voice_assistant] Don't allocate buffers until starting the microphone for the first time :esphomepr:`6800` by :ghuser:`jesserockz`
Release 2024.5.4 - May 28
-------------------------
- [web_server_base] Bump ESPAsyncWebServer-esphome to 3.2.2 :esphomepr:`6797` by :ghuser:`jesserockz`
- [helpers] Move Base64 string to cpp :esphomepr:`6819` by :ghuser:`gabest11`
Full list of changes
--------------------
New Components
^^^^^^^^^^^^^^
- Add valve component :esphomepr:`6447` by :ghuser:`kbx81` (new-integration)
- Add the WeiKai SPI/I2C UART/IO Expander components to esphome :esphomepr:`5218` by :ghuser:`DrCoolzic` (new-integration)
- Event entity support :esphomepr:`6451` by :ghuser:`nohat` (new-integration)
- SPI and I2C for BMP390 and BMP380 :esphomepr:`6652` by :ghuser:`latonita` (new-integration) (breaking-change)
Breaking Changes
^^^^^^^^^^^^^^^^
- Add DNS sensor and simplify format :esphomepr:`6450` by :ghuser:`HeMan` (breaking-change)
- SM2135 - Use standard channel ordering. :esphomepr:`6573` by :ghuser:`Cossid` (breaking-change)
- [sn74hc595] Enforce type field to distinguish gpio vs spi mode :esphomepr:`6609` by :ghuser:`jesserockz` (breaking-change)
- Add datetime entities :esphomepr:`6513` by :ghuser:`jesserockz` (breaking-change)
- SPI and I2C for BMP390 and BMP380 :esphomepr:`6652` by :ghuser:`latonita` (new-integration) (breaking-change)
Beta Changes
^^^^^^^^^^^^
- [github] Upgrade to actions/[upload,download]-artifact v4 :esphomepr:`6698` by :ghuser:`jesserockz`
- [nextion] Replace flags to ``USE_ARDUINO`` :esphomepr:`6700` by :ghuser:`edwardtfn`
- [remote_receiver, remote_transmitter] Improve error messages on the ESP32 :esphomepr:`6701` by :ghuser:`Mat931`
- [ethernet] Use constexpr instead of inline define for KSZ80XX_PC2R_REG_ADDR :esphomepr:`6705` by :ghuser:`jesserockz`
- Add PHY register writes to enable external clock on Ethernet with RTL8201 :esphomepr:`6704` by :ghuser:`heythisisnate`
- Bump recommended ESP-IDF to 4.4.7 :esphomepr:`6703` by :ghuser:`bdraco`
- [core] Ensure that a generated ID name is distinct from its type. :esphomepr:`6706` by :ghuser:`clydebarrow`
- [color] Fix crash when hex color parses as int, improve error reporting. :esphomepr:`6707` by :ghuser:`clydebarrow`
- [github] Fix digest artifact name :esphomepr:`6710` by :ghuser:`jesserockz`
- fix(ltr390): stuck ALS values when configured for ALS+UV readings :esphomepr:`6723` by :ghuser:`CodeInPolish`
- Set FEATURE_API_AUDIO flag also if the speaker component is not used :esphomepr:`6712` by :ghuser:`gnumpi`
- Bump platformio from 6.1.13 to 6.1.15 :esphomepr:`6634` by :ghuser:`dependabot[bot]`
- Fix ESPHOME_PROJECT_VERSION_30 :esphomepr:`6731` by :ghuser:`jesserockz`
- Voice-Assistant: Start-order change for VAD disabled: start va-pipeline when microphon… :esphomepr:`6391` by :ghuser:`gnumpi`
- Add ANNOUNCING state to media_player. :esphomepr:`6691` by :ghuser:`gnumpi`
- [adc] Fix 11db deprecation warning :esphomepr:`6749` by :ghuser:`jesserockz` (notable-change)
Notable Changes
^^^^^^^^^^^^^^^
- [adc] Fix 11db deprecation warning :esphomepr:`6749` by :ghuser:`jesserockz` (notable-change)
All changes
^^^^^^^^^^^
- Add some components to the new testing framework (H) :esphomepr:`6179` by :ghuser:`kbx81`
- Added Htu21d model option :esphomepr:`6511` by :ghuser:`MRemy2`
- Add bk72xx base test file :esphomepr:`6522` by :ghuser:`jesserockz`
- Add "log" alias for "logs" command :esphomepr:`6519` by :ghuser:`pzich`
- Add DNS sensor and simplify format :esphomepr:`6450` by :ghuser:`HeMan` (breaking-change)
- Add all missing ``remote_receiver`` ``on_...`` tests :esphomepr:`6524` by :ghuser:`kbx81`
- Add actions to http_request tests :esphomepr:`6529` by :ghuser:`kbx81`
- Update homeassistant component tests with actions :esphomepr:`6528` by :ghuser:`kbx81`
- Define ``USE_PSRAM`` :esphomepr:`6526` by :ghuser:`edwardtfn`
- Bump black from 24.2.0 to 24.4.0 :esphomepr:`6539` by :ghuser:`dependabot[bot]`
- Bump peter-evans/create-pull-request from 6.0.2 to 6.0.3 :esphomepr:`6525` by :ghuser:`dependabot[bot]`
- Bump python version in sync-device-classes workflow to 3.12 for HA :esphomepr:`6541` by :ghuser:`jesserockz`
- Bump pylint from 3.0.3 to 3.1.0 :esphomepr:`6287` by :ghuser:`dependabot[bot]`
- Bump aioesphomeapi from 23.2.0 to 24.0.0 :esphomepr:`6544` by :ghuser:`dependabot[bot]`
- Bump pyupgrade from 3.15.1 to 3.15.2 :esphomepr:`6543` by :ghuser:`dependabot[bot]`
- Add enum option to typed_schema :esphomepr:`6546` by :ghuser:`jesserockz`
- Move esphome-fork startup script to main repo. :esphomepr:`6523` by :ghuser:`jesserockz`
- Call workflow for addon with dev version :esphomepr:`6549` by :ghuser:`jesserockz`
- Use trusted publishing token for pypi :esphomepr:`6545` by :ghuser:`jesserockz`
- Fix uart to work with new enum definition in esp-idf-v5.2.1 :esphomepr:`6487` by :ghuser:`luar123`
- Housecleaning: Use walrus operator in datetime :esphomepr:`6552` by :ghuser:`jesserockz`
- Housecleaning: Use walrus operator in text :esphomepr:`6560` by :ghuser:`jesserockz`
- Housecleaning: Use walrus operator in light :esphomepr:`6556` by :ghuser:`jesserockz`
- Housecleaning: Use walrus operator in select :esphomepr:`6557` by :ghuser:`jesserockz`
- Housecleaning: Use walrus operator in number :esphomepr:`6561` by :ghuser:`jesserockz`
- Housecleaning: Use walrus operator in cover :esphomepr:`6562` by :ghuser:`jesserockz`
- Housecleaning: Use walrus operator in climate :esphomepr:`6551` by :ghuser:`jesserockz`
- Housecleaning: Use walrus operator in fan :esphomepr:`6555` by :ghuser:`jesserockz`
- Housecleaning: Use walrus operator in text_sensor :esphomepr:`6559` by :ghuser:`jesserockz`
- Bump zeroconf to 0.132.2 :esphomepr:`6548` by :ghuser:`bdraco`
- Housecleaning: Use walrus operator in switch :esphomepr:`6558` by :ghuser:`jesserockz`
- Housecleaning: Use walrus operator in lock :esphomepr:`6554` by :ghuser:`jesserockz`
- Housecleaning: Use walrus operator in sensor :esphomepr:`6553` by :ghuser:`jesserockz`
- Bump pytest-mock from 3.12.0 to 3.14.0 :esphomepr:`6572` by :ghuser:`dependabot[bot]`
- Bump peter-evans/create-pull-request from 6.0.3 to 6.0.4 :esphomepr:`6569` by :ghuser:`dependabot[bot]`
- Nextion - Review set_protocol_reparse_mode() :esphomepr:`6567` by :ghuser:`edwardtfn`
- Allow component final_validate :esphomepr:`6475` by :ghuser:`kbx81`
- SM2135 - Use standard channel ordering. :esphomepr:`6573` by :ghuser:`Cossid` (breaking-change)
- Nextion - Do not refresh sensors while updating :esphomepr:`6566` by :ghuser:`edwardtfn`
- Nextion - Review types :esphomepr:`6565` by :ghuser:`edwardtfn`
- On failure, dump the output of preceding jobs in CI status :esphomepr:`6564` by :ghuser:`clydebarrow`
- Nextion ``send_command`` method :esphomepr:`6540` by :ghuser:`edwardtfn`
- Fix some printf formats for size_t. :esphomepr:`6542` by :ghuser:`clydebarrow`
- remove delay from tmp102 :esphomepr:`6577` by :ghuser:`ssieb`
- Create ``component_dir`` substitution for local files to be included in… :esphomepr:`6575` by :ghuser:`jesserockz`
- Define ``USE_ESP32_BLE`` :esphomepr:`6585` by :ghuser:`edwardtfn`
- Bump aioesphomeapi from 24.0.0 to 24.3.0 :esphomepr:`6602` by :ghuser:`dependabot[bot]`
- Add yamllint and clang-format to pre-commit hooks :esphomepr:`6578` by :ghuser:`clydebarrow`
- Use clang-format version from requirements_dev file :esphomepr:`6606` by :ghuser:`jesserockz`
- Add some components to the new testing framework (P) :esphomepr:`6213` by :ghuser:`kbx81`
- Add some components to the new testing framework (M part 1) :esphomepr:`6207` by :ghuser:`kbx81`
- Add some components to the new testing framework (M part 2) :esphomepr:`6208` by :ghuser:`kbx81`
- Add some components to the new testing framework (O) :esphomepr:`6211` by :ghuser:`kbx81`
- [mopeka_std_check] Fix test file indentation :esphomepr:`6610` by :ghuser:`jesserockz`
- Add valve component :esphomepr:`6447` by :ghuser:`kbx81` (new-integration)
- Add some components to the new testing framework (R) :esphomepr:`6219` by :ghuser:`kbx81`
- [sn74hc595] Enforce type field to distinguish gpio vs spi mode :esphomepr:`6609` by :ghuser:`jesserockz` (breaking-change)
- [tests] Run yaml tests in groups if over 100 to run :esphomepr:`6612` by :ghuser:`jesserockz`
- Add some components to the new testing framework (I) :esphomepr:`6185` by :ghuser:`kbx81`
- Add some components to the new testing framework (T) :esphomepr:`6229` by :ghuser:`kbx81`
- Add some components to the new testing framework (S part 1) :esphomepr:`6224` by :ghuser:`kbx81`
- Add some components to the new testing framework (S part 2) :esphomepr:`6227` by :ghuser:`kbx81`
- ``graphical_display_menu`` requires a Display, not DisplayBuffer :esphomepr:`6614` by :ghuser:`clydebarrow`
- Add null GPIO pin :esphomepr:`6611` by :ghuser:`clydebarrow`
- Allow UART to be AUTO LOADed :esphomepr:`6617` by :ghuser:`jesserockz`
- Add the WeiKai SPI/I2C UART/IO Expander components to esphome :esphomepr:`5218` by :ghuser:`DrCoolzic` (new-integration)
- Sort mqtt_const alphabetically :esphomepr:`6619` by :ghuser:`jesserockz`
- Limit Rx wait loop time to 3 seconds. :esphomepr:`6594` by :ghuser:`descipher`
- Event entity support :esphomepr:`6451` by :ghuser:`nohat` (new-integration)
- Only check c/c++ files with clang-format :esphomepr:`6620` by :ghuser:`jesserockz`
- Added base64 helper :esphomepr:`4866` by :ghuser:`freekode`
- Add Roomba IR protocol :esphomepr:`4595` by :ghuser:`rforro`
- Fix issue when setting cw/ww brightness via temperature :esphomepr:`5976` by :ghuser:`patagonaa`
- Add get/set color temperature functions in Kelvin :esphomepr:`5006` by :ghuser:`danielkent-net`
- Move CONF_PLATFORM_VERSION to global const.py :esphomepr:`6629` by :ghuser:`tomaszduda23`
- Ble client fixes for proxy :esphomepr:`6596` by :ghuser:`elupus`
- Fix for #6614- use background_color, improve anti-aliasing :esphomepr:`6618` by :ghuser:`clydebarrow`
- Fix graph hangs when y <= 0 :esphomepr:`6593` by :ghuser:`chiahsing`
- Feature add last_operation to time based cover :esphomepr:`6084` by :ghuser:`xprofiler`
- Add ``event``, ``text_sensor`` and ``valve`` device classes to sync script :esphomepr:`6624` by :ghuser:`kbx81`
- Add datetime entities :esphomepr:`6513` by :ghuser:`jesserockz` (breaking-change)
- Multiple Daly-BMS support :esphomepr:`6615` by :ghuser:`latonita`
- Remove text_sensor from sync-device-class job :esphomepr:`6637` by :ghuser:`kbx81`
- Synchronise Device Classes from Home Assistant :esphomepr:`6638` by :ghuser:`esphomebot`
- Display: add diagnostic test_card option :esphomepr:`6608` by :ghuser:`nielsnl68`
- waveshare_epaper: Add 2.90in-dke :esphomepr:`6492` by :ghuser:`polyfloyd`
- Extract core comments from #6241 :esphomepr:`6643` by :ghuser:`javawizard`
- [hm3301] Updated the AQI based on the airnow document :esphomepr:`6004` by :ghuser:`optimusprimespace`
- Fix command line substitutions without any yaml substitutions :esphomepr:`6644` by :ghuser:`jesserockz`
- Allow platform dependencies :esphomepr:`6623` by :ghuser:`kbx81`
- [light] Add transition_length to strobe effect. :esphomepr:`6595` by :ghuser:`lhartmann`
- Fixed the issue that graph draws out of the boundary. :esphomepr:`6651` by :ghuser:`chiahsing`
- Fix upload command. MQTT user and password is missing from configuration. #5093 :esphomepr:`5766` by :ghuser:`dylan09`
- patch esphome cli to skip mqtt based device discovery if --device option is specified :esphomepr:`6371` by :ghuser:`quigleymd`
- Fix for #4866 - inconsistent arguments :esphomepr:`6639` by :ghuser:`clydebarrow`
- [template/text] Fix lambda config :esphomepr:`6655` by :ghuser:`asergunov`
- web_server: Add support for v3 local server_index :esphomepr:`6563` by :ghuser:`pzich`
- Update webserver local assets to 20240429-211523 :esphomepr:`6657` by :ghuser:`esphomebot`
- [nextion] Exit reparse before update TFT :esphomepr:`6589` by :ghuser:`edwardtfn`
- [nextion] Set alternative TFT update baud rate :esphomepr:`6587` by :ghuser:`edwardtfn`
- [TM1637] Let turn off the display :esphomepr:`6656` by :ghuser:`asergunov`
- [nextion] Use persistent http connection for TFT upload (Arduino) :esphomepr:`6582` by :ghuser:`edwardtfn`
- Extend MQTT tests :esphomepr:`6648` by :ghuser:`kbx81`
- Extend and consolidate ``script`` tests :esphomepr:`6663` by :ghuser:`kbx81`
- [nextion] Use persistent http connection for TFT upload (ESP-IDF) :esphomepr:`6576` by :ghuser:`edwardtfn`
- Add a function to return the loop_interval :esphomepr:`6666` by :ghuser:`tronikos`
- Remote receiver improvements :esphomepr:`4642` by :ghuser:`Mat931`
- Make fast update intervals in qmc5883l work :esphomepr:`6647` by :ghuser:`tronikos`
- SPI and I2C for BMP390 and BMP380 :esphomepr:`6652` by :ghuser:`latonita` (new-integration) (breaking-change)
- Set ``CONF_`` CI counter to fail on 3 or more definitions :esphomepr:`6668` by :ghuser:`jesserockz`
- [core] Rename ALWAYS_INLINE to ESPHOME_ALWAYS_INLINE :esphomepr:`6636` by :ghuser:`tomaszduda23`
- print task name if logger is called from other than main thread :esphomepr:`6630` by :ghuser:`tomaszduda23`
- Fix recent definitions into `defines.h` :esphomepr:`6667` by :ghuser:`edwardtfn`
- Add fast update to HMC5883L :esphomepr:`6669` by :ghuser:`mkmer`
- Minor tidy up of BME280 code :esphomepr:`6672` by :ghuser:`latonita`
- External components: optional configurable path for git source :esphomepr:`6677` by :ghuser:`twasilczyk`
- Use clang-apply-replacements when clang-apply-replacements-14 does not exist :esphomepr:`6684` by :ghuser:`Links2004`
- fix conflict with EMPTY macro in zephyr :esphomepr:`6679` by :ghuser:`tomaszduda23`
- Bump actions/checkout from 4.1.1 to 4.1.5 :esphomepr:`6685` by :ghuser:`dependabot[bot]`
- Fix Datetime-Datetime compiler error :esphomepr:`6686` by :ghuser:`RFDarter`
- Bump esphome/ESPAsyncWebServer-esphome to 3.2.0 :esphomepr:`6687` by :ghuser:`jesserockz`
- fix date_time validation :esphomepr:`6688` by :ghuser:`RFDarter`
- proceed if AP mode is set up :esphomepr:`6631` by :ghuser:`ssieb`
- Migrate some constants to core code :esphomepr:`6692` by :ghuser:`clydebarrow`
- Consolidate test files where all tests are identical :esphomepr:`6690` by :ghuser:`kbx81`
- Make ``pulse_meter`` PULSE filter report the pulse as soon as it can :esphomepr:`6014` by :ghuser:`TrentHouliston`
- Update webserver local assets to 20240507-231331 :esphomepr:`6696` by :ghuser:`esphomebot`
- [github] Upgrade to actions/[upload,download]-artifact v4 :esphomepr:`6698` by :ghuser:`jesserockz`
- [nextion] Replace flags to ``USE_ARDUINO`` :esphomepr:`6700` by :ghuser:`edwardtfn`
- [remote_receiver, remote_transmitter] Improve error messages on the ESP32 :esphomepr:`6701` by :ghuser:`Mat931`
- [ethernet] Use constexpr instead of inline define for KSZ80XX_PC2R_REG_ADDR :esphomepr:`6705` by :ghuser:`jesserockz`
- Add PHY register writes to enable external clock on Ethernet with RTL8201 :esphomepr:`6704` by :ghuser:`heythisisnate`
- Bump recommended ESP-IDF to 4.4.7 :esphomepr:`6703` by :ghuser:`bdraco`
- [core] Ensure that a generated ID name is distinct from its type. :esphomepr:`6706` by :ghuser:`clydebarrow`
- [color] Fix crash when hex color parses as int, improve error reporting. :esphomepr:`6707` by :ghuser:`clydebarrow`
- [github] Fix digest artifact name :esphomepr:`6710` by :ghuser:`jesserockz`
- fix(ltr390): stuck ALS values when configured for ALS+UV readings :esphomepr:`6723` by :ghuser:`CodeInPolish`
- Set FEATURE_API_AUDIO flag also if the speaker component is not used :esphomepr:`6712` by :ghuser:`gnumpi`
- Bump platformio from 6.1.13 to 6.1.15 :esphomepr:`6634` by :ghuser:`dependabot[bot]`
- Fix ESPHOME_PROJECT_VERSION_30 :esphomepr:`6731` by :ghuser:`jesserockz`
- Voice-Assistant: Start-order change for VAD disabled: start va-pipeline when microphon… :esphomepr:`6391` by :ghuser:`gnumpi`
- Add ANNOUNCING state to media_player. :esphomepr:`6691` by :ghuser:`gnumpi`
- [adc] Fix 11db deprecation warning :esphomepr:`6749` by :ghuser:`jesserockz` (notable-change)
Past Changelogs
---------------
- :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`

View File

@ -2,7 +2,7 @@ Changelog
=========
.. redirect::
:url: /changelog/2023.11.0.html
:url: /changelog/2024.5.0.html
.. toctree::
:glob:

View File

@ -30,7 +30,7 @@ awesome things with DIY hardware!
The features I'm particularly excited about are:
* :ref:`esphomeflasher <esphome-flasher>` - Experiencing problems flashing esphomelib firmwares using esphomeyaml?
* ``esphomeflasher`` - Experiencing problems flashing esphomelib firmwares using esphomeyaml?
No problem, esphomeflasher is a tool designed to make that super easy. Just let esphomeyaml generate the binary and flash
from your PC.
* :doc:`Over-the-Air Updates </components/ota>` have been completely re-written to make them a lot more
@ -76,7 +76,7 @@ New Features
- esphomelib now has a new tool: `esphomeflasher <https://github.com/esphome/esphome-flasher>`__ to simplify
flashing on Windows/MacOS machines **without having to install esphomeyaml**. So if esphomeyaml for some reason
can't find your USB port, you now can use the esphomeflasher app. See :ref:`esphome-flasher`.
can't find your USB port, you now can use the esphomeflasher app. See ``esphomeflasher``.
- ESP8266s now save the states of lights/switches/... internally and restores them on boot.
Additionally, esphomelib can now operate in fully offline mode if your WiFi network goes down

View File

@ -44,6 +44,11 @@ Configuration variables:
when the alarm state changes to ``disarmed``. See :ref:`alarm_control_panel_on_disarmed_trigger`.
- **on_cleared** (*Optional*, :ref:`Action <config-action>`): An automation to perform
when the alarm clears. See :ref:`alarm_control_panel_on_cleared_trigger`.
- **on_ready** (*Optional*, :ref:`Action <config-action>`): An automation to perform
when the logical 'and' of all the zone sensors change state. See :ref:`alarm_control_panel_on_ready_trigger`.
- **on_chime** (*Optional*, :ref:`Action <config-action>`): An automation to perform
when a zone has been marked as chime in the configuration, and it changes from closed to open.
See :ref:`alarm_control_panel_on_chime_trigger`.
Automation:
@ -184,6 +189,39 @@ This trigger is activated when the alarm changes from to disarmed.
then:
- logger.log: "Alarm Disarmed!"
.. _alarm_control_panel_on_ready_trigger:
``on_ready`` Trigger
********************
This trigger is activated when the logical 'and' of all the alarm sensors change state. This is useful for implementing "alarm ready" LEDs.
Once this trigger is called, you can get the ready state by calling get_all_sensors_ready() in a lambda block.
.. code-block:: yaml
alarm_control_panel:
# ...
on_disarmed:
then:
- lambda: !lambda |-
ESP_LOGI("AlarmPanel", "Sensor ready change to: %s", ((id(acp1).get_all_sensors_ready()) ? (const char *) "True" : (const char *) "False"));
.. _alarm_control_panel_on_chime_trigger:
``on_chime`` Trigger
********************
This trigger is activated when a zone sensor marked with chime:true changes from closed to open. This is useful for implementing keypad chimes when a zone
opens.
.. code-block:: yaml
alarm_control_panel:
# ...
on_chime:
then:
- logger.log: "Alarm Chime!"
.. _alarm_control_panel_arm_away_action:
``arm_away`` Action
@ -296,6 +334,7 @@ From :ref:`lambdas <config-lambda>`, you can call the following methods:
- ``arm_home(code)``
- ``arm_night(code)``
- ``disarm(code)``
- ``get_all_sensors_ready()``
.. code-block:: cpp
@ -303,6 +342,7 @@ From :ref:`lambdas <config-lambda>`, you can call the following methods:
id(acp1).arm_home();
id(acp1).arm_night();
id(acp1).disarm(std::string("1234"));
bool all_sensors_ready = id(acp1).get_all_sensors_ready();
Platforms

View File

@ -27,8 +27,8 @@ Configuration variables:
- **codes** (*Optional*, list of string): A list of codes for disarming the alarm, if *requires_code_to_arm* set to true then for arming the alarm too.
- **requires_code_to_arm** (*Optional*, boolean): Code required for arming the alarm, *codes* must be provided.
- **arming_away_time** (*Optional*, :ref:`config-time`): The exit delay before the alarm is armed to away mode. Defaults to ``0s``.
- **arming_home_time** (*Optional*, :ref:`config-time`): The exit delay before the alarm is armed to home mode.
- **arming_night_time** (*Optional*, :ref:`config-time`): The exit delay before the alarm is armed to night mode.
- **arming_home_time** (*Optional*, :ref:`config-time`): The exit delay before the alarm is armed to home mode.
- **arming_night_time** (*Optional*, :ref:`config-time`): The exit delay before the alarm is armed to night mode.
- **pending_time** (*Optional*, :ref:`config-time`): The entry delay before the alarm is triggered. Defaults to ``0s``.
- **trigger_time** (*Optional*, :ref:`config-time`): The time after a triggered alarm before resetting to previous state if the sensors are cleared/off. Defaults to ``0s``.
- **binary_sensors** (*Optional*, *list*): A list of binary sensors the panel should use. Each consists of:
@ -36,6 +36,8 @@ Configuration variables:
- **input** (**Required**, string): The id of the binary sensor component
- **bypass_armed_home** (*Optional*, boolean): This binary sensor will not trigger the alarm when in ``armed_home`` state.
- **bypass_armed_night** (*Optional*, boolean): This binary sensor will not trigger the alarm when in ``armed_night`` state.
- **trigger_mode** (*Optional*, string): Sets the trigger mode for this sensor. One of ``delayed``, ``instant``, or ``delayed_follower``. (``delayed`` is the default if not specified)
- **chime** (*Optional*, boolean): When set ``true``, the chime callback will be called whenever the sensor goes from closed to open. (``false`` is the default if not specified)
- **restore_mode** (*Optional*, enum):
@ -46,9 +48,33 @@ Configuration variables:
.. note::
If ``binary_sensors`` is ommited then you're expected to trigger the alarm using
If ``binary_sensors`` is omitted then you're expected to trigger the alarm using
:ref:`alarm_control_panel_pending_action` or :ref:`alarm_control_panel_triggered_action`.
.. _template_alarm_control_panel-trigger_modes:
Trigger Modes
-------------
Each binary sensor "zone" supports 3 trigger modes. The 3 trigger modes are:
- delayed
- instant
- delayed_follower
The ``delayed`` trigger mode is typically specified for exterior doors where entry is required to access an alarm keypad or other arm/disarm method. If the alarm panel is armed, and a zone set to ``delayed`` is "faulted" (i.e. the zone state is ``true``) the alarm state will change from the ``armed`` state to the ``pending`` state. During the ``pending`` state, the user has a preset time to disarm the alarm before it changes to the ``triggered`` state. This is the default trigger mode if not specified.
The ``instant`` trigger mode is typically used for exterior zones (e.g. windows, and glass break detectors). If the alarm control panel is armed, a fault on this type of zone will cause the alarm to go from the ``armed`` state directly to the ``triggered`` state.
The ``delayed_follower`` trigger mode is typically specifed for interior passive infared (PIR) or microwave sensors. One of two things happen when a ``delayed_follower`` zone is faulted:
1. When the alarm panel is in the armed state, a fault on a zone with ``delayed_follower`` specified will cause the alarm control panel to go directly to the ``triggered`` state.
2. When the alarm panel is in the pending state, a fault on a zone with ``delayed_follower`` specified will remain in the ``pending`` state.
The ``delayed_follower`` trigger mode offers better protection if someone enters a premises via an unprotected window or door. If there is a PIR guarding the main hallway, it will cause an instant trigger of the alarm panel as someone
entered the premises in a unusual manner. Likewise, if someone enters the premises though a door set to the ``delayed`` trigger mode, and then triggers the PIR, the alarm will stay in the ``pending`` state until either they disarm the alarm, or
the pending timer expires.
.. _template_alarm_control_panel-state_flow:
@ -63,18 +89,29 @@ State Flow:
3. When the alarm is tripped by a sensor state changing to ``on`` or ``alarm_control_panel_pending_action`` invoked
a. ``pending_time`` greater than 0 the state is ``PENDING``
b. ``pending_time`` is 0 or after the ``pending_time`` delay the state is ``TRIGGERED``
1. If trigger_mode is set to ``delayed``:
1. ``pending_time`` greater than 0 the state is ``PENDING``
2. ``pending_time`` is 0 or after the ``pending_time`` delay the state is ``TRIGGERED``
2. If trigger_mode is set to ``instant``:
1. The state is set to ``TRIGGERED``
3. If the trigger_mode is set to ``interior_follower``:
1. If the current state is ``ARMED_...`` the state will be set to ``TRIGGERED``
2. If the current state is ``PENDING`` then nothing will happen and it will stay in the ``PENDING`` state.
4. If ``trigger_time`` greater than 0 and no sensors are ``on`` after ``trigger_time`` delay
the state returns to ``ARM_...``
.. note::
Although the interface supports all arming modes only ``away`` and ``home`` have been implemented for now.
Although the interface supports all arming modes only ``away``, ``home`` and ``night`` have been implemented for now.
``arm_...`` is for either ``arm_away`` or ``arm_home``
``arming_..._time`` is for either ``arming_away_time`` or ``arming_home_time``
``ARMED_...`` is for either ``ARMED_AWAY`` or ``ARMED_HOME``
``arming_..._time`` is for either ``arming_away_time``, ``arming_home_time``, or ``arming_night_time``
``ARMED_...`` is for either ``ARMED_AWAY``, ``ARMED_HOME``, or ``ARMED_NIGHT``
Example:
@ -95,8 +132,16 @@ Example:
trigger_time: 5min
binary_sensors:
- input: zone_1
chime: true
trigger_mode: delayed
- input: zone_2
chime: true
trigger_mode: delayed
- input: zone_3
bypass_armed_home: true
trigger_mode: delayed_follower
- input: zone_4
trigger_mode: instant
- input: ha_test
on_state:
then:
@ -108,6 +153,15 @@ Example:
on_cleared:
then:
- switch.turn_off: siren
on_ready:
then:
- lambda: !lambda |-
ESP_LOGD("TEST", "Sensor ready change to: %s",
(id(acp1).get_all_sensors_ready())) ? (const char *) "True" : (const char *) "False");
on_chime:
then:
- lambda: !lambda |-
ESP_LOGD("TEST", "Zone with chime mode set opened");
binary_sensor:
- platform: gpio
@ -115,20 +169,36 @@ Example:
name: Zone 1
device_class: door
pin:
number: D1
number: GPIOXX
mode: INPUT_PULLUP
inverted: True
- platform: gpio
id: zone_2
name: Zone 2
device_class: door
pin:
number: GPIOXX
mode: INPUT_PULLUP
inverted: True
- platform: gpio
id: zone_3
name: Zone 3
device_class: motion
pin:
number: D2
number: GPIOXX
mode: INPUT_PULLUP
inverted: True
- platform: gpio
id: zone_4
name: Zone 4
device_class: door
pin:
number: GPIOXX
mode: INPUT_PULLUP
inverted: True
- platform: homeassistant
id: ha_test
name: Zone 3
name: HA Test
entity_id: input_boolean.test_switch
switch:
@ -136,7 +206,7 @@ Example:
id: siren
name: Siren
icon: mdi:alarm-bell
pin: D7
pin: GPIOXX
See Also

View File

@ -75,20 +75,35 @@ Configuration variables:
.. _api-actions:
.. note::
Before a newly added ESPHome device can interact with the Home Assistant API it needs to be allowed to communicate
with it. This setting can be found in the ESPHome integration (NOT in the Add-On) by clicking "CONFIGURE" for
that device and enabling the "Allow device to make service calls" option.
Actions
-------
Before using any of the actions below, you'll need to tell Home Assistant to allow your device to
make service calls.
Open the ESPHome integration page on your Home Assistant instance:
.. raw:: html
<a href="https://my.home-assistant.io/redirect/integration/?domain=esphome" target="_blank" rel="noreferrer noopener"><img src="https://my.home-assistant.io/badges/integration.svg" alt="Open your Home Assistant instance and show an integration." /></a>
Then:
#. Fnd your device in the device list
#. Click the "configure" button next to it
#. Check the "Allow the device to make Home Assistant service calls" box
#. Then click "submit".
.. _api-homeassistant_event_action:
``homeassistant.event`` Action
******************************
.. note::
Be sure to :ref:`follow the instructions above <api-actions>` to tell Home Assistant to allow
your device to make service calls.
When using the native API with Home Assistant, you can create events in the Home Assistant event bus
straight from ESPHome :ref:`Automations <automation>`.
@ -117,6 +132,11 @@ Configuration variables:
``homeassistant.service`` Action
********************************
.. note::
Be sure to :ref:`follow the instructions above <api-actions>` to tell Home Assistant to allow
your device to make service calls.
When using the native API with Home Assistant, you can create Home Assistant service
calls straight from ESPHome :ref:`Automations <automation>`.
@ -189,6 +209,11 @@ Then, in ESPHome:
``homeassistant.tag_scanned`` Action
************************************
.. note::
Be sure to :ref:`follow the instructions above <api-actions>` to tell Home Assistant to allow
your device to make service calls.
When using the native API with Home Assistant, you can push tag_scanned to Home Assistant
straight from ESPHome :ref:`Automations <automation>`.

183
components/at581x.rst Normal file
View File

@ -0,0 +1,183 @@
AirTouch AT581x Radar
=====================
.. seo::
:description: Instructions for setting up AirTouch AT581x Radar
:image: at581x.png
:keywords: radar
The `AirTouch AT581x radar <https://en.airtouching.com/product/32.html>`__
(aka ``AT581x``) is a familly of 5.8GHz radar which can be used for human presence detection. It can detect tiny movements
and compared to a PIR sensor **it can detect presence continuously**. This can be useful, for example, to turn
the lights on when you enter a room, keep them on as long as you are there (without waving your hands at the
sensor) and turn them off almost immediately after you leave the room.
They are ultra-low power (as low as 40µA of current consumption) and are extremely simple to use, yet can be setup by I2C.
It's installed in many low cost appliance, like the ESP32S3-BOX-3, and can be found by many different manufacturer or reference,
like the MoreSense MS58-3909S68U4.
It is possible to use this sensor with only a single GPIO pin; however, if you wish to change its settings,
a :doc:`/components/i2c` component (and its requisite GPIO pins) is required in your device's configuration.
.. figure:: ../images/at581x.png
:align: center
:width: 75%
AirTouch AT581x Radar / presence detection sensor
.. code-block:: yaml
# Example configuration entry
at581x:
id: "Radar"
i2c_id: bus_a
.. _at581x-component:
Component/Hub
-------------
You need to have the hub component (``at581x:`` entry) defined to be able to change the sensor's
settings, get it listed as an motion entity or being able to turn on/off the radio frequency emmission.
A :doc:`/components/binary_sensor/gpio` alone could be sufficient if you only want
to determine presence/occupancy. When you define ``at581x:`` you'll need to have a ``i2c:`` entry in
your configuration with both the SDA and SCL pins defined.
Multiple instances of this component may be defined if multiple :doc:`/components/i2c` components are available:
.. code-block:: yaml
at581x:
- id: mmWave_1
i2c_id: bus_a
address: 0x28
- id: mmWave_2
i2c_id: bus_a
address: 0x29
...
Configuration variables:
************************
- **id** (*Optional*, :ref:`config-id`): Manually specify the ID used for code generation. Necessary if you want
to define multiple instances of this component.
- **i2c_id** (*Optional*, :ref:`config-id`): Manually specify the ID of the :doc:`/components/i2c` if you want
to use multiple I2C buses.
.. _at581x-binary_sensor:
Binary Sensor
-------------
The state of the radar detection is available via its GPIO pin. It's required to use a GPIO binary sensor to monitor the motion status
.. code-block:: yaml
binary_sensor:
- platform: gpio
name: "Human in front"
pin: GPIOXX
Configuration variables:
************************
- Refer to other options from :ref:`Binary Sensor <config-binary_sensor>` and :doc:`GPIO Binary Sensor </components/binary_sensor/gpio>`.
.. _at581x-switch:
Switch
------
:ref:`Switch components <config-switch>` are used to enable/disable radio frequency hardware.
.. code-block:: yaml
switch:
- platform: at581x
at581x_id: Radar
name: "Enable Radar"
Configuration variables:
************************
- **at581x_id** (*Optional*, :ref:`config-id`): The ID of the AT581x component defined above.
Required when multiple instances of the ``at581x`` component are defined.
- All other options from :ref:`Switch <config-switch>`.
.. _at581x-actions:
Actions
-------
.. _at581x-action_settings:
``at581x.settings`` Action
**************************
.. warning::
The hardware frontend reset option is only required to reset the frontend in case it is struck, before sending the
new configuration. However, a frontend reset is always performed after changing the settings.
The radar has several settings which can be changed. These settings are not saved in non-volatile memory
and need to be set on each boot.
The settings action allows changing of any number of the radar's internal parameters/settings. With this
action, any unspecified parameters will remain unchanged.
.. code-block:: yaml
on_...:
- at581x.settings:
id: "Waveradar"
hw_frontend_reset: false
frequency: 5800MHz
sensing_distance: 200 # 0-1023
poweron_selfcheck_time: 2000ms
protect_time: 1s
trigger_base: 500ms
trigger_keep: 10s
stage_gain: 3 # 0-12 the higher the value the smaller the gain
power_consumption: 70µA
Configuration variables:
````````````````````````
- **id** (*Optional*, :ref:`config-id`): Manually specify the ID of the sensor on which settings should be
changed. If only one radar is defined, this is optional.
- **hw_frontend_reset** (*Optional*, boolean): If set to true, a reset of the analog frontend will be performed before
changing other options. Ignored if not set or set to ``false``. Upon applying the settings a frontend reset
will be performed anyway, this is only useful if the sensor is not answering or locked up.
- **frequency** (*Optional*, int): Any of the possible frequencies (5696, 5715, 5730, 5748, 5765, 5784, 5800, 5819, 5836, 5851, 5869, 5888) in MHz.
- **sensing_distance** (*Optional*, int): A unitless number, in range 0-1023, specifying the maximum distance to detect motion
- **poweron_selfcheck_time** (*Optional*, int): The delay to perform self check and calibration on power on. Recommanded not to change this
- **protect_time** (*Optional*, int): The delay after an end-of-trigger event where the detection will not trigger anymore. Max 65535ms
- **trigger_base** (*Optional*, int): The delay while a detection must be active to change the state of the sensor. Max 65535ms
- **trigger_keep** (*Optional*, int): The delay that the output will stay high after a detection event. This is usually what you want to change.
- **stage_gain** (*Optional*, int): The analog gain to use for threshold test. Any value in range 0-12, with 12 being the lowest gain and 0 the highest
- **power_consumption** (*Optional*, int): Any of the possible power profile (48, 56, 63, 70, 77, 91, 105, 115, 40, 44, 47, 51, 54, 61, 68, 78) in µA
``at581x.reset`` Action
***********************
Restart the sensor.
.. code-block:: yaml
on_...:
at581x.reset:
Configuration variables:
````````````````````````
- **id** (*Optional*, :ref:`config-id`): Manually specify the ID of the AT581x component. Useful when multiple instances of this component are defined.
See Also
--------
- :ref:`I2C bus <i2c>`
- :ref:`Binary Sensor <config-binary_sensor>`
- :doc:`GPIO Binary Sensor </components/binary_sensor/gpio>`
- :ref:`config-id`
- :ghedit:`Edit`

View File

@ -30,10 +30,15 @@ The ``ble_presence`` binary sensor platform lets you track the presence of a Blu
mac_address: AC:37:43:77:5F:4C
name: "ESP32 BLE Tracker Google Home Mini"
min_rssi: -80dB
# Presence based on Identity Resolving Key (IRK)
- platform: ble_presence
irk: 1234567890abcdef1234567890abcdef
name: "ESP32 BLE Tracker iPhone"
# Presence based on BLE Service UUID
- platform: ble_presence
service_uuid: '11aa'
name: "ESP32 BLE Tracker Test Service 16 bit"
timeout: 45s
# Presence based on iBeacon UUID
- platform: ble_presence
ibeacon_uuid: '68586f1e-89c2-11eb-8dcd-0242ac130003'
@ -51,14 +56,17 @@ Configuration variables:
- **name** (**Required**, string): The name of the binary sensor.
- **mac_address** (*Optional*, MAC Address): The MAC address to track for this
binary sensor. Note that exactly one of ``mac_address``, ``service_uuid`` or ``ibeacon_uuid``
binary sensor. Note that exactly one of ``mac_address``, ``irk``, ``service_uuid`` or ``ibeacon_uuid``
must be present.
- **irk** (*Optional*, 16 byte hex string): The Identity Resolving Key (IRK) to track for this
binary sensor. Note that exactly one of ``mac_address``, ``irk``, ``service_uuid`` or ``ibeacon_uuid``
must be present.
- **service_uuid** (*Optional*, string): 16 bit, 32 bit, or 128 bit BLE Service UUID
which can be tracked if the device randomizes the MAC address. Note that exactly one of
``mac_address``, ``service_uuid`` or ``ibeacon_uuid`` must be present.
``mac_address``, ``irk``, ``service_uuid`` or ``ibeacon_uuid`` must be present.
- **ibeacon_uuid** (*Optional*, string): The `universally unique identifier <https://en.wikipedia.org/wiki/Universally_unique_identifier>`__
to identify the beacon that needs to be tracked. Note that exactly one of ``mac_address``,
``service_uuid`` or ``ibeacon_uuid`` must be present.
``irk``, ``service_uuid`` or ``ibeacon_uuid`` must be present.
- **ibeacon_major** (*Optional*, int): The iBeacon major identifier of the beacon that needs
to be tracked. Usually used to group beacons, for example for grouping all beacons in the
same building.
@ -66,7 +74,9 @@ Configuration variables:
to be tracked. Usually used to identify beacons within an iBeacon group.
- **id** (*Optional*, :ref:`config-id`): Manually specify
the ID used for code generation.
- **min_rssi** (*Optional*, int): at which minimum RSSI level would the component report the device be precent
- **min_rssi** (*Optional*, int): at which minimum RSSI level would the component report the device be present.
- **timeout** (*Optional*, :ref:`config-time`): The delay after last detecting the device before publishing not present state.
The default is 5 minutes.
- All other options from :ref:`Binary Sensor <config-binary_sensor>`.
.. _esp32_ble_tracker-setting_up_devices:
@ -105,8 +115,15 @@ iBeacon major and minor identifiers, BLE manufacturer data, RSSI and other data
debugging purposes. Note that this is useful only during set-up and a less verbose log level
should be specified afterwards.
Please note that devices that show a ``RANDOM`` address type in the logs cannot be used for
MAC address based tracking, since their MAC-address periodically changes. Instead you can:
Please note that devices that show a ``RANDOM`` address type in the logs probably use a privacy
feature called Resolvable Private Addresses to avoid BLE tracking. Since their MAC-address periodically
changes, they can't be tracked by the MAC address. However, if you know the devices "Identity Resolving
Key" (IRK), you can check if the generated private MAC address belongs to the device with the IRK.
There is no support to obtain the key with ESPHome. For now you will have to use one of the options
described in the ESPresense project: https://espresense.com/beacons
Alternatively you can:
- Create a BLE beacon, set a unique 16 bit, 32 bit or 128 bit Service UUID and track your device
based on that. Make sure you don't pick a `GATT Service UUID

View File

@ -30,7 +30,7 @@ required to be set up in your configuration for this sensor to work.
cap1188:
id: cap1188_component
address: 0x29
reset_pin: 14
reset_pin: GPIOXX
touch_threshold: 0x40
allow_multiple_touches: true

View File

@ -1,22 +1,28 @@
Custom Binary Sensor
====================
.. seo::
:description: Instructions for setting up Custom C++ binary sensors with ESPHome.
:image: language-cpp.svg
:keywords: C++, Custom
.. warning::
Custom components are deprecated, not recommended for new configurations
and will be removed from ESPHome in a future release.
Please look at creating a real ESPHome component and "importing" it into your
configuration with :doc:`/components/external_components`.
Custom components are deprecated, not recommended for new configurations and will be removed from ESPHome in a
future release. Please look at creating a real ESPHome component and "importing" it into your configuration with
:doc:`/components/external_components`.
You can find some basic documentation on creating your own components
at :ref:`contributing_to_esphome`.
You can find some basic documentation on creating your own components at :ref:`contributing_to_esphome`.
This integration can be used to create custom binary sensors in ESPHome
using the C++ (Arduino) API.
.. warning::
Please first read :doc:`/components/sensor/custom` guide,
the same principles apply here and binary sensors are very similar
to sensors internally.
While we try to keep the ESPHome YAML configuration options as stable as possible, the ESPHome API is less
stable. If something in the APIs needs to be changed in order for something else to work, we will do so.
This component can be used to create custom binary sensors in ESPHome using the C++ (Arduino) API.
Please first read :doc:`/components/sensor/custom` guide, the same principles apply here and binary
sensors are very similar to sensors internally.
The example below is an example of a custom binary sensor; this custom sensor is essentially the
same as the gpio binary sensor.

View File

@ -130,8 +130,8 @@ an ``OFF`` state.
binary_sensor:
- platform: esp32_touch
name: "ESP32 Touch Pad GPIO27"
pin: GPIO27
name: "ESP32 Touch Pad"
pin: GPIOXX
threshold: 1000
Configuration variables:
@ -149,6 +149,35 @@ Configuration variables:
wake-up from a touch event. Note that no filter(s) is/are active during deep sleep.
- All other options from :ref:`Binary Sensor <config-binary_sensor>`.
Raw Values
----------
If access to the raw values is required, a template sensor can be created that polls for them:
.. code-block:: yaml
# Example configuration entry for accessing raw values
esp32_touch:
id: esp32_touch_1
binary_sensor:
- platform: esp32_touch
id: esp32_touch_pad
pin: GPIOXX
threshold: 0
sensor:
- platform: template
name: "Raw touch value"
lambda: |-
return id(esp32_touch_pad).get_value();
update_interval: 3s
One example of use is a wide area pressure sensor that integrates a number of smaller sensors in an area. Make two strips
of aluminium foil that sandwich paper, and connect one wire to a touch pin and the other to ground. Set up several sensors
under a flexible object like a plastic mat, add the raw values, and apply a threshold.
.. _esp32-touch-pad-pins:
Touch Pad Pins

View File

@ -0,0 +1,68 @@
Haier Climate Binary Sensors
============================
.. seo::
:description: Instructions for setting up additional binary sensors for Haier climate devices.
:image: haier.svg
Additional sensors for Haier Climate device. **These sensors are supported only by the hOn protocol**.
.. figure:: images/haier-climate.jpg
:align: center
:width: 50.0%
.. code-block:: yaml
# Example configuration entry
uart:
baud_rate: 9600
tx_pin: GPIOXX
rx_pin: GPIOXX
id: ac_port
climate:
- platform: haier
id: haier_ac
protocol: hOn
name: Haier AC
uart_id: ac_port
binary_sensor:
- platform: haier
haier_id: haier_ac
compressor_status:
name: Haier Outdoor Compressor Status
defrost_status:
name: Haier Defrost Status
four_way_valve_status:
name: Haier Four Way Valve Status
indoor_electric_heating_status:
name: Haier Indoor Electric Heating Status
indoor_fan_status:
name: Haier Indoor Fan Status
outdoor_fan_status:
name: Haier Outdoor Fan Status
Configuration variables:
------------------------
- **haier_id** (**Required**, :ref:`config-id`): The id of haier climate component
- **compressor_status** (*Optional*): A binary sensor that indicates Haier climate compressor activity.
All options from :ref:`Binary Sensor <config-binary_sensor>`.
- **defrost_status** (*Optional*): A binary sensor that indicates defrost procedure activity.
All options from :ref:`Binary Sensor <config-binary_sensor>`.
- **four_way_valve_status** (*Optional*): A binary sensor that indicates four way valve status.
All options from :ref:`Binary Sensor <config-binary_sensor>`.
- **indoor_electric_heating_status** (*Optional*): A binary sensor that indicates electrical heating system activity.
All options from :ref:`Binary Sensor <config-binary_sensor>`.
- **indoor_fan_status** (*Optional*): A binary sensor that indicates indoor fan activity.
All options from :ref:`Binary Sensor <config-binary_sensor>`.
- **outdoor_fan_status** (*Optional*): A binary sensor that indicates outdoor fan activity.
All options from :ref:`Binary Sensor <config-binary_sensor>`.
See Also
--------
- :doc:`Haier Climate </components/climate/haier>`
- :ghedit:`Edit`

View File

@ -34,7 +34,6 @@ Configuration variables:
- **entity_id** (**Required**, string): The entity ID to import from Home Assistant.
- **attribute** (*Optional*, string): The name of the state attribute to import from the
specified entity. The entity state is used when this option is omitted.
Requires Home Assistant 2021.6 or newer.
- **id** (*Optional*, :ref:`config-id`): Manually specify the ID used for code generation.
- All other options from :ref:`Binary Sensor <config-binary_sensor>`.

View File

@ -12,12 +12,6 @@ For this sensor to work, a :doc:`/components/sensor/hydreon_rgxx` must be set up
.. code-block:: yaml
# Example RG-9 entry
uart:
rx_pin: GPIO16
tx_pin: GPIO17
baud_rate: 9600
sensor:
- platform: hydreon_rgxx
model: "RG_9"

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

View File

@ -35,7 +35,7 @@ Configuration variables:
you want the binary sensor to use that name, you can set ``name: None``.
- **device_class** (*Optional*, string): The device class for the
sensor. See https://developers.home-assistant.io/docs/core/entity/binary-sensor/#available-device-classes
sensor. See https://www.home-assistant.io/integrations/binary_sensor/#device-class
for a list of available options.
- **icon** (*Optional*, icon): Manually set the icon to use for the binary sensor in the frontend.
- **filters** (*Optional*, list): A list of filters to apply on the binary sensor values such as
@ -66,12 +66,12 @@ Advanced options:
a ``name`` will implicitly set this to true.
- **disabled_by_default** (*Optional*, boolean): If true, then this entity should not be added to any client's frontend,
(usually Home Assistant) without the user manually enabling it (via the Home Assistant UI).
Requires Home Assistant 2021.9 or newer. Defaults to ``false``.
Defaults to ``false``.
- **publish_initial_state** (*Optional*, boolean): If true, then the sensor will publish its initial state at boot or when
HA first connects, depending on the platform. This means that any applicable triggers will be run. Defaults to ``false``.
- **entity_category** (*Optional*, string): The category of the entity.
See https://developers.home-assistant.io/docs/core/entity/#generic-properties
for a list of available options. Requires Home Assistant 2021.11 or newer.
for a list of available options.
Set to ``""`` to remove the default entity category.
- If MQTT enabled, all other options from :ref:`MQTT Component <config-mqtt-component>`.
@ -208,6 +208,16 @@ Specify any :ref:`lambda <config-lambda>` for more complex filters. The input va
the binary sensor is ``x`` and you can return ``true`` for ON, ``false`` for OFF, and ``{}`` to stop
the filter chain.
``settle``
**********
(**Required**, time, :ref:`templatable <config-templatable>`): When a signal is received, publish the state
but wait for the received state to remain the same for specified time period before publishing any
additional state changes. This filter complements the ``delayed_on_off`` filter but publishes value changes at
the beginning of the delay period.
When using a lambda call, you should return the delay value in milliseconds.
**Useful for debouncing binary switches**.
Binary Sensor Automation
------------------------

View File

@ -16,26 +16,25 @@ Configuration variables:
- **name** (**Required**, string): The name of the sensor.
- **register_type** (**Required**): type of the modbus register.
- ``coil``: Function 01 (01hex) Read Coils - Reads the ON/OFF status of discrete coils in the device.
- ``discrete_input``: Function 02(02hex) - Reads the ON/OFF status of discrete inputs in the device.
- ``holding``: Function 03 (03hex) Read Holding Registers - Read the binary contents of holding registers in the device.
- ``read``: Function 04 (04hex) Read Input Registers - Read the binary contents of input registers in the device.
- ``coil``: Coils are 1-bit registers (ON/OFF values) that are used to control discrete outputs. Read and Write access. Modbus *Function Code 1 (Read Coil Status)* will be used.
- ``discrete_input``: discrete input register (read only coil) are similar to coils but can only be read. Modbus *Function Code 2 (Read Input Status)* will be used.
- ``holding``: Holding Registers - Holding registers are the most universal 16-bit register. Read and Write access. Modbus *Function Code 3 (Read Holding Registers)* will be used.
- ``read``: Read Input Registers - registers are 16-bit registers used for input, and may only be read. Modbus *Function Code 4 (Read Input Registers)* will be used.
- **address** (**Required**, int): start address of the first register in a range
- **bitmask** (*Optional*, int): Some values are packed in a response. The bitmask is used to determined if the result is true or false
- **skip_updates** (*Optional*, int): By default all sensors of a modbus_controller are updated together. For data points that don't change very frequently updates can be skipped. A value of 5 would only update this sensor range in every 5th update cycle
- **address** (**Required**, int): start address of the first register in a range (can be decimal or hexadecimal).
- **bitmask** (*Optional*, int): sometimes multiple values are packed in a single register's response. The bitmask is used to determined if the result is true or false. See :ref:`bitmasks`.
- **skip_updates** (*Optional*, int): By default all sensors of a modbus_controller are updated together. For data points that don't change very frequently updates can be skipped. A value of 5 would only update this sensor range in every 5th update cycle. Note: The modbus_controller groups components by address ranges to reduce number of transactions. All components with the same starting address will be updated in one request. ``skip_updates`` applies for *all* components in the same range.
- **register_count** (*Optional*, int): The number of consecutive registers this read request should span or skip in a single command. Default is 1. See :ref:`modbus_register_count` for more details.
- **response_size** (*Optional*, int): Size of the response for the register in bytes. Defaults to register_count*2.
- **force_new_range** (*Optional*, boolean): If possible sensors with sequential addresses are grouped together and requested in one range. Setting ``force_new_range: true`` enforces the start of a new range at that address.
- **custom_command** (*Optional*, list of bytes): raw bytes for modbus command. This allows using non-standard commands. If ``custom_command`` is used ``address`` and ``register_type`` can't be used.
custom data must contain all required bytes including the modbus device address. The crc is automatically calculated and appended to the command.
See :ref:`modbus_custom_command` how to use ``custom_command``
Custom data must contain all required bytes including the modbus device address. The CRC is automatically calculated and appended to the command.
See :ref:`modbus_custom_command` how to use ``custom_command``.
- **lambda** (*Optional*, :ref:`lambda <config-lambda>`):
Lambda to be evaluated every update interval to get the new value of the sensor
Parameters
Lambda to be evaluated every update interval to get the new value of the sensor. Parameters:
- **x** (bool): The parsed float value of the modbus data
- **data** (std::vector<uint8_t): vector containing the complete raw modbus response bytes for this sensor
- **data** (std::vector<uint8_t>): vector containing the complete raw modbus response bytes for this sensor
- **item** (const pointer to a ModbusBinarySensor object): The sensor object itself.
Possible return values for the lambda:
@ -43,21 +42,19 @@ Configuration variables:
- ``return true/false;`` the new value for the sensor.
- **offset** (*Optional*, int): not required for most cases
offset from start address in bytes. If more than one register is read a modbus read registers command this value is used to find the start of this datapoint relative to start address. The component calculates the size of the range based on offset and size of the value type
The value for offset depends on the register type. If a binary_sensor is created from an input register the offset is in bytes. For coil and discrete input resisters the LSB of the first data byte contains the coil addressed in the request. The other coils follow toward the high-order end of this byte and from low order to high order in subsequent bytes. For the registers offset is the position of the relevant bit.
To get the value of the coil register 2 can be retrieved using address: 2 / offset: 0 or address: 0 / offset 2
- **offset** (*Optional*, int): Offset from start address in bytes (only required for uncommon response encodings). If more than one register is written in a command, this value is used to find the start of this datapoint relative to the start address. The component calculates the size of the range based on offset and size of the value type. The value for offset depends on the register type. If a binary_sensor is created from an input register, the offset is in bytes. For coil and discrete input resisters, the LSB of the first data byte contains the coil addressed in the request. The other coils follow toward the high-order end of this byte and from low order to high order in subsequent bytes. For registers, the offset is the position of the relevant bit. To get the value of the coil register, 2 can be retrieved using ``address: 2`` / ``offset: 0`` or ``address: 0`` / ``offset 2``.
- All other options from :ref:`Binary Sensor <config-binary_sensor>`.
Example
Example:
--------
.. code-block:: yaml
binary_sensor:
- platform: modbus_controller
modbus_controller_id: epever
id: battery_internal_resistance_abnormal
name: "Battery internal resistance abnormal"
modbus_controller_id: modbus1
name: "Error status"
register_type: read
address: 0x3200
bitmask: 0x80 #(bit 8)
@ -65,11 +62,14 @@ Example
See Also
--------
- :apiclass:`:modbus_controller::ModbusBinarySensor`
- :doc:`/components/modbus`
- :doc:`/components/modbus_controller`
- :doc:`/components/switch/modbus_controller`
- :doc:`/components/output/modbus_controller`
- :doc:`/components/sensor/modbus_controller`
- :doc:`/components/output/modbus_controller`
- :doc:`/components/switch/modbus_controller`
- :doc:`/components/number/modbus_controller`
- :doc:`/components/select/modbus_controller`
- :doc:`/components/text_sensor/modbus_controller`
- https://www.modbustools.com/modbus.html
- :apiclass:`:modbus_controller::ModbusBinarySensor`
- :ghedit:`Edit`

View File

@ -0,0 +1,90 @@
NFC Binary Sensor
=================
.. seo::
:description: Instructions for setting up a NFC binary sensor in ESPHome
:image: nfc.png
:keywords: PN532, PN7150, PN7160, NFC
.. _nfc-platform:
The ``nfc`` binary sensor platform provides an easy way for you to determine if an NFC tag is presented to the reader.
The tag may be identified in one of three ways:
- By given unique ID (``uid``) -- for example ``74-10-37-94``
- By a given NDEF tag "name", or...
- By a given string contained in the tag's NDEF message/data
Note that this platform is currently supported by the :doc:`PN7150 <../pn7150>` and :doc:`PN716x <../pn7160>` only;
one of these components must be present in your device's configuration in order to use it.
.. code-block:: yaml
# Example configuration entries
binary_sensor:
- platform: nfc
ndef_contains: pulse
name: "NFC 1 Tag"
- platform: nfc
tag_id: pulsed
name: "NFC 2 Tag"
- platform: nfc
uid: 74-10-37-94
name: "MFC Tag"
Configuration variables:
------------------------
- **ndef_contains** (*Optional*, string): A (sub)string that must appear in the tag's NDEF message. May not be used
with ``tag_id`` and/or ``uid`` (below).
- **tag_id** (*Optional*, string): A string that identifies the tag; in effect, its name. Specifically, this looks
for the Home Assistant URI encoded into one of the tag's NDEF records and then looks for this specific string. May
not be used with ``ndef_contains`` and/or ``uid``.
- **uid** (*Optional*, string): The unique ID of the NFC tag. This is a hyphen-separated list of hexadecimal values.
For example: ``74-10-37-94``. May not be used with ``ndef_contains`` and/or ``tag_id`` (above).
- All other options from :ref:`Binary Sensor <config-binary_sensor>`.
.. _nfc-setting_up_tags:
Setting Up Tags
---------------
To set up a binary sensor for a given NFC tag, you must first know either its unique ID (``uid``), tag ID (if it was
prepared using the Home Assistant Companion app) or (part of) a string that is contained within its NDEF message.
To obtain a tag's UID:
- Set up a simple NFC component (such as the :doc:`PN532 <pn532>`, :doc:`PN7150 <../pn7150>` or :doc:`PN716x <../pn7160>`)
configuration without any binary sensors.
- Approach the NFC reader with an NFC tag. When the tag is sufficiently close to the reader, you'll see a message in the
ESPHome device's logs similar to this:
.. code::
Read tag type Mifare Classic with UID 1C-E5-E7-A6
- Either:
- Copy this ID and use it to create a ``binary_sensor`` entry as shown in the configuration example above, or...
- Use the tag ID (as determined when it was prepared with the Home Assistant Companion app) to define the ``tag_id``
parameter for the ``binary_sensor`` as shown above, or...
- Choose a substring contained within the tag's NDEF message and use this to define the ``ndef_contains`` parameter
as shown in the example above. If present, the tag's NDEF records will appear in the log on the lines just below
the message shown above.
Repeat this process for each tag.
Note that, since *you* are able to define the NDEF message, this approach is more flexible and even allows multiple
cards/tags to share the same message.
See Also
--------
- :doc:`index`
- :doc:`pn532`
- :doc:`../pn7150`
- :doc:`../pn7160`
- :apiref:`pn532/pn532.h`
- :apiref:`pn7150/pn7150.h`
- :apiref:`pn7160/pn7160.h`
- :ghedit:`Edit`

View File

@ -42,7 +42,7 @@ you can then create individual binary sensors that track if an NFC/RFID tag is c
spi:
rc522_spi:
cs_pin: GPIO15
cs_pin: GPIOXX
binary_sensor:
- platform: rc522

View File

@ -38,11 +38,13 @@ to discover available client devices.
ble_client:
- mac_address: FF:FF:20:00:0F:15
id: itag_black
auto_connect: true
Configuration variables:
------------------------
- **mac_address** (**Required**, MAC Address): The MAC address of the BLE device to connect to.
- **auto_connect** (*Optional*, boolean): If true the device will be automatically connected when found by the :doc:`/components/esp32_ble_tracker`. Defaults to true.
- **id** (**Required**, :ref:`config-id`): The ID to use for code generation, and for reference by dependent components.
Automations:
@ -153,6 +155,57 @@ This automation is triggered when a numeric comparison is requested by the BLE d
id: ble_itag
accept: True
.. _ble_client-connect_action:
``ble_client.connect`` Action
-----------------------------
This action is useful only for devices with ``auto_connect: false`` and allows a connection to be made from
within an automation. Once connected other actions like ``ble_write`` can be used. This is useful where
a BLE server needs only to be interacted with occasionally, and thus does not need a constant
connection held.
The following example updates the time of a Xiaomi MHO-C303 clock once per hour. Note that the BLE tracker must
be stopped during the connect attempt, and restarted afterwards. This would not be necessary if the tracker had
``continuous: false`` set. In this example scenario there is another BLE device that does require the scanner to be
on, hence the stop and start of the scan during connect.
.. code-block:: yaml
ble_client:
- id: ble_clock
mac_address: 17:75:BC:F2:94:4D
auto_connect: false
- id: other_device
mac_address: 0D:33:12:66:00:D4
interval:
- interval: 60min
then:
- esp32_ble_tracker.stop_scan:
- ble_client.connect: ble_clock
- ble_client.ble_write:
id: ble_clock
service_uuid: EBE0CCB0-7A0A-4B0C-8A1A-6FF2997DA3A6
characteristic_uuid: EBE0CCB7-7A0A-4B0C-8A1A-6FF2997DA3A6
value: !lambda |-
uint32_t t = id(sntp_time).now().timestamp + ESPTime::timezone_offset();
return {(uint8_t)t, (uint8_t)(t >> 8), (uint8_t)(t >> 16), (uint8_t)(t >> 24), 0};
- ble_client.disconnect: ble_clock
- esp32_ble_tracker.start_scan:
Any actions after the ``connect`` action will proceed only after the connect succeeds. If the connect
fails the subsequent actions in the automation block will *not* be executed. This should be considered
if scanning has been stopped - another mechanism may be required to restart it.
.. _ble_client-disconnect_action:
``ble_client.disconnect`` Action
--------------------------------
This action disconnects a device that was connected with the ``ble_client.connect`` action.
Execution of the automation block sequence resumes after the disconnect has completed.
.. _ble_client-ble_write_action:
``ble_client.ble_write`` Action
@ -161,6 +214,8 @@ This automation is triggered when a numeric comparison is requested by the BLE d
This action triggers a write to a specified BLE characteristic. The write is attempted in
a best-effort fashion and will only succeed if the ``ble_client``'s connection has been
established and the peripheral exposes the expected BLE service and characteristic.
Execution of the automation block sequence resumes after the write has completed. A write failure will *not*
stop execution of succeeding actions (this allows a disconnect to be executed, for example.)
Example usage:

View File

@ -11,7 +11,7 @@ Integration in Home Assistant which automatically aggregates all ESPHome Bluetoo
Adapters you might have. This exceptional feature offers fault tolerant connection between the Bluetooth devices
and Home Assistant.
Note that while ths component is named ``bluetooth_proxy``, only BLE devices (and their Home Assistant integrations)
Note that while this component is named ``bluetooth_proxy``, only BLE devices (and their Home Assistant integrations)
are supported.
If you're looking to create an ESPHome node that is just a Bluetooth Proxy, see
@ -32,7 +32,7 @@ our `Bluetooth Proxy installer <https://esphome.github.io/bluetooth-proxies/>`__
The :doc:`web_server` component should be disabled as the device is likely
to run out of memory and will malfunction when both components are enabled simultaneously.
Not all devices are supported and ESPHome does not decode or keep a list. To find out if your device is supported,
please search for it in the `Home Assistant Integrations <https://www.home-assistant.io/integrations/>`__ list.
@ -43,15 +43,11 @@ Configuration:
bluetooth_proxy:
- **active** (*Optional*, boolean): Enables proxying active connections. Defaults to ``false``. Requires Home Assistant 2022.10 or later.
- **active** (*Optional*, boolean): Enables proxying active connections. Defaults to ``false``.
- **cache_services** (*Optional*, boolean): Enables caching GATT services in NVS flash storage which significantly speeds up active connections. Defaults to ``true`` when using the ESP-IDF framework.
The Bluetooth proxy depends on :doc:`esp32_ble_tracker` so make sure to add that to your configuration.
.. note::
Bluetooth proxy requires Home Assistant 2022.9 or later. ESPHome 2022.12.0 and Home Assistant 2022.12.6 or later is recommended.
Improving reception performance
-------------------------------

View File

@ -57,7 +57,7 @@ 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.
- **device_class** (*Optional*, string): The device class for the button.
See https://developers.home-assistant.io/docs/core/entity/button/#available-device-classes
See https://www.home-assistant.io/integrations/button/#device-class
for a list of available options.
Automations:

View File

@ -17,7 +17,7 @@ momentarily set a GPIO pin using a button.
# Example configuration entry
output:
- platform: gpio
pin: 25
pin: GPIOXX
id: output1
button:

View File

@ -11,10 +11,6 @@ The ``uart`` button platform allows you to send a pre-defined sequence of bytes
.. code-block:: yaml
# Example configuration entry
uart:
baud_rate: 9600
tx_pin: D0
button:
- platform: uart
name: "UART String Output"

View File

@ -69,7 +69,7 @@ Configuration variables:
- ``12K5BPS`` - Support by ``esp32_can`` depends on ESP32 variant
- ``16KBPS`` - Support by ``esp32_can`` depends on ESP32 variant
- ``20KBPS`` - Support by ``esp32_can`` depends on ESP32 variant
- ``25KBPS``
- ``25KBPS``
- ``31K25BPS`` - Not supported by ``esp32_can``
- ``33KBPS`` - Not supported by ``esp32_can``
- ``40KBPS`` - Not supported by ``esp32_can``
@ -197,8 +197,8 @@ You only need to specify the RX and TX pins. Any GPIO will work.
# Example configuration entry
canbus:
- platform: esp32_can
tx_pin: GPIO5
rx_pin: GPIO4
tx_pin: GPIOXX
rx_pin: GPIOXX
can_id: 4
bit_rate: 50kbps
on_frame:
@ -209,28 +209,28 @@ You only need to specify the RX and TX pins. Any GPIO will work.
The table lists the specific bit rates supported by the component for ESP32 variants:
=================== ======= ========== ========== ========== ========== ==========
bit_rate ESP32 ESP32-S2 ESP32-S3 ESP32-C3 ESP32-C6 ESP32-H2
bit_rate ESP32 ESP32-S2 ESP32-S3 ESP32-C3 ESP32-C6 ESP32-H2
=================== ======= ========== ========== ========== ========== ==========
1KBPS x x x x x
5KBPS x x x x x
10KBPS x x x x x
12K5BPS x x x x x
16KBPS x x x x x
20KBPS x x x x x
25KBPS x x x x x x
31K25BPS
33KBPS
40KBPS
50KBPS x x x x x x
80KBPS
83K38BPS
95KBPS
100KBPS x x x x x x
125KBPS (Default) x x x x x x
250KBPS x x x x x x
500KBPS x x x x x x
800KBPS x x x x x x
1000KBPS x x x x x x
1KBPS x x x x x
5KBPS x x x x x
10KBPS x x x x x
12K5BPS x x x x x
16KBPS x x x x x
20KBPS x x x x x
25KBPS x x x x x x
31K25BPS
33KBPS
40KBPS
50KBPS x x x x x x
80KBPS
83K38BPS
95KBPS
100KBPS x x x x x x
125KBPS (Default) x x x x x x
250KBPS x x x x x x
500KBPS x x x x x x
800KBPS x x x x x x
1000KBPS x x x x x x
=================== ======= ========== ========== ========== ========== ==========
@ -273,7 +273,7 @@ For wiring up the MSP2515 please refer to the section below.
# Example configuration entry
canbus:
- platform: mcp2515
cs_pin: D5
cs_pin: GPIOXX
can_id: 4
bit_rate: 50kbps
on_frame:
@ -359,7 +359,7 @@ Standard IDs and Extended IDs can coexist on the same segment.
- platform: mcp2515
id: my_mcp2515
spi_id: McpSpi
cs_pin: GPIO14
cs_pin: GPIOXX
can_id: 0x1fff
use_extended_id: true
bit_rate: 125kbps
@ -385,9 +385,9 @@ Button is connected on a can node which sends an A message on ID 0x100 with payl
spi:
id: McpSpi
clk_pin: GPIO16
mosi_pin: GPIO5
miso_pin: GPIO4
clk_pin: GPIOXX
mosi_pin: GPIOXX
miso_pin: GPIOXX
binary_sensor:
- platform: template
@ -398,7 +398,7 @@ Button is connected on a can node which sends an A message on ID 0x100 with payl
- platform: mcp2515
id: my_mcp2515
spi_id: McpSpi
cs_pin: GPIO14
cs_pin: GPIOXX
can_id: 4
bit_rate: 125kbps
on_frame:
@ -430,15 +430,15 @@ Buttons are connected on the CAN-Node and also the motor is connected via CAN.
spi:
id: McpSpi
clk_pin: GPIO16
mosi_pin: GPIO5
miso_pin: GPIO4
clk_pin: GPIOXX
mosi_pin: GPIOXX
miso_pin: GPIOXX
canbus:
- platform: mcp2515
id: my_mcp2515
spi_id: McpSpi
cs_pin: GPIO14
cs_pin: GPIOXX
can_id: 4
bit_rate: 125kbps
on_frame:

View File

@ -10,8 +10,7 @@ The ``bang_bang`` climate platform allows you to regulate a value with a
.. note::
A number of people have asked about the behavior of the bang-bang controller. In version 1.15, a
:doc:`thermostat <thermostat>` component was added which behaves more like a common thermostat; it is
The :doc:`thermostat <thermostat>` component behaves more like a common thermostat; it is
essentially two bang-bang controllers in one. Please see the `Bang-bang vs. Thermostat`_ section below
if you are not sure which is appropriate for your application.
@ -70,6 +69,8 @@ Configuration variables:
------------------------
- **sensor** (**Required**, :ref:`config-id`): The sensor that is used to measure the current temperature.
- **humidity_sensor** (**Optional**, :ref:`config-id`): If specified, this sensor is used to measure the current humidity.
This is used for information only and does not influence temperature control.
- **default_target_temperature_low** (**Required**, float): The default low target temperature for
the control algorithm. This can be dynamically set in the frontend later.
- **default_target_temperature_high** (**Required**, float): The default high target temperature for

View File

@ -27,10 +27,14 @@ submit a feature request (see FAQ).
+---------------------------------------+---------------------+----------------------+
| Daikin | ``daikin`` | yes |
+---------------------------------------+---------------------+----------------------+
| :ref:`Daikin ARC<daikin_arc>` | ``daikin_arc`` | yes |
+---------------------------------------+---------------------+----------------------+
| :ref:`Daikin BRC<daikin_brc>` | ``daikin_brc`` | yes |
+---------------------------------------+---------------------+----------------------+
| :ref:`Delonghi<delonghi_ir>` | ``delonghi`` | yes |
+---------------------------------------+---------------------+----------------------+
| Emmeti | ``emmeti`` | yes |
+---------------------------------------+---------------------+----------------------+
| Fujitsu General | ``fujitsu_general`` | yes |
+---------------------------------------+---------------------+----------------------+
| :ref:`GREE<gree_ir>` | ``gree`` | |
@ -42,7 +46,7 @@ submit a feature request (see FAQ).
+---------------------------------------+---------------------+----------------------+
| Midea | ``midea_ir`` | yes |
+---------------------------------------+---------------------+----------------------+
| Mitsubishi | ``mitsubishi`` | |
| :ref:`Mitsubishi<mitsubishi>` | ``mitsubishi`` | yes |
+---------------------------------------+---------------------+----------------------+
| Noblex | ``noblex`` | yes |
+---------------------------------------+---------------------+----------------------+
@ -72,7 +76,7 @@ controller unit.
# Example configuration entry
remote_transmitter:
pin: GPIO32
pin: GPIOXX
carrier_duty_percent: 50%
climate:
@ -152,7 +156,7 @@ IR receiver.
remote_receiver:
id: rcvr
pin:
number: GPIO14
number: GPIOXX
inverted: true
mode:
input: true
@ -220,6 +224,21 @@ Configuration variables:
header_high: 3265us # AC Units from LG in Brazil, for example use these timings
header_low: 9856us
.. _daikin_arc:
``daikin_arc`` Climate
-------------------------
The Daikin ARC remotes are used by the japanese model of Daikin.
.. code-block:: yaml
# Example configuration entry
climate:
- platform: daikin_arc
name: "AC"
sensor: room_temperature
.. _daikin_brc:
``daikin_brc`` Climate
@ -253,6 +272,48 @@ Known working with:
- Delonghi PAC WE 120HP
.. _mitsubishi:
``mitsubishi`` Climate
------------------------
Additonal configurations available for this platform.
Configuration variables:
- **set_fan_mode** (*Optional*, string): Select the fan modes desired or that are supported on your remote. Defaults to ``3levels``
- Options are: ``3levels`` , ``4levels``, ``quiet_4levels``.
- ``3levels``; Low [fan speed 1], Medium [2], High [3]
- ``4levels``; Low [1], Middle [2], Medium [3], High [4]
- ``quiet_4levels``; Low [1], Middle [2], Medium [3], High [4], Quiet [5]
- **supports_dry** (*Optional*, boolean): Enables setting dry mode for this unit. Defaults to ``false``.
- **supports_fan_only** (*Optional*, boolean): Enables setting fan only mode for this unit. Confirm that mode is supported on your remote. Defaults to ``false``.
- **horizontal_default** (*Optional*, string): What to default to when the AC unit's horizontal direction is *not* set to swing. Defaults to ``middle``.
- Options are: ``left``, ``middle-left``, ``middle``, ``middle-right``, ``right``, ``auto``
- **vertical_default** (*Optional*, string): What to default to when the AC unit's vertical direction is *not* set to swing. Defaults to ``middle``.
- Options are: ``down``, ``middle-down``, ``middle``, ``middle-up``, ``up``, ``auto``
.. note::
- This climate IR component is also known to work with some Stiebel Eltron Units. It has been tested with Stiebel Eltron IR-Remote ``KM07F`` and unit ``ACW 25 i``
.. code-block:: yaml
# Example configuration entry
climate:
- platform: mitsubishi
name: "Heatpump"
set_fan_mode: "quiet_4levels"
supports_dry: "true"
supports_fan_only: "true"
horizontal_default: "left"
vertical_default: "down"
.. _toshiba:
@ -284,7 +345,7 @@ Configuration variables:
``update_interval`` must be less than seven minutes or the ``RAC-PT1411HWRU`` will revert to using its own
internal temperature sensor; a value of 30 seconds seems to work well. See :doc:`/components/sensor/index`
for more information.
- This climate IR component is also known to work with Midea model MAP14HS1TBL and may work with other similar
models, as well. (Midea acquired Toshiba's product line and re-branded it.)
@ -362,8 +423,8 @@ Configuration variables:
``zhlt01`` Climate
---------------------
ZH/LT-01 is a remote control that is used with many locally branded split airconditioners.
Supported brands include:
ZH/LT-01 is a remote control that is used with many locally branded split airconditioners.
Supported brands include:
- Eurom
- Chigo

View File

@ -1,21 +1,27 @@
Custom Climate
==============
.. seo::
:description: Instructions for setting up Custom C++ climate components with ESPHome.
:image: language-cpp.svg
:keywords: C++, Custom
.. warning::
Custom components are deprecated, not recommended for new configurations
and will be removed from ESPHome in a future release.
Please look at creating a real ESPHome component and "importing" it into your
configuration with :doc:`/components/external_components`.
Custom components are deprecated, not recommended for new configurations and will be removed from ESPHome in a
future release. Please look at creating a real ESPHome component and "importing" it into your configuration with
:doc:`/components/external_components`.
You can find some basic documentation on creating your own components
at :ref:`contributing_to_esphome`.
You can find some basic documentation on creating your own components at :ref:`contributing_to_esphome`.
This integration can be used to create custom climate devices in ESPHome
using the C++ (Arduino) API.
.. warning::
Please first read :doc:`/components/sensor/custom` guide,
the same principles apply here.
While we try to keep the ESPHome YAML configuration options as stable as possible, the ESPHome API is less
stable. If something in the APIs needs to be changed in order for something else to work, we will do so.
This component can be used to create custom climate devices in ESPHome using the C++ (Arduino) API.
Please first read :doc:`/components/sensor/custom` guide, the same principles apply here.
The example below is an example of a custom climate device - all climate devices must override
two methods (:apiclass:`Climate <climate::Climate>`):

View File

@ -2,14 +2,14 @@ Haier Climate
=============
.. seo::
:description: Instructions for setting up a Haier climate devices.
:description: Instructions for setting up Haier climate devices.
:image: air-conditioner.svg
This is an implementation of the ESPHome component to control HVAC on the base of the SmartAir2 and hOn Haier protocols (AC that is controlled by the hOn or SmartAir2 application).
There are two versions of the Haier protocol. The older one is using an application called SmartAir2 and the newer one - an application called hOn. Both protocols are compatible on the transport level but have different commands to control appliances.
There are two versions of the Haier protocol: the older version uses an application called SmartAir2 while the newer version uses an application called hOn. Both protocols are compatible on the transport level but utilize different commands to control appliances.
Older Haier models controlled by the SmartAir2 application are using the KZW-W002 module. This module cant be reused, and you need to replace it with an ESP (RPI pico w) module. The USB connector on a board doesnt support the USB protocol. It is a UART port that just uses a USB connector. To connect the ESP board to your AC you can cut a USB type A cable and connect wires to the climate connector.
Older Haier models controlled by the SmartAir2 application are using the KZW-W002 module. This module cant be reused, and you need to replace it with an ESP or RPI Pico W module. The USB connector on the board doesnt support the USB protocol. It is a UART port that just uses a USB connector. To connect the ESP board to your AC you can cut a USB type A cable and connect wires to the climate connector.
.. list-table:: Haier UART pinout
:header-rows: 1
@ -43,7 +43,7 @@ Older Haier models controlled by the SmartAir2 application are using the KZW-W00
Newer Haier models using a module called ESP32-for-Haier. It is an ESP32 single-core board with an ESP32-S0WD chip. In some cases, you can reuse this module and flash it with ESPHome, but some new modules dont support this. They look the same but have encryption enabled.
**Warning!** The new generation of ESP32-Haier devices has encryption enabled, so they can only be flashed with firmware that is signed with a private key. There is no way to make them work with ESPHome, so if you try to do it, the board will get into a boot loop with error ``rst:0x10 (RTCWDT_RTC_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT)`` The only way to recover this board is to flash it with the original image. So before starting your experiments make a backup image.
**Warning!** The new generation of ESP32-Haier devices has encryption enabled, so they can only be flashed with firmware that is signed with a private key. There is no way to make them work with ESPHome, so if you try to do it, the board will get into a boot loop with the error ``rst:0x10 (RTCWDT_RTC_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT)`` The only way to recover this board is to flash it with the original image. So before starting your experiments make a backup image.
.. figure:: images/haier_pinout.jpg
:align: center
@ -51,31 +51,22 @@ Newer Haier models using a module called ESP32-for-Haier. It is an ESP32 single-
ESP32-for-Haier UART0 pinout
Also, you can use any other ESP32, ESP8266 or a RPI pico W board. In this case, you will need to cut the original wire or make a connector yourself (the board has a JST SM04B-GHS-TB connector)
Also, you can use any other ESP32, ESP8266, or an RPI pico W board. In this case, you will need to cut the original wire or make a connector yourself (the board has a JST SM04B-GHS-TB connector)
This component requires a :ref:`uart` to be setup.
.. code-block:: yaml
# Example configuration entry
uart:
baud_rate: 9600
tx_pin: 17
rx_pin: 16
id: ac_port
climate:
- platform: haier
id: haier_ac
protocol: hOn
name: Haier AC
name: Haier AC
uart_id: ac_port
wifi_signal: true
beeper: true
display: true
outdoor_temperature:
name: Haier AC outdoor temperature
visual:
min_temperature: 16 °C
max_temperature: 30 °C
@ -92,10 +83,23 @@ This component requires a :ref:`uart` to be setup.
- VERTICAL
- HORIZONTAL
- BOTH
supported_presets:
- ECO
- BOOST
- SLEEP
supported_presets:
- AWAY
- ECO
- BOOST
- SLEEP
on_alarm_start:
then:
- logger.log:
level: WARN
format: "Alarm activated. Code: %d. Message: \"%s\""
args: [ code, message]
on_alarm_end:
then:
- logger.log:
level: INFO
format: "Alarm deactivated. Code: %d. Message: \"%s\""
args: [ code, message]
Configuration variables:
@ -103,27 +107,63 @@ Configuration variables:
- **id** (*Optional*, :ref:`config-id`): Manually specify the ID used for code generation.
- **uart_id** (*Optional*, :ref:`config-id`): ID of the UART port to communicate with AC.
- **protocol** (*Optional*, string): Defines protocol of communication with AC. Possible values: hon or smartair2. Default value is smartair2.
- **protocol** (*Optional*, string): Defines communication protocol with AC. Possible values: hon or smartair2. The default value is smartair2.
- **name** (**Required**, string): The name of the climate device.
- **wifi_signal** (*Optional*, boolean): If true - send wifi signal level to AC.
- **answer_timeout** (*Optional*, :ref:`config-time`): Responce timeout. Default value is 150ms.
- **display** (*Optional*, boolean): Can be used to set AC display off.
- **answer_timeout** (*Optional*, :ref:`config-time`): Responce timeout. The default value is 200ms.
- **alternative_swing_control** (*Optional*, boolean): (supported by smartAir2 only) If true - use alternative values to control swing mode. Use only if the original control method is not working for your AC.
- **control_packet_size** (*Optional*, int): (supported only by hOn) Define the size of the control packet. Can help with some newer models of ACs that use bigger packets. The default value: 10.
- **control_method** (*Optional*, list): (supported only by hOn) Defines control method (should be supported by AC). Supported values: MONITOR_ONLY - no control, just monitor status, SET_GROUP_PARAMETERS - set all AC parameters with one command (default method), SET_SINGLE_PARAMETER - set each parameter individually (this method is supported by some new ceiling ACs like AD71S2SM3FA)
- **display** (*Optional*, boolean): Can be used to set the AC display off.
- **beeper** (*Optional*, boolean): Can be used to disable beeping on commands from AC. Supported only by hOn protocol.
- **outdoor_temperature** (*Optional*): Temperature sensor for outdoor temperature. Supported only by hOn protocol.
- **name** (**Required**, string): The name of the sensor.
- **id** (*Optional*, :ref:`config-id`): ID of the sensor, can be used for code generation
- All other options from :ref:`Sensor <config-sensor>`.
- **supported_modes** (*Optional*, list): Can be used to disable some of AC modes. Possible values: 'OFF', HEAT_COOL, COOL, HEAT, DRY, FAN_ONLY
- **supported_swing_modes** (*Optional*, list): Can be used to disable some swing modes if your AC does not support it. Possible values: 'OFF', VERTICAL, HORIZONTAL, BOTH
- **supported_presets** (*Optional*, list): Can be used to disable some presets. Possible values for smartair2 are: BOOST, COMFORT. Possible values for hOn are: ECO, BOOST, SLEEP
- **supported_presets** (*Optional*, list): Can be used to disable some presets. Possible values for smartair2 are: AWAY, BOOST, COMFORT. Possible values for hOn are: AWAY, ECO, BOOST, SLEEP. AWAY preset can be enabled only in HEAT mode, it is disabled by default
- **on_alarm_start** (*Optional*, :ref:`Automation <automation>`): (supported only by hOn) Automation to perform when AC activates a new alarm. See :ref:`haier-on_alarm_start`
- **on_alarm_end** (*Optional*, :ref:`Automation <automation>`): (supported only by hOn) Automation to perform when AC deactivates a new alarm. See :ref:`haier-on_alarm_end`
- All other options from :ref:`Climate <config-climate>`.
Automations
-----------
climate.haier.power_on Action
*****************************
.. _haier-on_alarm_start:
``on_alarm_start`` Trigger
**************************
This automation will be triggered when a new alarm is activated by AC. The error code of the alarm will be given in the variable "code" (type uint8_t), error message in the variable "message" (type char*). Those variables can be used in :ref:`lambdas <config-lambda>`
.. code-block:: yaml
climate:
- protocol: hOn
on_alarm_start:
then:
- logger.log:
level: WARN
format: "Alarm activated. Code: %d. Message: \"%s\""
args: [ code, message]
.. _haier-on_alarm_end:
``on_alarm_end`` Trigger
************************
This automation will be triggered when a previously activated alarm is deactivated by AC. The error code of the alarm will be given in the variable "code" (type uint8_t), error message in the variable "message" (type char*). Those variables can be used in :ref:`lambdas <config-lambda>`
.. code-block:: yaml
climate:
- protocol: hOn
on_alarm_end:
then:
- logger.log:
level: INFO
format: "Alarm deactivated. Code: %d. Message: \"%s\""
args: [ code, message]
``climate.haier.power_on`` Action
*********************************
This action turns AC power on.
@ -133,8 +173,8 @@ This action turns AC power on.
then:
climate.haier.power_on: device_id
climate.haier.power_off Action
******************************
``climate.haier.power_off`` Action
**********************************
This action turns AC power off
@ -144,8 +184,8 @@ This action turns AC power off
then:
climate.haier.power_off: device_id
climate.haier.power_toggle Action
*********************************
``climate.haier.power_toggle`` Action
*************************************
This action toggles AC power
@ -155,8 +195,8 @@ This action toggles AC power
then:
climate.haier.power_toggle: device_id
climate.haier.display_on Action
*******************************
``climate.haier.display_on`` Action
***********************************
This action turns the AC display on
@ -166,8 +206,8 @@ This action turns the AC display on
then:
climate.haier.display_on: device_id
climate.haier.display_off Action
********************************
``climate.haier.display_off`` Action
************************************
This action turns the AC display off
@ -177,8 +217,8 @@ This action turns the AC display off
then:
climate.haier.display_off: device_id
climate.haier.health_on Action
******************************
``climate.haier.health_on`` Action
**********************************
Turn on health mode (`UV light sterilization <https://www.haierhvac.eu/en/node/1809>`__)
@ -188,8 +228,8 @@ Turn on health mode (`UV light sterilization <https://www.haierhvac.eu/en/node/1
then:
climate.haier.health_on: device_id
climate.haier.health_off Action
*******************************
``climate.haier.health_off`` Action
***********************************
Turn off health mode
@ -199,8 +239,8 @@ Turn off health mode
then:
climate.haier.health_off: device_id
climate.haier.beeper_on Action
******************************
``climate.haier.beeper_on`` Action
**********************************
(supported only by hOn) This action enables beep feedback on every command sent to AC
@ -210,8 +250,8 @@ climate.haier.beeper_on Action
then:
climate.haier.beeper_on: device_id
climate.haier.beeper_off Action
*******************************
``climate.haier.beeper_off`` Action
***********************************
(supported only by hOn) This action disables beep feedback on every command sent to AC (keep in mind that this will not work for IR remote commands)
@ -221,8 +261,8 @@ climate.haier.beeper_off Action
then:
climate.haier.beeper_off: device_id
climate.haier.set_vertical_airflow Action
*****************************************
``climate.haier.set_vertical_airflow`` Action
*********************************************
(supported only by hOn) Set direction for vertical airflow if the vertical swing is disabled. Possible values: Health_Up, Max_Up, Up, Center, Down, Health_Down.
@ -234,8 +274,8 @@ climate.haier.set_vertical_airflow Action
id: device_id
vertical_airflow: Up
climate.haier.set_horizontal_airflow Action
*******************************************
``climate.haier.set_horizontal_airflow`` Action
***********************************************
(supported only by hOn) Set direction for horizontal airflow if the horizontal swing is disabled. Possible values: Max_Left, Left, Center, Right, Max_Right.
@ -247,8 +287,8 @@ climate.haier.set_horizontal_airflow Action
id: device_id
vertical_airflow: Right
climate.haier.start_self_cleaning Action
****************************************
``climate.haier.start_self_cleaning`` Action
********************************************
(supported only by hOn) Start `self-cleaning <https://www.haier.com/in/blogs/beat-the-summer-heat-with-haier-self-cleaning-ac.shtml>`__
@ -258,8 +298,8 @@ climate.haier.start_self_cleaning Action
then:
- climate.haier.start_self_cleaning: device_id
climate.haier.start_steri_cleaning Action
*****************************************
``climate.haier.start_steri_cleaning`` Action
*********************************************
(supported only by hOn) Start 56°C steri-cleaning
@ -273,6 +313,8 @@ See Also
--------
- `haier-esphome <https://github.com/paveldn/haier-esphome>`__
- :doc:`Haier Climate Sensors </components/sensor/haier>`
- :doc:`Haier Climate Binary Sensors </components/binary_sensor/haier>`
- :doc:`/components/climate/index`
- :apiref:`haier/climate/haier.h`
- :ghedit:`Edit`

View File

@ -15,6 +15,10 @@ and can be put in different modes like ``HEAT``, ``COOL``, ``HEAT_COOL`` or ``OF
Climate Device UI in Home Assistant.
.. note::
Not all climate components support all possible features. Check the corresponding documentation page for details on what is supported.
.. _config-climate:
Base Climate Configuration
@ -30,6 +34,15 @@ All climate platforms in ESPHome inherit from the climate configuration schema.
min_temperature: 18
max_temperature: 25
temperature_step: 0.1
min_humidity: 30%
max_humidity: 99%
- platform: ...
visual:
min_temperature: 18
max_temperature: 25
temperature_step:
target_temperature: 0.5
current_temperature: 0.1
Configuration variables:
@ -55,6 +68,11 @@ Configuration variables:
- **target_temperature** (**Required**, float): The granularity for target temperature
- **current_temperature** (**Required**, float): The granularity for current temperature
- **min_humidity** (*Optional*, percentage): The minimum humidity the climate device can reach.
Used to set the range of the frontend gauge.
- **max_humidity** (*Optional*, percentage): The maximum humidity the climate device can reach.
Used to set the range of the frontend gauge.
Advanced options:
- **internal** (*Optional*, boolean): Mark this component as internal. Internal components will
@ -62,10 +80,10 @@ Advanced options:
a ``name`` will implicitly set this to true.
- **disabled_by_default** (*Optional*, boolean): If true, then this entity should not be added to any client's frontend,
(usually Home Assistant) without the user manually enabling it (via the Home Assistant UI).
Requires Home Assistant 2021.9 or newer. Defaults to ``false``.
Defaults to ``false``.
- **entity_category** (*Optional*, string): The category of the entity.
See https://developers.home-assistant.io/docs/core/entity/#generic-properties
for a list of available options. Requires Home Assistant 2021.11 or newer.
for a list of available options.
Set to ``""`` to remove the default entity category.
MQTT options:
@ -74,6 +92,8 @@ MQTT options:
climate device action changes to.
- **current_temperature_state_topic** (*Optional*, string): The topic to publish
current temperature changes to.
- **current_humidity_state_topic** (*Optional*, string): The topic to publish
current humidity changes to.
- **fan_mode_state_topic** (*Optional*, string): The topic to publish
fan mode changes to.
- **fan_mode_command_topic** (*Optional*, string): The topic to receive
@ -102,19 +122,12 @@ MQTT options:
lower target temperature changes to.
- **target_temperature_low_command_topic** (*Optional*, string): The topic to receive
lower target temperature commands on.
- **target_humidity_state_topic** (*Optional*, string): The topic to publish
target humidity changes to.
- **target_humidity_command_topic** (*Optional*, string): The topic to receive
target humidity commands on.
- All other options from :ref:`MQTT Component <config-mqtt-component>`.
.. code-block:: yaml
climate:
- platform: ...
visual:
min_temperature: 18
max_temperature: 25
temperature_step:
target_temperature: 0.5
current_temperature: 0.1
Climate Automation
------------------
@ -152,6 +165,8 @@ Configuration variables:
lower target temperature of a climate device with a two-point target temperature.
- **target_temperature_high** (*Optional*, float, :ref:`templatable <config-templatable>`): Set the
higher target temperature of a climate device with a two-point target temperature.
- **target_humidity** (*Optional*, float, :ref:`templatable <config-templatable>`): Set the
target humidity of a climate device.
- **preset** (*Optional*, string, :ref:`templatable <config-templatable>`): Set the preset
of the climate device. One of ``ECO``, ``AWAY``, ``BOOST``, ``COMFORT``, ``HOME``, ``SLEEP``,
``ACTIVITY``.
@ -181,12 +196,16 @@ advanced stuff.
id(my_climate).mode
// Current temperature, type: float (degrees)
id(my_climate).current_temperature
// Current humidity, type: float (percentage)
id(my_climate).current_humidity
// Target temperature, type: float (degrees)
id(my_climate).target_temperature
// Lower Target temperature, type: float (degrees)
id(my_climate).target_temperature_low
// High Target temperature, type: float (degrees)
id(my_climate).target_temperature_high
// Target humidity, type: float (percentage)
id(my_climate).target_humidity
// Fan mode, type: FanMode (enum)
id(my_climate).fan_mode
// Custom Fan mode, type: string

View File

@ -25,17 +25,6 @@ The ``midea`` component creates a Midea air conditioner climate device.
.. code-block:: yaml
# Example configuration entry
# Disable logging over UART (required)
logger:
baud_rate: 0
# UART settings for Midea dongle (required)
uart:
tx_pin: 1 # hardware dependant
rx_pin: 3 # hardware dependant
baud_rate: 9600
# Main settings
climate:
- platform: midea

View File

@ -53,6 +53,8 @@ Configuration variables:
- **sensor** (**Required**, :ref:`config-id`): The sensor that is used to measure the current
temperature.
- **humidity_sensor** (**Optional**, :ref:`config-id`): If specified, this sensor is used to measure the current humidity.
This is used for information only and does not influence temperature control.
- **default_target_temperature** (**Required**, float): The default target temperature (setpoint)
for the control algorithm. This can be dynamically set in the frontend later.
- **heat_output** (*Optional*, :ref:`config-id`): The ID of a :ref:`float output <config-output>`

View File

@ -168,6 +168,8 @@ Configuration Variables:
The thermostat controller uses the sensor to determine whether it should heat or cool.
- **sensor** (**Required**, :ref:`config-id`): The sensor that is used to measure the current temperature.
- **humidity_sensor** (**Optional**, :ref:`config-id`): If specified, this sensor is used to measure the current humidity.
This is used for information only and does not influence temperature control.
Heating and Cooling Actions
***************************

View File

@ -39,8 +39,10 @@ Based on this, you can create the climate device as follows:
switch_datapoint: 1
target_temperature_datapoint: 3
current_temperature_datapoint: 4
eco_datapoint: 7
eco_temperature: 20 °C
preset:
eco:
datapoint: 8
temperature: 28
Configuration variables:
------------------------
@ -50,22 +52,46 @@ Configuration variables:
- **supports_heat** (*Optional*, boolean): Specifies if the device has a heating mode. Defaults to ``true``.
- **supports_cool** (*Optional*, boolean): Specifies if the device has a cooling mode. Defaults to ``false``.
- **switch_datapoint** (**Required**, int): The datapoint id number of the climate switch (device on/off).
- **active_state_datapoint** (*Optional*, int): The datapoint id number of the active state - :ref:`see below <active_state_detection>`.
- **active_state_heating_value** (*Optional*, int): The active state datapoint value the device reports when heating. Defaults to ``1`` - :ref:`see below <active_state_detection>`.
- **active_state_cooling_value** (*Optional*, int): The active state datapoint value the device reports when cooling - :ref:`see below <active_state_detection>`.
- **active_state** (*Optional*): Configuration for the Active State Configuration.
- **datapoint** (**Required**, int): The datapoint id number of the active state - :ref:`see below <active_state_detection>`.
- **heating_value** (*Optional*, int): The active state datapoint value the device reports when heating. Defaults to ``1`` - :ref:`see below <active_state_detection>`.
- **cooling_value** (*Optional*, int): The active state datapoint value the device reports when cooling - :ref:`see below <active_state_detection>`.
- **drying_value** (*Optional*, int): The active state datapoint value the device reports when in drying mode.
- **fanonly_value** (*Optional*, int): The active state datapoint value the device reports when in Fan Only mode.
- **preset** (*Optional*): Configuration for presets.
- **eco** (*Optional*): Configuration for Eco preset.
- **datapoint** (**Required**, int): The datapoint id number of the Eco action.
- **temperature** (*Optional*, int): Temperature setpoint for Eco preset.
- **sleep** (*Optional*): Configuration for Sleep preset
- **datapoint** (**Required**, int): The Datapoint id number of the Sleep Action
- **swing_mode** (*Optional*): Configuration for the swing (oscillation) modes.
- **vertical_datapoint** (*Optional*, int): The datapoint id number of the vertical swing action.
- **horizontal_datapoint** (*Optional*, int): The datapoint id number of the horizontal swing action.
- **fan_mode** (*Optional*): Configuration for fan modes/fan speeds.
- **datapoint** (**Required**, int): The datapoint id number of the Fan value state.
- **auto_value** (*Optional*, int): The datapoint value the device reports when the fan is on ``auto`` speed.
- **low_value** (*Optional*, int): The datapoint value the device reports when the fan is on ``low`` speed.
- **medium_value** (*Optional*, int): The datapoint value the device reports when the fan is on ``medium`` speed.
- **middle_value** (*Optional*, int): The datapoint value the device reports when the fan is on ``middle`` speed. (May set to device's ``high`` value if you have a ``Turbo`` option).
- **high_value** (*Optional*, int): The datapoint value the device reports when the fan is on ``high`` speed. (Sometimes called ``Turbo``).
- **heating_state_pin** (*Optional*, :ref:`config-pin`): The input pin indicating that the device is heating - :ref:`see below <active_state_detection>`. Only used if **active_state_datapoint** is not configured.
- **cooling_state_pin** (*Optional*, :ref:`config-pin`): The input pin indicating that the device is cooling - :ref:`see below <active_state_detection>`. Only used if **active_state_datapoint** is not configured.
- **target_temperature_datapoint** (**Required**, int): The datapoint id number of the target temperature.
- **current_temperature_datapoint** (**Required**, int): The datapoint id number of the current temperature.
- **temperature_multiplier** (*Optional*, float): A multiplier to modify the incoming and outgoing temperature values - :ref:`see below <temperature-multiplier>`.
- **eco_datapoint** (*Optional*, int): The datapoint id number of the eco mode state.
- **eco_temperature** (*Optional*, float): The target temperature the controller uses while the eco mode is active.
- **reports_fahrenheit** (*Optional*, boolean): Set to ``true`` if the device reports temperatures in Fahrenheit. ESPHome expects all climate temperatures to be in Celcius, otherwise unexpected conversions will take place when it is published to Home Assistant. Defaults to ``false``.
If the device has different multipliers for current and target temperatures, **temperature_multiplier** can be replaced with both of:
- **current_temperature_multiplier** (*Optional*, float): A multiplier to modify the current temperature value.
- **target_temperature_multiplier** (*Optional*, float): A multiplier to modify the target temperature value.
- **current_temperature_multiplier** (*Optional*, float): A multiplier to modify the current temperature value.
- **target_temperature_multiplier** (*Optional*, float): A multiplier to modify the target temperature value.
- All other options from :ref:`Climate <config-climate>`.

View File

@ -1,11 +1,11 @@
Copy Integration
================
Copy Component
==============
.. seo::
:description: Instructions for setting up the copy integration in ESPHome
:description: Instructions for setting up the copy component in ESPHome
:image: content-copy.svg
The ``copy`` integration can be used to copy an existing component (like a sensor, switch, etc.)
The ``copy`` component can be used to copy an existing component (like a sensor, switch, etc.)
and create a duplicate mirroring the source's state and forwarding actions such as turning on to the source.
For each of the supported platforms, the configuration consists of the required configuration

View File

@ -1,24 +1,29 @@
Custom Cover
============
.. seo::
:description: Instructions for setting up Custom C++ covers with ESPHome.
:image: language-cpp.svg
:keywords: C++, Custom
.. warning::
Custom components are deprecated, not recommended for new configurations
and will be removed from ESPHome in a future release.
Please look at creating a real ESPHome component and "importing" it into your
configuration with :doc:`/components/external_components`.
Custom components are deprecated, not recommended for new configurations and will be removed from ESPHome in a
future release. Please look at creating a real ESPHome component and "importing" it into your configuration with
:doc:`/components/external_components`.
You can find some basic documentation on creating your own components
at :ref:`contributing_to_esphome`.
You can find some basic documentation on creating your own components at :ref:`contributing_to_esphome`.
This integration can be used to create custom covers in ESPHome
using the C++ (Arduino) API.
.. warning::
Please first read :doc:`/components/sensor/custom` guide,
the same principles apply here.
While we try to keep the ESPHome YAML configuration options as stable as possible, the ESPHome API is less
stable. If something in the APIs needs to be changed in order for something else to work, we will do so.
The example below is an example of a custom cover - all covers must override
two methods:
This component can be used to create custom covers in ESPHome using the C++ (Arduino) API.
Please first read :doc:`/components/sensor/custom` guide, the same principles apply here.
The example below is an example of a custom cover - all covers must override two methods:
- ``get_traits``: This should return a :apiclass:`CoverTraits <cover::CoverTraits>` object
representing the capabilities of the cover.

109
components/cover/he60r.rst Normal file
View File

@ -0,0 +1,109 @@
HE60R Garage Door Opener
========================
.. seo::
:description: Setting up a Chamberlain HomEntry HE60R and similar garage door openers
:image: he60r.jpg
.. figure:: images/he60r.jpg
:align: right
The ``he60r`` cover platform allows you to control a HomEntry HE60R
garage door opener. These units were made by Chamberlain and sold through Bunnings. It is *likely* that this
component will also work with other older Chamberlain garage door openers. It is not currently compatible with
newer Chamberlain units that use the Security+ 2.0 protocol.
This component makes use of the HE60R keypad communication interface. This is a single-wire half duplex serial
connection and requires a :ref:`uart` component to be configured. The uart **must** be set to 1200 baud, EVEN parity. See
below for a sample hardware interface.
.. code-block:: yaml
# Example configuration entry
uart:
- id: door_uart
baud_rate: 1200
parity: even
stop_bits: 1
tx_pin: GPIOXX
rx_pin: GPIOXX
cover:
platform: he60r
id: garage_door
name: Garage Door
Configuration variables:
------------------------
- **open_duration** (*Optional*, :ref:`config-time`): The time required for the door to fully open from the closed position. Default 15s.
- **close_duration** (*Optional*, :ref:`config-time`): The time required for the door to fully close from the open position. Default 15s.
- All other options from :ref:`Cover <config-cover>`.
The open and close duration serve to estimate the position to provide feedback during travel and for partial open/close
requests. These can be adjusted according to your door's actual operation. Enabling DEBUG logging will report the
actual open and close times which will help to refine these timings.
Hardware Connection
-------------------
A sample circuit is shown below which also draws power from the HE60R - note that the 3.3V regulator must
be a switching type, a linear regulator would draw too much current and run hot. You can of course simply power
the ESP32 via USB from 5V. This circuit also includes a manual control button connected to a GPIO.
Any microcontroller board supported by ESPHome should be suitable for this application.
.. figure:: images/he60r-sch.jpg
:target: /_images/he60r-sch.jpg
Note that this circuit inverts the TX line. A configuration for this would look something like:
.. code-block:: yaml
# Example configuration entry
uart:
- id: door_uart
baud_rate: 1200
parity: even
stop_bits: 1
tx_pin:
number: GPIOXX
inverted: true
rx_pin: GPIOXX
cover:
platform: he60r
id: garage_door
name: Garage Door
binary_sensor:
- platform: gpio
pin:
number: GPIOXX
inverted: true
mode:
input: true
pullup: true
name: "Garage Door Manual Button"
# debounce the switch
filters:
- delayed_on: 50ms
- delayed_off: 50ms
on_press:
then:
- cover.toggle: garage_door
See Also
--------
- :doc:`index`
- :ref:`automation`
- :ref:`gpio-binary-sensor`
- :ghedit:`Edit`

Binary file not shown.

After

Width:  |  Height:  |  Size: 95 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

View File

@ -36,7 +36,7 @@ Configuration variables:
you want the cover to use that name, you can set ``name: None``.
- **device_class** (*Optional*, string): The device class for the
sensor. See https://www.home-assistant.io/components/cover/ for a list of available options.
sensor. See https://www.home-assistant.io/integrations/cover/#device-class for a list of available options.
- **icon** (*Optional*, icon): Manually set the icon to use for the cover in the frontend.
Advanced options:
@ -46,10 +46,10 @@ Advanced options:
a ``name`` will implicitly set this to true.
- **disabled_by_default** (*Optional*, boolean): If true, then this entity should not be added to any client's frontend,
(usually Home Assistant) without the user manually enabling it (via the Home Assistant UI).
Requires Home Assistant 2021.9 or newer. Defaults to ``false``.
Defaults to ``false``.
- **entity_category** (*Optional*, string): The category of the entity.
See https://developers.home-assistant.io/docs/core/entity/#generic-properties
for a list of available options. Requires Home Assistant 2021.11 or newer.
for a list of available options.
Set to ``""`` to remove the default entity category.
MQTT options:

View File

@ -52,6 +52,8 @@ Configuration variables:
be performed when the remote requests the cover to be closed.
- **stop_action** (*Optional*, :ref:`Action <config-action>`): The action that should
be performed when the remote requests the cover to be stopped.
- **toggle_action** (*Optional*, :ref:`Action <config-action>`): The action that should
be performed when the remote requests to toggle the the cover.
- **optimistic** (*Optional*, boolean): Whether to operate in optimistic mode - when in this mode,
any command sent to the template cover will immediately update the reported state and no lambda
needs to be used. Defaults to ``false``.

View File

@ -77,7 +77,22 @@ Configuration variables:
``esp8266_restore_from_flash: true`` option set.
See :doc:`esp8266_restore_from_flash </components/esphome>` for details.
Handle stop_action:
------------------------
For some cover controllers, separate switches for UP and DOWN action are used while a stop is issued when sending a counter command.
This can be handled at the **stop_action** by using the following lambda function:
.. code-block:: yaml
stop_action:
- lambda: !lambda |-
if (id(cover).last_operation() == CoverOperation::COVER_OPERATION_OPENING) {
// Cover is currently opening
id(cover_button_down).press();
} else if (id(cover).last_operation() == CoverOperation::COVER_OPERATION_CLOSING) {
// Cover is currently closing
id(cover_button_up).press();
}
See Also
--------

View File

@ -45,7 +45,7 @@ Configuration variables:
Supported devices
-----------------
Tuya cover devices known to be supported by this integration:
Tuya cover devices known to be supported by this component:
- Tuya ``M515EGWT`` (motor for bead chain roller blinds)

View File

@ -0,0 +1,327 @@
Datetime Component
==================
.. seo::
:description: Instructions for setting up datetime components in ESPHome.
:image: folder-open.svg
ESPHome has support for components to create a datetime entity. A datetime entity
currently represents a date that can be set by the user/frontend.
.. note::
Requires Home Assistant 2024.4 or newer.
.. _config-datetime:
Base Datetime Configuration
---------------------------
All datetime in ESPHome have a name and an optional icon.
.. code-block:: yaml
# Example datetime configuration
name: Date to check
# Optional variables:
icon: "mdi:calendar-alert"
Configuration variables:
- **name** (**Required**, string): The name for the datetime.
.. note::
If you have a :ref:`friendly_name <esphome-configuration_variables>` set for your device and
you want the datetime to use that name, you can set ``name: None``.
- **icon** (*Optional*, icon): Manually set the icon to use for the datetime in the frontend.
- **internal** (*Optional*, boolean): Mark this component as internal. Internal components will
not be exposed to the frontend (like Home Assistant). Only specifying an ``id`` without
a ``name`` will implicitly set this to true.
- **disabled_by_default** (*Optional*, boolean): If true, then this entity should not be added to any client's frontend,
(usually Home Assistant) without the user manually enabling it (via the Home Assistant UI).
Defaults to ``false``.
- **entity_category** (*Optional*, string): The category of the entity.
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.
- **time_id** (**Required**, :ref:`config-id`): The ID of the time entity. Automatically set
to the ID of a time component if only a single one is defined.
MQTT Options:
- All other options from :ref:`MQTT Component <config-mqtt-component>`.
Time and DateTime Options:
- **on_time** (*Optional*, :ref:`automation`): Automation to run when the current datetime or time matches the current state.
Only valid on ``time`` or ``datetime`` types.
Automation
----------
You can access the most recent state as a ``ESPTime`` object by ``id(datetime_id).state_as_esptime()``
.. _datetime-on_value:
``on_value``
************
This automation will be triggered when a new value is published. In :ref:`Lambdas <config-lambda>`
you can get the value as a ESPTime object from the trigger with ``x``.
.. code-block:: yaml
datetime:
- platform: template
# ...
on_value:
then:
- lambda: |-
if(x.hour >= 12) {
ESP_LOGD("main", "Updated hour is later or equal to 12");
} else {
ESP_LOGD("main", "Updated hour is earlier than 12");
}
Configuration variables: See :ref:`Automation <automation>`.
Date Automation
---------------
.. _datetime-date_set_action:
``datetime.date.set`` Action
****************************
This is an :ref:`Action <config-action>` for setting a datetime date state.
The ``date`` provided can be in one of 3 formats:
.. code-block:: yaml
# String date
- datetime.date.set:
id: my_datetime_date
date: "2023-12-04"
# Individual date parts
- datetime.date.set:
id: my_datetime_date
date:
year: 2023
month: 12
day: 4
# Using a lambda
- datetime.date.set:
id: my_datetime_date
date: !lambda |-
// Return an ESPTime struct
return {.day_of_month: 4, .month: 12, .year: 2023};
Configuration variables:
- **id** (**Required**, :ref:`config-id`): The ID of the datetime to set.
- **date** (**Required**, string, date parts, :ref:`templatable <config-templatable>`):
The value to set the datetime to.
.. _datetime-lambda_calls:
lambda calls
************
From :ref:`lambdas <config-lambda>`, you can call several methods on all datetimes to do some
advanced stuff (see the full API Reference for more info).
- ``.make_call()``: Make a call for updating the datetime value.
.. code-block:: cpp
// Within lambda, set the date to 2024-02-25
auto call = id(my_datetime_date).make_call();
call.set_date("2024-02-25");
call.perform();
Check the API reference for information on the methods that are available for
the ``DateCall`` object.
- ``.year``: Retrieve the current year of the ``date``. It will be ``0`` if no value has been set.
- ``.month``: Retrieve the current month of the ``date``. It will be ``0`` if no value has been set.
- ``.day``: Retrieve the current day of the ``date``. It will be ``0`` if no value has been set.
- ``.state_as_esptime()``: Retrieve the current value of the datetime as a :apistruct:`ESPTime` object.
.. code-block:: cpp
// For example, create a custom log message when a value is received:
ESP_LOGI("main", "Value of my datetime: %04d-%02d-%02d", id(my_date).year, id(my_date).month, id(my_date).day);
Time Automation
---------------
.. _datetime-time_set_action:
``datetime.time.set`` Action
****************************
This is an :ref:`Action <config-action>` for setting a datetime time state.
The ``time`` provided can be in one of 3 formats:
.. code-block:: yaml
# String time
- datetime.time.set:
id: my_datetime_time
time: "12:34:56"
# Individual time parts
- datetime.time.set:
id: my_datetime_time
time:
hour: 12
minute: 34
second: 56
# Using a lambda
- datetime.time.set:
id: my_datetime_time
time: !lambda |-
// Return an ESPTime struct
return {.second: 56, .minute: 34, .hour: 12};
Configuration variables:
- **id** (**Required**, :ref:`config-id`): The ID of the datetime to set.
- **time** (**Required**, string, time parts, :ref:`templatable <config-templatable>`):
The value to set the datetime to.
.. _datetime-time-lambda_calls:
lambda calls
************
From :ref:`lambdas <config-lambda>`, you can call several methods on all datetimes to do some
advanced stuff (see the full API Reference for more info).
- ``.make_call()``: Make a call for updating the datetime value.
.. code-block:: cpp
// Within lambda, set the time to 12:34:56
auto call = id(my_datetime_time).make_call();
call.set_time("12:34:56");
call.perform();
Check the API reference for information on the methods that are available for
the ``TimeCall`` object.
- ``.hour``: Retrieve the current hour of the ``time``. It will be ``0`` if no value has been set.
- ``.minute``: Retrieve the current minute of the ``time``. It will be ``0`` if no value has been set.
- ``.second``: Retrieve the current second of the ``time``. It will be ``0`` if no value has been set.
- ``.state_as_esptime()``: Retrieve the current value of the datetime as a :apistruct:`ESPTime` object.
.. code-block:: cpp
// For example, create a custom log message when a value is received:
ESP_LOGI("main", "Value of my datetime: %0d:%02d:%02d", id(my_datetime_time).hour, id(my_datetime_time).minute, id(my_datetime_time).second);
DateTime Automation
-------------------
.. _datetime-datetime_set_action:
``datetime.datetime.set`` Action
********************************
This is an :ref:`Action <config-action>` for setting a datetime datetime state.
The ``datetime`` provided can be in one of 3 formats:
.. code-block:: yaml
# String datetime
- datetime.time.set:
id: my_datetime
datetime: "2024-12-31 12:34:56"
# Individual datetime parts
- datetime.datetime.set:
id: my_datetime
datetime:
year: 2024
month: 12
day: 31
hour: 12
minute: 34
second: 56
# Using a lambda
- datetime.datetime.set:
id: my_datetime
datetime: !lambda |-
// Return an ESPTime struct
return {.second: 56, .minute: 34, .hour: 12, .day_of_month: 31, .month: 12, .year: 2024};
Configuration variables:
- **id** (**Required**, :ref:`config-id`): The ID of the datetime to set.
- **datetime** (**Required**, string, datetime parts, :ref:`templatable <config-templatable>`):
The value to set the datetime to.
.. _datetime-datetime-lambda_calls:
Lambda calls
************
For more complex use cases, several methods are available for use on datetimes from within :ref:`lambdas <config-lambda>`. See the full API Reference for more information.
- ``.make_call()``: Make a call for updating the datetime value.
.. code-block:: cpp
// Within lambda, set the datetime to 2024-12-31 12:34:56
auto call = id(my_datetime).make_call();
call.set_date("2024-12-31 12:34:56");
call.perform();
Check the API reference for information on the methods that are available for
the ``DateTimeCall`` object.
- ``.year``: Retrieve the current year of the ``datetime``. It will be ``0`` if no value has been set.
- ``.month``: Retrieve the current month of the ``datetime``. It will be ``0`` if no value has been set.
- ``.day``: Retrieve the current day of the ``datetime``. It will be ``0`` if no value has been set.
- ``.hour``: Retrieve the current hour of the ``datetime``. It will be ``0`` if no value has been set.
- ``.minute``: Retrieve the current minute of the ``datetime``. It will be ``0`` if no value has been set.
- ``.second``: Retrieve the current second of the ``datetime``. It will be ``0`` if no value has been set.
- ``.state_as_esptime()``: Retrieve the current value of the datetime as a :apistruct:`ESPTime` object.
.. code-block:: cpp
// For example, create a custom log message when a value is received:
ESP_LOGI("main", "Value of my datetime: %04d-%02d-%02d %0d:%02d:%02d",
id(my_datetime).year, id(my_datetime).month, id(my_datetime).day,
id(my_datetime).hour, id(my_datetime).minute, id(my_datetime).second);
See Also
--------
- :apiref:`DateTimeBase <datetime/datetime_base.h>`
- :apiref:`DateEntity <datetime/date_entity.h>`
- :apiref:`DateCall <datetime/date_entity.h>`
- :apiref:`TimeEntity <datetime/time_entity.h>`
- :apiref:`TimeCall <datetime/time_entity.h>`
- :apiref:`DateTimeEntity <datetime/datetime_entity.h>`
- :apiref:`DateTimeCall <datetime/datetime_entity.h>`
- :ghedit:`Edit`
.. toctree::
:maxdepth: 1
:glob:
*

View File

@ -0,0 +1,106 @@
Template Datetime
=================
.. seo::
:description: Instructions for setting up template datetime with ESPHome.
:image: description.svg
The ``template`` datetime platform allows you to create a datetime with templated values
using :ref:`lambdas <config-lambda>`.
.. code-block:: yaml
datetime:
# Example Date
- platform: template
id: my_datetime_date
type: date
name: Pick a Date
optimistic: yes
initial_value: "2024-01-30"
restore_value: true
# Example Time
- platform: template
id: my_datetime_time
type: time
name: Pick a Time
optimistic: yes
initial_value: "12:34:56"
restore_value: true
# Example DateTime
- platform: template
id: my_datetime
type: datetime
name: Pick a DateTime
optimistic: yes
initial_value: "2024-12-31 12:34:56"
restore_value: true
Configuration variables:
------------------------
- **type** (*Required*, enum): The type of the datetime. Can be one of ``date`` or ``time``.
- **lambda** (*Optional*, :ref:`lambda <config-lambda>`):
Lambda to be evaluated every update interval to get the current value of the datetime.
- **set_action** (*Optional*, :ref:`Action <config-action>`): The action that should
be performed when the remote (like Home Assistant's frontend) requests to set the
dateime value. The new value is available to lambdas in the ``x`` variable.
- **update_interval** (*Optional*, :ref:`config-time`): The interval on which to update the datetime
by executing the ``lambda``. Defaults to ``60s``.
- **optimistic** (*Optional*, boolean): Whether to operate in optimistic mode - when in this mode,
any command sent to the template datetime will immediately update the reported state.
Cannot be used with ``lambda``. Defaults to ``false``.
- **restore_value** (*Optional*, boolean): Saves and loads the state to RTC/Flash.
Cannot be used with ``lambda``. Defaults to ``false``.
- **initial_value** (*Optional*, string): The value to set the state to on setup if not
restored with ``restore_value``. Can be one of:
- For ``type: date``:
- A string in the format ``%Y-%m-%d`` , eg: ``"2023-12-04"``.
- An object including ``year``, ``month``, ``day``.
.. code-block:: yaml
initial_value:
year: 2023
month: 12
day: 4
- For ``type: time``:
- A string in the format ``%H:%M:%S`` , eg: ``"12:34:56"``.
- An object including ``hour``, ``minute``, ``second``.
.. code-block:: yaml
initial_value:
hour: 12
minute: 34
second: 56
- For ``type: datetime``:
- A string in the format ``%Y-%m-%d %H:%M:%S`` , eg: ``"2023-12-04 12:34:56"``.
- An object including ``year``, ``month``, ``day``, ``hour``, ``minute``, ``second``.
.. code-block:: yaml
initial_value:
year: 2023
month: 12
day: 4
hour: 12
minute: 34
second: 56
- All other options from :ref:`Datetime <config-datetime>`.
See Also
--------
- :ref:`automation`
- :apiref:`template/datetime/template_date.h`
- :ghedit:`Edit`

View File

@ -21,7 +21,9 @@ to wake up on any RTC pin (``GPIO0``, ``GPIO2``, ``GPIO4``, ``GPIO12``, ``GPIO13
``GPIO15``, ``GPIO25``, ``GPIO26``, ``GPIO27``, ``GPIO32``, ``GPIO39``).
While in deep sleep mode, the node will not do any work and not respond to any network traffic,
even Over The Air updates.
even Over The Air updates. If the device's entities are appearing as **Unavailable** while your device is actively
sleeping, this component was likely added after the device was added to Home Assistant. To prevent this behavior,
you can remove and re-add the device in Home Assistant.
.. code-block:: yaml
@ -32,8 +34,8 @@ even Over The Air updates.
.. note::
Some ESP8266s have an onboard USB chip (e.g. D1 mini) on the chips' control line that is connected to the RST pin. This enables the flasher to reboot the ESP when required. This may interfere with deep sleep on some devices and prevent the ESP from waking when it's powered through its USB connector. Powering the ESP from a separate 3.3V source connected to the 3.3V pin and GND will solve this issue. In these cases, using a USB to TTL adapter will allow you to log ESP activity.
Some ESP8266s have an onboard USB chip (e.g. D1 mini) on the chips' control line that is connected to the RST pin. This enables the flasher to reboot the ESP when required. This may interfere with deep sleep on some devices and prevent the ESP from waking when it's powered through its USB connector. Powering the ESP from a separate 3.3V source connected to the 3.3V pin and GND will solve this issue. In these cases, using a USB to TTL adapter will allow you to log ESP activity.
Configuration variables:
------------------------
@ -85,6 +87,34 @@ when the deep sleep should start? There are three ways of handling this using th
then re-configure deep sleep to wake up on a LOW signal and vice versa. Useful in situations when you want to
use observe the state changes of a pin using deep sleep and the ON/OFF values last longer.
ESP32 Wakeup Cause
------------------
On the ESP32, the ``esp_sleep_get_wakeup_cause()`` function can be used to check which wakeup source has triggered
wakeup from sleep mode.
.. code-block:: yaml
sensor:
- platform: template
name: "Wakeup Cause"
accuracy_decimals: 0
lambda: return esp_sleep_get_wakeup_cause();
The following integers are the wakeup causes:
- **0** - ``ESP_SLEEP_WAKEUP_UNDEFINED``: In case of deep sleep, reset was not caused by exit from deep sleep
- **1** - ``ESP_SLEEP_WAKEUP_ALL``: Not a wakeup cause, used to disable all wakeup sources with esp_sleep_disable_wakeup_source
- **2** - ``ESP_SLEEP_WAKEUP_EXT0``: Wakeup caused by external signal using RTC_IO
- **3** - ``ESP_SLEEP_WAKEUP_EXT1``: Wakeup caused by external signal using RTC_CNTL
- **4** - ``ESP_SLEEP_WAKEUP_TIMER``: Wakeup caused by timer
- **5** - ``ESP_SLEEP_WAKEUP_TOUCHPAD``: Wakeup caused by touchpad
- **6** - ``ESP_SLEEP_WAKEUP_ULP``: Wakeup caused by ULP program
- **7** - ``ESP_SLEEP_WAKEUP_GPIO``: Wakeup caused by GPIO (light sleep only on ESP32, S2 and S3)
- **8** - ``ESP_SLEEP_WAKEUP_UART``: Wakeup caused by UART (light sleep only)
- **9** - ``ESP_SLEEP_WAKEUP_WIFI``: Wakeup caused by WIFI (light sleep only)
- **10** - ``ESP_SLEEP_WAKEUP_COCPU``: Wakeup caused by COCPU int
- **11** - ``ESP_SLEEP_WAKEUP_COCPU_TRAP_TRIG``: Wakeup caused by COCPU crash
- **12** - ``ESP_SLEEP_WAKEUP_BT``: Wakeup caused by BT (light sleep only)
.. _deep_sleep-enter_action:

View File

@ -1,12 +1,12 @@
Demo Integration
================
Demo Component
==============
.. seo::
:description: Instructions for setting up the demo integration in ESPHome
:description: Instructions for setting up the demo component in ESPHome
:image: description.svg
The ``demo`` integration can be used for testing to generate sample instances of many
different integrations (sensors, lights, ...)
The ``demo`` component can be used for testing to generate sample instances of many
different components (sensors, lights, ...)
.. figure:: images/demo-ui.png
:align: center
@ -20,7 +20,7 @@ different integrations (sensors, lights, ...)
Configuration variables:
------------------------
This integration has no configuration variables
This component has no configuration variables
See Also
--------

View File

@ -2,7 +2,7 @@ DF-Player mini
==============
.. seo::
:description: Instructions for setting up DF Player Mini integration in ESPHome.
:description: Instructions for setting up DF Player Mini component in ESPHome.
:image: dfplayer.svg
The ``dfplayer`` (`datasheet <https://wiki.dfrobot.com/DFPlayer_Mini_SKU_DFR0299>`__), component
@ -14,8 +14,7 @@ allows you to play sound and music stored in an SD card or USB flash drive.
DF-Player mini Module.
For this integration to work you need to have set up a :ref:`UART bus <uart>`
in your configuration.
For this component to work you need to have set up a :ref:`UART bus <uart>` in your configuration.
Overview
--------
@ -31,16 +30,7 @@ will be required.
.. code-block:: yaml
# Example configuration entry
uart:
tx_pin: GPIO2
rx_pin: GPIO5
baud_rate: 9600
# Declare DFPlayer mini module
dfplayer:
on_finished_playback:
then:
logger.log: 'Somebody press play!'
Configuration variables:
------------------------
@ -114,11 +104,11 @@ Configuration options:
``dfplayer.play_mp3`` Action
----------------------------
Plays a track inside the folder ``mp3``. Files inside the folder must be numbered from 1
Plays a track inside the folder ``mp3``. Files inside the folder must be numbered from 1
to 9999, like ``0001.mp3``, ``0002.mp3``, ... etc.
The folder name needs to be ``mp3``, placed under the SD card root directory, and the
mp3 file name needs to be 4 digits, for example, "0001.mp3", placed under the mp3 folder.
If you want, you can add additional text after the number in the filename, for example,
The folder name needs to be ``mp3``, placed under the SD card root directory, and the
mp3 file name needs to be 4 digits, for example, "0001.mp3", placed under the mp3 folder.
If you want, you can add additional text after the number in the filename, for example,
``0001hello.mp3``, but must always be referenced by number only in yaml.
.. code-block:: bash
@ -345,8 +335,8 @@ Sample code
.. code-block:: yaml
uart:
tx_pin: GPIO2
rx_pin: GPIO5
tx_pin: GPIOXX
rx_pin: GPIOXX
baud_rate: 9600
dfplayer:

View File

@ -36,7 +36,7 @@ a :doc:`/components/uart` component (and its requisite GPIO pins) is required in
name: Mmwave Detected via GPIO
device_class: motion
pin:
number: REPLACEME
number: GPIOXX
mode: INPUT_PULLDOWN
switch:
@ -97,7 +97,7 @@ If you don't want/need to change the radar's settings and only need to determine
name: Presence Detected via GPIO
device_class: motion
pin:
number: REPLACEME
number: GPIOXX
mode: INPUT_PULLDOWN
.. _dfrobot_sen0395-via_uart:

View File

@ -19,18 +19,6 @@ The display requires that an :apiclass:`AddressableLight <light::AddressableLigh
.. code-block:: yaml
light:
- platform: fastled_clockless
chipset: WS2812B
pin: GPIO4
num_leds: 64
rgb_order: GRB
name: "led_matrix"
id: led_matrix_light
default_transition_length: 0s
color_correct: [50%, 50%, 50%]
restore_mode: ALWAYS_ON
display:
- platform: addressable_light
id: led_matrix_display
@ -61,10 +49,10 @@ Configuration variables:
- **update_interval** (*Optional*, :ref:`config-time`): The interval to call the lambda to update the display.
Defaults to ``16ms``.
- **pixel_mapper** (*Optional*, :ref:`lambda <config-lambda>`): A lambda that returns the integer address of the LED
given the supplied the ``x`` and ``y`` pixel coordinate. By default, a left-to-right direct pixel mapper is used.
given the supplied the ``x`` and ``y`` pixel coordinate. By default, a left-to-right direct pixel mapper is used.
- **lambda** (*Optional*, :ref:`lambda <config-lambda>`): The lambda to use for rendering the content on the display.
``it`` will be an instance of :apiclass:`DisplayBuffer <display::DisplayBuffer>`.
See :ref:`display-engine` for more information.
See :ref:`display-engine` for more information.
- **id** (*Optional*, :ref:`config-id`): Manually specify the ID used for code generation.
@ -73,7 +61,7 @@ Configuration variables:
When enabled (the default, but also via ``it.set_enabled(true)``), any effect currently running on the
addressable light will be disabled. When disabled (``it.set_enabled(false)``), the last configured effect will
be restored.
While the display is enabled, it is still possible to control the parent addressable light component in some
limited capacity. Changing the brightness will still work, but changing the color will have no affect. It is not
adivsable to enable any effects (ex: rainbow, color wipe, etc) while the display is enabled, as this will cause a

View File

@ -0,0 +1,160 @@
.. _display-fonts:
Font Renderer Component
=======================
.. seo::
:description: Instructions for setting up fonts in ESPHome.
:image: format-font.svg
ESPHome's graphical rendering engine also has a powerful font drawer which integrates seamlessly into the system. You have the option to use **any** OpenType/TrueType (``.ttf``, ``.otf``, ``.woff``) font file at **any** size, as well as fixed-size `PCF <https://en.wikipedia.org/wiki/Portable_Compiled_Format>`_ and `BDF <https://en.wikipedia.org/wiki/Glyph_Bitmap_Distribution_Format>`_ bitmap fonts.
These fonts can be used in ESPHome's :ref:`own rendering engine <display-engine>`.
To use fonts you can either
- Just grab a ``.ttf``, ``.otf``, ``.woff``, ``.pcf``, or ``.bdf`` file from somewhere on the internet and place it, for example, inside a ``fonts`` folder next to your configuration file.
- Use the ``gfonts://`` short form to use Google Fonts directly.
- Load a font from a URL directly on build.
Next, create a ``font:`` section in your configuration:
.. code-block:: yaml
# Various ways to configure fonts
font:
- file: "fonts/Comic Sans MS.ttf"
id: my_font
size: 20
bpp: 2
- file: "fonts/tom-thumb.bdf"
id: tomthumb
# gfonts://family[@weight]
- file: "gfonts://Roboto"
id: roboto_20
size: 20
- file:
type: gfonts
family: Roboto
weight: 900
id: roboto_16
size: 16
- file: "gfonts://Material+Symbols+Outlined"
id: icons_50
size: 50
glyphs: ["\U0000e425"] # mdi-timer
- file: "fonts/RobotoCondensed-Regular.ttf"
id: roboto_special_28
size: 28
bpp: 4
glyphs: [
a,A,á,Á,e,E,é,É,
(,),+,-,_,.,°,•,µ,
"\u0020", #space
"\u0021", #!
"\u0022", #"
"\u0027", #'
]
- file: "fonts/RobotoCondensed-Regular.ttf"
id: my_font_with_icons
size: 20
bpp: 4
extras:
- file: "fonts/materialdesignicons-webfont.ttf"
glyphs: [
"\U000F02D1", # mdi-heart
"\U000F05D4", # mdi-airplane-landing
]
- file: "https://github.com/IdreesInc/Monocraft/releases/download/v3.0/Monocraft.ttf"
id: web_font
size: 20
- file:
url: "https://github.com/IdreesInc/Monocraft/releases/download/v3.0/Monocraft.ttf"
type: web
id: web_font2
size: 24
display:
# ...
Configuration variables:
------------------------
- **file** (**Required**, string): The path (relative to where the .yaml file is) of the font
file. You can also use the ``gfonts://`` short form to use Google Fonts, or use the below structure:
- **type** (**Required**, string): Can be ``local``, ``gfonts`` or ``web``.
**Local Fonts**:
- **path** (**Required**, string): The path (relative to where the .yaml file is) of the OpenType/TrueType or bitmap font file.
**Google Fonts**:
Each Google Font will be downloaded once and cached for future use. This can also be used to download Material
Symbols or Icons as in the example above.
- **family** (**Required**, string): The name of the Google Font family.
- **italic** (*Optional*, boolean): Whether the font should be italic.
- **weight** (*Optional*, enum): The weight of the font. Can be either the text name or the integer value:
- **thin**: 100
- **extra-light**: 200
- **light**: 300
- **regular**: 400 (**default**)
- **medium**: 500
- **semi-bold**: 600
- **bold**: 700
- **extra-bold**: 800
- **black**: 900
**Web Fonts**:
- **url** (**Required**, string): The URL of the TrueType or bitmap font file.
- **id** (**Required**, :ref:`config-id`): The ID with which you will be able to reference the font later
in your display code.
- **size** (*Optional*, int): The size of the font in pt (not pixel!).
If you want to use the same font in different sizes, create two font objects. Note: *size* is ignored
by bitmap fonts. Defaults to ``20``.
- **bpp** (*Optional*, int): The bit depth of the rendered font from OpenType/TrueType, for anti-aliasing. Can be ``1``, ``2``, ``4``, ``8``. Defaults to ``1``.
- **glyphs** (*Optional*, list): A list of characters you plan to use. Only the characters you specify
here will be compiled into the binary. Adjust this if you need some special characters or want to
reduce the size of the binary if you don't plan to use some glyphs. You can also specify glyphs by their codepoint (see below). Defaults to ``!"%()+=,-_.:°/?0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz``.
- **extras** (*Optional*, enum): A list of font glyph configurations you'd like to include within this font, from other OpenType/TrueType files (eg. icons from other font, but at the same size as the main font):
- **file** (**Required**, string): The path of the font file with the extra glyphs.
- **glyphs** (**Required**, list): A list of glyphs you want to include. Can't repeat the same glyph codepoint if it was declared in the level above.
.. note::
OpenType/TrueType font files offer icons at codepoints far from what's reachable on a standard keyboard, for these it's needed
to specify the unicode codepoint of the glyph as a hex address escaped with ``\u`` or ``\U``.
- Code points up to ``0xFFFF`` are encoded like ``\uE6E8``. Lowercase ``\u`` and exactly 4 hexadecimal digits.
- Code points above ``0xFFFF`` are encoded like ``\U0001F5E9``. Capital ``\U`` and exactly 8 hexadecimal digits.
The ``extras`` section only supports OpenType/TrueType files, ``size`` and ``bpp`` will be the same as the above level. This will allow printing icons alongside the characters in the same string, like ``I \uF004 You \uF001``.
Many font sizes with multiple glyphs at high bit depths will increase the binary size considerably. Make your choices carefully.
.. note::
To use fonts you will need to have the python ``pillow`` package installed, as ESPHome uses that package
to translate the OpenType/TrueType and bitmap font files into an internal format. If you're running this as a Home Assistant add-on or with the official ESPHome docker image, it should already be installed. Otherwise you need
to install it using ``pip install "pillow==10.2.0"``.
See Also
--------
- :apiref:`display/display_buffer.h`
- :ref:`display-engine`
- `MDI cheatsheet <https://pictogrammers.com/library/mdi/>`_
- `MDI font repository <https://github.com/Pictogrammers/pictogrammers.github.io/tree/main/%40mdi/font/>`_
- :ghedit:`Edit`

View File

@ -1,4 +1,3 @@
ILI9xxx TFT LCD Series
======================
@ -11,9 +10,11 @@ ILI9xxx TFT LCD Series
Models
------
With this display driver you can control the following displays:
- GC9A01A
- ILI9341
- ILI9342
- ILI9481
- ILI9481-18 (ILI9481 in 18 bit, i.e. 262K color, mode)
- ILI9486
- ILI9488
- ILI9488_A (alternative gamma configuration for ILI9488)
@ -21,22 +22,25 @@ With this display driver you can control the following displays:
- S3BOX
- S3BOX_LITE
- ST7796
- ST7789V
- TFT 2.4
- TFT 2.4R
- WAVESHARE_RES_3_5 (Waveshare Pico-ResTouch-LCD-3.5)
More display drivers will come in the future.
Usage
-----
This component is the successor of the ILI9341 component allowing to control more display drivers and use 16bit colors when enough free ram.
This component is the successor of the ILI9341 component supporting more display driver chips from the ILI and related
families.
The ``ILI9xxx`` display platform allows you to use
ILI9341 (`datasheet <https://cdn-shop.adafruit.com/datasheets/ILI9341.pdf>`__,
`Aliexpress <https://www.aliexpress.com/af/Ili9341.html>`__) and other
displays from the same chip family with ESPHome. As this is a somewhat higher resolution display and may require pins
beyond the typical SPI connections, it is better suited for use with the ESP32.
displays from the same chip family with ESPHome. As this is a somewhat higher resolution display and requires additional pins
beyond the basic SPI connections, and a reasonable amount of RAM, it is not well suited for the ESP8266.
**Note:** To use 16bit instead of 8bit colors use a esp32 with enough PSRAM the display.
**Note:** use of 16 bit colors requires double the amount of RAM as 8 bit, and may need PSRAM to be available.
.. figure:: images/ili9341-full.jpg
:align: center
@ -51,8 +55,8 @@ beyond the typical SPI connections, it is better suited for use with the ESP32.
display:
- platform: ili9xxx
model: ili9341
dc_pin: 27
reset_pin: 33
dc_pin: GPIOXX
reset_pin: GPIOXX
lambda: |-
it.fill(COLOR_BLACK);
it.print(0, 0, id(my_font), id(my_red), TextAlign::TOP_LEFT, "Hello World!");
@ -62,15 +66,14 @@ Configuration variables:
- **model** (**Required**): The model of the display. Options are:
- ``M5STACK``, ``TFT 2.4``, ``TFT 2.4R``, ``S3BOX``, ``S3BOX_LITE``
- ``ILI9341``, ``ILI9342``, ``ILI9481``, ``ILI9486``, ``ILI9488``, ``ILI9488_A`` (alternative gamma configuration for ILI9488), ``ST7796``
.. note:: According to its documentation, the ESP32 S3 Box Lite has an ST7789V display driver. We've found, however, that it works with the ILIxxxx component here, instead. This could change in the future.
- ``M5STACK``, ``TFT 2.4``, ``TFT 2.4R``, ``S3BOX``, ``S3BOX_LITE``, ``WSPICOLCD``
- ``ILI9341``, ``ILI9342``, ``ILI9486``, ``ILI9488``, ``ILI9488_A`` (alternative gamma configuration for ILI9488)
- ``ILI9481``, ``ILI9481-18`` (18 bit mode)
- ``ST7789V``, ``ST7796``
- ``GC9A01A``
- **dc_pin** (**Required**, :ref:`Pin Schema <config-pin_schema>`): The DC pin.
- **reset_pin** (*Optional*, :ref:`Pin Schema <config-pin_schema>`): The RESET pin.
- **rotation** (*Optional*): Set the rotation of the display. Everything drawn in the ``lambda:`` will be rotated
per this option. One of ```` (default), ``90°``, ``180°``, or ``270°``.
- **lambda** (*Optional*, :ref:`lambda <config-lambda>`): The lambda to use for rendering the content on the display.
See :ref:`display-engine` for more information.
- **update_interval** (*Optional*, :ref:`config-time`): The interval to re-draw the screen. Defaults to ``5s``.
@ -83,14 +86,54 @@ Configuration variables:
- ``NONE`` (default)
- ``GRAYSCALE``
- ``IMAGE_ADAPTIVE``
- **color_order** (*Optional*): Should be one of ``bgr`` (default) or ``rgb``.
- **color_palette_images** (*Optional*): A list of image files that will be used to generate the color pallet for the display. This should only be used in conjunction with ``-color_palette: IMAGE_ADAPTIVE`` above. The images will be analysed at compile time and a custom color pallet will be created based on the most commonly occuring colors. A typical setting would be a sample image that represented the fully populated display. This can significantly improve the quality of displayed images. Note that these images are not stored on the ESP device, just the 256byte color pallet created from them.
- **dimensions** (*Optional*): Dimensions of the screen with WIDTHxHEIGHT. Usually not needed since ``model:`` has good defaults.
- **data_rate** (*Optional*): Set the data rate of the SPI interface to the display. One of ``80MHz``, ``40MHz`` (default), ``20MHz``, ``10MHz``, ``5MHz``, ``2MHz``, ``1MHz``, ``200kHz``, ``75kHz`` or ``1kHz``. If you have multiple ILI9xxx displays they must all use the same **data_rate**.
- **invert_display** (*Optional*): With this boolean option you can invert the some of the display colors manual. **Note** some of the displays have this option set automatically to true and can't be changed.
- **dimensions** (*Optional*): Dimensions of the screen, specified either as *width* **x** *height* (e.g ``320x240``) or with separate config keys. If not provided the dimensions will be determined by the model selected.
- **height** (**Required**, int): Specifies height of display in pixels.
- **width** (**Required**, int): Specifies width of display.
- **offset_width** (*Optional*, int): Specify an offset for the x-direction of the display, typically used when an LCD is smaller than the maximum supported by the driver chip. Default is 0
- **offset_height** (*Optional*, int): Specify an offset for the y-direction of the display. Default is 0.
- **invert_colors** (*Optional*): With this boolean option you can invert the display colors. **Note** some of the displays have this option set automatically to true and can't be changed.
- **18bit_mode** (*Optional*): With this boolean option you can manual enable or disable the 18 bit color mode.
- **rotation** (*Optional*): Rotate the display presentation in software. Choose one of ````, ``90°``, ``180°``, or ``270°``. This option cannot be used with ``transform``.
- **transform** (*Optional*): Transform the display presentation using hardware. All defaults are ``false``. This option cannot be used with ``rotation``.
- **swap_xy** (*Optional*, boolean): If true, exchange the x and y axes.
- **mirror_x** (*Optional*, boolean): If true, mirror the x axis.
- **mirror_y** (*Optional*, boolean): If true, mirror the y axis.
**Note:** The ``rotation`` variable will do a software based rotation. It is better to use the **transform** to rotate the display in hardware. Use one of the following combinations:
- 90 degrees - use ``swap_xy`` with ``mirror_x``
- 180 degrees - use ``mirror_x`` with ``mirror_y``
- 270 degrees - use ``swap_xy`` with ``mirror_y``
With 90 and 270 rotations you will also need to swap the **dimensions** ''height'' and ''width'' (see example below.
To modify the SPI setting see :ref:`SPI bus <spi>` . The default **data_rate** is set to ``40MHz`` and the **spi_mode** mode is ``MODE0`` but some displays require ``MODE3`` (*).
**Note:** The maximum achievable data rate will depend on the chip type (e.g. ESP32 vs ESP32-S3) the pins used (on ESP32 using the default SPI pins allows higher rates) and the connection type (on-board connections will support higher rates than long cables or DuPont wires.) If in doubt, start with a low speed and test higher rates to find what works. A MISO pin should preferably not be specified, as this will limit the maximum rate in some circumstances, and is not required if the SPI bus is used only for the display.
Configuration examples
**********************
To use hardware rotation, use both ``dimensions`` and ``transform``, e.g. this config will turn a landscape display with
height 320 and width 480 into portrait. Note that the dimensions are those of the final display.
.. code-block:: yaml
transform:
swap_xy: true
mirror_x: true
dimensions:
height: 480
width: 320
To utilize the color capabilities of this display module, you'll likely want to add a ``color:`` section to your
YAML configuration; please see :ref:`color <config-color>` for more detail on this configuration section.
@ -137,13 +180,13 @@ To configure a dimmable backlight:
# Define a PWM output on the ESP32
output:
- platform: ledc
pin: 32
id: gpio_32_backlight_pwm
pin: GPIOXX
id: backlight_pwm
# Define a monochromatic, dimmable light for the backlight
light:
- platform: monochromatic
output: gpio_32_backlight_pwm
output: backlight_pwm
name: "Display Backlight"
id: back_light
restore_mode: ALWAYS_ON
@ -161,8 +204,8 @@ To configure an image adaptive color pallet to show greater than 8 bit color dep
display:
- platform: ili9xxx
model: ili9341
dc_pin: 4
reset_pin: 22
dc_pin: GPIOXX
reset_pin: GPIOXX
rotation: 90
id: tft_ha
color_palette: IMAGE_ADAPTIVE
@ -172,6 +215,45 @@ To configure an image adaptive color pallet to show greater than 8 bit color dep
lambda: |-
it.image(0, 0, id(myimage));
Using the ``transform`` options to hardware rotate the display on a Lilygo T-Embed. This has an st7789v but only uses 170 pixels of the 240 width.
This config rotates the display into landscape mode using the driver chip.
.. code-block:: yaml
display:
- platform: ili9xxx
model: st7789v
dimensions:
height: 170
width: 320
offset_height: 35
offset_width: 0
transform:
swap_xy: true
mirror_x: false
mirror_y: true
color_order: bgr
data_rate: 80MHz
cs_pin: GPIOXX
dc_pin: GPIO13
reset_pin: GPIO9
For Lilygo TTGO Boards if you move from the st7789v to this you need the following settings to make it work.
.. code-block:: yaml
display:
- platform: ili9xxx
model: st7789v
#TTGO TDisplay 135x240
dimensions:
height: 240
width: 135
offset_height: 40
offset_width: 52
# Required or the colors are all inverted, and Black screen is White
invert_colors: true
See Also
--------

Binary file not shown.

After

Width:  |  Height:  |  Size: 510 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 674 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 315 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 869 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 38 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 45 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 27 KiB

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 186 KiB

After

Width:  |  Height:  |  Size: 186 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 71 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

View File

@ -2,17 +2,17 @@ Display Component
=================
.. seo::
:description: Instructions for setting up the display integration.
:description: Instructions for setting up the display component.
:image: folder-open.svg
The ``display`` component houses ESPHome's powerful rendering and display
engine. Fundamentally, there are these types of displays:
- Text based displays like :doc:`7-Segment displays <max7219>` or
:doc:`some LCD displays <lcd_display>`.
- Displays like the :doc:`nextion` that have their own processors for rendering.
- Binary displays which can toggle ON/OFF any pixel, like :doc:`E-Paper displays <waveshare_epaper>` or
:doc:`OLED displays <ssd1306>`.
:doc:`LCD displays <lcd_display>`.
- Graphical serial displays like :doc:`nextion` that have their own processors for rendering.
- Graphical binary displays which can toggle ON/OFF any pixel, like :doc:`E-Paper <waveshare_epaper>`,
:doc:`OLED <ssd1306>` or :doc:`TFT <ili9xxx>` displays.
For the last type, ESPHome has a powerful rendering engine that can do
many things like draw some basic shapes, print text with any font you want, or even show images.
@ -24,11 +24,6 @@ using an API that is designed to
- be simple and to be used without programming experience
- but also be flexible enough to work with more complex tasks like displaying an analog clock.
.. note::
Display hardware is complex and sometimes doesn't behave as expected. If you're having trouble with your display,
please see :ref:`troubleshooting` below.
.. _display-engine:
Display Rendering Engine
@ -38,6 +33,11 @@ In this section we will be discussing how to use ESPHome's display rendering eng
and some basic commands. Please note that this only applies to displays that can control each pixel
individually.
.. note::
Display hardware is complex and sometimes doesn't behave as expected. If you're having trouble with your display,
please see :ref:`troubleshooting` below.
So, first a few basics: When setting up a display platform in ESPHome there will be a configuration
option called ``lambda:`` which will be called every time ESPHome wants to re-render the display.
In each cycle, the display is automatically cleared before the lambda is executed. You can disable
@ -45,6 +45,9 @@ this behavior by setting ``auto_clear_enabled: false``.
In the lambda, you can write code like in any :ref:`lambda <config-lambda>` in ESPHome. Display
lambdas are additionally passed a variable called ``it`` which represents the rendering engine object.
.. figure:: images/display_rendering_line.png
:align: center
.. code-block:: yaml
display:
@ -72,10 +75,12 @@ x always represents the horizontal axis (width) and y the vertical axis (height)
the rendering engine is always first specify the ``x`` coordinate and then the ``y`` coordinate.
Basic Shapes
************
------------
Now that you know a bit more about ESPHome's coordinate system, let's draw some basic shapes like lines, rectangles
and circles:
Now that you know a bit more about ESPHome's coordinate system, let's draw some basic shapes like lines, rectangles, circles or even polygons:
.. figure:: images/display_rendering_shapes.png
:align: center
.. code-block:: yaml
@ -85,15 +90,28 @@ and circles:
lambda: |-
// Draw a line from [0,0] to [100,50]
it.line(0, 0, 100, 50);
// Draw the outline of a rectangle with the top left at [50,60], a width of 30 and a height of 42
it.rectangle(50, 60, 30, 42);
// Draw the same rectangle, but this time filled.
it.filled_rectangle(50, 60, 30, 42);
// Draw the outline of a rectangle with the top left at [5,20], a width of 30 and a height of 42
it.rectangle(5, 20, 30, 42);
// Draw the same rectangle a few pixels apart, but this time filled
it.filled_rectangle(40, 40, 30, 42);
// Circles! Let's draw one with the center at [25,25] and a radius of 10
it.circle(25, 25, 10);
// Circles! Let's draw one with the center at [20,40] and a radius of 10
it.circle(20, 40, 10);
// ... and the same thing filled again
it.filled_circle(25, 25, 10);
it.filled_circle(20, 75, 10);
// Triangles... Let's draw the outline of a triangle from the [x,y] coordinates of its three points
// [25,5], [100,5], [80,25]
it.triangle(25, 5, 100, 5, 80, 25);
// and a filled triangle !
it.filled_triangle(115, 5, 95, 25, 125, 70);
// Regular Polygons? Let's draw a filled, pointy-topped hexagon inscribed in a circle
// centered on [170,45] with a radius of 20
it.filled_regular_polygon(170, 45, 20, EDGES_HEXAGON);
// and the outline of flat-topped octagon around it!
it.regular_polygon(170, 45, 40, EDGES_OCTAGON, VARIATION_FLAT_TOP);
// Need to rotate the polygon, or retrieve the coordinates of its vertices? Check the API!
All the above methods can optionally also be called with an argument at the end which specifies in which
color to draw. For monochrome displays, only ``COLOR_ON`` (the default if color is not given) and ``COLOR_OFF`` are supported.
@ -104,33 +122,35 @@ color to draw. For monochrome displays, only ``COLOR_ON`` (the default if color
- platform: ...
# ...
lambda: |-
// Turn the whole display on.
// Turn the whole display on
it.fill(COLOR_ON);
// Turn the whole display off.
// Turn the whole display off
it.fill(COLOR_OFF);
// Turn a single pixel off at [50,60]
it.draw_pixel_at(50, 60, COLOR_OFF);
// Turn off a whole display portion.
it.rectangle(50, 50, 30, 42, COLOR_OFF);
For color displays (e.g. TFT displays), you can use the Color class.
.. figure:: images/display_rendering_colors.png
:align: center
.. code-block:: yaml
display:
- platform: ...
# ...
lambda: |-
auto black = Color(0, 0, 0);
auto red = Color(255, 0, 0);
auto green = Color(0, 255, 0);
auto blue = Color(0, 0, 255);
auto white = Color(255, 255, 255);
it.rectangle(20, 50, 30, 30, white);
it.rectangle(25, 55, 30, 30, red);
it.rectangle(30, 60, 30, 30, green);
it.rectangle(35, 65, 30, 30, blue);
it.filled_circle(20, 32, 15, black);
it.filled_circle(40, 32, 15, red);
it.filled_circle(60, 32, 15, green);
it.filled_circle(80, 32, 15, blue);
it.filled_circle(100, 32, 15, white);
Additionally, you have access to two helper methods which will fetch the width and height of the display:
@ -143,113 +163,19 @@ Additionally, you have access to two helper methods which will fetch the width a
// Draw a circle in the middle of the display
it.filled_circle(it.get_width() / 2, it.get_height() / 2, 20);
// Turn off bottom half of the screen
it.filled_rectangle(0, it.get_height()/2, it.get_width(), it.get_height()/2, COLOR_OFF);
You can view the full API documentation for the rendering engine in the "API Reference" in the See Also section.
.. _display-fonts:
Fonts
*****
The rendering engine also has a powerful font drawer which integrates seamlessly into ESPHome.
Whereas in most Arduino display projects you have to use one of a few pre-defined fonts in very
specific sizes, with ESPHome you have the option to use **any** TrueType (``.ttf``) font file
at **any** size, as well as fixed-size `PCF <https://en.wikipedia.org/wiki/Portable_Compiled_Format>`_ and `BDF <https://en.wikipedia.org/wiki/Glyph_Bitmap_Distribution_Format>`_ bitmap fonts! Granted the reason for it is
actually not having to worry about the licensing of font files :)
To use fonts you first have to define a font object in your ESPHome configuration file. Just grab
a ``.ttf``, ``.pcf``, or ``.bdf`` file from somewhere on the internet and place it, for example,
inside a ``fonts`` folder next to your configuration file.
Next, create a ``font:`` section in your configuration:
.. code-block:: yaml
font:
- file: "fonts/Comic Sans MS.ttf"
id: my_font
size: 20
# gfonts://family[@weight]
- file: "gfonts://Roboto"
id: roboto
size: 20
- file:
type: gfonts
family: Roboto
weight: 900
id: font2
size: 16
- file: "fonts/tom-thumb.bdf"
id: tomthumb
- file: 'gfonts://Material+Symbols+Outlined'
id: icon_font_50
size: 50
glyphs: ["\U0000e425"] # mdi-timer
display:
# ...
Configuration variables:
- **file** (**Required**): The path (relative to where the .yaml file is) of the font
file. You can use the ``gfonts://`` short form to use Google Fonts, or use the below structure:
- **type** (**Required**, string): Can be ``gfonts`` or ``local``.
**Google Fonts**:
Each Google Font will be downloaded once and cached for future use. This can also be used to download Material
Symbols or Icons as in the example above.
- **family** (**Required**, string): The name of the Google Font family.
- **weight** (*Optional*, enum): The weight of the font. Can be either the text name or the integer value:
- **thin**: 100
- **extra-light**: 200
- **light**: 300
- **regular**: 400 (**default**)
- **medium**: 500
- **semi-bold**: 600
- **bold**: 700
- **extra-bold**: 800
- **black**: 900
- **italic** (*Optional*, boolean): Whether the font should be italic.
**Local Fonts**:
- **path** (**Required**, string): The path (relative to where the .yaml file is) of the TrueType or bitmap font file.
- **id** (**Required**, :ref:`config-id`): The ID with which you will be able to reference the font later
in your display code.
- **size** (*Optional*, int): The size of the font in pt (not pixel!).
If you want to use the same font in different sizes, create two font objects. Note: *size* is ignored
by bitmap fonts. Defaults to ``20``.
- **glyphs** (*Optional*, list): A list of characters you plan to use. Only the characters you specify
here will be compiled into the binary. Adjust this if you need some special characters or want to
reduce the size of the binary if you don't plan to use some glyphs. The items in the list can also
be more than one character long if you for example want to use font ligatures. Defaults to
``!"%()+=,-_.:°0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz``.
.. note::
To use fonts you will need to have the python ``pillow`` package installed, as ESPHome uses that package
to translate the TrueType and bitmap font files into an internal format. If you're running this as a Home Assistant
add-on or with the official ESPHome docker image, it should already be installed. Otherwise you need
to install it using
``pip install "pillow>4.0.0,<10.0.0"``.
.. _display-static_text:
Drawing Static Text
*******************
-------------------
In your display code, you can render static text by referencing the font and just entering your string:
To be able to display text, you need to prepare some fonts. ESPHome's :ref:`font renderer <display-fonts>` allows you to use OpenType/TrueType/Bitmap fonts for your texts. This is very flexiblle because you can prepare various sets of fonts at different sizes with a different number of glyphs which is extremely convenient when we're talking about flash space.
In your display code, you can render static text by referencing the font and just entering your string enclosed in double quotes:
.. code-block:: yaml
@ -290,11 +216,25 @@ As with basic shapes, you can also specify a color for the text:
// Syntax is always: it.print(<x>, <y>, <font>, [color=COLOR_ON], [align=TextAlign::TOP_LEFT], <text>);
it.print(0, 0, id(my_font), COLOR_ON, "Left aligned");
In case of fonts rendered at higher bit depths, the background color has to be specified after the text in order for antialiasing to work:
.. code-block:: yaml
display:
- platform: ...
# ...
lambda: |-
// Syntax is always: it.print(<x>, <y>, <font>, [color=COLOR_ON], [align], <text>, [color=COLOR_OFF]);
it.print(0, 0, id(my_font_with_icons), COLOR_ON, TextAlign::CENTER, "Just\U000f05d4here. Already\U000F02D1this.", COLOR_OFF);
.. figure:: images/display_rendering_text.png
:align: center
.. _display-printf:
Formatted Text
**************
--------------
Static text by itself is not too impressive. What we really want is to display *dynamic* content like sensor values
on the display!. That's where ``printf`` comes in. ``printf`` is a formatting engine from the C era and ESPHome
@ -344,7 +284,7 @@ Another interesting format string is ``%7.2f``, which would become the right-jus
- ``.2`` - round the decimal number to ``2`` digits after the decimal point.
- ``f`` - specifier: f(loat).
You can even have as many format strings as you want in a single printf call. Just make sure the put the
You can even have as many formatted items as you want in a single printf call. Just make sure the put the
arguments after the format string in the right order.
.. code-block:: yaml
@ -366,6 +306,19 @@ To display a text string from a ``text_sensor``, append ``.c_str()`` to the end
lambda: |-
it.printf(0, 0, id(my_font), "Text to follow: %s", id(template_text).state.c_str());
When using anti-aliased fonts you will probably need to specify the color to draw the characters, and the background
color to mix in for anti-aliasing. This requires the full version of `printf`, e.g.:
.. code-block:: yaml
display:
- platform: ...
# ...
lambda: |-
it.printf(10, 100, id(roboto), Color(0x123456), COLOR_OFF, display::TextAlign::BASELINE, "%f", id(heap_free).state);
The last printf tip for use in displays I will discuss here is how to display binary sensor values. You
*could* of course just check the state with an ``if`` statement as the first few lines in the example below, but if
you want to be efficient you can use an *inline if* too. With the ``%s`` print specifier you can tell it to
@ -398,17 +351,16 @@ use any string you pass it, like ``"ON"`` or ``"OFF"``.
.. _display-strftime:
Displaying Time
***************
---------------
You can display current time using a time component. Please see the example :ref:`here <strftime>`.
.. _clipping:
Screen Clipping
***************
---------------
Screen clipping is a new set of methods since version 2023.2.0 of esphome. It could be useful when you just want to show
a part of an image or make sure that what you draw on the screen does not go outside a specific region on the screen.
Screen clipping can be useful when you just want to show a part of an image or make sure that what you draw on the screen does not go outside a specific region on the screen.
With ``start_clipping(left, top, right, bottom);`` start you the clipping process and when you are done drawing in that region
you can stop the clipping process with ``end_clipping();`` . You can nest as many ``start_clipping();`` as you want as long
@ -457,12 +409,10 @@ With ``get_clipping();`` you get a ``Rect`` object back with the latest set clip
With ``is_clipping();`` tells you if clipping is activated.
.. _config-color:
Color
*****
-----
When using RGB-capable displays in ESPHome you may wish to use custom colors.
A ``color`` component exists for just this purpose:
@ -512,20 +462,15 @@ RGB displays use red, green, and blue, while grayscale displays may use white.
.. _display-graphs:
Graph Component
***************
---------------
You can display a graph of a sensor value(s) using this component. The states used for the graph are stored in
memory at the time the sensor updates and will be lost when the device reboots.
Examples:
.. figure:: images/graph_screen.png
.. figure:: images/display_rendering_graph.png
:align: center
:width: 60.0%
.. figure:: images/graph_dualtrace.png
:align: center
:width: 60.0%
Graph component with options for grids, border and line-types.
@ -552,6 +497,7 @@ Graph component with options for grids, border and line-types.
color: my_red
- sensor: my_outside_temperature
line_type: SOLID
continuous: true
line_thickness: 3
color: my_blue
- sensor: my_beer_temperature
@ -580,6 +526,7 @@ Trace specific fields:
- **sensor** (*Optional*, :ref:`config-id`): The sensor value to plot
- **line_thickness** (*Optional*): Defaults to 3
- **line_type** (*Optional*): Specifies the plot line-type. Can be one of the following: ``SOLID``, ``DOTTED``, ``DASHED``. Defaults to ``SOLID``.
- **continuous** (*Optional*): connects the individual points to make a continuous line. Defaults to ``false``.
- **color** (*Optional*): Sets the color of the sensor trace.
And then later in code:
@ -623,8 +570,11 @@ And then later in code:
- Axis labels are currently not possible without manually placing them.
- The grid and border color is set with it.graph(), while the traces are defined separately.
.. _display-qrcode:
QR Code Component
*****************
-----------------
Use this component to generate a QR-code containing a string on the device, which can then be drawn on compatible displays.
@ -659,8 +609,17 @@ To draw the QR-code, call the ``it.qr_code`` function from your render lambda:
// Draw the QR-code at position [x=50,y=0] with white color and a 2x scale
it.qr_code(50, 0, id(homepage_qr), Color(255,255,255), 2);
// Draw the QR-code in the center of the screen with white color and a 2x scale
auto size = id(homepage_qr).get_size() * 2; // Multiply by scale
auto x = (it.get_width() / 2) - (size / 2);
auto y = (it.get_height() / 2) - (size / 2);
it.qr_code(x, y, id(homepage_qr), Color(255,255,255), 2);
.. _display-image:
Images
******
------
Use this component to store graphical images on the device, you can then draw the images on compatible displays.
@ -775,7 +734,7 @@ You can also use this to invert images in two colors display, use ``COLOR_OFF``
as the additional parameters.
Animation
*********
---------
Allows to use animated images on displays. Animation inherits all options from the image component.
It adds additional lambda methods: ``next_frame()``, ``prev_frame()`` and ``set_frame()`` to change the shown picture of a gif.
@ -975,54 +934,36 @@ Additionally the old page will be given as the variable ``from`` and the new one
Troubleshooting
---------------
Color Test Pattern
******************
Using the Color Test Card
-------------------------
If you're experiencing issues with your color display, the script below can help you to identify what might be wrong.
It will show 3 color bars in **RED**, **GREEN** and **BLUE**. To help the graphics display team determine
the best way to help you, **a picture of the result of this script is very helpful.**
If you're experiencing issues with your color display, the ``show_test_card: true`` option can help you to identify what might be wrong.
- It will show bars for Red, Green and Blue, graduating to black and white.
- Together with that it will show the letters "**R**", "**G**" and "**B**" to validate the display geometry.
- There will be a rectangle around the corners of the display with a marker at the 0,0 corner which should be at the top left of the screen.
.. figure:: images/test_card.jpg
:align: center
:width: 50.0%
When all points above are shown correctly then the display is working as expected.
To help the graphics display team determine the best way to help you, **a picture of the result of this option is very helpful.**
Should you `create an issue <https://github.com/esphome/issues/issues>`__ in GitHub regarding your display, please
be sure to **include a link to where you purchased it** so that we can validate the configuration you've used.
be sure to **include a link to where you purchased the display** so that we can validate the configuration you've used.
.. code-block:: yaml
.. note::
display:
- platform: ...
...
lambda: |-
int shift_x = (it.get_width()-310)/2;
int shift_y = (it.get_height()-256)/2;
for(auto i = 0; i<256; i++) {
it.horizontal_line(shift_x+ 0,i+shift_y,50, my_red.fade_to_white(i));
it.horizontal_line(shift_x+ 50,i+shift_y,50, my_red.fade_to_black(i));
it.horizontal_line(shift_x+105,i+shift_y,50, my_green.fade_to_white(i));
it.horizontal_line(shift_x+155,i+shift_y,50, my_green.fade_to_black(i));
it.horizontal_line(shift_x+210,i+shift_y,50, my_blue.fade_to_white(i));
it.horizontal_line(shift_x+260,i+shift_y,50, my_blue.fade_to_black(i));
}
it.rectangle(shift_x+ 0, 0+shift_y, shift_x+ 310, 256+shift_y, my_yellow);
color:
- id: my_blue
blue: 100%
- id: my_red
red: 100%
- id: my_green
green: 100%
- id: my_white
red: 100%
blue: 100%
green: 100%
- id: my_yellow
hex: ffff00
For displays in 8 bit mode you will see distinct color blocks rather than a smooth gradient.
See Also
--------
- :apiref:`display/display_buffer.h`
- :ref:`Fonts <display-fonts>`
- :ghedit:`Edit`
.. toctree::

View File

@ -10,7 +10,7 @@ All-in-one e-paper display ``Inkplate 6``, ``Inkplate 10`` and ``Inkplate 6 Plus
The Inkplate 6, 10 and 6 Plus are powerful, Wi-Fi enabled ESP32 based six-inch e-paper displays -
recycled from a Kindle e-reader. Its main feature is simplicity.
Learn more at `Inkplate's website <https://inkplate.io/>`__
Learn more at `Inkplate's documentation website <https://inkplate.readthedocs.io/en/stable/>`__
.. figure:: images/inkplate6.jpg
:align: center
@ -282,7 +282,7 @@ Inkplate 6 Plus Touchscreen
***************************
The Inkplate 6 Plus has a built in touchscreen supported by ESPHome. Note you need to enable pin 12 on the mcp23017 to enable the touchscreen
Below is a config example with touchscreen power swtich:
Below is a config example with touchscreen power switch:
.. code-block:: yaml

View File

@ -2,12 +2,12 @@ Character-Based LCD Display
===========================
.. seo::
:description: Instructions for setting up character-based HD44780 LCD displays.
:description: Instructions for setting up character-based HD44780 LCDs.
:image: lcd.jpg
The ``lcd_pcf8574`` and ``lcd_gpio`` display components allow you to use HD44780-compatible, character-based LCD displays
with ESPHome. This integration is only for LCD displays that display individual characters on a screen
(usually 8-40 columns and 2-4 rows), and not for LCD displays that can control each pixel individually.
The ``lcd_pcf8574`` and ``lcd_gpio`` display components allow you to use HD44780-compatible, character-based LCDs
with ESPHome. This component is only for LCDs that display individual characters on a screen
(usually 8-40 columns and 2-4 rows), and not for LCDs that can control each pixel individually.
.. figure:: images/lcd-hello_world.jpg
:align: center
@ -15,12 +15,12 @@ with ESPHome. This integration is only for LCD displays that display individual
.. note::
Multiple versions of the display exist, supporting different character sets:
Multiple versions of the display exist, supporting different character sets:
- HD44780UA00 English-Japanese which includes katakana characters, some Greek letters and mathematical symbols
- HD44780UA02 English-European which includes Greek, Cyrillic and Western European characters (with some diacritics)
- HD44780UBxx custom, manufacturer-specific character sets
It is also possible to add eight user-defined characters.
.. _lcd-pcf8574:
@ -28,7 +28,7 @@ with ESPHome. This integration is only for LCD displays that display individual
lcd_pcf8574 Component
---------------------
``lcd_pcf8574`` is for LCD displays with a PCF8574 GPIO expander module connected to all the data pins. This has the
``lcd_pcf8574`` is for LCD displays with a PCF8574 GPIO expander module connected to all the data pins. This has the
benefit that you only need to connect two data wires to the ESP instead of the six or ten as with the :ref:`lcd-gpio`.
The communication happens via :ref:`I²C Bus <i2c>`, you need to have an ``i2c:`` section in your configuration.
@ -65,7 +65,7 @@ Configuration variables:
.. note::
If you're not seeing anything on the display, try turning the contrast potentiometer around on the
If you're not seeing anything on the display, try turning the contrast potentiometer around on the
PCF8574 board.
.. _lcd-gpio:
@ -74,7 +74,7 @@ lcd_gpio Component
------------------
The ``lcd_gpio`` version of this component addresses the screen directly and does not employ a GPIO expander module.
Each of the data pins of the LCD needs a dedicated GPIO pin on the ESP. Connecting the screen this way offers
Each of the data pins of the LCD needs a dedicated GPIO pin on the ESP. Connecting the screen this way offers
faster refresh, especially in conjunction with an :ref:`LCD Menu <lcd_menu>`.
.. figure:: images/lcd_gpio.svg
@ -90,12 +90,12 @@ faster refresh, especially in conjunction with an :ref:`LCD Menu <lcd_menu>`.
- platform: lcd_gpio
dimensions: 20x4
data_pins:
- GPIO32
- GPIO33
- GPIO5
- GPIO17
enable_pin: D4
rs_pin: D5
- GPIOXX
- GPIOXX
- GPIOXX
- GPIOXX
enable_pin: GPIOXX
rs_pin: GPIOXX
lambda: |-
it.print("Hello World!");
@ -105,8 +105,8 @@ Configuration variables:
- **dimensions** (**Required**, string): The dimensions of the display with ``COLUMNSxROWS``. If you're not
sure, power the display on, turn contrast high up and just count them.
- **data_pins** (**Required**, list of :ref:`pins <config-pin_schema>`): A list of the data pins you
have hooked up to the LCD. The list can either be 4 items long (operating in 4-bit mode with
either the first 4 data pins connected or the last 4 data pins connected), or 8 items long (when you have
have hooked up to the LCD. The list can either be 4 items long (operating in 4-bit mode with
either the first 4 data pins connected or the last 4 data pins connected), or 8 items long (when you have
connected all 8 data pins).
- **enable_pin** (**Required**, :ref:`pin <config-pin_schema>`): The pin you have ``E`` (``06``) hooked up to.
- **rs_pin** (**Required**, :ref:`pin <config-pin_schema>`): The pin you have ``RS`` (``04``) hooked up to.
@ -118,7 +118,7 @@ Configuration variables:
.. note::
If you're not seeing anything on the display, make sure you apply ``3.3V`` to the ``VEE`` (``03``) contrast control
If you're not seeing anything on the display, make sure you apply ``3.3V`` to the ``VEE`` (``03``) contrast control
pin of the board. You can use a potentiometer to make it adjustable.
@ -177,7 +177,7 @@ The LCD display has the possibility to define up to eight user defined character
``0`` to ``7`` and mirrored at ``8`` to ``15`` (i.e. ``\x08`` can be used instead of the ``\0`` that can
be problematic in strings). Each character has eight lines of five bits, with the first line on the top
and the most significant bit on the left, meaning that ``0b10000`` followed by six zeros and a ``0b00001``
defines a dot at the upper left and lower right of the character.
defines a dot at the upper left and lower right of the character.
.. code-block:: yaml
@ -221,7 +221,7 @@ Keep in mind that the display lambda runs for every ``update_interval``, so if t
it cannot be overridden from other parts.
With the ``lcd_gpio``, the backlight is lit by applying ``Vcc`` to the ``BLA`` (``15``) pin and connect ``BLK`` (``16``)
pin to ``GND``. The backlight can draw more power than the microcontroller output pins can supply, so it is advisable
pin to ``GND``. The backlight can draw more power than the microcontroller output pins can supply, so it is advisable
to use a transistor as a switch to control the power for the backlight pins.
Below an example for a typical use-case where the backlight is turned on when a motion sensor activates and

View File

@ -8,7 +8,7 @@ MAX7219 7-Segment Display
The ``max7219`` display platform allows you to use MAX7219 7-segment display drivers (
`datasheet <https://datasheets.maximintegrated.com/en/ds/MAX7219-MAX7221.pdf>`__,
`hobbycomponents <https://hobbycomponents.com/displays/597-max7219-8-digit-seven-segment-display-module>`__)
with ESPHome. Please note that this integration is *only* for 7-segment display, not matrix configurations.
with ESPHome. Please note that this component is *only* for 7-segment display, not matrix configurations.
.. figure:: images/max7219-full.jpg
:align: center
@ -16,7 +16,7 @@ with ESPHome. Please note that this integration is *only* for 7-segment display,
MAX7219 7-Segment Display.
As the communication with the MAX7219 is done using SPI for this integration, you need
As the communication with the MAX7219 is done using SPI for this component, you need
to have an :ref:`SPI bus <spi>` in your configuration with both the **mosi_pin** set (miso_pin is not required).
Connect VCC to 3.3V (the manufacturer recommends 4+ V, but 3.3V seems to work fine), DIN to your ``mosi_pin`` and
CS to your set ``cs_pin`` and finally GND to GND.

View File

@ -5,7 +5,7 @@ MAX7219 Digit Display
:description: Instructions for setting up MAX7219 Digit displays.
:image: max7219digit.jpg
The ``max7219`` display platform allows you to use MAX7219 digit with ESPHome. Please note that this integration
The ``max7219`` display platform allows you to use MAX7219 digit with ESPHome. Please note that this component
is *only* for the digit "matrix" display, for the 7 segment display see :doc:`max7219`.
.. figure:: images/max7219digit.png
@ -14,7 +14,7 @@ is *only* for the digit "matrix" display, for the 7 segment display see :doc:`ma
MAX7219 Digit Display.
As the communication with the MAX7219 Digit is done using SPI for this integration, you need
As the communication with the MAX7219 Digit is done using SPI for this component, you need
to have an :ref:`SPI bus <spi>` in your configuration with both the **mosi_pin** set (miso_pin is not required).
Connect VCC to 3.3V (the manufacturer recommends 4+ V, but 3.3V seems to work fine), DIN to your ``mosi_pin`` and
CS to your set ``cs_pin`` and finally GND to GND.

View File

@ -18,15 +18,15 @@ with ESPHome.
As the communication with the Nextion LCD display is done using UART, you need to have an :ref:`UART bus <uart>`
in your configuration with ``rx_pin`` both the ``tx_pin`` set to the respective pins on the display.
The Nextion uses a baud rate of 9600 by default. It may be configured to use a faster speed by adding (for
example)
example)
.. code-block:: c++
baud=115200 // Sets the baud rate to 115200
bkcmd=0 // Tells the Nextion to not send responses on commands. This is the current default but can be set just in case
to the ``program.s`` source file (in the Nextion Editor) before the ``page`` line.
This permits faster communication with the Nextion display and it is highly recommended when using :ref:`uart-hardware_uarts`. Without a hardware uart make sure to set the baud rate to 9600.
@ -36,17 +36,9 @@ The below example configures a UART for the Nextion display to use
.. code-block:: yaml
# Example configuration entry
uart:
id: uart_2
rx_pin: GPIO16
tx_pin: GPIO17
baud_rate: 115200
display:
- platform: nextion
id: nextion1
uart_id: uart_2
lambda: |-
it.set_component_value("gauge", 50);
it.set_component_text("textview", "Hello World!");
@ -67,11 +59,13 @@ Configuration variables:
- **start_up_page** (*Optional*, int): Sets the page to display when ESPHome connects to the Nextion. (Nextion shows page 0 on start-up by default).
- **wake_up_page** (*Optional*, int): Sets the page to display after waking up
- **auto_wake_on_touch** (*Optional*, boolean): Sets if Nextion should auto-wake from sleep when touch press occurs.
- **exit_reparse_on_start** (*Optional*, boolean): Request the Nextion exit Active Reparse Mode before setup of the display. Defaults to ``false``.
- **on_setup** (*Optional*, :ref:`Action <config-action>`): An action to be performed after ESPHome connects to the Nextion. See :ref:`Nextion Automation <nextion-on_setup>`.
- **on_sleep** (*Optional*, :ref:`Action <config-action>`): An action to be performed when the Nextion goes to sleep. See :ref:`Nextion Automation <nextion-on_sleep>`.
- **on_wake** (*Optional*, :ref:`Action <config-action>`): An action to be performed when the Nextion wakes up. See :ref:`Nextion Automation <nextion-on_sleep>`.
- **on_page** (*Optional*, :ref:`Action <config-action>`): An action to be performed after a page change. See :ref:`Nextion Automation <nextion-on_page>`.
- **on_touch** (*Optional*, :ref:`Action <config-action>`): An action to be performed after a touch event (press or release). See :ref:`Nextion Automation <nextion-on_touch>`.
.. _display-nextion_lambda:
Rendering Lambda
@ -111,7 +105,7 @@ Lambda Calls
************
Several methods are available for use within :ref:`lambdas <config-lambda>`; these permit advanced functionality beyond simple
display updates. See the full :apiref:`nextion/nextion.h` for more info.
display updates. See the full :apiref:`nextion/nextion.h` for more info.
.. _nextion_upload_tft:
@ -124,7 +118,7 @@ The developer tools in Home Assistant can be used to trigger the update. The bel
services:
- service: update_nextion
then:
- lambda: 'id(nextion1)->upload_tft();'
- lambda: 'id(nextion1)->upload_tft();'
.. _nextion_update_all_components:
@ -176,7 +170,7 @@ The developer tools in Home Assistant can be used to trigger the update. The bel
.. _nextion_queue_types:
Queue Types:
Queue Types:
- SENSOR 0
- BINARY_SENSOR 1
- SWITCH 2
@ -259,12 +253,37 @@ Once you know the page id, it's time to update the components. Two strategies wo
break;
}
.. _nextion-on_touch:
``on_touch``
************
This automation is triggered when a component is pressed or released on the Nextion display.
The following arguments will be available:
- ``page_id``: Contains the id (integer) of the page where the touch happened.
- ``component_id``: Contains the id (integer) of the component touched. It's required that the component have "Send Component ID" enabled either for "Touch Press Event" and/or "Touch Release Event".
- ``touch_event``: It will be ``true`` for a "press" event, or ``false`` for a "release" event.
.. code-block:: yaml
on_touch:
then:
lambda: |-
ESP_LOGD("nextion.on_touch", "Nextion touch event detected!");
ESP_LOGD("nextion.on_touch", "Page Id: %i", page_id);
ESP_LOGD("nextion.on_touch", "Component Id: %i", component_id);
ESP_LOGD("nextion.on_touch", "Event type: %s", touch_event ? "Press" : "Release");
.. _nextion_upload_tft_file:
Uploading A TFT File
--------------------
This will download the file from the tft_url and will transfer it over the UART to the Nextion.
Once completed both the ESP and Nextion will reboot. During the upload process esphome will be
Once completed both the ESP and Nextion will reboot. During the upload process esphome will be
unresponsive and no logging will take place. This uses the same protocol as the Nextion editor and
only updates the changes of the TFT file. If HTTPS/SSL is enabled it will be about 1kB/sec.
@ -277,7 +296,7 @@ To host the TFT file you can use Home Assistant itself or any other web server.
Home Assistant
**************
To host the TFT file from Home Assistant, create a www directory if it doesn't exist in your config
To host the TFT file from Home Assistant, create a www directory if it doesn't exist in your config
directory. You can create a subdirectory for those files as well.
For example if the file is located
@ -294,8 +313,8 @@ The below NGINX example configuration will serve files out of the /var/www/nexti
.. code-block:: nginx
server {
listen 80;
access_log /var/log/nginx/nextion_access.log;
listen 80;
access_log /var/log/nginx/nextion_access.log;
error_log /var/log/nginx/nextion_error.log;
root /var/www/nextion;
}

View File

@ -0,0 +1,186 @@
Quad SPI AMOLED Displays
========================
.. seo::
:description: Instructions for setting up quad SPI AMOLED displays.
:image: t4-s3.jpg
.. _qspi_amoled:
Models
------
This display driver supports AMOLED displays with quad SPI interfaces.
This driver has been tested with the following displays:
- Lilygo T4-S3
- Lilygo T-Display S3 AMOLED
Usage
-----
This component requires an ESP32 and the use of
ESP-IDF. PSRAM is a requirement due to the size of the display buffer. A :ref:`quad SPI bus <spi>` interface must be configured.
.. figure:: images/t4-s3.jpg
:align: center
:width: 75.0%
Lilygo T4-S3
.. figure:: images/t-display-amoled.jpg
:align: center
:width: 75.0%
Lilygo T-Display S3 AMOLED
.. code-block:: yaml
# Example minimal configuration entry
display:
- platform: qspi_amoled
model: RM690B0
data_rate: 80MHz
spi_mode: mode0
dimensions:
width: 450
height: 600
offset_width: 16
color_order: rgb
invert_colors: false
brightness: 255
cs_pin: GPIOXX
reset_pin: GPIOXX
enable_pin: GPIOXX
Configuration variables:
************************
- **model** (**Required**): One of ``RM67162`` or ``RM690B0``.
- **cs_pin** (**Required**, :ref:`Pin Schema <config-pin_schema>`): The chip select pin.
- **reset_pin** (*Optional*, :ref:`Pin Schema <config-pin_schema>`): The RESET pin.
- **enable_pin** (*Optional*, :ref:`Pin Schema <config-pin_schema>`): The display enable pin.
- **brightness** (*Optional*, int): A brightness value in the range 0-255
- **update_interval** (*Optional*, :ref:`config-time`): The interval to re-draw the screen. Defaults to ``5s``.
- **auto_clear_enabled** (*Optional*, boolean): Whether to automatically clear the display in each loop (''true'', default),
or to keep the existing display content (must overwrite explicitly, e.g., only on data change).
- **pages** (*Optional*, list): Show pages instead of a single lambda. See :ref:`display-pages`.
- **id** (*Optional*, :ref:`config-id`): Manually specify the ID used for code generation.
- **color_order** (*Optional*): Should be one of ``rgb`` (default) or ``bgr``.
- **dimensions** (**Required**): Dimensions of the screen, specified either as *width* **x** *height* (e.g ``320x240``) or with separate config keys.
- **height** (**Required**, int): Specifies height of display in pixels.
- **width** (**Required**, int): Specifies width of display.
- **offset_width** (*Optional*, int): Specify an offset for the x-direction of the display, typically used when a display is smaller than the maximum supported by the driver chip. Default is 0
- **offset_height** (*Optional*, int): Specify an offset for the y-direction of the display. Default is 0.
- **rotation** (*Optional*): Rotate the display presentation in software. Choose one of ````, ``90°``, ``180°``, or ``270°``.
- **transform** (*Optional*): Transform the display presentation using hardware. All defaults are ``false``. This option cannot be used with ``rotation``.
- **swap_xy** (*Optional*, boolean): If true, exchange the x and y axes.
- **mirror_x** (*Optional*, boolean): If true, mirror the x axis.
- **mirror_y** (*Optional*, boolean): If true, mirror the y axis.
- **data_rate** (*Optional*): Set the data rate of the SPI interface to the display. One of ``80MHz``, ``40MHz``, ``20MHz``, ``10MHz`` (default), ``5MHz``, ``2MHz`` or ``1MHz``.
- **spi_mode** (*Optional*): Set the mode for the SPI interface to the display. Default is ``MODE0``.
- **invert_colors** (*Optional*): With this boolean option you can invert the display colors.
- **lambda** (*Optional*, :ref:`lambda <config-lambda>`): The lambda to use for rendering the content on the display.
See :ref:`display-engine` for more information.
Example configurations
----------------------
Lilygo T4-S3
************
.. code-block:: yaml
spi:
id: quad_spi
type: quad
clk_pin: 15
data_pins: [14, 10, 16, 12]
i2c:
sda: 6
scl: 7
touchscreen:
- platform: cst226
id: my_touchscreen
interrupt_pin: 8
reset_pin: 17
display:
- platform: qspi_amoled
model: RM690B0
data_rate: 80MHz
spi_mode: mode0
dimensions:
width: 450
height: 600
offset_width: 16
color_order: rgb
invert_colors: false
brightness: 255
cs_pin: 11
reset_pin: 13
enable_pin: 9
update_interval: never
auto_clear_enabled: false
psram:
mode: octal
speed: 80MHz
Lilygo T-Display S3 AMOLED
**************************
.. code-block:: yaml
spi:
id: quad_spi
type: quad
clk_pin: 47
data_pins:
- 18
- 7
- 48
- 5
i2c:
sda: 3
scl: 2
touchscreen:
- platform: cst816
id: my_touchscreen
interrupt_pin:
number: 21
display:
- platform: qspi_amoled
model: RM67162
id: main_lcd
dimensions:
height: 240
width: 536
transform:
mirror_x: true
swap_xy: true
color_order: rgb
brightness: 255
cs_pin: 6
reset_pin: 17
enable_pin: 38
See Also
--------
- :doc:`index`
- :apiref:`qspi_amoled/qspi_amoled.h`
- :ghedit:`Edit`

View File

@ -0,0 +1,213 @@
RPI_DPI_RGB Display Driver
===========================
.. seo::
:description: Instructions for setting up 16 bit "RPI_DPI_RGB" parallel displays
:image: waveshare_touch-s3.jpg
.. _rpi_dpi_rgb:
Models
------
This display driver supports displays with 16 bit parallel interfaces, often referred to as "RPI_DPI_RGB" type.
These have a parallel interface but no SPI interface and require no configuration of the driver chip.
This driver has been tested with the following displays:
- Waveshare ESP32-S3-Touch-LCD-4.3
- Makerfabs 4.3" display (Sunton)
Usage
-----
This component requires an ESP32 (usually an ESP32-S3 because of the number of GPIO pins required) and the use of
ESP-IDF. PSRAM is a requirement due to the size of the display buffer.
.. figure:: images/waveshare_touch-s3.jpg
:align: center
:width: 75.0%
Waveshare ESP32-S3 Touch 4.3
.. code-block:: yaml
# Example minimal configuration entry
display:
- platform: rpi_dpi_rgb
id: rpi_disp
dimensions:
width: 800
height: 480
de_pin: REPLACE_ME
hsync_pin: REPLACE_ME
vsync_pin: REPLACE_ME
pclk_pin: REPLACE_ME
data_pins:
red:
- XX #r1
- XX #r2
- XX #r3
- XX #r4
- XX #r5
green:
- XX #g0
- XX #g1
- XX #g2
- XX #g3
- XX #g4
- XX #g5
blue:
- XX #b1
- XX #b2
- XX #b3
- XX #b4
- XX #b5
Configuration variables:
************************
- **data_pins** (**Required**) A list of pins used for the databus. Specified in 3 groups:
- **red**: (**Required**, :ref:`Pin Schema <config-pin_schema>`) Exactly 5 pin numbers for the red databits, listed from least to most significant bit.
- **green**: (**Required**, :ref:`Pin Schema <config-pin_schema>`) Exactly 6 pin numbers for the green databits, listed from least to most significant bit.
- **blue**: (**Required**, :ref:`Pin Schema <config-pin_schema>`) Exactly 5 pin numbers for the blue databits, listed from least to most significant bit.
- **de_pin** (**Required**, :ref:`Pin Schema <config-pin_schema>`): The DE pin
- **pclk_pin** (**Required**, :ref:`Pin Schema <config-pin_schema>`): The PCLK pin.
- **hsync_pin** (**Required**, :ref:`Pin Schema <config-pin_schema>`): The Horizontal sync pin.
- **vsync_pin** (**Required**, :ref:`Pin Schema <config-pin_schema>`): The Vertical sync pin.
- **reset_pin** (*Optional*, :ref:`Pin Schema <config-pin_schema>`): The RESET pin.
- **hsync_pulse_width** (*Optional*, int): The horizontal sync pulse width.
- **hsync_front_porch** (*Optional*, int): The horizontal front porch length.
- **hsync_back_porch** (*Optional*, int): The horizontal back porch length.
- **vsync_pulse_width** (*Optional*, int): The vertical sync pulse width.
- **vsync_front_porch** (*Optional*, int): The vertical front porch length.
- **vsync_back_porch** (*Optional*, int): The vertical back porch length.
- **update_interval** (*Optional*, :ref:`config-time`): The interval to re-draw the screen. Defaults to ``5s``.
- **auto_clear_enabled** (*Optional*, boolean): Whether to automatically clear the display in each loop (''true'', default),
or to keep the existing display content (must overwrite explicitly, e.g., only on data change).
- **pages** (*Optional*, list): Show pages instead of a single lambda. See :ref:`display-pages`.
- **id** (*Optional*, :ref:`config-id`): Manually specify the ID used for code generation.
- **color_order** (*Optional*): Should be one of ``bgr`` (default) or ``rgb``.
- **dimensions** (**Required**): Dimensions of the screen, specified either as *width* **x** *height* (e.g ``320x240``) or with separate config keys.
- **height** (**Required**, int): Specifies height of display in pixels.
- **width** (**Required**, int): Specifies width of display.
- **offset_width** (*Optional*, int): Specify an offset for the x-direction of the display, typically used when an LCD is smaller than the maximum supported by the driver chip. Default is 0
- **offset_height** (*Optional*, int): Specify an offset for the y-direction of the display. Default is 0.
- **pclk_frequency** (*Optional*): Set the pixel clock speed. Default is 16MHz.
- **pclk_inverted** (*Optional* bool): If the pclk is active negative (default is True)
- **invert_colors** (*Optional*): With this boolean option you can invert the display colors. **Note** some of the displays have this option set automatically to true and can't be changed.
- **rotation** (*Optional*): Rotate the display presentation in software. Choose one of ````, ``90°``, ``180°``, or ``270°``.
- **lambda** (*Optional*, :ref:`lambda <config-lambda>`): The lambda to use for rendering the content on the display.
See :ref:`display-engine` for more information.
The horizontal and vertical ``pulse_width``, ``front_porch`` and ``back_porch`` values are optional, but may require
changing for a specific display. Refer to the manufacturer's sample code for suitable values. These specify timing
requirements for the display.
Example configurations
----------------------
Waveshare ESP32-S3 Touch 4.3
****************************
.. code-block:: yaml
display:
- platform: rpi_dpi_rgb
auto_clear_enabled: false
color_order: RGB
pclk_frequency: 16MHz
dimensions:
width: 800
height: 480
de_pin:
number: 5
hsync_pin:
number: 46
ignore_strapping_warning: true
vsync_pin:
number: 3
ignore_strapping_warning: true
pclk_pin: 7
hsync_back_porch: 30
hsync_front_porch: 210
hsync_pulse_width: 30
vsync_back_porch: 4
vsync_front_porch: 4
vsync_pulse_width: 4
data_pins:
red:
- 1 #r3
- 2 #r4
- 42 #r5
- 41 #r6
- 40 #r7
blue:
- 14 #b3
- 38 #b4
- 18 #b5
- 17 #b6
- 10 #b7
green:
- 39 #g2
- 0 #g3
- 45 #g4
- 48 #g5
- 47 #g6
- 21 #g7
Makerfabs 4.3" 800x480 display
******************************
.. code-block:: yaml
display:
- platform: rpi_dpi_rgb
update_interval: never
auto_clear_enabled: false
id: rpi_display
color_order: RGB
rotation: 90
dimensions:
width: 800
height: 480
de_pin:
number: 40
hsync_pin: 39
vsync_pin: 41
pclk_pin: 42
data_pins:
red:
- 45 #r1
- 48 #r2
- 47 #r3
- 21 #r4
- 14 #r5
green:
- 5 #g0
- 6 #g1
- 7 #g2
- 15 #g3
- 16 #g4
- 4 #g5
blue:
- 8 #b1
- 3 #b2
- 46 #b3
- 9 #b4
- 1 #b5
See Also
--------
- :doc:`index`
- :apiref:`rpi_dpi_rgb/rpi_dpi_rgb.h`
- :ghedit:`Edit`

View File

@ -12,7 +12,9 @@ Over I²C
The ``ssd1306_i2c`` display platform allows you to use
SSD1306 (`datasheet <https://cdn-shop.adafruit.com/datasheets/SSD1306.pdf>`__,
`Adafruit <https://www.adafruit.com/product/326>`__), SSD1305 (`datasheet <https://cdn-shop.adafruit.com/datasheets/SSD1305.pdf>`__)
`Adafruit <https://www.adafruit.com/product/326>`__), SSD1305 (`datasheet <https://cdn-shop.adafruit.com/datasheets/SSD1305.pdf>`__),
SH1107 (`datasheet <https://cdn-learn.adafruit.com/assets/assets/000/094/580/original/SH1107_datasheet.pdf>`__,
`Adafruit <https://www.adafruit.com/product/4650>`__)
and SH1106 (`datasheet <https://www.elecrow.com/download/SH1106%20datasheet.pdf>`__,
`electrodragon <https://www.electrodragon.com/product/1-3-12864-blue-oled-display-iicspi/>`__)
displays with ESPHome. Note that this component is for displays that are connected via the :ref:`I²C Bus <i2c>`.
@ -58,6 +60,7 @@ Configuration variables:
- ``SH1106 96x16``
- ``SH1106 64x48``
- ``SH1107 128x64``
- ``SH1107 128x128``
- ``SSD1305 128x32``
- ``SSD1305 128x64``
@ -71,8 +74,8 @@ Configuration variables:
Defaults to ``false``.
- **flip_x** (*Optional*, boolean): Flip the horizontal axis on the screen. Defaults to ``true``.
- **flip_y** (*Optional*, boolean): Flip the vertical axis on the screen. Defaults to ``true``.
- **offset_x** (*Optional*, int): Set this option if some horizontal pixel is missing. Numbers are only allowed between ``-32~32``. Defaults to ``0``.
- **offset_y** (*Optional*, int): Set this option if some vertical pixel is missing. Numbers are only allowed between ``-32~32``. Defaults to ``0``.
- **offset_x** (*Optional*, int): Set this option if some horizontal pixel is missing. Numbers are only allowed between ``0~128``. Defaults to ``0``.
- **offset_y** (*Optional*, int): Set this option if some vertical pixel is missing. Numbers are only allowed between ``0~128``. Defaults to ``0``.
- **invert** (*Optional*, boolean): Invert all pixel state on the display. Defaults to ``false``.
- **lambda** (*Optional*, :ref:`lambda <config-lambda>`): The lambda to use for rendering the content on the display.
See :ref:`display-engine` for more information.
@ -138,6 +141,7 @@ Configuration variables:
- ``SH1106 96x16``
- ``SH1106 64x48``
- ``SH1107 128x64``
- ``SH1107 128x128``
- ``SSD1305 128x32``
- ``SSD1305 128x64``
@ -152,8 +156,8 @@ Configuration variables:
Defaults to ``false``.
- **flip_x** (*Optional*, boolean): Flip the horizontal axis on the screen. Defaults to ``true``.
- **flip_y** (*Optional*, boolean): Flip the vertical axis on the screen. Defaults to ``true``.
- **offset_x** (*Optional*, int): Set this option if some horizontal pixel is missing. Numbers are only allowed between ``-32~32``. Defaults to ``0``.
- **offset_y** (*Optional*, int): Set this option if some vertical pixel is missing. Numbers are only allowed between ``-32~32``. Defaults to ``0``.
- **offset_x** (*Optional*, int): Set this option if some horizontal pixel is missing. Numbers are only allowed between ``0~128``. Defaults to ``0``.
- **offset_y** (*Optional*, int): Set this option if some vertical pixel is missing. Numbers are only allowed between ``0~128``. Defaults to ``0``.
- **invert** (*Optional*, boolean): Invert all pixel state on the display. Defaults to ``false``.
- **lambda** (*Optional*, :ref:`lambda <config-lambda>`): The lambda to use for rendering the content on the display.
See :ref:`display-engine` for more information.
@ -168,6 +172,7 @@ See Also
- :doc:`index`
- :apiref:`ssd1306_base/ssd1306_base.h`
- `SH110x Library <https://github.com/adafruit/Adafruit_SH110x>`__ by `Adafruit <https://www.adafruit.com/>`__
- `SSD1306 Library <https://github.com/adafruit/Adafruit_SSD1306>`__ by `Adafruit <https://www.adafruit.com/>`__
- `SSD1305 Library <https://github.com/adafruit/Adafruit_SSD1305>`__ by `Adafruit <https://www.adafruit.com/>`__
- :ghedit:`Edit`

View File

@ -0,0 +1,191 @@
ST7567 LCD Graphic Display
==========================
.. seo::
:description: Instructions for setting up ST7567 Mono STN-LCD display drivers.
:image: st7567.jpg
.. _st7567:
Usage
-----
The ``st7567`` display platform allows you to use wide range of 128x64 display modules based on
Sitronix ST7567 chipset family (ST7567A, ST7567S, ST7567G, etc.) (`datasheet <https://github.com/latonita/datasheets-storage/blob/main/lcd-modules/ST7567A_V1.2b.pdf>`__,
`Sitronix <https://www.sitronix.com.tw/en/products/industrial-display-driver-ic/mono-stn-lcd-driver-ic/>`__,
`Aliexpress <https://www.aliexpress.com/af/st7567s.html>`__) with ESPHome.
Note that this component is for displays that are connected via the :ref:`I²C Bus <i2c>` (see :ref:`st7567-i2c`)
or 3-Wire or 4-Wire :ref:`SPI bus <spi>` (see :ref:`st7567-spi`).
It's a monochrome LCD graphic display.
.. figure:: images/st7567-full.jpg
:align: center
:width: 75.0%
ST7567A based LCD Graphic Display (I²C)
.. note::
**Voltage:** Check your module specs for required power. Most of the modules are tolerant to range of voltages from 3.3V to 5V, but some might require either 5V or 3.3V.
**Electrical interference:** To reduce malfunction caused by noise, datasheet recommends to "use the refresh sequence regularly in a specified interval".
Noone knows what exact interval is - it varies based on your electrical environment - some might need it every hour, for example.
Without doing refresh sequence picture on LCD might get glitchy after some time.
You can plan refresh by using ``interval:`` section and calling ``request_refresh()`` function, after that it will perform display
refresh sequence on next component update.
.. _st7567-i2c:
Over I²C
--------
Connect ``SDA`` and ``SCL`` pins on a module to pins you chose for the :ref:`I²C Bus <i2c>`.
If your display module has ``RESET`` pin you may optionally connect it to a pin on the
ESP which may improve reliability. For power, connect ``VCC`` to 3.3V and ``GND`` to ``GND``.
.. code-block:: yaml
# Example minimal configuration entry
i2c:
sda: D1
scl: D2
display:
- platform: st7567_i2c
id: my_display
lambda: |-
it.print(0, 0, id(my_font), "Hello World!");
interval:
- interval: 1h
then:
- lambda: id(my_display).request_refresh();
Configuration variables:
************************
- **address** (*Optional*, int): Manually specify the :ref:`I²C <i2c>` address of the display. Defaults to 0x3F.
- **i2c_id** (*Optional*, :ref:`config-id`): Manually specify the ID of the :ref:`I²C Component <i2c>` if you want
to use multiple I²C buses.
- **reset_pin** (*Optional*, :ref:`Pin Schema <config-pin_schema>`): The RESET pin. Defaults to not connected.
- **id** (*Optional*, :ref:`config-id`): Manually specify the ID used for code generation.
- **update_interval** (*Optional*, :ref:`config-time`): The interval to re-draw the screen. Defaults to ``1s``.
- **pages** (*Optional*, list): Show pages instead of a single lambda. See :ref:`display-pages`.
- **lambda** (*Optional*, :ref:`lambda <config-lambda>`): The lambda to use for rendering the content on the display.
- **invert_colors** (*Optional*, boolean): Display hardware color invesion. Defaults to ``false``.
- **rotation** (*Optional*): Set the rotation of the display. Everything you draw in ``lambda:`` will be rotated
by this option. One of ```` (default), ``90°``, ``180°``, ``270°``.
- **transform** (*Optional*): Transform the display presentation using hardware. All defaults are ``false``.
- **mirror_x** (*Optional*, boolean): If true, mirror the physical X axis.
- **mirror_y** (*Optional*, boolean): If true, mirror the physical Y axis.
**Speeding up the bus:** To speed up the display update process you can select higher I²C frequencies, for example:
.. code-block:: yaml
# Example increased I²C bus speed
i2c:
sda: D1
scl: D2
frequency: 400kHz
**Hardware rotation:** 180 degree rotation can be implemented in hardware as in the following example:
.. code-block:: yaml
# Example using transform section to achieve 180° rotation using hardware
display:
- platform: st7567_i2c
id: my_display
transform:
mirror_x: true
mirror_y: true
lambda: |-
it.print(0, 0, id(my_font), "Hello World!");
.. _st7567-spi:
Over SPI
--------
Connect ``D0`` to the ``CLK`` pin you chose for the :ref:`SPI bus <spi>`, connect ``D1`` to the ``MOSI`` pin and ``DC`` and ``CS``
to some GPIO pins on the ESP. For power, connect ``VCC`` to 3.3V and ``GND`` to ``GND``.
Optionally you can also connect the ``RESET`` pin to a pin on the ESP which may improve reliability.
.. code-block:: yaml
# Example minimal configuration entry
spi:
clk_pin: D1
mosi_pin: D2
display:
- platform: st7567_spi
id: my_display
dc_pin: D3
lambda: |-
it.print(0, 0, id(my_font), "Hello World!");
interval:
- interval: 1h
then:
- lambda: id(my_display).request_refresh();
Configuration variables:
************************
- **dc_pin** (**Required**, :ref:`Pin Schema <config-pin_schema>`): The DC pin.
- **cs_pin** (*Optional*, :ref:`Pin Schema <config-pin_schema>`): The Chip Select (CS) pin.
- **reset_pin** (*Optional*, :ref:`Pin Schema <config-pin_schema>`): The RESET pin. Defaults to not connected.
- **spi_id** (*Optional*, :ref:`config-id`): Manually specify the ID of the :ref:`SPI Component <spi>` if you want
to use multiple SPI buses.
- **id** (*Optional*, :ref:`config-id`): Manually specify the ID used for code generation.
- **update_interval** (*Optional*, :ref:`config-time`): The interval to re-draw the screen. Defaults to ``1s``.
- **pages** (*Optional*, list): Show pages instead of a single lambda. See :ref:`display-pages`.
- **lambda** (*Optional*, :ref:`lambda <config-lambda>`): The lambda to use for rendering the content on the display.
- **invert_colors** (*Optional*, boolean): Display hardware color invesion. Defaults to ``false``.
- **rotation** (*Optional*): Set the rotation of the display. Everything you draw in ``lambda:`` will be rotated
by this option. One of ```` (default), ``90°``, ``180°``, ``270°``.
- **transform** (*Optional*): Transform the display presentation using hardware. All defaults are ``false``.
- **mirror_x** (*Optional*, boolean): If true, mirror the physical X axis.
- **mirror_y** (*Optional*, boolean): If true, mirror the physical Y axis.
**Hardware rotation:** 180 degree rotation can be implemented in hardware as in the following example:
.. code-block:: yaml
# Example using transform section to achieve 180° rotation using hardware
display:
- platform: st7567_spi
id: my_display
dc_pin: D3
transform:
mirror_x: true
mirror_y: true
lambda: |-
it.print(0, 0, id(my_font), "Hello World!");
See Also
--------
- :doc:`index`
- :ref:`display-engine`
- :ref:`Display Menu <display_menu>`
- :ref:`i2c`
- :ref:`spi`
- :apiref:`st7567/st7567.h`
- :ghedit:`Edit`

View File

@ -0,0 +1,199 @@
ST7701S Display Driver
======================
.. seo::
:description: Instructions for setting up ST7701S 16 bit "RGB" parallel displays
:image: indicator.jpg
.. _st7701s:
Models
------
This display driver supports displays with 16 bit parallel interfaces, often referred to as "RGB". It currently
supports the ST7701S chip.
This driver has been tested with the following displays:
- Seeed Sensecap Indicator
- Makerfabs 4" display
Usage
-----
This component requires an ESP32 (usually an ESP32-S3 because of the number of GPIO pins required) and the use of
ESP-IDF. PSRAM is a requirement due to the size of the display buffer.
.. figure:: images/indicator.jpg
:align: center
:width: 75.0%
Sensecap Indicator display
.. code-block:: yaml
# Example minimal configuration entry
display:
- platform: st7701s
dimensions:
width: 480
height: 480
cs_pin: REPLACE_ME
reset_pin: REPLACE_ME
de_pin: REPLACE_ME
hsync_pin: REPLACE_ME
vsync_pin: REPLACE_ME
pclk_pin: REPLACE_ME
# Replace XX with the correct pin number
data_pins:
red:
- XX #r1
- XX #r2
- XX #r3
- XX #r4
- XX #r5
green:
- XX #g0
- XX #g1
- XX #g2
- XX #g3
- XX #g4
- XX #g5
blue:
- XX #b1
- XX #b2
- XX #b3
- XX #b4
- XX #b5
Configuration variables:
************************
- **init_sequence** (*Optional*, A list of byte arrays): Specifies the init sequence for the display
- **data_pins** (**Required**): A list of pins used for the databus. Specified in 3 groups.
- **red**: (**Required**, :ref:`Pin Schema <config-pin_schema>`) Exactly 5 pin numbers for the red databits, listed from least to most significant bit.
- **green**: (**Required**, :ref:`Pin Schema <config-pin_schema>`) Exactly 6 pin numbers for the green databits, listed from least to most significant bit.
- **blue**: (**Required**, :ref:`Pin Schema <config-pin_schema>`) Exactly 5 pin numbers for the blue databits, listed from least to most significant bit.
- **de_pin** (**Required**, :ref:`Pin Schema <config-pin_schema>`): The DE pin.
- **dc_pin** (*Optional*, :ref:`Pin Schema <config-pin_schema>`): The DC pin.
- **pclk_pin** (**Required**, :ref:`Pin Schema <config-pin_schema>`): The PCLK pin.
- **hsync_pin** (**Required**, :ref:`Pin Schema <config-pin_schema>`): The Horizontal sync pin.
- **vsync_pin** (**Required**, :ref:`Pin Schema <config-pin_schema>`): The Vertical sync pin.
- **reset_pin** (*Optional*, :ref:`Pin Schema <config-pin_schema>`): The RESET pin.
- **hsync_pulse_width** (*Optional*, int): The horizontal sync pulse width.
- **hsync_front_porch** (*Optional*, int): The horizontal front porch length.
- **hsync_back_porch** (*Optional*, int): The horizontal back porch length.
- **vsync_pulse_width** (*Optional*, int): The vertical sync pulse width.
- **vsync_front_porch** (*Optional*, int): The vertical front porch length.
- **vsync_back_porch** (*Optional*, int): The vertical back porch length.
- **pclk_frequency** (*Optional*): Set the pixel clock speed. Default is 8MHz.
- **pclk_inverted** (*Optional* bool): If the pclk is active negative (default is True)
- **update_interval** (*Optional*, :ref:`config-time`): The interval to re-draw the screen. Defaults to ``5s``.
- **auto_clear_enabled** (*Optional*, boolean): Whether to automatically clear the display in each loop (''true'', default),
or to keep the existing display content (must overwrite explicitly, e.g., only on data change).
- **pages** (*Optional*, list): Show pages instead of a single lambda. See :ref:`display-pages`.
- **id** (*Optional*, :ref:`config-id`): Manually specify the ID used for code generation.
- **color_order** (*Optional*): Should be one of ``bgr`` (default) or ``rgb``.
- **dimensions** (**Required**): Dimensions of the screen, specified either as *width* **x** *height* (e.g ``320x240``) or with separate config keys.
- **height** (**Required**, int): Specifies height of display in pixels.
- **width** (**Required**, int): Specifies width of display.
- **offset_width** (*Optional*, int): Specify an offset for the x-direction of the display, typically used when an LCD is smaller than the maximum supported by the driver chip. Default is 0
- **offset_height** (*Optional*, int): Specify an offset for the y-direction of the display. Default is 0.
- **data_rate** (*Optional*): Set the data rate of the SPI interface to the display. One of ``80MHz``, ``40MHz``,
``20MHz``, ``10MHz``, ``5MHz``, ``2MHz``, ``1MHz`` (default), ``200kHz``, ``75kHz`` or ``1kHz``.
- **spi_mode** (*Optional*): Set the mode for the SPI interface to the display. Default is ``MODE0`` but some displays require ``MODE3``.
- **invert_colors** (*Optional*): With this boolean option you can invert the display colors. **Note** some of the displays have this option set automatically to true and can't be changed.
- **rotation** (*Optional*): Rotate the display presentation in software. Choose one of ````, ``90°``, ``180°``, or ``270°``. This option cannot be used with ``transform``.
- **transform** (*Optional*): Transform the display presentation using hardware. All defaults are ``false``. This option cannot be used with ``rotation``.
- **swap_xy** (*Optional*, boolean): If true, exchange the x and y axes.
- **mirror_x** (*Optional*, boolean): If true, mirror the x axis.
- **mirror_y** (*Optional*, boolean): If true, mirror the y axis.
- **lambda** (*Optional*, :ref:`lambda <config-lambda>`): The lambda to use for rendering the content on the display.
See :ref:`display-engine` for more information.
**Note:** To rotate the display in hardware use one of the following combinations:
- 90 degrees - use ``swap_xy`` with ``mirror_x``
- 180 degrees - use ``mirror_x`` with ``mirror_y``
- 270 degrees - use ``swap_xy`` with ``mirror_y``
The horizontal and vertical ``pulse_width``, ``front_porch`` and ``back_porch`` values are optional, but may require
changing for a specific display. Refer to the manufacturer's sample code for suitable values. These specify timing
requirements for the display.
The ``init_sequence`` requires a list of elements, one of which may be a single integer selecting a canned init
sequence (the default and currently the only sequence is 1), the remainder must be byte arrays providing additional
init commands, each consisting of a command byte followed by zero or more data bytes.
These will be collected and sent to the display via SPI during initialisation.
Example configurations
----------------------
Seeed Sensecap Indicator
************************
.. code-block:: yaml
display:
- platform: st7701s
auto_clear_enabled: false
update_interval: never
spi_mode: MODE3
color_order: RGB
dimensions:
width: 480
height: 480
invert_colors: true
transform:
mirror_x: true
mirror_y: true
cs_pin:
pca9554: p_c_a
number: 4
reset_pin:
pca9554: p_c_a
number: 5
de_pin: 18
hsync_pin: 16
vsync_pin: 17
pclk_pin: 21
init_sequence:
- 1 # select canned init sequence number 1
- [ 0xE0, 0x1F ] # Set sunlight readable enhancement
data_pins:
red:
- 4 #r1
- 3 #r2
- 2 #r3
- 1 #r4
- 0 #r5
green:
- 10 #g0
- 9 #g1
- 8 #g2
- 7 #g3
- 6 #g4
- 5 #g5
blue:
- 15 #b1
- 14 #b2
- 13 #b3
- 12 #b4
- 11 #b5
lambda: |-
it.fill(COLOR_BLACK);
it.print(0, 0, id(my_font), id(my_red), TextAlign::TOP_LEFT, "Hello World!");
See Also
--------
- :doc:`index`
- :apiref:`st7701s/st7701s.h`
- :ghedit:`Edit`

View File

@ -25,6 +25,12 @@ The TTGO T-Display module shown has the display attached to the module's board a
cannot be changed. Other display modules have pin headers or other connectors which must be connected appropriately
to an ESP module.
.. warning::
This component has been made redundant since the ST7789V is now supported by the :ref:`ILI9XXX component <ili9xxx>`. It is recommended
that you use the ``ili9xxx`` component as it will be maintained, whereas this component may not be, or may be removed completely
in the future.
.. note::
Displays larger than the 135x240 pixel display on the TTGO T-Display shown require a significant amount of RAM
@ -34,17 +40,13 @@ to an ESP module.
.. code-block:: yaml
# Example minimal configuration entry
spi:
clk_pin: GPIO18
mosi_pin: GPIO19
display:
- platform: st7789v
model: TTGO TDisplay 135x240
backlight_pin: GPIO4
cs_pin: GPIO5
dc_pin: GPIO16
reset_pin: GPIO23
backlight_pin: GPIOXX
cs_pin: GPIOXX
dc_pin: GPIOXX
reset_pin: GPIOXX
lambda: |-
it.print(0, 0, id(font), "Hello World!");
@ -72,6 +74,7 @@ If you do specify them they will override any default.
- ``Adafruit RR 280x240`` (round-rectangular display -- some pixels are "deleted" from corners to form rounded shape)
- ``Adafruit S2 TFT FEATHER 240X135``
- ``LILYGO T-Embed 170X320``
- ``Waveshare 1.47in 172X320`` (round-rectangular display -- some pixels are "deleted" from corners to form rounded shape)
- ``Custom`` For other displays not listed above
- **height** (**Required**, int): Sets height of display in pixels. Defaults depends ``model``.
@ -177,6 +180,16 @@ Items marked RQ are hardware dependent but required and not preset. Items marked
- 46
- 12
- 11
* - Waveshare 1.47in 172X320
- 320/172
- 34/0
- 21
- 22
- 23
- 4
-
- 18
- 19
* - Custom
- RQ
- RQ

View File

@ -22,10 +22,10 @@ The LCD have four signal, ``cs`` for chip select, ``data`` for data signal, ``re
display:
platform: tm1621
id: tm1621_display
cs_pin: GPIO17
data_pin: GPIO5
read_pin: GPIO23
write_pin: GPIO18
cs_pin: GPIOXX
data_pin: GPIOXX
read_pin: GPIOXX
write_pin: GPIOXX
lambda: |-
it.printf(0, "%.1f", id(my_sensor1).state);
it.display_celsius(true);
@ -82,7 +82,7 @@ Also we have five function to display or not some unites:
- °F on the first line : ``display_fahrenheit(bool)``
- %HR on the second line : ``display_humidity(bool)``
- V on the first line and A on the second line : ``display_voltage(bool)``
- kW/h on the first line and W on the second line : ``display_kwh(bool)``
- kW/h on the first line and W on the second line : ``display_kwh(bool)``
See Also
--------

Some files were not shown because too many files have changed in this diff Show More