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
# 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
# for a project that appears at the top of each page and should give viewer a

View File

@ -1,5 +1,5 @@
ESPHOME_PATH = ../esphome
ESPHOME_REF = 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

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::
:url: /changelog/v1.20.0.html
:url: /changelog/2021.8.0.html
.. toctree::
:glob:

View File

@ -18,8 +18,8 @@ Changelog - Version 1.14.0 - November 1
ATM90E32, components/sensor/atm90e32, atm90e32.jpg
PZEM004T, components/sensor/pzem004t, pzem004t.svg
PZEM AC, components/sensor/pzemac, pzemac.svg
PZEM DC, components/sensor/pzemdc, pzemdc.svg
PZEM AC, components/sensor/pzemac, pzem-ac.png
PZEM DC, components/sensor/pzemdc, pzem-dc.png
ADE7953, components/sensor/ade7953, ade7953.svg
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
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``.
- If MQTT enabled, all other options from :ref:`MQTT Component <config-mqtt-component>`.
.. _binary_sensor-filters:

View File

@ -8,7 +8,7 @@ Nextion Binary Sensor Component
:image: nextion.jpg
The ``nextion`` binary sensor platform supports the many switched components in the Nextion as well as integer variables (>0 == true). It can be a component or variable in the Nextion display.
It is best to set the components vscope to global in the Nextion Editor. This way the component will be available if the page is shown or not.
It is best to set the components vscope to global in the Nextion Editor. This way the component will be available if the page is shown or not.
See :doc:`/components/display/nextion` for setting up the display
@ -52,7 +52,7 @@ Configuration variables:
- All other options from :ref:`Binary Sensor <config-binary_sensor>`.
**Touch Sensor:**
The Nextion will send a **page_id** and **component_id** when the *Send Component ID* check box is selected for the component. To enable
The Nextion will send a **page_id** and **component_id** when the *Send Component ID* check box is selected for the component. To enable
this native event **page_id** and **component_id** are required. No :ref:`nextion_custom_binary_sensor_protocol` is required. If **page_id** and **component_id** are set then the component will only react to touch events from the Nextion. Setting **component_name** will allow setting options like foreground color.
.. note::
@ -74,7 +74,7 @@ Example:
lambda: |-
id(nextion1).update_components_by_page_prefix("page"+x+".");
See :ref:`nextion_binary_sensor_how_things_update` for additional information
@ -118,15 +118,15 @@ more advanced functions (see the full :apiref:`nextion/binary_sensor/nextion_bin
How things Update
-----------------
A Nextion component with an integer value (.val) or Nextion variable will be automatically polled if **update_interval** is set.
To have the Nextion send the data you can use the :ref:`nextion_custom_binary_sensor_protocol` for this. Add the :ref:`nextion_custom_binary_sensor_protocol` to the
component or function you want to trigger the send. Typically this is in *Touch Press Event* but some components, like a slider, should have it
To have the Nextion send the data you can use the :ref:`nextion_custom_binary_sensor_protocol` for this. Add the :ref:`nextion_custom_binary_sensor_protocol` to the
component or function you want to trigger the send. Typically this is in *Touch Press Event* but some components, like a slider, should have it
set in the *Touch Release Event* to capture all the changes. Since this is a custom protocol it can be sent from anywhere (timers/functions/components)
in the Nextion.
in the Nextion.
.. note::
There is no need to check the *Send Component ID* for the *Touch Press Event* or *Touch Release Event*
for an integer value component since this will be sending the real value to esphome,
for an integer value component since this will be sending the real value to esphome,
but make sure you have both checked for a touch sensor.
@ -135,7 +135,7 @@ Using the above yaml example:
- "Radio 0 Binary Sensor" will poll the Nextion for the ``r0.val`` value and set the state accordingly.
- "Is Darkmode Set" will NOT poll the Nextion. Either the Nextion will need to use the :ref:`nextion_custom_binary_sensor_protocol` or use a lambda:
- :ref:`Lambda Calls <nextion_binary_sensor_lambda_calls>`.
- :ref:`Lambda Calls <nextion_binary_sensor_lambda_calls>`.
.. note::

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
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::
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
name: "My Anova stick"
ble_client_id: my_anova
unit_of_measurement: c
Configuration variables:
------------------------
@ -46,6 +51,7 @@ Configuration variables:
- **id** (*Optional*, :ref:`config-id`): Manually specify the ID used for code generation.
- **name** (**Required**, string): The name of the climate device.
- **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>`.
See Also

View File

@ -49,6 +49,9 @@ Advanced options:
- **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``.
- If MQTT enabled, all other options from :ref:`MQTT Component <config-mqtt-component>`.
Climate Automation
@ -72,8 +75,8 @@ Configuration variables:
- **id** (**Required**, :ref:`config-id`): The ID of the climate device to control.
- **mode** (*Optional*, string, :ref:`templatable <config-templatable>`): Put the climate device
in a specific mode. One of
in a specific mode. One of
- ``OFF`` - The device is manually set to off, the device is inactive.
- ``AUTO`` - The device is should adjust the temperature dynamically. For example based on a schedule, or learned behavior.
- ``HEAT`` - The device is set to heat to reach a target temperature.

View File

@ -2,18 +2,18 @@ IR Remote Climate
=================
.. 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
The climate component allows you to control a variety of compatible AC units by sending IR signals
as your remote unit would do.
This climate component allows you to control compatible AC units by sending an infrared (IR)
control signal, just as the unit's handheld remote controller would.
.. figure:: images/climate-ui.png
:align: center
:width: 60.0%
There is a growing list of compatible units. If your unit is not listed below you can fill a feature
request so it will be added (see FAQ).
There is a growing list of compatible units. If your unit is not listed below you should
submit a feature request (see FAQ).
+---------------------------------------+---------------------+----------------------+
| Name | Platform name | Supports receiver |
@ -27,25 +27,26 @@ request so it will be added (see FAQ).
+---------------------------------------+---------------------+----------------------+
| Fujitsu General | ``fujitsu_general`` | yes |
+---------------------------------------+---------------------+----------------------+
| Hitachi | ``hitachi_ac344`` | yes |
| | ``hitachi_ac424`` | |
+---------------------------------------+---------------------+----------------------+
| :ref:`LG<climate_ir_lg>` | ``climate_ir_lg`` | yes |
+---------------------------------------+---------------------+----------------------+
| Mitsubishi | ``mitsubishi`` | |
+---------------------------------------+---------------------+----------------------+
| TCL112, Fuego | ``tcl112`` | yes |
+---------------------------------------+---------------------+----------------------+
| Toshiba | ``toshiba`` | yes |
| :ref:`Toshiba<toshiba>` | ``toshiba`` | yes |
+---------------------------------------+---------------------+----------------------+
| :ref:`Whirlpool<whirlpool>` | ``whirlpool`` | yes |
+---------------------------------------+---------------------+----------------------+
| 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
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`
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!
name: "Living Room AC"
Configuration variables:
Configuration Variables:
------------------------
- **name** (**Required**, string): The name for the climate device.
@ -74,7 +75,8 @@ Configuration variables:
receiver. see: :ref:`ir-receiver_id`.
- 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.
- **transmitter_id** (*Optional*, :ref:`config-id`): Manually specify the ID of the remote transmitter.
@ -112,22 +114,6 @@ IR receiver.
name: "Living Room AC"
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
@ -154,11 +140,63 @@ Configuration variables:
header_high: 3265us # AC Units from LG in Brazil, for example use these timings
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
--------
- :doc:`/components/climate/index`
- :doc:`/components/remote_receiver`
- :doc:`/components/remote_transmitter`
- :doc:`/components/sensor/index`
- :apiref:`ballu.h <ballu/ballu.h>`,
- :apiref:`coolix.h <coolix/coolix.h>`,
:apiref:`daikin.h <daikin/daikin.h>`

View File

@ -90,24 +90,29 @@ modes that Home Assistant offers.
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)
before an :ref:`action <config-action>` (cooling, heating, etc.) is triggered. It defaults to 0.5 °C.
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. 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
*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
temperature of 21 °C. As mentioned above, the controller uses a default hysteresis value of 0.5 °C, so let's assume that
value here, as well. The controller as implemented in this component will allow the temperature to drop as low as the set
point's value (21 °C) *minus* the hysteresis value (0.5 °C), or 20.5 °C, before calling ``heat_action`` to activate heating.
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,
the controller will allow the temperature to drop as low as the set point's value (22 °C) *minus* the ``heat_deadband``
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*
the hysteresis value (0.5 °C), or 21.5 °C. Once this temperature is reached, ``idle_action`` will be called to deactivate
After heating has been activated, it will remain active until the observed temperature reaches the set point (22 °C) *plus*
the ``heat_overrun`` value (0.6 °C), or 22.6 °C. Once this temperature is reached, ``idle_action`` will be called to deactivate
heating.
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
to 21.5 °C.
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
``idle_action`` would not be called until the temperature is reduced to 22.3 °C.
Important Terminology
---------------------
@ -134,15 +139,27 @@ Examples:
Got all that? Great. Let's take a closer look at some configuration.
Configuration Variables:
------------------------
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.
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
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``
**must be specified.**
``min_temperature`` and ``max_temperature`` from the base climate component **are used to define the range**
of allowed temperature values in the thermostat component. See :doc:`/components/climate/index`
Note that ``min_temperature`` and ``max_temperature`` from the base climate component are used to define
the range of allowed temperature values in the thermostat component. See :doc:`/components/climate/index`.
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).
- **heat_action** (*Optional*, :ref:`Action <config-action>`): The action to call when
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
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
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).
- **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
controller triggers this action based on the upper target temperature when set to
``fan_only_mode`` (see below).
the climate device should activate its fan only (but does not heat or cool). When ``fan_only_cooling``
is set to ``false``, the thermostat controller immediately triggers this action when set to
``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>`.
**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
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
an :ref:`action <config-action>` (cooling, heating, etc.) is triggered. Defaults to 0.5 °C.
Set Point Options/Behavior
**************************
- **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 mode can be used to have a second set of target temperatures (for example, while the user is
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``
**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::
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
``max_temperature`` from the base climate component are used the define the range of adjustability and the
defaults will probably not make sense for control of things like humidity. See :doc:`/components/climate/index`
- 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.
- ``min_temperature`` and ``max_temperature`` from the base climate component are used the define the range of
adjustability and the defaults will probably not make sense for control of things like humidity. See
:doc:`/components/climate/index`.
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
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``.
- If MQTT enabled, all other options from :ref:`MQTT Component <config-mqtt-component>`.
.. _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-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-b74`` (T5_V2.3.1 with B74 display tested)
- ``2.13in-ttgo-b1`` (T5_V2.3 with B1 display tested)
- ``2.13in-ttgo-dke`` (T5_V2.3 with DKE group display (DEPG0213BN) tested)
- ``2.70in`` (currently not working with the HAT Rev 2.1 version)
- ``2.90in``
- ``2.90inv2``
- ``2.90in-b`` (B/W rendering only)
- ``4.20in``
- ``4.20in-bV2`` (B/W rendering only)
- ``5.83in``
- ``7.50in``
- ``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.
- **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.
The B74 display variant requires the reset pin.
- **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°``.
- **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.
- **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:
@ -298,7 +301,7 @@ Configuration for TTGO-Camera Mini
pin: GPIO32
frequency: 20MHz
i2c_pins:
sda: GPIO13
sda: GPIO13
scl: GPIO12
data_pins: [GPIO5, GPIO14, GPIO4, GPIO15, GPIO37, GPIO38, GPIO36, GPIO39]
vsync_pin: GPIO27

View File

@ -32,6 +32,9 @@ Configuration variables:
- **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``.
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
number/index
output/index
select/index
sensor/index
switch/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
auto traits = LightTraits();
traits.set_supports_brightness(true);
traits.set_supports_rgb(true);
traits.set_supports_rgb_white_value(false);
traits.set_supports_color_temperature(false);
traits.set_supports_color_modes({ColorMode::RGB});
return traits;
}

View File

@ -5,9 +5,9 @@ Cold White + Warm White Light
:description: Instructions for setting up Cold White + Warm White lights.
:image: brightness-medium.png
The ``cwww`` light platform creates a Cold-White+Warm-White
light from 2 :ref:`float output components <output>` (one for each channel). The two
channels will be mixed using the color temperature configuration options.
The ``cwww`` light platform creates a cold white + warm white light from 2
:ref:`float output components <output>` (one for each channel). The two channels
can be controlled individually or together.
.. code-block:: yaml
@ -21,16 +21,28 @@ channels will be mixed using the color temperature configuration options.
warm_white_color_temperature: 2000 K
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:
------------------------
- **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.
- **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)
of the cold white channel.
- **warm_white_color_temperature** (**Required**, float): The color temperate (in `mireds <https://en.wikipedia.org/wiki/Mired>`__ or Kelvin)
of the warm white channel.
- **cold_white_color_temperature** (*Optional*, float): The color temperature (in `mireds <https://en.wikipedia.org/wiki/Mired>`__ or Kelvin)
of the cold white channel. Note that this option is required to control the mixing from Home Assistant.
- **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 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``.
- **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.
@ -43,10 +55,13 @@ See Also
- :doc:`/components/light/index`
- :doc:`/components/light/rgb`
- :doc:`/components/light/rgbw`
- :doc:`/components/light/rgbww`
- :doc:`/components/light/rgbct`
- :doc:`/components/light/color_temperature`
- :doc:`/components/power_supply`
- :doc:`/components/output/ledc`
- :doc:`/components/output/esp8266_pwm`
- :doc:`/components/output/pca9685`
- :doc:`/components/output/tlc59208f`
- :apiref:`cwww/cww_light_output.h`
- :apiref:`cwww/cwww_light_output.h`
- :ghedit:`Edit`

