2
Doxygen
@ -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 = 2023.4.4
|
PROJECT_NUMBER = 2023.5.0
|
||||||
|
|
||||||
# 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
|
||||||
|
2
Makefile
@ -1,5 +1,5 @@
|
|||||||
ESPHOME_PATH = ../esphome
|
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
|
.PHONY: html html-strict cleanhtml deploy help live-html Makefile netlify netlify-api api netlify-dependencies svg2png copy-svg2png minify
|
||||||
|
|
||||||
|
BIN
_static/changelog-2023.5.0.png
Normal file
After Width: | Height: | Size: 76 KiB |
@ -1 +1 @@
|
|||||||
2023.4.4
|
2023.5.0
|
209
changelog/2023.5.0.rst
Normal 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`
|
@ -2,7 +2,7 @@ Changelog
|
|||||||
=========
|
=========
|
||||||
|
|
||||||
.. redirect::
|
.. redirect::
|
||||||
:url: /changelog/2023.4.0.html
|
:url: /changelog/2023.5.0.html
|
||||||
|
|
||||||
.. toctree::
|
.. toctree::
|
||||||
:glob:
|
:glob:
|
||||||
|
@ -1,39 +1,41 @@
|
|||||||
RC522 RFID
|
RC522 NFC/RFID
|
||||||
==========
|
==============
|
||||||
|
|
||||||
.. seo::
|
.. 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
|
:image: rc522.jpg
|
||||||
:keywords: RC522, RFID
|
:keywords: RC522, NFC, RFID
|
||||||
|
|
||||||
.. _rc522-component:
|
.. _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
|
.. figure:: images/rc522-full.jpg
|
||||||
:align: center
|
:align: center
|
||||||
:width: 60.0%
|
: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
|
Over SPI
|
||||||
--------
|
--------
|
||||||
|
|
||||||
The ``rc522_spi`` component allows you to use RC522 RFID controllers with ESPHome. This component is a global hub that
|
The ``rc522_spi`` component allows you to use RC522 NFC/RFID controllers with ESPHome. This component is a global hub
|
||||||
establishes the connection to the RC522 via :ref:`SPI <spi>` (also available over I²C). Using the
|
that establishes the connection to the RC522 via :ref:`SPI <spi>`. Using :ref:`RC522 binary sensors <rc522-binary_sensor>`,
|
||||||
:ref:`RC522 binary sensors <rc522-tag>` you can then create individual binary sensors that track if
|
you can then create individual binary sensors that track if an NFC/RFID tag is currently detected by the RC522.
|
||||||
an RFID tag is currently detected by the RC522.
|
|
||||||
|
|
||||||
.. code-block:: yaml
|
.. 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
|
- **cs_pin** (**Required**, :ref:`Pin Schema <config-pin_schema>`): The pin on the ESP that the chip select line
|
||||||
is connected to.
|
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
|
- **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.
|
shows the RC522 working okay without this.
|
||||||
- **update_interval** (*Optional*, :ref:`config-time`): The duration of each scan on the RC522. This affects the
|
- **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.
|
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``.
|
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.
|
- **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
|
Over I²C
|
||||||
--------
|
--------
|
||||||
|
|
||||||
The ``rc522_i2c`` component allows you to use RC522 RFID controllers with ESPHome. This component is a global hub that
|
The ``rc522_i2c`` component allows you to use RC522 NFC/RFID controllers with ESPHome. This component is a global hub
|
||||||
establishes the connection to the RC522 via :ref:`I²C <i2c>` (also available over SPI). Using the
|
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
|
:ref:`RC522 binary sensors <rc522-binary_sensor>` you can then create individual binary sensors that track if
|
||||||
an RFID tag is currently detected by the RC522.
|
an NFC/RFID tag is currently detected by the RC522.
|
||||||
|
|
||||||
.. code-block:: yaml
|
.. code-block:: yaml
|
||||||
|
|
||||||
@ -86,27 +90,28 @@ Configuration variables:
|
|||||||
************************
|
************************
|
||||||
|
|
||||||
- **address** (*Optional*, int): Manually specify the I²C address of the sensor. Defaults to ``0x28``.
|
- **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
|
- **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.
|
shows the RC522 working okay without this.
|
||||||
- **update_interval** (*Optional*, :ref:`config-time`): The duration of each scan on the RC522. This affects the
|
- **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.
|
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``.
|
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.
|
- **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:
|
.. _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
|
This automation will be triggered immediately after the RC522 identifies a tag.
|
||||||
can be called quite often (with an interval of ``update_interval``) as it's triggered repeatedly
|
|
||||||
if the tag is re-read many times.
|
|
||||||
|
|
||||||
The parameter ``x`` this trigger provides is of type ``std::string`` and is the tag UID in the format
|
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``.
|
``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:
|
then:
|
||||||
- homeassistant.tag_scanned: !lambda 'return x;'
|
- 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
|
``rc522`` Binary Sensor
|
||||||
-----------------------
|
-----------------------
|
||||||
|
|
||||||
The ``rc522`` binary sensor platform lets you track if an RFID tag with a given
|
The ``rc522`` binary sensor platform lets you track if an NFC/RFID tag with a given unique id (``uid``) is currently
|
||||||
unique id (``uid``) is currently being detected by the RC522 or not.
|
being detected by the RC522 or not.
|
||||||
|
|
||||||
.. code-block:: yaml
|
.. code-block:: yaml
|
||||||
|
|
||||||
@ -160,7 +187,7 @@ unique id (``uid``) is currently being detected by the RC522 or not.
|
|||||||
Configuration variables:
|
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``.
|
of hexadecimal values. For example ``74-10-37-94``.
|
||||||
- **name** (**Required**, string): The name of the binary sensor.
|
- **name** (**Required**, string): The name of the binary sensor.
|
||||||
- **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.
|
||||||
@ -171,17 +198,16 @@ Configuration variables:
|
|||||||
Setting Up Tags
|
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.
|
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::
|
.. code::
|
||||||
|
|
||||||
Found new tag '74-10-37-94'
|
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
|
Then copy this id and create a ``binary_sensor`` entry as in the configuration example. Repeat this process for each tag.
|
||||||
each tag.
|
|
||||||
|
|
||||||
See Also
|
See Also
|
||||||
--------
|
--------
|
||||||
|
@ -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 BLE stack. If you wish to connect more devices, use additional
|
||||||
ESP32 boards.
|
ESP32 boards.
|
||||||
|
|
||||||
This component does not (yet) support devices that require
|
This component supports devices that require a 6 digit PIN code
|
||||||
security settings (eg connecting with a PIN).
|
for authentication.
|
||||||
|
|
||||||
Currently, devices connected with the client cannot be
|
Currently, devices connected with the client cannot be
|
||||||
supported by other components based on :doc:`/components/esp32_ble_tracker`
|
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`.
|
when the client connects to a device. See :ref:`ble_client-on_connect`.
|
||||||
- **on_disconnect** (*Optional*, :ref:`Automation <automation>`): An automation to perform
|
- **on_disconnect** (*Optional*, :ref:`Automation <automation>`): An automation to perform
|
||||||
when the client disconnects from a device. See :ref:`ble_client-on_disconnect`.
|
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
|
BLE Client Automation
|
||||||
---------------------
|
---------------------
|
||||||
@ -91,6 +97,64 @@ This automation is triggered when the client disconnects from a BLE device.
|
|||||||
- lambda: |-
|
- lambda: |-
|
||||||
ESP_LOGD("ble_client_lambda", "Disconnected from BLE device");
|
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:
|
||||||
|
|
||||||
``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.
|
- **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.
|
- **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
|
BLE Overview
|
||||||
------------
|
------------
|
||||||
This section gives a brief overview of the Bluetooth LE architecture
|
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
|
Setting Up Devices
|
||||||
------------------
|
------------------
|
||||||
|
|
||||||
Whilst the component can connect to most BLE devices (that do not
|
Whilst the component can connect to most BLE devices, useful functionality
|
||||||
require authentication/pin), useful functionality is only obtained
|
is only obtained through dependent components, such as :doc:`/components/sensor/ble_client`.
|
||||||
through dependent components, such as :doc:`/components/sensor/ble_client`.
|
|
||||||
See the documentation for these components for details on setting up
|
See the documentation for these components for details on setting up
|
||||||
specific devices.
|
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
|
ESPHome components, for example Service UUID 0xFFE0 is used for iTag style
|
||||||
keychain button events, used by the :doc:`/components/sensor/ble_client` component.
|
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
|
See Also
|
||||||
--------
|
--------
|
||||||
|
|
||||||
|
@ -111,6 +111,39 @@ Configuration options:
|
|||||||
- **loop** (*Optional*, boolean, :ref:`templatable <config-templatable>`): Repeats playing
|
- **loop** (*Optional*, boolean, :ref:`templatable <config-templatable>`): Repeats playing
|
||||||
the same track. Defaults to ``false``.
|
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
|
``dfplayer.play_folder`` Action
|
||||||
-------------------------------
|
-------------------------------
|
||||||
|
|
||||||
|
@ -91,6 +91,7 @@ Configuration variables:
|
|||||||
- ``4.20in``
|
- ``4.20in``
|
||||||
- ``4.20in-bV2`` - B/W rendering only
|
- ``4.20in-bV2`` - B/W rendering only
|
||||||
- ``5.83in``
|
- ``5.83in``
|
||||||
|
- ``5.83inv2``
|
||||||
- ``7.50in``
|
- ``7.50in``
|
||||||
- ``7.50in-bV2`` - also supports v3, B/W rendering only
|
- ``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
|
- ``7.50in-bc`` - display with version sticker '(C)' on the back, B/W rendering only
|
||||||
|
@ -13,9 +13,18 @@ can run.
|
|||||||
# Example configuration
|
# Example configuration
|
||||||
|
|
||||||
esp32_ble:
|
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
|
See Also
|
||||||
--------
|
--------
|
||||||
|
@ -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_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.
|
- **id** (*Optional*, :ref:`config-id`): Manually specify the ID for this I²S bus if you need multiple.
|
||||||
|
|
||||||
See also
|
See also
|
||||||
|
BIN
components/images/max6956.jpg
Normal file
After Width: | Height: | Size: 34 KiB |
@ -24,5 +24,6 @@ Components
|
|||||||
display_menu/index
|
display_menu/index
|
||||||
media_player/index
|
media_player/index
|
||||||
microphone/index
|
microphone/index
|
||||||
|
speaker/index
|
||||||
time/index
|
time/index
|
||||||
*
|
*
|
||||||
|
@ -83,6 +83,10 @@ Automations:
|
|||||||
if the timeout happens. The current sequence of pressed keys is placed in a ``vector<uint8_t>`` variable ``x``
|
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``.
|
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
|
See Also
|
||||||
--------
|
--------
|
||||||
|
69
components/light/esp32_rmt_led_strip.rst
Normal 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`
|
@ -486,6 +486,8 @@ This effect makes a pulsating light. The period can be defined by ``update_inter
|
|||||||
name: "Fast Pulse"
|
name: "Fast Pulse"
|
||||||
transition_length: 0.5s
|
transition_length: 0.5s
|
||||||
update_interval: 0.5s
|
update_interval: 0.5s
|
||||||
|
min_brightness: 0%
|
||||||
|
max_brightness: 100%
|
||||||
- pulse:
|
- pulse:
|
||||||
name: "Slow Pulse"
|
name: "Slow Pulse"
|
||||||
# transition_length: 1s # defaults to 1s
|
# transition_length: 1s # defaults to 1s
|
||||||
@ -496,6 +498,8 @@ Configuration variables:
|
|||||||
- **name** (*Optional*, string): The name of the effect. Defaults to ``Pulse``.
|
- **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``.
|
- **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``.
|
- **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
|
Random Effect
|
||||||
|
290
components/max6956.rst
Normal 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`
|
@ -13,15 +13,73 @@ The ``i2s_audio`` microphone platform allows you to receive audio via the the
|
|||||||
# Example configuration entry
|
# Example configuration entry
|
||||||
microphone:
|
microphone:
|
||||||
- platform: i2s_audio
|
- platform: i2s_audio
|
||||||
|
id: external_mic
|
||||||
|
adc_type: external
|
||||||
i2s_din_pin: GPIO23
|
i2s_din_pin: GPIO23
|
||||||
|
|
||||||
|
- platform: i2s_audio
|
||||||
|
id: adc_mic
|
||||||
|
adc_type: internal
|
||||||
|
adc_pin: GPIO35
|
||||||
|
|
||||||
|
|
||||||
Configuration variables:
|
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.
|
- **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>`
|
- 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
|
See also
|
||||||
--------
|
--------
|
||||||
|
|
||||||
|
53
components/output/gp8403.rst
Normal 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`
|
@ -62,6 +62,12 @@ Configuration variables:
|
|||||||
- **id** (*Optional*, :ref:`config-id`): The id to use for
|
- **id** (*Optional*, :ref:`config-id`): The id to use for
|
||||||
this ``sm2135`` component. Use this if you have multiple SM2135 chains
|
this ``sm2135`` component. Use this if you have multiple SM2135 chains
|
||||||
connected at the same time.
|
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:
|
.. _sm2135-output:
|
||||||
|
|
||||||
@ -117,6 +123,10 @@ Configuration variables:
|
|||||||
The white LEDs are much brighter than the color LEDs. To get uniform brightness
|
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.
|
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::
|
.. note::
|
||||||
|
|
||||||
This driver does not support enabling of both the color and the white channels
|
This driver does not support enabling of both the color and the white channels
|
||||||
|
103
components/pca6416a.rst
Normal 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`
|
@ -35,6 +35,7 @@ Configuration variables:
|
|||||||
- **canalsatld**: Decode and dump CanalSatLD infrared codes.
|
- **canalsatld**: Decode and dump CanalSatLD infrared codes.
|
||||||
- **coolix**: Decode and dump Coolix infrared codes.
|
- **coolix**: Decode and dump Coolix infrared codes.
|
||||||
- **dish**: Decode and dump Dish infrared codes.
|
- **dish**: Decode and dump Dish infrared codes.
|
||||||
|
- **drayton**: Decode and dump Drayton Digistat RF codes.
|
||||||
- **jvc**: Decode and dump JVC infrared codes.
|
- **jvc**: Decode and dump JVC infrared codes.
|
||||||
- **lg**: Decode and dump LG infrared codes.
|
- **lg**: Decode and dump LG infrared codes.
|
||||||
- **magiquest**: Decode and dump MagiQuest wand 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`
|
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.
|
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.
|
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
|
- **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`
|
JVC remote code has been decoded. A variable ``x`` of type :apistruct:`remote_base::JVCData`
|
||||||
is passed to the automation for use in lambdas.
|
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``.
|
- **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.
|
- **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.
|
- **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.
|
- **data** (**Required**, int): The JVC code to trigger on, see dumper output for more info.
|
||||||
|
@ -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>`__.
|
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:
|
||||||
|
|
||||||
``remote_transmitter.transmit_jvc`` Action
|
``remote_transmitter.transmit_jvc`` Action
|
||||||
|
@ -5,19 +5,50 @@ Binary Sensor Map
|
|||||||
:description: Instructions for setting up a Binary Sensor Map
|
:description: Instructions for setting up a Binary Sensor Map
|
||||||
:image: binary_sensor_map.jpg
|
:image: binary_sensor_map.jpg
|
||||||
|
|
||||||
The ``binary_sensor_map`` sensor platform allows you to map :doc:`binary sensor </components/binary_sensor/index>`
|
The ``binary_sensor_map`` sensor platform allows you to map multiple :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.
|
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
|
This platform supports three measurement types: ``BAYESIAN``, ``GROUP``, and ``SUM``.
|
||||||
on the type of the binary sensor map and the values specified with each channel. The maximum amount of possible channels is 64.
|
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.
|
When using the ``BAYESIAN`` type, add your binary sensors as ``observations`` to the binary sensor map.
|
||||||
You need to specify which type of mapping you want with the ``type:`` configuration value:
|
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
|
- ``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.
|
||||||
binary sensors.
|
|
||||||
|
.. 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
|
.. code-block:: yaml
|
||||||
|
|
||||||
@ -48,8 +79,8 @@ You need to specify which type of mapping you want with the ``type:`` configurat
|
|||||||
id: touchkey0
|
id: touchkey0
|
||||||
# ...
|
# ...
|
||||||
|
|
||||||
- ``SUM`` Each channel has its own value. The sensor publishes the sum of all active
|
- ``SUM`` Each channel has its own ``value``. The sensor publishes the sum of all the active
|
||||||
binary sensors values.
|
binary sensors values or ``0`` if no sensors are active.
|
||||||
|
|
||||||
.. code-block:: yaml
|
.. code-block:: yaml
|
||||||
|
|
||||||
@ -91,12 +122,19 @@ Configuration variables:
|
|||||||
------------------------
|
------------------------
|
||||||
|
|
||||||
- **name** (**Required**, string): The name of the sensor.
|
- **name** (**Required**, string): The name of the sensor.
|
||||||
- **type** (**Required**, string): The sensor type. Should be one of: ``GROUP``.
|
- **type** (**Required**, string): The sensor type. Should be one of: ``BAYESIAN``, ``GROUP``, or ``SUM``.
|
||||||
- **channels** (**Required**): A list of channels that are mapped to certain values.
|
- **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>`
|
- **binary_sensor** (**Required**): The id of the :doc:`binary sensor </components/binary_sensor/index>`
|
||||||
to add as a channel for this sensor.
|
to add as a channel for this sensor.
|
||||||
- **value** (**Required**): The value this channel should report when its binary sensor is active.
|
- **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>`.
|
- All other options from :ref:`Sensor <config-sensor>`.
|
||||||
|
|
||||||
@ -104,6 +142,8 @@ See Also
|
|||||||
--------
|
--------
|
||||||
|
|
||||||
- :doc:`/components/binary_sensor/mpr121`
|
- :doc:`/components/binary_sensor/mpr121`
|
||||||
|
- :doc:`/components/binary_sensor/analog_threshold`
|
||||||
- :ref:`sensor-filters`
|
- :ref:`sensor-filters`
|
||||||
- :apiref:`binary_sensor_map/binary_sensor_map.h`
|
- :apiref:`binary_sensor_map/binary_sensor_map.h`
|
||||||
|
- `Bayesian sensor in Home Assistant <https://www.home-assistant.io/integrations/bayesian/>`__
|
||||||
- :ghedit:`Edit`
|
- :ghedit:`Edit`
|
||||||
|
49
components/sensor/hyt271.rst
Normal 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`
|
BIN
components/sensor/images/hyt271.jpg
Normal file
After Width: | Height: | Size: 86 KiB |
BIN
components/sensor/images/mlx90614.jpg
Normal file
After Width: | Height: | Size: 49 KiB |
57
components/sensor/mlx90614.rst
Normal 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`
|
@ -35,9 +35,8 @@ Configuration variables:
|
|||||||
- **name** (**Required**, string): The name of the sensor.
|
- **name** (**Required**, string): The name of the sensor.
|
||||||
- **lambda** (*Optional*, :ref:`lambda <config-lambda>`):
|
- **lambda** (*Optional*, :ref:`lambda <config-lambda>`):
|
||||||
Lambda to be evaluated every update interval to get the new value of the sensor
|
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
|
- **update_interval** (*Optional*, :ref:`config-time`): The interval to check the
|
||||||
sensor, either the result of the lambda function or if no lambda function the last value
|
sensor. Set to ``never`` to disable updates. Defaults to ``60s``.
|
||||||
published using the publish action. Set to ``never`` to disable updates. Defaults to ``60s``.
|
|
||||||
- **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:`Sensor <config-sensor>`.
|
- All other options from :ref:`Sensor <config-sensor>`.
|
||||||
|
|
||||||
|
49
components/speaker/i2s_audio.rst
Normal 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`
|
96
components/speaker/index.rst
Normal 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`
|
@ -31,9 +31,8 @@ Configuration variables:
|
|||||||
- **name** (**Required**, string): The name of the text sensor.
|
- **name** (**Required**, string): The name of the text sensor.
|
||||||
- **lambda** (*Optional*, :ref:`lambda <config-lambda>`):
|
- **lambda** (*Optional*, :ref:`lambda <config-lambda>`):
|
||||||
Lambda to be evaluated every update interval to get the new value of the text sensor
|
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
|
- **update_interval** (*Optional*, :ref:`config-time`): The interval to check the
|
||||||
text sensor, either the result of the lambda function or if no lambda function the last value
|
text sensor. Set to ``never`` to disable updates. Defaults to ``60s``.
|
||||||
published using the publish action. Defaults to ``60s``.
|
|
||||||
- **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:`Text Sensor <config-text_sensor>`.
|
- All other options from :ref:`Text Sensor <config-text_sensor>`.
|
||||||
|
|
||||||
|
@ -23,7 +23,8 @@ Configuration:
|
|||||||
voice_assistant:
|
voice_assistant:
|
||||||
microphone: mic_id
|
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
|
- **on_start** (*Optional*, :ref:`Automation <automation>`): An automation to
|
||||||
perform when the voice assistant starts listening.
|
perform when the voice assistant starts listening.
|
||||||
- **on_end** (*Optional*, :ref:`Automation <automation>`): An automation to perform
|
- **on_end** (*Optional*, :ref:`Automation <automation>`): An automation to perform
|
||||||
|
@ -84,6 +84,7 @@ Configuration variables:
|
|||||||
first. This is required for hidden networks and can significantly improve connection times. Defaults to ``off``.
|
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
|
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.
|
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_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.
|
- **enable_rrm** (*Optional*, bool): Only on ``esp32`` with ``esp-idf``. Enable 802.11k Radio Resource Management support.
|
||||||
|
4
conf.py
@ -67,9 +67,9 @@ author = "ESPHome"
|
|||||||
# built documents.
|
# built documents.
|
||||||
#
|
#
|
||||||
# The short X.Y version.
|
# The short X.Y version.
|
||||||
version = "2023.4"
|
version = "2023.5"
|
||||||
# The full version, including alpha/beta/rc tags.
|
# 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
|
# The language for content autogenerated by Sphinx. Refer to documentation
|
||||||
# for a list of supported languages.
|
# for a list of supported languages.
|
||||||
|
@ -332,7 +332,8 @@ All Triggers
|
|||||||
- :ref:`time.on_time <time-on_time>` / - :ref:`time.on_time_sync <time-on_time_sync>`
|
- :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_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:`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:`interval.interval <interval>`
|
||||||
- :ref:`switch.on_turn_on / switch.on_turn_off <switch-on_turn_on_off_trigger>`
|
- :ref:`switch.on_turn_on / switch.on_turn_off <switch-on_turn_on_off_trigger>`
|
||||||
- :doc:`remote_receiver.on_* </components/remote_receiver>`
|
- :doc:`remote_receiver.on_* </components/remote_receiver>`
|
||||||
|
@ -57,6 +57,7 @@ Contributors
|
|||||||
- `Albin Kauffmann (@albinou) <https://github.com/albinou>`__
|
- `Albin Kauffmann (@albinou) <https://github.com/albinou>`__
|
||||||
- `Andre Lengwenus (@alengwenus) <https://github.com/alengwenus>`__
|
- `Andre Lengwenus (@alengwenus) <https://github.com/alengwenus>`__
|
||||||
- `Alex (@alex-richards) <https://github.com/alex-richards>`__
|
- `Alex (@alex-richards) <https://github.com/alex-richards>`__
|
||||||
|
- `Alex Dekker (@Alex1602) <https://github.com/Alex1602>`__
|
||||||
- `Alexander Leisentritt (@Alex9779) <https://github.com/Alex9779>`__
|
- `Alexander Leisentritt (@Alex9779) <https://github.com/Alex9779>`__
|
||||||
- `Alex Barcelo (@alexbarcelo) <https://github.com/alexbarcelo>`__
|
- `Alex Barcelo (@alexbarcelo) <https://github.com/alexbarcelo>`__
|
||||||
- `AlexCPU (@AlexCPU) <https://github.com/AlexCPU>`__
|
- `AlexCPU (@AlexCPU) <https://github.com/AlexCPU>`__
|
||||||
@ -104,7 +105,6 @@ Contributors
|
|||||||
- `ashp8i (@ashp8i) <https://github.com/ashp8i>`__
|
- `ashp8i (@ashp8i) <https://github.com/ashp8i>`__
|
||||||
- `Ashton Kemerling (@AshtonKem) <https://github.com/AshtonKem>`__
|
- `Ashton Kemerling (@AshtonKem) <https://github.com/AshtonKem>`__
|
||||||
- `杨成锴 (@asjdf) <https://github.com/asjdf>`__
|
- `杨成锴 (@asjdf) <https://github.com/asjdf>`__
|
||||||
- `Pavel Pletenev (@ASMfreaK) <https://github.com/ASMfreaK>`__
|
|
||||||
- `Andreas Soehlke (@asoehlke) <https://github.com/asoehlke>`__
|
- `Andreas Soehlke (@asoehlke) <https://github.com/asoehlke>`__
|
||||||
- `Mike Dunston (@atanisoft) <https://github.com/atanisoft>`__
|
- `Mike Dunston (@atanisoft) <https://github.com/atanisoft>`__
|
||||||
- `Glenn Morrison (@atomicpapa) <https://github.com/atomicpapa>`__
|
- `Glenn Morrison (@atomicpapa) <https://github.com/atomicpapa>`__
|
||||||
@ -145,6 +145,7 @@ Contributors
|
|||||||
- `Berend Haan (@berendhaan) <https://github.com/berendhaan>`__
|
- `Berend Haan (@berendhaan) <https://github.com/berendhaan>`__
|
||||||
- `Arturo Casal (@berfenger) <https://github.com/berfenger>`__
|
- `Arturo Casal (@berfenger) <https://github.com/berfenger>`__
|
||||||
- `Bryan Berg (@berg) <https://github.com/berg>`__
|
- `Bryan Berg (@berg) <https://github.com/berg>`__
|
||||||
|
- `BerlinJoker (@BerlinJoker) <https://github.com/BerlinJoker>`__
|
||||||
- `Bert Hertogen (@berthertogen) <https://github.com/berthertogen>`__
|
- `Bert Hertogen (@berthertogen) <https://github.com/berthertogen>`__
|
||||||
- `Ivan Bessarabov (@bessarabov) <https://github.com/bessarabov>`__
|
- `Ivan Bessarabov (@bessarabov) <https://github.com/bessarabov>`__
|
||||||
- `Brandon (@bgulla) <https://github.com/bgulla>`__
|
- `Brandon (@bgulla) <https://github.com/bgulla>`__
|
||||||
@ -236,6 +237,7 @@ Contributors
|
|||||||
- `Cossid (@Cossid) <https://github.com/Cossid>`__
|
- `Cossid (@Cossid) <https://github.com/Cossid>`__
|
||||||
- `Cougar (@Cougar) <https://github.com/Cougar>`__
|
- `Cougar (@Cougar) <https://github.com/Cougar>`__
|
||||||
- `Connor Prussin (@cprussin) <https://github.com/cprussin>`__
|
- `Connor Prussin (@cprussin) <https://github.com/cprussin>`__
|
||||||
|
- `cptquad (@cptquad) <https://github.com/cptquad>`__
|
||||||
- `Corey Rice (@crice009) <https://github.com/crice009>`__
|
- `Corey Rice (@crice009) <https://github.com/crice009>`__
|
||||||
- `cryptelli (@cryptelli) <https://github.com/cryptelli>`__
|
- `cryptelli (@cryptelli) <https://github.com/cryptelli>`__
|
||||||
- `Christian Schwarzgruber (@cslux) <https://github.com/cslux>`__
|
- `Christian Schwarzgruber (@cslux) <https://github.com/cslux>`__
|
||||||
@ -293,6 +295,7 @@ Contributors
|
|||||||
- `Davide Depau (@depau) <https://github.com/depau>`__
|
- `Davide Depau (@depau) <https://github.com/depau>`__
|
||||||
- `dependabot[bot] (@dependabot[bot]) <https://github.com/dependabot[bot]>`__
|
- `dependabot[bot] (@dependabot[bot]) <https://github.com/dependabot[bot]>`__
|
||||||
- `Joeri Colman (@depuits) <https://github.com/depuits>`__
|
- `Joeri Colman (@depuits) <https://github.com/depuits>`__
|
||||||
|
- `Mike La Spina (@descipher) <https://github.com/descipher>`__
|
||||||
- `Stephan Martin (@designer2k2) <https://github.com/designer2k2>`__
|
- `Stephan Martin (@designer2k2) <https://github.com/designer2k2>`__
|
||||||
- `Destix (@Destix) <https://github.com/Destix>`__
|
- `Destix (@Destix) <https://github.com/Destix>`__
|
||||||
- `Deun Lee (@deunlee) <https://github.com/deunlee>`__
|
- `Deun Lee (@deunlee) <https://github.com/deunlee>`__
|
||||||
@ -351,6 +354,7 @@ Contributors
|
|||||||
- `Erwin Kooi (@egeltje) <https://github.com/egeltje>`__
|
- `Erwin Kooi (@egeltje) <https://github.com/egeltje>`__
|
||||||
- `Eike (@ei-ke) <https://github.com/ei-ke>`__
|
- `Eike (@ei-ke) <https://github.com/ei-ke>`__
|
||||||
- `Elazar Leibovich (@elazarl) <https://github.com/elazarl>`__
|
- `Elazar Leibovich (@elazarl) <https://github.com/elazarl>`__
|
||||||
|
- `Eli (@eli-xciv) <https://github.com/eli-xciv>`__
|
||||||
- `Eli Yu (@elizhyu) <https://github.com/elizhyu>`__
|
- `Eli Yu (@elizhyu) <https://github.com/elizhyu>`__
|
||||||
- `Elkropac (@Elkropac) <https://github.com/Elkropac>`__
|
- `Elkropac (@Elkropac) <https://github.com/Elkropac>`__
|
||||||
- `Elliot Wood (@elliot-wood) <https://github.com/elliot-wood>`__
|
- `Elliot Wood (@elliot-wood) <https://github.com/elliot-wood>`__
|
||||||
@ -391,6 +395,7 @@ Contributors
|
|||||||
- `Christian Ferbar (@ferbar) <https://github.com/ferbar>`__
|
- `Christian Ferbar (@ferbar) <https://github.com/ferbar>`__
|
||||||
- `FeuerSturm (@FeuerSturm) <https://github.com/FeuerSturm>`__
|
- `FeuerSturm (@FeuerSturm) <https://github.com/FeuerSturm>`__
|
||||||
- `Florian Golemo (@fgolemo) <https://github.com/fgolemo>`__
|
- `Florian Golemo (@fgolemo) <https://github.com/fgolemo>`__
|
||||||
|
- `Federico G. Schwindt (@fgsch) <https://github.com/fgsch>`__
|
||||||
- `Frank Riley (@fhriley) <https://github.com/fhriley>`__
|
- `Frank Riley (@fhriley) <https://github.com/fhriley>`__
|
||||||
- `finity69x2 (@finity69x2) <https://github.com/finity69x2>`__
|
- `finity69x2 (@finity69x2) <https://github.com/finity69x2>`__
|
||||||
- `Frédéric Jouault (@fjouault) <https://github.com/fjouault>`__
|
- `Frédéric Jouault (@fjouault) <https://github.com/fjouault>`__
|
||||||
@ -449,6 +454,7 @@ Contributors
|
|||||||
- `Gonzalo Paniagua Javier (@gonzalop) <https://github.com/gonzalop>`__
|
- `Gonzalo Paniagua Javier (@gonzalop) <https://github.com/gonzalop>`__
|
||||||
- `gordon-zhao (@gordon-zhao) <https://github.com/gordon-zhao>`__
|
- `gordon-zhao (@gordon-zhao) <https://github.com/gordon-zhao>`__
|
||||||
- `Gustavo Ambrozio (@gpambrozio) <https://github.com/gpambrozio>`__
|
- `Gustavo Ambrozio (@gpambrozio) <https://github.com/gpambrozio>`__
|
||||||
|
- `Graham Brown (@grahambrown11) <https://github.com/grahambrown11>`__
|
||||||
- `Granville Barker (@granvillebarker) <https://github.com/granvillebarker>`__
|
- `Granville Barker (@granvillebarker) <https://github.com/granvillebarker>`__
|
||||||
- `Antoine GRÉA (@grea09) <https://github.com/grea09>`__
|
- `Antoine GRÉA (@grea09) <https://github.com/grea09>`__
|
||||||
- `Greg Arnold (@GregJArnold) <https://github.com/GregJArnold>`__
|
- `Greg Arnold (@GregJArnold) <https://github.com/GregJArnold>`__
|
||||||
@ -630,7 +636,6 @@ Contributors
|
|||||||
- `Kelvie Wong (@kelvie) <https://github.com/kelvie>`__
|
- `Kelvie Wong (@kelvie) <https://github.com/kelvie>`__
|
||||||
- `Kenny Stier (@KennyStier) <https://github.com/KennyStier>`__
|
- `Kenny Stier (@KennyStier) <https://github.com/KennyStier>`__
|
||||||
- `kernelpanic85 (@kernelpanic85) <https://github.com/kernelpanic85>`__
|
- `kernelpanic85 (@kernelpanic85) <https://github.com/kernelpanic85>`__
|
||||||
- `Kevin O'Rourke (@kevinior) <https://github.com/kevinior>`__
|
|
||||||
- `kevlar10 (@kevlar10) <https://github.com/kevlar10>`__
|
- `kevlar10 (@kevlar10) <https://github.com/kevlar10>`__
|
||||||
- `kfulko (@kfulko) <https://github.com/kfulko>`__
|
- `kfulko (@kfulko) <https://github.com/kfulko>`__
|
||||||
- `Kai Gerken (@KG3RK3N) <https://github.com/KG3RK3N>`__
|
- `Kai Gerken (@KG3RK3N) <https://github.com/KG3RK3N>`__
|
||||||
@ -642,7 +647,6 @@ Contributors
|
|||||||
- `Klaas Schoute (@klaasnicolaas) <https://github.com/klaasnicolaas>`__
|
- `Klaas Schoute (@klaasnicolaas) <https://github.com/klaasnicolaas>`__
|
||||||
- `Klarstein (@Klarstein) <https://github.com/Klarstein>`__
|
- `Klarstein (@Klarstein) <https://github.com/Klarstein>`__
|
||||||
- `Marcus Klein (@kleini) <https://github.com/kleini>`__
|
- `Marcus Klein (@kleini) <https://github.com/kleini>`__
|
||||||
- `Kevin Lewis (@kll) <https://github.com/kll>`__
|
|
||||||
- `KNXBroker (@KNXBroker) <https://github.com/KNXBroker>`__
|
- `KNXBroker (@KNXBroker) <https://github.com/KNXBroker>`__
|
||||||
- `kokangit (@kokangit) <https://github.com/kokangit>`__
|
- `kokangit (@kokangit) <https://github.com/kokangit>`__
|
||||||
- `konsulten (@konsulten) <https://github.com/konsulten>`__
|
- `konsulten (@konsulten) <https://github.com/konsulten>`__
|
||||||
@ -663,6 +667,7 @@ Contributors
|
|||||||
- `Limor "Ladyada" Fried (@ladyada) <https://github.com/ladyada>`__
|
- `Limor "Ladyada" Fried (@ladyada) <https://github.com/ladyada>`__
|
||||||
- `Luca Adrian L (@lal12) <https://github.com/lal12>`__
|
- `Luca Adrian L (@lal12) <https://github.com/lal12>`__
|
||||||
- `Fredrik Lindqvist (@Landrash) <https://github.com/Landrash>`__
|
- `Fredrik Lindqvist (@Landrash) <https://github.com/Landrash>`__
|
||||||
|
- `lanik (@lanik) <https://github.com/lanik>`__
|
||||||
- `Lawrie George (@lawriege) <https://github.com/lawriege>`__
|
- `Lawrie George (@lawriege) <https://github.com/lawriege>`__
|
||||||
- `Laszlo Gazdag (@lazlyhu) <https://github.com/lazlyhu>`__
|
- `Laszlo Gazdag (@lazlyhu) <https://github.com/lazlyhu>`__
|
||||||
- `Ludovic BOUÉ (@lboue) <https://github.com/lboue>`__
|
- `Ludovic BOUÉ (@lboue) <https://github.com/lboue>`__
|
||||||
@ -737,6 +742,7 @@ Contributors
|
|||||||
- `Matthew Mazzanti (@matthewmazzanti) <https://github.com/matthewmazzanti>`__
|
- `Matthew Mazzanti (@matthewmazzanti) <https://github.com/matthewmazzanti>`__
|
||||||
- `matthias882 (@matthias882) <https://github.com/matthias882>`__
|
- `matthias882 (@matthias882) <https://github.com/matthias882>`__
|
||||||
- `Matus Ivanecky (@maty535) <https://github.com/maty535>`__
|
- `Matus Ivanecky (@maty535) <https://github.com/maty535>`__
|
||||||
|
- `Christian (@max246) <https://github.com/max246>`__
|
||||||
- `Maximilian Gerhardt (@maxgerhardt) <https://github.com/maxgerhardt>`__
|
- `Maximilian Gerhardt (@maxgerhardt) <https://github.com/maxgerhardt>`__
|
||||||
- `mbo18 (@mbo18) <https://github.com/mbo18>`__
|
- `mbo18 (@mbo18) <https://github.com/mbo18>`__
|
||||||
- `mcmuller (@mcmuller) <https://github.com/mcmuller>`__
|
- `mcmuller (@mcmuller) <https://github.com/mcmuller>`__
|
||||||
@ -761,6 +767,7 @@ Contributors
|
|||||||
- `Micha Nordmann (@Michanord) <https://github.com/Michanord>`__
|
- `Micha Nordmann (@Michanord) <https://github.com/Michanord>`__
|
||||||
- `Michel Munzert (@michelde) <https://github.com/michelde>`__
|
- `Michel Munzert (@michelde) <https://github.com/michelde>`__
|
||||||
- `Pauline Middelink (@middelink) <https://github.com/middelink>`__
|
- `Pauline Middelink (@middelink) <https://github.com/middelink>`__
|
||||||
|
- `Joel Midstjärna (@midstar) <https://github.com/midstar>`__
|
||||||
- `Mike_Went (@MikeWent) <https://github.com/MikeWent>`__
|
- `Mike_Went (@MikeWent) <https://github.com/MikeWent>`__
|
||||||
- `Mikko Tervala (@MikkoTervala) <https://github.com/MikkoTervala>`__
|
- `Mikko Tervala (@MikkoTervala) <https://github.com/MikkoTervala>`__
|
||||||
- `MiKuBB (@MiKuBB) <https://github.com/MiKuBB>`__
|
- `MiKuBB (@MiKuBB) <https://github.com/MiKuBB>`__
|
||||||
@ -782,7 +789,7 @@ Contributors
|
|||||||
- `Moritz Glöckl (@moritzgloeckl) <https://github.com/moritzgloeckl>`__
|
- `Moritz Glöckl (@moritzgloeckl) <https://github.com/moritzgloeckl>`__
|
||||||
- `moritzj29 (@moritzj29) <https://github.com/moritzj29>`__
|
- `moritzj29 (@moritzj29) <https://github.com/moritzj29>`__
|
||||||
- `Chris Laplante (@mostthingsweb) <https://github.com/mostthingsweb>`__
|
- `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>`__
|
- `Morgan Robertson (@mrgnr) <https://github.com/mrgnr>`__
|
||||||
- `Mariusz Kryński (@mrk-its) <https://github.com/mrk-its>`__
|
- `Mariusz Kryński (@mrk-its) <https://github.com/mrk-its>`__
|
||||||
- `Michael Davidson (@MrMDavidson) <https://github.com/MrMDavidson>`__
|
- `Michael Davidson (@MrMDavidson) <https://github.com/MrMDavidson>`__
|
||||||
@ -799,6 +806,7 @@ Contributors
|
|||||||
- `Mynasru (@Mynasru) <https://github.com/Mynasru>`__
|
- `Mynasru (@Mynasru) <https://github.com/Mynasru>`__
|
||||||
- `Mikhail Zakharov (@mzakharo) <https://github.com/mzakharo>`__
|
- `Mikhail Zakharov (@mzakharo) <https://github.com/mzakharo>`__
|
||||||
- `Kevin Uhlir (@n0bel) <https://github.com/n0bel>`__
|
- `Kevin Uhlir (@n0bel) <https://github.com/n0bel>`__
|
||||||
|
- `N6RDV (@N6RDV) <https://github.com/N6RDV>`__
|
||||||
- `Erik Näsström (@Naesstrom) <https://github.com/Naesstrom>`__
|
- `Erik Näsström (@Naesstrom) <https://github.com/Naesstrom>`__
|
||||||
- `H. Árkosi Róbert (@nagyrobi) <https://github.com/nagyrobi>`__
|
- `H. Árkosi Róbert (@nagyrobi) <https://github.com/nagyrobi>`__
|
||||||
- `Viktor Nagy (@nagyv) <https://github.com/nagyv>`__
|
- `Viktor Nagy (@nagyv) <https://github.com/nagyv>`__
|
||||||
@ -869,15 +877,12 @@ Contributors
|
|||||||
- `Paul Monigatti (@paulmonigatti) <https://github.com/paulmonigatti>`__
|
- `Paul Monigatti (@paulmonigatti) <https://github.com/paulmonigatti>`__
|
||||||
- `Paul Nicholls (@pauln) <https://github.com/pauln>`__
|
- `Paul Nicholls (@pauln) <https://github.com/pauln>`__
|
||||||
- `Bartłomiej Biernacki (@pax0r) <https://github.com/pax0r>`__
|
- `Bartłomiej Biernacki (@pax0r) <https://github.com/pax0r>`__
|
||||||
- `Paul Doidge (@pdoidge) <https://github.com/pdoidge>`__
|
|
||||||
- `peddamat (@peddamat) <https://github.com/peddamat>`__
|
- `peddamat (@peddamat) <https://github.com/peddamat>`__
|
||||||
- `pedjas (@pedjas) <https://github.com/pedjas>`__
|
- `pedjas (@pedjas) <https://github.com/pedjas>`__
|
||||||
- `pedrobsm (@pedrobsm) <https://github.com/pedrobsm>`__
|
- `pedrobsm (@pedrobsm) <https://github.com/pedrobsm>`__
|
||||||
- `per1234 (@per1234) <https://github.com/per1234>`__
|
- `per1234 (@per1234) <https://github.com/per1234>`__
|
||||||
- `David (@perldj) <https://github.com/perldj>`__
|
- `David (@perldj) <https://github.com/perldj>`__
|
||||||
- `Peter Valkov (@peter-valkov) <https://github.com/peter-valkov>`__
|
|
||||||
- `Peter Galantha (@peterg79) <https://github.com/peterg79>`__
|
- `Peter Galantha (@peterg79) <https://github.com/peterg79>`__
|
||||||
- `Peter Halicky (@peterhalicky) <https://github.com/peterhalicky>`__
|
|
||||||
- `Philippe Delodder (@phdelodder) <https://github.com/phdelodder>`__
|
- `Philippe Delodder (@phdelodder) <https://github.com/phdelodder>`__
|
||||||
- `philbowers (@philbowers) <https://github.com/philbowers>`__
|
- `philbowers (@philbowers) <https://github.com/philbowers>`__
|
||||||
- `Philippe FOUQUET (@Philippe12) <https://github.com/Philippe12>`__
|
- `Philippe FOUQUET (@Philippe12) <https://github.com/Philippe12>`__
|
||||||
@ -1005,6 +1010,7 @@ Contributors
|
|||||||
- `sparkydave1981 (@sparkydave1981) <https://github.com/sparkydave1981>`__
|
- `sparkydave1981 (@sparkydave1981) <https://github.com/sparkydave1981>`__
|
||||||
- `spattinson (@spattinson) <https://github.com/spattinson>`__
|
- `spattinson (@spattinson) <https://github.com/spattinson>`__
|
||||||
- `Sean Brogan (@spbrogan) <https://github.com/spbrogan>`__
|
- `Sean Brogan (@spbrogan) <https://github.com/spbrogan>`__
|
||||||
|
- `Justin Gerace (@spectrumjade) <https://github.com/spectrumjade>`__
|
||||||
- `Spegs21 (@Spegs21) <https://github.com/Spegs21>`__
|
- `Spegs21 (@Spegs21) <https://github.com/Spegs21>`__
|
||||||
- `Eric Lind (@sperly) <https://github.com/sperly>`__
|
- `Eric Lind (@sperly) <https://github.com/sperly>`__
|
||||||
- `Samuel Sieb (@ssieb) <https://github.com/ssieb>`__
|
- `Samuel Sieb (@ssieb) <https://github.com/ssieb>`__
|
||||||
@ -1136,7 +1142,6 @@ Contributors
|
|||||||
- `WitchKing (@xvil) <https://github.com/xvil>`__
|
- `WitchKing (@xvil) <https://github.com/xvil>`__
|
||||||
- `Yaroslav (@Yarikx) <https://github.com/Yarikx>`__
|
- `Yaroslav (@Yarikx) <https://github.com/Yarikx>`__
|
||||||
- `Marcin Jaworski (@yawor) <https://github.com/yawor>`__
|
- `Marcin Jaworski (@yawor) <https://github.com/yawor>`__
|
||||||
- `Pavel (@yekm) <https://github.com/yekm>`__
|
|
||||||
- `Nico B (@youknow0) <https://github.com/youknow0>`__
|
- `Nico B (@youknow0) <https://github.com/youknow0>`__
|
||||||
- `Yuval Aboulafia (@yuvalabou) <https://github.com/yuvalabou>`__
|
- `Yuval Aboulafia (@yuvalabou) <https://github.com/yuvalabou>`__
|
||||||
- `Björn Stenberg (@zagor) <https://github.com/zagor>`__
|
- `Björn Stenberg (@zagor) <https://github.com/zagor>`__
|
||||||
@ -1145,9 +1150,10 @@ Contributors
|
|||||||
- `Geek_cat (@zhzhzhy) <https://github.com/zhzhzhy>`__
|
- `Geek_cat (@zhzhzhy) <https://github.com/zhzhzhy>`__
|
||||||
- `I. Tomita (@ziceva) <https://github.com/ziceva>`__
|
- `I. Tomita (@ziceva) <https://github.com/ziceva>`__
|
||||||
- `Michael Labuschke (@zigman79) <https://github.com/zigman79>`__
|
- `Michael Labuschke (@zigman79) <https://github.com/zigman79>`__
|
||||||
|
- `Stefan Goethals (@zipkid) <https://github.com/zipkid>`__
|
||||||
- `zivillian (@zivillian) <https://github.com/zivillian>`__
|
- `zivillian (@zivillian) <https://github.com/zivillian>`__
|
||||||
- `Loïc (@zoic21) <https://github.com/zoic21>`__
|
- `Loïc (@zoic21) <https://github.com/zoic21>`__
|
||||||
- `Zack Barett (@zsarnett) <https://github.com/zsarnett>`__
|
- `Zack Barett (@zsarnett) <https://github.com/zsarnett>`__
|
||||||
- `Christian Zufferey (@zuzu59) <https://github.com/zuzu59>`__
|
- `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
@ -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:"Montserrat, Bold""/></g></svg>
|
After Width: | Height: | Size: 2.7 KiB |
BIN
images/hyt271.jpg
Normal file
After Width: | Height: | Size: 3.9 KiB |
BIN
images/max6956.jpg
Normal file
After Width: | Height: | Size: 29 KiB |
BIN
images/mlx90614.jpg
Normal file
After Width: | Height: | Size: 5.8 KiB |
1
images/pca6416a.svg
Normal 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
@ -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 |
14
index.rst
@ -299,6 +299,7 @@ Environmental
|
|||||||
Internal Temperature, components/sensor/internal_temperature, thermometer.svg, Temperature
|
Internal Temperature, components/sensor/internal_temperature, thermometer.svg, Temperature
|
||||||
MCP9808, components/sensor/mcp9808, mcp9808.jpg, Temperature
|
MCP9808, components/sensor/mcp9808, mcp9808.jpg, Temperature
|
||||||
MH-Z19, components/sensor/mhz19, mhz19.jpg, CO2 & 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
|
MPL3115A2, components/sensor/mpl3115a2, mpl3115a2.jpg, Temperature & Pressure
|
||||||
MS5611, components/sensor/ms5611, ms5611.jpg, Pressure
|
MS5611, components/sensor/ms5611, ms5611.jpg, Pressure
|
||||||
NTC Thermistor, components/sensor/ntc, ntc.jpg, Temperature
|
NTC Thermistor, components/sensor/ntc, ntc.jpg, Temperature
|
||||||
@ -316,6 +317,7 @@ Environmental
|
|||||||
TEE501, components/sensor/tee501, TEE501.png, Temperature
|
TEE501, components/sensor/tee501, TEE501.png, Temperature
|
||||||
TMP102, components/sensor/tmp102, tmp102.jpg, Temperature
|
TMP102, components/sensor/tmp102, tmp102.jpg, Temperature
|
||||||
TMP117, components/sensor/tmp117, tmp117.jpg, Temperature
|
TMP117, components/sensor/tmp117, tmp117.jpg, Temperature
|
||||||
|
HYT271, components/sensor/hyt271, hyt271.jpg, Temperature & Humidity
|
||||||
|
|
||||||
|
|
||||||
Light
|
Light
|
||||||
@ -502,6 +504,7 @@ Output Components
|
|||||||
BP1658CJ, components/output/bp1658cj, bp1658cj.svg
|
BP1658CJ, components/output/bp1658cj, bp1658cj.svg
|
||||||
BP5758D, components/output/bp5758d, bp5758d.svg
|
BP5758D, components/output/bp5758d, bp5758d.svg
|
||||||
X9C Potentiometer, components/output/x9c, x9c.jpg
|
X9C Potentiometer, components/output/x9c, x9c.jpg
|
||||||
|
GP8403, components/output/gp8403, gp8403.svg
|
||||||
|
|
||||||
Light Components
|
Light Components
|
||||||
----------------
|
----------------
|
||||||
@ -520,6 +523,7 @@ Light Components
|
|||||||
RGBWW Light, components/light/rgbww, rgbw.png
|
RGBWW Light, components/light/rgbww, rgbw.png
|
||||||
RGBCT Light, components/light/rgbct, 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
|
FastLED Light, components/light/fastled, color_lens.svg
|
||||||
NeoPixelBus Light, components/light/neopixelbus, color_lens.svg
|
NeoPixelBus Light, components/light/neopixelbus, color_lens.svg
|
||||||
Light Partition, components/light/partition, color_lens.svg
|
Light Partition, components/light/partition, color_lens.svg
|
||||||
@ -713,6 +717,14 @@ Microphone Components
|
|||||||
Microphone Core, components/microphone/index, microphone.svg
|
Microphone Core, components/microphone/index, microphone.svg
|
||||||
I2S Microphone, components/microphone/i2s_audio, i2s_audio.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
|
Time Components
|
||||||
---------------
|
---------------
|
||||||
|
|
||||||
@ -769,8 +781,10 @@ Miscellaneous Components
|
|||||||
Servo, components/servo, servo.svg
|
Servo, components/servo, servo.svg
|
||||||
Sprinkler, components/sprinkler, sprinkler-variant.svg
|
Sprinkler, components/sprinkler, sprinkler-variant.svg
|
||||||
|
|
||||||
|
PCA6416A I/O Expander, components/pca6416a, pca6416a.svg
|
||||||
PCA9554 I/O Expander, components/pca9554, pca9554a.jpg
|
PCA9554 I/O Expander, components/pca9554, pca9554a.jpg
|
||||||
PCF8574 I/O Expander, components/pcf8574, pcf8574.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
|
MCP230XX I/O Expander - I²C Bus, components/mcp230xx, mcp230xx.svg
|
||||||
TCA9548A I²C Multiplexer, components/tca9548a, tca9548a.jpg
|
TCA9548A I²C Multiplexer, components/tca9548a, tca9548a.jpg
|
||||||
MCP23SXX I/O Expander - SPI Bus, components/mcp23Sxx, mcp230xx.svg
|
MCP23SXX I/O Expander - SPI Bus, components/mcp23Sxx, mcp230xx.svg
|
||||||
|