Merge pull request #2925 from esphome/bump-2023.5.0

2023.5.0
This commit is contained in:
Jesse Hills 2023-05-17 13:41:56 +12:00 committed by GitHub
commit 4fd023331e
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
45 changed files with 1514 additions and 93 deletions

View File

@ -38,7 +38,7 @@ PROJECT_NAME = "ESPHome"
# could be handy for archiving the generated documentation or if some version
# control system is used.
PROJECT_NUMBER = 2023.4.4
PROJECT_NUMBER = 2023.5.0
# Using the PROJECT_BRIEF tag one can provide an optional one line description
# for a project that appears at the top of each page and should give viewer a

View File

@ -1,5 +1,5 @@
ESPHOME_PATH = ../esphome
ESPHOME_REF = 2023.4.4
ESPHOME_REF = 2023.5.0
.PHONY: html html-strict cleanhtml deploy help live-html Makefile netlify netlify-api api netlify-dependencies svg2png copy-svg2png minify

Binary file not shown.

After

Width:  |  Height:  |  Size: 76 KiB

View File

@ -1 +1 @@
2023.4.4
2023.5.0

209
changelog/2023.5.0.rst Normal file
View File

@ -0,0 +1,209 @@
ESPHome 2023.5.0 - 17th May 2023
================================
.. seo::
:description: Changelog for ESPHome 2023.5.0.
:image: /_static/changelog-2023.5.0.png
:author: Jesse Hills
:author_twitter: @jesserockz
.. imgtable::
:columns: 4
Speaker Core, components/speaker/index, speaker.svg
I2S Speaker, components/speaker/i2s_audio, i2s_audio.svg
MLX90614, components/sensor/mlx90614, mlx90614.jpg
MAX6956 I/O expander - I²C Bus, components/max6956, max6956.jpg
PCA6416A I/O Expander, components/pca6416a, pca6416a.svg
HYT271, components/sensor/hyt271, hyt271.jpg
GP8403, components/output/gp8403, gp8403.svg
ESP32 RMT LED Strip, components/light/esp32_rmt_led_strip, color_lens.svg
Speakers!!!
-----------
Following on from last months release adding :doc:`microphones </components/microphone/index>`,
this release adds :doc:`speaker </components/speaker/index>` support!
These new changes allows the :doc:`/components/voice_assistant` to request the raw audio
stream response from Home Assistant to playback without using a full :doc:`/components/media_player/index`.
This has much lower latency and allows for a much more responsive voice assistant experience.
More Microphones
----------------
This release also adds a bit more configuration for the i2s_audio microphone components.
There is a breaking-change that requires new configuration fields to be added in YAML.
See the :doc:`microphone documentation </components/microphone/i2s_audio>` for the configuration details,
but below is a small example for the M5Stack Atom Echo.
.. code-block:: yaml
# Old
microphone:
platform: i2s_audio
i2s_din_pin: GPIO23
id: my_microphone
# New
microphone:
platform: i2s_audio
i2s_din_pin: GPIO23
adc_type: external
pdm: false
Full list of changes
--------------------
New Components
^^^^^^^^^^^^^^
- Add mlx90614 sensors :esphomepr:`3749` by :ghuser:`jesserockz` (new-integration)
- Add PCA6416A Support :esphomepr:`4681` by :ghuser:`Mat931` (new-integration)
- Add support for hyt271 :esphomepr:`4282` by :ghuser:`Philippe12` (new-integration)
- Max6956 support added :esphomepr:`3764` by :ghuser:`looping40` (new-integration)
- Speaker support :esphomepr:`4743` by :ghuser:`jesserockz` (new-integration)
- Add gp8403 output component :esphomepr:`4495` by :ghuser:`jesserockz` (new-integration)
- Create esp32 rmt addressable light driver :esphomepr:`4708` by :ghuser:`jesserockz` (new-integration)
- Add host target platform :esphomepr:`4783` by :ghuser:`jesserockz` (new-integration)
Breaking Changes
^^^^^^^^^^^^^^^^
- Remove climate legacy away flags :esphomepr:`4744` by :ghuser:`jesserockz` (breaking-change)
- Revert "Template sensors always publish on update interval (#2224)" :esphomepr:`4774` by :ghuser:`nuttytree` (breaking-change)
Beta Changes
^^^^^^^^^^^^
- Fixed access point for ESP32 IDF platform :esphomepr:`4784` by :ghuser:`HeMan`
- Remove AUTO_LOAD from apds9960 :esphomepr:`4746` by :ghuser:`jesserockz`
- Supposed to fix #4069, by changing the default value to 0s (timeunit … :esphomepr:`4806` by :ghuser:`Alex1602`
- Wording :esphomepr:`4805` by :ghuser:`fgsch`
- Tuya: Prevent loop when setting colors on case-sensitive dps :esphomepr:`4809` by :ghuser:`richardhopton`
- Fix i2s media player volume control :esphomepr:`4813` by :ghuser:`jesserockz`
- Dont try stop if not actually started :esphomepr:`4814` by :ghuser:`jesserockz`
- Fix missing stop trait in send_cover_info :esphomepr:`4826` by :ghuser:`RoboMagus`
- Bump aioesphomeapi from 13.7.2 to 13.7.5 :esphomepr:`4830` by :ghuser:`dependabot[bot]`
- Update PulseLightEffect with range brightness :esphomepr:`4820` by :ghuser:`max246`
- Bump esphome-dashboard to 20230516.0 :esphomepr:`4831` by :ghuser:`jesserockz`
- Fix time period validation for the auto cleaning interval :esphomepr:`4811` by :ghuser:`fgsch`
- Bump tzlocal from 4.2 to 5.0.1 :esphomepr:`4829` by :ghuser:`dependabot[bot]`
- Start UART assignment at UART0 if the logger is not enabled or is not configured for hardware logging on ESP32 :esphomepr:`4762` by :ghuser:`spectrumjade`
- Synchronise Device Classes from Home Assistant :esphomepr:`4825` by :ghuser:`github-actions[bot]`
- support sending keys to the collector :esphomepr:`4838` by :ghuser:`ssieb`
- handle Wiegand 8-bit keys :esphomepr:`4837` by :ghuser:`ssieb`
All changes
^^^^^^^^^^^
- Only allow 5 jobs from each CI run to be in parallel :esphomepr:`4682` by :ghuser:`jesserockz`
- Add Bayesian type for binary_sensor_map component :esphomepr:`4640` by :ghuser:`kahrendt`
- Bump aioesphomeapi from 13.5.1 to 13.7.0 :esphomepr:`4676` by :ghuser:`dependabot[bot]`
- Bump peter-evans/create-pull-request from 4 to 5 :esphomepr:`4661` by :ghuser:`dependabot[bot]`
- Bump docker/build-push-action from 3 to 4 :esphomepr:`4367` by :ghuser:`dependabot[bot]`
- Keep Device Class in Flash. :esphomepr:`4639` by :ghuser:`Fabian-Schmidt`
- Add support for passive WiFi scanning :esphomepr:`4666` by :ghuser:`BellaCoola`
- Initial attempt at supporting ESP-IDF 5.0.0 :esphomepr:`4364` by :ghuser:`kbx81`
- Get Sunrise & Sunset for a Specific Date :esphomepr:`4712` by :ghuser:`RebbePod`
- Add `supports_stop` trait to Cover :esphomepr:`3897` by :ghuser:`amomchilov`
- Bump aioesphomeapi from 13.7.0 to 13.7.1 :esphomepr:`4725` by :ghuser:`dependabot[bot]`
- Add on_tag_removed trigger for RC522 :esphomepr:`4742` by :ghuser:`kbx81`
- Fix 'blutooth' typo in esp32_ble component :esphomepr:`4738` by :ghuser:`RoboMagus`
- Bump pylint from 2.17.2 to 2.17.3 :esphomepr:`4740` by :ghuser:`dependabot[bot]`
- Bump tornado from 6.2 to 6.3.1 :esphomepr:`4741` by :ghuser:`dependabot[bot]`
- Bump pytest from 7.3.0 to 7.3.1 :esphomepr:`4686` by :ghuser:`dependabot[bot]`
- Expand the platformio dep installer to also install platforms and tools :esphomepr:`4716` by :ghuser:`jesserockz`
- Remove climate legacy away flags :esphomepr:`4744` by :ghuser:`jesserockz` (breaking-change)
- Add mlx90614 sensors :esphomepr:`3749` by :ghuser:`jesserockz` (new-integration)
- Move am43 sensor code and remove auto load on cover :esphomepr:`4631` by :ghuser:`jesserockz`
- Fix assumed_state switch webserver :esphomepr:`4259` by :ghuser:`RoboMagus`
- Bump aioesphomeapi from 13.7.1 to 13.7.2 :esphomepr:`4753` by :ghuser:`dependabot[bot]`
- Bump git version in Dockerfile :esphomepr:`4763` by :ghuser:`jesserockz`
- Power down PN532 before deep sleep :esphomepr:`4707` by :ghuser:`tracestep`
- Switch ESPAsyncTCP-esphome to esphome fork :esphomepr:`4764` by :ghuser:`jesserockz`
- Bump pyupgrade from 3.3.1 to 3.3.2 :esphomepr:`4751` by :ghuser:`dependabot[bot]`
- Only pre-install libraries in docker images :esphomepr:`4766` by :ghuser:`jesserockz`
- Add PCA6416A Support :esphomepr:`4681` by :ghuser:`Mat931` (new-integration)
- play_folder bugfix and addition of play_mp3 :esphomepr:`4758` by :ghuser:`llluis`
- RF Codec for Drayton Digistat heating controller :esphomepr:`4494` by :ghuser:`marshn`
- Add support for hyt271 :esphomepr:`4282` by :ghuser:`Philippe12` (new-integration)
- Add support for BLE passkey authentication :esphomepr:`4258` by :ghuser:`Mat931`
- Add support for V2 of the waveshare 5.83in e-paper display. :esphomepr:`3660` by :ghuser:`cooki35`
- Max6956 support added :esphomepr:`3764` by :ghuser:`looping40` (new-integration)
- Bump zeroconf from 0.56.0 to 0.60.0 :esphomepr:`4767` by :ghuser:`dependabot[bot]`
- Revert "Template sensors always publish on update interval (#2224)" :esphomepr:`4774` by :ghuser:`nuttytree` (breaking-change)
- update schema gen to 2023.4.0 :esphomepr:`4772` by :ghuser:`glmnet`
- Speaker support :esphomepr:`4743` by :ghuser:`jesserockz` (new-integration)
- Add gp8403 output component :esphomepr:`4495` by :ghuser:`jesserockz` (new-integration)
- Create esp32 rmt addressable light driver :esphomepr:`4708` by :ghuser:`jesserockz` (new-integration)
- Bump ESP32-audioI2s to 2.0.7 :esphomepr:`4796` by :ghuser:`jesserockz`
- SM2135 Add optional current configuration, avoid communication failures. :esphomepr:`3850` by :ghuser:`BoukeHaarsma23`
- Fix ezo parsing :esphomepr:`4792` by :ghuser:`alfredopironti`
- [ili9xxx] Improve fill operation performance :esphomepr:`4702` by :ghuser:`Fabian-Schmidt`
- Add host target platform :esphomepr:`4783` by :ghuser:`jesserockz` (new-integration)
- Add more envs to root platformio :esphomepr:`4799` by :ghuser:`jesserockz`
- Keep Unit of Measurement in Flash. :esphomepr:`4719` by :ghuser:`Fabian-Schmidt`
- [display] Small display print performance improvement :esphomepr:`4788` by :ghuser:`Fabian-Schmidt`
- Fixed calculation of start and end dhcp range :esphomepr:`4785` by :ghuser:`HeMan`
- Add more configuration for microphones - i2s/pdm/adc :esphomepr:`4775` by :ghuser:`jesserockz`
- Wrap VA code :esphomepr:`4800` by :ghuser:`jesserockz`
- Make i2s_audio bclk_pin optional :esphomepr:`4801` by :ghuser:`jesserockz`
- Validate project details are set for dashboard_import :esphomepr:`4802` by :ghuser:`jesserockz`
- Fixed access point for ESP32 IDF platform :esphomepr:`4784` by :ghuser:`HeMan`
- Remove AUTO_LOAD from apds9960 :esphomepr:`4746` by :ghuser:`jesserockz`
- Supposed to fix #4069, by changing the default value to 0s (timeunit … :esphomepr:`4806` by :ghuser:`Alex1602`
- Wording :esphomepr:`4805` by :ghuser:`fgsch`
- Tuya: Prevent loop when setting colors on case-sensitive dps :esphomepr:`4809` by :ghuser:`richardhopton`
- Fix i2s media player volume control :esphomepr:`4813` by :ghuser:`jesserockz`
- Dont try stop if not actually started :esphomepr:`4814` by :ghuser:`jesserockz`
- Fix missing stop trait in send_cover_info :esphomepr:`4826` by :ghuser:`RoboMagus`
- Bump aioesphomeapi from 13.7.2 to 13.7.5 :esphomepr:`4830` by :ghuser:`dependabot[bot]`
- Update PulseLightEffect with range brightness :esphomepr:`4820` by :ghuser:`max246`
- Bump esphome-dashboard to 20230516.0 :esphomepr:`4831` by :ghuser:`jesserockz`
- Fix time period validation for the auto cleaning interval :esphomepr:`4811` by :ghuser:`fgsch`
- Bump tzlocal from 4.2 to 5.0.1 :esphomepr:`4829` by :ghuser:`dependabot[bot]`
- Start UART assignment at UART0 if the logger is not enabled or is not configured for hardware logging on ESP32 :esphomepr:`4762` by :ghuser:`spectrumjade`
- Synchronise Device Classes from Home Assistant :esphomepr:`4825` by :ghuser:`github-actions[bot]`
- support sending keys to the collector :esphomepr:`4838` by :ghuser:`ssieb`
- handle Wiegand 8-bit keys :esphomepr:`4837` by :ghuser:`ssieb`
Past Changelogs
---------------
- :doc:`2023.4.0`
- :doc:`2023.3.0`
- :doc:`2023.2.0`
- :doc:`2022.12.0`
- :doc:`2022.11.0`
- :doc:`2022.10.0`
- :doc:`2022.9.0`
- :doc:`2022.8.0`
- :doc:`2022.6.0`
- :doc:`2022.5.0`
- :doc:`2022.4.0`
- :doc:`2022.3.0`
- :doc:`2022.2.0`
- :doc:`2022.1.0`
- :doc:`2021.12.0`
- :doc:`2021.11.0`
- :doc:`2021.10.0`
- :doc:`2021.9.0`
- :doc:`2021.8.0`
- :doc:`v1.20.0`
- :doc:`v1.19.0`
- :doc:`v1.18.0`
- :doc:`v1.17.0`
- :doc:`v1.16.0`
- :doc:`v1.15.0`
- :doc:`v1.14.0`
- :doc:`v1.13.0`
- :doc:`v1.12.0`
- :doc:`v1.11.0`
- :doc:`v1.10.0`
- :doc:`v1.9.0`
- :doc:`v1.8.0`
- :doc:`v1.7.0`