View File

@ -79,6 +79,7 @@ Supported Chipsets
- ``UCS1903``
- ``UCS1904``
- ``UCS2903``
- ``SM16703``
.. _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_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:
------------------------
@ -48,7 +53,7 @@ Configuration variables:
.. 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
--------

View File

@ -61,6 +61,9 @@ Advanced options:
- **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``.
- If MQTT enabled, all other options from :ref:`MQTT Component <config-mqtt-component>`.
.. _light-toggle_action:
@ -128,26 +131,49 @@ Configuration variables:
- **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
if the light supports it.
- **brightness** (*Optional*, percentage, :ref:`templatable <config-templatable>`): The brightness of the light. Must be in range
``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
light. Defaults to not changing brightness.
- **color_brightness** (*Optional*, percentage, :ref:`templatable <config-templatable>`): The brightness of the color lights. Must
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.
- **red** (*Optional*, percentage, :ref:`templatable <config-templatable>`): The red channel of the light. Must be in range
``0%`` to ``100%`` or ``0.0`` to ``1.0``. Defaults to not changing red channel.
- **green** (*Optional*, percentage, :ref:`templatable <config-templatable>`): The green channel of the light. Must be in range
``0%`` to ``100%`` or ``0.0`` to ``1.0``. Defaults to not changing green channel.
- **blue** (*Optional*, percentage, :ref:`templatable <config-templatable>`): The blue channel of the light. Must be in range
``0%`` to ``100%`` or ``0.0`` to ``1.0``. Defaults to not changing blue channel.
- **white** (*Optional*, percentage, :ref:`templatable <config-templatable>`): The brightness of the white lights. Must be in range
``0%`` to ``100%`` or ``0.0`` to ``1.0``. Defaults to not changing white channel.
- **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_mode** (*Optional*, :ref:`templatable <config-templatable>`): For lights that support more than one color mode, the color
mode that will be activated. The color mode determines which outputs of the light are active, and which parameters can be used.
This can for example be used to switch between colored and white light. Must be a color mode that is supported by the light.
Valid color modes are:
- ``ON_OFF``: Only on/off control.
- ``BRIGHTNESS``: Only brightness control. Accepts *brightness* parameter.
- ``WHITE``: Single white channel only. Accepts *brightness* and *white* parameters.
- ``COLOR_TEMPERATURE``: Color-temperature controlled white channel. Accepts *brightness* and *color_temperature*
parameters.
- ``COLD_WARM_WHITE``: Cold and warm white channels. Accepts *brightness*, *color_temperature*, *cold_white* and
*warm_white* parameters.
- ``RGB``: RGB color channels. Accepts *brightness*, *color_brightness*, *red*, *green* and *blue* parameters.
- ``RGB_WHITE``: RGB color channels and a separate white channel. Accepts parameters from ``RGB`` and ``WHITE``
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
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
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::
This action can also be expressed in :ref:`lambdas <config-lambda>`:
@ -158,7 +184,10 @@ Configuration variables:
// set parameters (optional)
call.set_transition_length(1000); // in ms
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");
// perform action:
call.perform();
@ -172,8 +201,9 @@ Configuration variables:
.. note::
The master brightness (``brightness``) and separate brightness controls for the color and
white channels (``color_brightness`` and ``white``) are multiplied together. Thus, this will
result in color at 40% brightness and white at 60% brightness:
white channels (``color_brightness``, ``white``, ``cold_white`` and ``warm_white``) are
multiplied together. Thus, this will result in color at 40% brightness and white at 60%
brightness:
.. code-block:: yaml
@ -479,14 +509,21 @@ Configuration variables:
- **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.
- **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%``.
- **red** (*Optional*, percentage): The percentage that the red color should be on for RGB lights. Defaults to ``100%``.
- **green** (*Optional*, percentage): The percentage that the green color should be on for RGB lights. Defaults to ``100%``.
- **blue** (*Optional*, percentage): The percentage that the blue color should be on for RGB lights. Defaults to ``100%``.
- **white** (*Optional*, percentage): The percentage that the white color should be on for RGBW lights. Defaults to ``100%``.
- **color_brightness** (*Optional*, percentage): The brightness of the RGB lights, if applicable. Defaults to ``100%``.
- **red** (*Optional*, percentage): The red channel of the light, if applicable. Defaults to ``100%``.
- **green** (*Optional*, percentage): The green channel of the light, if applicable. 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.
See `light.turn_on <light-turn_on_action>` for more information on the various color fields.
Flicker Effect
**************

