Merge pull request #1400 from esphome/bump-2021.8.0

2021.8.0
This commit is contained in:
Jesse Hills 2021-08-18 15:04:37 +12:00 committed by GitHub
commit 52634fbefe
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
101 changed files with 2941 additions and 257 deletions

View File

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

View File

@ -1,5 +1,5 @@
ESPHOME_PATH = ../esphome ESPHOME_PATH = ../esphome
ESPHOME_REF = v1.20.4 ESPHOME_REF = 2021.8.0
.PHONY: html html-strict cleanhtml deploy help webserver Makefile netlify netlify-api api netlify-dependencies svg2png copy-svg2png .PHONY: html html-strict cleanhtml deploy help webserver Makefile netlify netlify-api api netlify-dependencies svg2png copy-svg2png

Binary file not shown.

After

Width:  |  Height:  |  Size: 141 KiB

View File

@ -1 +1 @@
1.20.4 2021.8.0

282
changelog/2021.8.0.rst Normal file
View File

@ -0,0 +1,282 @@
ESPHome 2021.8.0 - 18th August 2021
===================================
.. seo::
:description: Changelog for ESPHome 2021.8.0.
:image: /_static/changelog-2021.8.0.png
:author: ESPHome
:author_twitter: @esphome_
.. imgtable::
:columns: 4
AM43, components/sensor/am43, am43.jpg
AM43 Cover, components/cover/am43, am43.jpg
Color Temperature Light, components/light/color_temperature, brightness-medium.svg
Demo, components/demo, description.svg
DSMR, components/sensor/dsmr, dsmr.svg
HRXL MaxSonar WR, components/sensor/hrxl_maxsonar_wr, hrxl_maxsonar_wr.jpg
PipSolar - compatible PV Inverter, components/pipsolar, pipsolar.jpg
PM1006 Sensor, components/sensor/pm1006, pm1006.jpg
PMSA003I, components/sensor/pmsa003i, pmsa003i.jpg
RGBCT Light, components/light/rgbct, rgbw.png
SDP3x, components/sensor/sdp3x, sdp31.jpg
Selec Meter, components/sensor/selec_meter, selec_meter_em2m.jpg
T6613/15, components/sensor/t6615, t6615.png
TLC5947, components/output/tlc5947, tlc5947.jpg
Select Core, components/select/index, folder-open.svg
Template Select, components/select/template, description.svg
TSL2591, components/sensor/tsl2591, tsl2591.jpg
Since starting monthly cycles, it just made sense to make this release, **ESPHome 2021.8.0**. From now ESPHome will
be versioned according to the year and month of the release. We hope that this will not confuse everyone too much =).
There are a bunch of new integrations this release as seen above and a few breaking changes below. Hopefully nothing
has been missed out.
Also, look at that nice sorted and categorized home page of sensors. Thanks to :ghuser:`patfelst` for doing this.
Select Entities
---------------
ESPHome devices can now create :doc:`Select</components/select/index>` entities in Home Assistant. This allows you to
not have to create ``input_select`` from HA and then import the current option into ESPHome.
The chosen option can be updated from both sides and will be reflected accordinlgy.
Light Color Modes
-----------------
:ghuser:`oxan` has been at it working hard on getting the all of the light code up to scratch and working
really well with the latest changes to Home Assistant. This is mostly an internal change, but ESPHome has
been updated to properly support Home Assistant's color modes for lights. For the most part it mainly
fixes issues that have come up with the color mode on Home Assistant not doing what people expected in ESPHome.
DSMR
----
:ghuser:`glmnet` and :ghuser:`zuidwijk` have worked together to bring DSMR support to ESPHome.
This platform allows you to read your DSMR smart meter via the P1 port. Check out the
`repo <https://github.com/zuidwijk/dsmr>`_ with more info on the hardware required for this.
Thermostat Breaking changes
---------------------------
:ghuser:`kbx81` Has made a few changes to the :doc:`thermostat</components/climate/thermostat>` climate platform
in :esphomepr:`2032`, :esphomepr:`2073` and :esphomepr:`2114` to allow for the many different use cases that everyone has.
Unfortunately this means you might need to make some changes to your YAML configuration to utilize the new code.
- ``hysteresis`` has been replaced with ``cool_deadband``, ``cool_overrun``, ``heat_deadband`` and ``heat_overrun``.
- Climate action timers now govern how quickly climate actions may be called:
- ``min_idle_time`` is required for all configurations.
- ``min_cooling_off_time`` and ``min_cooling_run_time`` are required where cool_action or dry_action is used.
- ``min_heating_off_time`` and ``min_heating_run_time`` are required where heat_action is used.
- ``min_fanning_off_time`` and ``min_fanning_run_time`` are required where fan_only_action is used.
- ``min_fan_mode_switching_time`` is required where any ``fan_mode`` actions (ex.: ``fan_mode_auto_action``, ``fan_mode_on_action``) are used.
Anova Souve
-----------
There is a change with the :doc:`Anova BLE Souve</components/climate/anova>` climate platform that has a new **required**
config option: ``unit_of_measurement``.
Home Assistant Add-on
---------------------
For a while there has been an option in the Add-on to allow specifying the ``esphome_version``
which would allow the addon to download a specific version to use. This has been removed
in this release as it causes more issues than it solves. It may be added back to the ``development`` addon
**only** in the future if there is demand, but the stable add-ons should stay stable. If you
need to downgrade the esphome version because a new version does not work the way you expect, then you
should be using the snapshot/backup feature built into Home Assistant Supervisor to rollback.
Full list of changes
--------------------
New Features
^^^^^^^^^^^^
- Allow entities to be disabled by default in HA :esphomepr:`2113` by :ghuser:`jesserockz` (new-feature)
New Components
^^^^^^^^^^^^^^
- Added support for pvvx_mithermometer sensor :esphomepr:`1546` by :ghuser:`pasiz` (new-integration)
- Added support for Selec Energy Meter :esphomepr:`1993` by :ghuser:`sourabhjaiswal` (new-integration)
- pm1006: add rx-only support :esphomepr:`2038` by :ghuser:`Habbie` (new-integration)
- Add SDP3x sensor :esphomepr:`2064` by :ghuser:`Azimath` (new-integration)
- Add support for the TLC5947 24-Channel, 12-Bit PWM LED Driver :esphomepr:`2066` by :ghuser:`rnauber` (new-integration)
- Add T6615 :esphomepr:`1170` by :ghuser:`tylermenezes` (new-integration)
- Add support for the HRXL MaxSonar WR series sensors :esphomepr:`2020` by :ghuser:`netmikey` (new-integration)
- Add demo integration :esphomepr:`2085` by :ghuser:`OttoWinter` (new-integration)
- Add select entities and implement template select :esphomepr:`2067` by :ghuser:`jesserockz` (new-integration) (notable-change)
- Added support for Hitachi AC424 remote type :esphomepr:`2101` by :ghuser:`sourabhjaiswal` (new-integration)
- Adds CGPR1 - Qingping Motion & Ambient light sensor support :esphomepr:`1675` by :ghuser:`Tommatheussen` (new-integration)
- Dsmr component :esphomepr:`1881` by :ghuser:`glmnet` (new-integration)
- Support component tsl2591 :esphomepr:`2131` by :ghuser:`wjcarpenter` (new-integration)
- Add support for PMSA003i :esphomepr:`1501` by :ghuser:`sjtrny` (new-integration)
- Add rgbct and color_temperature light platforms :esphomepr:`2138` by :ghuser:`jesserockz` (new-integration)
- Feature pipsolar anh :esphomepr:`1664` by :ghuser:`andreashergert1984` (new-integration)
- Support for AM43 BLE blind motors :esphomepr:`1744` by :ghuser:`buxtronix` (new-integration)
Breaking Changes
^^^^^^^^^^^^^^^^
- Merge build flags from platformio_options :esphomepr:`1651` by :ghuser:`trvrnrth` (breaking-change)
- Color mode implementation :esphomepr:`2012` by :ghuser:`oxan` (notable-change) (breaking-change)
- Fix parity bit calculation for ESP8266SoftwareSerial :esphomepr:`1873` by :ghuser:`esev` (breaking-change)
- Dont force 0 state instead of min_power unless explicit config set :esphomepr:`2107` by :ghuser:`jesserockz` (breaking-change)
- Anova fahrenheit support :esphomepr:`2126` by :ghuser:`buxtronix` (breaking-change)
- Tidy HA addon :esphomepr:`1937` by :ghuser:`jesserockz` (breaking-change)
- Thermostat enhancements 2 :esphomepr:`2114` by :ghuser:`kbx81` (breaking-change)
Beta Fixes
^^^^^^^^^^
- Always send all light state values in API :esphomepr:`2150` by :ghuser:`oxan`
- Let sensors announce their state_class via mqtt :esphomepr:`2155` by :ghuser:`puuu`
- Thermostat delayed fan mode fix :esphomepr:`2158` by :ghuser:`kbx81`
- Fix native API log level enum values :esphomepr:`2151` by :ghuser:`OttoWinter`
- Initialize color temperature to value within range if possible :esphomepr:`2168` by :ghuser:`oxan`
- Add a dummy color temp :esphomepr:`2161` by :ghuser:`DotNetDann`
- Add Gas device class to DSMR component :esphomepr:`2169` by :ghuser:`frenck`
- Send dirty states when screen wakes up :esphomepr:`2167` by :ghuser:`jesserockz`
- Remove specified accuracy_decimals from total_daily_energy :esphomepr:`2174` by :ghuser:`jesserockz`
- Add new total_increasing state-class for Home Assistant 2021.9+ :esphomepr:`2166` by :ghuser:`jesserockz`
Notable Changes
^^^^^^^^^^^^^^^
- Color mode implementation :esphomepr:`2012` by :ghuser:`oxan` (notable-change) (breaking-change)
- Add select entities and implement template select :esphomepr:`2067` by :ghuser:`jesserockz` (new-integration) (notable-change)
All changes
^^^^^^^^^^^
- Always tick mdns in ethernet component :esphomepr:`2018` by :ghuser:`flacjacket`
- Bump black from 21.6b0 to 21.7b0 :esphomepr:`2031` by :ghuser:`dependabot[bot]`
- Convert Arduino boolean to bool :esphomepr:`2042` by :ghuser:`jesserockz`
- Fix ESP32-C3 using v2.0.0-alpha1 support :esphomepr:`2035` by :ghuser:`agners`
- Bump pylint from 2.8.2 to 2.9.4 :esphomepr:`2047` by :ghuser:`dependabot[bot]`
- Bump pylint from 2.9.4 to 2.9.5 :esphomepr:`2050` by :ghuser:`dependabot[bot]`
- Thermostat fixes+updates 1 :esphomepr:`2032` by :ghuser:`kbx81`
- Add test5 back to CI :esphomepr:`2052` by :ghuser:`jesserockz`
- Added support for pvvx_mithermometer sensor :esphomepr:`1546` by :ghuser:`pasiz` (new-integration)
- Added support for Selec Energy Meter :esphomepr:`1993` by :ghuser:`sourabhjaiswal` (new-integration)
- Add TAG to all compile units :esphomepr:`2060` by :ghuser:`agners`
- Fix minor build issues with Arduino ESP32 2.0.0-rc1 :esphomepr:`2057` by :ghuser:`agners`
- Fix clang-format script behaviour without -i + code cleanup :esphomepr:`2002` by :ghuser:`oxan`
- Merge build flags from platformio_options :esphomepr:`1651` by :ghuser:`trvrnrth` (breaking-change)
- Print BLE 128-bit UUIDs according to spec :esphomepr:`2061` by :ghuser:`agners`
- Support library override using named library with repository :esphomepr:`2056` by :ghuser:`agners`
- Initial ESP32-C3-DevKitM-1 board support :esphomepr:`2062` by :ghuser:`agners`
- Fix a bunch of typos :esphomepr:`2058` by :ghuser:`oxan`
- pm1006: add rx-only support :esphomepr:`2038` by :ghuser:`Habbie` (new-integration)
- Add sensor monetary device_class :esphomepr:`2083` by :ghuser:`OttoWinter`
- Make light.addressable_set color parameters behave as documented & consistent with elsewhere :esphomepr:`2009` by :ghuser:`oxan`
- Bump pylint from 2.9.5 to 2.9.6 :esphomepr:`2087` by :ghuser:`dependabot[bot]`
- Bump ESPAsyncWebServer-esphome to 1.3.0 :esphomepr:`2075` by :ghuser:`agners`
- Add SDP3x sensor :esphomepr:`2064` by :ghuser:`Azimath` (new-integration)
- Add support for the TLC5947 24-Channel, 12-Bit PWM LED Driver :esphomepr:`2066` by :ghuser:`rnauber` (new-integration)
- Add T6615 :esphomepr:`1170` by :ghuser:`tylermenezes` (new-integration)
- Add support for the HRXL MaxSonar WR series sensors :esphomepr:`2020` by :ghuser:`netmikey` (new-integration)
- Pull ESP32 Wifi fixes from arduino-esp32 :esphomepr:`2069` by :ghuser:`OttoWinter`
- Add demo integration :esphomepr:`2085` by :ghuser:`OttoWinter` (new-integration)
- Add device class support to MQTT cover :esphomepr:`2092` by :ghuser:`krconv`
- Color mode implementation :esphomepr:`2012` by :ghuser:`oxan` (notable-change) (breaking-change)
- Convert more code to async-def syntax :esphomepr:`2095` by :ghuser:`OttoWinter`
- Fix parity bit calculation for ESP8266SoftwareSerial :esphomepr:`1873` by :ghuser:`esev` (breaking-change)
- Convert sensor_schema to use kwargs :esphomepr:`2094` by :ghuser:`OttoWinter`
- Fix MQTT light include :esphomepr:`2104` by :ghuser:`OttoWinter`
- Fix missing include in light_traits.h :esphomepr:`2105` by :ghuser:`jkl1337`
- Add select entities and implement template select :esphomepr:`2067` by :ghuser:`jesserockz` (new-integration) (notable-change)
- pmsx003: add standard particle, particle counts :esphomepr:`1694` by :ghuser:`warthog9`
- Dont force 0 state instead of min_power unless explicit config set :esphomepr:`2107` by :ghuser:`jesserockz` (breaking-change)
- Fix import :esphomepr:`2108` by :ghuser:`jesserockz`
- Thermostat enhancements and code clean-up :esphomepr:`2073` by :ghuser:`kbx81`
- Bump esptool from 2.8 to 3.1 :esphomepr:`1839` by :ghuser:`dependabot[bot]`
- Add min_save_interval to total_energy/integration for memory wear :esphomepr:`1665` by :ghuser:`andreashergert1984`
- Add support for Waveshare E-Paper 4.2" B V2 :esphomepr:`1610` by :ghuser:`brettp`
- Add SM16703 to supported FastLED chipsets :esphomepr:`1751` by :ghuser:`robgridley`
- Migrate COLOR constants to Color class & disallow implicit conversions to Color :esphomepr:`2093` by :ghuser:`oxan`
- Add version argument to ESPDEPRECATED macro :esphomepr:`2116` by :ghuser:`oxan`
- Fix mixup between ColorMode and ColorCapability :esphomepr:`2121` by :ghuser:`oxan`
- Various follow-up fixes to color mode changes :esphomepr:`2118` by :ghuser:`oxan`
- Fix crash when using addressable_set with out-of-range indices :esphomepr:`2120` by :ghuser:`oxan`
- Add state classes to pvvx_mithermometer :esphomepr:`2125` by :ghuser:`jesserockz`
- Add support for ESP8266 Arduino v3.0.1 :esphomepr:`2128` by :ghuser:`oxan`
- Drop legacy esphomeyaml command wrapper code :esphomepr:`2130` by :ghuser:`oxan`
- Allow multiple unnamed libraries :esphomepr:`2132` by :ghuser:`agners`
- Don't stop effects if brightness goes to zero :esphomepr:`2134` by :ghuser:`oxan`
- Added support for Hitachi AC424 remote type :esphomepr:`2101` by :ghuser:`sourabhjaiswal` (new-integration)
- Anova fahrenheit support :esphomepr:`2126` by :ghuser:`buxtronix` (breaking-change)
- Tidy HA addon :esphomepr:`1937` by :ghuser:`jesserockz` (breaking-change)
- Removed unused arguments from rgbww code :esphomepr:`2137` by :ghuser:`jesserockz`
- Only compile protobuf dumping when very verbose logging is enabled :esphomepr:`2139` by :ghuser:`oxan`
- Refactor clang-tidy script to use actual compiler flags and includes :esphomepr:`2133` by :ghuser:`oxan`
- Add Toshiba AC generic IR remote protocol :esphomepr:`2019` by :ghuser:`kbx81`
- Add new Toshiba AC unit protocol :esphomepr:`1987` by :ghuser:`kbx81`
- Add Dish Network protocol :esphomepr:`2117` by :ghuser:`ianchi`
- Fix some issues with deprecated argv syntax detection :esphomepr:`2127` by :ghuser:`OttoWinter`
- Don't discard cold/warm white brightness in constant brightness mode :esphomepr:`2136` by :ghuser:`oxan`
- Allow entities to be disabled by default in HA :esphomepr:`2113` by :ghuser:`jesserockz` (new-feature)
- Adds CGPR1 - Qingping Motion & Ambient light sensor support :esphomepr:`1675` by :ghuser:`Tommatheussen` (new-integration)
- Don't mark COLOR_* constants as static in header :esphomepr:`2141` by :ghuser:`oxan`
- RFC: status_led: allow to share single light :esphomepr:`1974` by :ghuser:`ianchi`
- waveshare_epaper: add support for ttgo t5 b74 variant display :esphomepr:`1869` by :ghuser:`osresearch`
- Thermostat enhancements 2 :esphomepr:`2114` by :ghuser:`kbx81` (breaking-change)
- Dsmr component :esphomepr:`1881` by :ghuser:`glmnet` (new-integration)
- Always abort on allocation when out-of-memory :esphomepr:`2129` by :ghuser:`oxan`
- Support component tsl2591 :esphomepr:`2131` by :ghuser:`wjcarpenter` (new-integration)
- Add support for PMSA003i :esphomepr:`1501` by :ghuser:`sjtrny` (new-integration)
- Increase task wdt timeout for ESP32/ESP32-C3 :esphomepr:`2096` by :ghuser:`agners`
- Format dev temp idedata :esphomepr:`2142` by :ghuser:`OttoWinter`
- Add rgbct and color_temperature light platforms :esphomepr:`2138` by :ghuser:`jesserockz` (new-integration)
- Warn if underscore character is used in hostname :esphomepr:`2079` by :ghuser:`davet2001`
- Break the Tuya set_datapoint_value method into separate methods per datapoint type :esphomepr:`2059` by :ghuser:`nuttytree`
- Feature pipsolar anh :esphomepr:`1664` by :ghuser:`andreashergert1984` (new-integration)
- Add deassert_rts_dtr option to force RTS/DTR low when using miniterm :esphomepr:`2089` by :ghuser:`agners`
- Support for AM43 BLE blind motors :esphomepr:`1744` by :ghuser:`buxtronix` (new-integration)
- Fix format warning in Tuya component :esphomepr:`1954` by :ghuser:`agners`
- Modular light transformers :esphomepr:`2124` by :ghuser:`oxan`
- Support for the DKE screen version of LilyGo-TTGO-T5 V2.3 :esphomepr:`1969` by :ghuser:`blambov`
- Support multiple configuration directories for update-all subcommand :esphomepr:`1925` by :ghuser:`oxan`
- Always send all light state values in API :esphomepr:`2150` by :ghuser:`oxan`
- Let sensors announce their state_class via mqtt :esphomepr:`2155` by :ghuser:`puuu`
- Thermostat delayed fan mode fix :esphomepr:`2158` by :ghuser:`kbx81`
- Fix native API log level enum values :esphomepr:`2151` by :ghuser:`OttoWinter`
- Initialize color temperature to value within range if possible :esphomepr:`2168` by :ghuser:`oxan`
- Add a dummy color temp :esphomepr:`2161` by :ghuser:`DotNetDann`
- Add Gas device class to DSMR component :esphomepr:`2169` by :ghuser:`frenck`
- Send dirty states when screen wakes up :esphomepr:`2167` by :ghuser:`jesserockz`
- Remove specified accuracy_decimals from total_daily_energy :esphomepr:`2174` by :ghuser:`jesserockz`
- Add new total_increasing state-class for Home Assistant 2021.9+ :esphomepr:`2166` by :ghuser:`jesserockz`
Past Changelogs
---------------
.. toctree::
:maxdepth: 1
v1.20.0
v1.19.0
v1.18.0
v1.17.0
v1.16.0
v1.15.0
v1.14.0
v1.13.0
v1.12.0
v1.11.0
v1.10.0
v1.9.0
v1.8.0
v1.7.0

View File

@ -2,7 +2,7 @@ Changelog
========= =========
.. redirect:: .. redirect::
:url: /changelog/v1.20.0.html :url: /changelog/2021.8.0.html
.. toctree:: .. toctree::
:glob: :glob:

View File

@ -18,8 +18,8 @@ Changelog - Version 1.14.0 - November 1
ATM90E32, components/sensor/atm90e32, atm90e32.jpg ATM90E32, components/sensor/atm90e32, atm90e32.jpg
PZEM004T, components/sensor/pzem004t, pzem004t.svg PZEM004T, components/sensor/pzem004t, pzem004t.svg
PZEM AC, components/sensor/pzemac, pzemac.svg PZEM AC, components/sensor/pzemac, pzem-ac.png
PZEM DC, components/sensor/pzemdc, pzemdc.svg PZEM DC, components/sensor/pzemdc, pzem-dc.png
ADE7953, components/sensor/ade7953, ade7953.svg ADE7953, components/sensor/ade7953, ade7953.svg
SenseAir, components/sensor/senseair, senseair_s8.jpg SenseAir, components/sensor/senseair, senseair_s8.jpg

View File

@ -56,6 +56,9 @@ Advanced options:
- **internal** (*Optional*, boolean): Mark this component as internal. Internal components will - **internal** (*Optional*, boolean): Mark this component as internal. Internal components will
not be exposed to the frontend (like Home Assistant). Only specifying an ``id`` without not be exposed to the frontend (like Home Assistant). Only specifying an ``id`` without
a ``name`` will implicitly set this to true. a ``name`` will implicitly set this to true.
- **disabled_by_default** (*Optional*, boolean): If true, then this entity should not be added to any client's frontend,
(usually Home Assistant) without the user manually enabling it (via the Home Assistant UI).
Requires Home Assistant 2021.9 or newer. Defaults to ``false``.
- If MQTT enabled, all other options from :ref:`MQTT Component <config-mqtt-component>`. - If MQTT enabled, all other options from :ref:`MQTT Component <config-mqtt-component>`.
.. _binary_sensor-filters: .. _binary_sensor-filters:

View File

