Compare commits

...

159 Commits

Author SHA1 Message Date
Madelena Mak daa22aaaa5
New branding for ESPHome (#3926) 2024-06-10 22:26:53 +12:00
mrtoy-me 52179cea24
SHT3xd component - Provide example i2c configuration for >50-100Khz i2c frequencies on IDF (#3921)
* Update for higher i2c frequencies on IDF

* Update sht3xd.rst
2024-06-07 17:03:37 +02:00
Jesse Hills 3e814bfd88
Merge pull request #3916 from esphome/bump-2024.5.5
2024.5.5
2024-06-05 16:38:48 +12:00
Jesse Hills f58dbc4659
Update supporters for 2024.5.5 2024-06-05 15:56:03 +12:00
Jesse Hills 7bd700075f
Update changelog for 2024.5.5 2024-06-05 15:55:22 +12:00
Jesse Hills ebea2ef787
Bump version to 2024.5.5 2024-06-05 15:51:30 +12:00
Jesse Hills b21af22549
Install pagefind in devcontainer (#3901)
Co-authored-by: H. Árkosi Róbert <robreg@zsurob.hu>
2024-06-05 11:58:20 +12:00
John Romkey 80fe66a9aa
Add Seeed Studio XIAO ESP32S3 Sense pins to esp32_camera.rst (#3446)
* Add Seeed Studio XIAO ESP32S3 Sense pins to esp32_camera.rst

Added camera pin configuration for Seeed Studio XIAO ESP32S3 Sense to Camera page

* Added missing blank line

* Update esp32_camera.rst

---------

Co-authored-by: H. Árkosi Róbert <robreg@zsurob.hu>
2024-06-04 15:34:45 +02:00
ave 39abfa64e3
Improve SGP30 humidity compensation documentation (#3556)
* Improve SGP30 compensation documentation

* Use must instead of should, fix celsius spelling
2024-06-04 15:25:34 +02:00
Steffen Arntz 992b09a145
Reorder and reference the mirdea_ir variant example. (#3767)
This Example has previously not been referenced and had been misplaced at the top of the variants.
2024-06-04 15:19:58 +02:00
John Mueller 21820a7c84
Include note about Daylight Savings Time duplication/skipping (#3771)
It's probably clear to most people that setting up a trigger for the 31st of every month will fail in February, but apparently triggers between 1am and 3am are also fragile once a year. For non-disruptive or regular triggers, this might not be an issue -- if you want to turn off a device at 2am using on_time, you should know that it will fail once a week. Similarly, if you want to do a daily trigger at 1am, you should know that it will trigger twice a day once a year. 

This does not seem super-obvious until you've run into it, so I propose adding a note to the documentation. It also doesn't feel like something that should be changed in the functionality to match cron's behavior, given that it would change the functionality of existing triggers. 

I'm not invested in the exact wording / location; I suspect pulling it out a bit into a more visible place makes it less likely for people to miss.

(Brought to you by a trigger that turns off an expensive device at 2am, only for it to run a full day instead :-)).
2024-06-04 15:18:47 +02:00
tronikos 9a3ed01c9b
Fix doc for template cover regarding position_action and has_position (#3762)
* Update template.rst

* Update template.rst
2024-06-04 15:14:40 +02:00
cypherbits c998495c7f
doc: wifi reboot_timeout disabled if ap enabled (#3824)
* doc: wifi reboot_timeout disabled if ap enabled

* Update wifi.rst

* Update wifi.rst

---------

Co-authored-by: H. Árkosi Róbert <robreg@zsurob.hu>
2024-06-04 15:12:54 +02:00
Ludovic BOUÉ ef967e9ff7
Update ens160.rst to add missing ens160_air_quality_index (#3720)
Co-authored-by: H. Árkosi Róbert <robreg@zsurob.hu>
2024-06-04 15:04:55 +02:00
lps2 54e394d8c0
Update to Addressable Color Wipe Example (#3903)
Update to the Addressable Color Wipe Example to correctly include gradient as an option of the color rather than the entire effect
2024-06-04 14:44:35 +02:00
Xavier Berger e9160aa3d2
doc(made_for_esphome): add quotes for better understanding of ESPHome usage (#3723)
Co-authored-by: H. Árkosi Róbert <robreg@zsurob.hu>
2024-06-04 14:02:20 +02:00
João Silva 35eb5c5b0f
Set SN74HC165's clock_inhibit_pin as optional (#3583)
* Set SN74HC165's clock_inhibit_pin as optional

The use of only 3 pins is mentioned, but the configuration values don't reflect that.
Datasheet specifies the pin can be directly connected to ground. The code already expects the pin to not be used: ec3162282c/esphome/components/sn74hc165/__init__.py (L35)

* Update sn74hc165.rst

* Update sn74hc165.rst

---------

Co-authored-by: H. Árkosi Róbert <robreg@zsurob.hu>
2024-06-04 13:46:12 +02:00
Jesse Hills a6d2050f30
Fix host icon in dark mode (#3910) 2024-06-04 15:10:01 +12:00
Tobias Marschall 3d475b3d31
Rename last_operation() to get_last_operation() & warn about bug http… (#3884)
Co-authored-by: H. Árkosi Róbert <robreg@zsurob.hu>
2024-06-02 22:55:18 +12:00
Clyde Stubbs 0b889e396b
Remove debug code from last PR (#3900)
* Make search results appear in a fixed window;
Make search text clickable;
Improve search layout on mobile.

* On window resize, adjust layout

* Maybe make Firefox not resize.

* Tweak initial- and maximum-scale

* Make live-html work with pagefind;
Make pagefind work in docker

* Lint

* Fix netlify deploy

* Remove debug code
2024-06-02 08:35:03 +02:00
Clyde Stubbs 0fbf7d0d99
Make pagefind work in docker (#3899)
* Make search results appear in a fixed window;
Make search text clickable;
Improve search layout on mobile.

* On window resize, adjust layout

* Maybe make Firefox not resize.

* Tweak initial- and maximum-scale

* Make live-html work with pagefind;
Make pagefind work in docker

* Lint

* Fix netlify deploy
2024-06-02 07:54:00 +02:00
Remy van Elst 308aba8011
Update i2s_microphone data value (#3732)
According to here: 4fcb26d69d/esphome/components/i2s_audio/microphone/i2s_audio_microphone.cpp (L138) it seems to be an int16_t

Co-authored-by: H. Árkosi Róbert <robreg@zsurob.hu>
2024-06-02 05:47:25 +00:00
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
320 changed files with 4478 additions and 2429 deletions

View File

@ -2,7 +2,7 @@
{ {
"name": "ESPHome - docs", "name": "ESPHome - docs",
"image": "mcr.microsoft.com/vscode/devcontainers/python:0-3.11", "image": "mcr.microsoft.com/vscode/devcontainers/python:0-3.11",
"postCreateCommand": "pip3 install -r requirements.txt -r requirements_test.txt", "postCreateCommand": ".devcontainer/postCreate.sh",
"postAttachCommand": "make live-html", "postAttachCommand": "make live-html",
"forwardPorts": [8000], "forwardPorts": [8000],
"features": { "features": {

5
.devcontainer/postCreate.sh Executable file
View File

@ -0,0 +1,5 @@
#!/bin/bash
pip3 install -r requirements.txt -r requirements_test.txt
curl -L https://github.com/CloudCannon/pagefind/releases/download/v1.1.0/pagefind-v1.1.0-x86_64-unknown-linux-musl.tar.gz | tar -xz -C ~/.local/bin

View File

@ -18,9 +18,14 @@ jobs:
build: build:
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
-
name: Install pagefind
uses: jaxxstorm/action-install-gh-release@v1.12.0
with:
repo: cloudcannon/pagefind
- -
name: Checkout source code name: Checkout source code
uses: actions/checkout@v4.1.0 uses: actions/checkout@v4.1.6
- -
name: Set up QEMU name: Set up QEMU
uses: docker/setup-qemu-action@v3 uses: docker/setup-qemu-action@v3

View File

@ -19,7 +19,11 @@ jobs:
build: build:
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: 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 - name: Set up Python 3.8
uses: actions/setup-python@v5 uses: actions/setup-python@v5
with: with:

2
.gitignore vendored
View File

@ -11,3 +11,5 @@ venv
.vscode .vscode
*.DS_Store *.DS_Store
/.idea/ /.idea/
_pagefind/

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 \ RUN apt-get update && apt-get install -y --no-install-recommends \
curl \ curl \
@ -9,10 +9,39 @@ RUN apt-get update && apt-get install -y --no-install-recommends \
software-properties-common \ software-properties-common \
&& apt-get clean && rm -rf /var/lib/apt/lists/* /tmp/* && apt-get clean && rm -rf /var/lib/apt/lists/* /tmp/*
COPY requirements.txt . ENV PAGEFIND_VERSION="1.1.0"
ARG TARGETARCH
SHELL ["/bin/bash", "-c"]
RUN <<EOF
export TARGETARCH=${TARGETARCH/arm64/aarch64}
export TARGETARCH=${TARGETARCH/amd64/x86_64}
curl -o pagefind.tar.gz https://github.com/CloudCannon/pagefind/releases/download/v$PAGEFIND_VERSION/pagefind-v$PAGEFIND_VERSION-$TARGETARCH-unknown-linux-musl.tar.gz -L
tar xzf pagefind.tar.gz
rm pagefind.tar.gz
mv pagefind /usr/bin
chmod +x /usr/bin/pagefind
EOF
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 RUN pip3 install --no-cache-dir --no-binary :all: -r requirements.txt
EXPOSE 8000 EXPOSE 8000
WORKDIR /data/esphomedocs
CMD ["make", "live-html"] 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 # could be handy for archiving the generated documentation or if some version
# control system is used. # control system is used.
PROJECT_NUMBER = 2024.4.0b1 PROJECT_NUMBER = 2024.5.5
# Using the PROJECT_BRIEF tag one can provide an optional one line description # 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 # for a project that appears at the top of each page and should give viewer a

View File

@ -1,12 +1,21 @@
ESPHOME_PATH = ../esphome ESPHOME_PATH = ../esphome
ESPHOME_REF = 2024.4.0b1 ESPHOME_REF = 2024.5.5
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: pagefind build-html html html-strict cleanhtml deploy help live-html live-pagefind Makefile netlify netlify-api api netlify-dependencies svg2png copy-svg2png minify
html: html: pagefind
sphinx-build -M html . _build -j auto -n $(O) -Dhtml_extra_path=_redirects,_pagefind
pagefind:
sphinx-build -M html . _build -j auto -n $(O) sphinx-build -M html . _build -j auto -n $(O)
live-html: mkdir -p _pagefind/pagefind
sphinx-autobuild . _build -j auto -n $(O) --host 0.0.0.0 ${PAGEFIND}
live-html: pagefind
sphinx-autobuild . _build -j auto -n $(O) --host 0.0.0.0 -Dhtml_extra_path=_redirects,_pagefind
html-strict: html-strict:
sphinx-build -M html . _build -W -j auto -n $(O) sphinx-build -M html . _build -W -j auto -n $(O)
@ -32,6 +41,12 @@ api:
fi fi
ESPHOME_PATH=$(ESPHOME_PATH) doxygen Doxygen ESPHOME_PATH=$(ESPHOME_PATH) doxygen Doxygen
net-html:
sphinx-build -M html . _build -j auto -n $(O)
mkdir -p _pagefind/pagefind
${NET_PAGEFIND}
sphinx-build -M html . _build -j auto -n $(O) -Dhtml_extra_path=_redirects,_pagefind
netlify-api: netlify-dependencies netlify-api: netlify-dependencies
mkdir -p _build/html/api mkdir -p _build/html/api
@if [ ! -d "$(ESPHOME_PATH)" ]; then \ @if [ ! -d "$(ESPHOME_PATH)" ]; then \
@ -40,19 +55,31 @@ netlify-api: netlify-dependencies
fi fi
ESPHOME_PATH=$(ESPHOME_PATH) ../doxybin/doxygen Doxygen ESPHOME_PATH=$(ESPHOME_PATH) ../doxybin/doxygen Doxygen
netlify-dependencies: netlify-dependencies: pagefind-binary
mkdir -p ../doxybin 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 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 chmod +x ../doxybin/doxygen
pagefind-binary:
mkdir -p ../pagefindbin
curl -o pagefind.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.tar.gz
rm pagefind.tar.gz
mv pagefind ${NET_PAGEFIND}
copy-svg2png: copy-svg2png:
cp svg2png/*.png _build/html/_images/ 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 lint: html-strict
python3 lint.py python3 lint.py
clean:
rm -rf _pagefind/
sphinx-build -M clean . _build $(O)
# Catch-all target: route all unknown targets to Sphinx using the new # Catch-all target: route all unknown targets to Sphinx using the new
# "make mode" option. $(O) is meant as a shortcut for $(SPHINXOPTS). # "make mode" option. $(O) is meant as a shortcut for $(SPHINXOPTS).
%: Makefile %: Makefile

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.7 KiB

After

Width:  |  Height:  |  Size: 17 KiB

View File

@ -3,7 +3,7 @@
<msapplication> <msapplication>
<tile> <tile>
<square150x150logo src="/_static/mstile-150x150.png"/> <square150x150logo src="/_static/mstile-150x150.png"/>
<TileColor>#dfdfdf</TileColor> <TileColor>#18bcf2</TileColor>
</tile> </tile>
</msapplication> </msapplication>
</browserconfig> </browserconfig>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 278 KiB

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 { .row-odd {
background-color: #f3f6f6; background-color: #f3f6f6;
} }
@ -240,9 +246,77 @@ a:hover code {
background: none; 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 { div.body p, div.body dd, div.body li, div.body blockquote {
hyphens: none; 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;
}
/* New branding changes */
div.body h1, div.body h2, div.body h3, div.body h4, div.body h5, div.body h6, div.sphinxsidebar h3, div.sphinxsidebar h4, div.admonition p.admonition-title {
font-family: Figtree, system, -apple-system, ".SFNSText-Regular", "San Francisco", "Roboto", "Segoe UI", "Helvetica Neue", "Lucida Grande", sans-serif;
font-weight: 600;
}
div.body h1 {
font-size: 2.5rem;
}
body {
font-family: "Instrument Sans", system, -apple-system, ".SFNSText-Regular", "San Francisco", "Roboto", "Segoe UI", "Helvetica Neue", "Lucida Grande", sans-serif;
line-height: 1.5;
letter-spacing: 0.01rem;
}
div.body p, div.body dd, div.body li {
line-height: 1.6;
}
@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 */ /* dark theme */
@media (prefers-color-scheme: dark) { @media (prefers-color-scheme: dark) {
@ -339,4 +413,25 @@ div.body p, div.body dd, div.body li, div.body blockquote {
background-color: #8e8129; 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;
}
} }

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.7 KiB

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 695 B

After

Width:  |  Height:  |  Size: 311 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.8 KiB

After

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.0 KiB

After

Width:  |  Height:  |  Size: 2.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.2 KiB

After

Width:  |  Height:  |  Size: 495 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.2 KiB

After

Width:  |  Height:  |  Size: 5.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 15 KiB

After

Width:  |  Height:  |  Size: 48 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 19 KiB

After

Width:  |  Height:  |  Size: 9.4 KiB

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 6.8 KiB

After

Width:  |  Height:  |  Size: 5.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 17 KiB

After

Width:  |  Height:  |  Size: 12 KiB

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 7.1 KiB

After

Width:  |  Height:  |  Size: 5.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 17 KiB

After

Width:  |  Height:  |  Size: 12 KiB

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 7.1 KiB

After

Width:  |  Height:  |  Size: 5.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 18 KiB

After

Width:  |  Height:  |  Size: 8.8 KiB

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 6.8 KiB

After

Width:  |  Height:  |  Size: 5.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.7 KiB

After

Width:  |  Height:  |  Size: 1.4 KiB

View File

@ -1 +1,10 @@
<svg version="1.0" xmlns="http://www.w3.org/2000/svg" width="1066.667" height="1066.667" viewBox="0 0 800 800"><path d="M266.5 149.6c-12.4 3.1-19.4 8.1-24.5 17.5l-3.5 6.4-.3 17.6-.4 17.6-4.3.6c-6.1.9-11.1 4.2-14.3 9.6l-2.7 4.6-.3 160.2L216 544H94v-15h49c34.4 0 49.6-.3 51.4-1.1 5-2.3 5.7-6.1 5.4-27.4l-.3-19.5-2.8-2.7-2.7-2.8-50-.3-50-.3V460h99l3.2-2.9 3.3-2.9V412l-2.8-2.7-2.7-2.8-50-.3-50-.3v-14.8l50-.3 50-.3 2.7-2.8 2.8-2.7v-42.2l-3.3-2.9-3.2-2.9H94v-99.8l-2.6-3.1c-3.6-4.3-9.3-4.4-13.5-.2l-2.9 2.9v113.4l2.9 2.9 2.9 2.9H180v16H80.8l-2.9 2.9-2.9 2.9v41.4l2.9 2.9 2.9 2.9H180v16H80.8l-2.9 2.9-2.9 2.9v41l2.6 3.1 2.6 3.1H180v16H81.1l-2.8 2.4-2.8 2.4-.3 21-.3 21 3 3.4 2.9 3.3 67.5.3 67.5.2.7 4.3c.4 2.3 1.3 5.3 2 6.7 2.8 5.4 10.1 10 15.9 10h3.5l.3 19.7c.3 19 .4 20 3 25.5 5.4 11.6 15.2 18.1 28.3 18.6 9.8.5 17.1-1.9 23.7-7.7 9.3-8.2 11.8-17 11.8-41.4V585h12v15.3c0 8.4.5 18 1.1 21.3 2.2 11.9 9.9 21.4 20.8 25.5 7.8 2.9 19.4 2.4 26.6-1.3 6.4-3.4 12.8-10 15.7-16.3 2.1-4.6 2.3-6.7 2.6-24.8l.4-19.7h12.6l.4 19.7c.3 17.7.6 20.3 2.5 24.5 2.9 6.3 9.7 13.4 15.8 16.6 7.2 3.7 18.8 4.2 26.6 1.3 7.9-3 14.1-8.8 18.1-16.9l3.3-6.7.3-19.3.4-19.3 6.1.3 6.2.3.5 20c.5 19.5.6 20.1 3.3 25.3 3.5 6.7 9 12.2 15.3 15.3 4.1 2 6.4 2.4 14.4 2.4 8.1 0 10.3-.4 14.5-2.4 6.3-3.2 12.4-9.3 15.6-15.6 2.2-4.7 2.4-6.3 2.9-25l.5-20 6.1-.3 6.2-.3.3 19.3.4 19.3 3.3 6.7c4 8.1 10.2 13.9 18.1 16.9 7.8 2.9 19.4 2.4 26.6-1.3 6.1-3.2 12.9-10.3 15.8-16.6 2-4.2 2.2-6.7 2.5-24.5l.4-19.7h12.6l.4 19.7c.3 22.6 1.3 26.1 9.1 34.1 6.4 6.7 12.7 9.5 22.2 10 9.8.5 17-1.9 23.7-7.7 9.2-8.2 11.8-17 11.8-41.2v-14.6l4.5-.5c5.4-.7 10.2-3.7 13.6-8.7l2.4-3.6.3-173c.2-121 0-174.1-.8-176.7-2.1-7.2-10.2-13.7-17.1-13.8h-2.6l-.5-16.9c-.4-16.6-.5-17-3.6-23.4-5.9-12-16.9-19-29.6-19-13.6 0-24.8 7-30.4 19.1-2.5 5.4-2.7 6.7-3 22.9l-.4 17.3H623v-15.3c0-17.2-1.1-22.4-6.1-30.1-6.5-9.7-20.5-15.8-31.9-13.8-11.9 2.1-20.7 8.9-25.7 19.7-2.6 5.6-2.7 7-3.1 22.7l-.4 16.8H543v-16.5c0-14.1-.3-17.2-2-21.9-2.9-7.6-8.8-13.9-16.6-17.7-5.7-2.8-7.6-3.3-14.4-3.3-6.8 0-8.7.5-14.4 3.3-7.1 3.5-12.2 8.6-15.8 16-2.1 4.2-2.3 6.3-2.6 22.3l-.4 17.8h-12.6l-.4-16.8c-.6-19.7-1.7-23.7-8.8-31.5-8.6-9.5-20.5-13.2-32.1-10.2-10.5 2.6-18.2 9-22.8 18.5-2.4 5.1-2.6 6.6-2.9 22.7l-.4 17.3H384v-15.3c0-17.2-1.1-22.4-6.1-30.1-6.5-9.7-20.5-15.8-31.9-13.8-11.9 2.1-20.7 9-25.8 20.1-2.4 5.1-2.6 7-3 22.3l-.5 16.8H305v-12.3c0-21.3-2.8-30.7-11.3-38.4-7-6.2-20-10.4-27.2-8.7zm11.5 20.9c1.5.8 3.8 3 4.9 4.8 1.9 3.1 2.1 4.9 2.1 18.6V209h-28v-13.9c0-7.7.5-15.2 1.1-16.8 1.3-3.4 4.7-7.2 7.4-8.3 3.2-1.4 9.4-1.1 12.5.5zm81.6 1.6c4.6 4.2 5.4 7.6 5.4 22.9v14h-28v-15c0-16.9.8-19.6 6.3-23.1 4.5-2.8 12.7-2.2 16.3 1.2zm77.5-1.6c6 3.1 6.9 6.3 6.9 23.2V209h-28.2l.4-15.3c.2-12.7.6-15.8 2.1-18 4-6.1 12.4-8.4 18.8-5.2zm80.4.5c5.5 3.4 6.5 6.9 6.5 23.4V209h-28v-14.6c0-13 .2-15 2.1-18.3 1.1-2.1 3.3-4.5 4.7-5.4 3.7-2.3 10.7-2.2 14.7.3zm81.5 1.5c4.1 4 5 7.9 5 23.2V209h-28v-15c0-16.9.8-19.6 6.3-23.1 4.8-3 12.7-2.2 16.7 1.6zm77.1-2c6 3.1 6.9 6.3 6.9 23.2V209h-28v-13.9c0-7.7.5-15.2 1.1-16.8 1.3-3.4 4.7-7.2 7.4-8.3 3.3-1.4 9.4-1.1 12.6.5zm26.7 226.7l-.3 166.3-232.2.3-232.3.2V231h465l-.2 166.2zM285 602.3c0 14.8-.3 17.7-1.8 20.6-3.7 6.8-12.9 9.1-19.3 4.8-6.1-4-6.9-7.1-6.9-26V585h28v17.3zm79.5.7c0 19.5-.5 21.2-6.8 25-6.4 3.9-15.4 1.5-18.9-5.1-1.5-2.9-1.8-5.8-1.8-20.7v-17.3l13.8.3 13.7.3V603zm79.5-.3c0 15.7-.2 18.2-1.9 20.9-3.7 6.1-13.4 8.1-19.6 4-5-3.3-6-6.8-6.3-23.9-.2-8.7-.1-16.4.2-17.2.4-1.2 3.2-1.5 14.1-1.5H444v17.7zm80-.5c0 15.5-.2 17.6-2 20.6-4.3 7-12.8 9.2-19.1 4.9-6.1-4-6.9-7.1-6.9-26V585h28v17.2zm79.5.8c0 19.5-.5 21.2-6.8 25-6.1 3.8-14.9 1.7-18.7-4.5-1.8-2.9-2-4.9-2-20.9v-17.7l13.8.3 13.7.3V603zm79.5-.7c0 14.8-.3 17.7-1.8 20.6-3.7 6.8-12.9 9.1-19.3 4.8-6-4-6.9-7.1-6.9-25.3 0-8.8.3-16.4.7-16.7.3-.4 6.6-.7 14-.7H683v17.3z"/><path d="M413.7 359.8c-39.5 39.5-53.7 54.3-53.7 56 0 3.5 2.8 8.1 5.3 8.7 1.2.3 6.3.6 11.2.8l9 .2.5 32.3.5 32.4 2.4 1.9c2.2 1.8 5.1 1.9 82.1 1.9s79.9-.1 82.1-1.9l2.4-1.9.5-32.4.5-32.3 9-.2c11.8-.4 13.2-.8 15-4.3 2.8-5.4 2.1-6.6-11.5-20.5l-13-13.2v-22.4c-.1-16-.4-22.9-1.3-24-2.4-3.1-5.6-3.9-15.7-3.9-9.9 0-10.2.1-13.1 2.9-2.4 2.5-2.9 3.7-2.9 8 0 2.8-.3 5.1-.8 5.1-.4 0-11.3-10.6-24.2-23.5-21.8-21.8-23.7-23.5-27-23.5-3.3 0-6.6 3.1-57.3 53.8z"/></svg> <svg width="512" height="512" viewBox="0 0 512 512" fill="none" xmlns="http://www.w3.org/2000/svg">
<g clip-path="url(#clip0_2_408)">
<path d="M372.68 238.9L267.32 133.52C261.1 127.3 250.92 127.3 244.7 133.52L139.32 238.9C133.1 245.12 128 257.42 128 266.22V362.22C128 371.02 135.2 378.22 144 378.22H206.94V218.92C206.94 215.38 209.8 212.52 213.34 212.52H298.68C302.22 212.52 305.08 215.38 305.08 218.92V244.52C305.08 248.06 302.22 250.92 298.68 250.92H245.34V263.72H298.68C302.22 263.72 305.08 266.58 305.08 270.12V295.72C305.08 299.26 302.22 302.12 298.68 302.12H245.34V314.92H298.68C302.22 314.92 305.08 317.78 305.08 321.32V346.92C305.08 350.46 302.22 353.32 298.68 353.32H238.94C235.4 353.32 232.54 350.46 232.54 346.92C232.54 343.38 235.4 340.52 238.94 340.52H292.28V327.72H238.94C235.4 327.72 232.54 324.86 232.54 321.32V295.72C232.54 292.18 235.4 289.32 238.94 289.32H292.28V276.52H238.94C235.4 276.52 232.54 273.66 232.54 270.12V244.52C232.54 240.98 235.4 238.12 238.94 238.12H292.28V225.32H219.74V378.22H368C376.8 378.22 384 371.02 384 362.22V266.22C384 257.42 378.9 245.12 372.68 238.9Z" fill="#F2F4F9"/>
</g>
<defs>
<clipPath id="clip0_2_408">
<rect width="256" height="256" fill="white" transform="translate(128 128.62)"/>
</clipPath>
</defs>
</svg>

Before

Width:  |  Height:  |  Size: 4.1 KiB

After

Width:  |  Height:  |  Size: 1.2 KiB

View File

@ -33,8 +33,8 @@
"type": "image/png" "type": "image/png"
} }
], ],
"theme_color": "#dfdfdf", "theme_color": "#18bcf2",
"background_color": "#dfdfdf", "background_color": "#18bcf2",
"start_url": "https://esphome.io/", "start_url": "https://esphome.io/",
"display": "standalone" "display": "standalone"
} }

View File

@ -1 +1 @@
2024.4.0b1 2024.5.5

View File

@ -5,6 +5,7 @@
{% endblock %} {% endblock %}
{%- block extrahead %} {%- 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="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="apple-touch-icon" sizes="180x180" href="/_static/apple-touch-icon.png">
<link rel="shortcut icon" href="/_static/favicon.ico"> <link rel="shortcut icon" href="/_static/favicon.ico">
@ -15,27 +16,30 @@
<link rel="icon" type="image/png" sizes="32x32" href="/_static/favicon-32x32.png"> <link rel="icon" type="image/png" sizes="32x32" href="/_static/favicon-32x32.png">
<link rel="icon" type="image/png" sizes="16x16" href="/_static/favicon-16x16.png"> <link rel="icon" type="image/png" sizes="16x16" href="/_static/favicon-16x16.png">
<link rel="manifest" href="/_static/site.webmanifest"> <link rel="manifest" href="/_static/site.webmanifest">
<link rel="mask-icon" href="/_static/safari-pinned-tab.svg" color="#646464"> <link rel="mask-icon" href="/_static/safari-pinned-tab.svg" color="#18bcf2">
<link rel="me" href="https://fosstodon.org/@esphome">
<meta name="apple-mobile-web-app-title" content="ESPHome"> <meta name="apple-mobile-web-app-title" content="ESPHome">
<meta name="application-name" content="ESPHome"> <meta name="application-name" content="ESPHome">
<meta name="msapplication-TileColor" content="#dfdfdf"> <meta name="msapplication-TileColor" content="#18bcf2">
<meta name="msapplication-config" content="/_static/browserconfig.xml"> <meta name="msapplication-config" content="/_static/browserconfig.xml">
<meta name="theme-color" content="#dfdfdf"> <meta name="theme-color" content="#18bcf2">
<meta name="HandheldFriendly" content="True"> <meta name="HandheldFriendly" content="True">
<meta name="MobileOptimized" content="320"> <meta name="MobileOptimized" content="320">
<meta property="og:site_name" content="ESPHome"> <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 %} {% endblock %}
{% block relbar_top %} {% block relbar_top %}
{% if parents|length > 0 %}
<ul class="breadcrumbs"> <ul class="breadcrumbs">
{% if parents|length > 0 %}
{%- for doc in parents %} {%- for doc in parents %}
<li><a href="{{ doc.link|e }}">{{ doc.title }}</a></li> <li><a href="{{ doc.link|e }}">{{ doc.title }}</a></li>
{%- endfor %} {%- endfor %}
<li>{{title}}</li> <li>{{title}}</li>
</ul>
{% endif %} {% endif %}
</ul>
{% endblock %} {% endblock %}
{% block footer %} {% block footer %}

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>

View File

@ -14,7 +14,7 @@ ESPHome 2023.12.0 - 20th December 2023
GT911, components/touchscreen/gt911, esp32_s3_box_3.png GT911, components/touchscreen/gt911, esp32_s3_box_3.png
Pylontech Batteries, components/pylontech, pylontech.jpg Pylontech Batteries, components/pylontech, pylontech.jpg
HE60R Cover, components/cover/he60r, he60r.jpg HE60R Cover, components/cover/he60r, he60r.jpg
Graphical Display Menu, components/display_menu/graphical_display_menu, graphical_display_menu.jpg Graphical Display Menu, components/display_menu/graphical_display_menu, graphical_display_menu.png
FT63X6, components/touchscreen/ft63x6, wt32-sc01.png FT63X6, components/touchscreen/ft63x6, wt32-sc01.png
A02YYUW, components/sensor/a02yyuw, a02yyuw.jpg A02YYUW, components/sensor/a02yyuw, a02yyuw.jpg
PN7150, components/binary_sensor/pn7150, pn7150.jpg PN7150, components/binary_sensor/pn7150, pn7150.jpg

View File

@ -20,6 +20,45 @@ ESPHome 2024.4.0 - 17th April 2024
TLC5971, components/output/tlc5971, tlc5971.jpg TLC5971, components/output/tlc5971, tlc5971.jpg
Dooya, components/remote_transmitter, remote.svg 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 Full list of changes
-------------------- --------------------
@ -39,6 +78,16 @@ Breaking Changes
- Add support for new modes in Tuya Climate :esphomepr:`5159` by :ghuser:`moriahmorgan` (breaking-change) - 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) - 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 All changes
^^^^^^^^^^^ ^^^^^^^^^^^
@ -127,6 +176,12 @@ All changes
- Add Dooya protocol to remote_base :esphomepr:`6488` by :ghuser:`bukureckid` - Add Dooya protocol to remote_base :esphomepr:`6488` by :ghuser:`bukureckid`
- Only give error for connected sensors at startup :esphomepr:`6474` by :ghuser:`leejoow` - Only give error for connected sensors at startup :esphomepr:`6474` by :ghuser:`leejoow`
- Webserver float to string fix :esphomepr:`6507` by :ghuser:`RFDarter` - 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 Past Changelogs
--------------- ---------------

327
changelog/2024.5.0.rst Normal file
View File

@ -0,0 +1,327 @@
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`
Release 2024.5.5 - June 5
-------------------------
- [voice_assistant] Half the microphone ringbuffer size :esphomepr:`6830` by :ghuser:`jesserockz`
- [i2s_speaker] Add buffer allocation failure checks :esphomepr:`6829` by :ghuser:`jesserockz`
- [improv_serial] Fix for IDF 4.4.7 :esphomepr:`6855` by :ghuser:`kbx81`
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:: .. redirect::
:url: /changelog/2024.3.0.html :url: /changelog/2024.5.0.html
.. toctree:: .. toctree::
:glob: :glob:

View File

@ -30,7 +30,7 @@ awesome things with DIY hardware!
The features I'm particularly excited about are: 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 No problem, esphomeflasher is a tool designed to make that super easy. Just let esphomeyaml generate the binary and flash
from your PC. from your PC.
* :doc:`Over-the-Air Updates </components/ota>` have been completely re-written to make them a lot more * :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 - 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 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. - 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 Additionally, esphomelib can now operate in fully offline mode if your WiFi network goes down

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. - **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. - **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_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_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_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``. - **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``. - **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: - **binary_sensors** (*Optional*, *list*): A list of binary sensors the panel should use. Each consists of:
@ -169,7 +169,7 @@ Example:
name: Zone 1 name: Zone 1
device_class: door device_class: door
pin: pin:
number: D1 number: GPIOXX
mode: INPUT_PULLUP mode: INPUT_PULLUP
inverted: True inverted: True
- platform: gpio - platform: gpio
@ -177,7 +177,7 @@ Example:
name: Zone 2 name: Zone 2
device_class: door device_class: door
pin: pin:
number: D2 number: GPIOXX
mode: INPUT_PULLUP mode: INPUT_PULLUP
inverted: True inverted: True
- platform: gpio - platform: gpio
@ -185,7 +185,7 @@ Example:
name: Zone 3 name: Zone 3
device_class: motion device_class: motion
pin: pin:
number: D3 number: GPIOXX
mode: INPUT_PULLUP mode: INPUT_PULLUP
inverted: True inverted: True
- platform: gpio - platform: gpio
@ -193,7 +193,7 @@ Example:
name: Zone 4 name: Zone 4
device_class: door device_class: door
pin: pin:
number: D4 number: GPIOXX
mode: INPUT_PULLUP mode: INPUT_PULLUP
inverted: True inverted: True
- platform: homeassistant - platform: homeassistant
@ -206,7 +206,7 @@ Example:
id: siren id: siren
name: Siren name: Siren
icon: mdi:alarm-bell icon: mdi:alarm-bell
pin: D7 pin: GPIOXX
See Also See Also

View File

@ -75,20 +75,35 @@ Configuration variables:
.. _api-actions: .. _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 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: .. _api-homeassistant_event_action:
``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 When using the native API with Home Assistant, you can create events in the Home Assistant event bus
straight from ESPHome :ref:`Automations <automation>`. straight from ESPHome :ref:`Automations <automation>`.
@ -117,6 +132,11 @@ Configuration variables:
``homeassistant.service`` Action ``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 When using the native API with Home Assistant, you can create Home Assistant service
calls straight from ESPHome :ref:`Automations <automation>`. calls straight from ESPHome :ref:`Automations <automation>`.
@ -189,6 +209,11 @@ Then, in ESPHome:
``homeassistant.tag_scanned`` Action ``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 When using the native API with Home Assistant, you can push tag_scanned to Home Assistant
straight from ESPHome :ref:`Automations <automation>`. straight from ESPHome :ref:`Automations <automation>`.

View File

@ -32,17 +32,6 @@ a :doc:`/components/i2c` component (and its requisite GPIO pins) is required in
id: "Radar" id: "Radar"
i2c_id: bus_a i2c_id: bus_a
binary_sensor:
- platform: gpio
pin: GPIO21
name: "Radar motion"
switch:
# Switch to turn on/off RF emission
- platform: at581x
at581x_id: "Radar"
name: "Enable Radar"
.. _at581x-component: .. _at581x-component:
Component/Hub Component/Hub
@ -87,7 +76,7 @@ The state of the radar detection is available via its GPIO pin. It's required to
binary_sensor: binary_sensor:
- platform: gpio - platform: gpio
name: "Human in front" name: "Human in front"
pin: GPIO21 pin: GPIOXX
Configuration variables: Configuration variables:
************************ ************************
@ -127,8 +116,8 @@ Actions
.. warning:: .. warning::
The hardware frontend reset option is only required to reset the frontend in case it is struck, before sending the 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. 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 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. and need to be set on each boot.

View File

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

View File

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

View File

@ -130,8 +130,8 @@ an ``OFF`` state.
binary_sensor: binary_sensor:
- platform: esp32_touch - platform: esp32_touch
name: "ESP32 Touch Pad GPIO27" name: "ESP32 Touch Pad"
pin: GPIO27 pin: GPIOXX
threshold: 1000 threshold: 1000
Configuration variables: Configuration variables:
@ -164,7 +164,7 @@ If access to the raw values is required, a template sensor can be created that p
binary_sensor: binary_sensor:
- platform: esp32_touch - platform: esp32_touch
id: esp32_touch_pad id: esp32_touch_pad
pin: GPIO4 pin: GPIOXX
threshold: 0 threshold: 0
sensor: sensor:
@ -174,8 +174,8 @@ If access to the raw values is required, a template sensor can be created that p
return id(esp32_touch_pad).get_value(); return id(esp32_touch_pad).get_value();
update_interval: 3s 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 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 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. under a flexible object like a plastic mat, add the raw values, and apply a threshold.
.. _esp32-touch-pad-pins: .. _esp32-touch-pad-pins:

View File

@ -17,17 +17,17 @@ Additional sensors for Haier Climate device. **These sensors are supported only
# Example configuration entry # Example configuration entry
uart: uart:
baud_rate: 9600 baud_rate: 9600
tx_pin: 17 tx_pin: GPIOXX
rx_pin: 16 rx_pin: GPIOXX
id: ac_port id: ac_port
climate: climate:
- platform: haier - platform: haier
id: haier_ac id: haier_ac
protocol: hOn protocol: hOn
name: Haier AC name: Haier AC
uart_id: ac_port uart_id: ac_port
binary_sensor: binary_sensor:
- platform: haier - platform: haier
haier_id: haier_ac haier_id: haier_ac
@ -56,9 +56,9 @@ Configuration variables:
All options from :ref:`Binary Sensor <config-binary_sensor>`. All options from :ref:`Binary Sensor <config-binary_sensor>`.
- **indoor_electric_heating_status** (*Optional*): A binary sensor that indicates electrical heating system activity. - **indoor_electric_heating_status** (*Optional*): A binary sensor that indicates electrical heating system activity.
All options from :ref:`Binary Sensor <config-binary_sensor>`. All options from :ref:`Binary Sensor <config-binary_sensor>`.
- **indoor_fan_status** (*Optional*): A binary sensor that indicates indoor fan activity. - **indoor_fan_status** (*Optional*): A binary sensor that indicates indoor fan activity.
All options from :ref:`Binary Sensor <config-binary_sensor>`. All options from :ref:`Binary Sensor <config-binary_sensor>`.
- **outdoor_fan_status** (*Optional*): A binary sensor that indicates outdoor fan activity. - **outdoor_fan_status** (*Optional*): A binary sensor that indicates outdoor fan activity.
All options from :ref:`Binary Sensor <config-binary_sensor>`. All options from :ref:`Binary Sensor <config-binary_sensor>`.
See Also See Also

View File

@ -34,7 +34,6 @@ Configuration variables:
- **entity_id** (**Required**, string): The entity ID to import from Home Assistant. - **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 - **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. 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. - **id** (*Optional*, :ref:`config-id`): Manually specify the ID used for code generation.
- All other options from :ref:`Binary Sensor <config-binary_sensor>`. - 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 .. code-block:: yaml
# Example RG-9 entry # Example RG-9 entry
uart:
rx_pin: GPIO16
tx_pin: GPIO17
baud_rate: 9600
sensor: sensor:
- platform: hydreon_rgxx - platform: hydreon_rgxx
model: "RG_9" model: "RG_9"

View File

@ -66,12 +66,12 @@ Advanced options:
a ``name`` will implicitly set this to true. 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, - **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). (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 - **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``. 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. - **entity_category** (*Optional*, string): The category of the entity.
See https://developers.home-assistant.io/docs/core/entity/#generic-properties 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. Set to ``""`` to remove the default entity category.
- If MQTT enabled, all other options from :ref:`MQTT Component <config-mqtt-component>`. - If MQTT enabled, all other options from :ref:`MQTT Component <config-mqtt-component>`.

View File

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

View File

@ -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 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. 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, 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. please search for it in the `Home Assistant Integrations <https://www.home-assistant.io/integrations/>`__ list.
@ -43,15 +43,11 @@ Configuration:
bluetooth_proxy: 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. - **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. 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 Improving reception performance
------------------------------- -------------------------------

View File

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

View File

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

View File

@ -69,7 +69,7 @@ Configuration variables:
- ``12K5BPS`` - Support by ``esp32_can`` depends on ESP32 variant - ``12K5BPS`` - Support by ``esp32_can`` depends on ESP32 variant
- ``16KBPS`` - 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 - ``20KBPS`` - Support by ``esp32_can`` depends on ESP32 variant
- ``25KBPS`` - ``25KBPS``
- ``31K25BPS`` - Not supported by ``esp32_can`` - ``31K25BPS`` - Not supported by ``esp32_can``
- ``33KBPS`` - Not supported by ``esp32_can`` - ``33KBPS`` - Not supported by ``esp32_can``
- ``40KBPS`` - 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 # Example configuration entry
canbus: canbus:
- platform: esp32_can - platform: esp32_can
tx_pin: GPIO5 tx_pin: GPIOXX
rx_pin: GPIO4 rx_pin: GPIOXX
can_id: 4 can_id: 4
bit_rate: 50kbps bit_rate: 50kbps
on_frame: 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: 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 1KBPS x x x x x
5KBPS x x x x x 5KBPS x x x x x
10KBPS x x x x x 10KBPS x x x x x
12K5BPS x x x x x 12K5BPS x x x x x
16KBPS x x x x x 16KBPS x x x x x
20KBPS x x x x x 20KBPS x x x x x
25KBPS x x x x x x 25KBPS x x x x x x
31K25BPS 31K25BPS
33KBPS 33KBPS
40KBPS 40KBPS
50KBPS x x x x x x 50KBPS x x x x x x
80KBPS 80KBPS
83K38BPS 83K38BPS
95KBPS 95KBPS
100KBPS x x x x x x 100KBPS x x x x x x
125KBPS (Default) x x x x x x 125KBPS (Default) x x x x x x
250KBPS x x x x x x 250KBPS x x x x x x
500KBPS x x x x x x 500KBPS x x x x x x
800KBPS x x x x x x 800KBPS x x x x x x
1000KBPS 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 # Example configuration entry
canbus: canbus:
- platform: mcp2515 - platform: mcp2515
cs_pin: D5 cs_pin: GPIOXX
can_id: 4 can_id: 4
bit_rate: 50kbps bit_rate: 50kbps
on_frame: on_frame:
@ -359,7 +359,7 @@ Standard IDs and Extended IDs can coexist on the same segment.
- platform: mcp2515 - platform: mcp2515
id: my_mcp2515 id: my_mcp2515
spi_id: McpSpi spi_id: McpSpi
cs_pin: GPIO14 cs_pin: GPIOXX
can_id: 0x1fff can_id: 0x1fff
use_extended_id: true use_extended_id: true
bit_rate: 125kbps 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: spi:
id: McpSpi id: McpSpi
clk_pin: GPIO16 clk_pin: GPIOXX
mosi_pin: GPIO5 mosi_pin: GPIOXX
miso_pin: GPIO4 miso_pin: GPIOXX
binary_sensor: binary_sensor:
- platform: template - 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 - platform: mcp2515
id: my_mcp2515 id: my_mcp2515
spi_id: McpSpi spi_id: McpSpi
cs_pin: GPIO14 cs_pin: GPIOXX
can_id: 4 can_id: 4
bit_rate: 125kbps bit_rate: 125kbps
on_frame: on_frame:
@ -430,15 +430,15 @@ Buttons are connected on the CAN-Node and also the motor is connected via CAN.
spi: spi:
id: McpSpi id: McpSpi
clk_pin: GPIO16 clk_pin: GPIOXX
mosi_pin: GPIO5 mosi_pin: GPIOXX
miso_pin: GPIO4 miso_pin: GPIOXX
canbus: canbus:
- platform: mcp2515 - platform: mcp2515
id: my_mcp2515 id: my_mcp2515
spi_id: McpSpi spi_id: McpSpi
cs_pin: GPIO14 cs_pin: GPIOXX
can_id: 4 can_id: 4
bit_rate: 125kbps bit_rate: 125kbps
on_frame: on_frame:

View File

@ -10,8 +10,7 @@ The ``bang_bang`` climate platform allows you to regulate a value with a
.. note:: .. note::
A number of people have asked about the behavior of the bang-bang controller. In version 1.15, a The :doc:`thermostat <thermostat>` component behaves more like a common thermostat; it is
:doc:`thermostat <thermostat>` component was added which behaves more like a common thermostat; it is
essentially two bang-bang controllers in one. Please see the `Bang-bang vs. Thermostat`_ section below 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. if you are not sure which is appropriate for your application.

View File

@ -44,7 +44,7 @@ submit a feature request (see FAQ).
+---------------------------------------+---------------------+----------------------+ +---------------------------------------+---------------------+----------------------+
| :ref:`LG<climate_ir_lg>` | ``climate_ir_lg`` | yes | | :ref:`LG<climate_ir_lg>` | ``climate_ir_lg`` | yes |
+---------------------------------------+---------------------+----------------------+ +---------------------------------------+---------------------+----------------------+
| Midea | ``midea_ir`` | yes | | :ref:`Midea<midea_ir>` | ``midea_ir`` | yes |
+---------------------------------------+---------------------+----------------------+ +---------------------------------------+---------------------+----------------------+
| :ref:`Mitsubishi<mitsubishi>` | ``mitsubishi`` | yes | | :ref:`Mitsubishi<mitsubishi>` | ``mitsubishi`` | yes |
+---------------------------------------+---------------------+----------------------+ +---------------------------------------+---------------------+----------------------+
@ -76,7 +76,7 @@ controller unit.
# Example configuration entry # Example configuration entry
remote_transmitter: remote_transmitter:
pin: GPIO32 pin: GPIOXX
carrier_duty_percent: 50% carrier_duty_percent: 50%
climate: climate:
@ -156,7 +156,7 @@ IR receiver.
remote_receiver: remote_receiver:
id: rcvr id: rcvr
pin: pin:
number: GPIO14 number: GPIOXX
inverted: true inverted: true
mode: mode:
input: true input: true
@ -169,35 +169,6 @@ IR receiver.
name: "Living Room AC" name: "Living Room AC"
receiver_id: rcvr receiver_id: rcvr
.. _midea_ir:
``midea_ir`` Climate
-------------------------
These air conditioners support two protocols: Midea and Coolix. Therefore, when using an IR receiver, it considers both protocols and publishes the received states.
Additional configuration is available for this platform
Configuration variables:
- **use_fahrenheit** (*Optional*, boolean): Allows you to transfer the temperature to the air conditioner in degrees Fahrenheit. The air conditioner display also shows the temperature in Fahrenheit. Defaults to ``false``.
.. code-block:: yaml
# Example configuration entry
climate:
- platform: midea_ir
name: "AC"
sensor: room_temperature
use_fahrenheit: true
.. note::
- See :ref:`Transmit Midea<remote_transmitter-transmit_midea>` to send custom commands, including Follow Me mode.
- See :ref:`Toshiba<toshiba>` below if you are looking for compatibility with Midea model MAP14HS1TBL or similar.
.. _climate_ir_lg: .. _climate_ir_lg:
``climate_ir_lg`` Climate ``climate_ir_lg`` Climate
@ -272,6 +243,34 @@ Known working with:
- Delonghi PAC WE 120HP - Delonghi PAC WE 120HP
.. _midea_ir:
``midea_ir`` Climate
-------------------------
These air conditioners support two protocols: Midea and Coolix. Therefore, when using an IR receiver, it considers both protocols and publishes the received states.
Additional configuration is available for this platform
Configuration variables:
- **use_fahrenheit** (*Optional*, boolean): Allows you to transfer the temperature to the air conditioner in degrees Fahrenheit. The air conditioner display also shows the temperature in Fahrenheit. Defaults to ``false``.
.. code-block:: yaml
# Example configuration entry
climate:
- platform: midea_ir
name: "AC"
sensor: room_temperature
use_fahrenheit: true
.. note::
- See :ref:`Transmit Midea<remote_transmitter-transmit_midea>` to send custom commands, including Follow Me mode.
- See :ref:`Toshiba<toshiba>` below if you are looking for compatibility with Midea model MAP14HS1TBL or similar.
.. _mitsubishi: .. _mitsubishi:
``mitsubishi`` Climate ``mitsubishi`` Climate
@ -283,8 +282,8 @@ Configuration variables:
- **set_fan_mode** (*Optional*, string): Select the fan modes desired or that are supported on your remote. Defaults to ``3levels`` - **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``. - Options are: ``3levels`` , ``4levels``, ``quiet_4levels``.
- ``3levels``; Low [fan speed 1], Medium [2], High [3] - ``3levels``; Low [fan speed 1], Medium [2], High [3]
- ``4levels``; Low [1], Middle [2], Medium [3], High [4] - ``4levels``; Low [1], Middle [2], Medium [3], High [4]
- ``quiet_4levels``; Low [1], Middle [2], Medium [3], High [4], Quiet [5] - ``quiet_4levels``; Low [1], Middle [2], Medium [3], High [4], Quiet [5]
@ -292,10 +291,10 @@ Configuration variables:
- **supports_dry** (*Optional*, boolean): Enables setting dry mode for this unit. Defaults to ``false``. - **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``. - **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``. - **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`` - 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``. - **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`` - Options are: ``down``, ``middle-down``, ``middle``, ``middle-up``, ``up``, ``auto``
@ -423,8 +422,8 @@ Configuration variables:
``zhlt01`` Climate ``zhlt01`` Climate
--------------------- ---------------------
ZH/LT-01 is a remote control that is used with many locally branded split airconditioners. ZH/LT-01 is a remote control that is used with many locally branded split airconditioners.
Supported brands include: Supported brands include:
- Eurom - Eurom
- Chigo - Chigo

View File

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

View File

@ -58,18 +58,11 @@ This component requires a :ref:`uart` to be setup.
.. code-block:: yaml .. code-block:: yaml
# Example configuration entry # Example configuration entry
uart:
baud_rate: 9600
tx_pin: 17
rx_pin: 16
id: ac_port
climate: climate:
- platform: haier - platform: haier
id: haier_ac id: haier_ac
protocol: hOn protocol: hOn
name: Haier AC name: Haier AC
uart_id: ac_port uart_id: ac_port
wifi_signal: true wifi_signal: true
beeper: true beeper: true

View File

@ -80,10 +80,10 @@ Advanced options:
a ``name`` will implicitly set this to true. 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, - **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). (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. - **entity_category** (*Optional*, string): The category of the entity.
See https://developers.home-assistant.io/docs/core/entity/#generic-properties 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. Set to ``""`` to remove the default entity category.
MQTT options: MQTT options:

View File

@ -25,17 +25,6 @@ The ``midea`` component creates a Midea air conditioner climate device.
.. code-block:: yaml .. code-block:: yaml
# Example configuration entry # 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 # Main settings
climate: climate:
- platform: midea - platform: midea

View File

@ -1,11 +1,11 @@
Copy Integration Copy Component
================ ==============
.. seo:: .. 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 :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. 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 For each of the supported platforms, the configuration consists of the required configuration

View File

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

View File

@ -26,8 +26,8 @@ below for a sample hardware interface.
baud_rate: 1200 baud_rate: 1200
parity: even parity: even
stop_bits: 1 stop_bits: 1
tx_pin: REPLACEME tx_pin: GPIOXX
rx_pin: REPLACEME rx_pin: GPIOXX
cover: cover:
platform: he60r platform: he60r
@ -72,9 +72,9 @@ Note that this circuit inverts the TX line. A configuration for this would look
parity: even parity: even
stop_bits: 1 stop_bits: 1
tx_pin: tx_pin:
number: REPLACEME number: GPIOXX
inverted: true inverted: true
rx_pin: REPLACEME rx_pin: GPIOXX
cover: cover:
platform: he60r platform: he60r
@ -84,7 +84,7 @@ Note that this circuit inverts the TX line. A configuration for this would look
binary_sensor: binary_sensor:
- platform: gpio - platform: gpio
pin: pin:
number: REPLACEME number: GPIOXX
inverted: true inverted: true
mode: mode:
input: true input: true

View File

@ -46,10 +46,10 @@ Advanced options:
a ``name`` will implicitly set this to true. 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, - **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). (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. - **entity_category** (*Optional*, string): The category of the entity.
See https://developers.home-assistant.io/docs/core/entity/#generic-properties 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. Set to ``""`` to remove the default entity category.
MQTT options: MQTT options:

View File

@ -62,7 +62,6 @@ Configuration variables:
of hiding one of them. Defaults to ``false``. of hiding one of them. Defaults to ``false``.
- **has_position** (*Optional*, boolean): Whether this cover will publish its position as a floating point number. - **has_position** (*Optional*, boolean): Whether this cover will publish its position as a floating point number.
By default (``false``), the cover only publishes OPEN/CLOSED position. By default (``false``), the cover only publishes OPEN/CLOSED position.
Parameter useless if you set the POSITION_ACTION (is set to TRUE).
- **tilt_action** (*Optional*, :ref:`Action <config-action>`): The action that should - **tilt_action** (*Optional*, :ref:`Action <config-action>`): The action that should
be performed when the remote (like Home Assistant's frontend) requests the cover be set to a specific be performed when the remote (like Home Assistant's frontend) requests the cover be set to a specific
tilt position. The desired tilt is available in the lambda in the ``tilt`` variable. tilt position. The desired tilt is available in the lambda in the ``tilt`` variable.
@ -71,6 +70,7 @@ Configuration variables:
- **position_action** (*Optional*, :ref:`Action <config-action>`): The action that should - **position_action** (*Optional*, :ref:`Action <config-action>`): The action that should
be performed when the remote (like Home Assistant's frontend) requests the cover be set to a specific be performed when the remote (like Home Assistant's frontend) requests the cover be set to a specific
position. The desired position is available in the lambda in the ``pos`` variable. position. The desired position is available in the lambda in the ``pos`` variable.
Useless if `has_position` is not set to ``true``.
- **id** (*Optional*, :ref:`config-id`): Manually specify the ID used for code generation. - **id** (*Optional*, :ref:`config-id`): Manually specify the ID used for code generation.
- All other options from :ref:`Cover <config-cover>`. - All other options from :ref:`Cover <config-cover>`.

View File

@ -77,7 +77,25 @@ Configuration variables:
``esp8266_restore_from_flash: true`` option set. ``esp8266_restore_from_flash: true`` option set.
See :doc:`esp8266_restore_from_flash </components/esphome>` for details. 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).get_last_operation() == CoverOperation::COVER_OPERATION_OPENING) {
// Cover is currently opening
id(cover_button_down).press();
} else if (id(cover).get_last_operation() == CoverOperation::COVER_OPERATION_CLOSING) {
// Cover is currently closing
id(cover_button_up).press();
}
Be aware that ``get_last_operation`` will only return the last opening or closing operation, but not the last idle operation.
This issue is tracked `here <https://github.com/esphome/issues/issues/4252#issuecomment-2132727377>`_.
See Also See Also
-------- --------

View File

@ -45,7 +45,7 @@ Configuration variables:
Supported devices 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) - Tuya ``M515EGWT`` (motor for bead chain roller blinds)

View File

@ -42,22 +42,27 @@ Configuration variables:
a ``name`` will implicitly set this to true. 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, - **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). (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. - **entity_category** (*Optional*, string): The category of the entity.
See https://developers.home-assistant.io/docs/core/entity/#generic-properties 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. 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: MQTT Options:
- All other options from :ref:`MQTT Component <config-mqtt-component>`. - All other options from :ref:`MQTT Component <config-mqtt-component>`.
Datetime Automation Time and DateTime Options:
-------------------
You can access the most recent state as a string of the datetime in :ref:`lambdas <config-lambda>` using - **on_time** (*Optional*, :ref:`automation`): Automation to run when the current datetime or time matches the current state.
``id(datetime_id).state``. Only valid on ``time`` or ``datetime`` types.
You can also access it as a ``ESPTime`` object by ``id(datetime_id).state_as_time``
Automation
----------
You can access the most recent state as a ``ESPTime`` object by ``id(datetime_id).state_as_esptime()``
.. _datetime-on_value: .. _datetime-on_value:
@ -98,12 +103,12 @@ The ``date`` provided can be in one of 3 formats:
# String date # String date
- datetime.date.set: - datetime.date.set:
id: my_date id: my_datetime_date
date: "2023-12-04" date: "2023-12-04"
# Individual date parts # Individual date parts
- datetime.date.set: - datetime.date.set:
id: my_date id: my_datetime_date
date: date:
year: 2023 year: 2023
month: 12 month: 12
@ -111,7 +116,7 @@ The ``date`` provided can be in one of 3 formats:
# Using a lambda # Using a lambda
- datetime.date.set: - datetime.date.set:
id: my_date id: my_datetime_date
date: !lambda |- date: !lambda |-
// Return an ESPTime struct // Return an ESPTime struct
return {.day_of_month: 4, .month: 12, .year: 2023}; return {.day_of_month: 4, .month: 12, .year: 2023};
@ -137,7 +142,7 @@ advanced stuff (see the full API Reference for more info).
.. code-block:: cpp .. code-block:: cpp
// Within lambda, set the date to 2024-02-25 // Within lambda, set the date to 2024-02-25
auto call = id(my_date).make_call(); auto call = id(my_datetime_date).make_call();
call.set_date("2024-02-25"); call.set_date("2024-02-25");
call.perform(); call.perform();
@ -169,12 +174,12 @@ The ``time`` provided can be in one of 3 formats:
# String time # String time
- datetime.time.set: - datetime.time.set:
id: my_time id: my_datetime_time
time: "12:34:56" time: "12:34:56"
# Individual time parts # Individual time parts
- datetime.time.set: - datetime.time.set:
id: my_time id: my_datetime_time
time: time:
hour: 12 hour: 12
minute: 34 minute: 34
@ -182,7 +187,7 @@ The ``time`` provided can be in one of 3 formats:
# Using a lambda # Using a lambda
- datetime.time.set: - datetime.time.set:
id: my_time id: my_datetime_time
time: !lambda |- time: !lambda |-
// Return an ESPTime struct // Return an ESPTime struct
return {.second: 56, .minute: 34, .hour: 12}; return {.second: 56, .minute: 34, .hour: 12};
@ -207,8 +212,8 @@ advanced stuff (see the full API Reference for more info).
.. code-block:: cpp .. code-block:: cpp
// Within lambda, set the time to 12:34:56 // Within lambda, set the time to 12:34:56
auto call = id(my_time).make_call(); auto call = id(my_datetime_time).make_call();
call.set_date("12:34:56"); call.set_time("12:34:56");
call.perform(); call.perform();
Check the API reference for information on the methods that are available for Check the API reference for information on the methods that are available for
@ -222,7 +227,85 @@ advanced stuff (see the full API Reference for more info).
.. code-block:: cpp .. code-block:: cpp
// For example, create a custom log message when a value is received: // For example, create a custom log message when a value is received:
ESP_LOGI("main", "Value of my datetime: %0d:%02d:%02d", id(my_time).hour, id(my_time).minute, id(my_time).second); 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 See Also
@ -231,8 +314,10 @@ See Also
- :apiref:`DateTimeBase <datetime/datetime_base.h>` - :apiref:`DateTimeBase <datetime/datetime_base.h>`
- :apiref:`DateEntity <datetime/date_entity.h>` - :apiref:`DateEntity <datetime/date_entity.h>`
- :apiref:`DateCall <datetime/date_entity.h>` - :apiref:`DateCall <datetime/date_entity.h>`
- :apiref:`TimeeEntity <datetime/time_entity.h>` - :apiref:`TimeEntity <datetime/time_entity.h>`
- :apiref:`TimeCall <datetime/time_entity.h>` - :apiref:`TimeCall <datetime/time_entity.h>`
- :apiref:`DateTimeEntity <datetime/datetime_entity.h>`
- :apiref:`DateTimeCall <datetime/datetime_entity.h>`
- :ghedit:`Edit` - :ghedit:`Edit`
.. toctree:: .. toctree::

View File

@ -13,7 +13,7 @@ using :ref:`lambdas <config-lambda>`.
datetime: datetime:
# Example Date # Example Date
- platform: template - platform: template
id: my_date id: my_datetime_date
type: date type: date
name: Pick a Date name: Pick a Date
optimistic: yes optimistic: yes
@ -22,13 +22,22 @@ using :ref:`lambdas <config-lambda>`.
# Example Time # Example Time
- platform: template - platform: template
id: my_time id: my_datetime_time
type: time type: time
name: Pick a Time name: Pick a Time
optimistic: yes optimistic: yes
initial_value: "12:34:56" initial_value: "12:34:56"
restore_value: true 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: Configuration variables:
------------------------ ------------------------
@ -72,6 +81,21 @@ Configuration variables:
minute: 34 minute: 34
second: 56 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>`. - All other options from :ref:`Datetime <config-datetime>`.
See Also See Also

View File

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

View File

@ -2,7 +2,7 @@ DF-Player mini
============== ==============
.. seo:: .. 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 :image: dfplayer.svg
The ``dfplayer`` (`datasheet <https://wiki.dfrobot.com/DFPlayer_Mini_SKU_DFR0299>`__), component 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. DF-Player mini Module.
For this integration to work you need to have set up a :ref:`UART bus <uart>` For this component to work you need to have set up a :ref:`UART bus <uart>` in your configuration.
in your configuration.
Overview Overview
-------- --------
@ -31,16 +30,7 @@ will be required.
.. code-block:: yaml .. code-block:: yaml
# Example configuration entry # Example configuration entry
uart:
tx_pin: GPIO2
rx_pin: GPIO5
baud_rate: 9600
# Declare DFPlayer mini module
dfplayer: dfplayer:
on_finished_playback:
then:
logger.log: 'Somebody press play!'
Configuration variables: Configuration variables:
------------------------ ------------------------
@ -114,11 +104,11 @@ Configuration options:
``dfplayer.play_mp3`` Action ``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. to 9999, like ``0001.mp3``, ``0002.mp3``, ... etc.
The folder name needs to be ``mp3``, placed under the SD card root directory, and the 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. 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, 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. ``0001hello.mp3``, but must always be referenced by number only in yaml.
.. code-block:: bash .. code-block:: bash
@ -345,8 +335,8 @@ Sample code
.. code-block:: yaml .. code-block:: yaml
uart: uart:
tx_pin: GPIO2 tx_pin: GPIOXX
rx_pin: GPIO5 rx_pin: GPIOXX
baud_rate: 9600 baud_rate: 9600
dfplayer: 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 name: Mmwave Detected via GPIO
device_class: motion device_class: motion
pin: pin:
number: REPLACEME number: GPIOXX
mode: INPUT_PULLDOWN mode: INPUT_PULLDOWN
switch: 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 name: Presence Detected via GPIO
device_class: motion device_class: motion
pin: pin:
number: REPLACEME number: GPIOXX
mode: INPUT_PULLDOWN mode: INPUT_PULLDOWN
.. _dfrobot_sen0395-via_uart: .. _dfrobot_sen0395-via_uart:

View File

@ -19,18 +19,6 @@ The display requires that an :apiclass:`AddressableLight <light::AddressableLigh
.. code-block:: yaml .. 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: display:
- platform: addressable_light - platform: addressable_light
id: led_matrix_display 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. - **update_interval** (*Optional*, :ref:`config-time`): The interval to call the lambda to update the display.
Defaults to ``16ms``. Defaults to ``16ms``.
- **pixel_mapper** (*Optional*, :ref:`lambda <config-lambda>`): A lambda that returns the integer address of the LED - **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. - **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>`. ``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. - **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 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 addressable light will be disabled. When disabled (``it.set_enabled(false)``), the last configured effect will
be restored. be restored.
While the display is enabled, it is still possible to control the parent addressable light component in some 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 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 adivsable to enable any effects (ex: rainbow, color wipe, etc) while the display is enabled, as this will cause a

View File

@ -55,8 +55,8 @@ beyond the basic SPI connections, and a reasonable amount of RAM, it is not well
display: display:
- platform: ili9xxx - platform: ili9xxx
model: ili9341 model: ili9341
dc_pin: 27 dc_pin: GPIOXX
reset_pin: 33 reset_pin: GPIOXX
lambda: |- lambda: |-
it.fill(COLOR_BLACK); it.fill(COLOR_BLACK);
it.print(0, 0, id(my_font), id(my_red), TextAlign::TOP_LEFT, "Hello World!"); it.print(0, 0, id(my_font), id(my_red), TextAlign::TOP_LEFT, "Hello World!");
@ -180,13 +180,13 @@ To configure a dimmable backlight:
# Define a PWM output on the ESP32 # Define a PWM output on the ESP32
output: output:
- platform: ledc - platform: ledc
pin: 32 pin: GPIOXX
id: gpio_32_backlight_pwm id: backlight_pwm
# Define a monochromatic, dimmable light for the backlight # Define a monochromatic, dimmable light for the backlight
light: light:
- platform: monochromatic - platform: monochromatic
output: gpio_32_backlight_pwm output: backlight_pwm
name: "Display Backlight" name: "Display Backlight"
id: back_light id: back_light
restore_mode: ALWAYS_ON restore_mode: ALWAYS_ON
@ -204,8 +204,8 @@ To configure an image adaptive color pallet to show greater than 8 bit color dep
display: display:
- platform: ili9xxx - platform: ili9xxx
model: ili9341 model: ili9341
dc_pin: 4 dc_pin: GPIOXX
reset_pin: 22 reset_pin: GPIOXX
rotation: 90 rotation: 90
id: tft_ha id: tft_ha
color_palette: IMAGE_ADAPTIVE color_palette: IMAGE_ADAPTIVE
@ -234,7 +234,7 @@ This config rotates the display into landscape mode using the driver chip.
mirror_y: true mirror_y: true
color_order: bgr color_order: bgr
data_rate: 80MHz data_rate: 80MHz
cs_pin: 10 cs_pin: GPIOXX
dc_pin: GPIO13 dc_pin: GPIO13
reset_pin: GPIO9 reset_pin: GPIO9

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

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: 20 KiB

View File

@ -2,7 +2,7 @@ Display Component
================= =================
.. seo:: .. seo::
:description: Instructions for setting up the display integration. :description: Instructions for setting up the display component.
:image: folder-open.svg :image: folder-open.svg
The ``display`` component houses ESPHome's powerful rendering and display The ``display`` component houses ESPHome's powerful rendering and display
@ -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 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. 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 .. code-block:: yaml
display: display:
@ -74,8 +77,10 @@ the rendering engine is always first specify the ``x`` coordinate and then the `
Basic Shapes Basic Shapes
------------ ------------
Now that you know a bit more about ESPHome's coordinate system, let's draw some basic shapes like lines, rectangles 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:
and circles:
.. figure:: images/display_rendering_shapes.png
:align: center
.. code-block:: yaml .. code-block:: yaml
@ -85,31 +90,27 @@ and circles:
lambda: |- lambda: |-
// Draw a line from [0,0] to [100,50] // Draw a line from [0,0] to [100,50]
it.line(0, 0, 100, 50); it.line(0, 0, 100, 50);
// Draw an angled line from [0,0] at 45° with a length of 30 // Draw the outline of a rectangle with the top left at [5,20], a width of 30 and a height of 42
it.line_at_angle(0, 0, 45, 30); it.rectangle(5, 20, 30, 42);
// Draw an angled line from [0,0] at 30° with a start radius of 10 and stop radius of 20 // Draw the same rectangle a few pixels apart, but this time filled
it.line_at_angle(0, 0, 30, 10, 20); it.filled_rectangle(40, 40, 30, 42);
// 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);
// Circles! Let's draw one with the center at [25,25] and a radius of 10 // Circles! Let's draw one with the center at [20,40] and a radius of 10
it.circle(25, 25, 10); it.circle(20, 40, 10);
// ... and the same thing filled again // ... 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 // Triangles... Let's draw the outline of a triangle from the [x,y] coordinates of its three points
// [25,5], [5,25], [50,50] // [25,5], [100,5], [80,25]
it.triangle(25, 5, 5, 25, 50, 50); it.triangle(25, 5, 100, 5, 80, 25);
// and a filled triangle ! // and a filled triangle !
it.filled_triangle(125, 5, 105, 25, 150, 50); it.filled_triangle(115, 5, 95, 25, 125, 70);
// Regular Polygons? Let's draw the outline of a pointy-topped hexagon inscribed in a circle // Regular Polygons? Let's draw a filled, pointy-topped hexagon inscribed in a circle
// centered on [x1=100,y1=100] with a radius of 50 // centered on [170,45] with a radius of 20
it.regular_polygon(100, 100, 50, EDGES_HEXAGON); it.filled_regular_polygon(170, 45, 20, EDGES_HEXAGON);
// and a filled flat-topped octagon! // and the outline of flat-topped octagon around it!
it.filled_regular_polygon(200, 200, 50, EDGES_OCTAGON, VARIATION_FLAT_TOP); 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! // 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 All the above methods can optionally also be called with an argument at the end which specifies in which
@ -121,33 +122,35 @@ color to draw. For monochrome displays, only ``COLOR_ON`` (the default if color
- platform: ... - platform: ...
# ... # ...
lambda: |- lambda: |-
// Turn the whole display on. // Turn the whole display on
it.fill(COLOR_ON); it.fill(COLOR_ON);
// Turn the whole display off. // Turn the whole display off
it.fill(COLOR_OFF); it.fill(COLOR_OFF);
// Turn a single pixel off at [50,60] // Turn a single pixel off at [50,60]
it.draw_pixel_at(50, 60, COLOR_OFF); 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. For color displays (e.g. TFT displays), you can use the Color class.
.. figure:: images/display_rendering_colors.png
:align: center
.. code-block:: yaml .. code-block:: yaml
display: display:
- platform: ... - platform: ...
# ... # ...
lambda: |- lambda: |-
auto black = Color(0, 0, 0);
auto red = Color(255, 0, 0); auto red = Color(255, 0, 0);
auto green = Color(0, 255, 0); auto green = Color(0, 255, 0);
auto blue = Color(0, 0, 255); auto blue = Color(0, 0, 255);
auto white = Color(255, 255, 255); auto white = Color(255, 255, 255);
it.rectangle(20, 50, 30, 30, white); it.filled_circle(20, 32, 15, black);
it.rectangle(25, 55, 30, 30, red); it.filled_circle(40, 32, 15, red);
it.rectangle(30, 60, 30, 30, green); it.filled_circle(60, 32, 15, green);
it.rectangle(35, 65, 30, 30, blue); 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: Additionally, you have access to two helper methods which will fetch the width and height of the display:
@ -160,6 +163,8 @@ Additionally, you have access to two helper methods which will fetch the width a
// Draw a circle in the middle of the display // Draw a circle in the middle of the display
it.filled_circle(it.get_width() / 2, it.get_height() / 2, 20); 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. You can view the full API documentation for the rendering engine in the "API Reference" in the See Also section.
@ -222,6 +227,10 @@ In case of fonts rendered at higher bit depths, the background color has to be s
// Syntax is always: it.print(<x>, <y>, <font>, [color=COLOR_ON], [align], <text>, [color=COLOR_OFF]); // 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); 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: .. _display-printf:
Formatted Text Formatted Text
@ -351,8 +360,7 @@ You can display current time using a time component. Please see the example :ref
Screen 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 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.
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 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 you can stop the clipping process with ``end_clipping();`` . You can nest as many ``start_clipping();`` as you want as long
@ -461,13 +469,8 @@ memory at the time the sensor updates and will be lost when the device reboots.
Examples: Examples:
.. figure:: images/graph_screen.png .. figure:: images/display_rendering_graph.png
:align: center :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. Graph component with options for grids, border and line-types.
@ -931,49 +934,30 @@ Additionally the old page will be given as the variable ``from`` and the new one
Troubleshooting 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. 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 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.** - 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 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: For displays in 8 bit mode you will see distinct color blocks rather than a smooth gradient.
- 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
See Also See Also
-------- --------

View File

@ -2,12 +2,12 @@ Character-Based LCD Display
=========================== ===========================
.. seo:: .. seo::
:description: Instructions for setting up character-based HD44780 LCD displays. :description: Instructions for setting up character-based HD44780 LCDs.
:image: lcd.jpg :image: lcd.jpg
The ``lcd_pcf8574`` and ``lcd_gpio`` display components allow you to use HD44780-compatible, character-based LCD displays The ``lcd_pcf8574`` and ``lcd_gpio`` display components allow you to use HD44780-compatible, character-based LCDs
with ESPHome. This integration is only for LCD displays that display individual characters on a screen 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 LCD displays that can control each pixel individually. (usually 8-40 columns and 2-4 rows), and not for LCDs that can control each pixel individually.
.. figure:: images/lcd-hello_world.jpg .. figure:: images/lcd-hello_world.jpg
:align: center :align: center
@ -15,12 +15,12 @@ with ESPHome. This integration is only for LCD displays that display individual
.. note:: .. 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 - 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) - HD44780UA02 English-European which includes Greek, Cyrillic and Western European characters (with some diacritics)
- HD44780UBxx custom, manufacturer-specific character sets - HD44780UBxx custom, manufacturer-specific character sets
It is also possible to add eight user-defined characters. It is also possible to add eight user-defined characters.
.. _lcd-pcf8574: .. _lcd-pcf8574:
@ -28,7 +28,7 @@ with ESPHome. This integration is only for LCD displays that display individual
lcd_pcf8574 Component 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`. 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. 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:: .. 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. PCF8574 board.
.. _lcd-gpio: .. _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. 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>`. faster refresh, especially in conjunction with an :ref:`LCD Menu <lcd_menu>`.
.. figure:: images/lcd_gpio.svg .. figure:: images/lcd_gpio.svg
@ -90,12 +90,12 @@ faster refresh, especially in conjunction with an :ref:`LCD Menu <lcd_menu>`.
- platform: lcd_gpio - platform: lcd_gpio
dimensions: 20x4 dimensions: 20x4
data_pins: data_pins:
- GPIO32 - GPIOXX
- GPIO33 - GPIOXX
- GPIO5 - GPIOXX
- GPIO17 - GPIOXX
enable_pin: D4 enable_pin: GPIOXX
rs_pin: D5 rs_pin: GPIOXX
lambda: |- lambda: |-
it.print("Hello World!"); it.print("Hello World!");
@ -105,8 +105,8 @@ Configuration variables:
- **dimensions** (**Required**, string): The dimensions of the display with ``COLUMNSxROWS``. If you're not - **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. 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 - **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 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 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). connected all 8 data pins).
- **enable_pin** (**Required**, :ref:`pin <config-pin_schema>`): The pin you have ``E`` (``06``) hooked up to. - **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. - **rs_pin** (**Required**, :ref:`pin <config-pin_schema>`): The pin you have ``RS`` (``04``) hooked up to.
@ -118,7 +118,7 @@ Configuration variables:
.. note:: .. 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. 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 ``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 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`` 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 .. 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. 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``) 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. 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 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 ( The ``max7219`` display platform allows you to use MAX7219 7-segment display drivers (
`datasheet <https://datasheets.maximintegrated.com/en/ds/MAX7219-MAX7221.pdf>`__, `datasheet <https://datasheets.maximintegrated.com/en/ds/MAX7219-MAX7221.pdf>`__,
`hobbycomponents <https://hobbycomponents.com/displays/597-max7219-8-digit-seven-segment-display-module>`__) `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 .. figure:: images/max7219-full.jpg
:align: center :align: center
@ -16,7 +16,7 @@ with ESPHome. Please note that this integration is *only* for 7-segment display,
MAX7219 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). 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 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. 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. :description: Instructions for setting up MAX7219 Digit displays.
:image: max7219digit.jpg :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`. is *only* for the digit "matrix" display, for the 7 segment display see :doc:`max7219`.
.. figure:: images/max7219digit.png .. 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. 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). 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 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. 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>` 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. 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 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++ .. code-block:: c++
baud=115200 // Sets the baud rate to 115200 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 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. 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. 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 .. code-block:: yaml
# Example configuration entry # Example configuration entry
uart:
id: uart_2
rx_pin: GPIO16
tx_pin: GPIO17
baud_rate: 115200
display: display:
- platform: nextion - platform: nextion
id: nextion1 id: nextion1
uart_id: uart_2
lambda: |- lambda: |-
it.set_component_value("gauge", 50); it.set_component_value("gauge", 50);
it.set_component_text("textview", "Hello World!"); it.set_component_text("textview", "Hello World!");
@ -73,7 +65,7 @@ Configuration variables:
- **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_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_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>`. - **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: .. _display-nextion_lambda:
Rendering Lambda Rendering Lambda
@ -113,7 +105,7 @@ Lambda Calls
************ ************
Several methods are available for use within :ref:`lambdas <config-lambda>`; these permit advanced functionality beyond simple 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: .. _nextion_upload_tft:
@ -126,7 +118,7 @@ The developer tools in Home Assistant can be used to trigger the update. The bel
services: services:
- service: update_nextion - service: update_nextion
then: then:
- lambda: 'id(nextion1)->upload_tft();' - lambda: 'id(nextion1)->upload_tft();'
.. _nextion_update_all_components: .. _nextion_update_all_components:
@ -178,7 +170,7 @@ The developer tools in Home Assistant can be used to trigger the update. The bel
.. _nextion_queue_types: .. _nextion_queue_types:
Queue Types: Queue Types:
- SENSOR 0 - SENSOR 0
- BINARY_SENSOR 1 - BINARY_SENSOR 1
- SWITCH 2 - SWITCH 2
@ -291,7 +283,7 @@ The following arguments will be available:
Uploading A 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. 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 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. only updates the changes of the TFT file. If HTTPS/SSL is enabled it will be about 1kB/sec.
@ -304,7 +296,7 @@ To host the TFT file you can use Home Assistant itself or any other web server.
Home Assistant 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. directory. You can create a subdirectory for those files as well.
For example if the file is located For example if the file is located
@ -321,8 +313,8 @@ The below NGINX example configuration will serve files out of the /var/www/nexti
.. code-block:: nginx .. code-block:: nginx
server { server {
listen 80; listen 80;
access_log /var/log/nginx/nextion_access.log; access_log /var/log/nginx/nextion_access.log;
error_log /var/log/nginx/nextion_error.log; error_log /var/log/nginx/nextion_error.log;
root /var/www/nextion; root /var/www/nextion;
} }

View File

@ -50,9 +50,9 @@ ESP-IDF. PSRAM is a requirement due to the size of the display buffer. A :ref:`q
color_order: rgb color_order: rgb
invert_colors: false invert_colors: false
brightness: 255 brightness: 255
cs_pin: 11 cs_pin: GPIOXX
reset_pin: 13 reset_pin: GPIOXX
enable_pin: 9 enable_pin: GPIOXX
Configuration variables: Configuration variables:
@ -150,17 +150,17 @@ Lilygo T-Display S3 AMOLED
- 7 - 7
- 48 - 48
- 5 - 5
i2c: i2c:
sda: 3 sda: 3
scl: 2 scl: 2
touchscreen: touchscreen:
- platform: cst816 - platform: cst816
id: my_touchscreen id: my_touchscreen
interrupt_pin: interrupt_pin:
number: 21 number: 21
display: display:
- platform: qspi_amoled - platform: qspi_amoled
model: RM67162 model: RM67162

View File

@ -40,17 +40,13 @@ to an ESP module.
.. code-block:: yaml .. code-block:: yaml
# Example minimal configuration entry # Example minimal configuration entry
spi:
clk_pin: GPIO18
mosi_pin: GPIO19
display: display:
- platform: st7789v - platform: st7789v
model: TTGO TDisplay 135x240 model: TTGO TDisplay 135x240
backlight_pin: GPIO4 backlight_pin: GPIOXX
cs_pin: GPIO5 cs_pin: GPIOXX
dc_pin: GPIO16 dc_pin: GPIOXX
reset_pin: GPIO23 reset_pin: GPIOXX
lambda: |- lambda: |-
it.print(0, 0, id(font), "Hello World!"); it.print(0, 0, id(font), "Hello World!");
@ -191,7 +187,7 @@ Items marked RQ are hardware dependent but required and not preset. Items marked
- 22 - 22
- 23 - 23
- 4 - 4
- -
- 18 - 18
- 19 - 19
* - Custom * - Custom

View File

@ -22,10 +22,10 @@ The LCD have four signal, ``cs`` for chip select, ``data`` for data signal, ``re
display: display:
platform: tm1621 platform: tm1621
id: tm1621_display id: tm1621_display
cs_pin: GPIO17 cs_pin: GPIOXX
data_pin: GPIO5 data_pin: GPIOXX
read_pin: GPIO23 read_pin: GPIOXX
write_pin: GPIO18 write_pin: GPIOXX
lambda: |- lambda: |-
it.printf(0, "%.1f", id(my_sensor1).state); it.printf(0, "%.1f", id(my_sensor1).state);
it.display_celsius(true); 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)`` - °F on the first line : ``display_fahrenheit(bool)``
- %HR on the second line : ``display_humidity(bool)`` - %HR on the second line : ``display_humidity(bool)``
- V on the first line and A on the second line : ``display_voltage(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 See Also
-------- --------

View File

@ -23,9 +23,9 @@ The module can be powered with 5v DC. To display the colon punctuation use the
display: display:
platform: tm1638 platform: tm1638
id: tm1638_display id: tm1638_display
stb_pin: 5 stb_pin: GPIOXX
clk_pin: 18 clk_pin: GPIOXX
dio_pin: 23 dio_pin: GPIOXX
intensity: 5 intensity: 5
update_interval: 5s update_interval: 5s
lambda: |- lambda: |-
@ -113,9 +113,9 @@ The following example creates a typical digital clock with the ``:`` colon flash
display: display:
platform: tm1638 platform: tm1638
clk_pin: 18 clk_pin: GPIOXX
dio_pin: 23 dio_pin: GPIOXX
stb_pin: 5 stb_pin: GPIOXX
update_interval: 500ms update_interval: 500ms
lambda: |- lambda: |-
static int i = 0; static int i = 0;
@ -132,16 +132,16 @@ The TM1638 7 Segment Display Keypad & LED Module has 8 LED lights across the top
.. code-block:: yaml .. code-block:: yaml
switch: switch:
- platform: tm1638 - platform: tm1638
id: TM1638Led1 id: TM1638Led1
led: 0 led: 0
output: output:
- platform: tm1638 - platform: tm1638
id: TM1638Led2 id: TM1638Led2
led: 1 led: 1
Buttons Buttons
@ -163,7 +163,7 @@ The TM1638 7 Segment Display Keypad & LED Module has 8 buttons across the top or
on_release: on_release:
then: then:
- switch.turn_off: TM1638Led1 - switch.turn_off: TM1638Led1
- platform: tm1638 - platform: tm1638
name: "TM1638 Button 2" name: "TM1638 Button 2"
id: TM1638Button2 id: TM1638Button2

View File

@ -23,7 +23,7 @@ single-color E-Ink displays are implemented and of those only a few modules.
Waveshare E-Paper 2.9 Inch E-Paper Display. Waveshare E-Paper 2.9 Inch E-Paper Display.
The communication ESPHome has chosen to use for this integration is 4-wire :ref:`SPI <spi>`, as it's the most stable The communication ESPHome has chosen to use for this component is 4-wire :ref:`SPI <spi>`, as it's the most stable
and high-speed. So you need to make sure your board is set to the 4-wire SPI mode and have an ``spi:`` section in your and high-speed. So you need to make sure your board is set to the 4-wire SPI mode and have an ``spi:`` section in your
configuration. configuration.
@ -96,6 +96,7 @@ Configuration variables:
- ``2.70in-b`` - Black/White/Red - ``2.70in-b`` - Black/White/Red
- ``2.70in-bv2`` - Black/White/Red - ``2.70in-bv2`` - Black/White/Red
- ``2.90in`` - ``2.90in``
- ``2.90in-dke``
- ``2.90inv2`` - ``2.90inv2``
- ``2.90inv2-r2`` - 2.9in V2 display, but with different initialization and full/partial display refresh management than ``2.90inv2`` - ``2.90inv2-r2`` - 2.9in V2 display, but with different initialization and full/partial display refresh management than ``2.90inv2``
- ``2.90in-b`` - B/W rendering only - ``2.90in-b`` - B/W rendering only

View File

@ -12,14 +12,14 @@ on graphical displays. This offers the user an interactive method to display
labels, control entities like ``switch``, ``select``, ``number`` available locally on the labels, control entities like ``switch``, ``select``, ``number`` available locally on the
ESPHome node, without the requirement of a network connection. ESPHome node, without the requirement of a network connection.
.. figure:: images/graphical_display_menu.jpg .. figure:: images/graphical_display_menu.png
:align: center :align: center
:width: 60.0% :width: 60.0%
Overview Overview
-------- --------
The integration implements the :ref:`Display Menu <display_menu>` integration providing The component implements the :ref:`Display Menu <display_menu>` component providing
a hierarchical menu primarily intended to be controlled either by a rotary encoder a hierarchical menu primarily intended to be controlled either by a rotary encoder
with a button or a five-button joystick controller. with a button or a five-button joystick controller.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 101 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

View File

@ -7,7 +7,7 @@ Display Menu
.. _display_menu: .. _display_menu:
The integration provides a menu primarily intended to be controlled either by a rotary encoder The component provides a menu primarily intended to be controlled either by a rotary encoder
with a button or a five-button joystick controller. It allows to navigate a hierarchy of items with a button or a five-button joystick controller. It allows to navigate a hierarchy of items
and submenus with the ability to change the values and execute commands. The menu can and submenus with the ability to change the values and execute commands. The menu can
be activated and deactivated on demand, allowing alternating between using the screen for be activated and deactivated on demand, allowing alternating between using the screen for
@ -17,8 +17,8 @@ Overview
-------- --------
This document describes the configuration and automations common for the components implementing This document describes the configuration and automations common for the components implementing
this integration. At the moment the character based LCD displays are supported using this component. At the moment the character based LCD displays are supported using
the :ref:`lcd_menu <lcd_menu>` integration and an instance of this is used in the configuration the :ref:`lcd_menu <lcd_menu>` component and an instance of this is used in the configuration
examples. examples.

View File

@ -19,7 +19,7 @@ ESPHome node, without the requirement of a network connection.
Overview Overview
-------- --------
The integration implements the :ref:`Display Menu <display_menu>` integration providing The component implements the :ref:`Display Menu <display_menu>` component providing
a hierarchical menu primarily intended to be controlled either by a rotary encoder a hierarchical menu primarily intended to be controlled either by a rotary encoder
with a button or a five-button joystick controller. with a button or a five-button joystick controller.

View File

@ -14,16 +14,16 @@ directly integrate into Home Assistant through the native API.
esp32_camera: esp32_camera:
name: My Camera name: My Camera
external_clock: external_clock:
pin: GPIO27 pin: GPIOXX
frequency: 20MHz frequency: 20MHz
i2c_pins: i2c_pins:
sda: GPIO25 sda: GPIOXX
scl: GPIO23 scl: GPIOXX
data_pins: [GPIO17, GPIO35, GPIO34, GPIO5, GPIO39, GPIO18, GPIO36, GPIO19] data_pins: [GPIOXX, GPIOXX, GPIOXX, GPIOXX, GPIOXX, GPIOXX, GPIOXX, GPIOXX]
vsync_pin: GPIO22 vsync_pin: GPIOXX
href_pin: GPIO26 href_pin: GPIOXX
pixel_clock_pin: GPIO21 pixel_clock_pin: GPIOXX
reset_pin: GPIO15 reset_pin: GPIOXX
resolution: 640x480 resolution: 640x480
jpeg_quality: 10 jpeg_quality: 10
@ -37,10 +37,10 @@ Configuration variables:
a ``name`` will implicitly set this to true. 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, - **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). (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. - **entity_category** (*Optional*, string): The category of the entity.
See https://developers.home-assistant.io/docs/core/entity/#generic-properties 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. Set to ``""`` to remove the default entity category.
Connection Options: Connection Options:
@ -80,24 +80,24 @@ Image Settings:
- **resolution** (*Optional*, enum): The resolution the camera will capture images at. Higher - **resolution** (*Optional*, enum): The resolution the camera will capture images at. Higher
resolutions require more memory, if there's not enough memory you will see an error during startup. resolutions require more memory, if there's not enough memory you will see an error during startup.
- ``160x120`` (QQVGA) - ``160x120`` (QQVGA, 4:3)
- ``176x144`` (QCIF) - ``176x144`` (QCIF, 11:9)
- ``240x176`` (HQVGA) - ``240x176`` (HQVGA, 15:11)
- ``320x240`` (QVGA) - ``320x240`` (QVGA, 4:3)
- ``400x296`` (CIF) - ``400x296`` (CIF, 50:37)
- ``640x480`` (VGA, default) - ``640x480`` (VGA, 4:3, default)
- ``800x600`` (SVGA) - ``800x600`` (SVGA, 4:3)
- ``1024x768`` (XGA) - ``1024x768`` (XGA, 4:3)
- ``1280x1024`` (SXGA) - ``1280x1024`` (SXGA, 5:4)
- ``1600x1200`` (UXGA) - ``1600x1200`` (UXGA, 4:3)
- ``1920x1080`` (FHD) - ``1920x1080`` (FHD, 16:9)
- ``720x1280`` (Portrait HD) - ``720x1280`` (Portrait HD, 9:16)
- ``864x1536`` (Portrait 3MP) - ``864x1536`` (Portrait 3MP, 9:16)
- ``2048x1536`` (QXGA) - ``2048x1536`` (QXGA, 4:3)
- ``2560x1440`` (QHD) - ``2560x1440`` (QHD, 16:9)
- ``2560x1600`` (WQXGA) - ``2560x1600`` (WQXGA, 8:5)
- ``1080x1920`` (Portrait FHD) - ``1080x1920`` (Portrait FHD, 9:16)
- ``2560x1920`` (QSXGA) - ``2560x1920`` (QSXGA, 4:3)
- **jpeg_quality** (*Optional*, int): The JPEG quality that the camera should encode images with. - **jpeg_quality** (*Optional*, int): The JPEG quality that the camera should encode images with.
@ -174,12 +174,14 @@ Test Setting:
Camera uses PWM timer #1. If you need PWM (via the ``ledc`` platform) you need to manually specify Camera uses PWM timer #1. If you need PWM (via the ``ledc`` platform) you need to manually specify
a channel there (with the ``channel: 2`` parameter) a channel there (with the ``channel: 2`` parameter)
Configuration for Ai-Thinker Camera Configuration examples
----------------------------------- ----------------------
**Ai-Thinker Camera**:
.. warning:: .. warning::
GPIO16 on this board (and possibly other boards below) is connected to onboard PSRAM. GPIO16 on this board (and possibly other boards below) is connected to onboard PSRAM.
Using this GPIO for other purposes (eg as a button) will trigger the watchdog. Using this GPIO for other purposes (eg as a button) will trigger the watchdog.
Further information on pin notes can be found here: https://github.com/raphaelbs/esp32-cam-ai-thinker/blob/master/docs/esp32cam-pin-notes.md Further information on pin notes can be found here: https://github.com/raphaelbs/esp32-cam-ai-thinker/blob/master/docs/esp32cam-pin-notes.md
@ -203,8 +205,7 @@ Configuration for Ai-Thinker Camera
name: My Camera name: My Camera
# ... # ...
Configuration for M5Stack Camera **M5Stack Camera**:
--------------------------------
.. warning:: .. warning::
@ -235,8 +236,7 @@ Configuration for M5Stack Camera
name: My Camera name: My Camera
# ... # ...
Configuration for M5Stack Timer Camera X/F **M5Stack Timer Camera X/F**:
------------------------------------------
.. code-block:: yaml .. code-block:: yaml
@ -258,8 +258,7 @@ Configuration for M5Stack Timer Camera X/F
name: My Camera name: My Camera
# ... # ...
Confguration for M5Stack M5CameraF New **M5Stack M5CameraF New**:
--------------------------------------
.. code-block:: yaml .. code-block:: yaml
@ -277,8 +276,7 @@ Confguration for M5Stack M5CameraF New
pixel_clock_pin: GPIO21 pixel_clock_pin: GPIO21
reset_pin: GPIO15 reset_pin: GPIO15
Configuration for Wrover Kit Boards **Wrover Kit Boards**:
-----------------------------------
.. code-block:: yaml .. code-block:: yaml
@ -299,8 +297,7 @@ Configuration for Wrover Kit Boards
name: My Camera name: My Camera
# ... # ...
Configuration for TTGO T-Camera V05 **TTGO T-Camera V05**:
-----------------------------------
.. code-block:: yaml .. code-block:: yaml
@ -322,8 +319,7 @@ Configuration for TTGO T-Camera V05
name: My Camera name: My Camera
# ... # ...
Configuration for TTGO T-Camera V162 **TTGO T-Camera V162**:
------------------------------------
.. code-block:: yaml .. code-block:: yaml
@ -346,8 +342,7 @@ Configuration for TTGO T-Camera V162
name: My Camera name: My Camera
# ... # ...
Configuration for TTGO T-Camera V17 **TTGO T-Camera V17**:
-----------------------------------
.. code-block:: yaml .. code-block:: yaml
@ -371,8 +366,7 @@ Configuration for TTGO T-Camera V17
name: My Camera name: My Camera
# ... # ...
Configuration for TTGO T-Journal **TTGO T-Journal**:
--------------------------------
.. code-block:: yaml .. code-block:: yaml
@ -394,8 +388,7 @@ Configuration for TTGO T-Journal
# ... # ...
Configuration for TTGO-Camera Plus **TTGO-Camera Plus**:
----------------------------------
.. code-block:: yaml .. code-block:: yaml
@ -418,8 +411,7 @@ Configuration for TTGO-Camera Plus
name: My Camera name: My Camera
# ... # ...
Configuration for TTGO-Camera Mini **TTGO-Camera Mini**:
----------------------------------
.. code-block:: yaml .. code-block:: yaml
@ -440,8 +432,7 @@ Configuration for TTGO-Camera Mini
name: My Camera name: My Camera
# ... # ...
Configuration for ESP-EYE **ESP-EYE**:
----------------------------------
.. code-block:: yaml .. code-block:: yaml
@ -462,8 +453,7 @@ Configuration for ESP-EYE
name: My Camera name: My Camera
# ... # ...
Configuration for ESP32S3_EYE on `Freenove ESP32-S3-DevKitC-1 <https://github.com/Freenove/Freenove_ESP32_S3_WROOM_Board>`_ **ESP32S3_EYE** on `Freenove ESP32-S3-DevKitC-1 <https://github.com/Freenove/Freenove_ESP32_S3_WROOM_Board>`__:
---------------------------------------------------------------------------------------------------------------------------
.. code-block:: yaml .. code-block:: yaml
@ -490,6 +480,26 @@ Configuration for ESP32S3_EYE on `Freenove ESP32-S3-DevKitC-1 <https://github.co
name: My Camera name: My Camera
# ... # ...
**Seeed Studio XIAO ESP32S3 Sense**:
.. code-block:: yaml
esp32_camera:
external_clock:
pin: GPIO10
frequency: 20MHz
i2c_pins:
sda: GPIO40
scl: GPIO39
data_pins: [GPIO15, GPIO17, GPIO18, GPIO16, GPIO14, GPIO12, GPIO11, GPIO48]
vsync_pin: GPIO38
href_pin: GPIO47
pixel_clock_pin: GPIO13
# Image settings
name: My Camera
# ...
See Also See Also
-------- --------

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