View File

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

View File

@ -1,39 +1,41 @@
RC522 RFID
==========
RC522 NFC/RFID
==============
.. seo::
:description: Instructions for setting up RC522 RFID tag readers and tags in ESPHome
:description: Instructions for setting up RC522 NFC/RFID tag readers and tags in ESPHome
:image: rc522.jpg
:keywords: RC522, RFID
:keywords: RC522, NFC, RFID
.. _rc522-component:
The ``rc522`` component allows you to use RC522 RFID controllers
(`datasheet <https://www.nxp.com/docs/en/data-sheet/MFRC522.pdf>`__, `Ali Express <https://es.aliexpress.com/item/1260729519.html>`__)
with ESPHome. ESPHome can read the tag UID from it, every RFID tag comes with a unique
UID value. Each known tag can be associated to a binary sensor, or you can use the tag information directly.
See :ref:`rc522-setting_up_tags` for information on how to setup individual binary sensors for this component.
The RC522 supports SPI, I²C and UART communication protocols, ESPHome can use either SPI or I²C.
Component/Hub
-------------
* If you have a module like the image below, it can only be used in SPI mode (`unless hacked <https://forum.arduino.cc/index.php?topic=442750.0>`__)
and you need to have an :ref:`SPI bus <spi>` in your configuration with both the **miso_pin** and **mosi_pin** set.
* If you have a RC522 which communicates via I²C like in the M5 Stack then you need to have an :ref:`I²C <i2c>` bus configured.
.. figure:: images/rc522-full.jpg
:align: center
:width: 60.0%
The ``rc522`` component allows you to use RC522 NFC/RFID controllers
(`datasheet <https://www.nxp.com/docs/en/data-sheet/MFRC522.pdf>`__, `Ali Express <https://es.aliexpress.com/item/1260729519.html>`__)
with ESPHome. ESPHome can read the UID from the tag. Every NFC/RFID tag has a unique "UID" value assigned at the time
of manufacture. Tags can be associated with binary sensors, making it easy to determine when a specific tag is present.
You can also use the tag information directly within ESPHome automations/lambdas. See :ref:`rc522-setting_up_tags` for
information on how to setup individual binary sensors using this component.
The RC522 IC supports SPI, I²C and UART communication protocols; ESPHome can use either SPI or I²C.
Component/Hub
-------------
- If you have a module as shown in the image above, it can only be used in SPI mode
(`unless hacked <https://forum.arduino.cc/index.php?topic=442750.0>`__) and you must define a :ref:`SPI bus <spi>`
in your configuration with both the **miso_pin** and **mosi_pin** set.
- If you have a RC522 which communicates via I²C (as on the M5 Stack), you need to have an :ref:`I²C <i2c>` bus configured.
Over SPI
--------
The ``rc522_spi`` component allows you to use RC522 RFID controllers with ESPHome. This component is a global hub that
establishes the connection to the RC522 via :ref:`SPI <spi>` (also available over I²C). Using the
:ref:`RC522 binary sensors <rc522-tag>` you can then create individual binary sensors that track if
an RFID tag is currently detected by the RC522.
The ``rc522_spi`` component allows you to use RC522 NFC/RFID controllers with ESPHome. This component is a global hub
that establishes the connection to the RC522 via :ref:`SPI <spi>`. Using :ref:`RC522 binary sensors <rc522-binary_sensor>`,
you can then create individual binary sensors that track if an NFC/RFID tag is currently detected by the RC522.
.. code-block:: yaml
@ -52,24 +54,26 @@ Configuration variables:
- **cs_pin** (**Required**, :ref:`Pin Schema <config-pin_schema>`): The pin on the ESP that the chip select line
is connected to.
- **spi_id** (*Optional*, :ref:`config-id`): Manually specify the ID of the :ref:`SPI Component <spi>` if you want
to use multiple SPI buses.
- **on_tag** (*Optional*, :ref:`Automation <automation>`): An automation to perform when a tag is read. See
:ref:`rc522-on_tag`.
- **reset_pin** (*Optional*, :ref:`Pin Schema <config-pin_schema>`): The pin connected to the RST line. Some tests
shows the RC522 working okay without this.
- **update_interval** (*Optional*, :ref:`config-time`): The duration of each scan on the RC522. This affects the
duration that the individual binary sensors stay active when they're found.
If a device is not found within this time window, it will be marked as not present. Defaults to ``1s``.
- **spi_id** (*Optional*, :ref:`config-id`): Manually specify the ID of the :ref:`SPI Component <spi>` if you want
to use multiple SPI buses.
- **id** (*Optional*, :ref:`config-id`): Manually specify the ID for this component.
- **on_tag** (*Optional*, :ref:`Automation <automation>`): An automation to perform when a tag is read. See
:ref:`rc522-on_tag`.
- **on_tag_removed** (*Optional*, :ref:`Automation <automation>`): An automation to perform after a tag is removed. See
:ref:`rc522-on_tag_removed`.
Over I²C
--------
The ``rc522_i2c`` component allows you to use RC522 RFID controllers with ESPHome. This component is a global hub that
establishes the connection to the RC522 via :ref:`I²C <i2c>` (also available over SPI). Using the
:ref:`RC522 binary sensors <rc522-tag>` you can then create individual binary sensors that track if
an RFID tag is currently detected by the RC522.
The ``rc522_i2c`` component allows you to use RC522 NFC/RFID controllers with ESPHome. This component is a global hub
that establishes the connection to the RC522 via :ref:`I²C <i2c>` (also available over SPI). Using the
:ref:`RC522 binary sensors <rc522-binary_sensor>` you can then create individual binary sensors that track if
an NFC/RFID tag is currently detected by the RC522.
.. code-block:: yaml
@ -86,27 +90,28 @@ Configuration variables:
************************
- **address** (*Optional*, int): Manually specify the I²C address of the sensor. Defaults to ``0x28``.
- **i2c_id** (*Optional*, :ref:`config-id`): Manually specify the ID of the :ref:`I²C Component <i2c>` if you want
to use multiple I²C buses.
- **on_tag** (*Optional*, :ref:`Automation <automation>`): An automation to perform when a tag is read. See
:ref:`rc522-on_tag`.
- **reset_pin** (*Optional*, :ref:`Pin Schema <config-pin_schema>`): The pin connected to the RST line. Some tests
shows the RC522 working okay without this.
- **update_interval** (*Optional*, :ref:`config-time`): The duration of each scan on the RC522. This affects the
duration that the individual binary sensors stay active when they're found.
If a device is not found within this time window, it will be marked as not present. Defaults to ``1s``.
- **i2c_id** (*Optional*, :ref:`config-id`): Manually specify the ID of the :ref:`I²C Component <i2c>` if you want
to use multiple I²C buses.
- **id** (*Optional*, :ref:`config-id`): Manually specify the ID for this component.
- **on_tag** (*Optional*, :ref:`Automation <automation>`): An automation to perform when a tag is read. See
:ref:`rc522-on_tag`.
- **on_tag_removed** (*Optional*, :ref:`Automation <automation>`): An automation to perform after a tag is removed. See
:ref:`rc522-on_tag_removed`.
Triggers
--------
.. _rc522-on_tag:
``on_tag`` Action
-----------------
``on_tag`` Trigger
******************
This automation will be triggered when the RC522 module responds with a tag. Please note that this
can be called quite often (with an interval of ``update_interval``) as it's triggered repeatedly
if the tag is re-read many times.
This automation will be triggered immediately after the RC522 identifies a tag.
The parameter ``x`` this trigger provides is of type ``std::string`` and is the tag UID in the format
``74-10-37-94``. The configuration below will for example publish the tag ID on the MQTT topic ``rc522/tag``.
@ -132,13 +137,35 @@ using :ref:`api-homeassistant_tag_scanned_action`.
then:
- homeassistant.tag_scanned: !lambda 'return x;'
.. _rc522-tag:
.. _rc522-on_tag_removed:
``on_tag_removed`` Trigger
**************************
This automation will be triggered when the RC522 no longer "sees" a previously scanned tag.
The parameter ``x`` this trigger provides is of type ``std::string`` and is the removed tag UID in the format
``74-10-37-94``. The example configuration below will publish the removed tag ID on the MQTT topic ``pn7160/tag_removed``.
.. code-block:: yaml
rc522_spi: # or rc522_i2c
# ...
on_tag_removed:
then:
- mqtt.publish:
topic: rc522/tag_removed
payload: !lambda 'return x;'
.. _rc522-binary_sensor:
``rc522`` Binary Sensor
-----------------------
The ``rc522`` binary sensor platform lets you track if an RFID tag with a given
unique id (``uid``) is currently being detected by the RC522 or not.
The ``rc522`` binary sensor platform lets you track if an NFC/RFID tag with a given unique id (``uid``) is currently
being detected by the RC522 or not.
.. code-block:: yaml
@ -160,7 +187,7 @@ unique id (``uid``) is currently being detected by the RC522 or not.
Configuration variables:
************************
- **uid** (**Required**, string): The unique ID of the RFID tag. This is a hyphen-separated list
- **uid** (**Required**, string): The unique ID of the NFC/RFID tag. This is a hyphen-separated list
of hexadecimal values. For example ``74-10-37-94``.
- **name** (**Required**, string): The name of the binary sensor.
- **id** (*Optional*, :ref:`config-id`): Manually specify the ID used for code generation.
@ -171,17 +198,16 @@ Configuration variables:
Setting Up Tags
---------------
To set up binary sensors for specific RFID tags you first have to know their unique IDs. To obtain this
To set up binary sensors for specific NFC/RFID tags you first have to know their unique IDs. To obtain this
id, first set up a simple RC522 configuration without any binary sensors like above.
When your code is running and you approach the RC522 with an RFID Tag, you should see a message like this:
When your code is running and you approach the RC522 with an NFC/RFID Tag, you should see a message like this:
.. code::
Found new tag '74-10-37-94'
Then copy this id and create a ``binary_sensor`` entry as in the configuration example. Repeat this process for
each tag.
Then copy this id and create a ``binary_sensor`` entry as in the configuration example. Repeat this process for each tag.
See Also
--------