@ -25,6 +25,10 @@ address of your Anova device.
You cannot use the Anova app over BLE whilst this component is connected, you You cannot use the Anova app over BLE whilst this component is connected, you
should disconnect it first. To setup a (dis-)connect switch, see :doc:`/components/switch/ble_client`. should disconnect it first. To setup a (dis-)connect switch, see :doc:`/components/switch/ble_client`.
You need to specify unit_of_measurement as 'c' or 'f'. This ensures the stick's display
uses the unit you intend. All values within ESPHome are converted to Celcius so you may
need to do conversion again within the frontend if you use Fahrenheit.
.. warning:: .. warning::
The Anova Nano is not currently supported as it uses a different BLE protocol. The Anova Nano is not currently supported as it uses a different BLE protocol.
@ -39,6 +43,7 @@ should disconnect it first. To setup a (dis-)connect switch, see :doc:`/componen
- platform: anova - platform: anova
name: "My Anova stick" name: "My Anova stick"
ble_client_id: my_anova ble_client_id: my_anova
unit_of_measurement: c
Configuration variables: Configuration variables:
------------------------ ------------------------
@ -46,6 +51,7 @@ Configuration variables:
- **id** (*Optional*, :ref:`config-id`): Manually specify the ID used for code generation. - **id** (*Optional*, :ref:`config-id`): Manually specify the ID used for code generation.
- **name** (**Required**, string): The name of the climate device. - **name** (**Required**, string): The name of the climate device.
- **ble_client_id** (**Required**, :ref:`config-id`): The ID of the BLE Client. - **ble_client_id** (**Required**, :ref:`config-id`): The ID of the BLE Client.
- **unit_of_measurement** (**Required**, string): Units to use on the device display. 'c' or 'f'.
- All other options from :ref:`Climate <config-climate>`. - All other options from :ref:`Climate <config-climate>`.
See Also See Also

View File

@ -49,6 +49,9 @@ Advanced options:
- **internal** (*Optional*, boolean): Mark this component as internal. Internal components will - **internal** (*Optional*, boolean): Mark this component as internal. Internal components will
not be exposed to the frontend (like Home Assistant). Only specifying an ``id`` without not be exposed to the frontend (like Home Assistant). Only specifying an ``id`` without
a ``name`` will implicitly set this to true. a ``name`` will implicitly set this to true.
- **disabled_by_default** (*Optional*, boolean): If true, then this entity should not be added to any client's frontend,
(usually Home Assistant) without the user manually enabling it (via the Home Assistant UI).
Requires Home Assistant 2021.9 or newer. Defaults to ``false``.
- If MQTT enabled, all other options from :ref:`MQTT Component <config-mqtt-component>`. - If MQTT enabled, all other options from :ref:`MQTT Component <config-mqtt-component>`.
Climate Automation Climate Automation

View File

@ -2,18 +2,18 @@ IR Remote Climate
================= =================
.. seo:: .. seo::
:description: Controls a variety of compatible Climate via IR :description: Controls a variety of compatible Climate devices via IR
:image: air-conditioner-ir.png :image: air-conditioner-ir.png
The climate component allows you to control a variety of compatible AC units by sending IR signals This climate component allows you to control compatible AC units by sending an infrared (IR)
as your remote unit would do. control signal, just as the unit's handheld remote controller would.
.. figure:: images/climate-ui.png .. figure:: images/climate-ui.png
:align: center :align: center
:width: 60.0% :width: 60.0%
There is a growing list of compatible units. If your unit is not listed below you can fill a feature There is a growing list of compatible units. If your unit is not listed below you should
request so it will be added (see FAQ). submit a feature request (see FAQ).
+---------------------------------------+---------------------+----------------------+ +---------------------------------------+---------------------+----------------------+
| Name | Platform name | Supports receiver | | Name | Platform name | Supports receiver |
@ -27,25 +27,26 @@ request so it will be added (see FAQ).
+---------------------------------------+---------------------+----------------------+ +---------------------------------------+---------------------+----------------------+
| Fujitsu General | ``fujitsu_general`` | yes | | Fujitsu General | ``fujitsu_general`` | yes |
+---------------------------------------+---------------------+----------------------+ +---------------------------------------+---------------------+----------------------+
| Hitachi | ``hitachi_ac344`` | yes |
| | ``hitachi_ac424`` | |
+---------------------------------------+---------------------+----------------------+
| :ref:`LG<climate_ir_lg>` | ``climate_ir_lg`` | yes |
+---------------------------------------+---------------------+----------------------+
| Mitsubishi | ``mitsubishi`` | | | Mitsubishi | ``mitsubishi`` | |
+---------------------------------------+---------------------+----------------------+ +---------------------------------------+---------------------+----------------------+
| TCL112, Fuego | ``tcl112`` | yes | | TCL112, Fuego | ``tcl112`` | yes |
+---------------------------------------+---------------------+----------------------+ +---------------------------------------+---------------------+----------------------+
| Toshiba | ``toshiba`` | yes | | :ref:`Toshiba<toshiba>` | ``toshiba`` | yes |
+---------------------------------------+---------------------+----------------------+
| :ref:`Whirlpool<whirlpool>` | ``whirlpool`` | yes |
+---------------------------------------+---------------------+----------------------+ +---------------------------------------+---------------------+----------------------+
| Yashima | ``yashima`` | | | Yashima | ``yashima`` | |
+---------------------------------------+---------------------+----------------------+ +---------------------------------------+---------------------+----------------------+
| :ref:`Whirlpool<climate_ir_whirlpool>`| ``whirlpool`` | yes |
+---------------------------------------+---------------------+----------------------+
| :ref:`LG<climate_ir_lg>` | ``climate_ir_lg`` | yes |
+---------------------------------------+---------------------+----------------------+
| Hitachi | ``hitachi_ac344`` | yes |
+---------------------------------------+---------------------+----------------------+
This component requires that you have setup a :doc:`/components/remote_transmitter`. This component requires that you have configured a :doc:`/components/remote_transmitter`.
Due to the unidirectional nature of IR remote controllers, this component cannot determine the Due to the unidirectional nature of IR remote controllers, this component cannot determine the
actual state of the device, and will assume the state of the device is the latest state requested. actual state of the device and will assume the state of the device is the latest state requested.
However, when receiver is supported, you can optionally add a :doc:`/components/remote_receiver` However, when receiver is supported, you can optionally add a :doc:`/components/remote_receiver`
component so the climate state will be tracked when it is operated with the original remote component so the climate state will be tracked when it is operated with the original remote
@ -62,7 +63,7 @@ controller unit.
- platform: coolix # adjust to match your AC unit! - platform: coolix # adjust to match your AC unit!
name: "Living Room AC" name: "Living Room AC"
Configuration variables: Configuration Variables:
------------------------ ------------------------
- **name** (**Required**, string): The name for the climate device. - **name** (**Required**, string): The name for the climate device.
@ -74,7 +75,8 @@ Configuration variables:
receiver. see: :ref:`ir-receiver_id`. receiver. see: :ref:`ir-receiver_id`.
- All other options from :ref:`Climate <config-climate>`. - All other options from :ref:`Climate <config-climate>`.
Advanced options: Advanced Options
----------------
- **id** (*Optional*, :ref:`config-id`): Manually specify the ID used for code generation. - **id** (*Optional*, :ref:`config-id`): Manually specify the ID used for code generation.
- **transmitter_id** (*Optional*, :ref:`config-id`): Manually specify the ID of the remote transmitter. - **transmitter_id** (*Optional*, :ref:`config-id`): Manually specify the ID of the remote transmitter.
@ -112,22 +114,6 @@ IR receiver.
name: "Living Room AC" name: "Living Room AC"
receiver_id: rcvr receiver_id: rcvr
.. _climate_ir_whirlpool:
``whirlpool`` Climate
---------------------
Additional configuration is available for this model
Configuration variables:
- **model** (*Optional*, string): There are two valid models
-* ``DG11J1-3A``: Temperature range is from 18 to 32 (default)
-* ``DG11J1-91``: Temperature range is from 16 to 30
.. _climate_ir_lg: .. _climate_ir_lg:
``climate_ir_lg`` Climate ``climate_ir_lg`` Climate
@ -154,11 +140,63 @@ Configuration variables:
header_high: 3265us # AC Units from LG in Brazil, for example use these timings header_high: 3265us # AC Units from LG in Brazil, for example use these timings
header_low: 9856us header_low: 9856us
.. _toshiba:
``toshiba`` Climate
-------------------
Additional configuration is available for this model.
Configuration variables:
- **model** (*Optional*, string): There are two valid models
- ``GENERIC``: Temperature range is from 17 to 30 (default)
- ``RAC-PT1411HWRU-C``: Temperature range is from 16 to 30; unit displays temperature in degrees Celsius
- ``RAC-PT1411HWRU-F``: Temperature range is from 16 to 30; unit displays temperature in degrees Fahrenheit
.. note::
- While they are identified as separate models here, the ``RAC-PT1411HWRU-C`` and ``RAC-PT1411HWRU-C`` are
in fact the same physical model/unit. They are separated here only because different IR codes are used
depending on the desired unit of measurement. This only affects how temperature is displayed on the unit itself.
- The ``RAC-PT1411HWRU`` model supports a feature Toshiba calls "Comfort Sense". The handheld remote control
has a built-in temperature sensor and it will periodically transmit the temperature from this sensor to the
AC unit. If a ``sensor`` is provided in the configuration with this model, the sensor's temperature will be
transmitted to the ``RAC-PT1411HWRU`` in the same manner as the original remote controller. How often the
temperature is transmitted is determined by the ``update_interval`` assigned to the ``sensor``. Note that
``update_interval`` must be less than seven minutes or the ``RAC-PT1411HWRU`` will revert to using its own
internal temperature sensor; a value of 30 seconds seems to work well. See :doc:`/components/sensor/index`
for more information.
.. _whirlpool:
``whirlpool`` Climate
---------------------
Additional configuration is available for this model.
Configuration variables:
- **model** (*Optional*, string): There are two valid models
- ``DG11J1-3A``: Temperature range is from 18 to 32 (default)
- ``DG11J1-91``: Temperature range is from 16 to 30
See Also See Also
-------- --------
- :doc:`/components/climate/index` - :doc:`/components/climate/index`
- :doc:`/components/remote_receiver`
- :doc:`/components/remote_transmitter` - :doc:`/components/remote_transmitter`
- :doc:`/components/sensor/index`
- :apiref:`ballu.h <ballu/ballu.h>`, - :apiref:`ballu.h <ballu/ballu.h>`,
- :apiref:`coolix.h <coolix/coolix.h>`, - :apiref:`coolix.h <coolix/coolix.h>`,
:apiref:`daikin.h <daikin/daikin.h>` :apiref:`daikin.h <daikin/daikin.h>`

View File

@ -90,24 +90,29 @@ modes that Home Assistant offers.
Controller Behavior and Hysteresis Controller Behavior and Hysteresis
---------------------------------- ----------------------------------
In addition to the set points, a hysteresis value determines how far the temperature may vary from the set point value(s) In addition to the set points, hysteresis values determine how far the temperature may vary from the set point value(s)
before an :ref:`action <config-action>` (cooling, heating, etc.) is triggered. It defaults to 0.5 °C. before an :ref:`action <config-action>` (cooling, heating, etc.) is triggered. They each default to 0.5 °C. They are:
- ``cool_deadband``: The minimum temperature differential (temperature above the set point) before **engaging** cooling
- ``cool_overrun``: The minimum temperature differential (cooling beyond the set point) before **disengaging** cooling
- ``heat_deadband``: The minimum temperature differential (temperature below the set point) before **engaging** heat
- ``heat_overrun``: The minimum temperature differential (heating beyond the set point) before **disengaging** heat
A question that often surfaces about this component is, "What is the expected behavior?" Let's quickly discuss A question that often surfaces about this component is, "What is the expected behavior?" Let's quickly discuss
*exactly when* the configured actions are called by the controller. *exactly when* the configured actions are called by the controller.
Consider the low set point (the one that typically activates heating) for a moment, and assume it is set to a common room Consider the low set point (the one that typically activates heating) for a moment, and assume it is set to a common room
temperature of 21 °C. As mentioned above, the controller uses a default hysteresis value of 0.5 °C, so let's assume that temperature of 22 °C. Let's assume ``heat_deadband`` is set to 0.4 °C while ``heat_overrun`` is set to 0.6 °C. In this case,
value here, as well. The controller as implemented in this component will allow the temperature to drop as low as the set the controller will allow the temperature to drop as low as the set point's value (22 °C) *minus* the ``heat_deadband``
point's value (21 °C) *minus* the hysteresis value (0.5 °C), or 20.5 °C, before calling ``heat_action`` to activate heating. value (0.4 °C), or 21.6 °C, before calling ``heat_action`` to activate heating.
After heating has been activated, it will remain active until the observed temperature reaches the set point (21 °C) *plus* After heating has been activated, it will remain active until the observed temperature reaches the set point (22 °C) *plus*
the hysteresis value (0.5 °C), or 21.5 °C. Once this temperature is reached, ``idle_action`` will be called to deactivate the ``heat_overrun`` value (0.6 °C), or 22.6 °C. Once this temperature is reached, ``idle_action`` will be called to deactivate
heating. heating.
The same behavior applies to the high set point, although the behavior is reversed in a sense; given an upper set point of The same behavior applies to the high set point, although the behavior is reversed in a sense; given an upper set point of
22 °C, ``cool_action`` would be called at 22.5 °C and ``idle_action`` would not be called until the temperature is reduced 23 °C, ``cool_deadband`` set to 0.3 °C and ``cool_overrun`` set to 0.7 °C, ``cool_action`` would be called at 23.3 °C and
to 21.5 °C. ``idle_action`` would not be called until the temperature is reduced to 22.3 °C.
Important Terminology Important Terminology
--------------------- ---------------------
@ -134,15 +139,27 @@ Examples:
Got all that? Great. Let's take a closer look at some configuration. Got all that? Great. Let's take a closer look at some configuration.
Configuration Variables: Configuration Variables:
------------------------
The thermostat controller uses the sensor to determine whether it should heat or cool. The thermostat controller uses the sensor to determine whether it should heat or cool.
- **sensor** (**Required**, :ref:`config-id`): The sensor that is used to measure the current temperature. - **sensor** (**Required**, :ref:`config-id`): The sensor that is used to measure the current temperature.
Default Target Temperatures Default Target Temperatures and Mode
*************************** ************************************
These temperatures are used when the device first starts up. These configuration items determine default values the thermostat controller should use when it starts.
- **default_mode** (*Optional*, climate mode): The default climate mode the controller should use if it
is unable to restore it from memory. One of:
- ``off`` (default)
- ``heat_cool``
- ``cool``
- ``heat``
- ``dry``
- ``fan_only``
- ``auto``
- **default_target_temperature_low** (*Optional*, float): The default low target - **default_target_temperature_low** (*Optional*, float): The default low target
temperature for the control algorithm. This can be dynamically set in the frontend later. temperature for the control algorithm. This can be dynamically set in the frontend later.
@ -152,8 +169,8 @@ These temperatures are used when the device first starts up.
**At least one of** ``default_target_temperature_low`` **and** ``default_target_temperature_high`` **At least one of** ``default_target_temperature_low`` **and** ``default_target_temperature_high``
**must be specified.** **must be specified.**
``min_temperature`` and ``max_temperature`` from the base climate component **are used to define the range** Note that ``min_temperature`` and ``max_temperature`` from the base climate component are used to define
of allowed temperature values in the thermostat component. See :doc:`/components/climate/index` the range of allowed temperature values in the thermostat component. See :doc:`/components/climate/index`.
Heating and Cooling Actions Heating and Cooling Actions
*************************** ***************************
@ -166,15 +183,24 @@ These are triggered when the climate control **action** is changed by the thermo
the climate device should enter its idle state (not cooling, not heating). the climate device should enter its idle state (not cooling, not heating).
- **heat_action** (*Optional*, :ref:`Action <config-action>`): The action to call when - **heat_action** (*Optional*, :ref:`Action <config-action>`): The action to call when
the climate device should enter heating mode to increase the current temperature. the climate device should enter heating mode to increase the current temperature.
- **supplemental_heating_action** (*Optional*, :ref:`Action <config-action>`): The action
to call when the climate device should activate supplemental heating to (more aggressively)
increase the current temperature. *This action is called repeatedly at an interval defined by*
``max_heating_run_time`` *(see below).*
- **cool_action** (*Optional*, :ref:`Action <config-action>`): The action to call when - **cool_action** (*Optional*, :ref:`Action <config-action>`): The action to call when
the climate device should enter cooling mode to decrease the current temperature. the climate device should enter cooling mode to decrease the current temperature.
- **supplemental_cooling_action** (*Optional*, :ref:`Action <config-action>`): The action
to call when the climate device should activate supplemental cooling to (more aggressively)
decrease the current temperature. *This action is called repeatedly at an interval defined by*
``max_cooling_run_time`` *(see below).*
- **dry_action** (*Optional*, :ref:`Action <config-action>`): The action to call when - **dry_action** (*Optional*, :ref:`Action <config-action>`): The action to call when
the climate device should perform its drying (dehumidification) action. The thermostat the climate device should perform its drying (dehumidification) action. The thermostat
controller does not trigger this action; it is invoked by ``dry_mode`` (see below). controller does not trigger this action; it is invoked by ``dry_mode`` (see below).
- **fan_only_action** (*Optional*, :ref:`Action <config-action>`): The action to call when - **fan_only_action** (*Optional*, :ref:`Action <config-action>`): The action to call when
the climate device should activate its fan only (but does not heat or cool). The thermostat the climate device should activate its fan only (but does not heat or cool). When ``fan_only_cooling``
controller triggers this action based on the upper target temperature when set to is set to ``false``, the thermostat controller immediately triggers this action when set to
``fan_only_mode`` (see below). ``fan_only_mode``; however, when ``fan_only_cooling`` is set to ``true``, this action is called
based on the upper target temperature (similar to ``cool_action`` above).
- All other options from :ref:`Climate <config-climate>`. - All other options from :ref:`Climate <config-climate>`.
**At least one of** ``cool_action``, ``fan_only_action``, ``heat_action``, **and** ``dry_action`` **At least one of** ``cool_action``, ``fan_only_action``, ``heat_action``, **and** ``dry_action``
@ -250,11 +276,20 @@ These should be used to control the fan only, if available.
- **swing_both_action** (*Optional*, :ref:`Action <config-action>`): The action to call when the fan - **swing_both_action** (*Optional*, :ref:`Action <config-action>`): The action to call when the fan
should oscillate in horizontal and vertical directions. should oscillate in horizontal and vertical directions.
Advanced Options Advanced Configuration/Behavior:
**************** --------------------------------
- **hysteresis** (*Optional*, float): Defines how far the temperature may vary from the target values before Set Point Options/Behavior
an :ref:`action <config-action>` (cooling, heating, etc.) is triggered. Defaults to 0.5 °C. **************************
- **set_point_minimum_differential** (*Optional*, float): For dual-point/dual-function systems, the minimum
required temperature difference between the heat and cool set points. Defaults to 0.5 °C.
- **supplemental_cooling_delta** (*Required with* ``supplemental_cooling_action``, float): When the temperature
difference between the upper set point and the current temperature exceeds this value,
``supplemental_cooling_action`` will be called immediately.
- **supplemental_heating_delta** (*Required with* ``supplemental_heating_action``, float): When the temperature
difference between the lower set point and the current temperature exceeds this value,
``supplemental_heating_action`` will be called immediately.
- **away_config** (*Optional*): Additionally specify target temperature range settings for away mode. - **away_config** (*Optional*): Additionally specify target temperature range settings for away mode.
Away mode can be used to have a second set of target temperatures (for example, while the user is Away mode can be used to have a second set of target temperatures (for example, while the user is
away or sleeping/at night). away or sleeping/at night).
@ -267,12 +302,73 @@ Advanced Options
**If configured, at least one of** ``default_target_temperature_low`` **and** ``default_target_temperature_high`` **If configured, at least one of** ``default_target_temperature_low`` **and** ``default_target_temperature_high``
**must be specified in the away mode configuration.** **must be specified in the away mode configuration.**
Additional Actions/Behavior
***************************
- **target_temperature_change_action** (*Optional*, :ref:`Action <config-action>`): The action to call when the
thermostat's target temperature(s) is/are changed.
- **startup_delay** (*Optional*, boolean): If set to ``true``, when ESPHome starts, ``min_cooling_off_time``,
``min_fanning_off_time``, and ``min_heating_off_time`` must elapse before each respective action may be invoked.
This option provides a way to prevent damage to equipment (for example) disrupted by a power interruption.
Defaults to ``false``.
- **fan_only_action_uses_fan_mode_timer** (*Optional*, boolean): If set to ``true``, the ``fan_only_action`` will
share the same delay timer used for all ``fan_mode`` actions. The minimum fan switching delay is then determined
by ``min_fan_mode_switching_time`` (see below). This is useful when ``fan_only_action`` controls the same physical
fan as the ``fan_mode`` actions, common in forced-air HVAC systems.
- **fan_only_cooling** (*Optional*, boolean): If set to ``true``, when in the ``fan_only_mode`` climate mode,
the ``fan_only_action`` will only be called when the observed temperature exceeds the upper set point plus
``cool_deadband``. When set to ``false`` (the default), ``fan_only_action`` is called immediately when
``fan_only_mode`` is activated, regardless of the current temperature or set points. Defaults to ``false``.
- **fan_with_cooling** (*Optional*, boolean): If set to ``true``, ``fan_only_action`` will be called whenever
``cool_action`` is called. This is useful for forced-air systems where the fan typically runs with cooling.
Defaults to ``false``.
- **fan_with_heating** (*Optional*, boolean): If set to ``true``, ``fan_only_action`` will be called whenever
``heat_action`` is called. This is useful for forced-air systems where the fan typically runs with heating.
Defaults to ``false``.
- **max_cooling_run_time** (*Required with* ``supplemental_cooling_action``, :ref:`config-time`): Duration after
which ``supplemental_cooling_action`` will be called when cooling is active. Note that
``supplemental_cooling_action`` will be called repeatedly at an interval defined by this parameter, as well,
enabling multiple stages of supplemental (auxiliary/emergency) cooling.
- **max_heating_run_time** (*Required with* ``supplemental_heating_action``, :ref:`config-time`): Duration after
which ``supplemental_heating_action`` will be called when heating is active. Note thermostat
``supplemental_heating_action`` will be called repeatedly at an interval defined by this parameter, as well,
enabling multiple stages of supplemental (auxiliary/emergency) heating.
- **min_cooling_off_time** (*Required with* ``cool_action``, :ref:`config-time`): Minimum duration the cooling action
must be disengaged before it may be engaged.
- **min_cooling_run_time** (*Required with* ``cool_action``, :ref:`config-time`): Minimum duration the cooling action
must be engaged before it may be disengaged.
- **min_fanning_off_time** (*Required with* ``fan_only_action``, :ref:`config-time`): Minimum duration the fanning
action must be disengaged before it may be engaged.
- **min_fanning_run_time** (*Required with* ``fan_only_action``, :ref:`config-time`): Minimum duration the fanning
action must be engaged before it may be disengaged.
- **min_heating_off_time** (*Required with* ``heat_action``, :ref:`config-time`): Minimum duration the heating action
must be disengaged before it may be engaged.
- **min_heating_run_time** (*Required with* ``heat_action``, :ref:`config-time`): Minimum duration the heating action
must be engaged before it may be disengaged.
- **min_idle_time** (*Required*, :ref:`config-time`): Minimum duration the idle action must be active before calling
another climate action.
- **min_fan_mode_switching_time** (*Required with any* ``fan_mode`` *action*, :ref:`config-time`): Minimum duration
any given fan mode must be active before it may be changed.
Hysteresis Values
*****************
- **cool_deadband** (*Optional*, float): The minimum temperature differential (temperature above the set point)
before calling the cooling :ref:`action <config-action>`. Defaults to 0.5 °C.
- **cool_overrun** (*Optional*, float): The minimum temperature differential (cooling beyond the set point)
before calling the idle :ref:`action <config-action>`. Defaults to 0.5 °C.
- **heat_deadband** (*Optional*, float): The minimum temperature differential (temperature below the set point)
before calling the heating :ref:`action <config-action>`. Defaults to 0.5 °C.
- **heat_overrun** (*Optional*, float): The minimum temperature differential (heating beyond the set point)
before calling the idle :ref:`action <config-action>`. Defaults to 0.5 °C.
.. note:: .. note::
While this platform uses the term temperature everywhere, it can also be used to regulate other values. - While this platform uses the term temperature everywhere, it can also be used to regulate other values.
For example, controlling humidity is also possible with this platform. Note that ``min_temperature`` and For example, controlling humidity is also possible with this platform.
``max_temperature`` from the base climate component are used the define the range of adjustability and the - ``min_temperature`` and ``max_temperature`` from the base climate component are used the define the range of
defaults will probably not make sense for control of things like humidity. See :doc:`/components/climate/index` adjustability and the defaults will probably not make sense for control of things like humidity. See
:doc:`/components/climate/index`.
Bang-bang vs. Thermostat Bang-bang vs. Thermostat
------------------------ ------------------------

76
components/cover/am43.rst Normal file
View File

@ -0,0 +1,76 @@
AM43 Cover
==========
.. seo::
:description: Setting up AM43/BLE covers in ESPHome.
:image: am43.png
The ``am43`` cover platform allows you to control an AM43 based
BLE cover motor. These devices are sold under various brands, such
as Zemismart and A-OK. The platform connects to the device over the
ESP32's BLE peripheral and both controls and fetches the position
and state of the motor.
.. note::
This component does NOT support Tuya-based versions of this device,
as the protocol is completely different. If your device is controlled
with the SmartLife app, then it will not work.
.. figure:: images/am43.jpg
:align: right
.. code-block:: yaml
# Example configuration entry
esp32_ble_tracker:
ble_client:
- mac: AA:BB:CC:DD:EE:FF
id: am43_kitchen
cover:
- platform: am43
name: "Kitchen blinds"
ble_client_id: am43_kitchen
Setup
-----
The AM43 should first be setup either with the OEM app or the buttons
following the instruction sheet, so that the speed, direction, limits,
etc are programmed in (this component does not yet support setting these).
Once setup, configure the yaml per the above example, using the MAC
address of your device.
See :ref:`Setting up devices <esp32_ble_tracker-setting_up_devices>` for
how to discover the MAC address.
To make use of the battery and light level sensors, see the
:doc:`/components/sensor/am43` component.
Configuration variables:
------------------------
- **name** (**Required**, string): The name of the cover.
- **ble_client_id** (**Required**, :ref:`config-id`): The id of the ``ble_client`` entry associated with the device.
- **pin** (*Optional*, int): The pin for the device, as
set in the app. The default is usually printed on the
device. Defaults to ``8888``.
- **id** (*Optional*, :ref:`config-id`): Manually specify the ID used for code generation.
- All other options from :ref:`Cover <config-cover>`.
.. note::
The BLE stack on the ESP32 has a limit of three connected devices.
See Also
--------
- :doc:`index`
- :ref:`automation`
- :apiref:`am43/am43_cover.h`
- :ghedit:`Edit`

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.1 KiB

View File

@ -36,6 +36,9 @@ Advanced options:
- **internal** (*Optional*, boolean): Mark this component as internal. Internal components will - **internal** (*Optional*, boolean): Mark this component as internal. Internal components will
not be exposed to the frontend (like Home Assistant). Only specifying an ``id`` without not be exposed to the frontend (like Home Assistant). Only specifying an ``id`` without
a ``name`` will implicitly set this to true. a ``name`` will implicitly set this to true.
- **disabled_by_default** (*Optional*, boolean): If true, then this entity should not be added to any client's frontend,
(usually Home Assistant) without the user manually enabling it (via the Home Assistant UI).
Requires Home Assistant 2021.9 or newer. Defaults to ``false``.
- If MQTT enabled, all other options from :ref:`MQTT Component <config-mqtt-component>`. - If MQTT enabled, all other options from :ref:`MQTT Component <config-mqtt-component>`.
.. _cover-open_action: .. _cover-open_action:

29
components/demo.rst Normal file
View File

@ -0,0 +1,29 @@
Demo Integration
================
.. seo::
:description: Instructions for setting up the demo integration in ESPHome
:image: description.png
The ``demo`` integration can be used for testing to generate sample instances of many
different integrations (sensors, lights, ...)
.. figure:: images/demo-ui.png
:align: center
:width: 70.0%
.. code-block:: yaml
# Example configuration entry
demo:
Configuration variables:
------------------------
This integration has no configuration variables
See Also
--------
- :apiref:`demo/demo_sensor.h`
- :ghedit:`Edit`

View File

@ -81,12 +81,15 @@ Configuration variables:
- ``2.13in`` (not tested) - ``2.13in`` (not tested)
- ``2.13in-ttgo`` (T5_V2.3 tested. Also works for Wemos D1 Mini ePaper Shield 2.13 1.0.0 "LOLIN") - ``2.13in-ttgo`` (T5_V2.3 tested. Also works for Wemos D1 Mini ePaper Shield 2.13 1.0.0 "LOLIN")
- ``2.13in-ttgo-b73`` (T5_V2.3 with B73 display tested) - ``2.13in-ttgo-b73`` (T5_V2.3 with B73 display tested)
- ``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-b1`` (T5_V2.3 with B1 display tested)
- ``2.13in-ttgo-dke`` (T5_V2.3 with DKE group display (DEPG0213BN) tested)
- ``2.70in`` (currently not working with the HAT Rev 2.1 version) - ``2.70in`` (currently not working with the HAT Rev 2.1 version)
- ``2.90in`` - ``2.90in``
- ``2.90inv2`` - ``2.90inv2``
- ``2.90in-b`` (B/W rendering only) - ``2.90in-b`` (B/W rendering only)
- ``4.20in`` - ``4.20in``
- ``4.20in-bV2`` (B/W rendering only)
- ``5.83in`` - ``5.83in``
- ``7.50in`` - ``7.50in``
- ``7.50inV2`` (Can't use with an ESP8266 as it runs out of RAM) - ``7.50inV2`` (Can't use with an ESP8266 as it runs out of RAM)
@ -94,6 +97,7 @@ Configuration variables:
- **busy_pin** (*Optional*, :ref:`Pin Schema <config-pin_schema>`): The BUSY pin. Defaults to not connected. - **busy_pin** (*Optional*, :ref:`Pin Schema <config-pin_schema>`): The BUSY pin. Defaults to not connected.
- **reset_pin** (*Optional*, :ref:`Pin Schema <config-pin_schema>`): The RESET pin. Defaults to not connected. - **reset_pin** (*Optional*, :ref:`Pin Schema <config-pin_schema>`): The RESET pin. Defaults to not connected.
Make sure you pull this pin high (by connecting it to 3.3V with a resistor) if not connected to a GPIO pin. Make sure you pull this pin high (by connecting it to 3.3V with a resistor) if not connected to a GPIO pin.
The B74 display variant requires the reset pin.
- **rotation** (*Optional*): Set the rotation of the display. Everything you draw in ``lambda:`` will be rotated - **rotation** (*Optional*): Set the rotation of the display. Everything you draw in ``lambda:`` will be rotated
by this option. One of ```` (default), ``90°``, ``180°``, ``270°``. by this option. One of ```` (default), ``90°``, ``180°``, ``270°``.
- **full_update_every** (*Optional*, int): E-Paper displays have two modes of switching to the next image: A partial - **full_update_every** (*Optional*, int): E-Paper displays have two modes of switching to the next image: A partial

View File

@ -31,6 +31,9 @@ Configuration variables:
------------------------ ------------------------
- **name** (**Required**, string): The name of the camera. - **name** (**Required**, string): The name of the camera.
- **disabled_by_default** (*Optional*, boolean): If true, then this entity should not be added to any client's frontend,
(usually Home Assistant) without the user manually enabling it (via the Home Assistant UI).
Requires Home Assistant 2021.9 or newer. Defaults to ``false``.
Connection Options: Connection Options:

View File

@ -32,6 +32,9 @@ Configuration variables:
- **internal** (*Optional*, boolean): Mark this component as internal. Internal components will - **internal** (*Optional*, boolean): Mark this component as internal. Internal components will
not be exposed to the frontend (like Home Assistant). Only specifying an ``id`` without not be exposed to the frontend (like Home Assistant). Only specifying an ``id`` without
a ``name`` will implicitly set this to true. a ``name`` will implicitly set this to true.
- **disabled_by_default** (*Optional*, boolean): If true, then this entity should not be added to any client's frontend,
(usually Home Assistant) without the user manually enabling it (via the Home Assistant UI).
Requires Home Assistant 2021.9 or newer. Defaults to ``false``.
MQTT options: MQTT options:

Binary file not shown.

After

Width:  |  Height:  |  Size: 36 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

View File

@ -11,6 +11,7 @@ Components
light/index light/index
number/index number/index
output/index output/index
select/index
sensor/index sensor/index
switch/index switch/index
display/index display/index

View File

@ -0,0 +1,55 @@
Color Temperature Light
=======================
.. seo::
:description: Instructions for setting up Color Temperature lights.
:image: brightness-medium.png
The ``color_temperature`` light platform creates a Color Temperature
light from 2 :ref:`float output components <output>`. One channel controls the LED temperature,
and the other channel controls the brightness.
.. code-block:: yaml
# Example configuration entry
light:
- platform: color_temperature
name: "Livingroom Lights"
color_temperature: output_component1
brightness: output_component2
cold_white_color_temperature: 6536 K
warm_white_color_temperature: 2000 K
Configuration variables:
------------------------
- **name** (**Required**, string): The name of the light.
- **color_temperature** (**Required**, :ref:`config-id`): The id of the float :ref:`output` to use for the color temperature.
- **brightness** (**Required**, :ref:`config-id`): The id of the float :ref:`output` to use for the brightness.
- **cold_white_color_temperature** (**Required**, float): The coldest color temperature supported by this light. This
is the lowest value when expressed in `mireds <https://en.wikipedia.org/wiki/Mired>`__, or the highest value when
expressed in Kelvin.
- **warm_white_color_temperature** (**Required**, float): The warmest color temperature supported by this light. This
is the highest value when expressed in `mireds <https://en.wikipedia.org/wiki/Mired>`__, or the lowest value when
expressed in Kelvin.
- **effects** (*Optional*, list): A list of :ref:`light effects <light-effects>` to use for this light.
- **id** (*Optional*, :ref:`config-id`): Manually specify the ID used for code generation.
- All other options from :ref:`Light <config-light>`.
See Also
--------
- :doc:`/components/output/index`
- :doc:`/components/light/index`
- :doc:`/components/light/cwww`
- :doc:`/components/light/rgb`
- :doc:`/components/light/rgbw`
- :doc:`/components/light/rgbww`
- :doc:`/components/light/rgbct`
- :doc:`/components/power_supply`
- :doc:`/components/output/ledc`
- :doc:`/components/output/esp8266_pwm`
- :doc:`/components/output/pca9685`
- :doc:`/components/output/tlc59208f`
- :apiref:`color_temperature/ct_light_output.h`
- :ghedit:`Edit`

