2
Doxygen
@ -38,7 +38,7 @@ PROJECT_NAME = "ESPHome"
|
||||
# could be handy for archiving the generated documentation or if some version
|
||||
# control system is used.
|
||||
|
||||
PROJECT_NUMBER = 2023.12.9
|
||||
PROJECT_NUMBER = 2024.2.0b1
|
||||
|
||||
# Using the PROJECT_BRIEF tag one can provide an optional one line description
|
||||
# for a project that appears at the top of each page and should give viewer a
|
||||
|
2
Makefile
@ -1,5 +1,5 @@
|
||||
ESPHOME_PATH = ../esphome
|
||||
ESPHOME_REF = 2023.12.9
|
||||
ESPHOME_REF = 2024.2.0b1
|
||||
|
||||
.PHONY: html html-strict cleanhtml deploy help live-html Makefile netlify netlify-api api netlify-dependencies svg2png copy-svg2png minify
|
||||
|
||||
|
BIN
_static/changelog-2024.2.0.png
Normal file
After Width: | Height: | Size: 73 KiB |
@ -1 +1 @@
|
||||
2023.12.9
|
||||
2024.2.0b1
|
199
changelog/2024.2.0.rst
Normal file
@ -0,0 +1,199 @@
|
||||
ESPHome 2024.2.0 - 21st February 2024
|
||||
=====================================
|
||||
|
||||
.. seo::
|
||||
:description: Changelog for ESPHome 2024.2.0.
|
||||
:image: /_static/changelog-2024.2.0.png
|
||||
:author: Jesse Hills
|
||||
:author_twitter: @jesserockz
|
||||
|
||||
.. imgtable::
|
||||
:columns: 4
|
||||
|
||||
micro Wake Word, components/micro_wake_word, voice-assistant.svg, dark-invert
|
||||
AS5600, components/sensor/as5600, as5600.jpg
|
||||
ST7567, components/display/st7567, st7567.jpg
|
||||
BME280 SPI, components/sensor/bme280, bme280.jpg
|
||||
VEML3235, components/sensor/veml3235, veml3235.jpg
|
||||
Honeywell HIH I2C, components/sensor/honeywell_hih_i2c, honeywellhih.jpg
|
||||
Combination, components/sensor/combination, function.svg, dark-invert
|
||||
|
||||
|
||||
Full list of changes
|
||||
--------------------
|
||||
|
||||
New Components
|
||||
^^^^^^^^^^^^^^
|
||||
|
||||
- feat: add AS5600 component/sensor :esphomepr:`5174` by :ghuser:`ammmze` (new-integration)
|
||||
- Support for ST7567 display 128x64 (I2C, SPI) :esphomepr:`5952` by :ghuser:`latonita` (new-integration)
|
||||
- BME280 SPI :esphomepr:`5538` by :ghuser:`apbodrov` (new-integration) (breaking-change)
|
||||
- Add support for VEML3235 lux sensor :esphomepr:`5959` by :ghuser:`kbx81` (new-integration)
|
||||
- Add support of Honeywell HumidIcon (I2C HIH series) Temperature & Humidity sensor :esphomepr:`5730` by :ghuser:`Benichou34` (new-integration)
|
||||
- Add combination sensor and remove absorbed kalman_combinator component :esphomepr:`5438` by :ghuser:`kahrendt` (new-integration) (breaking-change)
|
||||
- Add micro_wake_word component :esphomepr:`6136` by :ghuser:`kahrendt` (new-integration)
|
||||
|
||||
Breaking Changes
|
||||
^^^^^^^^^^^^^^^^
|
||||
|
||||
- PMSx003 add relevant device and state classes to default config :esphomepr:`5633` by :ghuser:`wheimbigner` (breaking-change)
|
||||
- BME280 SPI :esphomepr:`5538` by :ghuser:`apbodrov` (new-integration) (breaking-change)
|
||||
- convert cse7766 to non-polling :esphomepr:`6095` by :ghuser:`ssieb` (breaking-change)
|
||||
- Add combination sensor and remove absorbed kalman_combinator component :esphomepr:`5438` by :ghuser:`kahrendt` (new-integration) (breaking-change)
|
||||
|
||||
All changes
|
||||
^^^^^^^^^^^
|
||||
|
||||
- Bump esptool from 4.6.2 to 4.7.0 :esphomepr:`5935` by :ghuser:`dependabot[bot]`
|
||||
- Bump actions/download-artifact from 3.0.2 to 4.0.0 :esphomepr:`5936` by :ghuser:`dependabot[bot]`
|
||||
- Bump build-image action versions :esphomepr:`5954` by :ghuser:`jesserockz`
|
||||
- Revert "Bump build-image action versions" :esphomepr:`5955` by :ghuser:`jesserockz`
|
||||
- Revert "Bump actions/download-artifact from 3.0.2 to 4.0.0" :esphomepr:`5956` by :ghuser:`jesserockz`
|
||||
- Bump zeroconf from 0.130.0 to 0.131.0 :esphomepr:`5967` by :ghuser:`dependabot[bot]`
|
||||
- Add ability to lock to set mode :esphomepr:`5924` by :ghuser:`ysmilda`
|
||||
- feat: add AS5600 component/sensor :esphomepr:`5174` by :ghuser:`ammmze` (new-integration)
|
||||
- Add default substitutions for package includes :esphomepr:`5752` by :ghuser:`mknjc`
|
||||
- Add gradient option to addressable color wipe effect :esphomepr:`5689` by :ghuser:`lifeisafractal`
|
||||
- Added alarm processing for Haier component (hOn protocol) :esphomepr:`5965` by :ghuser:`paveldn`
|
||||
- Allow haier remote protocol to use lambdas :esphomepr:`5898` by :ghuser:`catlee`
|
||||
- PMSx003 add relevant device and state classes to default config :esphomepr:`5633` by :ghuser:`wheimbigner` (breaking-change)
|
||||
- Add waveshare 2.7in V2 model :esphomepr:`5903` by :ghuser:`gumulka`
|
||||
- Add support for waveshare 2.9in B V3 version :esphomepr:`5902` by :ghuser:`gumulka`
|
||||
- Fix pin reuse in test1 :esphomepr:`5978` by :ghuser:`jesserockz`
|
||||
- Add Waveshare 1.47in 172x320 to ST7789v component :esphomepr:`5884` by :ghuser:`mrtoy-me`
|
||||
- (fingerprint_grow) Added on_finger_scan_invalid automation. :esphomepr:`5885` by :ghuser:`RubenNL`
|
||||
- Alarm panel: Add changes to support enhanced features :esphomepr:`5671` by :ghuser:`hwstar`
|
||||
- support default pins for adafruit esp32 feather v2 :esphomepr:`5482` by :ghuser:`sbrudenell`
|
||||
- Bug: Unwanted change resistance in x9c component :esphomepr:`5483` by :ghuser:`fizista`
|
||||
- Improvements to RF receiver for Drayton Digistat heating controller :esphomepr:`5504` by :ghuser:`marshn`
|
||||
- Reduce memory usage with StringRef in MQTT Components :esphomepr:`5719` by :ghuser:`kahrendt`
|
||||
- Nextion allow underscore on names :esphomepr:`5979` by :ghuser:`edwardtfn`
|
||||
- Add Keeloq RF protocol :esphomepr:`5511` by :ghuser:`marshn`
|
||||
- Add a Binary Sensor Filter for state settling :esphomepr:`5900` by :ghuser:`cottsay`
|
||||
- Lint the script folder files :esphomepr:`5991` by :ghuser:`jesserockz`
|
||||
- web_server support for home assistant like styling :esphomepr:`5854` by :ghuser:`afarago`
|
||||
- [Touchscreen] Add expire of touch record. :esphomepr:`5986` by :ghuser:`Fabian-Schmidt`
|
||||
- Support for ST7567 display 128x64 (I2C, SPI) :esphomepr:`5952` by :ghuser:`latonita` (new-integration)
|
||||
- Add constants used by multiple display drivers to global const.py :esphomepr:`6033` by :ghuser:`clydebarrow`
|
||||
- Nextion queue size :esphomepr:`6029` by :ghuser:`edwardtfn`
|
||||
- Ble client additions and fixes :esphomepr:`5277` by :ghuser:`clydebarrow`
|
||||
- HaierProtocol library updated to 0.9.25 to fix the answer_timeout bug :esphomepr:`6015` by :ghuser:`paveldn`
|
||||
- GT911 touchscreen: Fix bug causing touch button release to fail :esphomepr:`6042` by :ghuser:`clydebarrow`
|
||||
- Display: Introduce `draw_pixels_at()` method for fast block display rendering :esphomepr:`6034` by :ghuser:`clydebarrow`
|
||||
- clang-format and clang-tidy scripts: More robust algorithm to find correct executable :esphomepr:`6041` by :ghuser:`clydebarrow`
|
||||
- Don't crash with invalid adc pin :esphomepr:`6059` by :ghuser:`ssieb`
|
||||
- Add questionmark to default glyphs. :esphomepr:`6053` by :ghuser:`RubenNL`
|
||||
- pylontech: fix voltage_low and voltage_high wrong unit :esphomepr:`6060` by :ghuser:`functionpointer`
|
||||
- Bump flake8 from 6.1.0 to 7.0.0 :esphomepr:`6058` by :ghuser:`dependabot[bot]`
|
||||
- Nextion enable upload from https when using esp-idf :esphomepr:`6051` by :ghuser:`edwardtfn`
|
||||
- Extends UART change at runtime to ESP8266 :esphomepr:`6019` by :ghuser:`edwardtfn`
|
||||
- Nextion draw QR code at runtime :esphomepr:`6027` by :ghuser:`edwardtfn`
|
||||
- Extend i2s config options :esphomepr:`6056` by :ghuser:`Hadatko`
|
||||
- Add getter for image data_start :esphomepr:`6036` by :ghuser:`clydebarrow`
|
||||
- Bump hypothesis to 6.92.1 :esphomepr:`6011` by :ghuser:`bdraco`
|
||||
- Bump recommended ESP32 IDF to 4.4.6 :esphomepr:`6048` by :ghuser:`bdraco`
|
||||
- Bump pytest from 7.4.3 to 7.4.4 :esphomepr:`6046` by :ghuser:`dependabot[bot]`
|
||||
- dashboard: refactor ping implementation to be more efficient :esphomepr:`6002` by :ghuser:`bdraco`
|
||||
- Bump pytest-asyncio from 0.23.2 to 0.23.3 :esphomepr:`6047` by :ghuser:`dependabot[bot]`
|
||||
- Bump black from 23.12.0 to 23.12.1 :esphomepr:`6018` by :ghuser:`dependabot[bot]`
|
||||
- Run python tests on windows and macos :esphomepr:`6010` by :ghuser:`bdraco`
|
||||
- BME280 SPI :esphomepr:`5538` by :ghuser:`apbodrov` (new-integration) (breaking-change)
|
||||
- Actions to enable and disable WireGuard connection :esphomepr:`5690` by :ghuser:`droscy`
|
||||
- hydreon_rgxx - fix missing cg.add(var.set_model(...)) :esphomepr:`6065` by :ghuser:`mrtoy-me`
|
||||
- Bump pillow to 10.2.0. :esphomepr:`6091` by :ghuser:`pfrenssen`
|
||||
- convert cse7766 to non-polling :esphomepr:`6095` by :ghuser:`ssieb` (breaking-change)
|
||||
- Use touch state from ft63x6 driver. :esphomepr:`6055` by :ghuser:`nielsnl68`
|
||||
- update script/setup so it works fine on windows :esphomepr:`6087` by :ghuser:`nielsnl68`
|
||||
- add Pico-ResTouch-LCD-3.5 :esphomepr:`6078` by :ghuser:`nielsnl68`
|
||||
- Revert "add Pico-ResTouch-LCD-3.5" :esphomepr:`6098` by :ghuser:`nielsnl68`
|
||||
- Add triangle shapes to display component :esphomepr:`6096` by :ghuser:`mathieu-mp`
|
||||
- Fingerprint_grow: Trigger on finger scan start and on finger scan misplaced :esphomepr:`6003` by :ghuser:`alexborro`
|
||||
- Add continuous option to the graph :esphomepr:`6093` by :ghuser:`ssieb`
|
||||
- Add NFC binary sensor platform :esphomepr:`6068` by :ghuser:`kbx81`
|
||||
- Socket: Add recvfrom method to receive UDP with source address. :esphomepr:`6103` by :ghuser:`clydebarrow`
|
||||
- Add support for VEML3235 lux sensor :esphomepr:`5959` by :ghuser:`kbx81` (new-integration)
|
||||
- CV: tidy up Schema wrapper :esphomepr:`6105` by :ghuser:`jesserockz`
|
||||
- Add support X.509 client certificates for MQTT. :esphomepr:`5778` by :ghuser:`h2zero`
|
||||
- Fix color observation for triangle outline in display component :esphomepr:`6107` by :ghuser:`mathieu-mp`
|
||||
- Add support of Honeywell HumidIcon (I2C HIH series) Temperature & Humidity sensor :esphomepr:`5730` by :ghuser:`Benichou34` (new-integration)
|
||||
- Proposal: Test yaml for each component :esphomepr:`5398` by :ghuser:`Fabian-Schmidt`
|
||||
- WiFi fast_connect: save/load BSSID and channel for faster connect from sleep :esphomepr:`5931` by :ghuser:`rguca`
|
||||
- Fixes Waveshare 7.5in B V2 and V3 :esphomepr:`6079` by :ghuser:`Pofilo`
|
||||
- Add combination sensor and remove absorbed kalman_combinator component :esphomepr:`5438` by :ghuser:`kahrendt` (new-integration) (breaking-change)
|
||||
- Bump platformio from 6.1.11 to 6.1.13 :esphomepr:`6086` by :ghuser:`dependabot[bot]`
|
||||
- Bump actions/cache from 3.3.2 to 4.0.0 :esphomepr:`6110` by :ghuser:`dependabot[bot]`
|
||||
- Enable networking and some other components on host platform :esphomepr:`6114` by :ghuser:`clydebarrow`
|
||||
- Fix time component for host platform :esphomepr:`6118` by :ghuser:`clydebarrow`
|
||||
- Add quad spi features :esphomepr:`5925` by :ghuser:`clydebarrow`
|
||||
- add AM2120 device type :esphomepr:`6115` by :ghuser:`alexbuit`
|
||||
- Add support for Waveshare EPD 2.13" V3 :esphomepr:`5363` by :ghuser:`clydebarrow`
|
||||
- OTA 2 which confirm each written chunk :esphomepr:`6066` by :ghuser:`tomaszduda23`
|
||||
- Remove optional<> for pointer types :esphomepr:`6120` by :ghuser:`kroimon`
|
||||
- Improve temperature precision in BME280 and BMP280 :esphomepr:`6124` by :ghuser:`jxl77`
|
||||
- Nextion TFT upload IDF memory optimization :esphomepr:`6128` by :ghuser:`edwardtfn`
|
||||
- Add support for Pico-ResTouch-LCD-3.5 to ili9xxx driver :esphomepr:`6129` by :ghuser:`clydebarrow`
|
||||
- Ensure filename is shown when YAML raises an error :esphomepr:`6139` by :ghuser:`bdraco`
|
||||
- ILI9XXX: Restore offset usage in set_addr_window :esphomepr:`6147` by :ghuser:`clydebarrow`
|
||||
- Minimum 1 for full_update_every to prevent IntegerDivideByZero. :esphomepr:`6150` by :ghuser:`RubenNL`
|
||||
- Support tri-color waveshare eink displays 2.7inch B and B V2 :esphomepr:`4238` by :ghuser:`rnauber`
|
||||
- Synchronise Device Classes from Home Assistant :esphomepr:`6158` by :ghuser:`esphomebot`
|
||||
- dfrobot_sen0395: Use setLatency instead of outputLatency :esphomepr:`5665` by :ghuser:`jfroy`
|
||||
- Add some components to the new testing framework (A part 1) :esphomepr:`6142` by :ghuser:`kbx81`
|
||||
- WRGB or RGBW? WS2814 :esphomepr:`6164` by :ghuser:`mhetzi`
|
||||
- Add some components to the new testing framework (A part 2) :esphomepr:`6162` by :ghuser:`kbx81`
|
||||
- Bump aioesphomeapi to 21.0.2 :esphomepr:`6188` by :ghuser:`bdraco`
|
||||
- Add some components to the new testing framework (B) :esphomepr:`6173` by :ghuser:`kbx81`
|
||||
- Add "transformer_active" flag for use in effects. :esphomepr:`6157` by :ghuser:`TikiBill`
|
||||
- CSE7766: fix power and current measurements at low loads :esphomepr:`6180` by :ghuser:`twasilczyk`
|
||||
- host platform: improvements and bugfixes :esphomepr:`6137` by :ghuser:`clydebarrow`
|
||||
- WLED Sync fix and BK72XX support :esphomepr:`6190` by :ghuser:`ChuckMash`
|
||||
- Add missing vector.h for lightwaverf :esphomepr:`6196` by :ghuser:`kbx81`
|
||||
- Add some components to the new testing framework (C) :esphomepr:`6174` by :ghuser:`kbx81`
|
||||
- update docstrings in cpp_generator.py :esphomepr:`6212` by :ghuser:`nielsnl68`
|
||||
- Fixed group mask logic for WLED Sync fix :esphomepr:`6193` by :ghuser:`ChuckMash`
|
||||
- Add micro_wake_word component :esphomepr:`6136` by :ghuser:`kahrendt` (new-integration)
|
||||
|
||||
Past Changelogs
|
||||
---------------
|
||||
|
||||
- :doc:`2023.12.0`
|
||||
- :doc:`2023.11.0`
|
||||
- :doc:`2023.10.0`
|
||||
- :doc:`2023.9.0`
|
||||
- :doc:`2023.8.0`
|
||||
- :doc:`2023.7.0`
|
||||
- :doc:`2023.6.0`
|
||||
- :doc:`2023.5.0`
|
||||
- :doc:`2023.4.0`
|
||||
- :doc:`2023.3.0`
|
||||
- :doc:`2023.2.0`
|
||||
- :doc:`2022.12.0`
|
||||
- :doc:`2022.11.0`
|
||||
- :doc:`2022.10.0`
|
||||
- :doc:`2022.9.0`
|
||||
- :doc:`2022.8.0`
|
||||
- :doc:`2022.6.0`
|
||||
- :doc:`2022.5.0`
|
||||
- :doc:`2022.4.0`
|
||||
- :doc:`2022.3.0`
|
||||
- :doc:`2022.2.0`
|
||||
- :doc:`2022.1.0`
|
||||
- :doc:`2021.12.0`
|
||||
- :doc:`2021.11.0`
|
||||
- :doc:`2021.10.0`
|
||||
- :doc:`2021.9.0`
|
||||
- :doc:`2021.8.0`
|
||||
- :doc:`v1.20.0`
|
||||
- :doc:`v1.19.0`
|
||||
- :doc:`v1.18.0`
|
||||
- :doc:`v1.17.0`
|
||||
- :doc:`v1.16.0`
|
||||
- :doc:`v1.15.0`
|
||||
- :doc:`v1.14.0`
|
||||
- :doc:`v1.13.0`
|
||||
- :doc:`v1.12.0`
|
||||
- :doc:`v1.11.0`
|
||||
- :doc:`v1.10.0`
|
||||
- :doc:`v1.9.0`
|
||||
- :doc:`v1.8.0`
|
||||
- :doc:`v1.7.0`
|
@ -2,7 +2,7 @@ Changelog
|
||||
=========
|
||||
|
||||
.. redirect::
|
||||
:url: /changelog/2023.12.0.html
|
||||
:url: /changelog/2024.2.0.html
|
||||
|
||||
.. toctree::
|
||||
:glob:
|
||||
|
@ -44,6 +44,11 @@ Configuration variables:
|
||||
when the alarm state changes to ``disarmed``. See :ref:`alarm_control_panel_on_disarmed_trigger`.
|
||||
- **on_cleared** (*Optional*, :ref:`Action <config-action>`): An automation to perform
|
||||
when the alarm clears. See :ref:`alarm_control_panel_on_cleared_trigger`.
|
||||
- **on_ready** (*Optional*, :ref:`Action <config-action>`): An automation to perform
|
||||
when the logical 'and' of all the zone sensors change state. See :ref:`alarm_control_panel_on_ready_trigger`.
|
||||
- **on_chime** (*Optional*, :ref:`Action <config-action>`): An automation to perform
|
||||
when a zone has been marked as chime in the configuration, and it changes from closed to open.
|
||||
See :ref:`alarm_control_panel_on_chime_trigger`.
|
||||
|
||||
|
||||
Automation:
|
||||
@ -184,6 +189,39 @@ This trigger is activated when the alarm changes from to disarmed.
|
||||
then:
|
||||
- logger.log: "Alarm Disarmed!"
|
||||
|
||||
.. _alarm_control_panel_on_ready_trigger:
|
||||
|
||||
``on_ready`` Trigger
|
||||
********************
|
||||
|
||||
This trigger is activated when the logical 'and' of all the alarm sensors change state. This is useful for implementing "alarm ready" LEDs.
|
||||
Once this trigger is called, you can get the ready state by calling get_all_sensors_ready() in a lambda block.
|
||||
|
||||
.. code-block:: yaml
|
||||
|
||||
alarm_control_panel:
|
||||
# ...
|
||||
on_disarmed:
|
||||
then:
|
||||
- lambda: !lambda |-
|
||||
ESP_LOGI("AlarmPanel", "Sensor ready change to: %s", ((id(acp1).get_all_sensors_ready()) ? (const char *) "True" : (const char *) "False"));
|
||||
|
||||
.. _alarm_control_panel_on_chime_trigger:
|
||||
|
||||
``on_chime`` Trigger
|
||||
********************
|
||||
|
||||
This trigger is activated when a zone sensor marked with chime:true changes from closed to open. This is useful for implementing keypad chimes when a zone
|
||||
opens.
|
||||
|
||||
.. code-block:: yaml
|
||||
|
||||
alarm_control_panel:
|
||||
# ...
|
||||
on_chime:
|
||||
then:
|
||||
- logger.log: "Alarm Chime!"
|
||||
|
||||
.. _alarm_control_panel_arm_away_action:
|
||||
|
||||
``arm_away`` Action
|
||||
@ -296,6 +334,7 @@ From :ref:`lambdas <config-lambda>`, you can call the following methods:
|
||||
- ``arm_home(code)``
|
||||
- ``arm_night(code)``
|
||||
- ``disarm(code)``
|
||||
- ``get_all_sensors_ready()``
|
||||
|
||||
.. code-block:: cpp
|
||||
|
||||
@ -303,6 +342,7 @@ From :ref:`lambdas <config-lambda>`, you can call the following methods:
|
||||
id(acp1).arm_home();
|
||||
id(acp1).arm_night();
|
||||
id(acp1).disarm(std::string("1234"));
|
||||
bool all_sensors_ready = id(acp1).get_all_sensors_ready();
|
||||
|
||||
|
||||
Platforms
|
||||
|
@ -36,6 +36,8 @@ Configuration variables:
|
||||
- **input** (**Required**, string): The id of the binary sensor component
|
||||
- **bypass_armed_home** (*Optional*, boolean): This binary sensor will not trigger the alarm when in ``armed_home`` state.
|
||||
- **bypass_armed_night** (*Optional*, boolean): This binary sensor will not trigger the alarm when in ``armed_night`` state.
|
||||
- **trigger_mode** (*Optional*, string): Sets the trigger mode for this sensor. One of ``delayed``, ``instant``, or ``delayed_follower``. (``delayed`` is the default if not specified)
|
||||
- **chime** (*Optional*, boolean): When set ``true``, the chime callback will be called whenever the sensor goes from closed to open. (``false`` is the default if not specified)
|
||||
|
||||
- **restore_mode** (*Optional*, enum):
|
||||
|
||||
@ -46,9 +48,33 @@ Configuration variables:
|
||||
|
||||
.. note::
|
||||
|
||||
If ``binary_sensors`` is ommited then you're expected to trigger the alarm using
|
||||
If ``binary_sensors`` is omitted then you're expected to trigger the alarm using
|
||||
:ref:`alarm_control_panel_pending_action` or :ref:`alarm_control_panel_triggered_action`.
|
||||
|
||||
.. _template_alarm_control_panel-trigger_modes:
|
||||
|
||||
Trigger Modes
|
||||
-------------
|
||||
|
||||
Each binary sensor "zone" supports 3 trigger modes. The 3 trigger modes are:
|
||||
|
||||
- delayed
|
||||
- instant
|
||||
- delayed_follower
|
||||
|
||||
The ``delayed`` trigger mode is typically specified for exterior doors where entry is required to access an alarm keypad or other arm/disarm method. If the alarm panel is armed, and a zone set to ``delayed`` is "faulted" (i.e. the zone state is ``true``) the alarm state will change from the ``armed`` state to the ``pending`` state. During the ``pending`` state, the user has a preset time to disarm the alarm before it changes to the ``triggered`` state. This is the default trigger mode if not specified.
|
||||
|
||||
The ``instant`` trigger mode is typically used for exterior zones (e.g. windows, and glass break detectors). If the alarm control panel is armed, a fault on this type of zone will cause the alarm to go from the ``armed`` state directly to the ``triggered`` state.
|
||||
|
||||
The ``delayed_follower`` trigger mode is typically specifed for interior passive infared (PIR) or microwave sensors. One of two things happen when a ``delayed_follower`` zone is faulted:
|
||||
|
||||
1. When the alarm panel is in the armed state, a fault on a zone with ``delayed_follower`` specified will cause the alarm control panel to go directly to the ``triggered`` state.
|
||||
|
||||
2. When the alarm panel is in the pending state, a fault on a zone with ``delayed_follower`` specified will remain in the ``pending`` state.
|
||||
|
||||
The ``delayed_follower`` trigger mode offers better protection if someone enters a premises via an unprotected window or door. If there is a PIR guarding the main hallway, it will cause an instant trigger of the alarm panel as someone
|
||||
entered the premises in a unusual manner. Likewise, if someone enters the premises though a door set to the ``delayed`` trigger mode, and then triggers the PIR, the alarm will stay in the ``pending`` state until either they disarm the alarm, or
|
||||
the pending timer expires.
|
||||
|
||||
.. _template_alarm_control_panel-state_flow:
|
||||
|
||||
@ -63,18 +89,29 @@ State Flow:
|
||||
|
||||
3. When the alarm is tripped by a sensor state changing to ``on`` or ``alarm_control_panel_pending_action`` invoked
|
||||
|
||||
a. ``pending_time`` greater than 0 the state is ``PENDING``
|
||||
b. ``pending_time`` is 0 or after the ``pending_time`` delay the state is ``TRIGGERED``
|
||||
1. If trigger_mode is set to ``delayed``:
|
||||
|
||||
1. ``pending_time`` greater than 0 the state is ``PENDING``
|
||||
2. ``pending_time`` is 0 or after the ``pending_time`` delay the state is ``TRIGGERED``
|
||||
|
||||
2. If trigger_mode is set to ``instant``:
|
||||
|
||||
1. The state is set to ``TRIGGERED``
|
||||
|
||||
3. If the trigger_mode is set to ``interior_follower``:
|
||||
|
||||
1. If the current state is ``ARMED_...`` the state will be set to ``TRIGGERED``
|
||||
2. If the current state is ``PENDING`` then nothing will happen and it will stay in the ``PENDING`` state.
|
||||
|
||||
4. If ``trigger_time`` greater than 0 and no sensors are ``on`` after ``trigger_time`` delay
|
||||
the state returns to ``ARM_...``
|
||||
|
||||
.. note::
|
||||
|
||||
Although the interface supports all arming modes only ``away`` and ``home`` have been implemented for now.
|
||||
Although the interface supports all arming modes only ``away``, ``home`` and ``night`` have been implemented for now.
|
||||
``arm_...`` is for either ``arm_away`` or ``arm_home``
|
||||
``arming_..._time`` is for either ``arming_away_time`` or ``arming_home_time``
|
||||
``ARMED_...`` is for either ``ARMED_AWAY`` or ``ARMED_HOME``
|
||||
``arming_..._time`` is for either ``arming_away_time``, ``arming_home_time``, or ``arming_night_time``
|
||||
``ARMED_...`` is for either ``ARMED_AWAY``, ``ARMED_HOME``, or ``ARMED_NIGHT``
|
||||
|
||||
|
||||
Example:
|
||||
@ -95,8 +132,16 @@ Example:
|
||||
trigger_time: 5min
|
||||
binary_sensors:
|
||||
- input: zone_1
|
||||
chime: true
|
||||
trigger_mode: delayed
|
||||
- input: zone_2
|
||||
chime: true
|
||||
trigger_mode: delayed
|
||||
- input: zone_3
|
||||
bypass_armed_home: true
|
||||
trigger_mode: delayed_follower
|
||||
- input: zone_4
|
||||
trigger_mode: instant
|
||||
- input: ha_test
|
||||
on_state:
|
||||
then:
|
||||
@ -108,6 +153,15 @@ Example:
|
||||
on_cleared:
|
||||
then:
|
||||
- switch.turn_off: siren
|
||||
on_ready:
|
||||
then:
|
||||
- lambda: !lambda |-
|
||||
ESP_LOGD("TEST", "Sensor ready change to: %s",
|
||||
(id(acp1).get_all_sensors_ready())) ? (const char *) "True" : (const char *) "False");
|
||||
on_chime:
|
||||
then:
|
||||
- lambda: !lambda |-
|
||||
ESP_LOGD("TEST", "Zone with chime mode set opened");
|
||||
|
||||
binary_sensor:
|
||||
- platform: gpio
|
||||
@ -121,14 +175,30 @@ Example:
|
||||
- platform: gpio
|
||||
id: zone_2
|
||||
name: Zone 2
|
||||
device_class: motion
|
||||
device_class: door
|
||||
pin:
|
||||
number: D2
|
||||
mode: INPUT_PULLUP
|
||||
inverted: True
|
||||
- platform: gpio
|
||||
id: zone_3
|
||||
name: Zone 3
|
||||
device_class: motion
|
||||
pin:
|
||||
number: D3
|
||||
mode: INPUT_PULLUP
|
||||
inverted: True
|
||||
- platform: gpio
|
||||
id: zone_4
|
||||
name: Zone 4
|
||||
device_class: door
|
||||
pin:
|
||||
number: D4
|
||||
mode: INPUT_PULLUP
|
||||
inverted: True
|
||||
- platform: homeassistant
|
||||
id: ha_test
|
||||
name: Zone 3
|
||||
name: HA Test
|
||||
entity_id: input_boolean.test_switch
|
||||
|
||||
switch:
|
||||
|
@ -208,6 +208,16 @@ Specify any :ref:`lambda <config-lambda>` for more complex filters. The input va
|
||||
the binary sensor is ``x`` and you can return ``true`` for ON, ``false`` for OFF, and ``{}`` to stop
|
||||
the filter chain.
|
||||
|
||||
``settle``
|
||||
**********
|
||||
|
||||
(**Required**, time, :ref:`templatable <config-templatable>`): When a signal is received, publish the state
|
||||
but wait for the received state to remain the same for specified time period before publishing any
|
||||
additional state changes. This filter complements the ``delayed_on_off`` filter but publishes value changes at
|
||||
the beginning of the delay period.
|
||||
When using a lambda call, you should return the delay value in milliseconds.
|
||||
**Useful for debouncing binary switches**.
|
||||
|
||||
Binary Sensor Automation
|
||||
------------------------
|
||||
|
||||
|
90
components/binary_sensor/nfc.rst
Normal file
@ -0,0 +1,90 @@
|
||||
NFC Binary Sensor
|
||||
=================
|
||||
|
||||
.. seo::
|
||||
:description: Instructions for setting up a NFC binary sensor in ESPHome
|
||||
:image: nfc.png
|
||||
:keywords: PN532, PN7150, PN7160, NFC
|
||||
|
||||
.. _nfc-platform:
|
||||
|
||||
The ``nfc`` binary sensor platform provides an easy way for you to determine if an NFC tag is presented to the reader.
|
||||
The tag may be identified in one of three ways:
|
||||
|
||||
- By given unique ID (``uid``) -- for example ``74-10-37-94``
|
||||
- By a given NDEF tag "name", or...
|
||||
- By a given string contained in the tag's NDEF message/data
|
||||
|
||||
Note that this platform is currently supported by the :doc:`PN7150 <../pn7150>` and :doc:`PN716x <../pn7160>` only;
|
||||
one of these components must be present in your device's configuration in order to use it.
|
||||
|
||||
.. code-block:: yaml
|
||||
|
||||
# Example configuration entries
|
||||
binary_sensor:
|
||||
- platform: nfc
|
||||
ndef_contains: pulse
|
||||
name: "NFC 1 Tag"
|
||||
- platform: nfc
|
||||
tag_id: pulsed
|
||||
name: "NFC 2 Tag"
|
||||
- platform: nfc
|
||||
uid: 74-10-37-94
|
||||
name: "MFC Tag"
|
||||
|
||||
Configuration variables:
|
||||
------------------------
|
||||
|
||||
- **ndef_contains** (*Optional*, string): A (sub)string that must appear in the tag's NDEF message. May not be used
|
||||
with ``tag_id`` and/or ``uid`` (below).
|
||||
- **tag_id** (*Optional*, string): A string that identifies the tag; in effect, its name. Specifically, this looks
|
||||
for the Home Assistant URI encoded into one of the tag's NDEF records and then looks for this specific string. May
|
||||
not be used with ``ndef_contains`` and/or ``uid``.
|
||||
- **uid** (*Optional*, string): The unique ID of the NFC tag. This is a hyphen-separated list of hexadecimal values.
|
||||
For example: ``74-10-37-94``. May not be used with ``ndef_contains`` and/or ``tag_id`` (above).
|
||||
- All other options from :ref:`Binary Sensor <config-binary_sensor>`.
|
||||
|
||||
.. _nfc-setting_up_tags:
|
||||
|
||||
Setting Up Tags
|
||||
---------------
|
||||
|
||||
To set up a binary sensor for a given NFC tag, you must first know either its unique ID (``uid``), tag ID (if it was
|
||||
prepared using the Home Assistant Companion app) or (part of) a string that is contained within its NDEF message.
|
||||
|
||||
To obtain a tag's UID:
|
||||
|
||||
- Set up a simple NFC component (such as the :doc:`PN532 <pn532>`, :doc:`PN7150 <../pn7150>` or :doc:`PN716x <../pn7160>`)
|
||||
configuration without any binary sensors.
|
||||
- Approach the NFC reader with an NFC tag. When the tag is sufficiently close to the reader, you'll see a message in the
|
||||
ESPHome device's logs similar to this:
|
||||
|
||||
.. code::
|
||||
|
||||
Read tag type Mifare Classic with UID 1C-E5-E7-A6
|
||||
|
||||
- Either:
|
||||
|
||||
- Copy this ID and use it to create a ``binary_sensor`` entry as shown in the configuration example above, or...
|
||||
- Use the tag ID (as determined when it was prepared with the Home Assistant Companion app) to define the ``tag_id``
|
||||
parameter for the ``binary_sensor`` as shown above, or...
|
||||
- Choose a substring contained within the tag's NDEF message and use this to define the ``ndef_contains`` parameter
|
||||
as shown in the example above. If present, the tag's NDEF records will appear in the log on the lines just below
|
||||
the message shown above.
|
||||
|
||||
Repeat this process for each tag.
|
||||
|
||||
Note that, since *you* are able to define the NDEF message, this approach is more flexible and even allows multiple
|
||||
cards/tags to share the same message.
|
||||
|
||||
See Also
|
||||
--------
|
||||
|
||||
- :doc:`index`
|
||||
- :doc:`pn532`
|
||||
- :doc:`../pn7150`
|
||||
- :doc:`../pn7160`
|
||||
- :apiref:`pn532/pn532.h`
|
||||
- :apiref:`pn7150/pn7150.h`
|
||||
- :apiref:`pn7160/pn7160.h`
|
||||
- :ghedit:`Edit`
|
@ -38,11 +38,13 @@ to discover available client devices.
|
||||
ble_client:
|
||||
- mac_address: FF:FF:20:00:0F:15
|
||||
id: itag_black
|
||||
auto_connect: true
|
||||
|
||||
Configuration variables:
|
||||
------------------------
|
||||
|
||||
- **mac_address** (**Required**, MAC Address): The MAC address of the BLE device to connect to.
|
||||
- **auto_connect** (*Optional*, boolean): If true the device will be automatically connected when found by the :doc:`/components/esp32_ble_tracker`. Defaults to true.
|
||||
- **id** (**Required**, :ref:`config-id`): The ID to use for code generation, and for reference by dependent components.
|
||||
|
||||
Automations:
|
||||
@ -153,6 +155,57 @@ This automation is triggered when a numeric comparison is requested by the BLE d
|
||||
id: ble_itag
|
||||
accept: True
|
||||
|
||||
.. _ble_client-connect_action:
|
||||
|
||||
``ble_client.connect`` Action
|
||||
-----------------------------
|
||||
|
||||
This action is useful only for devices with ``auto_connect: false`` and allows a connection to be made from
|
||||
within an automation. Once connected other actions like ``ble_write`` can be used. This is useful where
|
||||
a BLE server needs only to be interacted with occasionally, and thus does not need a constant
|
||||
connection held.
|
||||
|
||||
The following example updates the time of a Xiaomi MHO-C303 clock once per hour. Note that the BLE tracker must
|
||||
be stopped during the connect attempt, and restarted afterwards. This would not be necessary if the tracker had
|
||||
``continuous: false`` set. In this example scenario there is another BLE device that does require the scanner to be
|
||||
on, hence the stop and start of the scan during connect.
|
||||
|
||||
.. code-block:: yaml
|
||||
|
||||
ble_client:
|
||||
- id: ble_clock
|
||||
mac_address: 17:75:BC:F2:94:4D
|
||||
auto_connect: false
|
||||
- id: other_device
|
||||
mac_address: 0D:33:12:66:00:D4
|
||||
|
||||
interval:
|
||||
- interval: 60min
|
||||
then:
|
||||
- esp32_ble_tracker.stop_scan:
|
||||
- ble_client.connect: ble_clock
|
||||
- ble_client.ble_write:
|
||||
id: ble_clock
|
||||
service_uuid: EBE0CCB0-7A0A-4B0C-8A1A-6FF2997DA3A6
|
||||
characteristic_uuid: EBE0CCB7-7A0A-4B0C-8A1A-6FF2997DA3A6
|
||||
value: !lambda |-
|
||||
uint32_t t = id(sntp_time).now().timestamp + ESPTime::timezone_offset();
|
||||
return {(uint8_t)t, (uint8_t)(t >> 8), (uint8_t)(t >> 16), (uint8_t)(t >> 24), 0};
|
||||
- ble_client.disconnect: ble_clock
|
||||
- esp32_ble_tracker.start_scan:
|
||||
|
||||
Any actions after the ``connect`` action will proceed only after the connect succeeds. If the connect
|
||||
fails the subsequent actions in the automation block will *not* be executed. This should be considered
|
||||
if scanning has been stopped - another mechanism may be required to restart it.
|
||||
|
||||
.. _ble_client-disconnect_action:
|
||||
|
||||
``ble_client.disconnect`` Action
|
||||
--------------------------------
|
||||
|
||||
This action disconnects a device that was connected with the ``ble_client.connect`` action.
|
||||
Execution of the automation block sequence resumes after the disconnect has completed.
|
||||
|
||||
.. _ble_client-ble_write_action:
|
||||
|
||||
``ble_client.ble_write`` Action
|
||||
@ -161,6 +214,8 @@ This automation is triggered when a numeric comparison is requested by the BLE d
|
||||
This action triggers a write to a specified BLE characteristic. The write is attempted in
|
||||
a best-effort fashion and will only succeed if the ``ble_client``'s connection has been
|
||||
established and the peripheral exposes the expected BLE service and characteristic.
|
||||
Execution of the automation block sequence resumes after the write has completed. A write failure will *not*
|
||||
stop execution of succeeding actions (this allows a disconnect to be executed, for example.)
|
||||
|
||||
Example usage:
|
||||
|
||||
|
@ -2,14 +2,14 @@ Haier Climate
|
||||
=============
|
||||
|
||||
.. seo::
|
||||
:description: Instructions for setting up a Haier climate devices.
|
||||
:description: Instructions for setting up Haier climate devices.
|
||||
:image: air-conditioner.svg
|
||||
|
||||
This is an implementation of the ESPHome component to control HVAC on the base of the SmartAir2 and hOn Haier protocols (AC that is controlled by the hOn or SmartAir2 application).
|
||||
|
||||
There are two versions of the Haier protocol. The older one is using an application called SmartAir2 and the newer one - an application called hOn. Both protocols are compatible on the transport level but have different commands to control appliances.
|
||||
There are two versions of the Haier protocol: the older version uses an application called SmartAir2 while the newer version uses an application called hOn. Both protocols are compatible on the transport level but utilize different commands to control appliances.
|
||||
|
||||
Older Haier models controlled by the SmartAir2 application are using the KZW-W002 module. This module can’t be reused, and you need to replace it with an ESP (RPI pico w) module. The USB connector on a board doesn’t support the USB protocol. It is a UART port that just uses a USB connector. To connect the ESP board to your AC you can cut a USB type A cable and connect wires to the climate connector.
|
||||
Older Haier models controlled by the SmartAir2 application are using the KZW-W002 module. This module can’t be reused, and you need to replace it with an ESP or RPI Pico W module. The USB connector on the board doesn’t support the USB protocol. It is a UART port that just uses a USB connector. To connect the ESP board to your AC you can cut a USB type A cable and connect wires to the climate connector.
|
||||
|
||||
.. list-table:: Haier UART pinout
|
||||
:header-rows: 1
|
||||
@ -43,7 +43,7 @@ Older Haier models controlled by the SmartAir2 application are using the KZW-W00
|
||||
|
||||
Newer Haier models using a module called ESP32-for-Haier. It is an ESP32 single-core board with an ESP32-S0WD chip. In some cases, you can reuse this module and flash it with ESPHome, but some new modules don’t support this. They look the same but have encryption enabled.
|
||||
|
||||
**Warning!** The new generation of ESP32-Haier devices has encryption enabled, so they can only be flashed with firmware that is signed with a private key. There is no way to make them work with ESPHome, so if you try to do it, the board will get into a boot loop with error ``rst:0x10 (RTCWDT_RTC_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT)`` The only way to recover this board is to flash it with the original image. So before starting your experiments make a backup image.
|
||||
**Warning!** The new generation of ESP32-Haier devices has encryption enabled, so they can only be flashed with firmware that is signed with a private key. There is no way to make them work with ESPHome, so if you try to do it, the board will get into a boot loop with the error ``rst:0x10 (RTCWDT_RTC_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT)`` The only way to recover this board is to flash it with the original image. So before starting your experiments make a backup image.
|
||||
|
||||
.. figure:: images/haier_pinout.jpg
|
||||
:align: center
|
||||
@ -51,7 +51,7 @@ Newer Haier models using a module called ESP32-for-Haier. It is an ESP32 single-
|
||||
|
||||
ESP32-for-Haier UART0 pinout
|
||||
|
||||
Also, you can use any other ESP32, ESP8266 or a RPI pico W board. In this case, you will need to cut the original wire or make a connector yourself (the board has a JST SM04B-GHS-TB connector)
|
||||
Also, you can use any other ESP32, ESP8266, or an RPI pico W board. In this case, you will need to cut the original wire or make a connector yourself (the board has a JST SM04B-GHS-TB connector)
|
||||
|
||||
This component requires a :ref:`uart` to be setup.
|
||||
|
||||
@ -92,10 +92,23 @@ This component requires a :ref:`uart` to be setup.
|
||||
- VERTICAL
|
||||
- HORIZONTAL
|
||||
- BOTH
|
||||
supported_presets:
|
||||
- ECO
|
||||
- BOOST
|
||||
- SLEEP
|
||||
supported_presets:
|
||||
- AWAY
|
||||
- ECO
|
||||
- BOOST
|
||||
- SLEEP
|
||||
on_alarm_start:
|
||||
then:
|
||||
- logger.log:
|
||||
level: WARN
|
||||
format: "Alarm activated. Code: %d. Message: \"%s\""
|
||||
args: [ code, message]
|
||||
on_alarm_end:
|
||||
then:
|
||||
- logger.log:
|
||||
level: INFO
|
||||
format: "Alarm deactivated. Code: %d. Message: \"%s\""
|
||||
args: [ code, message]
|
||||
|
||||
|
||||
Configuration variables:
|
||||
@ -103,14 +116,14 @@ Configuration variables:
|
||||
|
||||
- **id** (*Optional*, :ref:`config-id`): Manually specify the ID used for code generation.
|
||||
- **uart_id** (*Optional*, :ref:`config-id`): ID of the UART port to communicate with AC.
|
||||
- **protocol** (*Optional*, string): Defines protocol of communication with AC. Possible values: hon or smartair2. Default value is smartair2.
|
||||
- **protocol** (*Optional*, string): Defines communication protocol with AC. Possible values: hon or smartair2. The default value is smartair2.
|
||||
- **name** (**Required**, string): The name of the climate device.
|
||||
- **wifi_signal** (*Optional*, boolean): If true - send wifi signal level to AC.
|
||||
- **answer_timeout** (*Optional*, :ref:`config-time`): Responce timeout. Default value is 200ms.
|
||||
- **answer_timeout** (*Optional*, :ref:`config-time`): Responce timeout. The default value is 200ms.
|
||||
- **alternative_swing_control** (*Optional*, boolean): (supported by smartAir2 only) If true - use alternative values to control swing mode. Use only if the original control method is not working for your AC.
|
||||
- **control_packet_size** (*Optional*, int): (supported only by hOn) Define the size of the control packet. Can help with some newer models of ACs that use bigger packets. Default value: 10.
|
||||
- **control_packet_size** (*Optional*, int): (supported only by hOn) Define the size of the control packet. Can help with some newer models of ACs that use bigger packets. The default value: 10.
|
||||
- **control_method** (*Optional*, list): (supported only by hOn) Defines control method (should be supported by AC). Supported values: MONITOR_ONLY - no control, just monitor status, SET_GROUP_PARAMETERS - set all AC parameters with one command (default method), SET_SINGLE_PARAMETER - set each parameter individually (this method is supported by some new ceiling ACs like AD71S2SM3FA)
|
||||
- **display** (*Optional*, boolean): Can be used to set AC display off.
|
||||
- **display** (*Optional*, boolean): Can be used to set the AC display off.
|
||||
- **beeper** (*Optional*, boolean): Can be used to disable beeping on commands from AC. Supported only by hOn protocol.
|
||||
- **outdoor_temperature** (*Optional*): Temperature sensor for outdoor temperature. Supported only by hOn protocol.
|
||||
|
||||
@ -119,14 +132,52 @@ Configuration variables:
|
||||
- All other options from :ref:`Sensor <config-sensor>`.
|
||||
- **supported_modes** (*Optional*, list): Can be used to disable some of AC modes. Possible values: 'OFF', HEAT_COOL, COOL, HEAT, DRY, FAN_ONLY
|
||||
- **supported_swing_modes** (*Optional*, list): Can be used to disable some swing modes if your AC does not support it. Possible values: 'OFF', VERTICAL, HORIZONTAL, BOTH
|
||||
- **supported_presets** (*Optional*, list): Can be used to disable some presets. Possible values for smartair2 are: BOOST, COMFORT. Possible values for hOn are: ECO, BOOST, SLEEP
|
||||
- **supported_presets** (*Optional*, list): Can be used to disable some presets. Possible values for smartair2 are: AWAY, BOOST, COMFORT. Possible values for hOn are: AWAY, ECO, BOOST, SLEEP. AWAY preset can be enabled only in HEAT mode, it is disabled by default
|
||||
- **on_alarm_start (Optional, :ref:`Automation <automation>`):** (supported only by hOn) Automation to perform when AC activates a new alarm. See :ref:`haier-on_alarm_start`
|
||||
- **on_alarm_end (Optional, :ref:`Automation <automation>`):** (supported only by hOn) Automation to perform when AC deactivates a new alarm. See :ref:`haier-on_alarm_end`
|
||||
- All other options from :ref:`Climate <config-climate>`.
|
||||
|
||||
Automations
|
||||
-----------
|
||||
|
||||
climate.haier.power_on Action
|
||||
*****************************
|
||||
.. _haier-on_alarm_start:
|
||||
|
||||
``on_alarm_start`` Trigger
|
||||
**************************
|
||||
|
||||
This automation will be triggered when a new alarm is activated by AC. The error code of the alarm will be given in the variable "code" (type uint8_t), error message in the variable "message" (type char*). Those variables can be used in :ref:`lambdas <config-lambda>`
|
||||
|
||||
.. code-block:: yaml
|
||||
|
||||
climate:
|
||||
- protocol: hOn
|
||||
on_alarm_start:
|
||||
then:
|
||||
- logger.log:
|
||||
level: WARN
|
||||
format: "Alarm activated. Code: %d. Message: \"%s\""
|
||||
args: [ code, message]
|
||||
|
||||
.. _haier-on_alarm_end:
|
||||
|
||||
``on_alarm_end`` Trigger
|
||||
************************
|
||||
|
||||
This automation will be triggered when a previously activated alarm is deactivated by AC. The error code of the alarm will be given in the variable "code" (type uint8_t), error message in the variable "message" (type char*). Those variables can be used in :ref:`lambdas <config-lambda>`
|
||||
|
||||
.. code-block:: yaml
|
||||
|
||||
climate:
|
||||
- protocol: hOn
|
||||
on_alarm_end:
|
||||
then:
|
||||
- logger.log:
|
||||
level: INFO
|
||||
format: "Alarm deactivated. Code: %d. Message: \"%s\""
|
||||
args: [ code, message]
|
||||
|
||||
``climate.haier.power_on`` Action
|
||||
*********************************
|
||||
|
||||
This action turns AC power on.
|
||||
|
||||
@ -136,8 +187,8 @@ This action turns AC power on.
|
||||
then:
|
||||
climate.haier.power_on: device_id
|
||||
|
||||
climate.haier.power_off Action
|
||||
******************************
|
||||
``climate.haier.power_off`` Action
|
||||
**********************************
|
||||
|
||||
This action turns AC power off
|
||||
|
||||
@ -147,8 +198,8 @@ This action turns AC power off
|
||||
then:
|
||||
climate.haier.power_off: device_id
|
||||
|
||||
climate.haier.power_toggle Action
|
||||
*********************************
|
||||
``climate.haier.power_toggle`` Action
|
||||
*************************************
|
||||
|
||||
This action toggles AC power
|
||||
|
||||
@ -158,8 +209,8 @@ This action toggles AC power
|
||||
then:
|
||||
climate.haier.power_toggle: device_id
|
||||
|
||||
climate.haier.display_on Action
|
||||
*******************************
|
||||
``climate.haier.display_on`` Action
|
||||
***********************************
|
||||
|
||||
This action turns the AC display on
|
||||
|
||||
@ -169,8 +220,8 @@ This action turns the AC display on
|
||||
then:
|
||||
climate.haier.display_on: device_id
|
||||
|
||||
climate.haier.display_off Action
|
||||
********************************
|
||||
``climate.haier.display_off`` Action
|
||||
************************************
|
||||
|
||||
This action turns the AC display off
|
||||
|
||||
@ -180,8 +231,8 @@ This action turns the AC display off
|
||||
then:
|
||||
climate.haier.display_off: device_id
|
||||
|
||||
climate.haier.health_on Action
|
||||
******************************
|
||||
``climate.haier.health_on`` Action
|
||||
**********************************
|
||||
|
||||
Turn on health mode (`UV light sterilization <https://www.haierhvac.eu/en/node/1809>`__)
|
||||
|
||||
@ -191,8 +242,8 @@ Turn on health mode (`UV light sterilization <https://www.haierhvac.eu/en/node/1
|
||||
then:
|
||||
climate.haier.health_on: device_id
|
||||
|
||||
climate.haier.health_off Action
|
||||
*******************************
|
||||
``climate.haier.health_off`` Action
|
||||
***********************************
|
||||
|
||||
Turn off health mode
|
||||
|
||||
@ -202,8 +253,8 @@ Turn off health mode
|
||||
then:
|
||||
climate.haier.health_off: device_id
|
||||
|
||||
climate.haier.beeper_on Action
|
||||
******************************
|
||||
``climate.haier.beeper_on`` Action
|
||||
**********************************
|
||||
|
||||
(supported only by hOn) This action enables beep feedback on every command sent to AC
|
||||
|
||||
@ -213,8 +264,8 @@ climate.haier.beeper_on Action
|
||||
then:
|
||||
climate.haier.beeper_on: device_id
|
||||
|
||||
climate.haier.beeper_off Action
|
||||
*******************************
|
||||
``climate.haier.beeper_off`` Action
|
||||
***********************************
|
||||
|
||||
(supported only by hOn) This action disables beep feedback on every command sent to AC (keep in mind that this will not work for IR remote commands)
|
||||
|
||||
@ -224,8 +275,8 @@ climate.haier.beeper_off Action
|
||||
then:
|
||||
climate.haier.beeper_off: device_id
|
||||
|
||||
climate.haier.set_vertical_airflow Action
|
||||
*****************************************
|
||||
``climate.haier.set_vertical_airflow`` Action
|
||||
*********************************************
|
||||
|
||||
(supported only by hOn) Set direction for vertical airflow if the vertical swing is disabled. Possible values: Health_Up, Max_Up, Up, Center, Down, Health_Down.
|
||||
|
||||
@ -237,8 +288,8 @@ climate.haier.set_vertical_airflow Action
|
||||
id: device_id
|
||||
vertical_airflow: Up
|
||||
|
||||
climate.haier.set_horizontal_airflow Action
|
||||
*******************************************
|
||||
``climate.haier.set_horizontal_airflow`` Action
|
||||
***********************************************
|
||||
|
||||
(supported only by hOn) Set direction for horizontal airflow if the horizontal swing is disabled. Possible values: Max_Left, Left, Center, Right, Max_Right.
|
||||
|
||||
@ -250,8 +301,8 @@ climate.haier.set_horizontal_airflow Action
|
||||
id: device_id
|
||||
vertical_airflow: Right
|
||||
|
||||
climate.haier.start_self_cleaning Action
|
||||
****************************************
|
||||
``climate.haier.start_self_cleaning`` Action
|
||||
********************************************
|
||||
|
||||
(supported only by hOn) Start `self-cleaning <https://www.haier.com/in/blogs/beat-the-summer-heat-with-haier-self-cleaning-ac.shtml>`__
|
||||
|
||||
@ -261,8 +312,8 @@ climate.haier.start_self_cleaning Action
|
||||
then:
|
||||
- climate.haier.start_self_cleaning: device_id
|
||||
|
||||
climate.haier.start_steri_cleaning Action
|
||||
*****************************************
|
||||
``climate.haier.start_steri_cleaning`` Action
|
||||
*********************************************
|
||||
|
||||
(supported only by hOn) Start 56°C steri-cleaning
|
||||
|
||||
|
@ -24,18 +24,20 @@ With this display driver you can control the following displays:
|
||||
- ST7789V
|
||||
- TFT 2.4
|
||||
- TFT 2.4R
|
||||
- WAVESHARE_RES_3_5 (Waveshare Pico-ResTouch-LCD-3.5)
|
||||
|
||||
More display drivers will come in the future.
|
||||
|
||||
Usage
|
||||
-----
|
||||
This component is the successor of the ILI9341 component allowing to control more display drivers and use 16bit colors when enough free ram.
|
||||
This component is the successor of the ILI9341 component supporting more display driver chips from the ILI and related
|
||||
families.
|
||||
|
||||
The ``ILI9xxx`` display platform allows you to use
|
||||
ILI9341 (`datasheet <https://cdn-shop.adafruit.com/datasheets/ILI9341.pdf>`__,
|
||||
`Aliexpress <https://www.aliexpress.com/af/Ili9341.html>`__) and other
|
||||
displays from the same chip family with ESPHome. As this is a somewhat higher resolution display and may require pins
|
||||
beyond the typical SPI connections, it is better suited for use with the ESP32.
|
||||
displays from the same chip family with ESPHome. As this is a somewhat higher resolution display and requires additional pins
|
||||
beyond the basic SPI connections, and a reasonable amount of RAM, it is not well suited for the ESP8266.
|
||||
|
||||
**Note:** use of 16 bit colors requires double the amount of RAM as 8 bit, and may need PSRAM to be available.
|
||||
|
||||
@ -63,7 +65,7 @@ Configuration variables:
|
||||
|
||||
- **model** (**Required**): The model of the display. Options are:
|
||||
|
||||
- ``M5STACK``, ``TFT 2.4``, ``TFT 2.4R``, ``S3BOX``, ``S3BOX_LITE``
|
||||
- ``M5STACK``, ``TFT 2.4``, ``TFT 2.4R``, ``S3BOX``, ``S3BOX_LITE``, ``WSPICOLCD``
|
||||
- ``ILI9341``, ``ILI9342``, ``ILI9486``, ``ILI9488``, ``ILI9488_A`` (alternative gamma configuration for ILI9488)
|
||||
- ``ILI9481``, ``ILI9481-18`` (18 bit mode)
|
||||
- ``ST7789V``, ``ST7796``
|
||||
@ -95,6 +97,7 @@ Configuration variables:
|
||||
- **data_rate** (*Optional*): Set the data rate of the SPI interface to the display. One of ``80MHz``, ``40MHz`` (default), ``20MHz``, ``10MHz``, ``5MHz``, ``2MHz``, ``1MHz``, ``200kHz``, ``75kHz`` or ``1kHz``. If you have multiple ILI9xxx displays they must all use the same **data_rate**.
|
||||
- **spi_mode** (*Optional*): Set the mode for the SPI interface to the display. Default is ``MODE0`` but some displays require ``MODE3``.
|
||||
- **invert_colors** (*Optional*): With this boolean option you can invert the display colors. **Note** some of the displays have this option set automatically to true and can't be changed.
|
||||
- **18bit_mode** (*Optional*): With this boolean option you can manual enable or disable the 18 bit color mode.
|
||||
- **rotation** (*Optional*): Rotate the display presentation in software. Choose one of ``0°``, ``90°``, ``180°``, or ``270°``. This option cannot be used with ``transform``.
|
||||
- **transform** (*Optional*): Transform the display presentation using hardware. All defaults are ``false``. This option cannot be used with ``rotation``.
|
||||
|
||||
@ -103,7 +106,8 @@ Configuration variables:
|
||||
- **mirror_y** (*Optional*, boolean): If true, mirror the y axis.
|
||||
|
||||
|
||||
**Note:** To rotate the display in hardware use one of the following combinations:
|
||||
**Note:** To rotate the display in hardware use one of the following combinations - with 90 and 270 rotations you
|
||||
will also need to use `dimensions:` to swap the height and width (see example below.)
|
||||
|
||||
- 90 degrees - use ``swap_xy`` with ``mirror_x``
|
||||
- 180 degrees - use ``mirror_x`` with ``mirror_y``
|
||||
@ -113,6 +117,21 @@ Configuration variables:
|
||||
Configuration examples
|
||||
**********************
|
||||
|
||||
To use hardware rotation, use both ``dimensions`` and ``transform``, e.g. this config will turn a landscape display with
|
||||
height 320 and width 480 into portrait. Note that the dimensions are those of the final display.
|
||||
|
||||
.. code-block:: yaml
|
||||
|
||||
transform:
|
||||
swap_xy: true
|
||||
mirror_x: true
|
||||
dimensions:
|
||||
height: 480
|
||||
width: 320
|
||||
|
||||
|
||||
|
||||
|
||||
To utilize the color capabilities of this display module, you'll likely want to add a ``color:`` section to your
|
||||
YAML configuration; please see :ref:`color <config-color>` for more detail on this configuration section.
|
||||
|
||||
|
BIN
components/display/images/st7567-full.jpg
Normal file
After Width: | Height: | Size: 77 KiB |
@ -95,6 +95,12 @@ and circles:
|
||||
// ... and the same thing filled again
|
||||
it.filled_circle(25, 25, 10);
|
||||
|
||||
// Triangles... Let's draw the outline of a triangle from the [x,y] coordinates of its three points
|
||||
// [25,5], [5,25], [50,50]
|
||||
it.triangle(25, 5, 5, 25, 50, 50);
|
||||
// and a filled triangle !
|
||||
it.filled_triangle(125, 5, 105, 25, 150, 50);
|
||||
|
||||
All the above methods can optionally also be called with an argument at the end which specifies in which
|
||||
color to draw. For monochrome displays, only ``COLOR_ON`` (the default if color is not given) and ``COLOR_OFF`` are supported.
|
||||
|
||||
@ -233,7 +239,7 @@ Configuration variables:
|
||||
here will be compiled into the binary. Adjust this if you need some special characters or want to
|
||||
reduce the size of the binary if you don't plan to use some glyphs. The items in the list can also
|
||||
be more than one character long if you for example want to use font ligatures. Defaults to
|
||||
``!"%()+=,-_.:°0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz``.
|
||||
``!"%()+=,-_.:°/?0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz``.
|
||||
|
||||
|
||||
.. note::
|
||||
@ -552,6 +558,7 @@ Graph component with options for grids, border and line-types.
|
||||
color: my_red
|
||||
- sensor: my_outside_temperature
|
||||
line_type: SOLID
|
||||
continuous: true
|
||||
line_thickness: 3
|
||||
color: my_blue
|
||||
- sensor: my_beer_temperature
|
||||
@ -580,6 +587,7 @@ Trace specific fields:
|
||||
- **sensor** (*Optional*, :ref:`config-id`): The sensor value to plot
|
||||
- **line_thickness** (*Optional*): Defaults to 3
|
||||
- **line_type** (*Optional*): Specifies the plot line-type. Can be one of the following: ``SOLID``, ``DOTTED``, ``DASHED``. Defaults to ``SOLID``.
|
||||
- **continuous** (*Optional*): connects the individual points to make a continuous line. Defaults to ``false``.
|
||||
- **color** (*Optional*): Sets the color of the sensor trace.
|
||||
|
||||
And then later in code:
|
||||
|
191
components/display/st7567.rst
Normal file
@ -0,0 +1,191 @@
|
||||
ST7567 LCD Graphic Display
|
||||
==========================
|
||||
|
||||
.. seo::
|
||||
:description: Instructions for setting up ST7567 Mono STN-LCD display drivers.
|
||||
:image: st7567.jpg
|
||||
|
||||
.. _st7567:
|
||||
|
||||
Usage
|
||||
-----
|
||||
|
||||
The ``st7567`` display platform allows you to use wide range of 128x64 display modules based on
|
||||
Sitronix ST7567 chipset family (ST7567A, ST7567S, ST7567G, etc.) (`datasheet <https://github.com/latonita/datasheets-storage/blob/main/lcd-modules/ST7567A_V1.2b.pdf>`__,
|
||||
`Sitronix <https://www.sitronix.com.tw/en/products/industrial-display-driver-ic/mono-stn-lcd-driver-ic/>`__,
|
||||
`Aliexpress <https://www.aliexpress.com/af/st7567s.html>`__) with ESPHome.
|
||||
|
||||
Note that this component is for displays that are connected via the :ref:`I²C Bus <i2c>` (see :ref:`st7567-i2c`)
|
||||
or 3-Wire or 4-Wire :ref:`SPI bus <spi>` (see :ref:`st7567-spi`).
|
||||
It's a monochrome LCD graphic display.
|
||||
|
||||
.. figure:: images/st7567-full.jpg
|
||||
:align: center
|
||||
:width: 75.0%
|
||||
|
||||
ST7567A based LCD Graphic Display (I²C)
|
||||
|
||||
.. note::
|
||||
|
||||
**Voltage:** Check your module specs for required power. Most of the modules are tolerant to range of voltages from 3.3V to 5V, but some might require either 5V or 3.3V.
|
||||
|
||||
**Electrical interference:** To reduce malfunction caused by noise, datasheet recommends to "use the refresh sequence regularly in a specified interval".
|
||||
|
||||
Noone knows what exact interval is - it varies based on your electrical environment - some might need it every hour, for example.
|
||||
Without doing refresh sequence picture on LCD might get glitchy after some time.
|
||||
|
||||
You can plan refresh by using ``interval:`` section and calling ``request_refresh()`` function, after that it will perform display
|
||||
refresh sequence on next component update.
|
||||
|
||||
|
||||
.. _st7567-i2c:
|
||||
|
||||
Over I²C
|
||||
--------
|
||||
|
||||
Connect ``SDA`` and ``SCL`` pins on a module to pins you chose for the :ref:`I²C Bus <i2c>`.
|
||||
If your display module has ``RESET`` pin you may optionally connect it to a pin on the
|
||||
ESP which may improve reliability. For power, connect ``VCC`` to 3.3V and ``GND`` to ``GND``.
|
||||
|
||||
|
||||
.. code-block:: yaml
|
||||
|
||||
# Example minimal configuration entry
|
||||
i2c:
|
||||
sda: D1
|
||||
scl: D2
|
||||
|
||||
display:
|
||||
- platform: st7567_i2c
|
||||
id: my_display
|
||||
lambda: |-
|
||||
it.print(0, 0, id(my_font), "Hello World!");
|
||||
|
||||
interval:
|
||||
- interval: 1h
|
||||
then:
|
||||
- lambda: id(my_display).request_refresh();
|
||||
|
||||
|
||||
Configuration variables:
|
||||
************************
|
||||
|
||||
- **address** (*Optional*, int): Manually specify the :ref:`I²C <i2c>` address of the display. Defaults to 0x3F.
|
||||
- **i2c_id** (*Optional*, :ref:`config-id`): Manually specify the ID of the :ref:`I²C Component <i2c>` if you want
|
||||
to use multiple I²C buses.
|
||||
- **reset_pin** (*Optional*, :ref:`Pin Schema <config-pin_schema>`): The RESET pin. Defaults to not connected.
|
||||
- **id** (*Optional*, :ref:`config-id`): Manually specify the ID used for code generation.
|
||||
- **update_interval** (*Optional*, :ref:`config-time`): The interval to re-draw the screen. Defaults to ``1s``.
|
||||
- **pages** (*Optional*, list): Show pages instead of a single lambda. See :ref:`display-pages`.
|
||||
- **lambda** (*Optional*, :ref:`lambda <config-lambda>`): The lambda to use for rendering the content on the display.
|
||||
- **invert_colors** (*Optional*, boolean): Display hardware color invesion. Defaults to ``false``.
|
||||
- **rotation** (*Optional*): Set the rotation of the display. Everything you draw in ``lambda:`` will be rotated
|
||||
by this option. One of ``0°`` (default), ``90°``, ``180°``, ``270°``.
|
||||
- **transform** (*Optional*): Transform the display presentation using hardware. All defaults are ``false``.
|
||||
- **mirror_x** (*Optional*, boolean): If true, mirror the physical X axis.
|
||||
- **mirror_y** (*Optional*, boolean): If true, mirror the physical Y axis.
|
||||
|
||||
|
||||
**Speeding up the bus:** To speed up the display update process you can select higher I²C frequencies, for example:
|
||||
|
||||
.. code-block:: yaml
|
||||
|
||||
# Example increased I²C bus speed
|
||||
i2c:
|
||||
sda: D1
|
||||
scl: D2
|
||||
frequency: 400kHz
|
||||
|
||||
**Hardware rotation:** 180 degree rotation can be implemented in hardware as in the following example:
|
||||
|
||||
.. code-block:: yaml
|
||||
|
||||
# Example using transform section to achieve 180° rotation using hardware
|
||||
display:
|
||||
- platform: st7567_i2c
|
||||
id: my_display
|
||||
transform:
|
||||
mirror_x: true
|
||||
mirror_y: true
|
||||
lambda: |-
|
||||
it.print(0, 0, id(my_font), "Hello World!");
|
||||
|
||||
|
||||
.. _st7567-spi:
|
||||
|
||||
Over SPI
|
||||
--------
|
||||
|
||||
Connect ``D0`` to the ``CLK`` pin you chose for the :ref:`SPI bus <spi>`, connect ``D1`` to the ``MOSI`` pin and ``DC`` and ``CS``
|
||||
to some GPIO pins on the ESP. For power, connect ``VCC`` to 3.3V and ``GND`` to ``GND``.
|
||||
Optionally you can also connect the ``RESET`` pin to a pin on the ESP which may improve reliability.
|
||||
|
||||
.. code-block:: yaml
|
||||
|
||||
# Example minimal configuration entry
|
||||
spi:
|
||||
clk_pin: D1
|
||||
mosi_pin: D2
|
||||
|
||||
display:
|
||||
- platform: st7567_spi
|
||||
id: my_display
|
||||
dc_pin: D3
|
||||
lambda: |-
|
||||
it.print(0, 0, id(my_font), "Hello World!");
|
||||
|
||||
interval:
|
||||
- interval: 1h
|
||||
then:
|
||||
- lambda: id(my_display).request_refresh();
|
||||
|
||||
|
||||
Configuration variables:
|
||||
************************
|
||||
|
||||
- **dc_pin** (**Required**, :ref:`Pin Schema <config-pin_schema>`): The DC pin.
|
||||
- **cs_pin** (*Optional*, :ref:`Pin Schema <config-pin_schema>`): The Chip Select (CS) pin.
|
||||
- **reset_pin** (*Optional*, :ref:`Pin Schema <config-pin_schema>`): The RESET pin. Defaults to not connected.
|
||||
- **spi_id** (*Optional*, :ref:`config-id`): Manually specify the ID of the :ref:`SPI Component <spi>` if you want
|
||||
to use multiple SPI buses.
|
||||
- **id** (*Optional*, :ref:`config-id`): Manually specify the ID used for code generation.
|
||||
- **update_interval** (*Optional*, :ref:`config-time`): The interval to re-draw the screen. Defaults to ``1s``.
|
||||
|
||||
- **pages** (*Optional*, list): Show pages instead of a single lambda. See :ref:`display-pages`.
|
||||
- **lambda** (*Optional*, :ref:`lambda <config-lambda>`): The lambda to use for rendering the content on the display.
|
||||
- **invert_colors** (*Optional*, boolean): Display hardware color invesion. Defaults to ``false``.
|
||||
- **rotation** (*Optional*): Set the rotation of the display. Everything you draw in ``lambda:`` will be rotated
|
||||
by this option. One of ``0°`` (default), ``90°``, ``180°``, ``270°``.
|
||||
- **transform** (*Optional*): Transform the display presentation using hardware. All defaults are ``false``.
|
||||
- **mirror_x** (*Optional*, boolean): If true, mirror the physical X axis.
|
||||
- **mirror_y** (*Optional*, boolean): If true, mirror the physical Y axis.
|
||||
|
||||
|
||||
**Hardware rotation:** 180 degree rotation can be implemented in hardware as in the following example:
|
||||
|
||||
.. code-block:: yaml
|
||||
|
||||
# Example using transform section to achieve 180° rotation using hardware
|
||||
display:
|
||||
- platform: st7567_spi
|
||||
id: my_display
|
||||
dc_pin: D3
|
||||
transform:
|
||||
mirror_x: true
|
||||
mirror_y: true
|
||||
lambda: |-
|
||||
it.print(0, 0, id(my_font), "Hello World!");
|
||||
|
||||
|
||||
|
||||
|
||||
See Also
|
||||
--------
|
||||
|
||||
- :doc:`index`
|
||||
- :ref:`display-engine`
|
||||
- :ref:`Display Menu <display_menu>`
|
||||
- :ref:`i2c`
|
||||
- :ref:`spi`
|
||||
- :apiref:`st7567/st7567.h`
|
||||
- :ghedit:`Edit`
|
@ -78,6 +78,7 @@ If you do specify them they will override any default.
|
||||
- ``Adafruit RR 280x240`` (round-rectangular display -- some pixels are "deleted" from corners to form rounded shape)
|
||||
- ``Adafruit S2 TFT FEATHER 240X135``
|
||||
- ``LILYGO T-Embed 170X320``
|
||||
- ``Waveshare 1.47in 172X320`` (round-rectangular display -- some pixels are "deleted" from corners to form rounded shape)
|
||||
- ``Custom`` For other displays not listed above
|
||||
|
||||
- **height** (**Required**, int): Sets height of display in pixels. Defaults depends ``model``.
|
||||
@ -183,6 +184,16 @@ Items marked RQ are hardware dependent but required and not preset. Items marked
|
||||
- 46
|
||||
- 12
|
||||
- 11
|
||||
* - Waveshare 1.47in 172X320
|
||||
- 320/172
|
||||
- 34/0
|
||||
- 21
|
||||
- 22
|
||||
- 23
|
||||
- 4
|
||||
-
|
||||
- 18
|
||||
- 19
|
||||
* - Custom
|
||||
- RQ
|
||||
- RQ
|
||||
|
@ -88,10 +88,15 @@ Configuration variables:
|
||||
- ``2.13in-ttgo-b74`` - T5_V2.3.1 with B74 display tested
|
||||
- ``2.13in-ttgo-b1`` - T5_V2.3 with B1 display tested
|
||||
- ``2.13in-ttgo-dke`` - T5_V2.3 with DKE group display (DEPG0213BN) tested
|
||||
- ``2.13inv3`` - 2.13in V3 display (Pico e-Paper 2.13v3)
|
||||
- ``2.70in`` - currently not working with the HAT Rev 2.1 version
|
||||
- ``2.70inv2``
|
||||
- ``2.70in-b`` - Black/White/Red
|
||||
- ``2.70in-bv2`` - Black/White/Red
|
||||
- ``2.90in``
|
||||
- ``2.90inv2``
|
||||
- ``2.90in-b`` - B/W rendering only
|
||||
- ``2.90in-bV3`` - B/W rendering only
|
||||
- ``4.20in``
|
||||
- ``4.20in-bV2`` - B/W rendering only
|
||||
- ``5.83in``
|
||||
|
@ -38,10 +38,16 @@ If available on your reader model, it's recommended to connect 3.3VT (touch indu
|
||||
# Declare Grow Fingerprint Reader
|
||||
fingerprint_grow:
|
||||
sensing_pin: GPIO12
|
||||
on_finger_scan_start:
|
||||
...
|
||||
on_finger_scan_matched:
|
||||
...
|
||||
on_finger_scan_unmatched:
|
||||
...
|
||||
on_finger_scan_misplaced:
|
||||
...
|
||||
on_finger_scan_invalid:
|
||||
...
|
||||
on_enrollment_scan:
|
||||
...
|
||||
on_enrollment_done:
|
||||
@ -62,8 +68,11 @@ Base Configuration:
|
||||
- **sensing_pin** (*Optional*, :ref:`Pin Schema <config-pin_schema>`): Pin connected to the reader's finger detection signal (WAKEUP) output.
|
||||
- **password** (*Optional*, int): Password to use for authentication. Defaults to ``0x00``.
|
||||
- **new_password** (*Optional*, int): Sets a new password to use for authentication. See :ref:`fingerprint_grow-set_new_password` for more information.
|
||||
- **on_finger_scan_start** (*Optional*, :ref:`Automation <automation>`): An action to be performed when the finger touches the sensor. See :ref:`fingerprint_grow-on_finger_scan_start`.
|
||||
- **on_finger_scan_matched** (*Optional*, :ref:`Automation <automation>`): An action to be performed when an enrolled fingerprint is scanned. See :ref:`fingerprint_grow-on_finger_scan_matched`.
|
||||
- **on_finger_scan_unmatched** (*Optional*, :ref:`Automation <automation>`): An action to be performed when an unknown fingerprint is scanned. See :ref:`fingerprint_grow-on_finger_scan_unmatched`.
|
||||
- **on_finger_scan_misplaced** (*Optional*, :ref:`Automation <automation>`): An action to be performed when the finger is not entirely touching the sensor. See :ref:`fingerprint_grow-on_finger_scan_misplaced`.
|
||||
- **on_finger_scan_invalid** (*Optional*, :ref:`Automation <automation>`): An action to be performed when the scan of a fingerprint failed. See :ref:`fingerprint_grow-on_finger_scan_invalid`.
|
||||
- **on_enrollment_scan** (*Optional*, :ref:`Automation <automation>`): An action to be performed when a fingerprint is scanned during enrollment. See :ref:`fingerprint_grow-on_enrollment_scan`.
|
||||
- **on_enrollment_done** (*Optional*, :ref:`Automation <automation>`): An action to be performed when a fingerprint is enrolled. See :ref:`fingerprint_grow-on_enrollment_done`.
|
||||
- **on_enrollment_failed** (*Optional*, :ref:`Automation <automation>`): An action to be performed when a fingerprint enrollment failed. See :ref:`fingerprint_grow-on_enrollment_failed`.
|
||||
@ -144,6 +153,36 @@ The ``new_password:`` configuration option is meant to be compiled, flashed to t
|
||||
password: 0x72AB96CD # Update the existing password with the new one
|
||||
|
||||
|
||||
.. _fingerprint_grow-on_finger_scan_start:
|
||||
|
||||
``on_finger_scan_start`` Trigger
|
||||
------------------------------------
|
||||
|
||||
With this configuration option, you can trigger an automation when a finger is detected touching the sensor. Very useful to indicate to the user via AuraLed that the sensor has detected the finger touch and will perform the scan. This trigger will **only** activate if your fingerprint sensor is configured with the ``sensing_pin`` option.
|
||||
|
||||
.. code-block:: yaml
|
||||
|
||||
on_finger_scan_start:
|
||||
- fingerprint_grow.aura_led_control:
|
||||
state: ALWAYS_ON
|
||||
color: GREEN
|
||||
speed: 0
|
||||
count: 0
|
||||
|
||||
.. _fingerprint_grow-on_finger_scan_invalid:
|
||||
|
||||
``on_finger_scan_invalid`` Trigger
|
||||
----------------------------------
|
||||
|
||||
With this configuration option you can write complex automations whenever a scan fails, e.g. when the finger is not placed correctly on the reader. This is different from ``on_finger_scan_unmatched`` which is triggered when an unknown fingerprint is scanned. This option works best with the ``sensing_pin`` option defined.
|
||||
|
||||
.. code-block:: yaml
|
||||
|
||||
on_finger_scan_invalid:
|
||||
- text_sensor.template.publish:
|
||||
id: fingerprint_state
|
||||
state: "Invalid finger"
|
||||
|
||||
.. _fingerprint_grow-on_finger_scan_matched:
|
||||
|
||||
``on_finger_scan_matched`` Trigger
|
||||
@ -188,6 +227,21 @@ With this configuration option you can write complex automations whenever an unk
|
||||
id: fingerprint_state
|
||||
state: "Unauthorized finger"
|
||||
|
||||
.. _fingerprint_grow-on_finger_scan_misplaced:
|
||||
|
||||
``on_finger_scan_misplaced`` Trigger
|
||||
------------------------------------
|
||||
|
||||
With this configuration option, you can create automations for situations when the finger is in contact with the sensor but not fully covering it, enabling you to perform a successful scan.
|
||||
This trigger will **only** activate if your fingerprint sensor is configured with the ``sensing_pin`` option. It serves as a useful indicator to alert the user when their touch on the sensor is insufficient.
|
||||
|
||||
.. code-block:: yaml
|
||||
|
||||
on_finger_scan_misplaced:
|
||||
- text_sensor.template.publish:
|
||||
id: fingerprint_state
|
||||
state: "Misplaced finger"
|
||||
|
||||
.. _fingerprint_grow-on_enrollment_scan:
|
||||
|
||||
``on_enrollment_scan`` Trigger
|
||||
@ -341,6 +395,12 @@ Controls the Aura LED on the reader. Only available on select models. NOTE: The
|
||||
count: 2
|
||||
# Sample Aura LED config for all reader triggers
|
||||
fingerprint_grow:
|
||||
on_finger_scan_start:
|
||||
- fingerprint_grow.aura_led_control:
|
||||
state: ALWAYS_ON
|
||||
color: GREEN
|
||||
speed: 0
|
||||
count: 0
|
||||
on_finger_scan_matched:
|
||||
- fingerprint_grow.aura_led_control:
|
||||
state: BREATHING
|
||||
@ -353,6 +413,12 @@ Controls the Aura LED on the reader. Only available on select models. NOTE: The
|
||||
speed: 25
|
||||
color: RED
|
||||
count: 2
|
||||
on_finger_scan_misplaced:
|
||||
- fingerprint_grow.aura_led_control:
|
||||
state: FLASHING
|
||||
speed: 25
|
||||
color: PURPLE
|
||||
count: 2
|
||||
on_enrollment_scan:
|
||||
- fingerprint_grow.aura_led_control:
|
||||
state: FLASHING
|
||||
@ -420,6 +486,9 @@ Sample code
|
||||
|
||||
fingerprint_grow:
|
||||
sensing_pin: GPIO12
|
||||
on_finger_scan_invalid:
|
||||
- homeassistant.event:
|
||||
event: esphome.test_node_finger_scan_invalid
|
||||
on_finger_scan_matched:
|
||||
- homeassistant.event:
|
||||
event: esphome.test_node_finger_scan_matched
|
||||
@ -429,6 +498,9 @@ Sample code
|
||||
on_finger_scan_unmatched:
|
||||
- homeassistant.event:
|
||||
event: esphome.test_node_finger_scan_unmatched
|
||||
on_finger_scan_misplaced:
|
||||
- homeassistant.event:
|
||||
event: esphome.frontdoor_finger_scan_misplaced
|
||||
on_enrollment_scan:
|
||||
- homeassistant.event:
|
||||
event: esphome.test_node_enrollment_scan
|
||||
|
Before Width: | Height: | Size: 180 KiB After Width: | Height: | Size: 180 KiB |
Before Width: | Height: | Size: 180 KiB After Width: | Height: | Size: 180 KiB |
@ -44,6 +44,7 @@ Configuration variables
|
||||
- ``BRG``
|
||||
|
||||
- **is_rgbw** (*Optional*, boolean): Set to ``true`` if the strip is RGBW. Defaults to ``false``.
|
||||
- **is_wrgb** (*Optional*, boolean): Set to ``true`` if the strip is WRGB. 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
|
||||
|
@ -708,6 +708,7 @@ the strip and shifts them forward every ``add_led_interval``.
|
||||
num_leds: 1
|
||||
add_led_interval: 100ms
|
||||
reverse: false
|
||||
gradient: false
|
||||
|
||||
Configuration variables:
|
||||
|
||||
@ -720,7 +721,8 @@ Configuration variables:
|
||||
- **blue** (*Optional*, percentage): The percentage the blue color channel should be on. Defaults to ``100%``.
|
||||
- **random** (*Optional*, boolean): If set to ``true``, will overwrite the RGB colors by a new, randomly-chosen
|
||||
color each time. Defaults to ``false``.
|
||||
- **num_leds** (*Optional*, int): The number of leds of this type to have before moving on to the next color.
|
||||
- **num_leds** (**Required**, positive int): The number of LEDs of this type to have before transitioning to the next color. If ``gradient`` is true, this will be the number of LEDs over which the color transition will occur.
|
||||
- **gradient** (*Optional*, boolean): If ``true`` the current color will transition with a gradient over ``num_leds`` to the next color. Defaults to ``false``.
|
||||
|
||||
- **add_led_interval** (*Optional*, :ref:`config-time`): The interval with which to shift in new leds at the
|
||||
beginning of the strip. Defaults to ``100ms``.
|
||||
@ -1090,10 +1092,14 @@ It is also possible to use LedFx_ to control the lights. Please use the connecti
|
||||
effects:
|
||||
- wled:
|
||||
# port: 21324
|
||||
# blank_on_start: True
|
||||
# sync_group_mask: 0
|
||||
|
||||
Configuration variables:
|
||||
|
||||
- **port** (*Optional*, int): The port to run the UDP server on. Defaults to ``21324``.
|
||||
- **blank_on_start** (*Optional*, boolean): Whether or not to blank all LEDs when effect starts. Deaults to ``True``.
|
||||
- **sync_group_mask** (*Optional*, int): Used with WLED Notifier. The Sync Group mask value that specifies which WLED Sync Groups to listen to. Defaults to ``0`` (All Sync Groups). Sync Groups 1, 2, 3, 4, 5, 6, 7, 8 use masks 1, 2, 4, 8, 16, 32, 64, 128. Combine mask values to listen to multiple Sync Groups.
|
||||
|
||||
.. note::
|
||||
|
||||
|
109
components/micro_wake_word.rst
Normal file
@ -0,0 +1,109 @@
|
||||
Micro Wake Word
|
||||
================
|
||||
|
||||
.. seo::
|
||||
:description: Instructions for creating a custom wake word using microWakeWord.
|
||||
:image: voice-assistant.svg
|
||||
|
||||
ESPHome implements an on-device wake word detection framework from `microWakeWord <https://github.com/kahrendt/microWakeWord>`__.
|
||||
This repository/library allows you to create a custom wake word for your ESPHome device.
|
||||
|
||||
The training process is described on the `microWakeWord GitHub repository <https://github.com/kahrendt/microWakeWord>`__.
|
||||
|
||||
The ``micro_wake_word`` component requires an **ESP32-S3** to function.
|
||||
|
||||
.. code-block:: yaml
|
||||
|
||||
# Shorthand name
|
||||
micro_wake_word:
|
||||
model: okay_nabu
|
||||
|
||||
# Github shorthand URL
|
||||
micro_wake_word:
|
||||
model: github://esphome/micro-wake-word-models/models/okay_nabu.json
|
||||
|
||||
Configuration variables:
|
||||
------------------------
|
||||
|
||||
- **model** (**Required**, string): The model to use. This can be one of:
|
||||
|
||||
- A simple name of a model that exists in the official `ESPHome Models repository <https://github.com/esphome/micro-wake-word-models>`__.
|
||||
e.g. ``okay_nabu``.
|
||||
- A github shorthand URL to a model JSON file.
|
||||
e.g. ``github://esphome/micro-wake-word-models/models/okay_nabu.json@main``.
|
||||
- A full URL to a model JSON file.
|
||||
e.g. ``https://github.com/esphome/micro-wake-word-models/raw/main/models/okay_nabu.json``.
|
||||
|
||||
- **on_wake_word_detected** (*Optional*, Automation): An automation to perform when the wake word is detected.
|
||||
|
||||
The below two options are provided by the JSON file, but can be overridden in YAML.
|
||||
|
||||
- **probability_cutoff** (*Optional*, float): The probability cutoff for the wake word detection.
|
||||
If the probability of the wake word is below this value, the wake word is not detected.
|
||||
A larger value reduces the number of false accepts but increases the number of false rejections.
|
||||
- **sliding_window_average_size** (*Optional*, int): The size of the sliding window average for the wake word detection. A small value lowers latency but may increase the number of false accepts.
|
||||
|
||||
Model JSON
|
||||
----------
|
||||
|
||||
.. code-block:: json
|
||||
|
||||
{
|
||||
"type": "micro",
|
||||
"wake_word": "okay nabu",
|
||||
"author": "Kevin Ahrendt",
|
||||
"website": "https://www.kevinahrendt.com/",
|
||||
"model": "./okay_nabu.tflite",
|
||||
"version": 1,
|
||||
"micro": {
|
||||
"probability_cutoff": 0.5,
|
||||
"sliding_window_average_size": 10
|
||||
}
|
||||
}
|
||||
|
||||
The model JSON file contains the following fields that are all **required**:
|
||||
|
||||
- **type** (string): The type of the model. This should always be ``micro``.
|
||||
- **wake_word** (string): The wake word that the model is trained to detect.
|
||||
- **author** (string): The name of the author that trained the model.
|
||||
- **website** (string): The website of the author.
|
||||
- **model** (string): The relative or absolute path or URL to the TFLite trained model file.
|
||||
- **version** (int): The version of the JSON schema. Currently only version ``1`` exists.
|
||||
- **micro** (object): The microWakeWord specific configuration.
|
||||
|
||||
- **probability_cutoff** (float): The probability cutoff for the wake word detection.
|
||||
If the probability of the wake word is below this value, the wake word is not detected.
|
||||
- **sliding_window_average_size** (int): The size of the sliding window average for the wake word detection.
|
||||
|
||||
|
||||
Automations
|
||||
-----------
|
||||
|
||||
``micro_wake_word.start`` Action
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
Starts the wake word detection.
|
||||
|
||||
``micro_wake_word.stop`` Action
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
Stops the wake word detection.
|
||||
|
||||
Example usage
|
||||
-------------
|
||||
|
||||
.. code-block:: yaml
|
||||
|
||||
micro_wake_word:
|
||||
model: okay_nabu
|
||||
on_wake_word_detected:
|
||||
then:
|
||||
- voice_assistant.start:
|
||||
|
||||
|
||||
See Also
|
||||
--------
|
||||
|
||||
- :doc:`voice_assistant`
|
||||
- :apiref:`micro_wake_word/micro_wake_word.h`
|
||||
- :ghedit:`Edit`
|
@ -12,7 +12,7 @@ This platform only works on ESP32 based chips.
|
||||
.. warning::
|
||||
|
||||
Audio and voice components consume a significant amount of resources (RAM, CPU) on the device.
|
||||
|
||||
|
||||
**Crashes are likely to occur** if you include too many additional components in your device's
|
||||
configuration. In particular, Bluetooth/BLE components are known to cause issues when used in
|
||||
combination with Voice Assistant and/or other audio components.
|
||||
@ -41,9 +41,11 @@ Configuration variables:
|
||||
- ``internal``: Use the internal ADC of the ESP32. Only supported on ESP32, no variant support.
|
||||
|
||||
- **channel** (*Optional*, enum): The channel of the microphone. One of ``left`` or ``right``. Defaults to ``right``.
|
||||
- **sample_rate** (*Optional*, positive integer): I2S sample rate. Defaults to ``16000``.
|
||||
- **bits_per_sample** (*Optional*, enum): The bit depth of the audio samples. Note that while set to ``32bit``, the samples
|
||||
will be scaled down to 16bit before being forwarded.
|
||||
One of ``16bit`` or ``32bit``. Defaults to ``16bit``.
|
||||
- **use_apll** (*Optional*, boolean): I2S using APLL as main I2S clock, enable it to get accurate clock. Defaults to ``false``.
|
||||
- **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>`
|
||||
|
||||
|
@ -81,6 +81,8 @@ Configuration variables:
|
||||
for verifying SSL connections. See :ref:`mqtt-ssl_fingerprints`.
|
||||
for more information.
|
||||
- **certificate_authority** (*Optional*, string): Only with ``esp-idf``. CA certificate in PEM format. See :ref:`mqtt-tls-idf` for more information
|
||||
- **client_certificate** (*Optional*, string): Only on ``esp32``. Client certificate in PEM format.
|
||||
- **client_certificate_key** (*Optional*, string): Only on ``esp32``. Client private key in PEM format.
|
||||
- **skip_cert_cn_check** (*Optional*, bool): Only with ``esp-idf``. Don't verify if the common name in the server certificate matches the value of ``broker``.
|
||||
- **idf_send_async** (*Optional*, bool): Only with ``esp-idf``. If true publishing the message happens from the internal mqtt task. The client only enqueues the message. Defaults to ``false``.
|
||||
The advantage of asyncronous publishing is that it doesn't block the esphome main thread. The disadvantage is a delay (up to 1-2 seconds) until the messages are actually sent out.
|
||||
|
@ -54,6 +54,9 @@ Configuration variables:
|
||||
performed after a failed OTA update. See :ref:`ota-on_error`.
|
||||
- **on_state_change** (*Optional*, :ref:`Automation<automation>`): An action to be
|
||||
performed when an OTA update state change happens. See :ref:`ota-on_state_change`.
|
||||
- **version** (*Optional*, int): Version of OTA protocol to use. Version 2 is more stable.
|
||||
To downgrade to legacy ESPHome, the device should be updated with OTA version 1 first.
|
||||
Defaults to ``2``.
|
||||
|
||||
.. note::
|
||||
|
||||
|
@ -25,6 +25,8 @@ only read/write mode is enabled; card/tag emulation is enabled only if the ``emu
|
||||
variable is defined (see below). Regardless, reader/writer (polling) mode and card/tag emulation mode may be
|
||||
independently enabled and disabled by using the corresponding :ref:`pn7150-actions` (see below).
|
||||
|
||||
In addition, the :doc:`binary_sensor/nfc` platform may be used to quickly and easily identify tags presented to the reader.
|
||||
|
||||
.. code-block:: yaml
|
||||
|
||||
pn7150_i2c:
|
||||
@ -372,8 +374,8 @@ See Also
|
||||
--------
|
||||
|
||||
- :doc:`index`
|
||||
- :doc:`pn532`
|
||||
- :doc:`rc522`
|
||||
- :doc:`rdm6300`
|
||||
- :doc:`binary_sensor/pn532`
|
||||
- :doc:`binary_sensor/rc522`
|
||||
- :doc:`binary_sensor/rdm6300`
|
||||
- :apiref:`pn7150/pn7150.h`
|
||||
- :ghedit:`Edit`
|
@ -30,6 +30,8 @@ only read/write mode is enabled; card/tag emulation is enabled only if the ``emu
|
||||
variable is defined (see below). Regardless, reader/writer (polling) mode and card/tag emulation mode may be
|
||||
independently enabled and disabled by using the corresponding :ref:`pn7160-actions` (see below).
|
||||
|
||||
In addition, the :doc:`binary_sensor/nfc` platform may be used to quickly and easily identify tags presented to the reader.
|
||||
|
||||
.. _pn7160-spi:
|
||||
|
||||
Over SPI
|
||||
@ -430,8 +432,8 @@ See Also
|
||||
--------
|
||||
|
||||
- :doc:`index`
|
||||
- :doc:`pn532`
|
||||
- :doc:`rc522`
|
||||
- :doc:`rdm6300`
|
||||
- :doc:`binary_sensor/pn532`
|
||||
- :doc:`binary_sensor/rc522`
|
||||
- :doc:`binary_sensor/rdm6300`
|
||||
- :apiref:`pn7160/pn7160.h`
|
||||
- :ghedit:`Edit`
|
@ -38,6 +38,7 @@ Configuration variables:
|
||||
- **dish**: Decode and dump Dish infrared codes.
|
||||
- **drayton**: Decode and dump Drayton Digistat RF codes.
|
||||
- **jvc**: Decode and dump JVC infrared codes.
|
||||
- **keeloq**: Decode and dump KeeLoq RF codes.
|
||||
- **haier**: Decode and dump Haier infrared codes.
|
||||
- **lg**: Decode and dump LG infrared codes.
|
||||
- **magiquest**: Decode and dump MagiQuest wand infrared codes.
|
||||
@ -103,6 +104,9 @@ Automations:
|
||||
- **on_jvc** (*Optional*, :ref:`Automation <automation>`): An automation to perform when a
|
||||
JVC remote code has been decoded. A variable ``x`` of type :apistruct:`remote_base::JVCData`
|
||||
is passed to the automation for use in lambdas.
|
||||
- **on_keeloq** (*Optional*, :ref:`Automation <automation>`): An automation to perform when a
|
||||
KeeLoq RF code has been decoded. A variable ``x`` of type :apistruct:`remote_base::KeeloqData`
|
||||
is passed to the automation for use in lambdas.
|
||||
- **on_haier** (*Optional*, :ref:`Automation <automation>`): An automation to perform when a
|
||||
Haier remote code has been decoded. A variable ``x`` of type :apiclass:`remote_base::HaierData`
|
||||
is passed to the automation for use in lambdas.
|
||||
@ -249,6 +253,11 @@ Remote code selection (exactly one of these has to be included):
|
||||
|
||||
- **data** (**Required**, int): The JVC code to trigger on, see dumper output for more info.
|
||||
|
||||
- **keeloq**: Trigger on a decoded KeeLoq RF remote code with the given data.
|
||||
|
||||
- **address** (**Required**, int): The 32-bit ID code to trigger on, see dumper output for more info.
|
||||
- **command** (**Required**, int): The 8-bit switch/command to listen for. If omitted, will match on any command/button.
|
||||
|
||||
- **haier**: Trigger on a Haier remote code with the given code.
|
||||
|
||||
- **code** (**Required**, 13-bytes list): The code to listen for, see :ref:`remote_transmitter-transmit_haier`
|
||||
|
@ -251,6 +251,33 @@ Configuration variables:
|
||||
|
||||
- **data** (**Required**, int): The JVC code to send, see dumper output for more info.
|
||||
|
||||
.. _remote_transmitter-transmit_keeloq:
|
||||
|
||||
``remote_transmitter.transmit_keeloq`` Action
|
||||
**********************************************
|
||||
|
||||
This :ref:`action <config-action>` sends KeeLoq RF remote code to a remote transmitter.
|
||||
|
||||
.. code-block:: yaml
|
||||
|
||||
on_...:
|
||||
- remote_transmitter.transmit_keeloq:
|
||||
address: '0x57ffe7b'
|
||||
command: '0x02'
|
||||
code: '0xd19ef0a9'
|
||||
repeat:
|
||||
times: 3
|
||||
wait_time: 15ms
|
||||
|
||||
Configuration variables:
|
||||
|
||||
- **address** (**Required**, int): The 32-bit address to send, see dumper output for more info.
|
||||
- **command** (**Required**, int): The 4 bit command/button code to send, see dumper output for more info.
|
||||
- **code** (**Optional**, int): The 32 bit encrypted field to send. Defaults to all zeros.
|
||||
- **level** (**Optional**, boolean): Low battery level status bit. Defaults to false.
|
||||
- All other options from :ref:`remote_transmitter-transmit_action`.
|
||||
- A repeat **wait_time** of 15ms as shown replicates the repetition of an HCS301.
|
||||
|
||||
.. _remote_transmitter-transmit_haier:
|
||||
|
||||
``remote_transmitter.transmit_haier`` Action
|
||||
|
303
components/sensor/as5600.rst
Normal file
@ -0,0 +1,303 @@
|
||||
AS5600 12-Bit Magnetic Position Sensor
|
||||
======================================
|
||||
|
||||
.. seo::
|
||||
:description: Instructions for setting up AS5600 magnetic position sensor / encoder.
|
||||
:image: as5600.jpg
|
||||
:keywords: AS5600 AS5600L
|
||||
|
||||
.. _as5600-component:
|
||||
|
||||
Component/Hub
|
||||
-------------
|
||||
|
||||
The ``as5600`` sensor platform you to use your AS5600 (`datasheet <https://ams.com/documents/20143/36005/AS5600_DS000365_5-00.pdf/649ee61c-8f9a-20df-9e10-43173a3eb323>`__,
|
||||
`AMS <https://ams.com/en/as5600>`__) or AS5600L (`datasheet <https://ams.com/documents/20143/36005/AS5600L_DS000545_3-00.pdf/7ade6878-7a32-2294-b88d-479d50fab6de>`__,
|
||||
`AMS <https://ams.com/en/as5600l>`__) 12-bit magnetic position sensor with ESPHome. Individual sensors will be added
|
||||
using the :ref:`AS5600 Sensor Platform <as5600-sensor>`. To use this hub, first setup
|
||||
the :ref:`I²C Bus <i2c>` and connect the sensor to the pins specified there.
|
||||
|
||||
.. figure:: images/as5600-full.jpg
|
||||
:align: center
|
||||
:width: 50.0%
|
||||
|
||||
AS5600 12-Bit Magnetic Position Sensor.
|
||||
|
||||
.. _AMS_AS5600: https://ams.com/en/as5600
|
||||
|
||||
.. _AMS_AS5600L: https://ams.com/en/as5600l
|
||||
|
||||
.. code-block:: yaml
|
||||
|
||||
as5600:
|
||||
dir_pin: 22
|
||||
start_position: 0deg
|
||||
range: 180deg
|
||||
|
||||
Configuration variables:
|
||||
************************
|
||||
|
||||
- **dir_pin** (*Optional*, int): The pin connected to the AS5600's direction pin.
|
||||
See :ref:`Direction <as5600_direction>` for more information.
|
||||
- **direction** (*Optional*, string): The direction that the magnet should rotate to increase values.
|
||||
Used in combination with the **dir_pin**.
|
||||
|
||||
- ``clockwise`` (default)
|
||||
- ``counterclockwise``
|
||||
- **start_position** (*Optional*, int): The raw position that should be considered the start (i.e. ``0``).
|
||||
See :ref:`Position / Range <as5600_position_range>`.
|
||||
- **end_position** (*Optional*, int): The raw position that should be considered the end (e.g. 180deg)
|
||||
of the allowable rotation range. Mutually exclusive with **range**. See :ref:`Position / Range <as5600_position_range>`.
|
||||
- **range** (*Optional*, int): The allowable rotation range from the **start_position**. Mutually
|
||||
exclusive with **end_position**. See :ref:`Position / Range <as5600_position_range>`.
|
||||
- **hysteresis** (*Optional*, string): See datasheet.
|
||||
|
||||
- ``none`` (default)
|
||||
- ``lsb1``
|
||||
- ``lsb2``
|
||||
- ``lsb3``
|
||||
|
||||
- **power_mode** (*Optional*, string): The power mode to run the sensor. Note: When **watchdog** is enabled,
|
||||
it will switch the device to ``low3`` when there is not much change in position.
|
||||
|
||||
- ``nominal`` (default)
|
||||
- ``low1``
|
||||
- ``low2``
|
||||
- ``low3``
|
||||
|
||||
- **watchdog** (*Optional*, boolean): Whether to enable the watchdog that puts the the chip in to
|
||||
low power mode 3. Check the datasheet for more information.
|
||||
Defaults to ``off``.
|
||||
- **slow_filter** (*Optional*, string): See datasheet.
|
||||
|
||||
- ``16x`` (default)
|
||||
- ``8x``
|
||||
- ``4x``
|
||||
- ``2x``
|
||||
|
||||
- **fast_filter** (*Optional*, string): See datasheet.
|
||||
|
||||
- ``none`` (default)
|
||||
- ``lsb6``
|
||||
- ``lsb7``
|
||||
- ``lsb9``
|
||||
- ``lsb18``
|
||||
- ``lsb21``
|
||||
- ``lsb24``
|
||||
- ``lsb10``
|
||||
|
||||
- **address** (*Optional*, int): The i²c address of the sensor.
|
||||
See :ref:`I²C Addresses <as5600_i2c_addresses>` for more information.
|
||||
- **id** (*Optional*, :ref:`config-id`): Manually specify the ID for this AS5600 Hub.
|
||||
- All other options for I²C devices described at :ref:`I²C Bus <i2c>`.
|
||||
|
||||
.. _as5600_direction:
|
||||
|
||||
Direction
|
||||
---------
|
||||
|
||||
The AS5600 has ``direction`` pin that controls which rotation direction will cause the position value to **increase**.
|
||||
This pin should be pulled low for clockwise, and pulled high for counterclockwise. If left floating, you are likely
|
||||
to encounter erratic behavior.
|
||||
|
||||
If you would like the ESP controller to pull that pin high or low, you may configure the ``dir_pin`` and optionally, the
|
||||
``direction`` option to have the ESP controller pull the pin high or low.
|
||||
|
||||
.. _as5600_position_range:
|
||||
|
||||
Position / Range
|
||||
----------------
|
||||
|
||||
.. figure:: images/as5600-magnet-position.png
|
||||
:align: center
|
||||
:width: 80.0%
|
||||
|
||||
Position and range may be configured as one of the following:
|
||||
|
||||
- a value between ``-4095`` and ``4095``
|
||||
- an angle between ``-360deg`` and ``360deg``
|
||||
- a percentage between ``-100%`` and ``100%``
|
||||
|
||||
.. note::
|
||||
|
||||
Negative position values will be normalized to their respective positive position (e.g. -90deg would translate to 270deg).
|
||||
|
||||
The AS5600 reports 2 position values. The value for both types of position values will always be a whole number between 0 and 4095.
|
||||
|
||||
A "raw" position value is not filtered, scaled, etc. So a value of `0` is always when the north end of the magnet is at the top of
|
||||
the chip, 2048 is always when the north end of the magnet is as the bottom of the chip, etc.
|
||||
|
||||
The regular/scaled position is filtered and scaled based on the sensor configuration (e.g. ``start_position``, ``end_position``, ``range``, etc).
|
||||
For example, let's say we have the following component config:
|
||||
|
||||
.. code-block:: yaml
|
||||
|
||||
as5600:
|
||||
start_position: 90deg
|
||||
range: 180deg
|
||||
direction: clockwise
|
||||
dir_pin: 22
|
||||
|
||||
- If the magnet north was at the right side of the chip (i.e. 1024 / 90deg raw position), the scaled position would report a value of ``0``.
|
||||
- If the magnet north was at the bottom of the chip (i.e. 2048 / 180deg raw position), the scaled position would report a value of ``2048``.
|
||||
- If the magnet north was at the left of the chip (i.e. 3096 / 270deg raw position), the scaled position would report a value of ``4095``.
|
||||
- If the magnet north was at the top of the chipe (i.e. 0 / 0deg raw position), the scaled position would be out of range (which also has
|
||||
it's own caveats discussed below).
|
||||
|
||||
.. note::
|
||||
|
||||
You may specify an ``end_position`` that is less than the ``start_position``. When doing so, the allowable range will start at the
|
||||
``start_position`` and continue through to the highest position value (i.e. ``4095``) and then continue from ``0`` until it reaches
|
||||
the ``end_position``.
|
||||
|
||||
|
||||
.. warning::
|
||||
|
||||
The datasheet calls out that the minimum angle that can be configured (start and end position, or start and range) it 18 degrees.
|
||||
Configuring anything less than that may yield un-expected results.
|
||||
|
||||
.. _as5600_i2c_addresses:
|
||||
|
||||
I²C Addresses
|
||||
-------------
|
||||
|
||||
The AS5600 address is not configurable and must be ``0x36``. However, if using an AS5600L,
|
||||
the default address should be ``0x40`` and it is configurable.
|
||||
|
||||
.. _as5600-sensor:
|
||||
|
||||
Sensor
|
||||
------
|
||||
|
||||
The ``as5600`` sensor allows you to publish the angle/position measurement from your AS5600 with ESPHome.
|
||||
First, setup an :ref:`AS5600 Hub <as5600-component>` for your AS5600 sensor and then use this
|
||||
sensor platform to create individual sensors that will report the position to Home Assistant.
|
||||
|
||||
.. figure:: images/as5600-ui.jpg
|
||||
:align: center
|
||||
:width: 80.0%
|
||||
|
||||
.. code-block:: yaml
|
||||
|
||||
as5600:
|
||||
dir_pin: 22
|
||||
|
||||
sensor:
|
||||
- platform: as5600
|
||||
name: Position
|
||||
raw_position:
|
||||
name: Raw Position
|
||||
gain:
|
||||
name: Gain
|
||||
magnitude:
|
||||
name: Magnitude
|
||||
status:
|
||||
name: Status
|
||||
|
||||
.. _as5600-sensor-config:
|
||||
|
||||
Configuration variables:
|
||||
************************
|
||||
|
||||
- **out_of_range_mode** (*Optional*, string): How to treat out of range values. Only applicable if configured
|
||||
for a range less than 360 degrees. Defaults to ``min_max``. See :ref:`Out of Range Mode <as5600-out-of-range-mode>`.
|
||||
- **as5600_id** (*Optional*, :ref:`config-id`): Manually specify the ID of the
|
||||
:ref:`AS5600 Hub <as5600-component>` you want to use this sensor.
|
||||
- **update_interval** (*Optional*, :ref:`config-time`): The interval
|
||||
to check the sensor. Defaults to ``60s``.
|
||||
- **raw_position** (*Optional*): Reports the raw (un-scaled, un-filtered) position of the magnet.
|
||||
|
||||
- All other options from :ref:`Sensor <config-sensor>`.
|
||||
- **gain** (*Optional*): Information about the automatic gain control. Typically for diagnostic purposes.
|
||||
The datasheet says this will be between 0-255 when powered by 5v and between 0-128 when powered by 3.3v.
|
||||
Ideally the value should be close to the middle of the respective range.
|
||||
|
||||
- All other options from :ref:`Sensor <config-sensor>`.
|
||||
- **magnitude** (*Optional*): Information about the detected magnitude. Typically for diagnostic purposes.
|
||||
The expected scale does not appear to be defined in the datasheet, however, AMS provides a
|
||||
`user guide <https://ams.com/documents/20143/36005/Position%20Sensors_UG000359_1-00.pdf/65a99825-c115-f2f0-9167-6efad8e27c20>`__
|
||||
which contains pictures that show it as a scale between ``0`` and ``3000``. Typically this value is seen somewhere
|
||||
in the neighborhood of ``2100`` for a well positioned magnet.
|
||||
|
||||
- All other options from :ref:`Sensor <config-sensor>`.
|
||||
- **status** (*Optional*): Information about the magnet status. Typically for diagnostic purposes.
|
||||
See :ref:`Magnet Status <as5600-magnet-status>`
|
||||
|
||||
- All other options from :ref:`Sensor <config-sensor>`.
|
||||
- All other options from :ref:`Sensor <config-sensor>`.
|
||||
|
||||
|
||||
.. _as5600-out-of-range-mode:
|
||||
|
||||
Out of Range Mode
|
||||
*****************
|
||||
|
||||
- ``min_max`` (default)
|
||||
- ``nan``
|
||||
|
||||
When using a range less that 360deg, there would be a range of raw values that would be considered "out of range". By default (``min_max`` mode), the AS5600
|
||||
splits that range in half and reports ``0`` while in the half of the "out-of-range" range closest to the ``start_position`` and it reports
|
||||
``4095`` while in the half of the "out-of-range" range closest to the ``end_position`` / end of the ``range``. Alternatively, you may set to ``nan``
|
||||
mode where the sensor will publish ``NAN`` (i.e. "Unknown") when the position falls outside the narrowed range.
|
||||
|
||||
.. _as5600-magnet-status:
|
||||
|
||||
Magnet Status
|
||||
*************
|
||||
|
||||
The magnet status should report one of the following values:
|
||||
|
||||
- ``2`` indicates that no magnet was detected.
|
||||
- ``4`` indicates that the magnet was detected and has good reading.
|
||||
- ``5`` indicates that the magnet was detected, but is too strong. Measurements may appear to be stuck if the magnet is too strong.
|
||||
- ``6`` indicates that the magnet was detected, but is too weak. Measurements may still be possible in this state.
|
||||
|
||||
.. _as5600-converting-position:
|
||||
|
||||
Converting Position
|
||||
*******************
|
||||
|
||||
You may desire the position to be converted from the native ``0`` thru ``4095`` to degrees, or perhaps a percentage of the allowable range.
|
||||
Here are some examples to make that happen:
|
||||
|
||||
.. figure:: images/as5600-ui-derived.jpg
|
||||
:align: center
|
||||
:width: 80.0%
|
||||
|
||||
.. code-block:: yaml
|
||||
|
||||
as5600:
|
||||
id: my_as5600
|
||||
sensor:
|
||||
- platform: as5600
|
||||
update_interval: 1s
|
||||
name: Angle
|
||||
unit_of_measurement: '°'
|
||||
accuracy_decimals: 2
|
||||
icon: mdi:rotate-right
|
||||
filters:
|
||||
- delta: 1
|
||||
- lambda: 'return x * as5600::RAW_TO_DEGREES * id(my_as5600).get_range_scale();'
|
||||
|
||||
.. code-block:: yaml
|
||||
|
||||
as5600:
|
||||
id: my_as5600
|
||||
sensor:
|
||||
- platform: as5600
|
||||
update_interval: 1s
|
||||
name: Percent
|
||||
unit_of_measurement: '%'
|
||||
accuracy_decimals: 2
|
||||
icon: mdi:rotate-right
|
||||
filters:
|
||||
- delta: 1
|
||||
- lambda: 'return (x / as5600::POSITION_COUNT) * 100;'
|
||||
|
||||
See Also
|
||||
--------
|
||||
|
||||
- :ref:`i2c`
|
||||
- :ref:`sensor-filters`
|
||||
- :apiref:`as5600/as5600.h`
|
||||
- :ghedit:`Edit`
|
@ -10,7 +10,7 @@ The ``bme280`` sensor platform allows you to use your BME280
|
||||
(`datasheet <https://cdn-shop.adafruit.com/datasheets/BST-BME280_DS001-10.pdf>`__,
|
||||
`Adafruit`_) temperature, pressure and humidity sensors with ESPHome. The sensor
|
||||
is used in *Forced Mode* where measurement is performed and then
|
||||
the sensor returns to sleep mode until next measurement. The :ref:`I²C <i2c>` is
|
||||
the sensor returns to sleep mode until next measurement. The :ref:`I²C <i2c>` or :ref:`SPI <spi>` is
|
||||
required to be set up in your configuration for this sensor to work.
|
||||
|
||||
.. figure:: images/bme280-full.jpg
|
||||
@ -23,9 +23,9 @@ required to be set up in your configuration for this sensor to work.
|
||||
|
||||
.. code-block:: yaml
|
||||
|
||||
# Example configuration entry
|
||||
# Example configuration entry I2C
|
||||
sensor:
|
||||
- platform: bme280
|
||||
- platform: bme280_i2c
|
||||
temperature:
|
||||
name: "BME280 Temperature"
|
||||
oversampling: 16x
|
||||
@ -36,6 +36,20 @@ required to be set up in your configuration for this sensor to work.
|
||||
address: 0x77
|
||||
update_interval: 60s
|
||||
|
||||
|
||||
# Example configuration entry SPI
|
||||
sensor:
|
||||
- platform: bme280_spi
|
||||
temperature:
|
||||
name: "BME280 Temperature"
|
||||
oversampling: 16x
|
||||
pressure:
|
||||
name: "BME280 Pressure"
|
||||
humidity:
|
||||
name: "BME280 Humidity"
|
||||
cs_pin: GPIO5
|
||||
update_interval: 60s
|
||||
|
||||
Configuration variables:
|
||||
------------------------
|
||||
|
||||
|
Before Width: | Height: | Size: 3.6 KiB After Width: | Height: | Size: 4.0 KiB |
103
components/sensor/combination.rst
Normal file
@ -0,0 +1,103 @@
|
||||
Combine the state of several sensors
|
||||
====================================
|
||||
|
||||
.. seo::
|
||||
:description: Instructions for setting up a combination sensor
|
||||
|
||||
The ``combination`` sensor platform allows you to combine the state of several
|
||||
sensors into one. To use this sensor, specify the combination type and add your source sensors.
|
||||
|
||||
The ``unit_of_measurement``, ``device_class``, ``entity_category``, ``icon``, and
|
||||
``accuracy_decimals`` properties are by default inherited from the first sensor.
|
||||
``state_class`` is explicitly not inherited, because ``total_increasing`` states
|
||||
could still decrease when multiple sensors are used for several of the combination types.
|
||||
|
||||
The source sensor states can be combined in several ways:
|
||||
|
||||
- ``KALMAN`` filter: This type filters one or several
|
||||
sensors into one with a reduced error. If using a single sensor as data source,
|
||||
it acts like a :ref:`sensor-filter-exponential_moving_average` filter. With
|
||||
multiple sensors, it combines their values based on their respective standard
|
||||
deviation.
|
||||
|
||||
.. code-block:: yaml
|
||||
|
||||
# Example configuration entry
|
||||
sensor:
|
||||
- platform: combination
|
||||
type: kalman
|
||||
name: "Temperature"
|
||||
process_std_dev: 0.001
|
||||
sources:
|
||||
- source: temperature_sensor_1
|
||||
error: 1.0
|
||||
- source: temperature_sensor_2
|
||||
error: !lambda |-
|
||||
return 0.5 + std::abs(x - 25) * 0.023
|
||||
|
||||
- ``LINEAR`` combination: This type sums all source sensors after multiplying each by
|
||||
a configured coeffecient.
|
||||
|
||||
.. code-block:: yaml
|
||||
|
||||
# Example configuration entry
|
||||
sensor:
|
||||
- platform: combination
|
||||
type: linear
|
||||
name: "Balance Power"
|
||||
sources:
|
||||
- source: total_power
|
||||
coeffecient: 1.0
|
||||
- source: circuit_1_power
|
||||
coeffecient: -1.0
|
||||
|
||||
- ``MAXIMUM``, ``MEAN``, ``MEDIAN``, ``MINIMUM``, ``MOST_RECENTLY_UPDATED``,
|
||||
``RANGE``, ``SUM`` combinations: These types compute the specified combination among
|
||||
all source sensor states.
|
||||
|
||||
.. code-block:: yaml
|
||||
|
||||
# Example configuration entry
|
||||
sensor:
|
||||
- platform: combination
|
||||
type: median
|
||||
name: "Median Temperature"
|
||||
sources:
|
||||
- source: temperature_sensor_1
|
||||
- source: temperature_sensor_2
|
||||
- source: temperature_sensor_3
|
||||
|
||||
Configuration variables:
|
||||
------------------------
|
||||
|
||||
- **type** (**Required**, enum): Combination statistic type, should be one of
|
||||
``KALMAN``, ``LINEAR``, ``MAXIMUM``, ``MEAN``, ``MEDIAN``, ``MINIMUM``,
|
||||
``MOST_RECENTLY_UPDATED``, ``RANGE``, or ``SUM``.
|
||||
- **sources** (**Required**, list): A list of sensors to use as source.
|
||||
|
||||
- **source** (**Required**, :ref:`config-id` of a :doc:`/components/sensor/index`): The
|
||||
sensor id that is used as sample source.
|
||||
- **error** (**Required** - only for ``KALMAN`` type, float, :ref:`templatable <config-templatable>`):
|
||||
The standard deviation of the sensor's measurements. This works like the ``process_std_dev``
|
||||
parameter, with low values marking accurate data. If implemented as a template, the
|
||||
measurement is in parameter ``x``.
|
||||
- **coeffecient** (**Required** - only for ``LINEAR`` type, float, :ref:`templatable <config-templatable>`):
|
||||
The coeffecient to multiply the sensor's state by before summing all source sensor states.
|
||||
If implemented as a template, the measurement is in parameter ``x``.
|
||||
|
||||
- **process_std_dev** (**Required** - only for ``KALMAN`` type, float): The standard deviation of the
|
||||
measurement's change per second (e.g. ``1/3600 = 0.000277`` if the
|
||||
temperature usually changes at most by one Kelvin per hour). A low value here
|
||||
will place high importance on the current state and be slow to respond to
|
||||
changes in the measured samples. A high value will update faster, but also be
|
||||
more noisy.
|
||||
- **std_dev** (*Optional - only for KALMAN type*, :ref:`Sensor <config-sensor>`): A sensor
|
||||
that publishes the current standard deviation of the state with each update.
|
||||
- All other options from :ref:`Sensor <config-sensor>`.
|
||||
|
||||
See Also
|
||||
--------
|
||||
|
||||
- :ref:`sensor-filters`
|
||||
- :apiref:`combination/combination.h`
|
||||
- :ghedit:`Edit`
|
@ -17,7 +17,8 @@ and works with this integration.
|
||||
|
||||
As the communication with the CSE7766 done using UART, you need
|
||||
to have an :ref:`UART bus <uart>` in your configuration with the ``rx_pin`` connected to the CSE7766.
|
||||
Additionally, you need to set the baud rate to 4800.
|
||||
Additionally, you need to set the baud rate to 4800. The device sends multiple updates per second, so you
|
||||
will probably want some sort of averaging or throttle filter on the sensors.
|
||||
|
||||
.. code-block:: yaml
|
||||
|
||||
@ -34,8 +35,12 @@ Additionally, you need to set the baud rate to 4800.
|
||||
- platform: cse7766
|
||||
current:
|
||||
name: "Sonoff Pow R2 Current"
|
||||
filters:
|
||||
- throttle_average: 60s
|
||||
voltage:
|
||||
name: "Sonoff Pow R2 Voltage"
|
||||
filters:
|
||||
- throttle: 60s
|
||||
power:
|
||||
name: "Sonoff Pow R2 Power"
|
||||
energy:
|
||||
@ -55,8 +60,6 @@ Configuration variables:
|
||||
All options from :ref:`Sensor <config-sensor>`.
|
||||
- **energy** (*Optional*): Use the total energy value of the sensor in Wh.
|
||||
All options from :ref:`Sensor <config-sensor>`.
|
||||
- **update_interval** (*Optional*, :ref:`config-time`): The interval to check the
|
||||
sensor. Defaults to ``60s``.
|
||||
- **uart_id** (*Optional*, :ref:`config-id`): Manually specify the ID of the :ref:`UART Component <uart>` if you want
|
||||
to use multiple UART buses.
|
||||
|
||||
|
@ -6,12 +6,13 @@ DHT Temperature+Humidity Sensor
|
||||
:image: dht.jpg
|
||||
:keywords: DHT11, DHT21, DHT22, AMS2301, AM2302, RHT03, SI7021
|
||||
|
||||
The DHT Temperature+Humidity sensor allows you to use your
|
||||
The DHT Temperature+Humidity sensor allows you to use your
|
||||
|
||||
- DHT11 (`datasheet <https://akizukidenshi.com/download/ds/aosong/DHT11.pdf>`__, `Adafruit <https://www.adafruit.com/product/386>`__),
|
||||
- DHT21/DHT22 (`datasheet <https://www.sparkfun.com/datasheets/Sensors/Temperature/DHT22.pdf>`__, `Adafruit <https://www.adafruit.com/product/385>`__),
|
||||
- AMS2301/AM2302 (`datasheet <https://cdn-shop.adafruit.com/datasheets/Digital+humidity+and+temperature+sensor+AM2302.pdf>`__, `Adafruit <https://www.adafruit.com/product/393>`__),
|
||||
- RHT03 (`datasheet <https://cdn.sparkfun.com/datasheets/Sensors/Weather/RHT03.pdf>`__, `SparkFun <https://cdn.sparkfun.com/datasheets/Sensors/Weather/RHT03.pdf>`__) and
|
||||
- DHT11 (`datasheet <https://akizukidenshi.com/download/ds/aosong/DHT11.pdf>`__, `Adafruit <https://www.adafruit.com/product/386>`__),
|
||||
- DHT21/DHT22 (`datasheet <https://www.sparkfun.com/datasheets/Sensors/Temperature/DHT22.pdf>`__, `Adafruit <https://www.adafruit.com/product/385>`__),
|
||||
- AMS2301/AM2302 (`datasheet <https://cdn-shop.adafruit.com/datasheets/Digital+humidity+and+temperature+sensor+AM2302.pdf>`__, `Adafruit <https://www.adafruit.com/product/393>`__),
|
||||
- AM2120 (`datasheet <https://www.micros.com.pl/mediaserver/UPAM2120_0004.pdf>`__),
|
||||
- RHT03 (`datasheet <https://cdn.sparkfun.com/datasheets/Sensors/Weather/RHT03.pdf>`__, `SparkFun <https://cdn.sparkfun.com/datasheets/Sensors/Weather/RHT03.pdf>`__) and
|
||||
- SI7021 (one wire Sonoff version) (`datasheet <https://cdn.sparkfun.com/assets/b/1/b/8/5/Si7021-A20.pdf>`__, `SparkFun <https://cdn.sparkfun.com/assets/b/1/b/8/5/Si7021-A20.pdf>`__)
|
||||
|
||||
sensors with ESPHome.
|
||||
@ -59,20 +60,20 @@ Configuration variables:
|
||||
- **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>`.
|
||||
|
||||
|
||||
|
||||
- **model** (*Optional*, int): Manually specify the DHT model, can be
|
||||
one of ``AUTO_DETECT``, ``DHT11``, ``DHT22``, ``DHT22_TYPE2``, ``AM2302``, ``RHT03``, ``SI7021``
|
||||
one of ``AUTO_DETECT``, ``DHT11``, ``DHT22``, ``DHT22_TYPE2``, ``AM2302``, ``RHT03``, ``SI7021``, ``AM2120``
|
||||
and helps with some connection issues. Defaults to ``AUTO_DETECT``. Auto detection doesn't work for the SI7021 chip.
|
||||
- **update_interval** (*Optional*, :ref:`config-time`): The interval to check the
|
||||
sensor. Defaults to ``60s``.
|
||||
|
||||
.. note::
|
||||
|
||||
The default ``accuracy_decimals`` value of the *humidity* levels is ``0``, as the DHT11 for which this was
|
||||
originally written does not have a higher resolution. All other DHT sensors have a higher resolution, it's worth
|
||||
The default ``accuracy_decimals`` value of the *humidity* levels is ``0``, as the DHT11 for which this was
|
||||
originally written does not have a higher resolution. All other DHT sensors have a higher resolution, it's worth
|
||||
to configure them with ``accuracy_decimals: 1``.
|
||||
|
||||
|
||||
If you're seeing lots of invalid temperature/humidity warnings in the logs, try manually setting the
|
||||
DHT model with the ``model:`` configuration variable. Other problems could be wrong pull-up resistor values
|
||||
on the DATA pin or too long cables.
|
||||
|
@ -71,7 +71,8 @@ Advanced Options:
|
||||
Possible values are ``HLW8012``, ``CSE7759``, ``BL0937``. Defaults to ``HLW8012``.
|
||||
CSE7759 uses same constants and it also works with default. Must be set for BL0937 to be able to calibrate all three measurements at the same time.
|
||||
- **change_mode_every** (*Optional*, int): After how many updates to cycle between the current/voltage measurement mode.
|
||||
Note that the first value after switching is discarded because it is often inaccurate. Defaults to ``8``.
|
||||
Note that the first value after switching is discarded because it is often inaccurate. When set to ``"never"`` the measurement mode will stay at the
|
||||
set ``initial_mode``. Defaults to ``8``.
|
||||
- **initial_mode** (*Optional*, string): The initial measurement mode. Defaults to ``VOLTAGE``.
|
||||
Possible initial measurement modes are ``VOLTAGE`` or ``CURRENT``.
|
||||
|
||||
@ -97,7 +98,7 @@ the initial measurement mode to match whichever mode the device uses, and disabl
|
||||
name: "HLW8012 Power"
|
||||
update_interval: 60s
|
||||
initial_mode: CURRENT
|
||||
change_mode_every: 4294967295
|
||||
change_mode_every: "never"
|
||||
|
||||
SEL Pin Inversion
|
||||
-----------------
|
||||
|
42
components/sensor/honeywell_hih_i2c.rst
Normal file
@ -0,0 +1,42 @@
|
||||
Honeywell HumidIcon (I2C HIH series) Temperature & Humidity Sensor
|
||||
==================================================================
|
||||
|
||||
.. seo::
|
||||
:description: Instructions for setting up Honeywell HumidIcon temperature and humidity sensors.
|
||||
:image: honeywellhih.jpg
|
||||
:keywords: Honeywell HIH
|
||||
|
||||
Honeywell HumidIcon (I2C HIH series) Temperature & Humidity sensors with ESPHome (`website <https://sps.honeywell.com/us/en/products/advanced-sensing-technologies/healthcare-sensing/humidity-with-temperature-sensors>`__,
|
||||
`datasheet <https://prod-edam.honeywell.com/content/dam/honeywell-edam/sps/siot/en-us/products/sensors/humidity-with-temperature-sensors/common/documents/sps-siot-humidity-sensors-line-guide-009034-7-en-ciid-54931.pdf?download=false>`__).
|
||||
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: honeywell_hih_i2c
|
||||
temperature:
|
||||
name: "Living Room Temperature"
|
||||
humidity:
|
||||
name: "Living Room Humidity"
|
||||
|
||||
Configuration variables:
|
||||
------------------------
|
||||
|
||||
- **temperature** (**Required**): The information for the temperature sensor.
|
||||
All options from :ref:`Sensor <config-sensor>`.
|
||||
|
||||
- **humidity** (**Required**): The information for the humidity sensor.
|
||||
All 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:`honeywell_hih_i2c/honeywell_hih.h`
|
||||
- :ghedit:`Edit`
|
BIN
components/sensor/images/as5600-full.jpg
Normal file
After Width: | Height: | Size: 52 KiB |
BIN
components/sensor/images/as5600-magnet-position.png
Normal file
After Width: | Height: | Size: 114 KiB |
BIN
components/sensor/images/as5600-ui-derived.jpg
Normal file
After Width: | Height: | Size: 12 KiB |
BIN
components/sensor/images/as5600-ui.jpg
Normal file
After Width: | Height: | Size: 35 KiB |
BIN
components/sensor/images/honeywellhih.jpg
Normal file
After Width: | Height: | Size: 27 KiB |
BIN
components/sensor/images/veml3235.jpg
Normal file
After Width: | Height: | Size: 28 KiB |
@ -1,61 +0,0 @@
|
||||
Kalman filter-based sensor fusion
|
||||
=================================
|
||||
|
||||
.. seo::
|
||||
:description: Instructions for setting up a kalman_combinator sensor
|
||||
|
||||
The ``kalman_combinator`` sensor platform allows you to filter one or several
|
||||
sensors into one with a reduced error. If using a single sensor as data source,
|
||||
it acts like a :ref:`sensor-filter-exponential_moving_average` filter. With
|
||||
multiple sensors, it combines their values based on their respective standard
|
||||
deviation.
|
||||
|
||||
The ``unit_of_measurement``, ``device_class``, ``entity_category``, ``icon``, and
|
||||
``accuracy_decimals`` properties are by default inherited from the first sensor.
|
||||
``state_class`` is explicitly not inherited, because ``total_increasing`` states
|
||||
could still decrease when multiple sensors are used.
|
||||
|
||||
.. code-block:: yaml
|
||||
|
||||
# Example configuration entry
|
||||
sensor:
|
||||
- platform: kalman_combinator
|
||||
name: "Temperature"
|
||||
unit_of_measurement: °C
|
||||
process_std_dev: 0.001
|
||||
sources:
|
||||
- source: temperature_sensor_1
|
||||
error: 1.0
|
||||
- source: temperature_sensor_2
|
||||
error: !lambda |-
|
||||
return 0.5 + std::abs(x - 25) * 0.023
|
||||
|
||||
Configuration variables:
|
||||
------------------------
|
||||
|
||||
- **process_std_dev** (**Required**, float): The standard deviation of the
|
||||
measurement's change per second (e.g. ``1/3600 = 0.000277`` if the
|
||||
temperature usually changes at most by one Kelvin per hour). A low value here
|
||||
will place high importance on the current state and be slow to respond to
|
||||
changes in the measured samples. A high value will update faster, but also be
|
||||
more noisy.
|
||||
- **std_dev** (*Optional*, :ref:`Sensor <config-sensor>`): A sensor
|
||||
that publishes the current standard deviation of the state with each update.
|
||||
- **sources** (**Required**, list): A list of sensors to use as source. Each
|
||||
source must have either **error** or **error_function** set. These work like
|
||||
the **process_std_dev** parameter, with low values marking accurate data.
|
||||
|
||||
- **source** (**Required**, :ref:`config-id` of a :doc:`/components/sensor/index`): The
|
||||
sensor that is used as sample source
|
||||
- **error** (**Required**, float, :ref:`templatable <config-templatable>`): The standard deviation of the
|
||||
sensor's measurements. If implemented as a template, the measurement is in
|
||||
parameter ``x``.
|
||||
|
||||
- All other options from :ref:`Sensor <config-sensor>`.
|
||||
|
||||
See Also
|
||||
--------
|
||||
|
||||
- :ref:`sensor-filters`
|
||||
- :apiref:`kalman_combinator/kalman_combinator.h`
|
||||
- :ghedit:`Edit`
|
96
components/sensor/veml3235.rst
Normal file
@ -0,0 +1,96 @@
|
||||
VEML3235 Ambient Light Sensor
|
||||
=============================
|
||||
|
||||
.. seo::
|
||||
:description: Instructions for setting up VEML3235 ambient light sensors in ESPHome.
|
||||
:image: veml3235.jpg
|
||||
:keywords: VEML3235
|
||||
|
||||
The ``veml3235`` sensor platform allows you to use the Vishay VEML3235 ambient light sensor with ESPHome.
|
||||
Communication with the device is over :ref:`I²C <i2c>`, which must be present in your configuration.
|
||||
|
||||
.. figure:: images/veml3235.jpg
|
||||
:align: center
|
||||
:width: 50.0%
|
||||
|
||||
The VEML3235 Ambient Light Sensor
|
||||
|
||||
This sensor provides a 16-bit dynamic range for ambient light detection ranging from 0 lx to nearly 18 klx, with a
|
||||
resolution as small as 0.0021 lx/counts. It achieves that range by having two configurable ``gain`` values and a range
|
||||
of integration times. For many applications, you can enable auto gain to have ESPHome select a suitable gain setting
|
||||
based on the previous measurement. If light levels change dramatically, the next reading may saturate, after which the
|
||||
gain will be adjusted to bring subsequent readings back in range. In general, use higher gain values and/or longer
|
||||
integration times when measuring less intense light sources.
|
||||
|
||||
This Wikipedia `article <https://en.wikipedia.org/wiki/Lux>`__ has a table of some lux values for comparison.
|
||||
|
||||
Values reported are in units of ``lux``, but understand that measurement of any lux value requires careful calibration
|
||||
for the light frequency or frequencies under measurement, conversion coefficients for the specific device, and other
|
||||
factors. In short, to really get a true lux value measurement, you should do a laboratory-grade calibration specific
|
||||
to your use case. If you are the sort of person who can do a laboratory-grade calibration, you probably knew all of
|
||||
that already. Still, you can still get values that will be "in the ballpark" without calibration. This is especially
|
||||
true if you just want to distinguish among "no light", "a little bit of light", "a lot of light", etc.
|
||||
|
||||
.. code-block:: yaml
|
||||
|
||||
# Example configuration entry
|
||||
sensor:
|
||||
- platform: veml3235
|
||||
id: veml3235_sensor
|
||||
name: VEML3235 Light Sensor
|
||||
auto_gain: true
|
||||
auto_gain_threshold_high: 90%
|
||||
auto_gain_threshold_low: 20%
|
||||
digital_gain: 1X
|
||||
gain: 1X
|
||||
integration_time: 50ms
|
||||
|
||||
Configuration variables:
|
||||
------------------------
|
||||
- **gain** (*Optional*, string): The gain the device will use. Higher values are better in low-light conditions.
|
||||
You cannot specify an arbitrary gain multiplier. It must be one of:
|
||||
|
||||
- ``1x`` *(default)*
|
||||
- ``2x``
|
||||
- ``4x``
|
||||
|
||||
- **digital_gain** (*Optional*, string): Similar to ``gain``; provides an additional multipler, further increasing
|
||||
range. You cannot specify an arbitrary digital gain multiplier. It must be one of:
|
||||
|
||||
- ``1x`` *(default)*
|
||||
- ``2x``
|
||||
|
||||
- **integration_time** (*Optional*, :ref:`config-time`): The time the device will use for each measurement. Longer
|
||||
means more accurate values. You cannot specify an arbitrary amount of time. It must be the equivalent of one of:
|
||||
|
||||
- ``50ms`` *(default)*
|
||||
- ``100ms``
|
||||
- ``200ms``
|
||||
- ``400ms``
|
||||
- ``800ms``
|
||||
|
||||
- **auto_gain** (*Optional*, boolean): When set to ``true`` (the default), ``gain``, ``digital_gain`` and
|
||||
``integration_time`` will be adjusted automatically to avoid saturating the sensor and allow use of the maximum
|
||||
possible resolution; if these values are included in the configuration, they will be used as initial values only.
|
||||
- **auto_gain_threshold_high** (*Optional*, percentage): A percentage of the maximum possible lux measurement given the
|
||||
current gains and integration time; when the lux measurement climbs above this value, the ``gain``, ``digital_gain``
|
||||
and ``integration_time`` values will be reset and recalculated to avoid saturation and maximize resolution. The
|
||||
default value is ``90%``.
|
||||
- **auto_gain_threshold_low** (*Optional*, percentage): A percentage of the maximum possible lux measurement given the
|
||||
current gains and integration time; when the lux measurement falls below this value, the ``gain``, ``digital_gain``
|
||||
and ``integration_time`` values will be reset and recalculated to avoid saturation and maximize resolution. The
|
||||
default value is ``20%``.
|
||||
- All other options from :ref:`Sensor <config-sensor>`.
|
||||
|
||||
See Also
|
||||
--------
|
||||
|
||||
- :ref:`sensor-filters`
|
||||
- `Vishay VEML3235 product page <https://www.vishay.com/en/product/80131/>`__
|
||||
- `Vishay VEML3235 datasheet <https://www.vishay.com/docs/80131/veml3235.pdf>`__
|
||||
- `Designing the VEML3235 Into an Application <https://www.vishay.com/docs/80222/designingveml3235.pdf>`__
|
||||
- :doc:`tsl2591`
|
||||
- :doc:`tsl2561`
|
||||
- :doc:`bh1750`
|
||||
- :apiref:`veml3235/veml3235.h`
|
||||
- :ghedit:`Edit`
|
@ -23,6 +23,8 @@ The SPI bus usually consists of 4 wires:
|
||||
- **MISO** (also SDI - Serial Data In): Is used to receive data. All devices on the bus share this line.
|
||||
|
||||
In some cases one of **MOSI** or **MISO** do not exist as the receiving device only accepts data or sends data.
|
||||
It is also possible to configure a quad SPI interface using 4 output data lines. This is required only for
|
||||
use with certain components.
|
||||
|
||||
To set up SPI devices in ESPHome, you first need to place a top-level SPI component which defines the pins to
|
||||
use for the functions described above. The **CS** pins are individually managed by the other components that
|
||||
@ -37,7 +39,7 @@ This component also accepts a list of controllers if you want to implement multi
|
||||
mosi_pin: GPIO13
|
||||
miso_pin: GPIO12
|
||||
|
||||
# Example configuration entry - two controllers
|
||||
# Example configuration entry - three controllers, one using quad SPI
|
||||
spi:
|
||||
- id: spi_bus0
|
||||
clk_pin: GPIO18
|
||||
@ -49,6 +51,13 @@ This component also accepts a list of controllers if you want to implement multi
|
||||
mosi_pin: GPIO27
|
||||
miso_pin: GPIO26
|
||||
interface: any
|
||||
- id: quad_spi_bus
|
||||
clk_pin: GPIO47
|
||||
data_pins:
|
||||
- 40
|
||||
- 41
|
||||
- 42
|
||||
- 43
|
||||
|
||||
Configuration variables:
|
||||
------------------------
|
||||
@ -60,8 +69,11 @@ Configuration variables:
|
||||
- **interface** (*Optional*): Controls which hardware or software SPI implementation should be used.
|
||||
Value may be one of ``any`` (default), ``software``, ``hardware``, ``spi``, ``spi2`` or ``spi3``, depending on
|
||||
the particular chip. See discussion below.
|
||||
- **force_sw** (*Optional*, **Deprecated**, boolean): Whether software implementation should be used even if a hardware
|
||||
controller is available. Default is ``false``.
|
||||
- **data_pins** (*Optional*, :ref:`Pin Schema <config-pin_schema>`): Must be a list of exactly 4 pins to be used
|
||||
for the quad SPI output data lines.
|
||||
|
||||
At least one of ``mosi_pin``, ``miso_pin`` and ``data_pins`` must be specified.
|
||||
|
||||
|
||||
Interface selection:
|
||||
--------------------
|
||||
|
44
components/touchscreen/ft5x06.rst
Normal file
@ -0,0 +1,44 @@
|
||||
FT5X06 Touch Screen Controller
|
||||
===============================
|
||||
|
||||
.. seo::
|
||||
:description: Instructions for setting up ft5x06 touch screen controller with ESPHome
|
||||
:image: indicator.jpg
|
||||
:keywords: FT5X06, Seeed Indicator
|
||||
|
||||
The ``ft5x06`` touchscreen platform allows using the touch screen controllers based on the ft5x06 chip with ESPHome.
|
||||
The :ref:`I²C <i2c>` is required to be set up in your configuration for this touchscreen to work.
|
||||
|
||||
This controller is used in the Seeed Studio Sensecap Indicator.
|
||||
|
||||
|
||||
.. figure:: images/indicator.jpg
|
||||
:align: center
|
||||
:width: 50.0%
|
||||
|
||||
ft5x06 touchscreen in Seeed Studio Sensecap Indicator.
|
||||
|
||||
Base Touchscreen Configuration
|
||||
------------------------------
|
||||
|
||||
.. code-block:: yaml
|
||||
|
||||
# Example configuration entry
|
||||
touchscreen:
|
||||
platform: ft5x06
|
||||
id: my_touchscreen
|
||||
|
||||
Configuration variables:
|
||||
************************
|
||||
|
||||
- **id** (*Optional*, :ref:`config-id`): Manually set the ID of this touchscreen.
|
||||
- **rotation** (*Optional*): Set the rotation of the touchscreen. By default this will be set to match the display associated with the touchscreen, but this allows more control. Choices are ``0``, ``90``, ``180`` and ``270``.
|
||||
|
||||
- All other options from :ref:`Touchscreen <config-touchscreen>`.
|
||||
|
||||
|
||||
See Also
|
||||
--------
|
||||
|
||||
- :apiref:`ft5x06/touchscreen/ft5x06_touchscreen.h`
|
||||
- :ghedit:`Edit`
|
BIN
components/touchscreen/images/indicator.jpg
Normal file
After Width: | Height: | Size: 29 KiB |
@ -205,7 +205,7 @@ Below are the methods to read current settings and modify them dynamically:
|
||||
id(my_uart).get_baud_rate();
|
||||
|
||||
- **Modifying Settings at Runtime:** You can change certain UART parameters during runtime.
|
||||
After setting new values, invoke ``load_settings()`` (ESP32 only) to apply these changes:
|
||||
After setting new values, invoke ``load_settings()`` (ESP only) to apply these changes:
|
||||
|
||||
.. code-block:: yaml
|
||||
|
||||
|
@ -225,6 +225,22 @@ This binary sensor tracks the connection status (*online*/*offline*) of the remo
|
||||
All options from :ref:`Binary Sensor <config-binary_sensor>` can be added to the
|
||||
above configuration.
|
||||
|
||||
Enabled Binary Sensor
|
||||
^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
This binary sensor tracks if |wireguard| is *enabled* or not.
|
||||
|
||||
.. code-block:: yaml
|
||||
|
||||
# Example configuration entry
|
||||
binary_sensor:
|
||||
- platform: wireguard
|
||||
enabled:
|
||||
name: 'WireGuard Enabled'
|
||||
|
||||
All options from :ref:`Binary Sensor <config-binary_sensor>` can be added to the
|
||||
above configuration.
|
||||
|
||||
Latest Handshake Sensor
|
||||
^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
@ -257,6 +273,85 @@ This sensor exposes to the frontend the configured :ref:`address <wireguard-addr
|
||||
All options from :ref:`Text Sensor <config-text_sensor>` can be added to the
|
||||
above configuration.
|
||||
|
||||
.. _wireguard-actions:
|
||||
|
||||
Actions
|
||||
-------
|
||||
|
||||
The following actions are available.
|
||||
|
||||
``wireguard.disable``
|
||||
^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
This action drops down the active VPN link (if any) and disables the component.
|
||||
|
||||
.. code-block:: yaml
|
||||
|
||||
on_...:
|
||||
then:
|
||||
- wireguard.disable:
|
||||
|
||||
The lambda equivalent is ``id(wireguard_id).disable()``.
|
||||
|
||||
.. note::
|
||||
|
||||
To disable |wireguard| since device boot you can execute this action
|
||||
in the :ref:`esphome-on_boot` step.
|
||||
|
||||
``wireguard.enable``
|
||||
^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
This action enables the component and starts the connection to the remote peer.
|
||||
|
||||
.. code-block:: yaml
|
||||
|
||||
on_...:
|
||||
then:
|
||||
- wireguard.enable:
|
||||
|
||||
The lambda equivalent is ``id(wireguard_id).enable()``.
|
||||
|
||||
.. _wireguard-conditions:
|
||||
|
||||
Conditions
|
||||
----------
|
||||
|
||||
The following conditions are available.
|
||||
|
||||
``wireguard.enabled``
|
||||
^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
This condition checks if |wireguard| is currently enabled or not.
|
||||
|
||||
.. code-block:: yaml
|
||||
|
||||
on_...:
|
||||
- if:
|
||||
condition: wireguard.enabled
|
||||
then:
|
||||
- ...
|
||||
else:
|
||||
- ...
|
||||
|
||||
The lambda equivalent is ``id(wireguard_id).is_enabled()``.
|
||||
|
||||
``wireguard.peer_online``
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
This condition checks if the remote peer is *online*.
|
||||
|
||||
.. code-block:: yaml
|
||||
|
||||
on_...:
|
||||
- if:
|
||||
condition: wireguard.peer_online
|
||||
then:
|
||||
- ...
|
||||
else:
|
||||
- ...
|
||||
|
||||
The lambda equivalent is ``id(wireguard_id).is_peer_up()``.
|
||||
|
||||
.. _wireguard-installation:
|
||||
|
||||
Remote peer setup
|
||||
@ -305,6 +400,7 @@ See Also
|
||||
|
||||
- :doc:`time/index`
|
||||
- :doc:`time/sntp`
|
||||
- :ref:`automation`
|
||||
- |wireguard|_ official website
|
||||
- `Home Assistant Community Add-on: WireGuard
|
||||
<https://community.home-assistant.io/t/home-assistant-community-add-on-wireguard/134662>`__
|
||||
|
4
conf.py
@ -67,9 +67,9 @@ author = "ESPHome"
|
||||
# built documents.
|
||||
#
|
||||
# The short X.Y version.
|
||||
version = "2023.12"
|
||||
version = "2024.2"
|
||||
# The full version, including alpha/beta/rc tags.
|
||||
release = "2023.12.9"
|
||||
release = "2024.2.0b1"
|
||||
|
||||
# The language for content autogenerated by Sphinx. Refer to documentation
|
||||
# for a list of supported languages.
|
||||
|
@ -98,7 +98,8 @@ Actions
|
||||
-------
|
||||
|
||||
Now comes the actual automation block. With ``then``, you tell ESPHome what should happen when the press happens.
|
||||
Within this block, you can define several "actions". For example, ``switch.toggle`` and the line after that form an
|
||||
Within this block, you can define several "actions" that will be executed sequentially.
|
||||
For example, ``switch.toggle`` and the line after that form an
|
||||
action. Each action is separated by a dash and multiple actions can be executed in series by just adding another ``-``
|
||||
like so:
|
||||
|
||||
@ -409,6 +410,7 @@ All Actions
|
||||
- :ref:`media_player.play <media_player-play>` / :ref:`media_player.pause <media_player-pause>` / :ref:`media_player.stop <media_player-stop>` / :ref:`media_player.toggle <media_player-toggle>`
|
||||
/ :ref:`media_player.volume_up <media_player-volume_up>` / :ref:`media_player.volume_down <media_player-volume_down>` / :ref:`media_player.volume_set <media_player-volume_set>`
|
||||
- :ref:`ble_client.ble_write <ble_client-ble_write_action>`
|
||||
- :ref:`wireguard.disable <wireguard-actions>` / :ref:`wireguard.enable <wireguard-actions>`
|
||||
|
||||
.. _config-condition:
|
||||
|
||||
@ -431,6 +433,7 @@ All Conditions
|
||||
- :ref:`display.is_displaying_page <display-is_displaying_page-condition>`
|
||||
- :ref:`number.in_range <number-in_range_condition>`
|
||||
- :ref:`fan.is_on <fan-is_on_condition>` / :ref:`fan.is_off <fan-is_off_condition>`
|
||||
- :ref:`wireguard.enabled <wireguard-conditions>` / :ref:`wireguard.peer_online <wireguard-conditions>`
|
||||
|
||||
All Lambda Calls
|
||||
----------------
|
||||
|
@ -472,6 +472,8 @@ variables can be provided to them. This means that packages can be
|
||||
used as `templates`, allowing complex or repetitive configurations to
|
||||
be stored in a package file and then incorporated into the
|
||||
configuration more than once.
|
||||
Additionally packages could contain a ``defaults`` block which provides
|
||||
subsitutions for variables not provided by the ``!include`` block.
|
||||
|
||||
As an example, if the configuration needed to support three garage
|
||||
doors using the ``gpio`` switch platform and the ``time_based`` cover
|
||||
@ -502,11 +504,17 @@ platform, it could be constructed like this:
|
||||
door_location: right
|
||||
open_switch_gpio: 15
|
||||
close_switch_gpio: 18
|
||||
open_duration: "1min"
|
||||
close_duration: "50s"
|
||||
|
||||
|
||||
.. code-block:: yaml
|
||||
|
||||
# In garage-door.yaml
|
||||
defaults:
|
||||
open_duration: "2.1min"
|
||||
close_duration: "2min"
|
||||
|
||||
switch:
|
||||
- id: open_${door_location}_door_switch
|
||||
name: ${door_name} Garage Door Open Switch
|
||||
@ -524,11 +532,11 @@ platform, it could be constructed like this:
|
||||
|
||||
open_action:
|
||||
- switch.turn_on: open_${door_location}_door_switch
|
||||
open_duration: 2.1min
|
||||
open_duration: ${open_duration}
|
||||
|
||||
close_action:
|
||||
- switch.turn_on: close_${door_location}_door_switch
|
||||
close_duration: 2min
|
||||
close_duration: ${close_duration}
|
||||
|
||||
stop_action:
|
||||
- switch.turn_off: open_${door_location}_door_switch
|
||||
|
@ -30,7 +30,7 @@ Contributors
|
||||
- `Alessandro Campolo (@a13ssandr0) <https://github.com/a13ssandr0>`__
|
||||
- `Aalian Khan (@AalianKhan) <https://github.com/AalianKhan>`__
|
||||
- `Adam Liddell (@aaliddell) <https://github.com/aaliddell>`__
|
||||
- `Aapeli (@aapeliv) <https://github.com/aapeliv>`__
|
||||
- `Aapeli Vuorinen (@aapeliv) <https://github.com/aapeliv>`__
|
||||
- `Aaron Gamble (@aarongamble) <https://github.com/aarongamble>`__
|
||||
- `Aaron S. Jackson (@AaronJackson) <https://github.com/AaronJackson>`__
|
||||
- `Abel Matser (@abelmatser) <https://github.com/abelmatser>`__
|
||||
@ -73,7 +73,7 @@ Contributors
|
||||
- `Alexandre Danault (@AlexDanault) <https://github.com/AlexDanault>`__
|
||||
- `Alex Iribarren (@alexiri) <https://github.com/alexiri>`__
|
||||
- `Alex Mekkering (@AlexMekkering) <https://github.com/AlexMekkering>`__
|
||||
- `Alex Yao (@alexyao2015) <https://github.com/alexyao2015>`__
|
||||
- `Alex (@alexyao2015) <https://github.com/alexyao2015>`__
|
||||
- `Alfredo (@alfredopironti) <https://github.com/alfredopironti>`__
|
||||
- `Alibloke (@Alibloke) <https://github.com/Alibloke>`__
|
||||
- `Alessandro Ranellucci (@alranel) <https://github.com/alranel>`__
|
||||
@ -94,12 +94,12 @@ Contributors
|
||||
- `Andreas Hergert (@andreashergert1984) <https://github.com/andreashergert1984>`__
|
||||
- `Andrew J.Swan (@andrewjswan) <https://github.com/andrewjswan>`__
|
||||
- `andrewpc (@andrewpc) <https://github.com/andrewpc>`__
|
||||
- `Andrew Y. (@andrey-yantsen) <https://github.com/andrey-yantsen>`__
|
||||
- `Andrey Yantsen (@andrey-yantsen) <https://github.com/andrey-yantsen>`__
|
||||
- `Andrzej (@andriej) <https://github.com/andriej>`__
|
||||
- `Andreas (@anduchs) <https://github.com/anduchs>`__
|
||||
- `Andy2No (@Andy2No) <https://github.com/Andy2No>`__
|
||||
- `AndyRPH (@AndyRPH) <https://github.com/AndyRPH>`__
|
||||
- `Angel Nunez Mencias (@angelnu) <https://github.com/angelnu>`__
|
||||
- `Vegetto (@angelnu) <https://github.com/angelnu>`__
|
||||
- `Sergey Anisimov (@anisimovsergey) <https://github.com/anisimovsergey>`__
|
||||
- `Nikolay Vasilchuk (@Anonym-tsk) <https://github.com/Anonym-tsk>`__
|
||||
- `Anthony Keane (@anthonykeane) <https://github.com/anthonykeane>`__
|
||||
@ -129,13 +129,13 @@ Contributors
|
||||
- `Alexander Turlov (@aturlov) <https://github.com/aturlov>`__
|
||||
- `aus (@aus) <https://github.com/aus>`__
|
||||
- `AustinMorris (@AustinMorris) <https://github.com/AustinMorris>`__
|
||||
- `Denis Demchenko (@Avirsaam) <https://github.com/Avirsaam>`__
|
||||
- `Avirsaam (@Avirsaam) <https://github.com/Avirsaam>`__
|
||||
- `Arsène von Wyss (@avonwyss) <https://github.com/avonwyss>`__
|
||||
- `Andrew Weddle (@aweddle2) <https://github.com/aweddle2>`__
|
||||
- `Alexis Iglauer (@ax42) <https://github.com/ax42>`__
|
||||
- `Achilleas Pipinellis (@axilleas) <https://github.com/axilleas>`__
|
||||
- `Kamil Trzciński (@ayufan) <https://github.com/ayufan>`__
|
||||
- `Azimath (@Azimath) <https://github.com/Azimath>`__
|
||||
- `Nicholas Peters (@Azimath) <https://github.com/Azimath>`__
|
||||
- `Daniel (@azrael783) <https://github.com/azrael783>`__
|
||||
- `B48D81EFCC (@B48D81EFCC) <https://github.com/B48D81EFCC>`__
|
||||
- `Florian Mösch (@badbadc0ffee) <https://github.com/badbadc0ffee>`__
|
||||
@ -150,7 +150,7 @@ Contributors
|
||||
- `Bascht74 (@Bascht74) <https://github.com/Bascht74>`__
|
||||
- `Viktr (@BbIKTOP) <https://github.com/BbIKTOP>`__
|
||||
- `J. Nick Koston (@bdraco) <https://github.com/bdraco>`__
|
||||
- `Maxym Ocheretianko (@bearpawmaxim) <https://github.com/bearpawmaxim>`__
|
||||
- `Maxim Ocheretianko (@bearpawmaxim) <https://github.com/bearpawmaxim>`__
|
||||
- `beaudeanadams (@beaudeanadams) <https://github.com/beaudeanadams>`__
|
||||
- `Benjamin Freeman (@Beetix) <https://github.com/Beetix>`__
|
||||
- `beikeland (@beikeland) <https://github.com/beikeland>`__
|
||||
@ -175,7 +175,7 @@ Contributors
|
||||
- `Bert Hertogen (@berthertogen) <https://github.com/berthertogen>`__
|
||||
- `Brandon (@bgulla) <https://github.com/bgulla>`__
|
||||
- `Benedikt Hübschen (@bhuebschen) <https://github.com/bhuebschen>`__
|
||||
- `Stef (@Bierchermuesli) <https://github.com/Bierchermuesli>`__
|
||||
- `Bierchermuesli (@Bierchermuesli) <https://github.com/Bierchermuesli>`__
|
||||
- `bigwoof (@bigwoof) <https://github.com/bigwoof>`__
|
||||
- `Bill Church (@billchurch) <https://github.com/billchurch>`__
|
||||
- `Brian Kaufman (@bkaufx) <https://github.com/bkaufx>`__
|
||||
@ -197,7 +197,7 @@ Contributors
|
||||
- `Casey Olson (@bookcasey) <https://github.com/bookcasey>`__
|
||||
- `Borja Burgos (@borjaburgos) <https://github.com/borjaburgos>`__
|
||||
- `Brian Orpin (@borpin) <https://github.com/borpin>`__
|
||||
- `bouhaa (@BoukeHaarsma23) <https://github.com/BoukeHaarsma23>`__
|
||||
- `BoukeHaarsma23 (@BoukeHaarsma23) <https://github.com/BoukeHaarsma23>`__
|
||||
- `brabl2 (@brabl2) <https://github.com/brabl2>`__
|
||||
- `brainiac27 (@brainiac27) <https://github.com/brainiac27>`__
|
||||
- `brambo123 (@brambo123) <https://github.com/brambo123>`__
|
||||
@ -254,6 +254,7 @@ Contributors
|
||||
- `Chris (@chrismaki) <https://github.com/chrismaki>`__
|
||||
- `Christoph Wagner (@Christoph-Wagner) <https://github.com/Christoph-Wagner>`__
|
||||
- `Christian Taedcke (@chrta) <https://github.com/chrta>`__
|
||||
- `ChuckMash (@ChuckMash) <https://github.com/ChuckMash>`__
|
||||
- `Pavel Skuratovich (@Chupaka) <https://github.com/Chupaka>`__
|
||||
- `Chris Johnson (@ciband) <https://github.com/ciband>`__
|
||||
- `CircuitGuy (@CircuitGuy) <https://github.com/CircuitGuy>`__
|
||||
@ -393,7 +394,7 @@ Contributors
|
||||
- `dr-oblivium (@dr-oblivium) <https://github.com/dr-oblivium>`__
|
||||
- `Jean Louis-Guerin (@DrCoolzic) <https://github.com/DrCoolzic>`__
|
||||
- `Drew Perttula (@drewp) <https://github.com/drewp>`__
|
||||
- `Angel G (@drmodding) <https://github.com/drmodding>`__
|
||||
- `drmodding (@drmodding) <https://github.com/drmodding>`__
|
||||
- `drmpf (@drmpf) <https://github.com/drmpf>`__
|
||||
- `drogfild (@drogfild) <https://github.com/drogfild>`__
|
||||
- `Simone Rossetto (@droscy) <https://github.com/droscy>`__
|
||||
@ -404,7 +405,7 @@ Contributors
|
||||
- `Tom Soer (@dtx3k) <https://github.com/dtx3k>`__
|
||||
- `dubit0 (@dubit0) <https://github.com/dubit0>`__
|
||||
- `Mikkel Jeppesen (@Duckle29) <https://github.com/Duckle29>`__
|
||||
- `Sergey Dudanov (@dudanov) <https://github.com/dudanov>`__
|
||||
- `Sergey V. DUDANOV (@dudanov) <https://github.com/dudanov>`__
|
||||
- `David Girón (@duhow) <https://github.com/duhow>`__
|
||||
- `Duncan Findlay (@duncf) <https://github.com/duncf>`__
|
||||
- `David van der Leij (@dvanderleij) <https://github.com/dvanderleij>`__
|
||||
@ -425,7 +426,7 @@ Contributors
|
||||
- `Eli Fidler (@efidler) <https://github.com/efidler>`__
|
||||
- `egandro (@egandro) <https://github.com/egandro>`__
|
||||
- `Erwin Kooi (@egeltje) <https://github.com/egeltje>`__
|
||||
- `Egglestron (@Egglestron) <https://github.com/Egglestron>`__
|
||||
- `Maxime Michel (@Egglestron) <https://github.com/Egglestron>`__
|
||||
- `Eike (@ei-ke) <https://github.com/ei-ke>`__
|
||||
- `Elazar Leibovich (@elazarl) <https://github.com/elazarl>`__
|
||||
- `Eli (@eli-xciv) <https://github.com/eli-xciv>`__
|
||||
@ -459,6 +460,7 @@ Contributors
|
||||
- `Evan Coleman (@evandcoleman) <https://github.com/evandcoleman>`__
|
||||
- `Clemens Kirchgatterer (@everslick) <https://github.com/everslick>`__
|
||||
- `Evgeni Golov (@evgeni) <https://github.com/evgeni>`__
|
||||
- `evlo (@evlo) <https://github.com/evlo>`__
|
||||
- `Expaso (@Expaso) <https://github.com/Expaso>`__
|
||||
- `Malte Franken (@exxamalte) <https://github.com/exxamalte>`__
|
||||
- `f0rdprefect (@f0rdprefect) <https://github.com/f0rdprefect>`__
|
||||
@ -485,6 +487,7 @@ Contributors
|
||||
- `Clemens (@firegore) <https://github.com/firegore>`__
|
||||
- `Fredrik Jansson (@fjansson) <https://github.com/fjansson>`__
|
||||
- `Frédéric Jouault (@fjouault) <https://github.com/fjouault>`__
|
||||
- `FL42 (@fl42) <https://github.com/fl42>`__
|
||||
- `Sean Vig (@flacjacket) <https://github.com/flacjacket>`__
|
||||
- `Diego Elio Pettenò (@Flameeyes) <https://github.com/Flameeyes>`__
|
||||
- `Flaviu Tamas (@flaviut) <https://github.com/flaviut>`__
|
||||
@ -492,6 +495,7 @@ Contributors
|
||||
- `fluffymonster (@fluffymonster) <https://github.com/fluffymonster>`__
|
||||
- `flyize (@flyize) <https://github.com/flyize>`__
|
||||
- `风飘雨 (@flyrainning) <https://github.com/flyrainning>`__
|
||||
- `foltymat (@foltymat) <https://github.com/foltymat>`__
|
||||
- `Fabio Pugliese Ornellas (@fornellas) <https://github.com/fornellas>`__
|
||||
- `Fractal147 (@Fractal147) <https://github.com/Fractal147>`__
|
||||
- `Francis-labo (@Francis-labo) <https://github.com/Francis-labo>`__
|
||||
@ -572,6 +576,7 @@ Contributors
|
||||
- `Peter van Dijk (@Habbie) <https://github.com/Habbie>`__
|
||||
- `Dusan Cervenka (@Hadatko) <https://github.com/Hadatko>`__
|
||||
- `Hagai Shatz (@hagai-shatz) <https://github.com/hagai-shatz>`__
|
||||
- `hajar97 (@hajar97) <https://github.com/hajar97>`__
|
||||
- `Boris Hajduk (@hajdbo) <https://github.com/hajdbo>`__
|
||||
- `Gavin Mogan (@halkeye) <https://github.com/halkeye>`__
|
||||
- `Charles (@hallard) <https://github.com/hallard>`__
|
||||
@ -586,7 +591,7 @@ Contributors
|
||||
- `Jimmy Hedman (@HeMan) <https://github.com/HeMan>`__
|
||||
- `Hemi03 (@Hemi03) <https://github.com/Hemi03>`__
|
||||
- `HengYongChao (@HengYongChao) <https://github.com/HengYongChao>`__
|
||||
- `Andrei Solodovnikov (@HepoH3) <https://github.com/HepoH3>`__
|
||||
- `HepoH3 (@HepoH3) <https://github.com/HepoH3>`__
|
||||
- `Hermann Kraus (@herm) <https://github.com/herm>`__
|
||||
- `Herr Frei (@herrfrei) <https://github.com/herrfrei>`__
|
||||
- `highground88 (@highground88) <https://github.com/highground88>`__
|
||||
@ -609,7 +614,7 @@ Contributors
|
||||
- `Adrián Panella (@ianchi) <https://github.com/ianchi>`__
|
||||
- `Ian Anderson (@ianderso) <https://github.com/ianderso>`__
|
||||
- `Ian Leeder (@ianleeder) <https://github.com/ianleeder>`__
|
||||
- `Honza Pobořil (@iBobik) <https://github.com/iBobik>`__
|
||||
- `Jan Pobořil (@iBobik) <https://github.com/iBobik>`__
|
||||
- `igg (@igg) <https://github.com/igg>`__
|
||||
- `Ignacio Hernandez-Ros (@IgnacioHR) <https://github.com/IgnacioHR>`__
|
||||
- `Ivan Grokhotkov (@igrr) <https://github.com/igrr>`__
|
||||
@ -619,7 +624,6 @@ Contributors
|
||||
- `ilium007 (@ilium007) <https://github.com/ilium007>`__
|
||||
- `Iman Ahmadvand (@IMAN4K) <https://github.com/IMAN4K>`__
|
||||
- `imgbot[bot] (@imgbot[bot]) <https://github.com/imgbot[bot]>`__
|
||||
- `ImSorryButWho (@ImSorryButWho) <https://github.com/ImSorryButWho>`__
|
||||
- `imwoo90 (@imwoo90) <https://github.com/imwoo90>`__
|
||||
- `Dom (@Ing-Dom) <https://github.com/Ing-Dom>`__
|
||||
- `Ingo Becker (@ingobecker) <https://github.com/ingobecker>`__
|
||||
@ -666,6 +670,7 @@ Contributors
|
||||
- `jimtng (@jimtng) <https://github.com/jimtng>`__
|
||||
- `jivesinger (@jivesinger) <https://github.com/jivesinger>`__
|
||||
- `jj-uk (@jj-uk) <https://github.com/jj-uk>`__
|
||||
- `Jean J. de Jong (@jjdejong) <https://github.com/jjdejong>`__
|
||||
- `John K. Luebs (@jkl1337) <https://github.com/jkl1337>`__
|
||||
- `Jeppe Ladefoged (@jladefoged) <https://github.com/jladefoged>`__
|
||||
- `Jean-Luc Béchennec (@jlbirccyn) <https://github.com/jlbirccyn>`__
|
||||
@ -690,11 +695,12 @@ Contributors
|
||||
- `Joris S (@Jorre05) <https://github.com/Jorre05>`__
|
||||
- `Jared Sanson (@jorticus) <https://github.com/jorticus>`__
|
||||
- `JosephTang (@JosephTang) <https://github.com/JosephTang>`__
|
||||
- `Joshua Baran (@joshbaran) <https://github.com/joshbaran>`__
|
||||
- `Joshua Spence (@joshuaspence) <https://github.com/joshuaspence>`__
|
||||
- `joskfg (@joskfg) <https://github.com/joskfg>`__
|
||||
- `Joscha Wagner (@jowgn) <https://github.com/jowgn>`__
|
||||
- `Javier Peletier (@jpeletier) <https://github.com/jpeletier>`__
|
||||
- `Jos Suanet (@jsuanet) <https://github.com/jsuanet>`__
|
||||
- `jsuanet (@jsuanet) <https://github.com/jsuanet>`__
|
||||
- `James Szalay (@jtszalay) <https://github.com/jtszalay>`__
|
||||
- `Jules-R (@Jules-R) <https://github.com/Jules-R>`__
|
||||
- `Julie Koubová (@juliekoubova) <https://github.com/juliekoubova>`__
|
||||
@ -732,7 +738,7 @@ Contributors
|
||||
- `Kevin P. Fleming (@kpfleming) <https://github.com/kpfleming>`__
|
||||
- `Karl Q. (@kquinsland) <https://github.com/kquinsland>`__
|
||||
- `Anandha Saravanan (@KratosMr) <https://github.com/KratosMr>`__
|
||||
- `Stefan Rado (@kroimon) <https://github.com/kroimon>`__
|
||||
- `kroimon (@kroimon) <https://github.com/kroimon>`__
|
||||
- `krunkel (@krunkel) <https://github.com/krunkel>`__
|
||||
- `kryptonitecb3 (@kryptonitecb3) <https://github.com/kryptonitecb3>`__
|
||||
- `Kendell R (@KTibow) <https://github.com/KTibow>`__
|
||||
@ -746,16 +752,17 @@ Contributors
|
||||
- `Anton Viktorov (@latonita) <https://github.com/latonita>`__
|
||||
- `Lawrie George (@lawriege) <https://github.com/lawriege>`__
|
||||
- `Ludovic BOUÉ (@lboue) <https://github.com/lboue>`__
|
||||
- `Luca Cavalli (@lcavalli) <https://github.com/lcavalli>`__
|
||||
- `lcavalli (@lcavalli) <https://github.com/lcavalli>`__
|
||||
- `Craig Fletcher (@leakypixel) <https://github.com/leakypixel>`__
|
||||
- `Dominik Wagenknecht (@LeDominik) <https://github.com/LeDominik>`__
|
||||
- `Benny de Leeuw (@leeuwte) <https://github.com/leeuwte>`__
|
||||
- `Thayne (@Legot) <https://github.com/Legot>`__
|
||||
- `Leonardo La Rocca (@leoli51) <https://github.com/leoli51>`__
|
||||
- `leoshusar (@leoshusar) <https://github.com/leoshusar>`__
|
||||
- `Leo Winter (@LeoWinterDE) <https://github.com/LeoWinterDE>`__
|
||||
- `Lubos Horacek (@lhoracek) <https://github.com/lhoracek>`__
|
||||
- `Liionboy (@Liionboy) <https://github.com/Liionboy>`__
|
||||
- `LiJu09 (@LiJu09) <https://github.com/LiJu09>`__
|
||||
- `Juraj Liso (@LiJu09) <https://github.com/LiJu09>`__
|
||||
- `Li Junru (@lijunru-hub) <https://github.com/lijunru-hub>`__
|
||||
- `lillborje71 (@lillborje71) <https://github.com/lillborje71>`__
|
||||
- `Caleb Pryor (@lilmansplace) <https://github.com/lilmansplace>`__
|
||||
@ -802,6 +809,7 @@ Contributors
|
||||
- `Ben Marengo (@marengaz) <https://github.com/marengaz>`__
|
||||
- `Marvin Gaube (@margau) <https://github.com/margau>`__
|
||||
- `maringeph (@maringeph) <https://github.com/maringeph>`__
|
||||
- `Mario Di Vece (@mariodivece) <https://github.com/mariodivece>`__
|
||||
- `Mark Hildreth (@markhildreth) <https://github.com/markhildreth>`__
|
||||
- `Mark Schabacker (@markschabacker) <https://github.com/markschabacker>`__
|
||||
- `marshn (@marshn) <https://github.com/marshn>`__
|
||||
@ -816,6 +824,7 @@ Contributors
|
||||
- `Mat931 (@Mat931) <https://github.com/Mat931>`__
|
||||
- `mathieu-mp (@mathieu-mp) <https://github.com/mathieu-mp>`__
|
||||
- `matikij (@matikij) <https://github.com/matikij>`__
|
||||
- `Matjah Sonneveld (@matjahs) <https://github.com/matjahs>`__
|
||||
- `Michel Marti (@matoxp) <https://github.com/matoxp>`__
|
||||
- `matt123p (@matt123p) <https://github.com/matt123p>`__
|
||||
- `matthias882 (@matthias882) <https://github.com/matthias882>`__
|
||||
@ -885,7 +894,6 @@ Contributors
|
||||
- `Martin Wetterwald (@mwetterw) <https://github.com/mwetterw>`__
|
||||
- `mwolter805 (@mwolter805) <https://github.com/mwolter805>`__
|
||||
- `myhomeiot (@myhomeiot) <https://github.com/myhomeiot>`__
|
||||
- `Igor Scheller (@MyIgel) <https://github.com/MyIgel>`__
|
||||
- `Mykle (@myklemykle) <https://github.com/myklemykle>`__
|
||||
- `Mynasru (@Mynasru) <https://github.com/Mynasru>`__
|
||||
- `Kevin Uhlir (@n0bel) <https://github.com/n0bel>`__
|
||||
@ -905,6 +913,7 @@ Contributors
|
||||
- `Nazar Mokrynskyi (@nazar-pc) <https://github.com/nazar-pc>`__
|
||||
- `Bergont Nicolas (@nbergont) <https://github.com/nbergont>`__
|
||||
- `neilger (@neilger) <https://github.com/neilger>`__
|
||||
- `Neil Martin (@neilmartin83) <https://github.com/neilmartin83>`__
|
||||
- `Nejc Koncan (@nejc-cc) <https://github.com/nejc-cc>`__
|
||||
- `Nerijus Baliūnas (@nerijus) <https://github.com/nerijus>`__
|
||||
- `Nicolas Graziano (@ngraziano) <https://github.com/ngraziano>`__
|
||||
@ -928,7 +937,6 @@ Contributors
|
||||
- `Greg Johnson (@notgwj) <https://github.com/notgwj>`__
|
||||
- `JJ (@notjj) <https://github.com/notjj>`__
|
||||
- `Geoffrey Mayo (@notmayo) <https://github.com/notmayo>`__
|
||||
- `notsonominal (@notsonominal) <https://github.com/notsonominal>`__
|
||||
- `nouser2013 (@nouser2013) <https://github.com/nouser2013>`__
|
||||
- `Paul Read (@nsolvepaul) <https://github.com/nsolvepaul>`__
|
||||
- `Nick (@ntompson) <https://github.com/ntompson>`__
|
||||
@ -944,7 +952,7 @@ Contributors
|
||||
- `Ockert Marais (@OckertM) <https://github.com/OckertM>`__
|
||||
- `Dave Walker (@oddsockmachine) <https://github.com/oddsockmachine>`__
|
||||
- `Odd Stråbø (@oddstr13) <https://github.com/oddstr13>`__
|
||||
- `Andrii Ganzevych (@odya) <https://github.com/odya>`__
|
||||
- `Andrey Ganzevich (@odya) <https://github.com/odya>`__
|
||||
- `ogatatsu (@ogatatsu) <https://github.com/ogatatsu>`__
|
||||
- `Oğuzhan Başer (@oguzhanbaser) <https://github.com/oguzhanbaser>`__
|
||||
- `Larry (@ojaksch) <https://github.com/ojaksch>`__
|
||||
@ -955,7 +963,7 @@ Contributors
|
||||
- `Onne (@onnlucky) <https://github.com/onnlucky>`__
|
||||
- `optimusprimespace (@optimusprimespace) <https://github.com/optimusprimespace>`__
|
||||
- `Oscar Bolmsten (@oscar-b) <https://github.com/oscar-b>`__
|
||||
- `Mauri (@Otamay) <https://github.com/Otamay>`__
|
||||
- `Otamay (@Otamay) <https://github.com/Otamay>`__
|
||||
- `Otto Winter (@OttoWinter) <https://github.com/OttoWinter>`__
|
||||
- `Maxime Dufour (@outscale-mdr) <https://github.com/outscale-mdr>`__
|
||||
- `Ben Owen (@owenb321) <https://github.com/owenb321>`__
|
||||
@ -1029,7 +1037,7 @@ Contributors
|
||||
- `RadekHvizdos (@RadekHvizdos) <https://github.com/RadekHvizdos>`__
|
||||
- `rafalstarczak (@rafalstarczak) <https://github.com/rafalstarczak>`__
|
||||
- `Florian Ragwitz (@rafl) <https://github.com/rafl>`__
|
||||
- `Ben Winslow (@raineth) <https://github.com/raineth>`__
|
||||
- `raineth (@raineth) <https://github.com/raineth>`__
|
||||
- `Ben V. Brown (@Ralim) <https://github.com/Ralim>`__
|
||||
- `Benjamin G. (@Randomblock1) <https://github.com/Randomblock1>`__
|
||||
- `randomllama (@randomllama) <https://github.com/randomllama>`__
|
||||
@ -1050,7 +1058,7 @@ Contributors
|
||||
- `Robert Gabrielson (@rgabrielson11) <https://github.com/rgabrielson11>`__
|
||||
- `Rafael Goes (@rgriffogoes) <https://github.com/rgriffogoes>`__
|
||||
- `rheinz (@rheinz) <https://github.com/rheinz>`__
|
||||
- `Richard Hopton (@richardhopton) <https://github.com/richardhopton>`__
|
||||
- `richardhopton (@richardhopton) <https://github.com/richardhopton>`__
|
||||
- `Richard Klingler (@richardklingler) <https://github.com/richardklingler>`__
|
||||
- `Richard Lewis (@richrd) <https://github.com/richrd>`__
|
||||
- `Rishab Mehta (@rishabmehta7) <https://github.com/rishabmehta7>`__
|
||||
@ -1062,6 +1070,7 @@ Contributors
|
||||
- `rnauber (@rnauber) <https://github.com/rnauber>`__
|
||||
- `Rob Deutsch (@rob-deutsch) <https://github.com/rob-deutsch>`__
|
||||
- `Robert Alfaro (@robert-alfaro) <https://github.com/robert-alfaro>`__
|
||||
- `Robert91911 (@Robert91911) <https://github.com/Robert91911>`__
|
||||
- `Robinson1999 (@Robinson1999) <https://github.com/Robinson1999>`__
|
||||
- `RoboMagus (@RoboMagus) <https://github.com/RoboMagus>`__
|
||||
- `Roeland Lutters (@Roeland54) <https://github.com/Roeland54>`__
|
||||
@ -1122,6 +1131,7 @@ Contributors
|
||||
- `signix (@signix) <https://github.com/signix>`__
|
||||
- `SiliconAvatar (@SiliconAvatar) <https://github.com/SiliconAvatar>`__
|
||||
- `Mark Lopez (@Silvenga) <https://github.com/Silvenga>`__
|
||||
- `James Chaloupka (@SirGoodenough) <https://github.com/SirGoodenough>`__
|
||||
- `Maximilian Ertl (@Sirs0ri) <https://github.com/Sirs0ri>`__
|
||||
- `Francisco J. Solis (@sisco0) <https://github.com/sisco0>`__
|
||||
- `Derek Hageman (@Sizurka) <https://github.com/Sizurka>`__
|
||||
@ -1152,7 +1162,7 @@ Contributors
|
||||
- `sticilface (@sticilface) <https://github.com/sticilface>`__
|
||||
- `Stijn Tintel (@stintel) <https://github.com/stintel>`__
|
||||
- `Mathias Stock (@Stock-M) <https://github.com/Stock-M>`__
|
||||
- `Daniel Jönsson (@Strixx76) <https://github.com/Strixx76>`__
|
||||
- `Strixx76 (@Strixx76) <https://github.com/Strixx76>`__
|
||||
- `stubs12 (@stubs12) <https://github.com/stubs12>`__
|
||||
- `sud33p (@sud33p) <https://github.com/sud33p>`__
|
||||
- `sumirati (@sumirati) <https://github.com/sumirati>`__
|
||||
@ -1206,8 +1216,9 @@ Contributors
|
||||
- `Thomas Langewouters (@thouters) <https://github.com/thouters>`__
|
||||
- `Transylvania High Tech (@thtro) <https://github.com/thtro>`__
|
||||
- `Thunderbiscuits (@Thunderbiscuits) <https://github.com/Thunderbiscuits>`__
|
||||
- `Tiago Freire (@tiagofreire-pt) <https://github.com/tiagofreire-pt>`__
|
||||
- `tiagofreire-pt (@tiagofreire-pt) <https://github.com/tiagofreire-pt>`__
|
||||
- `Tijs-B (@Tijs-B) <https://github.com/Tijs-B>`__
|
||||
- `Bill Adams (@TikiBill) <https://github.com/TikiBill>`__
|
||||
- `Tim Boldt (@timboldt) <https://github.com/timboldt>`__
|
||||
- `Tim Laurence (@timdaman) <https://github.com/timdaman>`__
|
||||
- `Aidan Timson (@timmo001) <https://github.com/timmo001>`__
|
||||
@ -1216,7 +1227,7 @@ Contributors
|
||||
- `Tinkerfish (@tinkerfish) <https://github.com/tinkerfish>`__
|
||||
- `TJ Horner (@tjhorner) <https://github.com/tjhorner>`__
|
||||
- `Christian (@Tntdruid) <https://github.com/Tntdruid>`__
|
||||
- `Philipp Riederer (@toelke) <https://github.com/toelke>`__
|
||||
- `Philipp Tölke (@toelke) <https://github.com/toelke>`__
|
||||
- `tomaszduda23 (@tomaszduda23) <https://github.com/tomaszduda23>`__
|
||||
- `Tom Brien (@TomBrien) <https://github.com/TomBrien>`__
|
||||
- `Thomas Combriat (@tomcombriat) <https://github.com/tomcombriat>`__
|
||||
@ -1229,7 +1240,7 @@ Contributors
|
||||
- `Aleksandra M (@tort32) <https://github.com/tort32>`__
|
||||
- `tracestep (@tracestep) <https://github.com/tracestep>`__
|
||||
- `Trent Houliston (@TrentHouliston) <https://github.com/TrentHouliston>`__
|
||||
- `Felix E (@tribut) <https://github.com/tribut>`__
|
||||
- `Felix Eckhofer (@tribut) <https://github.com/tribut>`__
|
||||
- `Trick van Staveren (@trickv) <https://github.com/trickv>`__
|
||||
- `TripitakaBC (@TripitakaBC) <https://github.com/TripitakaBC>`__
|
||||
- `Tobias (@tripplet) <https://github.com/tripplet>`__
|
||||
@ -1255,6 +1266,7 @@ Contributors
|
||||
- `Vlad Yarotsky (@v-yarotsky) <https://github.com/v-yarotsky>`__
|
||||
- `Vc (@Valcob) <https://github.com/Valcob>`__
|
||||
- `Nad (@valordk) <https://github.com/valordk>`__
|
||||
- `Vicent Climent (@vcliment89) <https://github.com/vcliment89>`__
|
||||
- `Veli Veromann (@velijv) <https://github.com/velijv>`__
|
||||
- `André Lademann (@vergissberlin) <https://github.com/vergissberlin>`__
|
||||
- `Austin (@vidplace7) <https://github.com/vidplace7>`__
|
||||
@ -1279,7 +1291,7 @@ Contributors
|
||||
- `whimsee (@whimsee) <https://github.com/whimsee>`__
|
||||
- `wifwucite (@wifwucite) <https://github.com/wifwucite>`__
|
||||
- `wilberforce (@wilberforce) <https://github.com/wilberforce>`__
|
||||
- `Willem Vooijs (@wildekek) <https://github.com/wildekek>`__
|
||||
- `wildekek (@wildekek) <https://github.com/wildekek>`__
|
||||
- `Wingman3434 (@Wingman3434) <https://github.com/Wingman3434>`__
|
||||
- `Emil Hesslow (@WizKid) <https://github.com/WizKid>`__
|
||||
- `WJCarpenter (@wjcarpenter) <https://github.com/wjcarpenter>`__
|
||||
@ -1298,7 +1310,7 @@ Contributors
|
||||
- `Xose Pérez (@xoseperez) <https://github.com/xoseperez>`__
|
||||
- `WitchKing (@xvil) <https://github.com/xvil>`__
|
||||
- `Andrew Kroll (@xxxajk) <https://github.com/xxxajk>`__
|
||||
- `Yaroslav Heriatovych (@Yarikx) <https://github.com/Yarikx>`__
|
||||
- `Yaroslav (@Yarikx) <https://github.com/Yarikx>`__
|
||||
- `Marcin Jaworski (@yawor) <https://github.com/yawor>`__
|
||||
- `yousaf465 (@yousaf465) <https://github.com/yousaf465>`__
|
||||
- `Yuval Aboulafia (@yuvalabou) <https://github.com/yuvalabou>`__
|
||||
@ -1313,4 +1325,4 @@ Contributors
|
||||
- `Zsolt Zsiros (@ZsZs73) <https://github.com/ZsZs73>`__
|
||||
- `Christian Zufferey (@zuzu59) <https://github.com/zuzu59>`__
|
||||
|
||||
*This page was last updated January 22, 2024.*
|
||||
*This page was last updated February 13, 2024.*
|
||||
|
BIN
images/as5600.jpg
Normal file
After Width: | Height: | Size: 20 KiB |
BIN
images/honeywellhih.jpg
Normal file
After Width: | Height: | Size: 18 KiB |
BIN
images/indicator.jpg
Normal file
After Width: | Height: | Size: 29 KiB |
BIN
images/nfc.png
Normal file
After Width: | Height: | Size: 3.8 KiB |
BIN
images/st7567.jpg
Normal file
After Width: | Height: | Size: 11 KiB |
BIN
images/veml3235.jpg
Normal file
After Width: | Height: | Size: 28 KiB |
18
index.rst
@ -317,6 +317,7 @@ Environmental
|
||||
HTE501, components/sensor/hte501, HTE501.png, Temperature & Humidity
|
||||
Honeywell ABP, components/sensor/honeywellabp, honeywellabp.jpg, Pressure & Temperature
|
||||
Honeywell ABP2 I2C, components/sensor/honeywellabp2_i2c, honeywellabp.jpg, Pressure & Temperature
|
||||
Honeywell HIH I2C, components/sensor/honeywell_hih_i2c, honeywellhih.jpg, Temperature & Humidity
|
||||
HTU21D / Si7021 / SHT21, components/sensor/htu21d, htu21d.jpg, Temperature & Humidity
|
||||
Hydreon Rain Sensor, components/sensor/hydreon_rgxx, hydreon_rg9.jpg, Rain
|
||||
Inkbird IBS-TH1 Mini, components/sensor/inkbird_ibsth1_mini, inkbird_isbth1_mini.jpg, Temperature & Humidity
|
||||
@ -361,6 +362,7 @@ Light
|
||||
TCS34725, components/sensor/tcs34725, tcs34725.jpg, Lux & RGB colour
|
||||
TSL2561, components/sensor/tsl2561, tsl2561.jpg, Lux
|
||||
TSL2591, components/sensor/tsl2591, tsl2591.jpg, Lux
|
||||
VEML3235, components/sensor/veml3235, veml3235.jpg, Lux
|
||||
|
||||
|
||||
Magnetic
|
||||
@ -368,6 +370,7 @@ Magnetic
|
||||
.. imgtable::
|
||||
|
||||
ESP32 Hall Sensor, components/sensor/esp32_hall, magnet.svg, ESP internal, dark-invert
|
||||
AS5600, components/sensor/as5600, as5600.jpg, 12-Bit Magnetic Position Sensor
|
||||
HMC5883L, components/sensor/hmc5883l, hmc5883l.jpg, 3-Axis magnetometer
|
||||
MMC5603, components/sensor/mmc5603, mmc5603.jpg, 3-Axis magnetometer
|
||||
MMC5983, components/sensor/mmc5983, mmc5983.jpg, 3-Axis magnetometer
|
||||
@ -382,13 +385,13 @@ Miscellaneous
|
||||
AS3935, components/sensor/as3935, as3935.jpg, Storm lightning
|
||||
Binary Sensor Map, components/sensor/binary_sensor_map, binary_sensor_map.jpg, Map binary to value
|
||||
b-parasite, components/sensor/b_parasite, b_parasite.jpg, Moisture & Temperature & Humidity & Light
|
||||
Combination, components/sensor/combination, function.svg, dark-invert
|
||||
Duty Time, components/sensor/duty_time, timer-play-outline.svg, dark-invert
|
||||
EZO sensor circuits, components/sensor/ezo, ezo-ph-circuit.png, (pH)
|
||||
FS3000, components/sensor/fs3000, fs3000.jpg, Air velocity
|
||||
Havells Solar, components/sensor/havells_solar, havellsgti5000d_s.jpg, Solar rooftop
|
||||
Integration, components/sensor/integration, sigma.svg, dark-invert
|
||||
Growatt Solar, components/sensor/growatt_solar, growatt.jpg, Solar rooftop
|
||||
Kalman Combinator, components/sensor/kalman_combinator, function.svg, dark-invert
|
||||
Modbus Sensor, components/sensor/modbus_controller, modbus.png
|
||||
Nextion, components/sensor/nextion, nextion.jpg, Sensors from display
|
||||
Rotary Encoder, components/sensor/rotary_encoder, rotary_encoder.jpg
|
||||
@ -482,9 +485,10 @@ Often known as "tag" or "card" readers within the community.
|
||||
|
||||
.. imgtable::
|
||||
|
||||
NFC Tag, components/binary_sensor/nfc, nfc.png
|
||||
PN532, components/binary_sensor/pn532, pn532.jpg
|
||||
PN7150, components/binary_sensor/pn7150, pn7150.jpg
|
||||
PN716X, components/binary_sensor/pn7160, pn716x.jpg
|
||||
PN7150, components/pn7150, pn7150.jpg
|
||||
PN716X, components/pn7160, pn716x.jpg
|
||||
RC522, components/binary_sensor/rc522, rc522.jpg
|
||||
RDM6300, components/binary_sensor/rdm6300, rdm6300.jpg
|
||||
|
||||
@ -495,6 +499,7 @@ Touchscreen
|
||||
Nextion Binary Sensor, components/binary_sensor/nextion, nextion.jpg
|
||||
Touchscreen, components/touchscreen/index, touch.svg, dark-invert
|
||||
TT21100, components/touchscreen/tt21100, esp32-s3-korvo-2-lcd.png
|
||||
FT5X06, components/touchscreen/ft5x06, indicator.jpg
|
||||
GT911, components/touchscreen/gt911, esp32_s3_box_3.png
|
||||
|
||||
Presence Detection
|
||||
@ -652,6 +657,8 @@ Display Components
|
||||
ILI9481, components/display/ili9xxx, ili9481.svg
|
||||
ILI9486, components/display/ili9xxx, ili9341.jpg
|
||||
ILI9488, components/display/ili9xxx, ili9488.svg
|
||||
WSPICOLCD, components/display/ili9xxx, ili9488.svg
|
||||
|
||||
Inkplate, components/display/inkplate6, inkplate6.jpg
|
||||
LCD Display, components/display/lcd_display, lcd.jpg
|
||||
MAX7219, components/display/max7219, max7219.jpg
|
||||
@ -665,6 +672,7 @@ Display Components
|
||||
SSD1327, components/display/ssd1327, ssd1327.jpg
|
||||
SSD1331, components/display/ssd1331, ssd1331.jpg
|
||||
SSD1351, components/display/ssd1351, ssd1351.jpg
|
||||
ST7567, components/display/st7567, st7567.jpg
|
||||
ST7735, components/display/st7735, st7735.jpg
|
||||
ST7789V, components/display/st7789v, st7789v.jpg
|
||||
ST7796, components/display/ili9xxx, st7796.svg
|
||||
@ -686,7 +694,7 @@ Touchscreen Components
|
||||
XPT2046, components/touchscreen/xpt2046, xpt2046.jpg
|
||||
GT911, components/touchscreen/gt911, esp32_s3_box_3.png
|
||||
FT63X6, components/touchscreen/ft63x6, wt32-sc01.png
|
||||
|
||||
|
||||
Cover Components
|
||||
----------------
|
||||
|
||||
@ -822,10 +830,12 @@ Home Assistant Companion Components
|
||||
|
||||
Bluetooth Proxy, components/bluetooth_proxy, bluetooth.svg, dark-invert
|
||||
Voice Assistant, components/voice_assistant, voice-assistant.svg, dark-invert
|
||||
micro Wake Word, components/micro_wake_word, voice-assistant.svg, dark-invert
|
||||
Sensor, components/sensor/homeassistant, home-assistant.svg, dark-invert
|
||||
Text Sensor, components/text_sensor/homeassistant, home-assistant.svg, dark-invert
|
||||
Binary Sensor, components/binary_sensor/homeassistant, home-assistant.svg, dark-invert
|
||||
|
||||
|
||||
Alarm Control Panel Components
|
||||
------------------------------
|
||||
|
||||
|