View File

@ -21,8 +21,8 @@ but merely manages connections to them for use by other components.
ESP32 BLE stack. If you wish to connect more devices, use additional
ESP32 boards.
This component does not (yet) support devices that require
security settings (eg connecting with a PIN).
This component supports devices that require a 6 digit PIN code
for authentication.
Currently, devices connected with the client cannot be
supported by other components based on :doc:`/components/esp32_ble_tracker`
@ -53,6 +53,12 @@ Automations:
when the client connects to a device. See :ref:`ble_client-on_connect`.
- **on_disconnect** (*Optional*, :ref:`Automation <automation>`): An automation to perform
when the client disconnects from a device. See :ref:`ble_client-on_disconnect`.
- **on_passkey_request** (*Optional*, :ref:`Automation <automation>`): An automation to enter
the passkey required by the other BLE device. See :ref:`ble_client-on_passkey_request`.
- **on_passkey_notification** (*Optional*, :ref:`Automation <automation>`): An automation to
display the passkey to the user. See :ref:`ble_client-on_passkey_notification`.
- **on_numeric_comparison_request** (*Optional*, :ref:`Automation <automation>`): An automation to
compare the passkeys shown on the two BLE devices. See :ref:`ble_client-on_numeric_comparison_request`.
BLE Client Automation
---------------------
@ -91,6 +97,64 @@ This automation is triggered when the client disconnects from a BLE device.
- lambda: |-
ESP_LOGD("ble_client_lambda", "Disconnected from BLE device");
.. _ble_client-on_passkey_request:
``on_passkey_request``
**********************
This automation is triggered when the BLE device requests a passkey for authentication.
.. code-block:: yaml
ble_client:
- mac_address: 11:22:33:44:55:66
id: ble_itag
on_passkey_request:
then:
- ble_client.passkey_reply:
id: ble_itag
passkey: 123456
.. _ble_client-on_passkey_notification:
``on_passkey_notification``
***************************
This automation is triggered when a passkey is received from the BLE device.
.. code-block:: yaml
ble_client:
- mac_address: 11:22:33:44:55:66
id: ble_itag
on_passkey_notification:
then:
- logger.log:
format: "Enter this passkey on your BLE device: %06d"
args: [ passkey ]
.. _ble_client-on_numeric_comparison_request:
``on_numeric_comparison_request``
*********************************
This automation is triggered when a numeric comparison is requested by the BLE device.
.. code-block:: yaml
ble_client:
- mac_address: 11:22:33:44:55:66
id: ble_itag
on_numeric_comparison_request:
then:
- logger.log:
format: "Compare this passkey with the one on your BLE device: %06d"
args: [ passkey ]
- ble_client.numeric_comparison_reply:
id: ble_itag
accept: True
.. _ble_client-ble_write_action:
``ble_client.ble_write`` Action
@ -133,6 +197,75 @@ Configuration variables:
- **characteristic_uuid** (**Required**, UUID): UUID of the service's characteristic to write to.
- **value** (**Required**, Array of bytes or :ref:`lambda <config-lambda>`): The value to be written.
.. _ble_client-passkey_reply_action:
``ble_client.passkey_reply`` Action
-----------------------------------
This action triggers an authentication attempt using the specified ``passkey``.
Example usage:
.. code-block:: yaml
on_...:
then:
- ble_client.passkey_reply:
id: my_ble_client
passkey: 123456
Configuration variables:
- **id** (**Required**, :ref:`config-id`): ID of the associated BLE client.
- **passkey** (**Required**, int): The 6-digit passkey.
.. _ble_client-numeric_comparison_reply_action:
``ble_client.numeric_comparison_reply`` Action
----------------------------------------------
This action triggers an authentication attempt after a numeric comparison.
Example usage:
.. code-block:: yaml
on_...:
then:
- ble_client.numeric_comparison_reply:
id: my_ble_client
accept: True
Configuration variables:
- **id** (**Required**, :ref:`config-id`): ID of the associated BLE client.
- **accept** (**Required**, boolean): Should be ``true`` if the passkeys
displayed on both BLE devices are matching.
.. _ble_client-remove_bond_action:
``ble_client.remove_bond`` Action
----------------------------------------------
This action removes a device from the security database and manages
unpairing.
Example usage:
.. code-block:: yaml
ble_client:
- mac_address: 11:22:33:44:55:66
id: my_ble_client
on_connect:
then:
- ble_client.remove_bond:
id: my_ble_client
Configuration variables:
- **id** (**Required**, :ref:`config-id`): ID of the associated BLE client.
BLE Overview
------------
This section gives a brief overview of the Bluetooth LE architecture
@ -186,9 +319,8 @@ characteristics and descriptors also provide a small 2-byte
Setting Up Devices
------------------
Whilst the component can connect to most BLE devices (that do not
require authentication/pin), useful functionality is only obtained
through dependent components, such as :doc:`/components/sensor/ble_client`.
Whilst the component can connect to most BLE devices, useful functionality
is only obtained through dependent components, such as :doc:`/components/sensor/ble_client`.
See the documentation for these components for details on setting up
specific devices.
@ -247,6 +379,78 @@ The discovered services can then be used to enable and configure other
ESPHome components, for example Service UUID 0xFFE0 is used for iTag style
keychain button events, used by the :doc:`/components/sensor/ble_client` component.
Passkey examples
----------------
Secure connection with a fixed passkey:
.. code-block:: yaml
esp32_ble:
io_capability: keyboard_only
esp32_ble_tracker:
ble_client:
- mac_address: A4:C1:38:B1:CD:7F
id: pvvx_ble_display
on_passkey_request:
then:
- logger.log: "Authenticating with passkey"
- ble_client.passkey_reply:
id: pvvx_ble_display
passkey: 123456
Secure connection with a dynamically generated passkey:
.. code-block:: yaml
api:
services:
- service: passkey_reply
variables:
passkey: int
then:
- logger.log: "Authenticating with passkey"
- ble_client.passkey_reply:
id: my_ble_client
passkey: !lambda return passkey;
- service: numeric_comparison_reply
variables:
accept: bool
then:
- logger.log: "Authenticating with numeric comparison"
- ble_client.numeric_comparison_reply:
id: my_ble_client
accept: !lambda return accept;
esp32_ble:
io_capability: keyboard_display
esp32_ble_tracker:
ble_client:
- mac_address: AA:BB:CC:DD:EE:FF
id: my_ble_client
on_passkey_request:
then:
- logger.log: "Enter the passkey displayed on your BLE device"
- logger.log: " Go to https://my.home-assistant.io/redirect/developer_services/ and select passkey_reply"
on_passkey_notification:
then:
- logger.log:
format: "Enter this passkey on your BLE device: %06d"
args: [ passkey ]
on_numeric_comparison_request:
then:
- logger.log:
format: "Compare this passkey with the one on your BLE device: %06d"
args: [ passkey ]
- logger.log: " Go to https://my.home-assistant.io/redirect/developer_services/ and select numeric_comparison_reply"
on_connect:
then:
- logger.log: "Connected"
See Also
--------

View File

@ -111,6 +111,39 @@ Configuration options:
- **loop** (*Optional*, boolean, :ref:`templatable <config-templatable>`): Repeats playing
the same track. Defaults to ``false``.
``dfplayer.play_mp3`` Action
----------------------------
Plays a track inside the folder ``mp3``. Files inside the folder must be numbered from 1
to 9999, like ``0001.mp3``, ``0002.mp3``, ... etc.
The folder name needs to be ``mp3``, placed under the SD card root directory, and the
mp3 file name needs to be 4 digits, for example, "0001.mp3", placed under the mp3 folder.
If you want, you can add additional text after the number in the filename, for example,
``0001hello.mp3``, but must always be referenced by number only in yaml.
.. code-block:: bash
/mp3
/0001hello.mp3
/0002.mp3
/0003_thisistheway.mp3
..
.. code-block:: yaml
on_...:
then:
- dfplayer.play_mp3:
file: 1
# Shorthand
- dfplayer.play_mp3: 1
Configuration options:
- **file** (**Required**, int, :ref:`templatable <config-templatable>`): The file number
inside the ``mp3`` folder to play.
``dfplayer.play_folder`` Action
-------------------------------

View File

@ -91,6 +91,7 @@ Configuration variables:
- ``4.20in``
- ``4.20in-bV2`` - B/W rendering only
- ``5.83in``
- ``5.83inv2``
- ``7.50in``
- ``7.50in-bV2`` - also supports v3, B/W rendering only
- ``7.50in-bc`` - display with version sticker '(C)' on the back, B/W rendering only

View File

@ -13,9 +13,18 @@ can run.
# Example configuration
esp32_ble:
io_capability: keyboard_only
Configuration variables:
------------------------
No configuration variables.
- **io_capability** (*Optional*, enum): The IO capability of this ESP32, used for securely connecting to other BLE devices. Defaults to ``none``.
- ``none`` - No IO capability (Connections that require PIN code authentication will fail)
- ``keyboard_only`` - Only a keyboard to enter PIN codes (or a fixed PIN code)
- ``display_only`` - Only a display to show PIN codes
- ``keyboard_display`` - A keyboard and a display
- ``display_yes_no`` - A display to show PIN codes and buttons to confirm or deny the connection
See Also
--------

View File

@ -21,7 +21,7 @@ Configuration variables:
------------------------
- **i2s_lrclk_pin** (**Required**, :ref:`Pin Schema <config-pin_schema>`): The GPIO pin to use for the I²S ``LRCLK`` *(Left/Right Clock)* signal, also referred to as ``WS`` *(Word Select)* or ``FS`` *(Frame Sync)*.
- **i2s_bclk_pin** (**Required**, :ref:`Pin Schema <config-pin_schema>`): The GPIO pin to use for the I²S ``BCLK`` *(Bit Clock)* signal, also referred to as ``SCK`` *(Serial Clock)*.
- **i2s_bclk_pin** (*Optional*, :ref:`Pin Schema <config-pin_schema>`): The GPIO pin to use for the I²S ``BCLK`` *(Bit Clock)* signal, also referred to as ``SCK`` *(Serial Clock)*.
- **id** (*Optional*, :ref:`config-id`): Manually specify the ID for this I²S bus if you need multiple.
See also

Binary file not shown.

After

Width:  |  Height:  |  Size: 34 KiB

View File

@ -24,5 +24,6 @@ Components
display_menu/index
media_player/index
microphone/index
speaker/index
time/index
*

View File

@ -83,6 +83,10 @@ Automations:
if the timeout happens. The current sequence of pressed keys is placed in a ``vector<uint8_t>`` variable ``x``
and ``start`` holds the start key that activated this sequence or else ``0``.
Lambda:
-------
- **send_key(uint8_t key)**: Send a key to the collector directly.
See Also
--------

View File