View File

@ -27,9 +27,7 @@ The example below is an example of a custom light output.
// return the traits this light supports // return the traits this light supports
auto traits = LightTraits(); auto traits = LightTraits();
traits.set_supports_brightness(true); traits.set_supports_brightness(true);
traits.set_supports_rgb(true); traits.set_supports_color_modes({ColorMode::RGB});
traits.set_supports_rgb_white_value(false);
traits.set_supports_color_temperature(false);
return traits; return traits;
} }

View File

@ -5,9 +5,9 @@ Cold White + Warm White Light
:description: Instructions for setting up Cold White + Warm White lights. :description: Instructions for setting up Cold White + Warm White lights.
:image: brightness-medium.png :image: brightness-medium.png
The ``cwww`` light platform creates a Cold-White+Warm-White The ``cwww`` light platform creates a cold white + warm white light from 2
light from 2 :ref:`float output components <output>` (one for each channel). The two :ref:`float output components <output>` (one for each channel). The two channels
channels will be mixed using the color temperature configuration options. can be controlled individually or together.
.. code-block:: yaml .. code-block:: yaml
@ -21,16 +21,28 @@ channels will be mixed using the color temperature configuration options.
warm_white_color_temperature: 2000 K warm_white_color_temperature: 2000 K
constant_brightness: true constant_brightness: true
.. _cwww_mixing:
Mixing
------
The two channels of this light can be controlled individually by using the ``cold_white`` and ``warm_white`` options of
the :ref:`light control actions <light-turn_on_action>`.
If the color temperature of both lights is supplied, it is also possible to control the the two channels together by
setting a color temperature, using the ``white`` (interpreted as brightness) and ``color_temperature`` options. This
calculation assumes that both lights have the same illuminance, which might not always be accurate.
Configuration variables: Configuration variables:
------------------------ ------------------------
- **name** (**Required**, string): The name of the light. - **name** (**Required**, string): The name of the light.
- **cold_white** (**Required**, :ref:`config-id`): The id of the float :ref:`output` to use for the cold white channel. - **cold_white** (**Required**, :ref:`config-id`): The id of the float :ref:`output` to use for the cold white channel.
- **warm_white** (**Required**, :ref:`config-id`): The id of the float :ref:`output` to use for the warm white channel. - **warm_white** (**Required**, :ref:`config-id`): The id of the float :ref:`output` to use for the warm white channel.
- **cold_white_color_temperature** (**Required**, float): The color temperate (in `mireds <https://en.wikipedia.org/wiki/Mired>`__ or Kelvin) - **cold_white_color_temperature** (*Optional*, float): The color temperature (in `mireds <https://en.wikipedia.org/wiki/Mired>`__ or Kelvin)
of the cold white channel. of the cold white channel. Note that this option is required to control the mixing from Home Assistant.
- **warm_white_color_temperature** (**Required**, float): The color temperate (in `mireds <https://en.wikipedia.org/wiki/Mired>`__ or Kelvin) - **warm_white_color_temperature** (*Optional*, float): The color temperature (in `mireds <https://en.wikipedia.org/wiki/Mired>`__ or Kelvin)
of the warm white channel. of the warm white channel. Note that this option is required to control the mixing from Home Assistant.
- **constant_brightness** (*Optional*, boolean): When enabled, this will keep the overall brightness of the cold and warm white channels constant by limiting the combined output to 100% of a single channel. This reduces the possible overall brightness but is necessary for some power supplies that are not able to run both channels at full brightness at once. Defaults to ``false``. - **constant_brightness** (*Optional*, boolean): When enabled, this will keep the overall brightness of the cold and warm white channels constant by limiting the combined output to 100% of a single channel. This reduces the possible overall brightness but is necessary for some power supplies that are not able to run both channels at full brightness at once. Defaults to ``false``.
- **effects** (*Optional*, list): A list of :ref:`light effects <light-effects>` to use for this light. - **effects** (*Optional*, list): A list of :ref:`light effects <light-effects>` to use for this light.
- **id** (*Optional*, :ref:`config-id`): Manually specify the ID used for code generation. - **id** (*Optional*, :ref:`config-id`): Manually specify the ID used for code generation.
@ -43,10 +55,13 @@ See Also
- :doc:`/components/light/index` - :doc:`/components/light/index`
- :doc:`/components/light/rgb` - :doc:`/components/light/rgb`
- :doc:`/components/light/rgbw` - :doc:`/components/light/rgbw`
- :doc:`/components/light/rgbww`
- :doc:`/components/light/rgbct`
- :doc:`/components/light/color_temperature`
- :doc:`/components/power_supply` - :doc:`/components/power_supply`
- :doc:`/components/output/ledc` - :doc:`/components/output/ledc`
- :doc:`/components/output/esp8266_pwm` - :doc:`/components/output/esp8266_pwm`
- :doc:`/components/output/pca9685` - :doc:`/components/output/pca9685`
- :doc:`/components/output/tlc59208f` - :doc:`/components/output/tlc59208f`
- :apiref:`cwww/cww_light_output.h` - :apiref:`cwww/cwww_light_output.h`
- :ghedit:`Edit` - :ghedit:`Edit`

View File

@ -79,6 +79,7 @@ Supported Chipsets
- ``UCS1903`` - ``UCS1903``
- ``UCS1904`` - ``UCS1904``
- ``UCS2903`` - ``UCS2903``
- ``SM16703``
.. _fastled-spi: .. _fastled-spi:

View File

@ -36,6 +36,11 @@ The pins are switched alternatively to allow two sets of lights to operate.
pin_a: pina pin_a: pina
pin_b: pinb pin_b: pinb
Internally, H-bridge lights are implemented as cold/warm white lights. This means that the brightness of the two colors
is mapped to the cold white and warm white values, even if the colors aren't actually white in reality. To individually
control the colors in the :ref:`light control actions <light-turn_on_action>`, you need to use the ``cold_white`` and
``warm_white`` options.
Configuration variables: Configuration variables:
------------------------ ------------------------
@ -48,7 +53,7 @@ Configuration variables:
.. note:: .. note::
As we are switching the h-bridge in software, the light may glitch every so often when other tasks run on the MCU. As we are switching the H-bridge in software, the light may glitch every so often when other tasks run on the MCU.
See Also See Also
-------- --------

View File

@ -61,6 +61,9 @@ Advanced options:
- **internal** (*Optional*, boolean): Mark this component as internal. Internal components will - **internal** (*Optional*, boolean): Mark this component as internal. Internal components will
not be exposed to the frontend (like Home Assistant). Only specifying an ``id`` without not be exposed to the frontend (like Home Assistant). Only specifying an ``id`` without
a ``name`` will implicitly set this to true. a ``name`` will implicitly set this to true.
- **disabled_by_default** (*Optional*, boolean): If true, then this entity should not be added to any client's frontend,
(usually Home Assistant) without the user manually enabling it (via the Home Assistant UI).
Requires Home Assistant 2021.9 or newer. Defaults to ``false``.
- If MQTT enabled, all other options from :ref:`MQTT Component <config-mqtt-component>`. - If MQTT enabled, all other options from :ref:`MQTT Component <config-mqtt-component>`.
.. _light-toggle_action: .. _light-toggle_action:
@ -128,26 +131,49 @@ Configuration variables:
- **id** (**Required**, :ref:`config-id`): The ID of the light. - **id** (**Required**, :ref:`config-id`): The ID of the light.
- **transition_length** (*Optional*, :ref:`config-time`, :ref:`templatable <config-templatable>`): The length of the transition - **transition_length** (*Optional*, :ref:`config-time`, :ref:`templatable <config-templatable>`): The length of the transition
if the light supports it. if the light supports it.
- **brightness** (*Optional*, percentage, :ref:`templatable <config-templatable>`): The brightness of the light. Must be in range - **color_mode** (*Optional*, :ref:`templatable <config-templatable>`): For lights that support more than one color mode, the color
``0%`` to ``100%`` or ``0.0`` to ``1.0``. This is a master brightness that applies to all channels (both color and white) of the mode that will be activated. The color mode determines which outputs of the light are active, and which parameters can be used.
light. Defaults to not changing brightness. This can for example be used to switch between colored and white light. Must be a color mode that is supported by the light.
- **color_brightness** (*Optional*, percentage, :ref:`templatable <config-templatable>`): The brightness of the color lights. Must Valid color modes are:
be in range ``0%`` to ``100%`` or ``0.0`` to ``1.0``. Useful to control brightness of colored and white lights separately for
RGBW lights. Defaults to not changing brightness. - ``ON_OFF``: Only on/off control.
- **red** (*Optional*, percentage, :ref:`templatable <config-templatable>`): The red channel of the light. Must be in range - ``BRIGHTNESS``: Only brightness control. Accepts *brightness* parameter.
``0%`` to ``100%`` or ``0.0`` to ``1.0``. Defaults to not changing red channel. - ``WHITE``: Single white channel only. Accepts *brightness* and *white* parameters.
- **green** (*Optional*, percentage, :ref:`templatable <config-templatable>`): The green channel of the light. Must be in range - ``COLOR_TEMPERATURE``: Color-temperature controlled white channel. Accepts *brightness* and *color_temperature*
``0%`` to ``100%`` or ``0.0`` to ``1.0``. Defaults to not changing green channel. parameters.
- **blue** (*Optional*, percentage, :ref:`templatable <config-templatable>`): The blue channel of the light. Must be in range - ``COLD_WARM_WHITE``: Cold and warm white channels. Accepts *brightness*, *color_temperature*, *cold_white* and
``0%`` to ``100%`` or ``0.0`` to ``1.0``. Defaults to not changing blue channel. *warm_white* parameters.
- **white** (*Optional*, percentage, :ref:`templatable <config-templatable>`): The brightness of the white lights. Must be in range - ``RGB``: RGB color channels. Accepts *brightness*, *color_brightness*, *red*, *green* and *blue* parameters.
``0%`` to ``100%`` or ``0.0`` to ``1.0``. Defaults to not changing white channel. - ``RGB_WHITE``: RGB color channels and a separate white channel. Accepts parameters from ``RGB`` and ``WHITE``
- **color_temperature** (*Optional*, float, :ref:`templatable <config-templatable>`): The white color temperature value (in `mireds <https://en.wikipedia.org/wiki/Mired>`__ or Kelvin) for CWWW / RGBWW lights. Defaults to not changing the color temperature value. color modes.
- ``RGB_COLOR_TEMPERATURE``: RGB color channels and a separate color-temperature controlled white channel. Accepts
parameters from ``RGB`` and ``COLOR_TEMPERATURE`` color modes.
- ``RGB_COLD_WARM_WHITE``: RGB color channels and two separate cold and warm white channels. Accepts parameters
from ``RGB`` and ``COLD_WARM_WHITE`` color modes.
- **brightness** (*Optional*, percentage, :ref:`templatable <config-templatable>`): The master brightness of the light, that
applies to all channels (both color and white) of the light.
- **color_brightness** (*Optional*, percentage, :ref:`templatable <config-templatable>`): The brightness of the color lights. Useful
to control brightness of colored and white lights separately for RGBW lights.
- **red** (*Optional*, percentage, :ref:`templatable <config-templatable>`): The red channel of the light.
- **green** (*Optional*, percentage, :ref:`templatable <config-templatable>`): The green channel of the light.
- **blue** (*Optional*, percentage, :ref:`templatable <config-templatable>`): The blue channel of the light.
- **white** (*Optional*, percentage, :ref:`templatable <config-templatable>`): The brightness of the white channel.
- **color_temperature** (*Optional*, float, :ref:`templatable <config-templatable>`): The color temperature
(in `mireds <https://en.wikipedia.org/wiki/Mired>`__ or Kelvin) of the white channel.
- **cold_white** (*Optional*, percentage, :ref:`templatable <config-templatable>`): The brightness of the cold white channel.
Cannot be used at the same time as *color_temperature*.
- **warm_white** (*Optional*, percentage, :ref:`templatable <config-templatable>`): The brightness of the warm white channel.
Cannot be used at the same time as *color_temperature*.
- **flash_length** (*Optional*, :ref:`config-time`, :ref:`templatable <config-templatable>`): If set, will flash the given color - **flash_length** (*Optional*, :ref:`config-time`, :ref:`templatable <config-templatable>`): If set, will flash the given color
for this period of time and then go back to the previous state. for this period of time and then go back to the previous state.
- **effect** (*Optional*, string, :ref:`templatable <config-templatable>`): If set, will attempt to - **effect** (*Optional*, string, :ref:`templatable <config-templatable>`): If set, will attempt to
start an effect with the given name. start an effect with the given name.
All percentage options accept values in the range ``0%`` to ``100%`` or ``0.0`` to ``1.0``, and default to not changing
the current value (which might be the value from before the light was last turned off). To reset values, explicitly set
them to zero.
.. note:: .. note::
This action can also be expressed in :ref:`lambdas <config-lambda>`: This action can also be expressed in :ref:`lambdas <config-lambda>`:
@ -158,7 +184,10 @@ Configuration variables:
// set parameters (optional) // set parameters (optional)
call.set_transition_length(1000); // in ms call.set_transition_length(1000); // in ms
call.set_brightness(1.0); // 1.0 is full brightness call.set_brightness(1.0); // 1.0 is full brightness
call.set_rgb(1.0, 1.0, 1.0); // color, 1.0 is fully lit call.set_color_mode(ColorMode::RGB_COLD_WARM_WHITE);
call.set_rgb(0.5, 0.25, 1.0); // color in RGB order, this example is purple
call.set_cold_white(0.5);
call.set_warm_white(0.75);
call.set_effect("The Effect"); call.set_effect("The Effect");
// perform action: // perform action:
call.perform(); call.perform();
@ -172,8 +201,9 @@ Configuration variables:
.. note:: .. note::
The master brightness (``brightness``) and separate brightness controls for the color and The master brightness (``brightness``) and separate brightness controls for the color and
white channels (``color_brightness`` and ``white``) are multiplied together. Thus, this will white channels (``color_brightness``, ``white``, ``cold_white`` and ``warm_white``) are
result in color at 40% brightness and white at 60% brightness: multiplied together. Thus, this will result in color at 40% brightness and white at 60%
brightness:
.. code-block:: yaml .. code-block:: yaml
@ -479,14 +509,21 @@ Configuration variables:
- **name** (*Optional*, string): The name of the effect. Defaults to ``Strobe``. - **name** (*Optional*, string): The name of the effect. Defaults to ``Strobe``.
- **colors** (*Optional*, list): A list of colors to cycle through. Defaults to a quick cycle between ON and OFF. - **colors** (*Optional*, list): A list of colors to cycle through. Defaults to a quick cycle between ON and OFF.
- **state** (*Optional*, boolean): The ON/OFF state to show. Defaults to ``true``. - **state** (*Optional*, boolean): The on/off state to show. Defaults to ``true``.
- **color_mode** (*Optional*, ): The color mode of the light. Defaults to the current color mode.
- **brightness** (*Optional*, percentage): The brightness of the light. Defaults to ``100%``. - **brightness** (*Optional*, percentage): The brightness of the light. Defaults to ``100%``.
- **red** (*Optional*, percentage): The percentage that the red color should be on for RGB lights. Defaults to ``100%``. - **color_brightness** (*Optional*, percentage): The brightness of the RGB lights, if applicable. Defaults to ``100%``.
- **green** (*Optional*, percentage): The percentage that the green color should be on for RGB lights. Defaults to ``100%``. - **red** (*Optional*, percentage): The red channel of the light, if applicable. Defaults to ``100%``.
- **blue** (*Optional*, percentage): The percentage that the blue color should be on for RGB lights. Defaults to ``100%``. - **green** (*Optional*, percentage): The green channel of the light, if applicable. Defaults to ``100%``.
- **white** (*Optional*, percentage): The percentage that the white color should be on for RGBW lights. Defaults to ``100%``. - **blue** (*Optional*, percentage): The blue channel of the light, if applicable. Defaults to ``100%``.
- **white** (*Optional*, percentage): The white channel of the light, if applicable. Defaults to ``100%``.
- **color_temperature** (*Optional*, percentage): The color temperature of the light, if applicable. Defaults to ``100%``.
- **cold_white** (*Optional*, percentage): The cold white channel of the light, if applicable. Defaults to ``100%``.
- **warm_white** (*Optional*, percentage): The warm white channel of the light, if applicable. Defaults to ``100%``.
- **duration** (**Required**, :ref:`config-time`): The duration this color should be active. - **duration** (**Required**, :ref:`config-time`): The duration this color should be active.
See `light.turn_on <light-turn_on_action>` for more information on the various color fields.
Flicker Effect Flicker Effect
************** **************

View File

@ -1,4 +1,4 @@
Neopixelbus Light NeoPixelBus Light
================= =================
.. seo:: .. seo::

View File

@ -82,6 +82,8 @@ See Also
- :doc:`/components/output/index` - :doc:`/components/output/index`
- :doc:`/components/light/index` - :doc:`/components/light/index`
- :doc:`/components/light/rgbw` - :doc:`/components/light/rgbw`
- :doc:`/components/light/rgbww`
- :doc:`/components/light/rgbct`
- :doc:`/components/power_supply` - :doc:`/components/power_supply`
- :doc:`/components/output/ledc` - :doc:`/components/output/ledc`
- :doc:`/components/output/esp8266_pwm` - :doc:`/components/output/esp8266_pwm`

View File

@ -0,0 +1,64 @@
RGBCT Light
===========
.. seo::
:description: Instructions for setting up RGBCT lights.
:image: rgbw.png
The ``rgbct`` light platform creates an RGBWT (color temperature + white brightness)
light from 5 :ref:`float output components <output>` (one for each channel).
.. code-block:: yaml
# Example configuration entry
light:
- platform: rgbct
name: "Livingroom Lights"
red: output_component1
green: output_component2
blue: output_component3
color_temperature: output_component4
white_brightness: output_component5
cold_white_color_temperature: 153 mireds
warm_white_color_temperature: 500 mireds
Configuration variables:
------------------------
- **name** (**Required**, string): The name of the light.
- **red** (**Required**, :ref:`config-id`): The id of the float :ref:`output` to use for the red channel.
- **green** (**Required**, :ref:`config-id`): The id of the float :ref:`output` to use for the green channel.
- **blue** (**Required**, :ref:`config-id`): The id of the float :ref:`output` to use for the blue channel.
- **color_temperature** (**Required**, :ref:`config-id`): The id of the float :ref:`output` to use for the
color temperature channel.
- **white_brightness** (**Required**, :ref:`config-id`): The id of the float :ref:`output` to use for the brightness
of the white leds.
- **cold_white_color_temperature** (**Required**, float): The coldest color temperature supported by this light. This
is the lowest value when expressed in `mireds <https://en.wikipedia.org/wiki/Mired>`__, or the highest value when
expressed in Kelvin.
- **warm_white_color_temperature** (**Required**, float): The warmest color temperature supported by this light. This
is the highest value when expressed in `mireds <https://en.wikipedia.org/wiki/Mired>`__, or the lowest value when
expressed in Kelvin.
- **color_interlock** (*Optional*, boolean): When enabled, this will prevent white leds being on at the same
time as RGB leds. See :ref:`rgbw_color_interlock` for more information. Defaults to ``false``.
- **effects** (*Optional*, list): A list of :ref:`light effects <light-effects>` to use for this light.
- **id** (*Optional*, :ref:`config-id`): Manually specify the ID used for code generation.
- All other options from :ref:`Light <config-light>`.
See Also
--------
- :doc:`/components/output/index`
- :doc:`/components/light/index`
- :doc:`/components/light/rgb`
- :doc:`/components/light/rgbw`
- :doc:`/components/light/rgbww`
- :doc:`/components/power_supply`
- :doc:`/components/output/ledc`
- :doc:`/components/output/esp8266_pwm`
- :doc:`/components/output/pca9685`
- :doc:`/components/output/tlc59208f`
- :doc:`/components/output/my9231`
- :doc:`/components/output/sm16716`
- :apiref:`rgbct/rgbct_light_output.h`
- :ghedit:`Edit`

View File

@ -43,6 +43,21 @@ perceived intensity of different colors will generally vary. This can be done by
pin: D1 pin: D1
max_power: 80% max_power: 80%
.. _rgbw_color_interlock:
Color Interlock
---------------
With some LED bulbs, it is not possible to enable the RGB leds at the same time as the white leds, or setting
the RGB channels to maximum whilst wanting a white light will have an undesired hue effect. For these cases a
configuration variable is available that prevents the RGB leds and white leds from being turned on at the same
time: ``color_interlock``.
Setting this option to ``true`` will result in the light having two color modes available, ``RGB`` and ``WHITE``.
When the ``RGB`` color mode is active, the white leds are turned off, and when the ``WHITE`` color mode is active,
the RGB leds are turned off. Switching between these modes can be done from the Home Assistant interface, or by using
the ``color_mode`` option of the :ref:`light control actions <light-turn_on_action>`.
Configuration variables: Configuration variables:
------------------------ ------------------------
@ -57,26 +72,16 @@ Configuration variables:
- **id** (*Optional*, :ref:`config-id`): Manually specify the ID used for code generation. - **id** (*Optional*, :ref:`config-id`): Manually specify the ID used for code generation.
- All other options from :ref:`Light <config-light>`. - All other options from :ref:`Light <config-light>`.
.. _rgbw_color_interlock:
Color Interlock
***************
With some LED bulbs, it is not possible to enable the RGB leds at the same time as the white leds, or setting
the RGB channels to maximum whilst wanting a white light will have an undesired hue effect. For these cases a
configuration variable is available that prevents the RGB leds and white leds from being turned on at the same
time: ``color_interlock``.
Setting this variable to ``true`` will automatically turn off the RGB leds when the white value is non-zero, or
when the color is set to white (equal values for red, green and blue). When a different color is set, or the
color brightness is raised above 0%, the white leds are automatically turned off.
See Also See Also
-------- --------
- :doc:`/components/output/index` - :doc:`/components/output/index`
- :doc:`/components/light/index` - :doc:`/components/light/index`
- :doc:`/components/light/cwww`
- :doc:`/components/light/color_temperature`
- :doc:`/components/light/rgb` - :doc:`/components/light/rgb`
- :doc:`/components/light/rgbww`
- :doc:`/components/light/rgbct`
- :doc:`/components/power_supply` - :doc:`/components/power_supply`
- :doc:`/components/output/ledc` - :doc:`/components/output/ledc`
- :doc:`/components/output/esp8266_pwm` - :doc:`/components/output/esp8266_pwm`

View File

@ -6,8 +6,8 @@ RGBWW Light
:image: rgbw.png :image: rgbw.png
The ``rgbww`` light platform creates an RGBWW (cold white + warm white) The ``rgbww`` light platform creates an RGBWW (cold white + warm white)
light from 5 :ref:`float output components <output>` (one for each channel). The cold white light from 5 :ref:`float output components <output>` (one for each channel). The cold and warm
and warm white channels will be mixed using the color temperature configuration options. white channels can be controlled individually or together, see :ref:`cwww_mixing` for more information.
.. code-block:: yaml .. code-block:: yaml
@ -49,6 +49,19 @@ perceived intensity of different colors will generally vary. This can be done by
pin: D1 pin: D1
max_power: 80% max_power: 80%
Color Interlock
---------------
With some LED bulbs, it is not possible to enable the RGB leds at the same time as the white leds, or setting
the RGB channels to maximum whilst wanting a white light will have an undesired hue effect. For these cases a
configuration variable is available that prevents the RGB leds and white leds from being turned on at the same
time: ``color_interlock``.
Setting this option to ``true`` will result in the light having two color modes available, ``RGB`` and ``COLD_WARM_WHITE``.
When the ``RGB`` color mode is active, the white leds are turned off, and when the ``COLD_WARM_WHITE`` color mode is active,
the RGB leds are turned off. Switching between these modes can be done from the Home Assistant interface, or by using
the ``color_mode`` option of the :ref:`light control actions <light-turn_on_action>`.
Configuration variables: Configuration variables:
------------------------ ------------------------
@ -61,10 +74,12 @@ Configuration variables:
white channel. white channel.
- **warm_white** (**Required**, :ref:`config-id`): The id of the float :ref:`output` to use for the warm - **warm_white** (**Required**, :ref:`config-id`): The id of the float :ref:`output` to use for the warm
white channel. white channel.
- **cold_white_color_temperature** (**Required**, float): The color temperate (in - **cold_white_color_temperature** (*Optional*, float): The color temperature (in
`mireds <https://en.wikipedia.org/wiki/Mired>`__ or Kelvin) of the cold white channel. `mireds <https://en.wikipedia.org/wiki/Mired>`__ or Kelvin) of the cold white channel. Note that when the color interlock
- **warm_white_color_temperature** (**Required**, float): The color temperate (in is enabled, this option is required to control the light from Home Assistant.
`mireds <https://en.wikipedia.org/wiki/Mired>`__ or Kelvin) of the warm white channel. - **warm_white_color_temperature** (*Optional*, float): The color temperature (in
`mireds <https://en.wikipedia.org/wiki/Mired>`__ or Kelvin) of the warm white channel. Note that when the color interlock
is enabled, this option is required to control the light from Home Assistant.
- **constant_brightness** (*Optional*, boolean): When enabled, this will keep the overall brightness of the - **constant_brightness** (*Optional*, boolean): When enabled, this will keep the overall brightness of the
cold and warm white channels constant by limiting the combined output to 100% of a single channel. This cold and warm white channels constant by limiting the combined output to 100% of a single channel. This
reduces the possible overall brightness but is necessary for some power supplies that are not able to run reduces the possible overall brightness but is necessary for some power supplies that are not able to run