View File

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

View File

@ -82,6 +82,8 @@ See Also
- :doc:`/components/output/index`
- :doc:`/components/light/index`
- :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`

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
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:
------------------------
@ -57,26 +72,16 @@ Configuration variables:
- **id** (*Optional*, :ref:`config-id`): Manually specify the ID used for code generation.
- 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
--------
- :doc:`/components/output/index`
- :doc:`/components/light/index`
- :doc:`/components/light/cwww`
- :doc:`/components/light/color_temperature`
- :doc:`/components/light/rgb`
- :doc:`/components/light/rgbww`
- :doc:`/components/light/rgbct`
- :doc:`/components/power_supply`
- :doc:`/components/output/ledc`
- :doc:`/components/output/esp8266_pwm`

View File

@ -6,8 +6,8 @@ RGBWW Light
:image: rgbw.png
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
and warm white channels will be mixed using the color temperature configuration options.
light from 5 :ref:`float output components <output>` (one for each channel). The cold and warm
white channels can be controlled individually or together, see :ref:`cwww_mixing` for more information.
.. code-block:: yaml
@ -49,6 +49,19 @@ perceived intensity of different colors will generally vary. This can be done by
pin: D1
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:
------------------------
@ -61,10 +74,12 @@ Configuration variables:
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) of the cold white channel.
- **warm_white_color_temperature** (**Required**, float): The color temperate (in
`mireds <https://en.wikipedia.org/wiki/Mired>`__ or Kelvin) of the warm white channel.
- **cold_white_color_temperature** (*Optional*, float): The color temperature (in
`mireds <https://en.wikipedia.org/wiki/Mired>`__ or Kelvin) of the cold white channel. Note that when the color interlock
is enabled, this option is required to control the light from Home Assistant.
- **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
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

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
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
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
value allowed. Some ceiling fans have a value of 100 (also for `max_value`).
- **cold_white_color_temperature** (*Optional*, float): The color temperature (in `mireds
<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.
- All other options from :ref:`Light <config-light>`.
- 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
performed when a message is to be logged. The variables ``int level``, ``const char* tag`` and
``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:

View File

@ -35,6 +35,9 @@ Configuration variables:
- **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:

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``.
- **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``.
- **zero_means_zero** (*Optional*, boolean): Sets the output to use actual 0 instead of ``min_power``.
Defaults to ``false``.
.. _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.
- **samsung36**: Decode and dump Samsung36 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.
- **rc5**: Decode and dump RC5 IR codes.
- **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
Sony remote code has been decoded. A variable ``x`` of type :apiclass:`remote_base::SonyData`
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
raw remote code has been decoded. A variable ``x`` of type ``std::vector<int>``
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
pioneer remote code has been decoded. A variable ``x`` of type :apiclass:`remote_base::PioneerData`
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:
@ -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.
- **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.
- **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.
- **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.

View File

@ -252,6 +252,27 @@ Configuration variables:
- **command** (**Required**, int): The command to send.
- 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
**********************************************
@ -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
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
****************************************************

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.
Some applications like Grafana require this when working with Home Assistant, but beware it can
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:

View File

@ -38,6 +38,7 @@ Configuration variables:
that the value can be restored upon power cycle or reboot.
Warning: this option can wear out your flash. Defaults to ``false``.
- **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>`.
.. _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:
------------------------
- **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>`.
- **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>`.
- **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>`.
- **temperature** (*Optional*): Use the temperature value in °C for the ``PMS5003T`` and ``PMS5003ST``.
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
: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.
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/>`__
for more information.
.. figure:: images/pzem-ac.png
:align: center
:width: 80.0%
PZEM-004T Version 3.
.. warning::
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
: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.
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
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
# 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.
- **name** (**Required**, string): The name of the sensor.
- **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>`.
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`)
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)
- "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:
@ -217,6 +219,22 @@ Configuration example for ATC MiThermometer firmware set to "Custom" advertiseme
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
**********
@ -390,6 +408,31 @@ Configuration example:
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
------------------