@ -0,0 +1,69 @@
ESP32 RMT LED Strip
===================
.. seo::
:description: Instructions for setting up addressable lights like NEOPIXEL on an ESP32 using the RMT peripheral.
:image: color_lens.svg
This is a component using the ESP32 RMT peripheral to drive most addressable LED strips.
.. code-block:: yaml
light:
- platform: esp32_rmt_led_strip
rgb_order: GRB
pin: GPIO13
num_leds: 30
rmt_channel: 0
chipset: ws2812
name: "My Light"
Configuration variables
-----------------------
- **pin** (**Required**, :ref:`config-pin`): The pin for the data line of the light.
- **num_leds** (**Required**, int): The number of LEDs in the strip.
- **rmt_channel** (**Required**, int): The RMT channel to use. If using multiple strips, you need to use different channels.
- **ESP32**: ``0`` to ``7``
- **ESP32-S2**: ``0`` to ``3``
- **ESP32-S3**: ``0`` to ``3``
- **ESP32-C3**: ``0`` or ``1``
- **chipset** (**Required**, enum): The chipset to apply known timings from. Not used if specifying the timings manually, see below.
- ``WS2812``
- ``SK6812``
- ``APA106``
- ``SM16703``
- **rgb_order** (**Required**, string): The RGB order of the strip.
- ``RGB``
- ``RBG``
- ``GRB``
- ``GBR``
- ``BGR``
- ``BRG``
- **is_rgbw** (*Optional*, boolean): Set to ``true`` if the strip is RGBW. Defaults to ``false``.
- **max_refresh_rate** (*Optional*, :ref:`config-time`):
A time interval used to limit the number of commands a light can handle per second. For example
16ms will limit the light to a refresh rate of about 60Hz. Defaults to sending commands as quickly as
changes are made to the lights.
Manual Timings
**************
These can be used if you know the timings and your chipset is not set above. If you have a new specific chipset,
please consider adding support to the codebase and add it to the list above.
- **bit0_high** (*Optional*, :ref:`config-time`): The time to hold the data line high for a ``0`` bit.
- **bit0_low** (*Optional*, :ref:`config-time`): The time to hold the data line low for a ``0`` bit.
- **bit1_high** (*Optional*, :ref:`config-time`): The time to hold the data line high for a ``1`` bit.
- **bit1_low** (*Optional*, :ref:`config-time`): The time to hold the data line low for a ``1`` bit.
See Also
--------
- :doc:`/components/light/index`
- :doc:`/components/power_supply`
- :apiref:`esp32_rmt_led_strip/esp32_rmt_led_strip.h`
- :ghedit:`Edit`

View File

@ -486,6 +486,8 @@ This effect makes a pulsating light. The period can be defined by ``update_inter
name: "Fast Pulse"
transition_length: 0.5s
update_interval: 0.5s
min_brightness: 0%
max_brightness: 100%
- pulse:
name: "Slow Pulse"
# transition_length: 1s # defaults to 1s
@ -496,6 +498,8 @@ Configuration variables:
- **name** (*Optional*, string): The name of the effect. Defaults to ``Pulse``.
- **transition_length** (*Optional*, :ref:`config-time`): The duration of each transition. Defaults to ``1s``.
- **update_interval** (*Optional*, :ref:`config-time`): The interval when the new transition is started. Defaults to ``1s``.
- **min_brightness** (*Optional*, percentage): The minimum brightness value. Defaults to ``0%``
- **max_brightness** (*Optional*, percentage): The maximum brightness value. Defaults to ``100%``
Random Effect

290
components/max6956.rst Normal file
View File

@ -0,0 +1,290 @@
MAX6956 I/O Expander
====================
.. seo::
:description: Instructions for setting up MAX6956 port expanders in ESPHome.
:image: max6956.jpg
:keywords: MAX6956
The MAX6956 component allows you to use MAX6956 I/O expanders
(`datasheet <https://datasheets.maximintegrated.com/en/ds/MAX6956.pdf>`__) in ESPHome. It uses :ref:`I²C Bus <i2c>` for communication.
The ``max6956`` exists in 2 versions 20 or 28 ports, depending on the packaging.
Once configured, you can use any of the 20 or 28 pins for your projects. Within ESPHome they emulate a real internal GPIO pin
and can therefore be used with many of ESPHome's components such as the GPIO binary sensor or GPIO switch. Interrupt-on-change for inputs is not possible.
Pins can also be individualy configured as led driver and used with Light components. Current value can be set globaly or for each pin, through 16 possible levels. Driving RGB
led requires 3 pins.
Any option accepting a :ref:`Pin Schema <config-pin_schema>` can theoretically be used.
Component/Hub
-------------
.. figure:: images/max6956.jpg
:align: center
:width: 80.0%
MAX6956 I/O Expander.
The ``max6956`` is an :ref:`I²C Bus <i2c>` slave. Its address is configured using A0 and A1 hardware pins from 0x40 to 0x4F.
.. code-block:: yaml
max6956:
- id: max6956_1
address: 0x40
i2c_id: bus_a
Configuration variables:
************************
- **id** (**Required**, :ref:`config-id`): The id to use for this ``max6956`` component.
- **address** (*Optional*, int): The I²C address of the driver.
Defaults to ``0x40``.
- **i2c_id** (*Optional*): The I²C Bus ID
Defaults to ``false``
- **brightness_global** (*Optional*): Set the value of the current to be sink by all pins configured as led driver.
Defaults to ``0``
- **brightness_mode** (*Optional*): Define if the current to be sink will be confgured globaly or per pin configured as led driver.
Defaults to ``global``
Binary Sensor
-------------
``max6956`` pins can be use as binary sensor. Individual pullup are supported.
.. code-block:: yaml
# Example configuration : pin as input with pullup
i2c:
id: bus_a
sda: GPIO13
scl: GPIO16
scan: false
max6956:
- id: max6956_1
address: 0x40
i2c_id: bus_a
# Individual input
binary_sensor:
- platform: gpio
name: "MaxIn Pin 4"
id: In_4
pin:
max6956: max6956_1
number: 4
mode:
input: true
pullup: true
inverted: False
Switch
-------------
``max6956`` pins can be use as switch.
.. code-block:: yaml
# Example configuration : pin as output
i2c:
id: bus_a
sda: GPIO13
scl: GPIO16
max6956:
- id: max6956_1
address: 0x40
i2c_id: bus_a
# Individual output
switch:
- platform: gpio
name: "MaxIn Pin 8"
id: In_8
pin:
max6956: max6956_1
number: 8
mode:
output: true
inverted: False
Led driver
-------------
``max6956`` can control a constant-current sink to drive leds, with 16 equal steps from 1.5mA to 24mA.
.. code-block:: yaml
# Example configuration : pin as led driver, current globaly
i2c:
id: bus_a
sda: GPIO13
scl: GPIO16
switch:
- platform: template
name: "Led"
id: MaxOut4
optimistic: true
turn_on_action:
- output.turn_on: maxOut_pin4
turn_off_action:
- output.turn_off: maxOut_pin4
number:
- platform: template
name: "Global brightness"
id: global_brightness
optimistic: true
min_value: 0
max_value: 15
initial_value: 1
step: 1
mode: slider
on_value:
- max6956.set_brightness_global:
id: max6956_1
brightness_global: !lambda return x;
max6956:
- id: max6956_1
address: 0x40
i2c_id: bus_a
brightness_mode: global
brightness_global: 5
#output to use
output:
- platform: max6956
pin: 4
id: maxOut_pin4
#led binded to output
light:
- platform: monochromatic
id: Light_1
output: maxOut_pin4
.. code-block:: yaml
# Example configuration : pin as led driver, current managed individualy (RBG led)
i2c:
id: bus_a
sda: GPIO13
scl: GPIO16
max6956:
- id: max6956_1
address: 0x40
i2c_id: bus_a
brightness_mode: segment
switch:
- platform: template
name: "Led Red"
id: MaxOut4
optimistic: true
turn_on_action:
- output.turn_on: maxOut_pin4
turn_off_action:
- output.turn_off: maxOut_pin4
- platform: template
name: "Led Green"
id: MaxOut5
optimistic: true
turn_on_action:
- output.turn_on: maxOut_pin5
turn_off_action:
- output.turn_off: maxOut_pin5
- platform: template
name: "Led Blue"
id: MaxOut6
optimistic: true
turn_on_action:
- output.turn_on: maxOut_pin6
turn_off_action:
- output.turn_off: maxOut_pin6
number:
- platform: template
name: "Number Red"
id: number_LedRed
optimistic: true
min_value: 0
max_value: 100
initial_value: 10
step: 1
mode: slider
on_value:
- output.set_level:
id: maxOut_pin4
level: !lambda return x/100;
- platform: template
name: "Number Green"
id: number_LedGreen
optimistic: true
min_value: 0
max_value: 100
initial_value: 10
step: 1
mode: slider
on_value:
- output.set_level:
id: maxOut_pin5
level: !lambda return x/100;
- platform: template
name: "Number Blue"
id: number_LedBlue
optimistic: true
min_value: 0
max_value: 100
initial_value: 10
step: 1
mode: slider
on_value:
- output.set_level:
id: maxOut_pin6
level: !lambda return x/100;
output:
- platform: max6956
pin: 4
id: maxOut_pin4
- platform: max6956
pin: 5
id: maxOut_pin5
- platform: max6956
pin: 6
id: maxOut_pin6
light:
- platform: rgb
id: Light_1
default_transition_length: 0.1s
gamma_correct: 1
red: maxOut_pin4
green: maxOut_pin5
blue: maxOut_pin6
See Also
--------
- :ref:`i2c`
- :doc:`switch/gpio`
- :doc:`/components/binary_sensor/index`
- :doc:`binary_sensor/gpio`
- :doc:`light/binary`
- :doc:`light/rgb`
- :apiref:`max6956/max6956.h`
- :ghedit:`Edit`

View File

@ -13,15 +13,73 @@ The ``i2s_audio`` microphone platform allows you to receive audio via the the
# Example configuration entry
microphone:
- platform: i2s_audio
id: external_mic
adc_type: external
i2s_din_pin: GPIO23
- platform: i2s_audio
id: adc_mic
adc_type: internal
adc_pin: GPIO35
Configuration variables:
------------------------
- **i2s_din_pin** (**Required**, :ref:`Pin Schema <config-pin_schema>`): The GPIO pin to use for the I²S ``DIN/SDIN`` *(Data In)* signal, also referred to as ``SD/SDATA`` *(Serial Data)* or ``ADCDAT`` *(Analog to Digital Converter Data)*.
- **adc_type** (**Required**, enum):
- ``external``: Use an external ADC connected to the I²S bus.
- ``internal``: Use the internal ADC of the ESP32. Only supported on ESP32, no variant support.
- **i2s_audio_id** (*Optional*, :ref:`config-id`): The ID of the :ref:`I²S Audio <i2s_audio>` you wish to use for this microphone.
- All other options from :ref:`Microphone <config-microphone>`
External ADC
------------
- **i2s_din_pin** (**Required**, :ref:`Pin Schema <config-pin_schema>`): The GPIO pin to use for the I²S ``DIN/SDIN`` *(Data In)* signal, also referred to as ``SD/SDATA`` *(Serial Data)* or ``ADCDAT`` *(Analog to Digital Converter Data)*.
- **pdm** (**Required**, boolean): Set this to ``true`` if your external ADC uses PDM (Pulse Density Modulation) instead of I²S.
.. note::
PDM microphones are only supported on ESP32 and ESP32-S3.
Internal ADC
------------
.. note::
Internal ADC microphones are only supported on a regular ESP32, not the variants.
- **adc_pin** (**Required**, :ref:`Pin Schema <config-pin_schema>`): The GPIO pin to use for the ADC input.
Known Devices
-------------
M5Stack Atom Echo
*****************
.. code-block:: yaml
microphone:
- platform: i2s_audio
adc_type: external
i2s_din_pin: GPIO23
pdm: true
RaspiAudio Muse Luxe
********************
.. code-block:: yaml
microphone:
- platform: i2s_audio
i2s_din_pin: GPIO35
adc_type: external
pdm: false
See also
--------

View File

@ -0,0 +1,53 @@
GP8403 Component
================
.. seo::
:description: Instructions for setting up GP8403 outputs in ESPHome.
:image: gp8403.svg
The ``gp8403`` is a 2-channel DAC output module. It requires an :doc:`/components/i2c` to be setup.
Component/Hub
-------------
.. code-block:: yaml
gp8403:
id: my_gp8403
voltage: 5V
Configuration variables:
- **id** (*Optional*, :ref:`config-id`): Manually specify the ID used for code generation.
- **voltage** (**Required**, voltage): The output voltage range of the DAC. Must be one of ``5V`` or ``10V``.
Output
------
.. code-block:: yaml
output:
- platform: gp8403
id: my_gp8403_output_1
gp8403_id: my_gp8403
channel: 0
- platform: gp8403
id: my_gp8403_output_2
gp8403_id: my_gp8403
channel: 1
Configuration variables:
- **id** (*Optional*, :ref:`config-id`): Manually specify the ID used for code generation.
- **gp8403_id** (*Optional*, :ref:`config-id`): The ID of the GP8403 component.
Defaults to the only GP8403 component if there is only one.
- **channel** (**Required**, int): The channel of the GP8403 to use. Must be ``0`` or ``1``.
- All other options from :ref:`config-output`.
See Also
--------
- :doc:`/components/output/esp32_dac`
- :doc:`/components/output/index`
- :ghedit:`Edit`