View File

@ -0,0 +1,50 @@
Status Led Light
================
.. seo::
:description: Instructions for setting up a Status Led shared also as binary ON/OFF light in ESPHome.
:image: led-on.png
The ``status_led`` light platform allows to share a single led for indicating the status of
the device (when on error/warning state) or as binary light (when on OK state).
This is useful for devices with only one led available.
It provides the combined functionality of :doc:`status_led component </components/status_led>` and a
:doc:`binary light component </components/light/binary>` over a single shared GPIO led.
When the device is on error/warning state, the function of ``status_led`` will take precedence and control the blinking of the led.
When the device is in OK state, the led will be restored to the state of the ``binary light`` function and can be controlled as such.
.. code-block:: yaml
# Example configuration entry
light:
- platform: status_led
name: "Switch state"
pin: GPIO2
.. note::
When using this platform the high level ``status_led`` component should not be included (at least over the same pin),
as its functionality is directly provided by this platform.
The only difference is that the platform won't be loaded in OTA safe mode, while the component would be.
Configuration variables:
------------------------
- **name** (**Required**, string): The name of the light.
- **pin** (**Required**, :ref:`Pin Schema <config-pin_schema>`): The GPIO pin to operate the LED on.
- **id** (*Optional*, :ref:`config-id`): Manually specify the ID used for code generation.
- **effects** (*Optional*, list): A list of :ref:`light effects <light-effects>` to use for this light, though binary lights
only support very few of them.
- All other options from :ref:`Light <config-light>`.
See Also
--------
- :doc:`/components/status_led`
- :doc:`/components/light/binary`
- :doc:`/components/light/index`
- :apiref:`status_led/light/status_led_light.h`
- :ghedit:`Edit`

View File