View File

@ -21,6 +21,10 @@ the device. Specifically, it will:
status_led:
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:
------------------------
@ -43,5 +47,6 @@ Configuration variables:
See Also
--------
- :doc:`/components/light/status_led`
- :apiref:`status_led/status_led.h`
- :ghedit:`Edit`

View File

@ -35,6 +35,9 @@ Configuration variables:
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
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>`.
.. _switch-toggle_action:

View File

@ -5,10 +5,10 @@ Nextion Switch Component
.. seo::
:description: Instructions for setting up Nextion Switch.
:image: nextion.jpg
:image: nextion.jpg
The ``nextion`` switch platform supports the many switched components in the Nextion as well as integer variables. It can be a component or variable in the Nextion display.
It is best to set the components vscope to global in the Nextion Editor. This way the component will be available if the page is shown or not.
It is best to set the components vscope to global in the Nextion Editor. This way the component will be available if the page is shown or not.
See :doc:`/components/display/nextion` for setting up the display
@ -20,7 +20,7 @@ See :doc:`/components/display/nextion` for setting up the display
id: nextion1
# ...
switch:
switch:
- platform: nextion
id: r0_switch
name: "Radio 0 Switch"
@ -90,21 +90,21 @@ some more advanced functions (see the full :apiref:`nextion/nextion_switch.h` fo
How things Update
-----------------
A Nextion component with an integer value (.val) or Nextion variable will be automatically polled if **update_interval** is set.
To have the Nextion send the data you can use the :ref:`nextion_custom_switch_protocol` for this. Add the :ref:`nextion_custom_switch_protocol` to the
component or function you want to trigger the send. Typically this is in *Touch Press Event* but some components, like a slider, should have it
To have the Nextion send the data you can use the :ref:`nextion_custom_switch_protocol` for this. Add the :ref:`nextion_custom_switch_protocol` to the
component or function you want to trigger the send. Typically this is in *Touch Press Event* but some components, like a slider, should have it
set in the *Touch Release Event* to capture all the changes. Since this is a custom protocol it can be sent from anywhere (timers/functions/components)
in the Nextion.
in the Nextion.
.. note::
There is no need to check the *Send Component ID* for the *Touch Press Event* or *Touch Release Event*
since this will be sending the real value to esphome.
Using the above yaml example:
Using the above yaml example:
- "Radio 0 switch" will poll the Nextion for the ``r0.val`` value and set the state accordingly.
- "Is Darkmode Set" will NOT poll the Nextion. Either the Nextion will need to use the :ref:`nextion_custom_switch_protocol` or use a lambda:
- :ref:`Lambda Calls <nextion_switch_lambda_calls>`.
- :ref:`Lambda Calls <nextion_switch_lambda_calls>`.
.. note::

View File

@ -29,6 +29,9 @@ Configuration variables:
- **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``.
- If MQTT enabled, All other options from :ref:`MQTT Component <config-mqtt-component>`.
Automations:

View File

@ -5,11 +5,11 @@ Nextion Text Sensor Component
.. seo::
:description: Instructions for setting up Nextion text sensor.
:image: nextion.jpg
:image: nextion.jpg
The ``nextion`` text sensor platform supports text strings. It can be a component or variable in the Nextion display.
It is best to set the components vscope to global in the Nextion Editor. This way the component will be available
if the page is shown or not.
if the page is shown or not.
See :doc:`/components/display/nextion` for setting up the display
@ -83,20 +83,20 @@ some more advanced functions (see the full :apiref:`nextion/text_sensor/nextion_
How things Update
-----------------
A Nextion component with an integer value (.val) or Nextion variable will be automatically polled if **update_interval** is set.
To have the Nextion send the data you can use the :ref:`nextion_custom_text_sensor_protocol` for this. Add the :ref:`nextion_custom_text_sensor_protocol` to the
component or function you want to trigger the send. Typically this is in *Touch Press Event* but some components, like a slider, should have it
To have the Nextion send the data you can use the :ref:`nextion_custom_text_sensor_protocol` for this. Add the :ref:`nextion_custom_text_sensor_protocol` to the
component or function you want to trigger the send. Typically this is in *Touch Press Event* but some components, like a slider, should have it
set in the *Touch Release Event* to capture all the changes. Since this is a custom protocol it can be sent from anywhere (timers/functions/components)
in the Nextion.
in the Nextion.
.. note::
There is no need to check the *Send Component ID* for the *Touch Press Event* or *Touch Release Event*
since this will be sending the real value to esphome.
Using the above yaml example:
- "text0" will poll the Nextion for ``text0.txt`` value and set the state accordingly.
Using the above yaml example:
- "text0" will poll the Nextion for ``text0.txt`` value and set the state accordingly.
- :ref:`Lambda Calls <nextion_text_sensor_lambda_calls>`.
- :ref:`Lambda Calls <nextion_text_sensor_lambda_calls>`.
.. note::

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
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
# Example configuration entry
uart:
tx_pin: D0
rx_pin: D1
tx_pin: 1
rx_pin: 3
baud_rate: 9600
Configuration variables:

View File

@ -67,9 +67,9 @@ author = "Otto Winter"
# built documents.
#
# The short X.Y version.
version = "1.20"
version = "2021.8"
# 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
# for a list of supported languages.
@ -147,7 +147,7 @@ html_sidebars = {
# 'about.html',
"searchbox.html",
"localtoc.html",
"contact.html"
"contact.html",
]
}

View File

@ -119,7 +119,7 @@ class ImageTableDirective(Table):
for row in data:
if not row:
continue
name, page, image = row
name, page, image = row[0:3]
link = page.strip()
if link.startswith("http"):
pass
@ -133,6 +133,7 @@ class ImageTableDirective(Table):
"name": name.strip(),
"link": link,
"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 += ref
entry += para
cat_text = cell["category"]
if cat_text:
cat = nodes.paragraph(text=cat_text)
entry += cat
trow += entry
rows.append(trow)
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
`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),
<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
and JPGs should be max. 300x300px.

View File

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

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