View File

@ -62,6 +62,12 @@ Configuration variables:
- **id** (*Optional*, :ref:`config-id`): The id to use for
this ``sm2135`` component. Use this if you have multiple SM2135 chains
connected at the same time.
- **cw_current** (*Optional*, current): The current used for the white channel.
Defaults to ``10mA``.
Can be one of ``10mA``, ``15mA``, ``20mA``, ``25mA``, ``30mA``, ``35mA``, ``40mA``, ``45mA``, ``50mA``, ``55mA``, ``60mA``.
- **rgb_current** (*Optional*, current): The current used for the RGB channel.
Defaults to ``20mA``.
Can be one of ``10mA``, ``15mA``, ``20mA``, ``25mA``, ``30mA``, ``35mA``, ``40mA``, ``45mA``.
.. _sm2135-output:
@ -117,6 +123,10 @@ Configuration variables:
The white LEDs are much brighter than the color LEDs. To get uniform brightness
for both color and white you will need to limit the white led power.
.. warning::
Setting to high currents (either RGB, CW or both) could damage your bulb.
.. note::
This driver does not support enabling of both the color and the white channels

103
components/pca6416a.rst Normal file
View File

@ -0,0 +1,103 @@
PCA6416A I/O Expander
=====================
.. seo::
:description: Instructions for setting up PCA6416A and PCAL6416A, digital port expanders in ESPHome.
:image: pca6416a.svg
The PCA6416A component allows you to use **PCA6416A** or **PCAL6416A** I/O expanders in ESPHome.
It uses :ref:`I²C Bus <i2c>` for communication.
Once configured, you can use any of the **16** pins for your projects. Within ESPHome they emulate a real internal
GPIO pin and can therefore be used with many of ESPHome's components such as the GPIO binary sensor or GPIO switch.
.. note::
The 7 bit I²C device address ranges are:
- PCA6416A: ``0x20`` to ``0x21``
- PCAL6416A: ``0x20`` to ``0x21``
For the PCA6416A and PCAL6416A, the actual choice of the I²C device address depends on state of the address pin.
Please refer to the individual datasheets linked at the bottom of the page for further details to set the address.
Up to two PCA6416A or PCAL6416A devices can reside on the same I²C bus.
The PCA6416A and PCAL6416A provide 16 bits of GPIO's (pin numbers 0-15).
Only the PCAL6416A supports pull-up resistors.
Any option accepting a :ref:`Pin Schema <config-pin_schema>` can theoretically be used, but some more
complicated components that do communication through this I/O expander will not work.
.. code-block:: yaml
# Example configuration entry
pca6416a:
- id: 'pca6416a_device'
address: 0x20
# Individual outputs
switch:
- platform: gpio
name: "PCA6416A Pin #0"
pin:
pca6416a: pca6416a_device
# Use pin number 0
number: 0
# One of INPUT or OUTPUT
mode:
output: true
inverted: false
.. code-block:: yaml
# Example configuration entry
pca6416a:
- id: 'pcal6416a_device'
address: 0x20
# Individual outputs
switch:
- platform: gpio
name: "PCAL6416A Pin #0"
pin:
pca6416a: pcal6416a_device
# Use pin number 0
number: 0
# One of INPUT, INPUT_PULLUP or OUTPUT
mode:
input: true
pullup: true
inverted: false
Configuration variables:
************************
- **id** (**Required**, :ref:`config-id`): The id to use for this ``pca6416a`` component.
- **address** (*Optional*, int): The I²C address of the driver.
Defaults to ``0x20``.
Pin configuration variables:
****************************
- **pca6416a** (**Required**, :ref:`config-id`): The id of the ``pca6416a`` component of the pin.
- **number** (**Required**, int): The pin number.
- **inverted** (*Optional*, boolean): If all read and written values
should be treated as inverted. Defaults to ``false``.
- **mode** (*Optional*, string): A pin mode to set for the pin at. One of ``INPUT`` or ``OUTPUT``.
See Also
--------
- :ref:`i2c`
- :doc:`switch/gpio`
- :doc:`binary_sensor/gpio`
- `PCA6416A datasheet <https://www.nxp.com/docs/en/data-sheet/PCA6416A.pdf>`__
- `PCAL6416A datasheet <https://www.nxp.com/docs/en/data-sheet/PCAL6416A.pdf>`__
- :apiref:`pca6416a/pca6416a.h`
- :ghedit:`Edit`

View File

@ -35,6 +35,7 @@ Configuration variables:
- **canalsatld**: Decode and dump CanalSatLD infrared codes.
- **coolix**: Decode and dump Coolix infrared codes.
- **dish**: Decode and dump Dish infrared codes.
- **drayton**: Decode and dump Drayton Digistat RF codes.
- **jvc**: Decode and dump JVC infrared codes.
- **lg**: Decode and dump LG infrared codes.
- **magiquest**: Decode and dump MagiQuest wand infrared codes.
@ -91,6 +92,9 @@ Automations:
dish network remote code has been decoded. A variable ``x`` of type :apistruct:`remote_base::DishData`
is passed to the automation for use in lambdas.
Beware that Dish remotes use a different carrier frequency (57.6kHz) that many receiver hardware don't decode.
- **on_drayton** (*Optional*, :ref:`Automation <automation>`): An automation to perform when a
Drayton Digistat RF code has been decoded. A variable ``x`` of type :apistruct:`remote_base::DraytonData`
is passed to the automation for use in lambdas.
- **on_jvc** (*Optional*, :ref:`Automation <automation>`): An automation to perform when a
JVC remote code has been decoded. A variable ``x`` of type :apistruct:`remote_base::JVCData`
is passed to the automation for use in lambdas.
@ -219,6 +223,12 @@ Remote code selection (exactly one of these has to be included):
- **address** (*Optional*, int): The number of the receiver to target, between 1 and 16 inclusive. Defaults to ``1``.
- **command** (**Required**, int): The Dish command to listen for, between 0 and 63 inclusive.
- **drayton**: Trigger on a decoded Drayton Digistat RF remote code with the given data.
- **address** (**Required**, int): The 16-bit ID code to trigger on, see dumper output for more info.
- **channel** (**Required**, int): The 7-bit switch/channel to listen for.
- **command** (**Required**, int): The 5-bit command to listen for.
- **jvc**: Trigger on a decoded JVC remote code with the given data.
- **data** (**Required**, int): The JVC code to trigger on, see dumper output for more info.

View File

@ -192,6 +192,28 @@ Configuration variables:
You can find a list of commands in the `LIRC project <https://sourceforge.net/p/lirc-remotes/code/ci/master/tree/remotes/dishnet/Dish_Network.lircd.conf>`__.
.. _remote_transmitter-transmit_drayton:
``remote_transmitter.transmit_drayton`` Action
**********************************************
This :ref:`action <config-action>` sends a Draton Digistat RF remote code to a remote transmitter.
.. code-block:: yaml
on_...:
- remote_transmitter.transmit_drayton:
address: '0x6180'
channel: '0x12'
command: '0x02'
Configuration variables:
- **address** (**Required**, int): The 16-bit ID to send, see dumper output for more info.
- **channel** (**Required**, int): The switch/channel to send, between 0 and 127 inclusive.
- **command** (**Required**, int): The command to send, between 0 and 63 inclusive.
- All other options from :ref:`remote_transmitter-transmit_action`.
.. _remote_transmitter-transmit_jvc:
``remote_transmitter.transmit_jvc`` Action

View File

@ -5,19 +5,50 @@ Binary Sensor Map
:description: Instructions for setting up a Binary Sensor Map
:image: binary_sensor_map.jpg
The ``binary_sensor_map`` sensor platform allows you to map :doc:`binary sensor </components/binary_sensor/index>`
to values. When a given binary sensor is on, the value associated with it in this platform's configuration will be published.
The ``binary_sensor_map`` sensor platform allows you to map multiple :doc:`binary sensor </components/binary_sensor/index>`
to an individual value. Depending on the state of each binary sensor, its associated configured parameters, and this sensor's mapping type,
the ``binary_sensor_map`` publishes a single numerical value.
This sensor is **mostly used for touch** devices but could be used for any ``binary_sensor`` that publishes its ``ON`` or ``OFF`` state.
Use this sensor to combine one or more binary sensors' ``ON`` or ``OFF`` states into a numerical value. Some possible use cases include
touch devices and determining Bayesian probabilities for an event.
Add your binary sensors as ``channels`` to the binary sensor map. The binary sensor map then publishes a value depending
on the type of the binary sensor map and the values specified with each channel. The maximum amount of possible channels is 64.
This platform supports three measurement types: ``BAYESIAN``, ``GROUP``, and ``SUM``.
You need to specify your desired mapping with the ``type:`` configuration value.
This platform currently supports two measurement types: ``GROUP`` and ``SUM``, and others might get added later.
You need to specify which type of mapping you want with the ``type:`` configuration value:
When using the ``BAYESIAN`` type, add your binary sensors as ``observations`` to the binary sensor map.
If you use the ``GROUP`` or ``SUM`` type, add your binary sensors as ``channels``.
The maximum amount of observations/channels supported is 64.
- ``GROUP`` Each channel has its own value. The sensor publishes the average value of all active
binary sensors.
- ``BAYESIAN`` This type replicates Home Assistant's `Bayesian sensor <https://www.home-assistant.io/integrations/bayesian/>`__. Based on the observation states, this sensor returns the Bayesian probability of a particular event occurring. The configured ``prior:`` probability is the likelihood that the Bayesian event is true, ignoring all external influences. Every observation has its own ``prob_given_true`` and ``prob_given_false`` parameters. The ``prob_given_true:`` value is the probability that the observation's binary sensor is ``ON`` when the Bayesian event is ``true``. The ``prob_given_false:`` value is the probability that the observation's binary sensor is ``ON`` when the Bayesian event is ``false``. Use an :doc:`/components/binary_sensor/analog_threshold` to convert this sensor's probability to a binary ``ON`` or ``OFF`` by setting an appropriate threshold.
.. code-block:: yaml
# Example configuration entry
sensor:
- platform: binary_sensor_map
id: bayesian_prob
name: 'Bayesian Event Probability'
type: bayesian
prior: 0.4
observations:
- binary_sensor: binary_sensor_0
prob_given_true: 0.9
prob_given_false: 0.2
- binary_sensor: binary_sensor_1
prob_given_true: 0.6
prob_given_false: 0.1
binary_sensor:
# If the Bayesian probability is greater than 0.6,
# then predict the event is occuring
- platform: analog_threshold
name: "Bayesian Event Predicted State"
sensor_id: bayesian_prob
threshold: 0.6
# ...
- ``GROUP`` Each channel has its own ``value``. The sensor publishes the average value of all active
binary sensors or ``NAN`` if no sensors are active.
.. code-block:: yaml
@ -48,8 +79,8 @@ You need to specify which type of mapping you want with the ``type:`` configurat
id: touchkey0
# ...
- ``SUM`` Each channel has its own value. The sensor publishes the sum of all active
binary sensors values.
- ``SUM`` Each channel has its own ``value``. The sensor publishes the sum of all the active
binary sensors values or ``0`` if no sensors are active.
.. code-block:: yaml
@ -91,12 +122,19 @@ Configuration variables:
------------------------
- **name** (**Required**, string): The name of the sensor.
- **type** (**Required**, string): The sensor type. Should be one of: ``GROUP``.
- **channels** (**Required**): A list of channels that are mapped to certain values.
- **type** (**Required**, string): The sensor type. Should be one of: ``BAYESIAN``, ``GROUP``, or ``SUM``.
- **channels** (**Required for GROUP or SUM types**): A list of channels that are mapped to certain values.
- **binary_sensor** (**Required**): The id of the :doc:`binary sensor </components/binary_sensor/index>`
to add as a channel for this sensor.
- **value** (**Required**): The value this channel should report when its binary sensor is active.
- **prior** (**Required for BAYESIAN type**, float between 0 and 1): The prior probability of the event.
- **observations** (**Required for BAYESIAN type**): A list of observations that influence the Bayesian probability of the event.
- **binary_sensor** (**Required**): The id of the :doc:`binary sensor </components/binary_sensor/index>`
to add as an observation.
- **prob_given_true** (**Required**, float between 0 and 1): Assuming the event is true, the probability this observation is on.
- **prob_given_false** (**Required**, float between 0 and 1): Assuming the event is false, the probability this observation is on.
- All other options from :ref:`Sensor <config-sensor>`.
@ -104,6 +142,8 @@ See Also
--------
- :doc:`/components/binary_sensor/mpr121`
- :doc:`/components/binary_sensor/analog_threshold`
- :ref:`sensor-filters`
- :apiref:`binary_sensor_map/binary_sensor_map.h`
- `Bayesian sensor in Home Assistant <https://www.home-assistant.io/integrations/bayesian/>`__
- :ghedit:`Edit`