@ -86,10 +86,10 @@ Configuration variables:
- **max_value** (*Optional*, int, default 255): The highest dimmer value allowed. Most dimmers have a - **max_value** (*Optional*, int, default 255): The highest dimmer value allowed. Most dimmers have a
maximum of 255, but dimmers with a maximum of 1000 can also be found. Try what works best. maximum of 255, but dimmers with a maximum of 1000 can also be found. Try what works best.
- **color_temperature_max_value** (*Optional*, int, default 255): The highest color temperature - **color_temperature_max_value** (*Optional*, int, default 255): The highest color temperature
value allowed. Some ceiling fans have a value of 100 (also for ``max_value``). value allowed. Some ceiling fans have a value of 100 (also for `max_value`).
- **cold_white_color_temperature** (*Optional*, float): The color temperate (in `mireds - **cold_white_color_temperature** (*Optional*, float): The color temperature (in `mireds
<https://en.wikipedia.org/wiki/Mired>`__ or Kelvin) of the cold white channel. <https://en.wikipedia.org/wiki/Mired>`__ or Kelvin) of the cold white channel.
- **warm_white_color_temperature** (*Optional*, float): The color temperate (in `mireds - **warm_white_color_temperature** (*Optional*, float): The color temperature (in `mireds
<https://en.wikipedia.org/wiki/Mired>`__ or Kelvin) of the warm white channel. <https://en.wikipedia.org/wiki/Mired>`__ or Kelvin) of the warm white channel.
- All other options from :ref:`Light <config-light>`. - All other options from :ref:`Light <config-light>`.
- At least one of *dimmer_datapoint* or *switch_datapoint* must be provided. - At least one of *dimmer_datapoint* or *switch_datapoint* must be provided.

View File

@ -40,6 +40,10 @@ Advanced settings:
- **on_message** (*Optional*, :ref:`Automation <automation>`): An action to be - **on_message** (*Optional*, :ref:`Automation <automation>`): An action to be
performed when a message is to be logged. The variables ``int level``, ``const char* tag`` and performed when a message is to be logged. The variables ``int level``, ``const char* tag`` and
``const char* message`` are available for lambda processing. ``const char* message`` are available for lambda processing.
- **deassert_rts_dtr** (*Optional*, boolean): Deasserts RTS/DTR when opening
log over UART. This is useful if RTS/DTR signals are directly connected to
the reset pin or strapping pins. Note: Deassert typically means high on TTL
level since RTS/DTR are usually low active signals. Defaults to ``false``.
.. _logger-hardware_uarts: .. _logger-hardware_uarts:

View File

@ -35,6 +35,9 @@ Configuration variables:
- **internal** (*Optional*, boolean): Mark this component as internal. Internal components will - **internal** (*Optional*, boolean): Mark this component as internal. Internal components will
not be exposed to the frontend (like Home Assistant). Only specifying an ``id`` without not be exposed to the frontend (like Home Assistant). Only specifying an ``id`` without
a ``name`` will implicitly set this to true. a ``name`` will implicitly set this to true.
- **disabled_by_default** (*Optional*, boolean): If true, then this entity should not be added to any client's frontend,
(usually Home Assistant) without the user manually enabling it (via the Home Assistant UI).
Requires Home Assistant 2021.9 or newer. Defaults to ``false``.
Automations: Automations:

Binary file not shown.

After

Width:  |  Height:  |  Size: 64 KiB

View File

@ -46,6 +46,8 @@ Float outputs only:
Must be in range from 0 to max_power. Defaults to ``0``. Must be in range from 0 to max_power. Defaults to ``0``.
- **max_power** (*Optional*, float): Sets the maximum output value of this output platform. - **max_power** (*Optional*, float): Sets the maximum output value of this output platform.
Must be in range from min_power to 1. Defaults to ``1``. Must be in range from min_power to 1. Defaults to ``1``.
- **zero_means_zero** (*Optional*, boolean): Sets the output to use actual 0 instead of ``min_power``.
Defaults to ``false``.
.. _output-turn_on_action: .. _output-turn_on_action:

View File

@ -0,0 +1,105 @@
TLC5947 LED driver
==================
.. seo::
:description: Instructions for setting up TLC5947 LED drivers in ESPHome.
:image: images/tlc5947.jpg
:keywords: tlc5947,
.. _tlc5947-component:
Component/Hub
-------------
.. figure:: images/tlc5947.jpg
:align: center
:width: 75.0%
Adafruit's TLC5947 board
This component represents a chain of `TLC5947 24-Channel, 12-Bit PWM LED Drivers <https://www.ti.com/lit/ds/symlink/tlc5947.pdf>`_,
which is used e.g. on this `board from Adafruit <https://www.adafruit.com/product/1429>`_.
To use the channels of this components, you first need to setup the
global ``tlc5947`` hub and give it an id, and then define the
:ref:`individual output channels <tlc5947-output>`.
.. code-block:: yaml
# Example configuration entry
tlc5947:
data_pin: GPIO12
clock_pin: GPIO14
lat_pin: GPIO15
# Individual outputs
output:
- platform: tlc5947
id: output_red
channel: 0
- platform: tlc5947
id: output_green
channel: 1
- platform: tlc5947
id: output_blue
channel: 2
Configuration variables:
************************
- **data_pin** (**Required**, :ref:`config-pin_schema`): The pin connected to DIN.
- **clock_pin** (**Required**, :ref:`config-pin_schema`): The pin connected to CLK.
- **lat_pin** (**Required**, :ref:`config-pin_schema`): The pin connected to LAT.
- **oe_pin** (*Optional*, :ref:`config-pin_schema`): The pin connected to /OE (BLANK).
- **num_chips** (*Optional*, int): Number of chips in the chain. Must be
in range from 1 to 85. Defaults to 1.
- **id** (*Optional*, :ref:`config-id`): The id to use for
this ``tlc5947`` component. Use this if you have multiple TLC5947 chains
connected at the same time.
.. _tlc5947-output:
Output
------
The tlc5947 output component exposes a tlc5947 channel of a global
:ref:`tlc5947-component` as a float output.
.. code-block:: yaml
# Example configuration entry
tlc5947:
data_pin: GPIO12
clock_pin: GPIO14
lat_pin: GPIO15
# Individual outputs
output:
- platform: tlc5947
id: output_red
channel: 0
- platform: tlc5947
id: output_green
channel: 1
- platform: tlc5947
id: output_blue
channel: 2
Configuration variables:
************************
- **id** (**Required**, :ref:`config-id`): The id to use for this output component.
- **channel** (**Required**, int): Chose the channel of the TLC5947 chain of
this output component.
- **tlc5947_id** (*Optional*, :ref:`config-id`): Manually specify the ID of the
:ref:`TLC5947-component`.
Use this if you have multiple TLC5947 chains you want to use at the same time.
- All other options from :ref:`Output <config-output>`.
See Also
--------
- :doc:`/components/output/index`
- :doc:`/components/light/monochromatic`
- :doc:`/components/power_supply`
- :apiref:`tlc5947/tlc5947.h`
- :ghedit:`Edit`

343
components/pipsolar.rst Normal file
View File

@ -0,0 +1,343 @@
PipSolar PV Inverter
====================
.. seo::
:description: Instructions for setting up PipSolar Compatible PV Inverter in ESPHome.
:image: pipsolar.jpg
The PipSolar component allows you to integrate PIP-compatible Inverters in ESPHome.
It uses :ref:`UART <uart>` for communication.
Once configured, you can use sensors, binary sensors, switches and outputs as described below for your projects.
.. warning::
All functionality is working fine on esp8266 and esp32 chips.
If you configure a lot of the possible sensors etc. from below it could be that you run out of memory (on esp8266).
If you configure more than one if this devices with nearly all sensors etc. you run in a stack-size issue. In this case you have to increase stack size.
.. figure:: images/pipsolar.jpg
:align: center
:width: 50.0%
pip4048 compatible PV Inverter.
Overview
--------
You can connect a wide variety of PV Inverters as long as they provide a serial interface and talk the commands used (at least those you want to use).
A documentation about the communication protocol mostly supported can be found |here|_.
This component will poll the needed polling commands in a loop. If there is a command to send for controlling the inverter this command will be queued and fired as next after the current polling command ends.
There is a buffer to buffer up to 10 commands.
.. |here| replace:: ``here``
.. _here: https://github.com/jblance/mpp-solar/raw/master/docs/PI30_PIP-GK_MK-Protocol.pdf
.. code-block:: yaml
# Example configuration entry
uart:
- id: uart_bus
tx_pin: GPIO18
rx_pin: GPIO19
# most devices use 2400 as baud_rate
baud_rate: 2400
pipsolar:
- uart_id: uart_bus
id: inverter0
Configuration variables:
~~~~~~~~~~~~~~~~~~~~~~~~
- **id** (**Required**, :ref:`config-id`): The id to use for this pipsolar component.
- **uart_id** (*Optional*): The uart Bus ID
Sensors
-------
.. code-block:: yaml
# Example configuration entry
sensor:
- platform: pipsolar
pipsolar_id: inverter0
grid_rating_voltage:
id: inverter0_grid_rating_voltage
name: inverter0_grid_rating_voltage
grid_rating_current:
id: inverter0_grid_rating_current
name: inverter0_grid_rating_current
ac_output_apparent_power:
id: inverter0_ac_output_apparent_power
name: inverter0_ac_output_apparent_power
ac_output_active_power:
id: inverter0_ac_output_active_power
name: inverter0_ac_output_active_power
Configuration variables:
~~~~~~~~~~~~~~~~~~~~~~~~
All sensors are normal sensors... so all sensor variables are working to.
- **grid_rating_voltage** (*Optional*): grid rating voltage
- **grid_rating_current** (*Optional*): grid rating current
- **ac_output_rating_voltage** (*Optional*): AC output rating voltage
- **ac_output_rating_frequency** (*Optional*): AC output rating frequency
- **ac_output_rating_current** (*Optional*): AC output rating current
- **ac_output_rating_apparent_power** (*Optional*): AC output rating apparent power
- **ac_output_rating_active_power** (*Optional*): AC output rating active power
- **battery_rating_voltage** (*Optional*): battery rating voltage
- **battery_recharge_voltage** (*Optional*): battery recharge voltage
- **battery_under_voltage** (*Optional*): battery under voltage
- **battery_bulk_voltage** (*Optional*): battery bulk voltage
- **battery_float_voltage** (*Optional*): battery float voltage
- **battery_type** (*Optional*): battery type
- **current_max_ac_charging_current** (*Optional*): current max ac charging current
- **current_max_charging_current** (*Optional*): current max charging current
- **input_voltage_range** (*Optional*): input voltage range
- **output_source_priority** (*Optional*): output source priority
- **charger_source_priority** (*Optional*): charger source priority
- **parallel_max_num** (*Optional*): parallel max num
- **machine_type** (*Optional*): machine type
- **topology** (*Optional*): topology
- **output_mode** (*Optional*): output mode
- **battery_redischarge_voltage** (*Optional*): battery re-discharge voltage
- **pv_ok_condition_for_parallel** (*Optional*): PV OK condition for parallel
- **pv_power_balance** (*Optional*): PV power balance mode
- **grid_voltage** (*Optional*): grid voltage
- **grid_frequency** (*Optional*): grid frequency
- **ac_output_voltage** (*Optional*): ac output voltage
- **ac_output_frequency** (*Optional*): ac output frequency
- **ac_output_apparent_power** (*Optional*): ac output apparent power
- **ac_output_active_power** (*Optional*): ac output active power
- **output_load_percent** (*Optional*): output load percentage
- **bus_voltage** (*Optional*): bus voltage
- **battery_voltage** (*Optional*): battery voltage
- **battery_charging_current** (*Optional*): battery charging current
- **battery_capacity_percent** (*Optional*): battery capacity percent
- **inverter_heat_sink_temperature** (*Optional*): inverter heatsink temperature
- **pv_input_current_for_battery** (*Optional*): pv input current for battery
- **pv_input_voltage** (*Optional*): pv input voltage
- **battery_voltage_scc** (*Optional*): battery voltage from scc
- **battery_discharge_current** (*Optional*): battery discharge current
- **add_sbu_priority_version** (*Optional*): add sbu priority status
- **configuration_status** (*Optional*): configuration status
- **scc_firmware_version** (*Optional*): scc firmware version
- **battery_voltage_offset_for_fans_on** (*Optional*): battery voltage offset for fans on
- **eeprom_version** (*Optional*): eeprom version
- **pv_charging_power** (*Optional*): pc charging power
Binary Sensors
--------------
.. code-block:: yaml
# Example configuration entry
binary_sensor:
- platform: pipsolar
pipsolar_id: inverter0
add_sbu_priority_version:
id: inverter0_add_sbu_priority_version
name: inverter0_add_sbu_priority_version
configuration_status:
id: inverter0_configuration_status
name: inverter0_configuration_status
Configuration variables:
~~~~~~~~~~~~~~~~~~~~~~~~
All sensors are normal binary sensors... so all binary sensor variables are working to.
- **add_sbu_priority_version** (*Optional*): add sbu priority version
- **configuration_status** (*Optional*): configuration status
- **scc_firmware_version** (*Optional*): scc firmware version
- **load_status** (*Optional*): load status
- **battery_voltage_to_steady_while_charging** (*Optional*): battery voltage to steady while charging
- **charging_status** (*Optional*): charging status
- **scc_charging_status** (*Optional*): scc charging status
- **ac_charging_status** (*Optional*): ac charging status
- **charging_to_floating_mode** (*Optional*): charging to floating mode
- **switch_on** (*Optional*): switch on
- **dustproof_installed** (*Optional*): dustproof installed
- **silence_buzzer_open_buzzer** (*Optional*): silence buzzer open buzzer
- **overload_bypass_function** (*Optional*): overload bypass function
- **lcd_escape_to_default** (*Optional*): lcd escape to default
- **overload_restart_function** (*Optional*): overload restart function
- **over_temperature_restart_function** (*Optional*): over temperature restart function
- **backlight_on** (*Optional*): backlight on
- **alarm_on_when_primary_source_interrupt** (*Optional*): alarm on when primary source interrupt
- **fault_code_record** (*Optional*): fault code record
- **power_saving** (*Optional*): power saving
- **warnings_present** (*Optional*): warnings present
- **faults_present** (*Optional*): faults present
- **warning_power_loss** (*Optional*): warning power loss
- **fault_inverter_fault** (*Optional*): fault inverter fault
- **fault_bus_over** (*Optional*): fault bus over
- **fault_bus_under** (*Optional*): fault bus under
- **fault_bus_soft_fail** (*Optional*): fault bus soft fail
- **warning_line_fail** (*Optional*): warning line fail
- **fault_opvshort** (*Optional*): fault opvshort
- **fault_inverter_voltage_too_low** (*Optional*): fault inverter voltage too low
- **fault_inverter_voltage_too_high** (*Optional*): fault inverter voltage too high
- **warning_over_temperature** (*Optional*): warning over temperature
- **warning_fan_lock** (*Optional*): warning fan lock
- **warning_battery_voltage_high** (*Optional*): warning battery voltage high
- **warning_battery_low_alarm** (*Optional*): warning battery low alarm
- **warning_battery_under_shutdown** (*Optional*): warning battery under shutdown
- **warning_battery_derating** (*Optional*): warning battery derating
- **warning_over_load** (*Optional*): warning over load
- **warning_eeprom_failed** (*Optional*): warning eeprom failed
- **fault_inverter_over_current** (*Optional*): fault inverter over current
- **fault_inverter_soft_failed** (*Optional*): fault inverter soft failed
- **fault_self_test_failed** (*Optional*): fault_self_test_failed
- **fault_op_dc_voltage_over** (*Optional*): fault op dc voltage over
- **fault_battery_open** (*Optional*): fault battery open
- **fault_current_sensor_failed** (*Optional*): fault current sensor failed
- **fault_battery_short** (*Optional*): fault battery short
- **warning_power_limit** (*Optional*): warning power limit
- **warning_pv_voltage_high** (*Optional*): warning pv voltage high
- **fault_mppt_overload** (*Optional*): fault mppt overload
- **warning_mppt_overload** (*Optional*): warning mppt overload
- **warning_battery_too_low_to_charge** (*Optional*): warning battery too low to charge
- **fault_dc_dc_over_current** (*Optional*): fault dc dc over current
- **fault_code** (*Optional*): fault code
- **warnung_low_pv_energy** (*Optional*): warnung low pv energy
- **warning_high_ac_input_during_bus_soft_start** (*Optional*): warning high ac input during bus soft start
- **warning_battery_equalization** (*Optional*): warning battery equalization
Text Sensors
------------
.. code-block:: yaml
# Example configuration entry
text_sensor:
- platform: pipsolar
pipsolar_id: inverter0
device_mode:
id: inverter0_device_mode
name: inverter0_device_mode
last_qpigs:
id: inverter0_last_qpigs
name: inverter0_last_qpigs
last_qpiri:
Configuration variables:
~~~~~~~~~~~~~~~~~~~~~~~~
All sensors are normal text sensors... so all text sensor variables are working to.
- **device_mode** (*Optional*): device mode response
- **last_qpigs** (*Optional*): last qpigs reponse
- **last_qpiri** (*Optional*): last qpiri reponse
- **last_qmod** (*Optional*): last qmod reponse
- **last_qflag** (*Optional*): last qflag reponse
- **last_qpiws** (*Optional*): last qpiws reponse
- **last_qt** (*Optional*): last qt reponse
- **last_qmn** (*Optional*): last qmn reponse
Switches
--------
Not all possible switches are exposed as they lead to the possibility to make serious damage. They should only be set at the physical device itself.
.. code-block:: yaml
# Example configuration entry
switch:
- platform: pipsolar
pipsolar_id: inverter0
output_source_priority_utility:
name: inverter0_output_source_priority_utility
output_source_priority_solar:
name: inverter0_output_source_priority_solar
output_source_priority_battery:
name: inverter0_output_source_priority_battery
input_voltage_range:
name: inverter0_input_voltage_range
pv_ok_condition_for_parallel:
name: inverter0_pv_ok_condition_for_parallel
pv_power_balance:
name: inverter0_pv_power_balance
Configuration variables:
~~~~~~~~~~~~~~~~~~~~~~~~
All sensors are normal text sensors... so all text sensor variables are working to.
- **output_source_priority_utility** (*Optional*): output source priority utility
- **output_source_priority_solar** (*Optional*): output source priority solar
- **output_source_priority_battery** (*Optional*): output source priority battery
- **input_voltage_range** (*Optional*): input voltage range
- **pv_ok_condition_for_parallel** (*Optional*): pv ok condition for parallel
- **pv_power_balance** (*Optional*): pv power balance
Outputs
--------------
Not all possible outputs are exposed as they lead to the possibility to make serious damage. They should only be set at the physical device itself.
.. code-block:: yaml
# Example configuration entry
output:
- platform: pipsolar
pipsolar_id: inverter0
battery_recharge_voltage:
id: inverter0_battery_recharge_voltage_out
Configuration variables:
~~~~~~~~~~~~~~~~~~~~~~~~
All sensors are normal text sensors... so all text sensor variables are working to.
- **battery_recharge_voltage** (*Optional*): battery recharge voltage;
- **possible_values** (*Optional*,list): a list of possible values default: 44.0,45.0,46.0,47.0,48.0,49.0,50.0,51.0
- **battery_under_voltage** (*Optional*): battery under voltage;
- **possible_values** (*Optional*,list): a list of possible values default: 40.0,40.1,42,43,44,45,46,47,48.0
- **battery_float_voltage** (*Optional*): battery float voltage;
- **possible_values** (*Optional*,list): a list of possible values default: 48.0,49.0,50.0,51.0
- **battery_type** (*Optional*): battery type;
- **possible_values** (*Optional*,list): a list of possible values default: 0,1,2
- **current_max_ac_charging_current** (*Optional*): current max ac charging current;
- **possible_values** (*Optional*,list): a list of possible values default: 2,10,20
- **current_max_charging_current** (*Optional*): current max charging current;
- **possible_values** (*Optional*,list): a list of possible values default: 10,20,30,40
- **output_source_priority** (*Optional*): output source priority;
- **possible_values** (*Optional*,list): a list of possible values default: 0,1,2
- **charger_source_priority** (*Optional*): charger source priority;
- **possible_values** (*Optional*,list): a list of possible values default: 0,1,2,3
- **battery_redischarge_voltage** (*Optional*): battery redischarge voltage;
- **possible_values** (*Optional*,list): a list of possible values default: 00.0,48.0,49,50.0,51.0,52,53,54,55,56,57,58
.. _pipsolaroutput_set_level_action:
``output.pipsolar.set_level`` Action
------------------------------------
To use your outputs in :ref:`automations <automation>` or templates, you can use this action to set the
target level of the output.
.. code-block:: yaml
on_...:
then:
- output.pipsolar.set_level:
id: my_pipsolar_output
level: 48.0
Configuration options:
- **id** (**Required**, :ref:`config-id`): The ID of the output.
- **level** (*Optional*, percentage, :ref:`templatable <config-templatable>`): The target level.
See Also
--------
- :ref:`uart`
- :ghedit:`Edit`

View File

@ -38,6 +38,7 @@ Configuration variables:
- **samsung**: Decode and dump Samsung infrared codes. - **samsung**: Decode and dump Samsung infrared codes.
- **samsung36**: Decode and dump Samsung36 infrared codes. - **samsung36**: Decode and dump Samsung36 infrared codes.
- **sony**: Decode and dump Sony infrared codes. - **sony**: Decode and dump Sony infrared codes.
- **toshiba_ac**: Decode and dump Toshiba AC infrared codes.
- **rc_switch**: Decode and dump RCSwitch RF codes. - **rc_switch**: Decode and dump RCSwitch RF codes.
- **rc5**: Decode and dump RC5 IR codes. - **rc5**: Decode and dump RC5 IR codes.
- **raw**: Print all remote codes in their raw form. Useful for using arbitrary protocols. - **raw**: Print all remote codes in their raw form. Useful for using arbitrary protocols.
@ -69,6 +70,9 @@ Automations:
- **on_sony** (*Optional*, :ref:`Automation <automation>`): An automation to perform when a - **on_sony** (*Optional*, :ref:`Automation <automation>`): An automation to perform when a
Sony remote code has been decoded. A variable ``x`` of type :apiclass:`remote_base::SonyData` Sony remote code has been decoded. A variable ``x`` of type :apiclass:`remote_base::SonyData`
is passed to the automation for use in lambdas. is passed to the automation for use in lambdas.
- **on_toshiba_ac** (*Optional*, :ref:`Automation <automation>`): An automation to perform when a
Toshiba AC remote code has been decoded. A variable ``x`` of type :apiclass:`remote_base::ToshibaAcData`
is passed to the automation for use in lambdas.
- **on_raw** (*Optional*, :ref:`Automation <automation>`): An automation to perform when a - **on_raw** (*Optional*, :ref:`Automation <automation>`): An automation to perform when a
raw remote code has been decoded. A variable ``x`` of type ``std::vector<int>`` raw remote code has been decoded. A variable ``x`` of type ``std::vector<int>``
is passed to the automation for use in lambdas. is passed to the automation for use in lambdas.
@ -90,6 +94,10 @@ Automations:
- **on_pioneer** (*Optional*, :ref:`Automation <automation>`): An automation to perform when a - **on_pioneer** (*Optional*, :ref:`Automation <automation>`): An automation to perform when a
pioneer remote code has been decoded. A variable ``x`` of type :apiclass:`remote_base::PioneerData` pioneer remote code has been decoded. A variable ``x`` of type :apiclass:`remote_base::PioneerData`
is passed to the automation for use in lambdas. is passed to the automation for use in lambdas.
- **on_dish** (*Optional*, :ref:`Automation <automation>`): An automation to perform when a
dish network remote code has been decoded. A variable ``x`` of type :apiclass:`remote_base::DishData`
is passed to the automation for use in lambdas.
Beware that Dish remotes use a different carrier frequency (57.6kHz) that many receiver hardware don't decode.
.. _remote-receiver-binary-sensor: .. _remote-receiver-binary-sensor:
@ -143,6 +151,11 @@ Remote code selection (exactly one of these has to be included):
- **data** (**Required**, int): The Sony code to trigger on, see dumper output for more info. - **data** (**Required**, int): The Sony code to trigger on, see dumper output for more info.
- **nbits** (*Optional*, int): The number of bits of the remote code. Defaults to ``12``. - **nbits** (*Optional*, int): The number of bits of the remote code. Defaults to ``12``.
- **toshiba_ac**: Trigger on a decoded Toshiba AC remote code with the given data.
- **rc_code_1** (**Required**, int): The remote control code to trigger on, see dumper output for more details.
- **rc_code_2** (*Optional*, int): The second part of the remote control code to trigger on, see dumper output for more details.
- **raw**: Trigger on a raw remote code with the given code. - **raw**: Trigger on a raw remote code with the given code.
- **code** (**Required**, list): The code to listen for, see :ref:`remote_transmitter-transmit_raw` - **code** (**Required**, list): The code to listen for, see :ref:`remote_transmitter-transmit_raw`
@ -170,7 +183,13 @@ Remote code selection (exactly one of these has to be included):
- **pioneer**: Trigger on a decoded Pioneer remote code with the given data. - **pioneer**: Trigger on a decoded Pioneer remote code with the given data.
- **rc_code_1** (**Required**, int): The remote control code trigger on, see dumper output for more details. - **rc_code_1** (**Required**, int): The remote control code to trigger on, see dumper output for more details.
- **dish**: Trigger on a decoded Dish Network remote code with the given data.
Beware that Dish remotes use a different carrier frequency (57.6kHz) that many receiver hardware don't decode.
- **address** (*Optional*, int, 1-16): The number of the receiver to target. Defaults to ``1``.
- **command** (**Required**, int, 0-63): The Dish command to listen for.
- **rc_switch_raw**: Trigger on a decoded RC Switch raw remote code with the given data. - **rc_switch_raw**: Trigger on a decoded RC Switch raw remote code with the given data.

View File

@ -252,6 +252,27 @@ Configuration variables:
- **command** (**Required**, int): The command to send. - **command** (**Required**, int): The command to send.
- All other options from :ref:`remote_transmitter-transmit_action`. - All other options from :ref:`remote_transmitter-transmit_action`.
``remote_transmitter.transmit_dish`` Action
************************************************
This :ref:`action <config-action>` sends a Dish Network infrared remote code to a remote transmitter.
.. code-block:: yaml
on_...:
- remote_transmitter.transmit_dish:
address: 1
command: 16
Configuration variables:
- **address** (*Optional*, int, 1-16): The number of the receiver to target. Defaults to ``1``.
- **command** (**Required**, int, 0-63): The command to send.
- All other options from :ref:`remote_transmitter-transmit_action`.
You can find a list of commands in the `LIRC project <https://sourceforge.net/p/lirc-remotes/code/ci/master/tree/remotes/dishnet/Dish_Network.lircd.conf>`__.
``remote_transmitter.transmit_pioneer`` Action ``remote_transmitter.transmit_pioneer`` Action
********************************************** **********************************************
@ -281,6 +302,26 @@ At the time this action was created, Pioneer maintained listings of IR codes use
If unable to find your specific device in the documentation, find a device in the same class; the codes If unable to find your specific device in the documentation, find a device in the same class; the codes
are largely shared among devices within a given class. are largely shared among devices within a given class.
``remote_transmitter.transmit_toshiba_ac`` Action
*************************************************
This :ref:`action <config-action>` sends a Toshiba AC infrared remote code to a remote transmitter.
.. code-block:: yaml
on_...:
- remote_transmitter.transmit_toshiba_ac:
rc_code_1: 0xB24DBF4040BF
rc_code_2: 0xD5660001003C
Configuration variables:
- **rc_code_1** (**Required**, int): The remote control code to send, see dumper output for more details.
- **rc_code_2** (*Optional*, int): The secondary remote control code to send; some codes are sent in
two parts.
- **Note:** this action transmits codes using the new(er) Toshiba AC protocol and likely will not work with older units.
- All other options from :ref:`remote_transmitter-transmit_action`.
``remote_transmitter.transmit_rc_switch_raw`` Action ``remote_transmitter.transmit_rc_switch_raw`` Action
**************************************************** ****************************************************

131
components/select/index.rst Normal file
View File

@ -0,0 +1,131 @@
Select Component
================
.. seo::
:description: Instructions for setting up select components in ESPHome.
:image: folder-open.png
ESPHome has support for components to create a select entity. A select entity is
basically an option list that can be set by either yaml, hardware or the user/frontend.
.. note::
Home Assistant Core 2021.8 or higher is required for ESPHome select entities to work.
.. _config-select:
Base Select Configuration
-------------------------
All selects in ESPHome have a name and an optional icon.
.. code-block:: yaml
# Example select configuration
name: Livingroom Mood
id: my_select
# Optional variables:
icon: "mdi:emoticon-outline"
Configuration variables:
- **name** (**Required**, string): The name for the select.
- **icon** (*Optional*, icon): Manually set the icon to use for the select in the frontend.
- **internal** (*Optional*, boolean): Mark this component as internal. Internal components will
not be exposed to the frontend (like Home Assistant). Only specifying an ``id`` without
a ``name`` will implicitly set this to true.
- **disabled_by_default** (*Optional*, boolean): If true, then this entity should not be added to any client's frontend,
(usually Home Assistant) without the user manually enabling it (via the Home Assistant UI).
Requires Home Assistant 2021.9 or newer. Defaults to ``false``.
Automations:
- **on_value** (*Optional*, :ref:`Automation <automation>`): An automation to perform
when a new value is published. See :ref:`select-on_value`.
MQTT Options:
- All other options from :ref:`MQTT Component <config-mqtt-component>`.
Select Automation
-----------------
You can access the most recent state of the select in :ref:`lambdas <config-lambda>` using
``id(select_id).state``.
.. _select-on_value:
``on_value``
************
This automation will be triggered when a new option is published. In :ref:`Lambdas <config-lambda>`
you can get the value from the trigger with ``x``.
.. code-block:: yaml
select:
- platform: template
# ...
on_value:
then:
- logger.log:
format: "Chosen option: %s"
args: ["x.c_str()"]
Configuration variables: See :ref:`Automation <automation>`.
.. _select-set_action:
``select.set`` Action
*********************
This is an :ref:`Action <config-action>` for setting a select state.
.. code-block:: yaml
- select.set:
id: my_select
option: "Happy"
Configuration variables:
- **id** (**Required**, :ref:`config-id`): The ID of the select to set.
- **option** (**Required**, string, :ref:`templatable <config-templatable>`):
The option to set the select to.
.. _select-lambda_calls:
lambda calls
************
From :ref:`lambdas <config-lambda>`, you can call several methods on all selects to do some
advanced stuff (see the full API Reference for more info).
- ``make_call()``: Set the select option.
.. code-block:: cpp
// Within lambda, select the "Happy" option.
auto call = id(my_select).make_call();
call.set_option("Happy");
call.perform();
- ``.state``: Retrieve the current option of the select.
.. code-block:: cpp
// For example, create a custom log message when an option is selected:
ESP_LOGI("main", "Option of my select: %f", id(my_select).state);
See Also
--------
- :apiref:`select/select.h`
- :ghedit:`Edit`
.. toctree::
:maxdepth: 1
:glob:
*

View File

@ -0,0 +1,58 @@
Template Select
===============
.. seo::
:description: Instructions for setting up template selects with ESPHome.
:image: description.png
The ``template`` select platform allows you to create a select with templated values
using :ref:`lambdas <config-lambda>`.
.. code-block:: yaml
# Example configuration entry
select:
- platform: template
name: "Template select"
update_interval: never
options:
- one
- two
- three
initial_option: two
Configuration variables:
------------------------
- **name** (**Required**, string): The name of the select.
- **options** (**Required**, list): The list of options this select has.
- **lambda** (*Optional*, :ref:`lambda <config-lambda>`):
Lambda to be evaluated every update interval to get the new option of the select.
- **set_action** (*Optional*, :ref:`Action <config-action>`): The action that should
be performed when the remote (like Home Assistant's frontend) requests to set the select option.
- **update_interval** (*Optional*, :ref:`config-time`): The interval to check the
select ``lambda``. Defaults to ``60s``.
- **optimistic** (*Optional*, boolean): Whether to operate in optimistic mode - when in this mode,
any command sent to the template select will immediately update the reported state.
Cannot be used with ``lambda``. Defaults to ``false``.
- **restore_value** (*Optional*, boolean): Saves and loads the state to RTC/Flash.
Cannot be used with ``lambda``. Defaults to ``false``.
- **initial_option** (*Optional*, string): The option to set the option to on setup if not
restored with ``restore_value``.
Cannot be used with ``lambda``. Defaults to the first option in the ``options`` list.
- **id** (*Optional*, :ref:`config-id`): Manually specify the ID used for code generation.
- All other options from :ref:`Select <config-select>`.
``select.set`` Action
----------------------------------
You can also set an option to a template select from elsewhere in your YAML file
with the :ref:`select-set_action`.
See Also
--------
- :ref:`automation`
- :apiref:`template/select/template_select.h`
- :ghedit:`Edit`

View File

@ -0,0 +1,71 @@
AM43 Sensor
===========
.. seo::
:description: Sensors on AM43/BLE covers in ESPHome.
:image: am43.png
The ``am43`` sensor platform allows you to read the light and
battery sensors on an AM43 BLE cover motor. The platform connects
to the device over the ESP32's BLE peripheral.
.. note::
This component does NOT support Tuya-based versions of this device,
as the protocol is completely different. If your device is controlled
with the SmartLife app, then it will not work.
.. figure:: images/am43.jpg
:align: right
.. code-block:: yaml
# Example configuration entry
esp32_ble_tracker:
ble_client:
- mac: AA:BB:CC:DD:EE:FF
id: am43_device
sensor:
- platform: am43
ble_client_id: am43_device
battery_level:
name: "Kitchen blinds battery"
illuminance:
name: "Kitchen blinds light"
For more details on setting up this device, see the
:doc:`/components/cover/am43` component.
Configuration variables:
------------------------
- **ble_client_id** (**Required**, :ref:`config-id`): The id of the ``ble_client`` entry associated with the device.
- **battery_level** (*Optional*): The information for the battery level sensor.
- **name** (**Required**, string): The name for the battery level sensor.
- **id** (*Optional*, :ref:`config-id`): Set the ID of this sensor for use in lambdas.
- All other options from :ref:`Sensor <config-sensor>`.
- **illuminance** (*Optional*): The information for the light level sensor.
- **name** (**Required**, string): The name for the light level sensor.
- **id** (*Optional*, :ref:`config-id`): Set the ID of this sensor for use in lambdas.
- All other options from :ref:`Sensor <config-sensor>`.
- **update_interval** (*Optional*, :ref:`config-time`): The interval to check the
sensor. Defaults to ``60s``.
.. note::
It is recommended to also setup the :doc:`/components/cover/am43`.
See Also
--------
- :doc:`index`
- :doc:`/components/cover/am43`
- :ref:`automation`
- :apiref:`sensor/am43/am43.h`
- :ghedit:`Edit`

237
components/sensor/dsmr.rst Normal file
View File

@ -0,0 +1,237 @@
DSMR Component
==============
.. seo::
:description: Instructions for setting up DSMR Meter component in ESPHome.
:image: dsmr.png
Component/Hub
*************
The DSMR component connects to Dutch Smart Meters which comply to DSMR (Dutch Smart Meter
Requirements), also known as Slimme meter or P1 port.
This integration supports plain non encrypted telegrams and also encrypted as used in Luxembourg.
In case your equipment has encryption you must get a 32 character long encryption key from your energy company.
This component is passive, it does not transmit any data to your equipment, the equipment always transmits
data which this component decodes and updates the configured sensors at the pace the data is received.
- For official information about DSMR refer to: `DSMR Document <https://www.netbeheernederland.nl/dossiers/slimme-meter-15>`__
- For official information about the P1 port refer to: `P1 Companion Standard <https://www.netbeheernederland.nl/_upload/Files/Slimme_meter_15_a727fce1f1.pdf>`__
.. code-block:: yaml
# Example configuration entry
dsmr:
decryption_key: !secret decryption_key
sensor:
- platform: dsmr
energy_delivered_tariff1:
name: Energy Consumed Tariff 1
text_sensor:
- platform: dsmr
identification:
name: "DSMR Identification"
p1_version:
name: "DSMR Version"
Configuration variables:
- **decryption_key** (*Optional*, string, :ref:`templatable <config-templatable>`, 32 characters, case insensitive): The key to decrypt the
telegrams. Used in Lux only.
- **uart_id** (*Optional*, :ref:`config-id`): Manually specify the ID of the UART hub.
- **id** (*Optional*, :ref:`config-id`): Manually specify the ID of the DSMR if you have multiple components.
Sensor
******
.. note:: Not all sensors are available on all devices.
Country specific sensors are listed last.
Configuration variables:
- **energy_delivered_tariff1** (*Optional*): Energy Consumed Tariff 1.
- **name** (**Required**, string): The name for the energy_delivered_tariff1 sensor.
- **id** (*Optional*, :ref:`config-id`): Set the ID of this sensor for use in lambdas.
- All other options from :ref:`Sensor <config-sensor>`.
- **energy_delivered_tariff2** (*Optional*): Energy Consumed Tariff 2.
- **name** (**Required**, string): The name for the energy_delivered_tariff2 sensor.
- **id** (*Optional*, :ref:`config-id`): Set the ID of this sensor for use in lambdas.
- All other options from :ref:`Sensor <config-sensor>`.
- **energy_returned_tariff1** (*Optional*): Energy Produced Tariff 1.
- **name** (**Required**, string): The name for the energy_returned_tariff1 sensor.
- **id** (*Optional*, :ref:`config-id`): Set the ID of this sensor for use in lambdas.
- All other options from :ref:`Sensor <config-sensor>`.
- **energy_returned_tariff2** (*Optional*): Energy Produced Tariff 2.
- **name** (**Required**, string): The name for the energy_returned_tariff2 sensor.
- **id** (*Optional*, :ref:`config-id`): Set the ID of this sensor for use in lambdas.
- All other options from :ref:`Sensor <config-sensor>`.
- **power_delivered** (*Optional*): Power Consumed.
- **name** (**Required**, string): The name for the power_delivered sensor.
- **id** (*Optional*, :ref:`config-id`): Set the ID of this sensor for use in lambdas.
- All other options from :ref:`Sensor <config-sensor>`.
- **power_returned** (*Optional*): Power Produced.
- **name** (**Required**, string): The name for the power_returned sensor.
- **id** (*Optional*, :ref:`config-id`): Set the ID of this sensor for use in lambdas.
- All other options from :ref:`Sensor <config-sensor>`.
- **electricity_failures** (*Optional*): Electricity Failures.
- **name** (**Required**, string): The name for the electricity_failures sensor.
- **id** (*Optional*, :ref:`config-id`): Set the ID of this sensor for use in lambdas.
- All other options from :ref:`Sensor <config-sensor>`.
- **electricity_long_failures** (*Optional*): Long Electricity Failures.
- **name** (**Required**, string): The name for the electricity_long_failures sensor.
- **id** (*Optional*, :ref:`config-id`): Set the ID of this sensor for use in lambdas.
- All other options from :ref:`Sensor <config-sensor>`.
- **voltage_l1** (*Optional*): Voltage Phase 1.
- **name** (**Required**, string): The name for the voltage_l1 sensor.
- **id** (*Optional*, :ref:`config-id`): Set the ID of this sensor for use in lambdas.
- All other options from :ref:`Sensor <config-sensor>`.
- **voltage_l2** (*Optional*): Voltage Phase 2.
- **name** (**Required**, string): The name for the voltage_l2 sensor.
- **id** (*Optional*, :ref:`config-id`): Set the ID of this sensor for use in lambdas.
- All other options from :ref:`Sensor <config-sensor>`.
- **voltage_l3** (*Optional*): Voltage Phase 3.
- **name** (**Required**, string): The name for the voltage_l3 sensor.
- **id** (*Optional*, :ref:`config-id`): Set the ID of this sensor for use in lambdas.
- All other options from :ref:`Sensor <config-sensor>`.
- **current_l1** (*Optional*): Current Phase 1.
- **name** (**Required**, string): The name for the current_l1 sensor.
- **id** (*Optional*, :ref:`config-id`): Set the ID of this sensor for use in lambdas.
- All other options from :ref:`Sensor <config-sensor>`.
- **current_l2** (*Optional*): Current Phase 2.
- **name** (**Required**, string): The name for the current_l2 sensor.
- **id** (*Optional*, :ref:`config-id`): Set the ID of this sensor for use in lambdas.
- All other options from :ref:`Sensor <config-sensor>`.
- **current_l3** (*Optional*): Current Phase 3.
- **name** (**Required**, string): The name for the current_l3 sensor.
- **id** (*Optional*, :ref:`config-id`): Set the ID of this sensor for use in lambdas.
- All other options from :ref:`Sensor <config-sensor>`.
- **power_delivered_l1** (*Optional*): Power Consumed Phase 1.
- **name** (**Required**, string): The name for the power_delivered_l1 sensor.
- **id** (*Optional*, :ref:`config-id`): Set the ID of this sensor for use in lambdas.
- All other options from :ref:`Sensor <config-sensor>`.
- **power_delivered_l2** (*Optional*): Power Consumed Phase 2.
- **name** (**Required**, string): The name for the power_delivered_l2 sensor.
- **id** (*Optional*, :ref:`config-id`): Set the ID of this sensor for use in lambdas.
- All other options from :ref:`Sensor <config-sensor>`.
- **power_delivered_l3** (*Optional*): Power Consumed Phase 3.
- **name** (**Required**, string): The name for the power_delivered_l3 sensor.
- **id** (*Optional*, :ref:`config-id`): Set the ID of this sensor for use in lambdas.
- All other options from :ref:`Sensor <config-sensor>`.
- **power_returned_l1** (*Optional*): Power Produced Phase 1.
- **name** (**Required**, string): The name for the power_returned_l1 sensor.
- **id** (*Optional*, :ref:`config-id`): Set the ID of this sensor for use in lambdas.
- All other options from :ref:`Sensor <config-sensor>`.
- **power_returned_l2** (*Optional*): Power Produced Phase 2.
- **name** (**Required**, string): The name for the power_returned_l2 sensor.
- **id** (*Optional*, :ref:`config-id`): Set the ID of this sensor for use in lambdas.
- All other options from :ref:`Sensor <config-sensor>`.
- **power_returned_l3** (*Optional*): Power Produced Phase 3.
- **name** (**Required**, string): The name for the power_returned_l3 sensor.
- **id** (*Optional*, :ref:`config-id`): Set the ID of this sensor for use in lambdas.
- All other options from :ref:`Sensor <config-sensor>`.
- **gas_delivered** (*Optional*): Gas Consumed.
- **name** (**Required**, string): The name for the gas_delivered sensor.
- **id** (*Optional*, :ref:`config-id`): Set the ID of this sensor for use in lambdas.
- All other options from :ref:`Sensor <config-sensor>`.
Belgium
- **gas_delivered_be** (*Optional*): Gas Consumed Belgium.
- **name** (**Required**, string): The name for the gas_delivered_be sensor.
- **id** (*Optional*, :ref:`config-id`): Set the ID of this sensor for use in lambdas.
- All other options from :ref:`Sensor <config-sensor>`.
Luxembourg
- **energy_delivered_lux** (*Optional*): Energy Consumed Luxembourg
- **name** (**Required**, string): The name for the energy_delivered_lux sensor.
- **id** (*Optional*, :ref:`config-id`): Set the ID of this sensor for use in lambdas.
- All other options from :ref:`Sensor <config-sensor>`.
- **energy_returned_lux** (*Optional*): Energy Produced Luxembourg
- **name** (**Required**, string): The name for the energy_returned_lux sensor.
- **id** (*Optional*, :ref:`config-id`): Set the ID of this sensor for use in lambdas.
- All other options from :ref:`Sensor <config-sensor>`.
Text Sensor
***********
Configuration variables:
- **identification** (*Optional*): DSMR Identification
- **name** (**Required**, string): The name for the identification text sensor.
- **id** (*Optional*, :ref:`config-id`): Set the ID of this sensor for use in lambdas.
- All other options from :ref:`Text Sensor <config-text_sensor>`.
- **p1_version** (*Optional*): DSMR Version
- **name** (**Required**, string): The name for the p1_version text sensor.
- **id** (*Optional*, :ref:`config-id`): Set the ID of this sensor for use in lambdas.
- All other options from :ref:`Text Sensor <config-text_sensor>`.
Belgium
- **p1_version_be** (*Optional*): DSMR Version Beligum
- **name** (**Required**, string): The name for the p1_version_be text sensor.
- **id** (*Optional*, :ref:`config-id`): Set the ID of this sensor for use in lambdas.
- All other options from :ref:`Text Sensor <config-text_sensor>`.
See Also
--------
- :apiref:`dsmr/dsmr.h`
- :ghedit:`Edit`

View File

@ -0,0 +1,64 @@
HRXL MaxSonar WR Series
=======================
.. seo::
:description: Instructions for setting up MaxBotix HRXL MaxSonar WR ultrasonic distance measurement sensors in ESPHome.
:image: hrxl_maxsonar_wr.jpg
:keywords: ultrasonic, maxbotix, maxsonar
This sensor allows you to use HRXL MaxSonar WR series ultrasonic sensors by MaxBotix
(`datasheet <https://www.maxbotix.com/documents/HRXL-MaxSonar-WR_Datasheet.pdf>`__)
with ESPHome to measure distances. Depending on the model, these sensors can measure
in a range between 30 centimeters and 10 meters.
This sensor platform works with the **TTL versions** of those sensors and expects the
sensor's TTL pin to be wired to one of the ESP's input pins. Since these sensors read
multiple times per second, filtering is highly recommended.
.. figure:: images/hrxl_maxsonar_wr-full.jpg
:align: center
:width: 50.0%
MB7388 HRXL-MaxSonar-WRMLT Ultrasonic Distance Sensor.
.. code-block:: yaml
# Example configuration entry
uart:
rx_pin: 36
baud_rate: 9600
sensor:
- platform: "hrxl_maxsonar_wr"
name: "Rainwater Tank"
# Tweak the filters for your application
filters:
- sliding_window_moving_average:
window_size: 12
send_every: 12
- or:
- throttle: "20min"
- delta: 0.02
Configuration variables:
------------------------
- **name** (**Required**, string): The name of the sensor.
- All other options from :ref:`Sensor <config-sensor>`.
Advanced options:
- **uart_id** (*Optional*, :ref:`config-id`): The ID of the :ref:`UART bus <uart>` you wish to use for this sensor.
Use this if you want to use multiple UART buses at once.
See Also
--------
- :ref:`sensor-filters`
- :ref:`uart`
- :doc:`template`
- :apiref:`hrxl_maxsonar_wr/hrxl_maxsonar_wr.h`
- :ghedit:`Edit`

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 94 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 98 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 112 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 262 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 334 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 146 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 48 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 46 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 83 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 229 KiB

View File

@ -63,6 +63,9 @@ Configuration variables:
Assistant) to create a state changed event when the sensor updates even if the value stayed the same. Assistant) to create a state changed event when the sensor updates even if the value stayed the same.
Some applications like Grafana require this when working with Home Assistant, but beware it can Some applications like Grafana require this when working with Home Assistant, but beware it can
significantly increase the database size. Defaults to ``false``. significantly increase the database size. Defaults to ``false``.
- **disabled_by_default** (*Optional*, boolean): If true, then this entity should not be added to any client's frontend,
(usually Home Assistant) without the user manually enabling it (via the Home Assistant UI).
Requires Home Assistant 2021.9 or newer. Defaults to ``false``.
Automations: Automations:

View File

@ -38,6 +38,7 @@ Configuration variables:
that the value can be restored upon power cycle or reboot. that the value can be restored upon power cycle or reboot.
Warning: this option can wear out your flash. Defaults to ``false``. Warning: this option can wear out your flash. Defaults to ``false``.
- **id** (*Optional*, :ref:`config-id`): Manually specify the ID used for code generation. - **id** (*Optional*, :ref:`config-id`): Manually specify the ID used for code generation.
- **min_save_interval** (*Optional*, :ref:`config-time`): The minimum time span between saving updated values to storage. This is to keep wearout of memory low. Defaults to ``0s``.
- All other options from :ref:`Sensor <config-sensor>`. - All other options from :ref:`Sensor <config-sensor>`.
.. _sensor-integration-reset_action: .. _sensor-integration-reset_action:

View File

@ -0,0 +1,56 @@
PM1006 Particulate Matter Sensor
================================
.. seo::
:description: Instructions for setting up PM1006 Particulate matter sensors, such as in the IKEA VINDRIKTNING
:image: pm1006.jpg
:keywords: pm1006, IKEA VINDRIKTNING
The ``pm1006`` sensor platform allows you to use Cubic PM1006 particulate matter sensors (`datasheet <http://www.jdscompany.co.kr/download.asp?gubun=07&filename=PM1006_LED_PARTICLE_SENSOR_MODULE_SPECIFICATIONS.pdf>`__)
with ESPHome.
.. figure:: images/ikea-vindriktning.jpg
:align: center
:width: 50.0%
IKEA VINDRIKTNING Particulate Matter Sensor with PM1006 inside
As the communication with the PM1006 is done using UART, you need to have an :ref:`UART bus <uart>` in your configuration with the ``rx_pin`` connected to the TX pin of the
PM1006.
This component is currently RX-only, as the IKEA VINDRIKTNING already sends commands to the PM1006.
Additionally, you need to set the baud rate to 9600.
.. code-block:: yaml
# Example configuration entry
uart:
rx_pin: D2
baud_rate: 9600
sensor:
- platform: pm1006
pm_2_5:
name: "Particulate Matter 2.5µm Concentration"
Unlike some other sensors, there is no configurable update interval, as this is a 'passive' implementation that picks up whatever the VINDRIKTNING MCU has requested from the sensor.
The implementation was inspired by https://github.com/Hypfer/esp8266-vindriktning-particle-sensor; you can also see the pinout there.
However, we recommend mounting your ESP below the fan (which blows out the front) so you do not obstruct the airflow.
`This discussion thread on the HA forum <https://community.home-assistant.io/t/ikea-vindriktning-air-quality-sensor/324599>`__ has several examples of how people have connected their ESP device to the IKEA sensor.
Configuration variables:
------------------------
- **pm_2_5** (*Optional*): Use the concentration of particulates of size less than 2.5µm in µg per cubic meter.
All options from :ref:`Sensor <config-sensor>`.
- **uart_id** (*Optional*, :ref:`config-id`): Manually specify the ID of the :ref:`UART Component <uart>` if you want
to use multiple UART buses.
See Also
--------
- :doc:`/components/sensor/pmsx003`
- :ref:`sensor-filters`
- :apiref:`pm1006/pm1006.h`
- :ghedit:`Edit`

View File

@ -0,0 +1,92 @@
PMSA003I Particulate Matter Sensor
==================================================
.. seo::
:description: Instructions for setting up PMSX003 Particulate matter sensors
:image: images/pmsa003i-full.jpg
The ``pmsa003i`` sensor platform allows you to use your Plantower PMSA003I
particulate matter sensor
(`datasheet <https://cdn-shop.adafruit.com/product-files/4632/4505_PMSA003I_series_data_manual_English_V2.6.pdf>`__,
`Adafruit`_) with ESPHome.
The :ref:`I²C Bus <i2c>` is required to be set up in your configuration for this sensor to work.
.. figure:: images/pmsa003i-full.jpg
:align: center
:width: 80.0%
.. _Adafruit: https://www.adafruit.com/product/4632
.. code-block:: yaml
# Example configuration entry
sensor:
- platform: pmsa003i
pm_1_0:
name: "PM1.0"
pm_2_5:
name: "PM2.5"
pm_10_0:
name: "PM10.0"
pmc_0_3:
name: "PMC <0.3µm"
pmc_0_5:
name: "PMC <0.5µm"
pmc_1_0:
name: "PMC <1µm"
pmc_2_5:
name: "PMC <2.5µm"
pmc_5_0:
name: "PMC <5µm"
pmc_10_0:
name: "PMC <10µm"
Configuration variables:
------------------------
- **pm_1_0** (*Optional*): Mass of particles with a diameter of 1 micrometres or less (μg/m^3).
All options from :ref:`Sensor <config-sensor>`.
- **pm_2_5** (*Optional*): Mass of particles with a diameter of 2.5 micrometres or less (μg/m^3).
All options from :ref:`Sensor <config-sensor>`.
- **pm_10_0** (*Optional*): Mass of particles with a diameter of 10 micrometres or less (μg/m^3).
All options from :ref:`Sensor <config-sensor>`.
- **pmc_0_3** (*Optional*): Count of particles with diameter > 0.3 um in 0.1 L of air (#/0.1L).
All options from :ref:`Sensor <config-sensor>`.
- **pmc_0_5** (*Optional*): Count of particles with diameter > 0.5 um in 0.1 L of air (#/0.1L).
All options from :ref:`Sensor <config-sensor>`.
- **pmc_1_0** (*Optional*): Count of particles with diameter > 1 um in 0.1 L of air (#/0.1L).
All options from :ref:`Sensor <config-sensor>`.
- **pmc_2_5** (*Optional*): Count of particles with diameter > 2.5 um in 0.1 L of air (#/0.1L).
All options from :ref:`Sensor <config-sensor>`.
- **pmc_5_0** (*Optional*): Count of particles with diameter > 5 um in 0.1 L of air (#/0.1L).
All options from :ref:`Sensor <config-sensor>`.
- **pmc_10_0** (*Optional*): Count of particles with diameter > 10 um in 0.1 L of air (#/0.1L).
All options from :ref:`Sensor <config-sensor>`.
- **standard_units** (*Optional*, bool): ``True`` to use standard units or ``False`` to use environmental units. Defaults to ``True``.
- **address** (*Optional*, int): Manually specify the I²C address of the sensor.
Defaults to ``0x12``.
- **update_interval** (*Optional*, :ref:`config-time`): The interval to check the
sensor. Defaults to ``60s``.
.. note::
Standard vs environmental units from https://publiclab.org/questions/samr/04-07-2019/how-to-interpret-pms5003-sensor-values#c23772
"Standard" refers to the concentration "corrected" to the "standard atmosphere" which in the US is DEFINED as "having a temperature of 288.15 K at the sea level 0 km geo-potential height and 1013.25 hPa" details here
On the other hand, the "ambient conditions" are just as the air is "now" (whatever temperature and pressure there is) Now what does that mean ...
Air being a gas, it is compressible which means that it changes its volume when the pressure changes so when you report concentrations as mass per volume of air it is relevant at what pressure that volume is calculated. For example, if you have a bunch of particles rising in the air in a bubble (no loss of particles, no addition, they're just riding a bubble up in the air) then, as they rise, the pressure drops so what was 1cc at the ground it is now 2cc so the concentration is now half without anything actually changing other than the ambient pressure. So, it is common to report concentrations (of anything) as "x mg per standard m3" and because we scientist don't like to write much (current example excluded) you'll usually see the "standard" being dropped because it is "implicit".
See Also
--------
- :doc:`/components/sensor/pmsx003`
- :doc:`/components/sensor/sds011`
- :ref:`sensor-filters`
- :apiref:`pmsa003i/pmsa003i.h`
- :ghedit:`Edit`

View File

@ -40,11 +40,29 @@ value:
Configuration variables: Configuration variables:
------------------------ ------------------------
- **pm_1_0** (*Optional*): Use the concentration of particulates of size less than 1.0µm in µg per cubic meter. - **pm_1_0_std** (*Optional*): Use the concentration of particulates of size less than 1.0µm in µg per cubic meter at standard particle
All options from :ref:`Sensor <config-sensor>`. All options from :ref:`Sensor <config-sensor>`.
- **pm_2_5** (*Optional*): Use the concentration of particulates of size less than 2.5µm in µg per cubic meter. - **pm_2_5_std** (*Optional*): Use the concentration of particulates of size less than 2.5µm in µg per cubic meter at standard particle
All options from :ref:`Sensor <config-sensor>`. All options from :ref:`Sensor <config-sensor>`.
- **pm_10_0** (*Optional*): Use the concentration of particulates of size less than 10.0µm in µg per cubic meter. - **pm_10_0_std** (*Optional*): Use the concentration of particulates of size less than 10.0µm in µg per cubic meter at standard particle
All options from :ref:`Sensor <config-sensor>`.
- **pm_1_0** (*Optional*): Use the concentration of particulates of size less than 1.0µm in µg per cubic meter under atmospheric environment
All options from :ref:`Sensor <config-sensor>`.
- **pm_2_5** (*Optional*): Use the concentration of particulates of size less than 2.5µm in µg per cubic meter under atmospheric environment
All options from :ref:`Sensor <config-sensor>`.
- **pm_10_0** (*Optional*): Use the concentration of particulates of size less than 10.0µm in µg per cubic meter under atmospheric environment
All options from :ref:`Sensor <config-sensor>`.
- **pm_0_3um** (*Optional*): Use the number of particles with diameter beyond 0.3um in 0.1L of air
All options from :ref:`Sensor <config-sensor>`.
- **pm_0_5um** (*Optional*): Use the number of particles with diameter beyond 0.5um in 0.1L of air
All options from :ref:`Sensor <config-sensor>`.
- **pm_1_0um** (*Optional*): Use the number of particles with diameter beyond 1.0um in 0.1L of air
All options from :ref:`Sensor <config-sensor>`.
- **pm_2_5um** (*Optional*): Use the number of particles with diameter beyond 2.5um in 0.1L of air
All options from :ref:`Sensor <config-sensor>`.
- **pm_5_0um** (*Optional*): Use the number of particles with diameter beyond 5.0um in 0.1L of air
All options from :ref:`Sensor <config-sensor>`.
- **pm_10_0um** (*Optional*): Use the number of particles with diameter beyond 10.0um in 0.1L of air
All options from :ref:`Sensor <config-sensor>`. All options from :ref:`Sensor <config-sensor>`.
- **temperature** (*Optional*): Use the temperature value in °C for the ``PMS5003T`` and ``PMS5003ST``. - **temperature** (*Optional*): Use the temperature value in °C for the ``PMS5003T`` and ``PMS5003ST``.
All options from :ref:`Sensor <config-sensor>`. All options from :ref:`Sensor <config-sensor>`.

View File

@ -11,7 +11,6 @@ Peacefair PZEM-004T V3 Energy Monitor
This page is incomplete and could some work. If you want to contribute, please read the This page is incomplete and could some work. If you want to contribute, please read the
:doc:`contributing guide </guides/contributing>`. This page is missing: :doc:`contributing guide </guides/contributing>`. This page is missing:
- An image for the front page.
- Images/screenshots/example configs of this device being used in action. - Images/screenshots/example configs of this device being used in action.
The ``pzemac`` sensor platform allows you to use PZEM-004T V3 energy monitors The ``pzemac`` sensor platform allows you to use PZEM-004T V3 energy monitors
@ -22,6 +21,12 @@ with ESPHome.
The sensor can be connected in various configurations - please see the `manufacturer's website <https://innovatorsguru.com/pzem-004t-v3/>`__ The sensor can be connected in various configurations - please see the `manufacturer's website <https://innovatorsguru.com/pzem-004t-v3/>`__
for more information. for more information.
.. figure:: images/pzem-ac.png
:align: center
:width: 80.0%
PZEM-004T Version 3.
.. warning:: .. warning::
This page refers to version V3 of the PZEM004T. This page refers to version V3 of the PZEM004T.

View File

@ -10,7 +10,6 @@ Peacefair PZEM-00X DC Energy Monitor
This page is incomplete and could some work. If you want to contribute, please read the This page is incomplete and could some work. If you want to contribute, please read the
:doc:`contributing guide </guides/contributing>`. This page is missing: :doc:`contributing guide </guides/contributing>`. This page is missing:
- An image for the front page.
- Images/screenshots/example configs of this device being used in action. - Images/screenshots/example configs of this device being used in action.
The ``pzemdc`` sensor platform allows you to use various DC Peacefair PZEM energy monitors The ``pzemdc`` sensor platform allows you to use various DC Peacefair PZEM energy monitors
@ -20,6 +19,12 @@ The communication with this integration is done over a :ref:`UART bus <uart>`.
You must therefore have a ``uart:`` entry in your configuration with both the TX and RX pins set You must therefore have a ``uart:`` entry in your configuration with both the TX and RX pins set
to some pins on your board and the baud rate set to 9600. to some pins on your board and the baud rate set to 9600.
.. figure:: images/pzem-dc.png
:align: center
:width: 80.0%
PZEM-0xx Energy Monitor.
.. code-block:: yaml .. code-block:: yaml
# Example configuration entry # Example configuration entry

View File

@ -0,0 +1,46 @@
SDP3x Differential Pressure Sensor
==================================
.. seo::
:description: Instructions for setting up the SDP3x Differential Pressure sensor.
:image: images/sdp31.jpg
:keywords: SDP3x, SDP31, SDP32
The SDP3x Differential Pressure sensor allows you to use your SDP3x
(`datasheet <https://www.sensirion.com/fileadmin/user_upload/customers/sensirion/Dokumente/8_Differential_Pressure/Datasheets/Sensirion_Differential_Pressure_Datasheet_SDP3x_Digital.pdf>`__,
`sparkfun <https://www.sparkfun.com/products/17874>`__)
sensors with ESPHome.
.. figure:: images/sdp31.jpg
:align: center
:width: 30.0%
SDP31 Differential Pressure Sensor.
(Credit: `Sparkfun <https://www.sparkfun.com/products/17874>`__, image cropped and compressed)
.. _Sparkfun: https://www.sparkfun.com/products/17874
To use the sensor, set up an :ref:`I²C Bus <i2c>` and connect the sensor to the specified pins.
.. code-block:: yaml
# Example configuration entry
- platform: sdp3x
name: "HVAC Filter Pressure drop"
id: filter_pressure
Configuration variables:
------------------------
- **name** (**Required**, string): The name for this sensor.
- **id** (*Optional*, :ref:`config-id`): Set the ID of this sensor for lambdas/multiple sensors.
- **address** (*Optional*, int): The I²C address of the sensor. Defaults to ``0x21``.
- **update_interval** (*Optional*, :ref:`config-time`): The interval to check the sensor. Defaults to ``60s``.
- All other options from :ref:`Sensor <config-sensor>`.
See Also
--------
- :ref:`sensor-filters`
- :apiref:`sdp3x/sdp3x.h`
- :ghedit:`Edit`

View File

@ -0,0 +1,117 @@
Selec Energy Monitor
==========================
.. seo::
:description: Instructions for setting up Selec power monitors.
:image: images/selec_meter_em2m.jpg
:keywords: EM2M
The ``selec_meter`` sensor platform allows you to use Selec Modbus energy monitors
(`website <https://www.selec.com/product-details/energy-meter-direct-operated-em2m>`__)
with ESPHome.
.. figure:: images/selec_meter_em2m.jpg
:align: center
:width: 50.0%
Selec EM2M Energy Monitor.
The communication with this integration is done over a :ref:`UART bus <uart>` using :ref:`Modbus <modbus>`.
You must therefore have a ``uart:`` entry in your configuration with both the TX and RX pins set
to some pins on your board and the baud rate set to 9600.
.. code-block:: yaml
# Example configuration entry
uart:
rx_pin: D1
tx_pin: D2
baud_rate: 9600
stop_bits: 1
sensor:
- platform: selec_meter
total_active_energy:
name: "SelecEM2M Total Active Energy"
import_active_energy:
name: "SelecEM2M Import Active Energy"
export_active_energy:
name: "SelecEM2M Export Active Energy"
total_reactive_energy:
name: "SelecEM2M Total Reactive Energy"
import_reactive_energy:
name: "SelecEM2M Import Reactive Energy"
export_reactive_energy:
name: "SelecEM2M Export Reactive Energy"
apparent_energy:
name: "SelecEM2M Apparent Energy"
active_power:
name: "SelecEM2M Active Power"
reactive_power:
name: "SelecEM2M Reactive Power"
apparent_power:
name: "SelecEM2M Apparent Power"
voltage:
name: "SelecEM2M Voltage"
current:
name: "SelecEM2M Current"
power_factor:
name: "SelecEM2M Power Factor"
frequency:
name: "SelecEM2M Frequency"
maximum_demand_active_power:
name: "SelecEM2M Maximum Demand Active Power"
maximum_demand_reactive_power:
name: "SelecEM2M Maximum Demand Reactive Power"
maximum_demand_apparent_power:
name: "SelecEM2M Maximum Demand Apparent Power"
Configuration variables:
------------------------
- **total_active_energy** (*Optional*): Use the total active energy value of the sensor in kilo watt
hours. All options from :ref:`Sensor <config-sensor>`.
- **import_active_energy** (*Optional*): Use the import active energy value of the sensor in kilo watt
hours. All options from :ref:`Sensor <config-sensor>`.
- **export_active_energy** (*Optional*): Use the export active energy value of the sensor in kilo watt
hours. All options from :ref:`Sensor <config-sensor>`.
- **total_reactive_energy** (*Optional*): Use the total reactive energy value of the sensor in
kilo volt amps reactive hours. All options from :ref:`Sensor <config-sensor>`.
- **import_reactive_energy** (*Optional*): Use the import reactive energy value of the sensor in
kilo volt amps reactive hours. All options from :ref:`Sensor <config-sensor>`.
- **export_reactive_energy** (*Optional*): Use the export reactive energy value of the sensor in
kilo volt amps reactive hours. All options from :ref:`Sensor <config-sensor>`.
- **apparent_energy** (*Optional*): Use the apparent energy value of the sensor in
kilo volt amps hours. All options from :ref:`Sensor <config-sensor>`.
- **active_power** (*Optional*): Use the (active) power value of the sensor in watts. All options
from :ref:`Sensor <config-sensor>`.
- **reactive_power** (*Optional*): Use the reactive power value of the sensor in VAR. All
options from :ref:`Sensor <config-sensor>`.
- **apparent_power** (*Optional*): Use the apparent power value of the sensor in VA. All
options from :ref:`Sensor <config-sensor>`.
- **voltage** (*Optional*): Use the voltage value of the sensor in volts.
All options from :ref:`Sensor <config-sensor>`.
- **current** (*Optional*): Use the current value of the sensor in amperes. All options from
:ref:`Sensor <config-sensor>`.
- **power_factor** (*Optional*): Use the power factor value of the sensor.
All options from :ref:`Sensor <config-sensor>`.
- **frequency** (*Optional*): Use the frequency value of the sensor in hertz.
All options from :ref:`Sensor <config-sensor>`.
- **maximum_demand_active_power** (*Optional*): Use the maximum demand (active) power value of the sensor in watts. All options
from :ref:`Sensor <config-sensor>`.
- **maximum_demand_reactive_power** (*Optional*): Use the maximum demand reactive power value of the sensor in VAR. All
options from :ref:`Sensor <config-sensor>`.
- **maximum_demand_apparent_power** (*Optional*): Use the maximum demand apparent power value of the sensor in VA. All
options from :ref:`Sensor <config-sensor>`.
- **update_interval** (*Optional*, :ref:`config-time`): The interval to check the
sensor. Defaults to ``60s``.
- **address** (*Optional*, int): The address of the sensor if multiple sensors are attached to
the same UART bus. You will need to set the address of each device manually. Defaults to ``1``.
See Also
--------
- :ref:`sensor-filters`
- :ghedit:`Edit`

View File

@ -0,0 +1,74 @@
T6613/15 CO2 Sensors
==================================
.. seo::
:description: Instructions for setting up T6613 and T6615 sensors for ESPHome
:image: images/t6615.png
:keywords: t6613 t6615
The ``t6615`` sensor platform allows you to use T6613 and T6615 family sensors
(`amphenol`_) with ESPHome. T6613 sensors are unreferenced and require ABC to
calibrate daily, while the T6615 sensors have a sealed reference gas and
do not require ABC calibration. All ppm ranges are supported by this platform.
.. figure:: images/t6615.png
:align: center
:width: 50.0%
T6615 CO_2 Sensor.
.. _amphenol: https://amphenol-sensors.com/en/telaire/co2/525-co2-sensor-modules/319-t6615
As the communication is done using UART, you need to have an :ref:`UART bus <uart>` in your configuration with the
``rx_pin`` connected to the TX pin of the device (pin 10) and the ``tx_pin`` connected to the RX Pin of the device (pin
11). The baud rate should be set to 19200.
Additionally, the T6613/15 sensors require 5V power, while most ESP platforms only output 3.3V from their onboard
regulator, so you may need some additional components to power up the sensor.
.. code-block:: yaml
# Example configuration entry
uart:
rx_pin: 1
tx_pin: 3
baud_rate: 19200
sensor:
- platform: t6615
co2:
name: "CO2"
update_interval: 60s
Configuration variables:
------------------------
- **co2** (**Required**): The CO_2 data from the sensor in parts per million (ppm).
- **name** (**Required**, string): The name for the CO_2 sensor.
- **id** (*Optional*, :ref:`config-id`): Set the ID of this sensor for use in lambdas.
- All other options from :ref:`Sensor <config-sensor>`.
- **update_interval** (*Optional*, :ref:`config-time`): The interval to check the
sensor. Defaults to ``60s``.
- **uart_id** (*Optional*, :ref:`config-id`): Manually specify the ID of the :ref:`UART Component <uart>` if you want
to use multiple UART buses.
- **id** (*Optional*, :ref:`config-id`): Manually specify the ID used for actions.
.. figure:: images/t6615-pins.png
:align: center
:width: 80.0%
Pins on the T6615. Only the ones marked with a red circle need to be connected.
See Also
--------
- :ref:`sensor-filters`
- `UART Protocol Documentation <https://amphenol-sensors.com/en/component/edocman/561-telaire-co2-sensors-uart-communications-protocol/download?Itemid=8486%20%27>`__
- :apiref:`t6615/t6615.h`
- :ghedit:`Edit`

View File

@ -38,6 +38,7 @@ Configuration variables:
to integrate over time. to integrate over time.
- **name** (**Required**, string): The name of the sensor. - **name** (**Required**, string): The name of the sensor.
- **id** (*Optional*, :ref:`config-id`): Manually specify the ID used for code generation. - **id** (*Optional*, :ref:`config-id`): Manually specify the ID used for code generation.
- **min_save_interval** (*Optional*, :ref:`config-time`): The minimum time span between saving updated values to storage. This is to keep wearout of memory low. Defaults to ``0s``.
- All other options from :ref:`Sensor <config-sensor>`. - All other options from :ref:`Sensor <config-sensor>`.
Converting from W to kW Converting from W to kW

View File

@ -0,0 +1,200 @@
TSL2591 Ambient Light Sensor
============================
.. seo::
:description: Instructions for setting up TSL2591 ambient light sensors in ESPHome.
:image: tsl2591.jpg
:keywords: TSL2591
The ``tsl2591`` sensor platform allows you to use the AMS TSL2591 ambient light sensor with ESPHome.
Communication with the device is over :ref:`I²C <i2c>`, which must be present in your configuration.
The TSL2591 device is available on breakout boards from a few vendors
(for example, `Adafruit`_, `CQRobot`_, `Waveshare`_).
.. _Adafruit: http://www.adafruit.com/products/1980
.. _CQRobot: https://www.cqrobot.com/index.php?route=product/product&product_id=1112
.. _Waveshare: https://www.waveshare.net/shop/TSL25911-Light-Sensor.htm
.. figure:: images/tsl2591.jpg
:align: center
:width: 50.0%
TSL2591 Ambient Light Sensor on a breakout board.
.. figure:: images/tsl2591-ui.jpg
:align: center
:width: 100.0%
TSL2591 sensors in Home Assistant UI.
The sensor claims a dynamic range of 600 million to 1 with an effective maximum of 88000 lux.
It achieves that large range by having a configurable ``gain`` value.
Use a higher gain value when measuring less intense light sources.
On the other hand, if you get ADC readings of 65,535 for either physical sensor,
you may be saturating that sensor and need to reduce the gain.
This Wikipedia `article <https://en.wikipedia.org/wiki/Lux>`__ has a table of some lux values for comparison.
The implementation offers four sensors.
Only one of them, ``calculated_lux``, is a true ``lux`` value, and even that is a bit subjective.
(For information about the difference between radiometric and photometric measurements, see the references.)
The other sensors are unitless readings from the device's on-board ADCs for the physical sensors.
The two physical sensors measure "visible and infrared" (channel 0) and "infrared" (channel 1), respectively.
However, the sensor readings here also provide the simple "visible" value separately.
The visible value is obtained by subtracting the reading of the physical infrared sensor
(channel 1) from the value of the physical sensor that combines visible and infrared (channel 0).
Since those are two different physical infrared sensor readings, there is the possibility of a small inaccuracy.
- **full_spectrum**: Raw 16 bit reading from the on-board ADC for the physical sensor for visible and infrared light (channel 0).
- **infrared**: Raw 16 bit reading from the on-board ADC for the physical sensor for infrared light (channel 1).
- **visible**: For convenience, a value calculated by taking the difference between the two physical sensors (channel 0 minus channel 1).
- **calculated_lux**: This is a calculated value for lux based on the readings of the
physical sensors, the configured gain, and the configured integration time.
For details of the actual calculation, which can depend on additional physical properties,
see method ``get_calculated_lux()`` in the API reference.
There are configuration items for the device factor and the glass attenuation factor that go into the lux equation.
If you are not happy with that built-in calculation, you have the raw data you need to do your own.
The manufacturer, AMS, has a few application notes that discuss this topic.
See the references.
Values reported are said to be in units of ``lux``, but there are some things to understand about that.
- The gain multiplier values that can be configured are only approximations.
The sensor will use something close to it, but the exact value can vary from device to device.
There is no way to ask the device what precise gain value it is using.
See the TSL2591 datasheet for the specific device characteristic ranges.
- The 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.
- Even considering the above points, 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", or something similar.
.. code-block:: yaml
# Example configuration entry
i2c:
# ...
sensor:
- platform: tsl2591
name: "This little light of mine"
id: "my_tls2591"
address: 0x29
update_interval: 60s
device_factor: 53
glass_attenuation_factor: 14.4
visible:
name: "TSL2591 visible light"
infrared:
name: "TSL2591 infrared light"
full_spectrum:
name: "TSL2591 full spectrum light"
calculated_lux:
id: i_lux
name: "TSL2591 Lux"
Configuration variables:
------------------------
For the TSL2591 device:
- **id** (*Optional*, :ref:`config-id`): Manually specify the ID used for code generation.
- **name** (*Optional*, string): A user-friendly name for this TSL2591 device.
- **address** (*Optional*, int): Manually specify the I²C address of the device.
Defaults to ``0x29``.
It is not possible to change this for this device without additional hardware.
It also automatically uses a secondary address of ``0x28`` (see the datasheet),
making that address unavailable for other devices on the same I²C bus.
- **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:
- ``100ms`` *(default)*
- ``200ms``
- ``300ms``
- ``400ms``
- ``500ms``
- ``600ms``
- **gain** (*Optional*, string): The gain the device will use. Higher values are better in low-light conditions.
Multipliers here are approximate. Values below on the same line are aliases.
You cannot specify an arbitrary gain multiplier. It must be one of:
- ``low``, ``1x``
- ``medium``, ``med``, ``25x`` *(default)*
- ``high``, ``400x``
- ``maximum``, ``max``, ``9500x``
- **update_interval** (*Optional*, :ref:`config-time`): The interval for checking the sensors.
Defaults to ``60s``.
- **power_save_mode** (*Optional*, boolean) Should the device be powered down between update intervals?
Defaults to ``True``.
- **device_factor** (*Optional*, float) The default is ``53.0``.
The device factor to be used as part of the lux equation for ``calculated_lux``.
- **glass_attenuation_factor** (*Optional*, float) The default is ``7.7``.
The glass attenuation factor to be used as part of the lux equation for ``calculated_lux``.
- All other options for I²C devices described at :ref:`I²C Bus <i2c>`.
You can configure all or any subset of the sensors described earlier.
Each configured sensor is reported separately on each ``update_interval``.
- **full_spectrum** (*Optional*): The reading for the full spectrum sensor.
- **name** (**Required**, string): The name for the sensor.
- All other options from :ref:`Sensor <config-sensor>`.
- **infrared** (*Optional*): The reading for the infrared sensor.
- **name** (**Required**, string): The name for the sensor.
- All other options from :ref:`Sensor <config-sensor>`.
- **visible** (*Optional*): The reading for visible light.
- **name** (**Required**, string): The name for the sensor.
- All other options from :ref:`Sensor <config-sensor>`.
- **calculated_lux** (*Optional*): The value of the calculated lux.
- **name** (**Required**, string): The name for the sensor.
- All other options from :ref:`Sensor <config-sensor>`.
Power save mode
...............
Sensor readings are only taken when the device indicates that the ADC values are valid.
If the device is powered down between readings,
there is a delay for the ADC to go through an integration cycle before a reliable reading is available.
The delay is appoximately the configured integration time.
The implementation uses asynchronous delays to wait for the ADC readings to become available.
This avoids slowing down the overall ESPHome update loop,
but it means that the publishing of state updates for the TSL2561 might come slightly later.
If you use the TSL2591 API to change the gain or integration time value,
the device is internally disabled and re-enabled.
Otherwise, the next set of ADC readings would be unreliable
because the current ADC integration cycle will have been done with mixed gain values.
(The ADCs are not automatically "aware" that the gain or integration time was changed.)
Even if power save mode is not enabled, there can be the same sort of slight
delay for the first sensor reading after the change if it happens to come at an unlucky time.
Since the delays are only a fraction of a second (a maximum of 600-700 ms)
and update intervals are typically many seconds,
the delays are not generally very interesting.
To see if delays are occurring, you can turn on debug logging.
See Also
--------
- :ref:`sensor-filters`
- `AMS TSL2591 document library <https://ams.com/tsl25911#tab/documents>`__
- `AMS TSL2591 datasheet <https://ams.com/documents/20143/36005/TSL2591_DS000338_6-00.pdf>`__
- AMS Application Note, `Developing a Custom Lux Equation <https://ams.com/documents/20143/36005/AmbientLightSensors_AN000173_2-00.pdf>`__
- `Radiometric vs. Photometric Units <https://www.thorlabs.de/catalogPages/506.pdf>`__
- `Adafruit TSL2591 Arduino Library <https://github.com/adafruit/Adafruit_TSL2591_Library>`__ by `Adafruit <https://adafruit.com/>`__ *(for comparison only)*
- `Waveshare TSL2591 Libraries <https://github.com/waveshare/TSL2591X-Light-Sensor>`__ by `Waveshare Electronics <https://www.waveshare.net/>`__ *(for comparison only)*
- :doc:`tsl2561`
- :doc:`bh1750`
- `The Water Watcher (a DIY project using a TSL2591) <https://hackaday.io/project/176690-the-water-watcher>`__
- :apiref:`tsl2591/tsl2591.h`
- :ghedit:`Edit`

View File

@ -182,9 +182,11 @@ There are the following possibilities to operate this sensor:
1. Xiaomi stock firmware (requires a bindkey in order to decrypt the received data, see :ref:`obtaining_the_bindkey`) 1. Xiaomi stock firmware (requires a bindkey in order to decrypt the received data, see :ref:`obtaining_the_bindkey`)
2. Device flashed with `ATC MiThermometer <https://github.com/atc1441/ATC_MiThermometer>`__ custom firmware 2. Device flashed with `ATC MiThermometer <https://github.com/atc1441/ATC_MiThermometer>`__ custom firmware
3. Device flashed with `PVVX MiThermometer <https://github.com/pvvx/ATC_MiThermometer>`__ custom firmware
- "Mi Like" advertisement (dummy bindkey required) - "Mi Like" advertisement (dummy bindkey required)
- "Custom" advertisement (no bindkey required) - "Custom" advertisement (no bindkey required)
- "pvvx" custom advertisement (no bindkey required, only PVVX firmware)
Configuration example for Xiaomi stock firmware or ATC MiThermometer firmware set to "Mi Like" advertisement: Configuration example for Xiaomi stock firmware or ATC MiThermometer firmware set to "Mi Like" advertisement:
@ -217,6 +219,22 @@ Configuration example for ATC MiThermometer firmware set to "Custom" advertiseme
battery_voltage: battery_voltage:
name: "ATC Battery-Voltage" name: "ATC Battery-Voltage"
Configuration example for PVVX MiThermometer firmware set to "Custom" advertisement:
.. code-block:: yaml
sensor:
- platform: pvvx_mithermometer
mac_address: "A4:C1:38:B1:CD:7F"
temperature:
name: "PVVX Temperature"
humidity:
name: "PVVX Humidity"
battery_level:
name: "PVVX Battery-Level"
battery_voltage:
name: "PVVX Battery-Voltage"
MHO-C401 MHO-C401
********** **********
@ -390,6 +408,31 @@ Configuration example:
illuminance: illuminance:
name: "MJYD02YL-A Illuminance" name: "MJYD02YL-A Illuminance"
CGPR1
*****
Qingping motion & ambient light sensor. Broadcasts motion detection, idle time since last motion event, lux value and battery status. Requires a bindkey in order to decrypt the received data (see :ref:`obtaining_the_bindkey`).
.. figure:: images/xiaomi_cgpr1.png
:align: center
:width: 30.0%
Configuration example:
.. code-block:: yaml
binary_sensor:
- platform: xiaomi_cgpr1
name: "CGPR1 Motion detector"
mac_address: 58:2D:34:60:32:A2
bindkey: "ff1ae526b23b4aebeadcaaad86f59055"
idle_time:
name: "CGPR1 Idle Time"
battery_level:
name: "CGPR1 Battery Level"
illuminance:
name: "CGPR1 Illuminance"
Setting Up Devices Setting Up Devices
------------------ ------------------

View File

@ -21,6 +21,10 @@ the device. Specifically, it will:
status_led: status_led:
pin: GPIO2 pin: GPIO2
.. note::
If your device has a single led that needs to be shared use :doc:`status_led light platform </components/light/status_led>` instead.
Configuration variables: Configuration variables:
------------------------ ------------------------
@ -43,5 +47,6 @@ Configuration variables:
See Also See Also
-------- --------
- :doc:`/components/light/status_led`
- :apiref:`status_led/status_led.h` - :apiref:`status_led/status_led.h`
- :ghedit:`Edit` - :ghedit:`Edit`

View File

@ -35,6 +35,9 @@ Configuration variables:
when the switch is turned on. See :ref:`switch-on_turn_on_off_trigger`. when the switch is turned on. See :ref:`switch-on_turn_on_off_trigger`.
- **on_turn_off** (*Optional*, :ref:`Action <config-action>`): An automation to perform - **on_turn_off** (*Optional*, :ref:`Action <config-action>`): An automation to perform
when the switch is turned off. See :ref:`switch-on_turn_on_off_trigger`. when the switch is turned off. See :ref:`switch-on_turn_on_off_trigger`.
- **disabled_by_default** (*Optional*, boolean): If true, then this entity should not be added to any client's frontend,
(usually Home Assistant) without the user manually enabling it (via the Home Assistant UI).
Requires Home Assistant 2021.9 or newer. Defaults to ``false``.
- If MQTT enabled, All other options from :ref:`MQTT Component <config-mqtt-component>`. - If MQTT enabled, All other options from :ref:`MQTT Component <config-mqtt-component>`.
.. _switch-toggle_action: .. _switch-toggle_action:

View File

@ -29,6 +29,9 @@ Configuration variables:
- **internal** (*Optional*, boolean): Mark this component as internal. Internal components will - **internal** (*Optional*, boolean): Mark this component as internal. Internal components will
not be exposed to the frontend (like Home Assistant). Only specifying an ``id`` without not be exposed to the frontend (like Home Assistant). Only specifying an ``id`` without
a ``name`` will implicitly set this to true. a ``name`` will implicitly set this to true.
- **disabled_by_default** (*Optional*, boolean): If true, then this entity should not be added to any client's frontend,
(usually Home Assistant) without the user manually enabling it (via the Home Assistant UI).
Requires Home Assistant 2021.9 or newer. Defaults to ``false``.
- If MQTT enabled, All other options from :ref:`MQTT Component <config-mqtt-component>`. - If MQTT enabled, All other options from :ref:`MQTT Component <config-mqtt-component>`.
Automations: Automations:

View File

@ -32,12 +32,19 @@ In some cases only **TX** or **RX** exists as the device at the other end only a
ones used for logging. Therefore the UART data on the ESP8266 can have occasional data glitches especially with ones used for logging. Therefore the UART data on the ESP8266 can have occasional data glitches especially with
higher baud rates.. higher baud rates..
.. note::
From ESPHome 2021.8 the ``ESP8266SoftwareSerial`` UART ``write_byte`` function had the parity bit fixed to be correct
for the data being sent. This could cause unexpected issues if you are using the Software Serial and have devices that
explicity check the parity. Most likely you will need to flip the ``parity`` flag in YAML.
.. code-block:: yaml .. code-block:: yaml
# Example configuration entry # Example configuration entry
uart: uart:
tx_pin: D0 tx_pin: 1
rx_pin: D1 rx_pin: 3
baud_rate: 9600 baud_rate: 9600
Configuration variables: Configuration variables:

View File

@ -67,9 +67,9 @@ author = "Otto Winter"
# built documents. # built documents.
# #
# The short X.Y version. # The short X.Y version.
version = "1.20" version = "2021.8"
# The full version, including alpha/beta/rc tags. # The full version, including alpha/beta/rc tags.
release = "1.20.4" release = "2021.8.0"
# The language for content autogenerated by Sphinx. Refer to documentation # The language for content autogenerated by Sphinx. Refer to documentation
# for a list of supported languages. # for a list of supported languages.
@ -147,7 +147,7 @@ html_sidebars = {
# 'about.html', # 'about.html',
"searchbox.html", "searchbox.html",
"localtoc.html", "localtoc.html",
"contact.html" "contact.html",
] ]
} }

View File

@ -119,7 +119,7 @@ class ImageTableDirective(Table):
for row in data: for row in data:
if not row: if not row:
continue continue
name, page, image = row name, page, image = row[0:3]
link = page.strip() link = page.strip()
if link.startswith("http"): if link.startswith("http"):
pass pass
@ -133,6 +133,7 @@ class ImageTableDirective(Table):
"name": name.strip(), "name": name.strip(),
"link": link, "link": link,
"image": "/images/{}".format(image.strip()), "image": "/images/{}".format(image.strip()),
"category": row[3] if len(row) >= 4 else None
} }
) )
@ -183,6 +184,10 @@ class ImageTableDirective(Table):
para = nodes.paragraph() para = nodes.paragraph()
para += ref para += ref
entry += para entry += para
cat_text = cell["category"]
if cat_text:
cat = nodes.paragraph(text=cat_text)
entry += cat
trow += entry trow += entry
rows.append(trow) rows.append(trow)
tbody.extend(rows) tbody.extend(rows)

View File

@ -201,7 +201,7 @@ documents establish the following character order for better consistency.
- **imgtable**: ESPHome uses a custom RST directive to show the table on the front page (see - **imgtable**: ESPHome uses a custom RST directive to show the table on the front page (see
`index.rst <https://github.com/esphome/esphome-docs/blob/current/index.rst>`__). `index.rst <https://github.com/esphome/esphome-docs/blob/current/index.rst>`__).
New pages need to be added to the ``imgtable`` list. The syntax is CSV with <PAGE NAME>, <FILE NAME> (without RST), New pages need to be added to the ``imgtable`` list. The syntax is CSV with <PAGE NAME>, <FILE NAME> (without RST),
<IMAGE> (in top-level images/ directory). The aspect ratio of these images should be 8:10 (or 10:8) but exceptions are possible. <IMAGE> (in top-level images/ directory), <COMMENT> (optional - short text to describe the component). The aspect ratio of these images should be 8:10 (or 10:8) but exceptions are possible.
Because these images are served on the main page, they need to be compressed heavily. SVGs are preferred over JPGs Because these images are served on the main page, they need to be compressed heavily. SVGs are preferred over JPGs
and JPGs should be max. 300x300px. and JPGs should be max. 300x300px.

View File

@ -56,7 +56,7 @@ Contributors
- `Andrzej (@andriej) <https://github.com/andriej>`__ - `Andrzej (@andriej) <https://github.com/andriej>`__
- `Andreas (@anduchs) <https://github.com/anduchs>`__ - `Andreas (@anduchs) <https://github.com/anduchs>`__
- `anekinloewe (@anekinloewe) <https://github.com/anekinloewe>`__ - `anekinloewe (@anekinloewe) <https://github.com/anekinloewe>`__
- `Angel Nunez Mencias (@angelnu) <https://github.com/angelnu>`__ - `Vegetto (@angelnu) <https://github.com/angelnu>`__
- `Sergey Anisimov (@anisimovsergey) <https://github.com/anisimovsergey>`__ - `Sergey Anisimov (@anisimovsergey) <https://github.com/anisimovsergey>`__
- `ankycooper (@ankycooper) <https://github.com/ankycooper>`__ - `ankycooper (@ankycooper) <https://github.com/ankycooper>`__
- `Nikolay Vasilchuk (@Anonym-tsk) <https://github.com/Anonym-tsk>`__ - `Nikolay Vasilchuk (@Anonym-tsk) <https://github.com/Anonym-tsk>`__
@ -84,6 +84,7 @@ Contributors
- `Ben Suffolk (@bensuffolk) <https://github.com/bensuffolk>`__ - `Ben Suffolk (@bensuffolk) <https://github.com/bensuffolk>`__
- `Bierchermuesli (@Bierchermuesli) <https://github.com/Bierchermuesli>`__ - `Bierchermuesli (@Bierchermuesli) <https://github.com/Bierchermuesli>`__
- `JDavid (@blackhack) <https://github.com/blackhack>`__ - `JDavid (@blackhack) <https://github.com/blackhack>`__
- `Branimir Lambov (@blambov) <https://github.com/blambov>`__
- `Jim Ekman (@blejdfist) <https://github.com/blejdfist>`__ - `Jim Ekman (@blejdfist) <https://github.com/blejdfist>`__
- `Bob (@Bmooij) <https://github.com/Bmooij>`__ - `Bob (@Bmooij) <https://github.com/Bmooij>`__
- `Mauricio Bonani (@bonanitech) <https://github.com/bonanitech>`__ - `Mauricio Bonani (@bonanitech) <https://github.com/bonanitech>`__
@ -182,8 +183,10 @@ Contributors
- `Robert Resch (@edenhaus) <https://github.com/edenhaus>`__ - `Robert Resch (@edenhaus) <https://github.com/edenhaus>`__
- `Niclas Larsson (@edge90) <https://github.com/edge90>`__ - `Niclas Larsson (@edge90) <https://github.com/edge90>`__
- `Eenoo (@Eenoo) <https://github.com/Eenoo>`__ - `Eenoo (@Eenoo) <https://github.com/Eenoo>`__
- `Eli Fidler (@efidler) <https://github.com/efidler>`__
- `Erwin Kooi (@egeltje) <https://github.com/egeltje>`__ - `Erwin Kooi (@egeltje) <https://github.com/egeltje>`__
- `Eike (@ei-ke) <https://github.com/ei-ke>`__ - `Eike (@ei-ke) <https://github.com/ei-ke>`__
- `Elazar Leibovich (@elazarl) <https://github.com/elazarl>`__
- `electrofun-smart (@electrofun-smart) <https://github.com/electrofun-smart>`__ - `electrofun-smart (@electrofun-smart) <https://github.com/electrofun-smart>`__
- `Elkropac (@Elkropac) <https://github.com/Elkropac>`__ - `Elkropac (@Elkropac) <https://github.com/Elkropac>`__
- `elyorkhakimov (@elyorkhakimov) <https://github.com/elyorkhakimov>`__ - `elyorkhakimov (@elyorkhakimov) <https://github.com/elyorkhakimov>`__
@ -265,6 +268,7 @@ Contributors
- `Hamish Moffatt (@hmoffatt) <https://github.com/hmoffatt>`__ - `Hamish Moffatt (@hmoffatt) <https://github.com/hmoffatt>`__
- `MoA (@honomoa) <https://github.com/honomoa>`__ - `MoA (@honomoa) <https://github.com/honomoa>`__
- `Hopperpop (@Hopperpop) <https://github.com/Hopperpop>`__ - `Hopperpop (@Hopperpop) <https://github.com/Hopperpop>`__
- `Yang Hau (@HowJMay) <https://github.com/HowJMay>`__
- `hreintke (@hreintke) <https://github.com/hreintke>`__ - `hreintke (@hreintke) <https://github.com/hreintke>`__
- `Huub Eikens (@huubeikens) <https://github.com/huubeikens>`__ - `Huub Eikens (@huubeikens) <https://github.com/huubeikens>`__
- `Petr Urbánek (@HyperReap) <https://github.com/HyperReap>`__ - `Petr Urbánek (@HyperReap) <https://github.com/HyperReap>`__
@ -307,7 +311,7 @@ Contributors
- `Jonathan Adams (@jonathanadams) <https://github.com/jonathanadams>`__ - `Jonathan Adams (@jonathanadams) <https://github.com/jonathanadams>`__
- `Jonathan Treffler (@JonathanTreffler) <https://github.com/JonathanTreffler>`__ - `Jonathan Treffler (@JonathanTreffler) <https://github.com/JonathanTreffler>`__
- `JonnyaiR (@jonnyair) <https://github.com/jonnyair>`__ - `JonnyaiR (@jonnyair) <https://github.com/jonnyair>`__
- `Joppy Furr (@JoppyFurr) <https://github.com/JoppyFurr>`__ - `Joppy (@JoppyFurr) <https://github.com/JoppyFurr>`__
- `junnikokuki (@junnikokuki) <https://github.com/junnikokuki>`__ - `junnikokuki (@junnikokuki) <https://github.com/junnikokuki>`__
- `Justahobby01 (@Justahobby01) <https://github.com/Justahobby01>`__ - `Justahobby01 (@Justahobby01) <https://github.com/Justahobby01>`__
- `Mike Ryan (@justfalter) <https://github.com/justfalter>`__ - `Mike Ryan (@justfalter) <https://github.com/justfalter>`__
@ -340,7 +344,7 @@ Contributors
- `Kodey Converse (@krconv) <https://github.com/krconv>`__ - `Kodey Converse (@krconv) <https://github.com/krconv>`__
- `krikk (@krikk) <https://github.com/krikk>`__ - `krikk (@krikk) <https://github.com/krikk>`__
- `KristopherMackowiak (@KristopherMackowiak) <https://github.com/KristopherMackowiak>`__ - `KristopherMackowiak (@KristopherMackowiak) <https://github.com/KristopherMackowiak>`__
- `Stefan Rado (@kroimon) <https://github.com/kroimon>`__ - `kroimon (@kroimon) <https://github.com/kroimon>`__
- `krunkel (@krunkel) <https://github.com/krunkel>`__ - `krunkel (@krunkel) <https://github.com/krunkel>`__
- `Kendell R (@KTibow) <https://github.com/KTibow>`__ - `Kendell R (@KTibow) <https://github.com/KTibow>`__
- `Jakub Šimo (@kubik369) <https://github.com/kubik369>`__ - `Jakub Šimo (@kubik369) <https://github.com/kubik369>`__
@ -363,6 +367,7 @@ Contributors
- `Lumpusz (@Lumpusz) <https://github.com/Lumpusz>`__ - `Lumpusz (@Lumpusz) <https://github.com/Lumpusz>`__
- `Luke Fitzgerald (@lwfitzgerald) <https://github.com/lwfitzgerald>`__ - `Luke Fitzgerald (@lwfitzgerald) <https://github.com/lwfitzgerald>`__
- `Lewis Juggins (@lwis) <https://github.com/lwis>`__ - `Lewis Juggins (@lwis) <https://github.com/lwis>`__
- `Alex Peters (@Lx) <https://github.com/Lx>`__
- `Michael Klamminger (@m1ch) <https://github.com/m1ch>`__ - `Michael Klamminger (@m1ch) <https://github.com/m1ch>`__
- `M95D (@M95D) <https://github.com/M95D>`__ - `M95D (@M95D) <https://github.com/M95D>`__
- `Marc-Antoine Courteau (@macourteau) <https://github.com/macourteau>`__ - `Marc-Antoine Courteau (@macourteau) <https://github.com/macourteau>`__
@ -428,8 +433,11 @@ Contributors
- `Mynasru (@Mynasru) <https://github.com/Mynasru>`__ - `Mynasru (@Mynasru) <https://github.com/Mynasru>`__
- `Niels Ulrik Andersen (@myplacedk) <https://github.com/myplacedk>`__ - `Niels Ulrik Andersen (@myplacedk) <https://github.com/myplacedk>`__
- `Kevin Uhlir (@n0bel) <https://github.com/n0bel>`__ - `Kevin Uhlir (@n0bel) <https://github.com/n0bel>`__
- `n8detar (@n8detar) <https://github.com/n8detar>`__
- `Erik Näsström (@Naesstrom) <https://github.com/Naesstrom>`__ - `Erik Näsström (@Naesstrom) <https://github.com/Naesstrom>`__
- `Oskar Napieraj (@napieraj) <https://github.com/napieraj>`__ - `Oskar Napieraj (@napieraj) <https://github.com/napieraj>`__
- `ueno (@nayuta-ueno) <https://github.com/nayuta-ueno>`__
- `Nazar Mokrynskyi (@nazar-pc) <https://github.com/nazar-pc>`__
- `Bergont Nicolas (@nbergont) <https://github.com/nbergont>`__ - `Bergont Nicolas (@nbergont) <https://github.com/nbergont>`__
- `Nebula (@nebula-it) <https://github.com/nebula-it>`__ - `Nebula (@nebula-it) <https://github.com/nebula-it>`__
- `needspeed (@needspeed) <https://github.com/needspeed>`__ - `needspeed (@needspeed) <https://github.com/needspeed>`__
@ -462,11 +470,13 @@ Contributors
- `Oncleben31 (@oncleben31) <https://github.com/oncleben31>`__ - `Oncleben31 (@oncleben31) <https://github.com/oncleben31>`__
- `onde2rock (@onde2rock) <https://github.com/onde2rock>`__ - `onde2rock (@onde2rock) <https://github.com/onde2rock>`__
- `Oscar Bolmsten (@oscar-b) <https://github.com/oscar-b>`__ - `Oscar Bolmsten (@oscar-b) <https://github.com/oscar-b>`__
- `Trammell Hudson (@osresearch) <https://github.com/osresearch>`__
- `Otamay (@Otamay) <https://github.com/Otamay>`__ - `Otamay (@Otamay) <https://github.com/Otamay>`__
- `Otto Winter (@OttoWinter) <https://github.com/OttoWinter>`__ - `Otto Winter (@OttoWinter) <https://github.com/OttoWinter>`__
- `Oxan van Leeuwen (@oxan) <https://github.com/oxan>`__ - `Oxan van Leeuwen (@oxan) <https://github.com/oxan>`__
- `Pack3tL0ss (@Pack3tL0ss) <https://github.com/Pack3tL0ss>`__ - `Pack3tL0ss (@Pack3tL0ss) <https://github.com/Pack3tL0ss>`__
- `Pablo Clemente Maseda (@paclema) <https://github.com/paclema>`__ - `Pablo Clemente Maseda (@paclema) <https://github.com/paclema>`__
- `Derrick Lyndon Pallas (@pallas) <https://github.com/pallas>`__
- `Panuruj Khambanonda (PK) (@panuruj) <https://github.com/panuruj>`__ - `Panuruj Khambanonda (PK) (@panuruj) <https://github.com/panuruj>`__
- `Pasi Suominen (@pasiz) <https://github.com/pasiz>`__ - `Pasi Suominen (@pasiz) <https://github.com/pasiz>`__
- `Paul Deen (@PaulAntonDeen) <https://github.com/PaulAntonDeen>`__ - `Paul Deen (@PaulAntonDeen) <https://github.com/PaulAntonDeen>`__
@ -496,7 +506,7 @@ Contributors
- `Leandro Puerari (@puerari) <https://github.com/puerari>`__ - `Leandro Puerari (@puerari) <https://github.com/puerari>`__
- `puuu (@puuu) <https://github.com/puuu>`__ - `puuu (@puuu) <https://github.com/puuu>`__
- `Qc (@qc24) <https://github.com/qc24>`__ - `Qc (@qc24) <https://github.com/qc24>`__
- `qqgg231 (@qqgg231) <https://github.com/qqgg231>`__ - `Karol Zlot (@qqgg231) <https://github.com/qqgg231>`__
- `Tommy Jonsson (@quazzie) <https://github.com/quazzie>`__ - `Tommy Jonsson (@quazzie) <https://github.com/quazzie>`__
- `Quinn Hosler (@quinnhosler) <https://github.com/quinnhosler>`__ - `Quinn Hosler (@quinnhosler) <https://github.com/quinnhosler>`__
- `r-jordan (@r-jordan) <https://github.com/r-jordan>`__ - `r-jordan (@r-jordan) <https://github.com/r-jordan>`__
@ -537,6 +547,7 @@ Contributors
- `RubyBailey (@RubyBailey) <https://github.com/RubyBailey>`__ - `RubyBailey (@RubyBailey) <https://github.com/RubyBailey>`__
- `rudgr (@rudgr) <https://github.com/rudgr>`__ - `rudgr (@rudgr) <https://github.com/rudgr>`__
- `Roberto Wagner (@rwagnervm) <https://github.com/rwagnervm>`__ - `Roberto Wagner (@rwagnervm) <https://github.com/rwagnervm>`__
- `rweather (@rweather) <https://github.com/rweather>`__
- `ryanalden (@ryanalden) <https://github.com/ryanalden>`__ - `ryanalden (@ryanalden) <https://github.com/ryanalden>`__
- `Ryan Nazaretian (@ryannazaretian) <https://github.com/ryannazaretian>`__ - `Ryan Nazaretian (@ryannazaretian) <https://github.com/ryannazaretian>`__
- `samnewman86 (@samnewman86) <https://github.com/samnewman86>`__ - `samnewman86 (@samnewman86) <https://github.com/samnewman86>`__
@ -598,6 +609,7 @@ Contributors
- `Mateusz Soszyński (@TheLastGimbus) <https://github.com/TheLastGimbus>`__ - `Mateusz Soszyński (@TheLastGimbus) <https://github.com/TheLastGimbus>`__
- `Andrew Quested (@thenameiwantedwastaken) <https://github.com/thenameiwantedwastaken>`__ - `Andrew Quested (@thenameiwantedwastaken) <https://github.com/thenameiwantedwastaken>`__
- `Zixuan Wang (@TheNetAdmin) <https://github.com/TheNetAdmin>`__ - `Zixuan Wang (@TheNetAdmin) <https://github.com/TheNetAdmin>`__
- `Dominik Bruhn (@theomega) <https://github.com/theomega>`__
- `Simon (@theOzzieRat) <https://github.com/theOzzieRat>`__ - `Simon (@theOzzieRat) <https://github.com/theOzzieRat>`__
- `Florian Gareis (@TheZoker) <https://github.com/TheZoker>`__ - `Florian Gareis (@TheZoker) <https://github.com/TheZoker>`__
- `Thomas Klingbeil (@thomasklingbeil) <https://github.com/thomasklingbeil>`__ - `Thomas Klingbeil (@thomasklingbeil) <https://github.com/thomasklingbeil>`__
@ -615,6 +627,7 @@ Contributors
- `TomFahey (@TomFahey) <https://github.com/TomFahey>`__ - `TomFahey (@TomFahey) <https://github.com/TomFahey>`__
- `Tommy Kihlstrøm (@tomludd) <https://github.com/tomludd>`__ - `Tommy Kihlstrøm (@tomludd) <https://github.com/tomludd>`__
- `tomlut (@tomlut) <https://github.com/tomlut>`__ - `tomlut (@tomlut) <https://github.com/tomlut>`__
- `Tom Matheussen (@Tommatheussen) <https://github.com/Tommatheussen>`__
- `Tom Price (@tomtom5152) <https://github.com/tomtom5152>`__ - `Tom Price (@tomtom5152) <https://github.com/tomtom5152>`__
- `David Kiliani (@torfbolt) <https://github.com/torfbolt>`__ - `David Kiliani (@torfbolt) <https://github.com/torfbolt>`__
- `Torwag (@torwag) <https://github.com/torwag>`__ - `Torwag (@torwag) <https://github.com/torwag>`__
@ -633,7 +646,7 @@ Contributors
- `Thorsten von Eicken (@tve) <https://github.com/tve>`__ - `Thorsten von Eicken (@tve) <https://github.com/tve>`__
- `Tyler Menezes (@tylermenezes) <https://github.com/tylermenezes>`__ - `Tyler Menezes (@tylermenezes) <https://github.com/tylermenezes>`__
- `tyomikh (@tyomikh) <https://github.com/tyomikh>`__ - `tyomikh (@tyomikh) <https://github.com/tyomikh>`__
- `wuuker (@ukewea) <https://github.com/ukewea>`__ - `ukewea (@ukewea) <https://github.com/ukewea>`__
- `Vc (@Valcob) <https://github.com/Valcob>`__ - `Vc (@Valcob) <https://github.com/Valcob>`__
- `Nad (@valordk) <https://github.com/valordk>`__ - `Nad (@valordk) <https://github.com/valordk>`__
- `Víctor Ferrer García (@vicfergar) <https://github.com/vicfergar>`__ - `Víctor Ferrer García (@vicfergar) <https://github.com/vicfergar>`__
@ -669,6 +682,7 @@ Contributors
- `ZabojnikM (@ZabojnikM) <https://github.com/ZabojnikM>`__ - `ZabojnikM (@ZabojnikM) <https://github.com/ZabojnikM>`__
- `zaluthar (@zaluthar) <https://github.com/zaluthar>`__ - `zaluthar (@zaluthar) <https://github.com/zaluthar>`__
- `San (@zhujunsan) <https://github.com/zhujunsan>`__ - `San (@zhujunsan) <https://github.com/zhujunsan>`__
- `ZTX18 (@ZTX18) <https://github.com/ZTX18>`__
- `Christian Zufferey (@zuzu59) <https://github.com/zuzu59>`__ - `Christian Zufferey (@zuzu59) <https://github.com/zuzu59>`__
*This page was last updated August 4, 2021.* *This page was last updated August 18, 2021.*

BIN
images/am43.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.1 KiB

1
images/dsmr.svg Normal file
View File

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="183.333" height="60"><path d="M19.333.667h145C174.643.667 183 9.024 183 19.333V40c0 10.31-8.358 18.667-18.667 18.667h-145C9.024 58.667.667 50.309.667 40V19.333C.667 9.024 9.024.667 19.333.667z"/><path d="M19.333.667h144C173.643.667 182 9.024 182 19.333V40c0 10.31-8.358 18.667-18.667 18.667h-144C9.024 58.667.667 50.309.667 40V19.333C.667 9.024 9.024.667 19.333.667z" stroke-miterlimit="10" fill="none" stroke="#000" stroke-width="1.333" stroke-linecap="round" stroke-linejoin="round"/><g aria-label="DSMR" style="line-height:1.25;-inkscape-font-specification:'Montserrat, Ultra-Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start" font-weight="800" font-size="47.967" font-family="Montserrat" letter-spacing="0" word-spacing="0" fill="#fff" stroke-width="1.199"><path d="M17.133 13.112H33.01q5.517 0 9.786 2.062 4.269 2.063 6.62 5.852 2.35 3.79 2.35 8.874 0 5.085-2.35 8.874-2.351 3.79-6.62 5.852-4.27 2.063-9.786 2.063H17.133zM32.627 39.11q4.317 0 6.907-2.447 2.638-2.446 2.638-6.763t-2.638-6.763q-2.59-2.447-6.907-2.447H26.63v18.42zM68.562 47.36q-4.077 0-7.914-1.007-3.838-1.007-6.236-2.686l3.118-7.004q2.254 1.487 5.228 2.399 2.974.911 5.852.911 5.469 0 5.469-2.734 0-1.439-1.583-2.11-1.535-.72-4.989-1.487-3.79-.816-6.332-1.727-2.542-.96-4.365-3.022-1.822-2.063-1.822-5.564 0-3.07 1.679-5.517 1.678-2.494 4.988-3.933 3.358-1.439 8.203-1.439 3.31 0 6.523.767 3.214.72 5.66 2.159l-2.926 7.051q-4.797-2.59-9.305-2.59-2.83 0-4.126.863-1.295.816-1.295 2.159t1.535 2.015q1.535.671 4.94 1.39 3.838.816 6.333 1.775 2.542.912 4.365 2.974 1.87 2.015 1.87 5.517 0 3.021-1.679 5.468-1.678 2.446-5.036 3.933-3.358 1.44-8.155 1.44zM118.088 46.689l-.096-17.796-8.634 14.486h-4.221L96.55 29.372V46.69h-8.778V13.112h7.818l11.8 19.378 11.512-19.378h7.819l.096 33.577zM148.17 37.767h-5.181v8.922h-9.498V13.112h15.35q4.557 0 7.914 1.535 3.358 1.486 5.18 4.317 1.824 2.782 1.824 6.571 0 3.646-1.727 6.38-1.68 2.686-4.845 4.22l7.243 10.554h-10.169zm5.995-12.232q0-2.35-1.487-3.645-1.487-1.296-4.413-1.296h-5.276v9.834h5.276q2.926 0 4.413-1.247 1.487-1.296 1.487-3.646z"/></g></svg>

After

Width:  |  Height:  |  Size: 2.1 KiB

BIN
images/hrxl_maxsonar_wr.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

BIN
images/pipsolar.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

BIN
images/pm1006.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

BIN
images/pmsa003i.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

BIN
images/pzem-ac.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 262 KiB

BIN
images/pzem-dc.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 334 KiB

View File

@ -1 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" width="280" height="61.333"><path d="M20.533 1.333h239.511c10.31 0 18.667 8.358 18.667 18.667v20.667c0 10.309-8.358 18.666-18.667 18.666H20.534c-10.31 0-18.667-8.357-18.667-18.666V20c0-10.31 8.357-18.667 18.666-18.667z"/><path fill="none" stroke="#000" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" stroke-width="1.333" d="M20.533 1.333h239.511c10.31 0 18.667 8.358 18.667 18.667v20.667c0 10.309-8.358 18.666-18.667 18.666H20.534c-10.31 0-18.667-8.357-18.667-18.666V20c0-10.31 8.357-18.667 18.666-18.667z"/><g fill="#fff"><path d="M30.646 14.333q4.526 0 7.886 1.494 3.36 1.493 5.18 4.293 1.82 2.8 1.82 6.533 0 3.734-1.82 6.534t-5.18 4.293q-3.36 1.493-7.886 1.493h-4.714V47H14.92V14.333zm-.7 16.147q2.24 0 3.36-.98 1.12-1.027 1.12-2.847t-1.12-2.8q-1.12-1.026-3.36-1.026h-4.014v7.653zM81.966 38.46V47H51.959v-6.767l14.933-17.36H52.426v-8.54h28.793V21.1L66.286 38.46zM116.346 38.693V47h-27.16V14.333h26.553v8.307h-15.727v3.827h13.814V34.4h-13.814v4.293zM153.759 47l-.093-14.887-7.094 11.947h-4.853l-7.093-11.433V47h-10.034V14.333h9.054l10.64 17.407 10.36-17.407h9.053L163.792 47zM213.326 41.307h-12.414L198.72 47h-11.2l14.28-32.667h10.827L226.906 47h-11.387zm-3.034-7.934l-3.173-8.213-3.173 8.213zM249.152 47.747q-5.18 0-9.333-2.147-4.153-2.193-6.533-6.067-2.334-3.92-2.334-8.866 0-4.947 2.334-8.82 2.38-3.92 6.533-6.067 4.153-2.193 9.333-2.193 4.76 0 8.494 1.68 3.733 1.68 6.16 4.853l-6.954 6.207q-3.033-3.827-7.14-3.827-3.453 0-5.553 2.24-2.1 2.193-2.1 5.927 0 3.733 2.1 5.973 2.1 2.193 5.553 2.193 4.107 0 7.14-3.826l6.954 6.206q-2.427 3.174-6.16 4.854-3.734 1.68-8.494 1.68z"/></g></svg>

Before

Width:  |  Height:  |  Size: 1.6 KiB

View File

@ -1 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" width="280" height="61.333"><path d="M20.533 1.733h239.511c10.31 0 18.667 8.358 18.667 18.667v20.667c0 10.309-8.358 18.666-18.667 18.666H20.534c-10.31 0-18.667-8.357-18.667-18.666V20.4c0-10.31 8.357-18.667 18.666-18.667z"/><path fill="none" stroke="#000" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" stroke-width="1.333" d="M20.533 1.733h239.511c10.31 0 18.667 8.358 18.667 18.667v20.667c0 10.309-8.358 18.666-18.667 18.666H20.534c-10.31 0-18.667-8.357-18.667-18.666V20.4c0-10.31 8.357-18.667 18.666-18.667z"/><g fill="#fff"><path d="M29.946 14.733q4.526 0 7.886 1.494 3.36 1.493 5.18 4.293 1.82 2.8 1.82 6.533 0 3.734-1.82 6.534t-5.18 4.293q-3.36 1.493-7.886 1.493h-4.714V47.4H14.22V14.733zm-.7 16.147q2.24 0 3.36-.98 1.12-1.027 1.12-2.847t-1.12-2.8q-1.12-1.026-3.36-1.026h-4.014v7.653zM81.266 38.86v8.54H51.259v-6.767l14.933-17.36H51.726v-8.54h28.793V21.5L65.586 38.86zM115.646 39.093V47.4h-27.16V14.733h26.553v8.307H99.312v3.827h13.814V34.8H99.312v4.293zM153.059 47.4l-.093-14.887-7.094 11.947h-4.853l-7.093-11.433V47.4h-10.034V14.733h9.054l10.64 17.407 10.36-17.407h9.053l.093 32.667zM190.412 14.733h16.1q5.46 0 9.614 2.007 4.2 1.96 6.486 5.647 2.334 3.686 2.334 8.68 0 4.993-2.334 8.68-2.286 3.686-6.486 5.693-4.154 1.96-9.614 1.96h-16.1zm15.634 24.08q3.546 0 5.646-2.006 2.147-2.054 2.147-5.74 0-3.687-2.147-5.694-2.1-2.053-5.646-2.053h-4.62v15.493zM249.852 48.147q-5.18 0-9.333-2.147-4.153-2.193-6.533-6.067-2.334-3.92-2.334-8.866 0-4.947 2.334-8.82 2.38-3.92 6.533-6.067 4.153-2.193 9.333-2.193 4.76 0 8.494 1.68 3.733 1.68 6.16 4.853l-6.954 6.207q-3.033-3.827-7.14-3.827-3.453 0-5.553 2.24-2.1 2.193-2.1 5.927 0 3.733 2.1 5.973 2.1 2.193 5.553 2.193 4.107 0 7.14-3.826l6.954 6.206q-2.427 3.174-6.16 4.854-3.734 1.68-8.494 1.68z"/></g></svg>

Before

Width:  |  Height:  |  Size: 1.8 KiB

BIN
images/sdp31.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 146 KiB

BIN
images/selec_meter_em2m.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.1 KiB

BIN
images/t6615.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 46 KiB

BIN
images/tlc5947.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 64 KiB

BIN
images/tsl2591.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

289
index.rst
View File

@ -143,104 +143,204 @@ Core Components
Sensor Components Sensor Components
----------------- -----------------
Sensors have been split into categories. If a sensor fits into more than one category, it will be listed multiple times.
Core
****
.. imgtable:: .. imgtable::
Sensor Core, components/sensor/index, folder-open.svg Sensor Core, components/sensor/index, folder-open.svg
ADC, components/sensor/adc, flash.svg
ADE7953, components/sensor/ade7953, ade7953.svg
ADS1115, components/sensor/ads1115, ads1115.jpg
AHT10, components/sensor/aht10, aht10.jpg
AM2320, components/sensor/am2320, am2320.jpg
APDS9960, components/sensor/apds9960, apds9960.jpg
ATM90E32, components/sensor/atm90e32, atm90e32.jpg
AS3935, components/sensor/as3935, as3935.jpg
BH1750, components/sensor/bh1750, bh1750.jpg
Binary Sensor Map, components/sensor/binary_sensor_map, binary_sensor_map.jpg
BLE RSSI, components/sensor/ble_rssi, bluetooth.svg
BLE Client Sensor, components/sensor/ble_client, bluetooth.svg
BME280, components/sensor/bme280, bme280.jpg
BME680, components/sensor/bme680, bme680.jpg
BME680 via BSEC, components/sensor/bme680_bsec, bme680.jpg
BMP085, components/sensor/bmp085, bmp180.jpg
BMP280, components/sensor/bmp280, bmp280.jpg
b-parasite, components/sensor/b_parasite, b_parasite.jpg
CCS811, components/sensor/ccs811, ccs811.jpg
CSE7766, components/sensor/cse7766, cse7766.svg
CS5460A, components/sensor/cs5460a, cs5460a.png
CT Clamp, components/sensor/ct_clamp, ct_clamp.jpg
Dallas, components/sensor/dallas, dallas.jpg
DHT, components/sensor/dht, dht.jpg
DHT12, components/sensor/dht12, dht12.jpg
Duty Cycle, components/sensor/duty_cycle, percent.svg
ESP32 Hall Sensor, components/sensor/esp32_hall, magnet.svg
EZO sensor circuits, components/sensor/ezo, ezo-ph-circuit.png
Havells Solar, components/sensor/havells_solar, havellsgti5000d_s.jpg
HDC1080, components/sensor/hdc1080, hdc1080.jpg
HLW8012, components/sensor/hlw8012, hlw8012.svg
HMC5883L, components/sensor/hmc5883l, hmc5883l.jpg
QMC5883L, components/sensor/qmc5883l, qmc5883l.jpg
Home Assistant, components/sensor/homeassistant, home-assistant.svg Home Assistant, components/sensor/homeassistant, home-assistant.svg
HX711, components/sensor/hx711, hx711.jpg
INA219, components/sensor/ina219, ina219.jpg
INA226, components/sensor/ina226, ina226.jpg
INA3221, components/sensor/ina3221, ina3221.jpg
Inkbird IBS-TH1 Mini, components/sensor/inkbird_ibsth1_mini, inkbird_isbth1_mini.jpg
Integration, components/sensor/integration, sigma.svg Integration, components/sensor/integration, sigma.svg
HTU21D, components/sensor/htu21d, htu21d.jpg
HM3301, components/sensor/hm3301, hm3301.jpg
MAX31855, components/sensor/max31855, max31855.jpg
MAX31856, components/sensor/max31856, max31856.jpg
MAX31865, components/sensor/max31865, max31865.jpg
MAX6675, components/sensor/max6675, max6675.jpg
MCP3008, components/sensor/mcp3008, mcp3008.jpg
MCP9808, components/sensor/mcp9808, mcp9808.jpg
MH-Z19, components/sensor/mhz19, mhz19.jpg
MPU6050, components/sensor/mpu6050, mpu6050.jpg
MQTT Subscribe, components/sensor/mqtt_subscribe, mqtt.png MQTT Subscribe, components/sensor/mqtt_subscribe, mqtt.png
MS5611, components/sensor/ms5611, ms5611.jpg Uptime Sensor, components/sensor/uptime, timer.svg
Nextion, components/sensor/nextion, nextion.jpg WiFi Signal Strength, components/sensor/wifi_signal, network-wifi.svg
NTC Thermistor, components/sensor/ntc, ntc.jpg Template Sensor, components/sensor/template, description.svg
PMSX003, components/sensor/pmsx003, pmsx003.svg Custom Sensor, components/sensor/custom, language-cpp.svg
Air Quality
***********
.. imgtable::
CCS811, components/sensor/ccs811, ccs811.jpg, CO2 & Volatile organics
HM3301, components/sensor/hm3301, hm3301.jpg, Particulate
MH-Z19, components/sensor/mhz19, mhz19.jpg, CO2 & Temperature
PM1006 Sensor, components/sensor/pm1006, pm1006.jpg, Particulate
PMSA003I, components/sensor/pmsa003i, pmsa003i.jpg, Particulate
PMSX003, components/sensor/pmsx003, pmsx003.svg, Particulate
SDS011 Sensor, components/sensor/sds011, sds011.jpg, Particulate
SenseAir, components/sensor/senseair, senseair_s8.jpg, CO2
SGP30, components/sensor/sgp30, sgp30.jpg, CO2 & Volatile organics
SGP40, components/sensor/sgp40, sgp40.jpg, Volatile organics
SM300D2, components/sensor/sm300d2, sm300d2.jpg, Air quality
SPS30, components/sensor/sps30, sps30.jpg, Particulate
T6613/15, components/sensor/t6615, t6615.png, C02
ZyAura, components/sensor/zyaura, zgm053.jpg, CO2 & Temperature & Humidity
Analogue
********
.. imgtable::
ADC, components/sensor/adc, flash.svg, ESP internal
ADS1115, components/sensor/ads1115, ads1115.jpg, 4-channel ADC
MCP3008, components/sensor/mcp3008, mcp3008.jpg, 8-channel ADC
Resistance, components/sensor/resistance, omega.svg
Bluetooth Low Energy (BLE)
**************************
.. imgtable::
AM43, components/sensor/am43, am43.jpg, Lux & Battery level
BLE Client Sensor, components/sensor/ble_client, bluetooth.svg
BLE RSSI, components/sensor/ble_rssi, bluetooth.svg
Inkbird IBS-TH1 Mini, components/sensor/inkbird_ibsth1_mini, inkbird_isbth1_mini.jpg, Temperature & Humidity
RuuviTag, components/sensor/ruuvitag, ruuvitag.jpg, Temperature & Humidity & Accelerometer
Xiaomi BLE, components/sensor/xiaomi_ble, xiaomi_mijia_logo.jpg, Various
Digital Signals
***************
.. imgtable::
Duty Cycle, components/sensor/duty_cycle, percent.svg
Pulse Counter, components/sensor/pulse_counter, pulse.svg Pulse Counter, components/sensor/pulse_counter, pulse.svg
Pulse Meter, components/sensor/pulse_meter, pulse.svg Pulse Meter, components/sensor/pulse_meter, pulse.svg
Pulse Width, components/sensor/pulse_width, pulse.svg Pulse Width, components/sensor/pulse_width, pulse.svg
PZEM004T, components/sensor/pzem004t, pzem004t.svg
PZEM AC, components/sensor/pzemac, pzemac.svg
PZEM DC, components/sensor/pzemdc, pzemdc.svg Distance
Resistance, components/sensor/resistance, omega.svg ********
Rotary Encoder, components/sensor/rotary_encoder, rotary_encoder.jpg .. imgtable::
RuuviTag, components/sensor/ruuvitag, ruuvitag.jpg
SenseAir, components/sensor/senseair, senseair_s8.jpg HRXL MaxSonar WR, components/sensor/hrxl_maxsonar_wr, hrxl_maxsonar_wr.jpg, Acoustic distance
SDS011 Sensor, components/sensor/sds011, sds011.jpg TOF10120, components/sensor/tof10120, tof10120.jpg, IR optical distance
SDM Meter, components/sensor/sdm_meter, sdm220m.png Ultrasonic Sensor, components/sensor/ultrasonic, ultrasonic.jpg, Acoustic distance
SCD30, components/sensor/scd30, scd30.jpg VL53L0x, components/sensor/vl53l0x, vl53l0x.png, IR optical distance
SHTCx, components/sensor/shtcx, shtc3.jpg
SHT3X-D, components/sensor/sht3xd, sht3xd.jpg
SHT4X, components/sensor/sht4x, sht4x.jpg Electricity
SM300D2, components/sensor/sm300d2, sm300d2.jpg ***********
SPS30, components/sensor/sps30, sps30.jpg .. imgtable::
STS3X, components/sensor/sts3x, sts3x.jpg
SGP30, components/sensor/sgp30, sgp30.jpg ADE7953, components/sensor/ade7953, ade7953.svg, Power
SGP40, components/sensor/sgp40, sgp40.jpg ATM90E32, components/sensor/atm90e32, atm90e32.jpg, Voltage & Current & Power
TCS34725, components/sensor/tcs34725, tcs34725.jpg CS5460A, components/sensor/cs5460a, cs5460a.png, Voltage & Current & Power
Teleinfo, components/sensor/teleinfo, teleinfo.jpg CSE7766, components/sensor/cse7766, cse7766.svg, Voltage & Current & Power
Template Sensor, components/sensor/template, description.svg CT Clamp, components/sensor/ct_clamp, ct_clamp.jpg, AC current
TMP102, components/sensor/tmp102, tmp102.jpg DSMR, components/sensor/dsmr, dsmr.svg, Electrical counter
TMP117, components/sensor/tmp117, tmp117.jpg HLW8012, components/sensor/hlw8012, hlw8012.svg, Voltage & Current & Power
TOF10120, components/sensor/tof10120, tof10120.jpg INA219, components/sensor/ina219, ina219.jpg, DC current
INA226, components/sensor/ina226, ina226.jpg, DC current & Power
INA3221, components/sensor/ina3221, ina3221.jpg, 3-Ch DC current
PZEM AC, components/sensor/pzemac, pzem-ac.png, Voltage & Current & Power
PZEM DC, components/sensor/pzemdc, pzem-dc.png, Voltage & Current & Power
PZEM004T, components/sensor/pzem004t, pzem004t.svg, Voltage & Current & Power
SDM Meter, components/sensor/sdm_meter, sdm220m.png, Modbus energy monitor
Selec Meter, components/sensor/selec_meter, selec_meter_em2m.jpg, Modbus energy monitor
Teleinfo, components/sensor/teleinfo, teleinfo.jpg, Electrical counter
Total Daily Energy, components/sensor/total_daily_energy, sigma.svg Total Daily Energy, components/sensor/total_daily_energy, sigma.svg
TSL2561, components/sensor/tsl2561, tsl2561.jpg
Environmental
*************
.. imgtable::
AHT10, components/sensor/aht10, aht10.jpg, Temperature & Humidity
AM2320, components/sensor/am2320, am2320.jpg, Temperature & Humidity
BME280, components/sensor/bme280, bme280.jpg, Temperature & Humidity & Pressure
BME680, components/sensor/bme680, bme680.jpg, Temperature & Humidity & Pressure & Gas
BME680 via BSEC, components/sensor/bme680_bsec, bme680.jpg, Temperature & Humidity & Pressure & Gas
BMP085, components/sensor/bmp085, bmp180.jpg, Temperature & Pressure
BMP280, components/sensor/bmp280, bmp280.jpg, Temperature & Humidity & Pressure
b-parasite, components/sensor/b_parasite, b_parasite.jpg, Moisture & Temperature & Humidity
Dallas DS18B20, components/sensor/dallas, dallas.jpg, Temperature
DHT, components/sensor/dht, dht.jpg, Temperature & Humidity
DHT12, components/sensor/dht12, dht12.jpg, Temperature & Humidity
HDC1080, components/sensor/hdc1080, hdc1080.jpg, Temperature & Humidity
HTU21D, components/sensor/htu21d, htu21d.jpg, Temperature & Humidity
Inkbird IBS-TH1 Mini, components/sensor/inkbird_ibsth1_mini, inkbird_isbth1_mini.jpg, Temperature & Humidity
MCP9808, components/sensor/mcp9808, mcp9808.jpg, Temperature
MH-Z19, components/sensor/mhz19, mhz19.jpg, CO2 & Temperature
MS5611, components/sensor/ms5611, ms5611.jpg, Pressure
NTC Thermistor, components/sensor/ntc, ntc.jpg, Temperature
RuuviTag, components/sensor/ruuvitag, ruuvitag.jpg, Temperature & Humidity & Accelerometer
SCD30, components/sensor/scd30, scd30.jpg, Temperature & Humidity
SDP3x, components/sensor/sdp3x, sdp31.jpg, Pressure
SHT3X-D, components/sensor/sht3xd, sht3xd.jpg, Temperature & Humidity
SHT4X, components/sensor/sht4x, sht4x.jpg, Temperature & Humidity
SHTCx, components/sensor/shtcx, shtc3.jpg, Temperature & Humidity
STS3X, components/sensor/sts3x, sts3x.jpg, Temperature
TMP102, components/sensor/tmp102, tmp102.jpg, Temperature
TMP117, components/sensor/tmp117, tmp117.jpg, Temperature
Light
*****
.. imgtable::
AM43, components/sensor/am43, am43.jpg, Lux
APDS9960, components/sensor/apds9960, apds9960.jpg, Colour & Gesture
BH1750, components/sensor/bh1750, bh1750.jpg, Lux
TCS34725, components/sensor/tcs34725, tcs34725.jpg, Lux & RGB colour
TSL2561, components/sensor/tsl2561, tsl2561.jpg, Lux
TSL2591, components/sensor/tsl2591, tsl2591.jpg, Lux
Magnetic
********
.. imgtable::
ESP32 Hall Sensor, components/sensor/esp32_hall, magnet.svg, ESP internal
HMC5883L, components/sensor/hmc5883l, hmc5883l.jpg, 3-Axis magnetometer
QMC5883L, components/sensor/qmc5883l, qmc5883l.jpg, 3-Axis magnetometer
Miscellaneous
*************
.. imgtable::
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
EZO sensor circuits, components/sensor/ezo, ezo-ph-circuit.png, (pH)
Havells Solar, components/sensor/havells_solar, havellsgti5000d_s.jpg, Solar rooftop
Nextion, components/sensor/nextion, nextion.jpg, Sensors from display
Rotary Encoder, components/sensor/rotary_encoder, rotary_encoder.jpg
Tuya Sensor, components/sensor/tuya, tuya.png Tuya Sensor, components/sensor/tuya, tuya.png
TX20, components/sensor/tx20, tx20.jpg TX20, components/sensor/tx20, tx20.jpg, Wind speed & Wind direction
Ultrasonic Sensor, components/sensor/ultrasonic, ultrasonic.jpg
Uptime Sensor, components/sensor/uptime, timer.svg
VL53L0x, components/sensor/vl53l0x, vl53l0x.png Motion
WiFi Signal Strength, components/sensor/wifi_signal, network-wifi.svg ******
Xiaomi BLE, components/sensor/xiaomi_ble, xiaomi_mijia_logo.jpg .. imgtable::
APDS9960, components/sensor/apds9960, apds9960.jpg, Colour & Gesture
MPU6050, components/sensor/mpu6050, mpu6050.jpg, Accelerometer & Gyroscope
RuuviTag, components/sensor/ruuvitag, ruuvitag.jpg, Temperature & Humidity & Accelerometer
Thermocouple
************
.. imgtable::
MAX31855, components/sensor/max31855, max31855.jpg, K-Type
MAX31856, components/sensor/max31856, max31856.jpg, All types
MAX31865, components/sensor/max31865, max31865.jpg, Platinum RTD
MAX6675, components/sensor/max6675, max6675.jpg, K-Type
Weight
******
.. imgtable::
HX711, components/sensor/hx711, hx711.jpg, Load cell amplifier
Xiaomi Miscale, components/sensor/xiaomi_miscale, xiaomi_miscale.jpg Xiaomi Miscale, components/sensor/xiaomi_miscale, xiaomi_miscale.jpg
Xiaomi Miscale2, components/sensor/xiaomi_miscale2, xiaomi_miscale2.jpg Xiaomi Miscale2, components/sensor/xiaomi_miscale2, xiaomi_miscale2.jpg
ZyAura, components/sensor/zyaura, zgm053.jpg
Custom Sensor, components/sensor/custom, language-cpp.svg
Looking for a sensor that outputs its values as an analog voltage? Have a look at the Looking for a sensor that outputs its values as an analog voltage? Have a look at the
:doc:`ADC Sensor </components/sensor/adc>` together with a formula like in the :doc:`TEMT6000 :doc:`ADC Sensor </components/sensor/adc>` together with a formula like in the :doc:`TEMT6000
@ -283,6 +383,7 @@ Output Components
AC Dimmer, components/output/ac_dimmer, ac_dimmer.svg AC Dimmer, components/output/ac_dimmer, ac_dimmer.svg
PCA9685, components/output/pca9685, pca9685.jpg PCA9685, components/output/pca9685, pca9685.jpg
TLC59208F, components/output/tlc59208f, tlc59208f.jpg TLC59208F, components/output/tlc59208f, tlc59208f.jpg
TLC5947, components/output/tlc5947, tlc5947.jpg
MY9231/MY9291, components/output/my9231, my9231.svg MY9231/MY9291, components/output/my9231, my9231.svg
SM16716, components/output/sm16716, sm16716.svg SM16716, components/output/sm16716, sm16716.svg
SM2135, components/output/sm2135, sm2135.svg SM2135, components/output/sm2135, sm2135.svg
@ -297,17 +398,20 @@ Light Components
Light Core, components/light/index, folder-open.svg Light Core, components/light/index, folder-open.svg
Binary Light, components/light/binary, lightbulb.svg Binary Light, components/light/binary, lightbulb.svg
Status Led, components/light/status_led, led-on.svg
Monochromatic Light, components/light/monochromatic, brightness-medium.svg Monochromatic Light, components/light/monochromatic, brightness-medium.svg
Cold+Warm White Light, components/light/cwww, brightness-medium.svg Cold+Warm White Light, components/light/cwww, brightness-medium.svg
Color Temperature Light, components/light/color_temperature, brightness-medium.svg
RGB Light, components/light/rgb, rgb.png RGB Light, components/light/rgb, rgb.png
RGBW Light, components/light/rgbw, rgbw.png RGBW Light, components/light/rgbw, rgbw.png
RGBWW Light, components/light/rgbww, rgbw.png RGBWW Light, components/light/rgbww, rgbw.png
RGBCT Light, components/light/rgbct, rgbw.png
FastLED Light, components/light/fastled, color_lens.svg FastLED Light, components/light/fastled, color_lens.svg
NeoPixelBus Light, components/light/neopixelbus, color_lens.svg NeoPixelBus Light, components/light/neopixelbus, color_lens.svg
Light Partition, components/light/partition, color_lens.svg Light Partition, components/light/partition, color_lens.svg
Tuya Dimmer, components/light/tuya, tuya.png Tuya Dimmer, components/light/tuya, tuya.png
Custom Light, components/light/custom, language-cpp.svg Custom Light, components/light/custom, language-cpp.svg
@ -378,6 +482,7 @@ Cover Components
Endstop Cover, components/cover/endstop, electric-switch.svg Endstop Cover, components/cover/endstop, electric-switch.svg
Time-Based Cover, components/cover/time_based, timer.svg Time-Based Cover, components/cover/time_based, timer.svg
Custom Cover, components/cover/custom, language-cpp.svg Custom Cover, components/cover/custom, language-cpp.svg
AM43 Cover, components/cover/am43, am43.jpg
Text Sensor Components Text Sensor Components
---------------------- ----------------------
@ -418,6 +523,14 @@ Number Components
Number Core, components/number/index, folder-open.svg Number Core, components/number/index, folder-open.svg
Template Number, components/number/template, description.svg Template Number, components/number/template, description.svg
Select Components
-----------------
.. imgtable::
Select Core, components/select/index, folder-open.svg
Template Select, components/select/template, description.svg
Misc Components Misc Components
--------------- ---------------
@ -458,7 +571,9 @@ Misc Components
Exposure Notifications, components/exposure_notifications, exposure_notifications.png Exposure Notifications, components/exposure_notifications, exposure_notifications.png
RTTTL Buzzer, components/rtttl, buzzer.jpg RTTTL Buzzer, components/rtttl, buzzer.jpg
Prometheus, components/prometheus, prometheus.svg Prometheus, components/prometheus, prometheus.svg
PipSolar - compatible PV Inverter, components/pipsolar, pipsolar.jpg
Grow Fingerprint Reader, components/fingerprint_grow, fingerprint.svg Grow Fingerprint Reader, components/fingerprint_grow, fingerprint.svg
Demo, components/demo, description.svg
Additional Custom Components Additional Custom Components
---------------------------- ----------------------------