View File

@ -0,0 +1,49 @@
HYT271 Temperature & Humidity Sensor
=====================================================
.. seo::
:description: Instructions for setting up HYT271 temperature and humidity sensors.
:image: hyt271.jpg
:keywords: HYT271
The HYT271 Temperature & Humidity sensors with ESPHome.
The :ref:`I²C Bus <i2c>` is required to be set up in your configuration for this sensor to work.
Example sensors:
.. code-block:: yaml
# Example configuration entry
sensor:
- platform: hyt271
temperature:
name: "Living Room Temperature"
humidity:
name: "Living Room Humidity"
update_interval: 60s
Configuration variables:
------------------------
- **temperature** (**Required**): The information for the temperature sensor.
- **name** (**Required**, string): The name for the temperature sensor.
- **id** (*Optional*, :ref:`config-id`): Set the ID of this sensor for use in lambdas.
- All other options from :ref:`Sensor <config-sensor>`.
- **humidity** (**Required**): The information for the humidity sensor.
- **name** (**Required**, string): The name for the humidity sensor.
- **id** (*Optional*, :ref:`config-id`): Set the ID of this sensor for use in lambdas.
- All other options from :ref:`Sensor <config-sensor>`.
- **update_interval** (*Optional*, :ref:`config-time`): The interval to check the sensor. Defaults to ``60s``.
See Also
--------
- :ref:`sensor-filters`
- :apiref:`hyt271/hyt271.h`
- `i2cdevlib <https://github.com/jrowberg/i2cdevlib>`__ by `Jeff Rowberg <https://github.com/jrowberg>`__
- :ghedit:`Edit`

Binary file not shown.

After

Width:  |  Height:  |  Size: 86 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 49 KiB

View File

@ -0,0 +1,57 @@
MLX90614 non-contact thermometer
=================================
.. seo::
:description: Instructions for setting up Melexis MLX90614 non-contact thermometer.
:image: mlx90614.jpg
:keywords: MLX90614
The ``mlx90614`` sensor platform allows you to use your Melexis MLX90614 non-contact infrared thermometer
(`Datasheet <https://www.melexis.com/en/documents/documentation/datasheets/datasheet-mlx90614>`__,
`Product Page`_) with ESPHome. Sensor measures both ambient and object temperature that can be enabled independently.
The :ref:`I²C Bus <i2c>` is required to be set up in your configuration for this sensor to work.
.. figure:: images/mlx90614.jpg
:align: center
:width: 50.0%
MLX90614 non-contact thermometer
.. _Product Page: https://www.melexis.com/en/product/MLX90614/Digital-Plug-Play-Infrared-Thermometer-TO-Can
.. code-block:: yaml
# Example configuration entry
sensor:
- platform: mlx90614
ambient:
name: Ambient
object:
name: Object
Configuration variables
-----------------------
- **ambient** (*Optional*): Enables sensor entity for ambient temperature reading.
- All options from :ref:`Sensor <config-sensor>`.
- **object** (*Optional*): Enables sensor entity for object temperature reading.
- **emissivity** (*Optional*): Emissivity coefficient is the measure of an object's ability to emit infrared energy
compared to a theoretical perfect black body emitter. See `Emissivity Application note <https://media.melexis.com/-/media/files/documents/application-notes/mlx90614-changing-emissivity-unlocking-key-application-note-melexis.pdf?la=en>`__
for details on determining custom emissivity. Default is 1.0 which is 100% and corresponds to the ideal black body.
- All options from :ref:`Sensor <config-sensor>`.
- All other options for I²C devices described at :ref:`I²C Bus <i2c>`.
See Also
--------
- :ref:`sensor-filters`
- :apiref:`mlx90614/mlx90614.h`
- :ghedit:`Edit`

View File

@ -35,9 +35,8 @@ Configuration variables:
- **name** (**Required**, string): The name of the sensor.
- **lambda** (*Optional*, :ref:`lambda <config-lambda>`):
Lambda to be evaluated every update interval to get the new value of the sensor
- **update_interval** (*Optional*, :ref:`config-time`): The interval to publish the value of the
sensor, either the result of the lambda function or if no lambda function the last value
published using the publish action. Set to ``never`` to disable updates. Defaults to ``60s``.
- **update_interval** (*Optional*, :ref:`config-time`): The interval to check the
sensor. Set to ``never`` to disable updates. Defaults to ``60s``.
- **id** (*Optional*, :ref:`config-id`): Manually specify the ID used for code generation.
- All other options from :ref:`Sensor <config-sensor>`.

View File

@ -0,0 +1,49 @@
I²S Audio Speaker
=================
.. seo::
:description: Instructions for setting up I²S based speakers in ESPHome.
:image: i2s_audio.svg
The ``i2s_audio`` speaker platform allows you to receive audio via the the
:doc:`/components/i2s_audio`. This platform only works on ESP32 based chips.
.. code-block:: yaml
# Example configuration entry
speaker:
- platform: i2s_audio
dac_type: external
i2s_dout_pin: GPIO22
mode: mono
Configuration variables:
------------------------
- **dac_type** (**Required**, enum):
- ``external``: Use an external DAC, for example the NS4168, or UDA1334A.
- ``internal``: Use the internal DAC
External DAC
************
- **i2s_dout_pin** (**Required**, :ref:`Pin Schema <config-pin_schema>`): The GPIO pin to use for the I²S DOUT (Data Out) signal.
- **mode** (*Optional*, string): The mode of the I²S bus. Can be ``mono`` or ``stereo``. Defaults to ``mono``.
For best results, keep the wires as short as possible.
Internal DAC
************
- **mode** (**Required**, enum): The channel mode of the internal DAC.
- ``left``
- ``right``
- ``stereo``
See also
--------
- :doc:`index`
- :ghedit:`Edit`

View File

@ -0,0 +1,96 @@
Speaker Components
==================
.. seo::
:description: Instructions for setting up speakers in ESPHome.
:image: speaker.svg
The ``speaker`` domain contains common functionality shared across the
speaker platforms.
.. _config-speaker:
Base Speaker Configuration
--------------------------
No configuration variables
.. _speaker-actions:
Speaker Actions
------------------
All ``speaker`` actions can be used without specifying an ``id`` if you have only one ``speaker`` in
your configuration YAML.
Configuration variables:
**id** (*Optional*, :ref:`config-id`): The speaker to control. Defaults to the only one in YAML.
.. _speaker-play:
``speaker.play`` Action
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
This action will start playing raw audio data from the speaker.
.. code-block:: yaml
on_...:
# Static raw audio data
- speaker.play: [...]
# Templated, return type is std::vector<uint8_t>
- speaker.play: !lambda return {...};
# in case you need to specify the speaker id
- speaker.play:
id: my_speaker
data: [...]
Configuration variables:
**id** (*Optional*, :ref:`config-id`): The speaker to control. Defaults to the only one in YAML.
**data** (*Required*, list of bytes): The raw audio data to play.
.. _speaker-stop:
``speaker.stop`` Action
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
This action will stop playing audio data from the speaker and discard the unplayed data.
.. _speaker-conditions:
Speaker Conditions
---------------------
All ``speaker`` conditions can be used without specifying an ``id`` if you have only one ``speaker`` in
your configuration YAML.
Configuration variables:
**id** (*Optional*, :ref:`config-id`): The speaker to check. Defaults to the only one in YAML.
.. _speaker-is_playing:
``speaker.is_playing`` Condition
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
This condition will check if the speaker is currently playing audio data.
Platforms
---------
.. toctree::
:maxdepth: 1
:glob:
*
See Also
--------
- :ghedit:`Edit`

View File

@ -31,9 +31,8 @@ Configuration variables:
- **name** (**Required**, string): The name of the text sensor.
- **lambda** (*Optional*, :ref:`lambda <config-lambda>`):
Lambda to be evaluated every update interval to get the new value of the text sensor
- **update_interval** (*Optional*, :ref:`config-time`): The interval to publish the value of the
text sensor, either the result of the lambda function or if no lambda function the last value
published using the publish action. Defaults to ``60s``.
- **update_interval** (*Optional*, :ref:`config-time`): The interval to check the
text sensor. Set to ``never`` to disable updates. Defaults to ``60s``.
- **id** (*Optional*, :ref:`config-id`): Manually specify the ID used for code generation.
- All other options from :ref:`Text Sensor <config-text_sensor>`.

View File

@ -23,7 +23,8 @@ Configuration:
voice_assistant:
microphone: mic_id
- **microphone** (**Required**, :ref:`config-id`): The microphone to use for input.
- **microphone** (**Required**, :ref:`config-id`): The :doc:`microphone </components/microphone/index>` to use for input.
- **speaker** (*Optional*, :ref:`config-id`): The :doc:`speaker </components/speaker/index>` to use to output the response.
- **on_start** (*Optional*, :ref:`Automation <automation>`): An automation to
perform when the voice assistant starts listening.
- **on_end** (*Optional*, :ref:`Automation <automation>`): An automation to perform

View File

@ -84,6 +84,7 @@ Configuration variables:
first. This is required for hidden networks and can significantly improve connection times. Defaults to ``off``.
The downside is that this option connects to the first network the ESP sees, even if that network is very far away and
better ones are available.
- **passive_scan** (*Optional*, boolean): If enabled, then the device will perform WiFi scans in a passive fashion. Defaults to ``false``.
- **enable_btm** (*Optional*, bool): Only on ``esp32`` with ``esp-idf``. Enable 802.11v BSS Transition Management support.
- **enable_rrm** (*Optional*, bool): Only on ``esp32`` with ``esp-idf``. Enable 802.11k Radio Resource Management support.

View File

@ -67,9 +67,9 @@ author = "ESPHome"
# built documents.
#
# The short X.Y version.
version = "2023.4"
version = "2023.5"
# The full version, including alpha/beta/rc tags.
release = "2023.4.4"
release = "2023.5.0"
# The language for content autogenerated by Sphinx. Refer to documentation
# for a list of supported languages.

View File

@ -332,7 +332,8 @@ All Triggers
- :ref:`time.on_time <time-on_time>` / - :ref:`time.on_time_sync <time-on_time_sync>`
- :ref:`mqtt.on_message <mqtt-on_message>` / :ref:`mqtt.on_json_message <mqtt-on_json_message>` /
:ref:`mqtt.on_connect / mqtt.on_disconnect <mqtt-on_connect_disconnect>`
- :ref:`pn532.on_tag <pn532-on_tag>` / :ref:`rdm6300.on_tag <rdm6300-on_tag>`
- :ref:`pn532.on_tag <pn532-on_tag>` / :ref:`pn532.on_tag_removed <pn532-on_tag_removed>` / :ref:`rc522.on_tag <rc522-on_tag>`
/ :ref:`rc522.on_tag_removed <rc522-on_tag_removed>` / :ref:`rdm6300.on_tag <rdm6300-on_tag>`
- :ref:`interval.interval <interval>`
- :ref:`switch.on_turn_on / switch.on_turn_off <switch-on_turn_on_off_trigger>`
- :doc:`remote_receiver.on_* </components/remote_receiver>`

View File

@ -57,6 +57,7 @@ Contributors
- `Albin Kauffmann (@albinou) <https://github.com/albinou>`__
- `Andre Lengwenus (@alengwenus) <https://github.com/alengwenus>`__
- `Alex (@alex-richards) <https://github.com/alex-richards>`__
- `Alex Dekker (@Alex1602) <https://github.com/Alex1602>`__
- `Alexander Leisentritt (@Alex9779) <https://github.com/Alex9779>`__
- `Alex Barcelo (@alexbarcelo) <https://github.com/alexbarcelo>`__
- `AlexCPU (@AlexCPU) <https://github.com/AlexCPU>`__
@ -104,7 +105,6 @@ Contributors
- `ashp8i (@ashp8i) <https://github.com/ashp8i>`__
- `Ashton Kemerling (@AshtonKem) <https://github.com/AshtonKem>`__
- `杨成锴 (@asjdf) <https://github.com/asjdf>`__
- `Pavel Pletenev (@ASMfreaK) <https://github.com/ASMfreaK>`__
- `Andreas Soehlke (@asoehlke) <https://github.com/asoehlke>`__
- `Mike Dunston (@atanisoft) <https://github.com/atanisoft>`__
- `Glenn Morrison (@atomicpapa) <https://github.com/atomicpapa>`__
@ -145,6 +145,7 @@ Contributors
- `Berend Haan (@berendhaan) <https://github.com/berendhaan>`__
- `Arturo Casal (@berfenger) <https://github.com/berfenger>`__
- `Bryan Berg (@berg) <https://github.com/berg>`__
- `BerlinJoker (@BerlinJoker) <https://github.com/BerlinJoker>`__
- `Bert Hertogen (@berthertogen) <https://github.com/berthertogen>`__
- `Ivan Bessarabov (@bessarabov) <https://github.com/bessarabov>`__
- `Brandon (@bgulla) <https://github.com/bgulla>`__
@ -236,6 +237,7 @@ Contributors
- `Cossid (@Cossid) <https://github.com/Cossid>`__
- `Cougar (@Cougar) <https://github.com/Cougar>`__
- `Connor Prussin (@cprussin) <https://github.com/cprussin>`__
- `cptquad (@cptquad) <https://github.com/cptquad>`__
- `Corey Rice (@crice009) <https://github.com/crice009>`__
- `cryptelli (@cryptelli) <https://github.com/cryptelli>`__
- `Christian Schwarzgruber (@cslux) <https://github.com/cslux>`__
@ -293,6 +295,7 @@ Contributors
- `Davide Depau (@depau) <https://github.com/depau>`__
- `dependabot[bot] (@dependabot[bot]) <https://github.com/dependabot[bot]>`__
- `Joeri Colman (@depuits) <https://github.com/depuits>`__
- `Mike La Spina (@descipher) <https://github.com/descipher>`__
- `Stephan Martin (@designer2k2) <https://github.com/designer2k2>`__
- `Destix (@Destix) <https://github.com/Destix>`__
- `Deun Lee (@deunlee) <https://github.com/deunlee>`__
@ -351,6 +354,7 @@ Contributors
- `Erwin Kooi (@egeltje) <https://github.com/egeltje>`__
- `Eike (@ei-ke) <https://github.com/ei-ke>`__
- `Elazar Leibovich (@elazarl) <https://github.com/elazarl>`__
- `Eli (@eli-xciv) <https://github.com/eli-xciv>`__
- `Eli Yu (@elizhyu) <https://github.com/elizhyu>`__
- `Elkropac (@Elkropac) <https://github.com/Elkropac>`__
- `Elliot Wood (@elliot-wood) <https://github.com/elliot-wood>`__
@ -391,6 +395,7 @@ Contributors
- `Christian Ferbar (@ferbar) <https://github.com/ferbar>`__
- `FeuerSturm (@FeuerSturm) <https://github.com/FeuerSturm>`__
- `Florian Golemo (@fgolemo) <https://github.com/fgolemo>`__
- `Federico G. Schwindt (@fgsch) <https://github.com/fgsch>`__
- `Frank Riley (@fhriley) <https://github.com/fhriley>`__
- `finity69x2 (@finity69x2) <https://github.com/finity69x2>`__
- `Frédéric Jouault (@fjouault) <https://github.com/fjouault>`__
@ -449,6 +454,7 @@ Contributors
- `Gonzalo Paniagua Javier (@gonzalop) <https://github.com/gonzalop>`__
- `gordon-zhao (@gordon-zhao) <https://github.com/gordon-zhao>`__
- `Gustavo Ambrozio (@gpambrozio) <https://github.com/gpambrozio>`__
- `Graham Brown (@grahambrown11) <https://github.com/grahambrown11>`__
- `Granville Barker (@granvillebarker) <https://github.com/granvillebarker>`__
- `Antoine GRÉA (@grea09) <https://github.com/grea09>`__
- `Greg Arnold (@GregJArnold) <https://github.com/GregJArnold>`__
@ -630,7 +636,6 @@ Contributors
- `Kelvie Wong (@kelvie) <https://github.com/kelvie>`__
- `Kenny Stier (@KennyStier) <https://github.com/KennyStier>`__
- `kernelpanic85 (@kernelpanic85) <https://github.com/kernelpanic85>`__
- `Kevin O'Rourke (@kevinior) <https://github.com/kevinior>`__
- `kevlar10 (@kevlar10) <https://github.com/kevlar10>`__
- `kfulko (@kfulko) <https://github.com/kfulko>`__
- `Kai Gerken (@KG3RK3N) <https://github.com/KG3RK3N>`__
@ -642,7 +647,6 @@ Contributors
- `Klaas Schoute (@klaasnicolaas) <https://github.com/klaasnicolaas>`__
- `Klarstein (@Klarstein) <https://github.com/Klarstein>`__
- `Marcus Klein (@kleini) <https://github.com/kleini>`__
- `Kevin Lewis (@kll) <https://github.com/kll>`__
- `KNXBroker (@KNXBroker) <https://github.com/KNXBroker>`__
- `kokangit (@kokangit) <https://github.com/kokangit>`__
- `konsulten (@konsulten) <https://github.com/konsulten>`__
@ -663,6 +667,7 @@ Contributors
- `Limor "Ladyada" Fried (@ladyada) <https://github.com/ladyada>`__
- `Luca Adrian L (@lal12) <https://github.com/lal12>`__
- `Fredrik Lindqvist (@Landrash) <https://github.com/Landrash>`__
- `lanik (@lanik) <https://github.com/lanik>`__
- `Lawrie George (@lawriege) <https://github.com/lawriege>`__
- `Laszlo Gazdag (@lazlyhu) <https://github.com/lazlyhu>`__
- `Ludovic BOUÉ (@lboue) <https://github.com/lboue>`__
@ -737,6 +742,7 @@ Contributors
- `Matthew Mazzanti (@matthewmazzanti) <https://github.com/matthewmazzanti>`__
- `matthias882 (@matthias882) <https://github.com/matthias882>`__
- `Matus Ivanecky (@maty535) <https://github.com/maty535>`__
- `Christian (@max246) <https://github.com/max246>`__
- `Maximilian Gerhardt (@maxgerhardt) <https://github.com/maxgerhardt>`__
- `mbo18 (@mbo18) <https://github.com/mbo18>`__
- `mcmuller (@mcmuller) <https://github.com/mcmuller>`__
@ -761,6 +767,7 @@ Contributors
- `Micha Nordmann (@Michanord) <https://github.com/Michanord>`__
- `Michel Munzert (@michelde) <https://github.com/michelde>`__
- `Pauline Middelink (@middelink) <https://github.com/middelink>`__
- `Joel Midstjärna (@midstar) <https://github.com/midstar>`__
- `Mike_Went (@MikeWent) <https://github.com/MikeWent>`__
- `Mikko Tervala (@MikkoTervala) <https://github.com/MikkoTervala>`__
- `MiKuBB (@MiKuBB) <https://github.com/MiKuBB>`__
@ -782,7 +789,7 @@ Contributors
- `Moritz Glöckl (@moritzgloeckl) <https://github.com/moritzgloeckl>`__
- `moritzj29 (@moritzj29) <https://github.com/moritzj29>`__
- `Chris Laplante (@mostthingsweb) <https://github.com/mostthingsweb>`__
- `Sam Hughes (@MrEditor97) <https://github.com/MrEditor97>`__
- `MrEditor97 (@mreditor97) <https://github.com/mreditor97>`__
- `Morgan Robertson (@mrgnr) <https://github.com/mrgnr>`__
- `Mariusz Kryński (@mrk-its) <https://github.com/mrk-its>`__
- `Michael Davidson (@MrMDavidson) <https://github.com/MrMDavidson>`__
@ -799,6 +806,7 @@ Contributors
- `Mynasru (@Mynasru) <https://github.com/Mynasru>`__
- `Mikhail Zakharov (@mzakharo) <https://github.com/mzakharo>`__
- `Kevin Uhlir (@n0bel) <https://github.com/n0bel>`__
- `N6RDV (@N6RDV) <https://github.com/N6RDV>`__
- `Erik Näsström (@Naesstrom) <https://github.com/Naesstrom>`__
- `H. Árkosi Róbert (@nagyrobi) <https://github.com/nagyrobi>`__
- `Viktor Nagy (@nagyv) <https://github.com/nagyv>`__
@ -869,15 +877,12 @@ Contributors
- `Paul Monigatti (@paulmonigatti) <https://github.com/paulmonigatti>`__
- `Paul Nicholls (@pauln) <https://github.com/pauln>`__
- `Bartłomiej Biernacki (@pax0r) <https://github.com/pax0r>`__
- `Paul Doidge (@pdoidge) <https://github.com/pdoidge>`__
- `peddamat (@peddamat) <https://github.com/peddamat>`__
- `pedjas (@pedjas) <https://github.com/pedjas>`__
- `pedrobsm (@pedrobsm) <https://github.com/pedrobsm>`__
- `per1234 (@per1234) <https://github.com/per1234>`__
- `David (@perldj) <https://github.com/perldj>`__
- `Peter Valkov (@peter-valkov) <https://github.com/peter-valkov>`__
- `Peter Galantha (@peterg79) <https://github.com/peterg79>`__
- `Peter Halicky (@peterhalicky) <https://github.com/peterhalicky>`__
- `Philippe Delodder (@phdelodder) <https://github.com/phdelodder>`__
- `philbowers (@philbowers) <https://github.com/philbowers>`__
- `Philippe FOUQUET (@Philippe12) <https://github.com/Philippe12>`__
@ -1005,6 +1010,7 @@ Contributors
- `sparkydave1981 (@sparkydave1981) <https://github.com/sparkydave1981>`__
- `spattinson (@spattinson) <https://github.com/spattinson>`__
- `Sean Brogan (@spbrogan) <https://github.com/spbrogan>`__
- `Justin Gerace (@spectrumjade) <https://github.com/spectrumjade>`__
- `Spegs21 (@Spegs21) <https://github.com/Spegs21>`__
- `Eric Lind (@sperly) <https://github.com/sperly>`__
- `Samuel Sieb (@ssieb) <https://github.com/ssieb>`__
@ -1136,7 +1142,6 @@ Contributors
- `WitchKing (@xvil) <https://github.com/xvil>`__
- `Yaroslav (@Yarikx) <https://github.com/Yarikx>`__
- `Marcin Jaworski (@yawor) <https://github.com/yawor>`__
- `Pavel (@yekm) <https://github.com/yekm>`__
- `Nico B (@youknow0) <https://github.com/youknow0>`__
- `Yuval Aboulafia (@yuvalabou) <https://github.com/yuvalabou>`__
- `Björn Stenberg (@zagor) <https://github.com/zagor>`__
@ -1145,9 +1150,10 @@ Contributors
- `Geek_cat (@zhzhzhy) <https://github.com/zhzhzhy>`__
- `I. Tomita (@ziceva) <https://github.com/ziceva>`__
- `Michael Labuschke (@zigman79) <https://github.com/zigman79>`__
- `Stefan Goethals (@zipkid) <https://github.com/zipkid>`__
- `zivillian (@zivillian) <https://github.com/zivillian>`__
- `Loïc (@zoic21) <https://github.com/zoic21>`__
- `Zack Barett (@zsarnett) <https://github.com/zsarnett>`__
- `Christian Zufferey (@zuzu59) <https://github.com/zuzu59>`__
*This page was last updated May 4, 2023.*
*This page was last updated May 17, 2023.*

1
images/gp8403.svg Normal file
View File

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="405.613" height="25mm" viewBox="0 0 107.318 25"><path d="M5 0h97.318c2.77 0 5 2.23 5 5v15c0 2.77-2.23 5-5 5H5c-2.77 0-5-2.23-5-5V5c0-2.77 2.23-5 5-5Z" style="fill:#000;fill-opacity:1;stroke-width:.133497;stroke-miterlimit:4;stroke-dasharray:none"/><g aria-label="GP8403" style="font-size:10.5833px;line-height:1.25;letter-spacing:1.08479px;fill:#fffffc;stroke-width:.264583"><path d="M17.16 12.515H20.5v6.412q-1.287.971-2.98 1.49-1.693.52-3.41.52-2.46 0-4.425-1.039-1.964-1.061-3.093-2.912-1.106-1.874-1.106-4.223 0-2.348 1.106-4.199Q7.723 6.69 9.71 5.651q1.987-1.06 4.47-1.06 2.078 0 3.771.7t2.845 2.031L18.447 9.49q-1.694-1.784-4.087-1.784-1.513 0-2.687.632t-1.828 1.784q-.655 1.151-.655 2.641 0 1.468.655 2.62.654 1.151 1.806 1.806 1.174.632 2.664.632 1.58 0 2.845-.677zM31.814 4.861q2.1 0 3.635.7 1.558.7 2.393 1.987.835 1.287.835 3.048 0 1.738-.835 3.048-.835 1.287-2.393 1.987-1.535.677-3.635.677H28.63v4.358h-3.657V4.86Zm-.203 8.467q1.648 0 2.506-.7.858-.722.858-2.032 0-1.332-.858-2.032-.858-.722-2.506-.722h-2.98v5.486zM52.225 12.357q1.174.587 1.784 1.535.632.949.632 2.19 0 1.468-.835 2.574-.836 1.084-2.348 1.694-1.513.587-3.5.587t-3.5-.587q-1.49-.61-2.325-1.694-.813-1.106-.813-2.574 0-1.241.61-2.19.632-.948 1.783-1.535-.88-.542-1.354-1.355-.474-.835-.474-1.896 0-1.377.767-2.393.768-1.016 2.145-1.558 1.377-.565 3.161-.565 1.806 0 3.183.565 1.4.542 2.168 1.558.768 1.016.768 2.393 0 1.061-.475 1.896-.474.813-1.377 1.355zm-4.267-5.08q-1.106 0-1.784.542-.654.52-.654 1.445 0 .903.654 1.422.655.52 1.784.52t1.806-.52q.678-.519.678-1.422 0-.926-.678-1.445-.677-.542-1.806-.542zm0 10.973q1.377 0 2.167-.61.813-.632.813-1.67 0-1.04-.813-1.649-.79-.61-2.167-.61-1.355 0-2.145.61t-.79 1.649q0 1.06.79 1.67.79.61 2.145.61zM69.295 14.366h2.574v2.98h-2.574v3.32h-3.567v-3.32h-8.512v-2.46l7.45-10.025h3.839l-6.909 9.505h4.245V11.41h3.454zM80.81 20.937q-1.963 0-3.499-.971-1.535-.971-2.416-2.8-.858-1.851-.858-4.403 0-2.55.858-4.38.88-1.851 2.416-2.822 1.536-.97 3.5-.97t3.5.97q1.535.971 2.393 2.822.88 1.83.88 4.38 0 2.552-.88 4.403-.858 1.829-2.394 2.8-1.535.97-3.5.97zm0-3.094q1.446 0 2.259-1.241.835-1.242.835-3.839 0-2.596-.835-3.838-.813-1.242-2.258-1.242-1.423 0-2.258 1.242-.813 1.242-.813 3.838 0 2.597.813 3.839.835 1.241 2.258 1.241zM97.61 11.296q2.077.339 3.183 1.558 1.107 1.196 1.107 2.98 0 1.377-.723 2.551-.722 1.152-2.213 1.852-1.467.7-3.612.7-1.67 0-3.296-.43-1.603-.45-2.732-1.264l1.422-2.8q.903.678 2.077 1.062 1.197.361 2.439.361 1.377 0 2.167-.52.79-.541.79-1.512 0-1.942-2.957-1.942H93.59v-2.415l3.251-3.68h-6.728V4.86h11.063v2.37z" style="font-weight:700;font-size:22.5778px;font-family:Montserrat;-inkscape-font-specification:&quot;Montserrat, Bold&quot;"/></g></svg>

After

Width:  |  Height:  |  Size: 2.7 KiB

BIN
images/hyt271.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.9 KiB

BIN
images/max6956.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 29 KiB

BIN
images/mlx90614.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.8 KiB

1
images/pca6416a.svg Normal file
View File

@ -0,0 +1 @@
<svg width="518.776" height="25mm" viewBox="0 0 137.259 25" xmlns="http://www.w3.org/2000/svg"><path style="fill:#000;fill-opacity:1;stroke-width:.133497;stroke-miterlimit:4;stroke-dasharray:none" d="M5 0h127.26c2.77 0 5 2.23 5 5v15c0 2.77-2.23 5-5 5H5c-2.77 0-5-2.23-5-5V5c0-2.77 2.23-5 5-5Z"/><g aria-label="PCA6416A" style="font-size:10.5833px;line-height:1.25;letter-spacing:1.08479px;fill:#fffffc;stroke-width:.264583"><path d="M13.322 4.861q2.1 0 3.635.7 1.557.7 2.393 1.987.835 1.287.835 3.048 0 1.738-.835 3.048-.836 1.287-2.393 1.987-1.536.677-3.635.677h-3.184v4.358H6.48V4.86Zm-.204 8.467q1.648 0 2.506-.7.858-.722.858-2.032 0-1.332-.858-2.032-.858-.722-2.506-.722h-2.98v5.486zM31.656 20.937q-2.416 0-4.38-1.039-1.942-1.061-3.07-2.912-1.107-1.874-1.107-4.223 0-2.348 1.106-4.199 1.129-1.874 3.07-2.913 1.965-1.06 4.403-1.06 2.055 0 3.703.722 1.67.722 2.8 2.077l-2.348 2.167q-1.603-1.851-3.974-1.851-1.468 0-2.62.655-1.15.632-1.805 1.783-.632 1.152-.632 2.62 0 1.467.632 2.618.654 1.152 1.806 1.807 1.151.632 2.619.632 2.37 0 3.974-1.874l2.348 2.167q-1.13 1.378-2.8 2.1-1.67.723-3.725.723zM57.057 20.666h-3.838l-1.4-3.387H44.48l-1.4 3.387h-3.748L46.378 4.86h3.612zM48.16 8.45l-2.506 6.051h5.012zM66.157 10.754q1.512 0 2.754.61t1.965 1.738q.722 1.106.722 2.574 0 1.58-.79 2.777t-2.168 1.851q-1.354.633-3.025.633-3.319 0-5.193-2.032-1.874-2.032-1.874-5.803 0-2.687 1.016-4.606t2.822-2.912q1.83-.994 4.222-.994 1.265 0 2.416.294 1.174.27 1.987.79l-1.355 2.687q-1.174-.79-2.957-.79-2.01 0-3.184 1.174-1.174 1.174-1.264 3.409 1.4-1.4 3.906-1.4zm-.745 7.45q1.174 0 1.896-.631.745-.633.745-1.716 0-1.084-.745-1.716-.722-.655-1.941-.655-1.197 0-1.965.677-.767.655-.767 1.694 0 1.038.745 1.693t2.032.655zM85.913 14.366h2.574v2.98h-2.574v3.32h-3.567v-3.32h-8.512v-2.46l7.45-10.025h3.84l-6.91 9.505h4.245V11.41h3.454zM89.369 7.796V4.861h6.818v15.805H92.53V7.796ZM107.635 10.754q1.513 0 2.755.61t1.964 1.738q.723 1.106.723 2.574 0 1.58-.79 2.777t-2.168 1.851q-1.355.633-3.026.633-3.318 0-5.192-2.032t-1.874-5.803q0-2.687 1.016-4.606t2.822-2.912q1.829-.994 4.222-.994 1.264 0 2.416.294 1.174.27 1.987.79l-1.355 2.687q-1.174-.79-2.958-.79-2.01 0-3.183 1.174-1.174 1.174-1.265 3.409 1.4-1.4 3.906-1.4zm-.745 7.45q1.174 0 1.897-.631.745-.633.745-1.716 0-1.084-.745-1.716-.723-.655-1.942-.655-1.197 0-1.964.677-.768.655-.768 1.694 0 1.038.745 1.693t2.032.655zM132.224 20.666h-3.839l-1.4-3.387h-7.337l-1.4 3.387H114.5l7.044-15.805h3.613zM123.328 8.45l-2.506 6.051h5.012z" style="font-weight:700;font-size:22.5778px;font-family:Montserrat;-inkscape-font-specification:'Montserrat, Bold'"/></g></svg>

After

Width:  |  Height:  |  Size: 2.5 KiB

1
images/speaker.svg Normal file
View File

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M14 3.23v2.06c2.89.86 5 3.54 5 6.71s-2.11 5.84-5 6.7v2.07c4-.91 7-4.49 7-8.77 0-4.28-3-7.86-7-8.77M16.5 12c0-1.77-1-3.29-2.5-4.03V16c1.5-.71 2.5-2.24 2.5-4M3 9v6h4l5 5V4L7 9H3Z"/></svg>

After

Width:  |  Height:  |  Size: 254 B

View File

@ -299,6 +299,7 @@ Environmental
Internal Temperature, components/sensor/internal_temperature, thermometer.svg, Temperature
MCP9808, components/sensor/mcp9808, mcp9808.jpg, Temperature
MH-Z19, components/sensor/mhz19, mhz19.jpg, CO2 & Temperature
MLX90614, components/sensor/mlx90614, mlx90614.jpg, Temperature
MPL3115A2, components/sensor/mpl3115a2, mpl3115a2.jpg, Temperature & Pressure
MS5611, components/sensor/ms5611, ms5611.jpg, Pressure
NTC Thermistor, components/sensor/ntc, ntc.jpg, Temperature
@ -316,6 +317,7 @@ Environmental
TEE501, components/sensor/tee501, TEE501.png, Temperature
TMP102, components/sensor/tmp102, tmp102.jpg, Temperature
TMP117, components/sensor/tmp117, tmp117.jpg, Temperature
HYT271, components/sensor/hyt271, hyt271.jpg, Temperature & Humidity
Light
@ -502,6 +504,7 @@ Output Components
BP1658CJ, components/output/bp1658cj, bp1658cj.svg
BP5758D, components/output/bp5758d, bp5758d.svg
X9C Potentiometer, components/output/x9c, x9c.jpg
GP8403, components/output/gp8403, gp8403.svg
Light Components
----------------
@ -520,6 +523,7 @@ Light Components
RGBWW Light, components/light/rgbww, rgbw.png
RGBCT Light, components/light/rgbct, rgbw.png
ESP32 RMT, components/light/esp32_rmt_led_strip, color_lens.svg
FastLED Light, components/light/fastled, color_lens.svg
NeoPixelBus Light, components/light/neopixelbus, color_lens.svg
Light Partition, components/light/partition, color_lens.svg
@ -713,6 +717,14 @@ Microphone Components
Microphone Core, components/microphone/index, microphone.svg
I2S Microphone, components/microphone/i2s_audio, i2s_audio.svg
Speaker Components
------------------
.. imgtable::
Speaker Core, components/speaker/index, speaker.svg
I2S Speaker, components/speaker/i2s_audio, i2s_audio.svg
Time Components
---------------
@ -769,8 +781,10 @@ Miscellaneous Components
Servo, components/servo, servo.svg
Sprinkler, components/sprinkler, sprinkler-variant.svg
PCA6416A I/O Expander, components/pca6416a, pca6416a.svg
PCA9554 I/O Expander, components/pca9554, pca9554a.jpg
PCF8574 I/O Expander, components/pcf8574, pcf8574.jpg
MAX6956 I/O expander - I²C Bus, components/max6956, max6956.jpg
MCP230XX I/O Expander - I²C Bus, components/mcp230xx, mcp230xx.svg
TCA9548A I²C Multiplexer, components/tca9548a, tca9548a.jpg
MCP23SXX I/O Expander - SPI Bus, components/mcp23Sxx, mcp230xx.svg