Merge pull request #3060 from esphome/bump-2023.7.0b1

2023.7.0b1
This commit is contained in:
Jesse Hills 2023-07-13 10:54:11 +12:00 committed by GitHub
commit 1f12c0fb74
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
41 changed files with 1374 additions and 66 deletions

View File

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

View File

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 99 KiB

View File

@ -1 +1 @@
2023.6.5
2023.7.0b1

153
changelog/2023.7.0.rst Normal file
View File

@ -0,0 +1,153 @@
ESPHome 2023.7.0 - 19th July 2023
=================================
.. seo::
:description: Changelog for ESPHome 2023.7.0.
:image: /_static/changelog-2023.7.0.png
:author: Jesse Hills
:author_twitter: @jesserockz
.. imgtable::
:columns: 4
XL9535 I/O Expander, components/xl9535, xl9535.svg
Zio Ultrasonic Sensor, components/sensor/zio_ultrasonic, zio_ultrasonic.jpg
Alpha3, components/sensor/alpha3, alpha3.jpg
PCF8563 RTC, components/time/pcf8563, clock-outline.svg, dark-invert
TT21100, components/touchscreen/tt21100, esp32-s3-korvo-2-lcd.png
Grove TB6612FNG, components/grove_tb6612fng, motor.png
ATM90E26, components/sensor/atm90e26, atm90e26.jpg
Duty Time, components/sensor/duty_time, timer-play-outline.svg, dark-invert
Full list of changes
--------------------
New Components
^^^^^^^^^^^^^^
- XL9535 I/O Expander :esphomepr:`4899` by :ghuser:`mreditor97` (new-integration)
- Add Zio Ultrasonic Distance Sensor Component :esphomepr:`5059` by :ghuser:`kahrendt` (new-integration)
- Add Alpha3 pump component :esphomepr:`3787` by :ghuser:`jan-hofmeier` (new-integration)
- RTC implementation of pcf8563 :esphomepr:`4998` by :ghuser:`KoenBreeman` (new-integration)
- Add TT21100 touchscreen component :esphomepr:`4793` by :ghuser:`kroimon` (new-integration)
- Add support for Grove tb6612 fng :esphomepr:`4797` by :ghuser:`max246` (new-integration)
- Add support for ATM90E26 :esphomepr:`4366` by :ghuser:`danieltwagner` (new-integration)
- New 'Duty Time' sensor component :esphomepr:`5069` by :ghuser:`dudanov` (new-integration)
Breaking Changes
^^^^^^^^^^^^^^^^
- display: add `BaseFont` and introduce `Font::draw` methods :esphomepr:`4963` by :ghuser:`ayufan` (breaking-change)
All changes
^^^^^^^^^^^
- Upgraded Haier climate component implementation :esphomepr:`4521` by :ghuser:`paveldn`
- display: add `BaseFont` and introduce `Font::draw` methods :esphomepr:`4963` by :ghuser:`ayufan` (breaking-change)
- display/font: optimise font rendering by about 25% :esphomepr:`4956` by :ghuser:`ayufan`
- display: move `Rect` into `rect.cpp/.h` :esphomepr:`4957` by :ghuser:`ayufan`
- Bump pytest from 7.3.1 to 7.3.2 :esphomepr:`4936` by :ghuser:`dependabot[bot]`
- Add read/write for 16bit registers :esphomepr:`4844` by :ghuser:`CarsonF`
- XL9535 I/O Expander :esphomepr:`4899` by :ghuser:`mreditor97` (new-integration)
- Fix python venv restoring :esphomepr:`4965` by :ghuser:`jesserockz`
- Preprocess away unused code when IPv6 is disabled :esphomepr:`4973` by :ghuser:`HeMan`
- Bump aioesphomeapi from 14.0.0 to 14.1.0 :esphomepr:`4972` by :ghuser:`dependabot[bot]`
- Add actions to animation :esphomepr:`4959` by :ghuser:`guillempages`
- Bump zeroconf from 0.63.0 to 0.69.0 :esphomepr:`4970` by :ghuser:`dependabot[bot]`
- mqtt: add ESP-IDF >= 5.0 support :esphomepr:`4854` by :ghuser:`stintel`
- display: move `Image`, `Font` and `Animation` code into components :esphomepr:`4967` by :ghuser:`ayufan`
- support empty schemas and one platform components :esphomepr:`4999` by :ghuser:`glmnet`
- update dsmr to 0.7 :esphomepr:`5011` by :ghuser:`Pvlerick`
- add water delivered to dsmr component :esphomepr:`4237` by :ghuser:`jerome992`
- Update sync workflow :esphomepr:`5017` by :ghuser:`jesserockz`
- Bump aioesphomeapi from 14.1.0 to 15.0.0 :esphomepr:`5012` by :ghuser:`dependabot[bot]`
- Bump pyupgrade from 3.4.0 to 3.7.0 :esphomepr:`4971` by :ghuser:`dependabot[bot]`
- Bump pytest from 7.3.2 to 7.4.0 :esphomepr:`5000` by :ghuser:`dependabot[bot]`
- Attempt to fix script parameters :esphomepr:`4627` by :ghuser:`jesserockz`
- Remove yaml test cache :esphomepr:`5019` by :ghuser:`jesserockz`
- Bump esptool from 4.6 to 4.6.2 :esphomepr:`4949` by :ghuser:`dependabot[bot]`
- Bump pytest-mock from 3.10.0 to 3.11.1 :esphomepr:`4977` by :ghuser:`dependabot[bot]`
- binary_sensor removed unused filter :esphomepr:`5039` by :ghuser:`dudanov`
- binary_sensor filters templatable delays :esphomepr:`5029` by :ghuser:`dudanov`
- Improve the gamma settings for the S3-Box-lite display :esphomepr:`5046` by :ghuser:`guillempages`
- Prepare ethernet to work with esp idf 5.0 :esphomepr:`5037` by :ghuser:`HeMan`
- Prepare debug and logger component to work with idf 5.0 :esphomepr:`5036` by :ghuser:`HeMan`
- Mopeka std fixes :esphomepr:`5041` by :ghuser:`Fabian-Schmidt`
- Adjust signature for on_disconnect :esphomepr:`5009` by :ghuser:`bdraco`
- Log component long time message at warning level :esphomepr:`5048` by :ghuser:`jesserockz`
- Log start of i2c setup :esphomepr:`5049` by :ghuser:`jesserockz`
- Initial debug component support for rp2040 :esphomepr:`5056` by :ghuser:`HeMan`
- Fix when idf component has broken symlinks :esphomepr:`5058` by :ghuser:`jesserockz`
- Some tests wasn't running (locally) :esphomepr:`5050` by :ghuser:`HeMan`
- [ILI9xxx] Add ili9488_a (alternative gamma configuration for ILI9488) :esphomepr:`5027` by :ghuser:`lnicolas83`
- [ili9xxx] Allow config of spi data rate. :esphomepr:`4701` by :ghuser:`Fabian-Schmidt`
- Make scheduler debuging work with idf >= 5 :esphomepr:`5052` by :ghuser:`HeMan`
- Adds 1.54" e-ink display (gdew0154m09) support to waveshare_epaper component :esphomepr:`4939` by :ghuser:`tobiasoort`
- display: split `DisplayBuffer` and `Display` :esphomepr:`5001` by :ghuser:`ayufan`
- Fixed ili9xxx_display update() method :esphomepr:`5013` by :ghuser:`nielsnl68`
- [Ethernet] ksz8081rna support :esphomepr:`4739` by :ghuser:`Fabian-Schmidt`
- Improve BME680 BSEC sensor device classes :esphomepr:`4859` by :ghuser:`trvrnrth`
- Update RP2040 Aruino framwork and platform to latest :esphomepr:`5025` by :ghuser:`HeMan`
- Allow pillow versions over 10 :esphomepr:`5071` by :ghuser:`HeMan`
- display: Rename `display.DisplayBufferRef` to `display.DisplayRef` used by lambda :esphomepr:`5002` by :ghuser:`ayufan`
- Add Zio Ultrasonic Distance Sensor Component :esphomepr:`5059` by :ghuser:`kahrendt` (new-integration)
- Add Alpha3 pump component :esphomepr:`3787` by :ghuser:`jan-hofmeier` (new-integration)
- RTC implementation of pcf8563 :esphomepr:`4998` by :ghuser:`KoenBreeman` (new-integration)
- web server esp idf suppport :esphomepr:`3500` by :ghuser:`dentra` (new-integration)
- Add TT21100 touchscreen component :esphomepr:`4793` by :ghuser:`kroimon` (new-integration)
- tuya_light: fix float->int conversion while setting color temperature :esphomepr:`5067` by :ghuser:`kswt`
- Fix typo in mpu6050.cpp :esphomepr:`5086` by :ghuser:`stefanklug`
- airthings_wave: Battery level reporting :esphomepr:`4979` by :ghuser:`kpfleming`
- Add support for Grove tb6612 fng :esphomepr:`4797` by :ghuser:`max246` (new-integration)
- Add MCP2515 12MHz xtal support :esphomepr:`5089` by :ghuser:`clydebarrow`
- Correct message for standard transmission. :esphomepr:`5088` by :ghuser:`clydebarrow`
- Restrict pillow to versions before 10.0.0 :esphomepr:`5090` by :ghuser:`jesserockz`
- Bump esphome-dashboard to 20230711.0 :esphomepr:`5085` by :ghuser:`jesserockz`
- added uart final validate data bits :esphomepr:`5079` by :ghuser:`dudanov`
- Add support for ATM90E26 :esphomepr:`4366` by :ghuser:`danieltwagner` (new-integration)
- Grove amend name :esphomepr:`5093` by :ghuser:`max246`
- Fixing colon for tm1637 display if inverted set true :esphomepr:`5072` by :ghuser:`paveldn`
- Fix use of optional<T> :esphomepr:`5091` by :ghuser:`dudanov`
- New 'Duty Time' sensor component :esphomepr:`5069` by :ghuser:`dudanov` (new-integration)
- Fix PIDController::in_deadband() to give correct result when error is zero :esphomepr:`5078` by :ghuser:`lewissbaker`
- Edit error message for pillow install to add version restrictions :esphomepr:`5094` by :ghuser:`jesserockz`
Past Changelogs
---------------
- :doc:`2023.6.0`
- :doc:`2023.5.0`
- :doc:`2023.4.0`
- :doc:`2023.3.0`
- :doc:`2023.2.0`
- :doc:`2022.12.0`
- :doc:`2022.11.0`
- :doc:`2022.10.0`
- :doc:`2022.9.0`
- :doc:`2022.8.0`
- :doc:`2022.6.0`
- :doc:`2022.5.0`
- :doc:`2022.4.0`
- :doc:`2022.3.0`
- :doc:`2022.2.0`
- :doc:`2022.1.0`
- :doc:`2021.12.0`
- :doc:`2021.11.0`
- :doc:`2021.10.0`
- :doc:`2021.9.0`
- :doc:`2021.8.0`
- :doc:`v1.20.0`
- :doc:`v1.19.0`
- :doc:`v1.18.0`
- :doc:`v1.17.0`
- :doc:`v1.16.0`
- :doc:`v1.15.0`
- :doc:`v1.14.0`
- :doc:`v1.13.0`
- :doc:`v1.12.0`
- :doc:`v1.11.0`
- :doc:`v1.10.0`
- :doc:`v1.9.0`
- :doc:`v1.8.0`
- :doc:`v1.7.0`

View File

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

View File

@ -94,7 +94,11 @@ of these entries matters!)
- invert:
- delayed_on: 100ms
- delayed_off: 100ms
- delayed_on_off: 100ms
# Templated, delays for 1s (1000ms) only if a reed switch is active
- delayed_on_off: !lambda "if (id(reed_switch).state) return 1000; else return 0;"
- delayed_on_off:
time_on: 10s
time_off: !lambda "if (id(reed_switch).state) return 1000; else return 0;"
- autorepeat:
- delay: 1s
time_off: 100ms
@ -117,26 +121,64 @@ Simple filter that just inverts every value from the binary sensor.
``delayed_on``
**************
(**Required**, :ref:`config-time`): When a signal ON is received, wait for the specified time period until publishing
an ON state. If an OFF value is received while waiting, the ON action is discarded. Or in other words:
(**Required**, time, :ref:`templatable <config-templatable>`): When a signal ON is received,
wait for the specified time period until publishing an ON state. If an OFF value is received
while waiting, the ON action is discarded. Or in other words:
Only send an ON value if the binary sensor has stayed ON for at least the specified time period.
When using a lambda call, you should return the delay value in milliseconds.
**Useful for debouncing push buttons**.
``delayed_off``
***************
(**Required**, :ref:`config-time`): When a signal OFF is received, wait for the specified time period until publishing
an OFF state. If an ON value is received while waiting, the OFF action is discarded. Or in other words:
(**Required**, time, :ref:`templatable <config-templatable>`): When a signal OFF is received,
wait for the specified time period until publishing an OFF state. If an ON value is received
while waiting, the OFF action is discarded. Or in other words:
Only send an OFF value if the binary sensor has stayed OFF for at least the specified time period.
When using a lambda call, you should return the delay value in milliseconds.
**Useful for debouncing push buttons**.
``delayed_on_off``
******************
(**Required**, :ref:`config-time`): Only send an ON or OFF value if the binary sensor has stayed in the same state
for at least the specified time period.
Only send an ON or OFF value if the binary sensor has stayed in the same state for at least the specified time period.
This filter uses two time delays: on and off.
If the delays are equal, then you can configure the filter in short form by passing the time parameter:
.. code-block:: yaml
binary_sensor:
- platform: ...
# ...
filters:
- delayed_on_off: 1s
(**Required**, time, :ref:`templatable <config-templatable>`): ON and OFF delay.
When using a lambda call, you should return the delay value in milliseconds.
**Useful for debouncing binary switches**.
If the delays are different, then you need to pass them as in the example below:
.. code-block:: yaml
binary_sensor:
- platform: ...
# ...
filters:
- delayed_on_off:
time_on: 10s
time_off: 20s
Configuration variables:
- **time_on** (**Required**, time, :ref:`templatable <config-templatable>`): ON delay.
- **time_off** (**Required**, time, :ref:`templatable <config-templatable>`): OFF delay.
When using a lambda call, you should return the delay value in milliseconds.
``autorepeat``
**************

View File

@ -259,7 +259,7 @@ Configuration variables:
- **cs_pin** (**Required**, :ref:`Pin Schema <config-pin_schema>`): Is used to tell the receiving SPI device
when it should listen for data on the SPI bus. Each device has an individual ``CS`` line.
Sometimes also called ``SS``.
- **clock** (*Optional*): One of ``8MHZ``, ``16MHZ`` or ``20MHZ``. Clock crystal used on the MCP2515 device.
- **clock** (*Optional*): One of ``8MHZ``, ``12MHz``, ``16MHZ`` or ``20MHZ``. Clock crystal used on the MCP2515 device.
Defaults to ``8MHZ``.
- **mode** (*Optional*): Operation mode. Default to ``NORMAL``
@ -269,6 +269,10 @@ Configuration variables:
- All other options from :ref:`Canbus <config-canbus>`.
Note that not all combinations of clock and bitrate are supported. An unsupported
combination will not be flagged at compile time, check the runtime log for a message like
``Invalid frequency/bitrate combination`` if you suspect this is an issue.
Wiring options
**************

View File

@ -5,47 +5,11 @@ Haier Climate
:description: Instructions for setting up a Haier climate devices.
:image: air-conditioner.svg
The ``haier`` climate platform creates a Haier climate device.
The component can be used as a replacement of a Haier proprietary WiFi modules such as KZW-W001 and KZW-W002.
This is an implementation of the ESPHome component to control HVAC on the base of the SmartAir2 and hOn Haier protocols (AC that is controlled by the hOn or SmartAir2 application).
This component requires a :ref:`uart` to be setup.
There are two versions of the Haier protocol. The older one is using an application called SmartAir2 and the newer one - an application called hOn. Both protocols are compatible on the transport level but have different commands to control appliances.
.. code-block:: yaml
logger:
baud_rate: 0 #Disable UART logging for ESP8266
uart:
rx_pin: GPIO3
tx_pin: GPIO1
baud_rate: 9600
climate:
platform: haier
name: Haier AC
supported_swing_modes:
- VERTICAL
- HORIZONTAL
- BOTH
Configuration variables:
------------------------
- **id** (*Optional*, :ref:`config-id`): Manually specify the ID used for code generation.
- **name** (**Required**, string): The name of the climate device.
- **update_interval** (*Optional*, :ref:`config-time`): How often device will be polled for status. Defaults to ``5s``.
- **supported_swing_modes** (*Optional*, list): List of supported swing modes. Possible values are: ``VERTICAL``, ``HORIZONTAL``, ``BOTH``.
- All other options from :ref:`Climate <config-climate>`.
Hardware setup
--------------
Most units will have a dedicated USB-A port for Haier WiFi module.
The physical USB port is in fact UART and does not "speak" USB protocol.
It uses four USB pins as 5V, GND, RX, TX.
You can use spare male USB cable to connect esphome device directly to the climate appliance.
Other units will not have USB ports, but will still probably have UART exposed somewhere on the main board.
Older Haier models controlled by the SmartAir2 application are using the KZW-W002 module. This module cant be reused, and you need to replace it with an ESP (RPI pico w) module. The USB connector on a board doesnt support the USB protocol. It is a UART port that just uses a USB connector. To connect the ESP board to your AC you can cut a USB type A cable and connect wires to the climate connector.
.. list-table:: Haier UART pinout
:header-rows: 1
@ -75,12 +39,232 @@ Other units will not have USB ports, but will still probably have UART exposed s
:align: center
:width: 70.0%
USB Pinout
KZW-W002 module pinout
Newer Haier models using a module called ESP32-for-Haier. It is an ESP32 single-core board with an ESP32-S0WD chip. In some cases, you can reuse this module and flash it with ESPHome, but some new modules dont support this. They look the same but have encryption enabled.
**Warning!** The new generation of ESP32-Haier devices has encryption enabled, so they can only be flashed with firmware that is signed with a private key. There is no way to make them work with ESPHome, so if you try to do it, the board will get into a boot loop with error ``rst:0x10 (RTCWDT_RTC_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT)`` The only way to recover this board is to flash it with the original image. So before starting your experiments make a backup image.
.. figure:: images/haier_pinout.jpg
:align: center
:width: 70.0%
ESP32-for-Haier UART0 pinout
Also, you can use any other ESP32, ESP8266 or a RPI pico W board. In this case, you will need to cut the original wire or make a connector yourself (the board has a JST SM04B-GHS-TB connector)
This component requires a :ref:`uart` to be setup.
.. code-block:: yaml
# Example configuration entry
uart:
baud_rate: 9600
tx_pin: 17
rx_pin: 16
id: ac_port
climate:
- platform: haier
id: haier_ac
protocol: hOn
name: Haier AC
uart_id: ac_port
wifi_signal: true
beeper: true
outdoor_temperature:
name: Haier AC outdoor temperature
visual:
min_temperature: 16 °C
max_temperature: 30 °C
temperature_step: 1 °C
supported_modes:
- 'OFF'
- AUTO
- COOL
- HEAT
- DRY
- FAN_ONLY
supported_swing_modes:
- 'OFF'
- VERTICAL
- HORIZONTAL
- BOTH
Configuration variables:
------------------------
- **id** (*Optional*, :ref:`config-id`): Manually specify the ID used for code generation.
- **uart_id** (*Optional*, :ref:`config-id`): ID of the UART port to communicate with AC.
- **protocol** (*Optional*, string): Defines protocol of communication with AC. Possible values: hon or smartair2. Default value is smartair2.
- **name** (**Required**, string): The name of the climate device.
- **wifi_signal** (*Optional*, boolean): If true - send wifi signal level to AC. Supported only by hOn protocol.
- **beeper** (*Optional*, boolean): Can be used to disable beeping on commands from AC. Supported only by hOn protocol.
- **outdoor_temperature** (*Optional*): Temperature sensor for outdoor temperature. Supported only by hOn protocol.
- **name** (**Required**, string): The name of the sensor.
- **id** (*Optional*, :ref:`config-id`): ID of the sensor, can be used for code generation
- All other options from :ref:`Sensor <config-sensor>`.
- **supported_modes** (*Optional*, list): Can be used to disable some of AC modes. Possible values: 'OFF', AUTO, COOL, HEAT, DRY, FAN_ONLY
- **supported_swing_modes** (*Optional*, list): Can be used to disablesome swing modes if your AC does not support it. Possible values: 'OFF', VERTICAL, HORIZONTAL, BOTH
- All other options from :ref:`Climate <config-climate>`.
Automations
-----------
climate.haier.power_on Action
*****************************
This action turns AC power on.
.. code-block:: yaml
on_...:
then:
climate.haier.power_on: device_id
climate.haier.power_off Action
******************************
This action turns AC power off
.. code-block:: yaml
on_...:
then:
climate.haier.power_off: device_id
climate.haier.power_toggle Action
*********************************
This action toggles AC power
.. code-block:: yaml
on_...:
then:
climate.haier.power_toggle: device_id
climate.haier.display_on Action
*******************************
This action turns the AC display on
.. code-block:: yaml
on_...:
then:
climate.haier.display_on: device_id
climate.haier.display_off Action
********************************
This action turns the AC display off
.. code-block:: yaml
on_...:
then:
climate.haier.display_off: device_id
climate.haier.health_on Action
******************************
Turn on health mode (`UV light sterilization <https://www.haierhvac.eu/en/node/1809>`__)
.. code-block:: yaml
on_...:
then:
climate.haier.health_on: device_id
climate.haier.health_off Action
*******************************
Turn off health mode
.. code-block:: yaml
on_...:
then:
climate.haier.health_off: device_id
climate.haier.beeper_on Action
******************************
(supported only by hOn) This action enables beep feedback on every command sent to AC
.. code-block:: yaml
on_...:
then:
climate.haier.beeper_on: device_id
climate.haier.beeper_off Action
*******************************
(supported only by hOn) This action disables beep feedback on every command sent to AC (keep in mind that this will not work for IR remote commands)
.. code-block:: yaml
on_...:
then:
climate.haier.beeper_off: device_id
climate.haier.set_vertical_airflow Action
*****************************************
(supported only by hOn) Set direction for vertical airflow if the vertical swing is disabled. Possible values: Health_Up, Max_Up, Up, Center, Down, Health_Down.
.. code-block:: yaml
on_...:
then:
- climate.haier.set_vertical_airflow:
id: device_id
vertical_airflow: Up
climate.haier.set_horizontal_airflow Action
*******************************************
(supported only by hOn) Set direction for horizontal airflow if the horizontal swing is disabled. Possible values: Max_Left, Left, Center, Right, Max_Right.
.. code-block:: yaml
on_...:
then:
- climate.haier.set_horizontal_airflow:
id: device_id
vertical_airflow: Right
climate.haier.start_self_cleaning Action
****************************************
(supported only by hOn) Start `self-cleaning <https://www.haier.com/in/blogs/beat-the-summer-heat-with-haier-self-cleaning-ac.shtml>`__
.. code-block:: yaml
on_...:
then:
- climate.haier.start_self_cleaning: device_id
climate.haier.start_steri_cleaning Action
*****************************************
(supported only by hOn) Start 56°C steri-cleaning
.. code-block:: yaml
on_...:
then:
- climate.haier.start_steri_cleaning: device_id
See Also
--------
- `esphaier <https://github.com/MiguelAngelLV/esphaier>`__
- `haier-esphome <https://github.com/paveldn/haier-esphome>`__
- :doc:`/components/climate/index`
- :apiref:`haier/climate/haier.h`
- :ghedit:`Edit`

Binary file not shown.

After

Width:  |  Height:  |  Size: 414 KiB

View File

@ -16,6 +16,7 @@ With this display driver you can control the following displays:
- ILI9481
- ILI9486
- ILI9488
- ILI9488_A (alternative gamma configuration for ILI9488)
- M5STACK
- S3BOX
- S3BOX_LITE
@ -62,7 +63,7 @@ Configuration variables:
- **model** (**Required**): The model of the display. Options are:
- ``M5STACK``, ``TFT 2.4``, ``TFT 2.4R``, ``S3BOX``, ``S3BOX_LITE``
- ``ILI9341``, ``ILI9342``, ``ILI9481``, ``ILI9486``, ``ILI9488``, ``ST7796``
- ``ILI9341``, ``ILI9342``, ``ILI9481``, ``ILI9486``, ``ILI9488``, ``ILI9488_A`` (alternative gamma configuration for ILI9488), ``ST7796``
.. note:: According to its documentation, the ESP32 S3 Box Lite has an ST7789V display driver. We've found, however, that it works with the ILIxxxx component here, instead. This could change in the future.
@ -84,6 +85,7 @@ Configuration variables:
- ``IMAGE_ADAPTIVE``
- **color_palette_images** (*Optional*): A list of image files that will be used to generate the color pallet for the display. This should only be used in conjunction with ``-color_palette: IMAGE_ADAPTIVE`` above. The images will be analysed at compile time and a custom color pallet will be created based on the most commonly occuring colors. A typical setting would be a sample image that represented the fully populated display. This can significantly improve the quality of displayed images. Note that these images are not stored on the ESP device, just the 256byte color pallet created from them.
- **dimensions** (*Optional*): Dimensions of the screen with WIDTHxHEIGHT. Usually not needed since ``model:`` has good defaults.
- **data_rate** (*Optional*): Set the data rate of the SPI interface to the display. One of ``80MHz``, ``40MHz`` (default), ``20MHz``, ``10MHz``, ``5MHz``, ``2MHz``, ``1MHz``, ``200kHz``, ``75kHz`` or ``1kHz``. If you have multiple ILI9xxx displays they must all use the same **data_rate**.
Configuration examples
**********************

View File

@ -784,6 +784,8 @@ This can be combined with all Lambdas:
// Draw the animation my_animation at position [x=0,y=0]
it.image(0, 0, id(my_animation), COLOR_ON, COLOR_OFF);
Additionally, you can use the ``animation.next_frame``, ``animation.prev_frame`` or ``animation.set_frame`` actions.
.. note::
To draw the next animation independent of Display draw cycle use an interval:
@ -793,8 +795,7 @@ This can be combined with all Lambdas:
interval:
- interval: 5s
then:
lambda: |-
id(my_animation).next_frame();
animation.next_frame: my_animation
Configuration variables:
@ -823,6 +824,22 @@ Configuration variables:
- **end_frame** (*Optional*, int): The last frame to show in the loop; when this frame is reached it will loop back to ``start_frame``. Defaults to the last frame in the animation.
- **repeat** (*Optional*, int): Specifies how many times the loop will run. When the count is reached, the animation will continue with the next frame after ``end_frame``, or restart from the beginning if ``end_frame`` was the last frame. Defaults to "loop forever".
Actions:
^^^^^^^^
- **animation.next_frame**: Moves the animation to the next frame. This is equivalent to the ``id(my_animation).next_frame();`` lambda call.
- **id** (**Required**, :ref:`config-id`): The ID of the animation to animate.
- **animation.prev_frame**: Moves the animation to the previous frame. This is equivalent to the ``id(my_animation).prev_frame();`` lambda call.
- **id** (**Required**, :ref:`config-id`): The ID of the animation to animate.
- **animation.set_frame**: Moves the animation to a specific frame. This is equivalent to the ``id(my_animation).set_frame(frame);`` lambda call.
- **id** (**Required**, :ref:`config-id`): The ID of the animation to animate.
- **frame** (**Required**, int): The frame index to show next.
.. _display-pages:
Display Pages

View File

@ -7,8 +7,12 @@ Waveshare E-Paper Display
The ``waveshare_epaper`` display platform allows you to use
some E-Paper displays sold by `Waveshare <https://www.waveshare.com/product/displays/e-paper.htm>`__
with ESPHome. The 2.13" `TTGO module <https://github.com/lewisxhe/TTGO-EPaper-Series>`__ with an ESP32 on the board is supported as well.
Depending on your specific revision of the board you might need to try out the ``-b73`` or ``-b1`` version (see below).
with ESPHome. The 2.13" `TTGO module <https://github.com/lewisxhe/TTGO-EPaper-Series>`__ with an ESP32 on the board
is supported as well. Depending on your specific revision of the board you might need to try out the ``-b73`` or ``-b1``
version (see below).
The 1.54" `Good Display gdew0154m09 <https://www.good-display.com/product/206.html>`__
as used in the `M5Stack Core Ink <https://shop.m5stack.com/products/m5stack-esp32-core-ink-development-kit1-54-elnk-display>`__
is also supported.
Similar modules sold by other vendors might also work but not have been tested yet. Currently only
single-color E-Ink displays are implemented and of those only a few modules.
@ -99,6 +103,12 @@ Configuration variables:
- ``7.50inV2alt`` (alternative version to the above ``7.50inV2``)
- ``7.50in-hd-b`` - Can't use with an ESP8266 as it runs out of RAM
- ``gdey029t94`` - GooDisplay GDEY029T94, as used on the AdaFruit MagTag
- ``1.54in-m5coreink-m09`` - GoodDisplay gdew0154m09, as used in the M5Stack Core Ink
.. warning::
The BUSY pin on the gdew0154m09 must be inverted to prevent permanent display damage. Set the pin to
``inverted: true`` in the config.
- **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.

View File

@ -41,6 +41,7 @@ Configuration variables:
- ``IP101``
- ``JL1101``
- ``KSZ8081``
- ``KSZ8081RNA``
- **mdc_pin** (**Required**, :ref:`config-pin`): The MDC pin of the board.
Usually this is ``GPIO23``.

View File

@ -0,0 +1,133 @@
Grove TB6612FNG Motor Drive
===========================
.. seo::
:description: Instructions for setting up Grove TB6612FNG Motor Driver in ESPHome.
:image: grove_tb6612fng.jpg
The Grove TBB6612FNG a runs over I²C bus and has the capability to control DC and Stepper motors.
At the current stage of implementation only DC motor is implemented.
.. figure:: images/grove_tb6612fng.jpg
:align: center
:width: 50.0%
.. code-block:: yaml
# Example configuration grove motor
grove_tb6612fng:
id: test_motor
name: motor_outside
address: 0x14
# Example switch trigger
switch:
- platform: template
name: open_vent
id: open_vent
optimistic: True
on_turn_on:
then:
- grove_tb6612fng.run:
channel: 1
speed: 255
direction: BACKWARD
id: test_motor
- delay: 10s
- switch.turn_on: stop_motor
- switch.turn_off: open_vent
Configuration variables:
************************
- **id** (**Required**, :ref:`config-id`): The id to use for this TB6612FNG component.
- **address** (*Optional*, int): The I²C address of the driver.
Defaults to ``0x14``.
- **name** (*Required*, boolean): The name of the component
.. grove_tb6612fng.run:
``grove_tb6612fng.run`` Action
------------------------------------
Set the motor to spin by defining the direction and speed of the rotation, speed is a range from 0 to 255
.. code-block:: yaml
on_...:
then:
- grove_tb6612fng.run:
channel: 1
speed: 255
direction: BACKWARD
id: test_motor
.. grove_tb6612fng.stop:
``grove_tb6612fng.stop`` Action
-------------------------------------
Set the motor to stop motion but wont stop to spin in case there is a force pulling down, you would want to use break action if this is your case
.. code-block:: yaml
on_...:
then:
- grove_tb6612fng.stop:
channel: 1
.. grove_tb6612fng.break:
``grove_tb6612fng.break`` Action
--------------------------------------
Set the motor channel to be on break mode which it ensure the wheel wont spin even if forced or pushed
.. code-block:: yaml
on_...:
then:
- grove_tb6612fng.break:
channel: 1
id: test_motor
.. grove_tb6612fng.standby:
``grove_tb6612fng.standby`` Action
----------------------------------
Set the board to be on standby when is not used for a long time which reduces power consumptions and any jerking motion when stationary
.. code-block:: yaml
on_...:
then:
- grove_tb6612fng.standby
id: test_motor
.. grove_tb6612fng.no_standby:
``grove_tb6612fng.no_standby`` Action
-------------------------------------
Set the board to be awake, every esphome is restarted the default mode is set to standby to ensure the motor wont spin accidentally
.. code-block:: yaml
on_...:
then:
- grove_tb6612fng.no_standby
id: test_motor
See Also
--------
- :ref:`i2c`
- :doc:`switch/gpio`
- :ghedit:`Edit`

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

View File

@ -55,6 +55,7 @@ Configuration example:
- platform: airthings_wave_plus
ble_client_id: airthings01
update_interval: 5min # default
battery_update_interval: 24h # default
temperature:
name: "WavePlus Temperature"
radon:
@ -69,6 +70,8 @@ Configuration example:
name: "WavePlus CO2"
tvoc:
name: "WavePlus VOC"
battery_voltage:
name: "WavePlus Battery Voltage"
ble_client:
- mac_address: 01:02:03:04:05:06
@ -93,6 +96,7 @@ Configuration example:
- platform: airthings_wave_mini
ble_client_id: airthingsmini
update_interval: 5min # default
battery_update_interval: 24h # default
temperature:
name: "WaveMini Temperature"
pressure:
@ -101,6 +105,8 @@ Configuration example:
name: "WaveMini Humidity"
tvoc:
name: "WaveMini VOC"
battery_voltage:
name: "WaveMini Battery Voltage"
ble_client:
- mac_address: 01:02:03:04:05:06
@ -111,3 +117,66 @@ Configuration example:
.. note::
The sensor uses active polling of devices every 5 minutes as per the device reported internal refresh timeout.
.. note::
Battery-voltage reporting defaults to once every 24 hours in order
to reduce BLE traffic (obtaining the battery voltage requires quite
a few BLE commands/responses); if you wish to have it reported
more frequently configure the ``battery_update_interval``. The main
sensor ``update_interval`` controls the overall polling frequency
so setting the interval for the battery voltage to a lower value
will result in the battery voltage being reported once per polling
interval.
Battery Level Reporting
***********************
If you wish to have the 'percentage of battery life remaining'
reported as a sensor, you can make use of the :ref:`copy-sensor`
integration.
The examples below are based on standard alkaline-chemistry batteries;
if you use other types of batteries you may need to adjust the
reference voltages to obtain a proper 0-100% scale. The voltage
references were chosen to closely match the 0-100% range displayed by
the AirThings mobile app.
.. code-block:: yaml
sensor:
- platform: airthings_wave_mini
ble_client_id: airthingsmini
battery_voltage:
id: bv
name: "WaveMini Battery Voltage"
- platform: copy
source_id: bv
name: "WaveMini Battery Level"
unit_of_measurement: percent
device_class: battery
accuracy_decimals: 0
filters:
- calibrate_linear:
- 2.7 -> 0
- 4.5 -> 100
.. code-block:: yaml
sensor:
- platform: airthings_wave_plus
ble_client_id: airthings01
battery_voltage:
id: bv
name: "WavePlus Battery Voltage"
- platform: copy
source_id: bv
name: "WavePlus Battery Level"
unit_of_measurement: percent
device_class: battery
accuracy_decimals: 0
filters:
- calibrate_linear:
- 2.2 -> 0
- 3.1 -> 100

View File

@ -0,0 +1,96 @@
Grundfos Alpha3
===============
.. seo::
:description: Instructions for monitoring a Grundfos Alpha3 Model B circulator pump.
:image: alpha3.jpg
The ``alpha3`` component allows you to monitor a Grundfos Alpha3 Model B circulator pump over BLE.
This component supports the following metrics:
- flow rate
- head pressure
- power consumption
- speed (RPM)
This component uses the BLE peripheral on an ESP32, so you also need to enable
this component. Please see the :doc:`/components/ble_client` docs for how to discover the MAC
address of your Alpha3 pump, or you can find the list of paired MAC addresses in
the list of paried Bluetooth devices on your smartphone after using the GO Remote app.
Configuration entry
-------------------
.. code-block:: yaml
# Example Configuration
esp32_ble_tracker:
ble_client:
- mac_address: xx:xx:xx:xx:xx:xx
id: radiator_pump
sensor:
- platform: alpha3
ble_client_id: radiator_pump
flow:
name: "Radiator Pump Flow"
head:
name: "Radiator Pump Head"
speed:
name: "Radiator Pump Speed"
power:
name: "Radiator Pump Power"
voltage:
name: "Radiator Pump Voltage"
current:
name: "Radiator Pump Current"
Configuration variables:
************************
- **id** (*Optional*, :ref:`config-id`): Manually specify the ID used for code generation.
- **flow** (*Optional*): The estimated volume flow of the medium in ``m³/h``.
All options from :ref:`Sensor <config-sensor>`.
- **head** (*Optional*): The estimated head (preasure difference generated by the pump) in ``m``.
All options from :ref:`Sensor <config-sensor>`.
- **speed** (*Optional*): the speed of the pump rotor in ``RPM``.
All options from :ref:`Sensor <config-sensor>`.
- **power** (*Optional*): The power consumption of the pump in ``W``.
All options from :ref:`Sensor <config-sensor>`.
- **voltage** (*Optional*): Voltage in ``V``.
All options from :ref:`Sensor <config-sensor>`.
- **current** (*Optional*): Current in ``A``.
All options from :ref:`Sensor <config-sensor>`
Notes:
-------------
.. warning::
Older pumps like the Alpha2 and Alpha3 Model A are not compatible, as they don't have Bluetooth integrated.
The Alpha Reader is using a different protocol, so it won't work to connect your Alpha2 with this component.
.. note::
The ESP needs to be paired with the pump to read the sensors. If the devices are not paried the wireless indicator on the pump will turn on and off again.
For the initial pairing you have to press the 'Connectivity button' (Wireless symbol) on the pump.
After the initial pairing the ESP should connect automatically when the pump turns on. When the ESP is conected the blue wireless indicator should be constantly lit.
.. note::
The pump can only be connected to one device at a time. If you want to use the GO Remote App, you have to first turn the ESP off.
See Also
--------
- :doc:`/components/ble_client`
- :apiref:`alpha3/alpha3.h`
- :ghedit:`Edit`

View File

@ -0,0 +1,158 @@
ATM90E26 Power Sensor
=====================
.. seo::
:description: Instructions for setting up ATM90E26 energy metering sensors
:image: atm90e26.jpg
:keywords: ATM90E26, Single-Phase High-Performance Wide-SpanEnergy Metering IC, Single Phase Energy Meter
The ``atm90e26`` sensor platform allows you to use your ATM90E26 voltage/current and power sensors
(`datasheet <https://ww1.microchip.com/downloads/en/DeviceDoc/Atmel-46002-SE-M90E26-Datasheet.pdf>`__) with
ESPHome. This sensor is found in the `DitroniX GTEM ESP32 <https://ditronix.net/wiki/gtem-esp32-atm90e26-sdk-v1-specification/>`__ energy meter and other devices.
Communication with the device is done via an :ref:`SPI bus <spi>`, so you need to have an ``spi:`` entry in your configuration
with both ``mosi_pin`` and ``miso_pin`` set.
The ATM90E26 IC measures a single phase's voltage (using a transformer) and current (using a shunt or CT clamp)
and additionally provides active, reactive, and apparent power, frequency, power factor and phase angle measurements.
Configuration variables:
------------------------
- **cs_pin** (**Required**, :ref:`Pin Schema <config-pin_schema>`): The pin CS is connected to. For the 6 channel meter main board, this will always be 5 and 4. For the add-on boards a jumper can be selected for each CS pin, but default to 0 and 16.
- **line_frequency** (**Required**, string): The AC line frequency of the supply voltage. One of ``50Hz``, ``60Hz``.
- **meter_constant** (**Required**, float): The number of pulses per kWh. The ATM90E26 internally works based on pulses and this value converts a pulse into Wh, which are emitted as `forward_active_energy` etc. Matching it against an existing meter is useful in that it allows visual confirmation for some devices that blink an LED for each pulse. Common values are 1000 pulses/kWh, 1666.66 pulses/kWh, or 3200 pulses/kWh. See also **gain_metering** which determines after how much energy a pulse is emitted.
- **voltage** (*Optional*): Use the voltage value of this phase in V (RMS).
All options from :ref:`Sensor <config-sensor>`.
- **current** (*Optional*): Use the current value of this phase in amperes. All options from
:ref:`Sensor <config-sensor>`.
- **power** (*Optional*): Use the power value on this phase in watts. All options from
:ref:`Sensor <config-sensor>`.
- **reactive_power** (*Optional*): Use the reactive power value on this phase. All options from
:ref:`Sensor <config-sensor>`.
- **power_factor** (*Optional*): Use the power factor value on this phase. All options from
:ref:`Sensor <config-sensor>`.
- **forward_active_energy** (*Optional*): Use the forward active energy value on this phase in watt-hours.
All options from :ref:`Sensor <config-sensor>`.
- **reverse_active_energy** (*Optional*): Use the reverse active energy value on this phase in watt-hours.
All options from :ref:`Sensor <config-sensor>`.
- **frequency** (*Optional*): Use the frequency value calculated by the meter. All options from
:ref:`Sensor <config-sensor>`.
- **pl_const** (*Optional*, int): A constant derived from the physical characteristics of your measurement setup. See the Calibration section.
Defaults to ``1429876``.
- **gain_metering** (*Optional*, int): This value determines how quickly internal energy registers accumulate and hence defines the value of a "pulse". Matching it against an existing meter is useful in that it allows visual confirmation for some devices that blink an LED for each pulse. See also the **meter_constant**.
Defaults to ``7481``.
- **gain_voltage** (*Optional*, int): Voltage gain to scale the low voltage AC power back to household mains feed.
Defaults to ``26400``.
- **gain_ct** (*Optional*, int): CT clamp calibration value.
Defaults to ``31251``.
- **gain_pga** (*Optional*, string): The gain for the CT clamp. Valid values are ``1X``, ``4X``, ``8X``, ``16X``, and ``24X``.
Defaults to ``1X``.
- **update_interval** (*Optional*, :ref:`config-time`): The interval to check the sensor. Defaults to ``60s``.
- **spi_id** (*Optional*, :ref:`config-id`): Manually specify the ID of the :ref:`SPI Component <spi>` if you want
to use multiple SPI buses.
Calibration
-----------
This sensor needs calibration to show correct values. In order to calibrate your AC-AC transformer and CT clamp
it is easiest to start with the default values and then adjust them as necessary while measuring a known current.
For a more accurate calibration you can use a Kill-A-Watt or similar meter.
**Voltage** is adjusted linearly to bring the observed value in agreement with a reference measurement. If your
Kill-A-Watt shows 241 Volts and the ATM90E26 shows 234 Volts using the default `gain_voltage` of 26400, it would
need to be adjusted to `241 / 234 * 26400 = 27190`.
**Current** is best measured with an ideal load (e.g. a space heater). The process is the same as for voltage, but
you modify the `gain_ct` value instead. For a SCT-013-000 clamp a value of 28621 worked well for me but you should
calibrate your specific clamp. Note that the ATM90E26 can output a **maximum current of 65A**. If you expect to
measure higher current, simply "mis-calibrate" the CT clamp by a factor of e.g. 2 so that the ATM90E26 thinks it is
measuring a lower current (e.g. 10A when 20A are flowing) and multiply the sensor's output by 2.
**PL Constant** is computed using the physical characteristics of the device we use. We compute the constant
as `as 838860800 * gain_pga * <mV at 1A current> * <mV at ref voltage> / (<pulse constant> * <ref voltage>)`.
See Section 3.2.2 in the
`application note <https://ww1.microchip.com/downloads/en/Appnotes/Atmel-46102-SE-M90E26-ApplicationNote.pdf>`__
for additional details. Say we use a SCT-013-000 CT clamp, which has an output of 50mA for 100A input current. Our
burden has a value of 12 Ohm. We therefore expect to measure 6mV per amp of input current. Say our AC-AC
transformer outputs 19.3V at 230V and we use a 100:1 voltage divider in front of the ATM90E26. We would therefore
expect to measure 193 mV at a line voltage of 230V. The resulting PL Constant is, assuming a meter constant of
3200 pulses/kWh (see below): `838860800 * 1 * 6 * 193 / (3200 * 230) = 1319838`.
**Meter Calibration** is completed by matching the ATM90E26's CF1 (active energy) pulse to those of your electricity
meter by adjusting the `gain_metering` value until the pulses match. Next, set the `meter_constant`, which defines
how many pulses make up one kWh of energy. If you are matching an existing meter, typical values may be 3200 pulses/kWh,
1000 pulses/kWh, or for some rotating meters 1666.66 pulses per kWh. If you're not matching against a meter you may
want to calibrate this value to emit 1000 pulses per kWh, or whatever other value is useful for your project.
If your current clamp or voltage transformer aren't well matched to the specific A90E26-based device you're using
it **may be necessary to multiply values**, to stay within the value ranges specified in the
`datasheet <https://ww1.microchip.com/downloads/en/DeviceDoc/Atmel-46002-SE-M90E26-Datasheet.pdf>`__ and
`application note <https://ww1.microchip.com/downloads/en/Appnotes/Atmel-46102-SE-M90E26-ApplicationNote.pdf>`__.
This component will enforce the stated maxima. In the example below, the AC-AC transformer used read 230V line voltage
as 86.6V with default settings. This would imply a `gain_voltage` value of `230 / 86.6 * 26400 = 70115`.
However, the chip's application note says this value must be below 32768. If we divide the `gain_voltage` by 4, we
stay within the specified range, but must then multiply the voltage output as well as the power reading, which are
off by a factor of 4. This is due to the width of registers in the chip and **is not necessary if your components
can be calibrated within the specified range.**
Keeping the calibration values at the top of your yaml might make editing easier.
.. code-block:: yaml
substitutions:
plconst_cal: '1429876' # default: 1429876, compute as 838860800 * (gain_pga * <sampled voltage (mV) at 1Amp current> * <sampled voltage (mV) at reference voltage> / (<pulse constant (e.g. 3200 pulses/kWh)> * <reference voltage, e.g. 230V>))
current_cal: '32801' # default: 31251
voltage_cal: '17528' # default: 26400 - Application note says this should be < 32768, maybe for some internal computation?
metering_cal: '7481' # default: 7481 - Calibrate this to match your meter based on the CF1 (CFx) pulse.
spi:
clk_pin: 18
miso_pin: 19
mosi_pin: 23
sensor:
- platform: atm90e26
cs_pin: 5
voltage:
name: House Voltage
accuracy_decimals: 1
filters:
- multiply: 4
current:
name: House Amps
# The max value for current that the meter can output is 65.535. If you expect to measure current over 65A,
# divide the gain_ct by 2 (120A CT) or 4 (200A CT) and multiply the current and power values by 2 or 4 by uncommenting the filter below
# filters:
# - multiply: 2
power:
name: House Watts
accuracy_decimals: 1
filters:
- multiply: 4
reactive_power:
name: House Reactive Power
power_factor:
name: House Power Factor
accuracy_decimals: 2
forward_active_energy:
name: House Forward Active Energy
reverse_active_energy:
name: House Reverse Active Energy
frequency:
name: House Freq
line_frequency: 50Hz
pl_const: ${plconst_cal}
meter_constant: '3200.0' # My old rotating-disc meter has a meter constant of 1666.66
gain_metering: ${metering_cal}
gain_voltage: ${voltage_cal}
gain_ct: ${current_cal}
gain_pga: 1X
update_interval: '10s'
See Also
--------
- :ref:`sensor-filters`
- :apiref:`atm90e26/atm90e26.h`
- :ghedit:`Edit`

View File

@ -0,0 +1,124 @@
Duty Time
=========
.. seo::
:description: Instructions for setting up a sensor that tracks the duty time of the some object.
:image: timer-play-outline.svg
The ``duty_time`` sensor allows you to track the total duty time of the some object, for example, a light bulb, in seconds.
Able to calculate the last turn-on time when an optional sensor ``last_time`` is included in the configuration.
Supports boolean signal sources: ``binary_sensor`` or ``lambda`` that returns a boolean state of tracked object.
As an alternative to controlling a component in automations, may be used the ``sensor.duty_time.start`` and ``sensor.duty_time.stop`` actions.
.. code-block:: yaml
# Example configuration entry
sensor:
- platform: duty_time
id: my_climate_work_time
name: My Climate Work Time
# Support logical sources (optional): 'binary_sensor'
sensor: my_binary_sensor
# ... EOR 'lambda'
lambda: "return id(my_climate).mode != CLIMATE_MODE_OFF;"
# Restore (optional, default: False)
restore: false
# Sensor for last turn-on time (optional)
last_time:
name: My Climate Last Turn-On Time
Configuration variables:
------------------------
- **sensor** (*Optional*, :ref:`config-id`): The ID of the ``binary_sensor`` to track the duty time. *May not be
used with* ``lambda``.
- **lambda** (*Optional*, :ref:`lambda <config-lambda>`): Lambda that will be called in a loop to get the current
state of the tracked object. *May not be used with* ``sensor``.
- **last_time** (*Optional*): Information of the last switch-on time sensor.
All options from :ref:`Sensor <config-sensor>`.
- **restore** (*Optional*, boolean): Whether to store the intermediate result on the device so that the value can be
restored upon power cycle or reboot.
Warning: this option can wear out your flash. Defaults to ``false``.
- **update_interval** (*Optional*, :ref:`config-time`): The update interval. Defaults to ``60s``.
- **id** (*Optional*, :ref:`config-id`): Set the ID of this sensor for use in lambdas.
- All other options from :ref:`Sensor <config-sensor>`.
Automations
-----------
In addition to all basic :ref:`sensor automations <sensor-automations>`, the component supports the automations below.
.. _sensor-duty_time-start_action:
``sensor.duty_time.start`` Action
*********************************
This action starts/resume time tracking. In lambdas, you may use the ``start()`` method.
.. code-block:: yaml
on_...:
then:
- sensor.duty_time.start: my_climate_work_time
.. _sensor-duty_time-stop_action:
``sensor.duty_time.stop`` Action
********************************
This action suspends time tracking. Causes the sensor to be updated, including the ``last_time`` sensor. In lambdas, you may use the ``stop()`` method.
.. code-block:: yaml
on_...:
then:
- sensor.duty_time.stop: my_climate_work_time
.. _sensor-duty_time-reset_action:
``sensor.duty_time.reset`` Action
*********************************
This action resets the duty time counter. Causes a sensor update. Does not affect the ``last_time`` sensor. In lambdas, you may use the ``reset()`` method.
.. code-block:: yaml
on_...:
then:
- sensor.duty_time.reset: my_climate_work_time
.. _sensor-duty_time-is_running_action:
.. _sensor-duty_time-is_not_running_action:
``sensor.duty_time.is_running`` / ``sensor.duty_time.is_not_running`` Condition
*******************************************************************************
This :ref:`Condition <config-condition>` checks if the ``duty_time`` counter is currently running (or suspended). In lambdas, you may use the ``is_running()`` method.
.. code-block:: yaml
# In some trigger:
on_...:
if:
condition:
# Same syntax for 'is_not_running'
sensor.duty_time.is_running: my_climate_work_time
See Also
--------
- :ref:`config-sensor`
- :ref:`config-lambda`
- :ref:`automation`
- :doc:`/components/binary_sensor/index`
- :apiref:`duty_time/duty_time_sensor.h`
- :ghedit:`Edit`

Binary file not shown.

After

Width:  |  Height:  |  Size: 79 KiB

View File

@ -557,6 +557,8 @@ Fahrenheit.
- lambda: return x * (9.0/5.0) + 32.0;
unit_of_measurement: "°F"
.. _sensor-automations:
Sensor Automation
-----------------

View File

@ -0,0 +1,48 @@
Zio Ultrasonic Distance Sensor
==============================
.. seo::
:description: Instructions for setting up the Zio Ultrasonic Distance sensor.
:image: zio_ultrasonic.jpg
:keywords: ultrasonic, i2c
The Zio Ultrasonic Distance sensor allows you to use your compatible
(`datasheet <https://cdn.sparkfun.com/datasheets/Sensors/Proximity/HCSR04.pdf>`__,
`sparkfun <https://www.sparkfun.com/products/17777>`__)
sensors with ESPHome.
.. figure:: images/zio_ultrasonic.jpg
:align: center
:width: 30.0%
Zio Ultrasonic Distance Sensor.
(Credit: `Sparkfun <https://www.sparkfun.com/products/17777>`__, image cropped and compressed)
.. _Sparkfun: https://www.sparkfun.com/products/17777
The Zio Ultrasonic Distance Sensor is an ultrasonic distance sensor based on the HC-SR04 sensor. Unlike the :doc:`Ultrasonic Distance Sensor component </components/sensor/ultrasonic>`, measurements are read over the I²C bus.
To use the sensor, first set up an :ref:`I²C Bus <i2c>` and connect the sensor to the specified pins.
.. code-block:: yaml
# Example configuration entry
sensor:
- platform: zio_ultrasonic
name: "Distance"
update_interval: 60s
Configuration variables:
------------------------
- **address** (*Optional*, int): Manually specifiy the I²C address of the sensor. Defaults to ``0x00``.
- **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
--------
- :doc:`Ultrasonic Sensor Component </components/sensor/ultrasonic>`
- :ref:`sensor-filters`
- :doc:`template`
- :ghedit:`Edit`

View File

@ -33,7 +33,7 @@ This :ref:`Action <config-action>` triggers a synchronization of the current sys
on_...:
- pcf85063.write_time
# in case you need to specify the DS1307 id
# in case you need to specify the PCF85063 id
- pcf85063.write_time:
id: pcf85063_time

View File

@ -0,0 +1,99 @@
PCF8563 Time Source
====================
You first need to set up the :doc:`I2C </components/i2c>` component.
.. code-block:: yaml
# Example configuration entry
time:
- platform: pcf8563
id: pcf8563_time
Configuration variables
-----------------------
- **address** (*Optional*, int): Manually specify the I²C address of the RTC. Defaults to ``0xA3``.
- All other options from :ref:`base_time_config`.
.. _pcf8563-write_time_action:
``pcf8563.write_time`` Action
------------------------------
This :ref:`Action <config-action>` triggers a synchronization of the current system time to the RTC hardware.
.. note::
PCFe pcf8563 component will *not* write the RTC clock if not triggered *explicitly* by this action.
.. code-block:: yaml
on_...:
- pcf8563.write_time
# in case you need to specify the DS1307 id
- pcf8563.write_time:
id: pcf8563_time
.. _pcf8563-read_time_action:
``pcf8563.read_time`` Action
-----------------------------
This :ref:`Action <config-action>` triggers a synchronization of the current system time from the RTC hardware.
.. note::
The PCF8563 component will automatically read the RTC clock every 15 minutes by default and synchronize the
system clock when a valid timestamp was read from the RTC. (The ``update_interval`` can be changed.)
This action can be used to trigger *additional* synchronizations.
.. code-block:: yaml
on_...:
- pcf8563.read_time
# in case you need to specify the PCF8563 id
- pcf8563.read_time:
id: pcf8563_time
.. _pcf8563-config_example:
Full Configuration Example
--------------------------
In a typical setup, you will have at least one additional time source to synchronize the RTC with. Such an
external time source might not always be available e.g. due to a limited network connection.
In order to have a valid, reliable system time, the system should read the RTC once at start and then try to
synchronize with an external reliable time source.
When a synchronization to another time source was successful, the RTC can be resynchronized.
.. code-block:: yaml
esphome:
on_boot:
then:
# read the RTC time once when the system boots
pcf8563.read_time:
time:
- platform: pcf8563
# repeated synchronization is not necessary unless the external RTC
# is much more accurate than the internal clock
update_interval: never
- platform: homeassistant
# instead try to synchronize via network repeatedly ...
on_time_sync:
then:
# ... and update the RTC when the synchronization was successful
pcf8563.write_time:
See Also
--------
- :ghedit:`Edit`

Binary file not shown.

After

Width:  |  Height:  |  Size: 62 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 51 KiB

View File

@ -81,6 +81,7 @@ See Also
- :doc:`Inkplate 6 Plus </components/display/inkplate6>`
- :doc:`EKTF2232 </components/touchscreen/ektf2232>`
- :doc:`XPT2046 </components/touchscreen/xpt2046>`
- :doc:`TT21100 </components/touchscreen/tt21100>`
- :apiref:`touchscreen/touchscreen.h`
- :apiref:`touchscreen/binary_sensor/touchscreen_binary_sensor.h`
- :ghedit:`Edit`

View File

@ -0,0 +1,85 @@
TT21100 Touch Screen Controller
===============================
.. seo::
:description: Instructions for setting up TT21100 touch screen controller with ESPHome
:image: esp32-s3-korvo-2-lcd.png
:keywords: TT21100, ESP32-S3-BOX, ESP32-S3-Korvo-2-LCD
The ``tt21100`` touchscreen platform allows using the touch screen controllers based on the TT21100 chip with ESPHome.
The :ref:`I²C <i2c>` is required to be set up in your configuration for this touchscreen to work.
This controller is used in the Espressif ESP32-S3-BOX and the ESP32-S3-Korvo-2-LCD extension board for the ESP32-S3-Korvo-2.
.. figure:: images/esp32-s3-box.png
:align: center
:width: 50.0%
TT21100 touchscreen on ESP32-S3-BOX
.. figure:: images/esp32-s3-korvo-2.png
:align: center
:width: 50.0%
TT21100 touchscreen on ESP32-S3-Korvo-2
Base Touchscreen Configuration
------------------------------
.. code-block:: yaml
# Example configuration entry
touchscreen:
platform: tt21100
id: my_touchscreen
interrupt_pin: GPIO3
reset_pin: GPIO48
Configuration variables:
************************
- **id** (*Optional*, :ref:`config-id`): Manually set the ID of this touchscreen.
- **interrupt_pin** (*Required*, :ref:`Pin Schema <config-pin_schema>`): The touch detection pin.
- **reset_pin** (*Optional*, :ref:`Pin Schema <config-pin_schema>`): The reset pin of the controller.
- All other options from :ref:`Touchscreen <config-touchscreen>`.
.. warning::
If the reset pin is shared between the display and TT21100 touchscreen
(as is the case for the ESP32-S3-BOX and the ESP32-S3-Korvo-2-LCD),
only configure the reset pin for the display and remove the **reset_pin** variable for the TT21100 touchscreen.
The display component should be initialized before the touchscreen component, which has then already performed the reset.
Additional Buttons
------------------
In addition to touch areas on the screen configured through the :ref:`Touchscreen <config-touchscreen>` component,
the TT21100 supports up to four buttons located outside of the normal touchscreen area.
On the ESP32-S3-BOX and the ESP32-S3-Korvo-2-LCD, the red circle below the display is such a button.
A binary sensor can be configured to react to touching these buttons.
.. code-block:: yaml
# Example configuration entry
binary_sensor:
- platform: tt21100
name: "Home"
index: 0
Configuration variables:
************************
- **tt21100_id** (*Optional*, :ref:`config-id`): Manually specify the ID of the touchscreen.
- **index** (**Required**, int): Internal index of the touch button, between 0 and 3.
- All other options from :ref:`Binary Sensor <config-binary_sensor>`.
See Also
--------
- :ref:`Binary Sensor Filters <binary_sensor-filters>`
- :apiref:`tt21100/touchscreen/tt21100.h`
- :apiref:`tt21100/binary_sensor/tt21100_button.h`
- :ghedit:`Edit`

67
components/xl9535.rst Normal file
View File

@ -0,0 +1,67 @@
XL9535 I/O Expander
====================
.. seo::
:description: Instructions for setting up XL9535 digital port expanders in ESPHome.
:image: xl9535.svg
The XL9535 component allows you to use **XL9535** I/O expander in ESPHome.
It uses :ref:`I²C Bus <i2c>` for communication.
Once configured, you can use any of the **16** available pins for your projects.
Within ESPHome they emulate a real internal GPIO pin
and can therefore be used with many of ESPHome's components such as the GPIO
Binary Sensor or GPIO Switch.
.. note::
This I/O Expander chip is used in the *Lilygo T-RGB 2.1" Round Display*
.. code-block:: yaml
# Example configuration entry
xl9535:
- id: xl9535_hub
address: 0x20
# Individual outputs
switch:
- platform: gpio
name: XL9535 Pin 0
pin:
xl9535: xl9535_hub
number: 0
mode:
output: true
inverted: false
Configuration variables:
************************
- **id** (**Required**, :ref:`config-id`): The id to use for this ``xl9535`` component.
- **address** (*Optional*, int): The I²C address of the driver.
Defaults to ``0x20``.
Pin configuration variables:
****************************
- **xl9535** (**Required**, :ref:`config-id`): The id of the ``xl9535`` component of the pin.
- **number** (**Required**, int): The pin number.
- **inverted** (*Optional*, boolean): If all read and written values
should be treated as inverted. Defaults to ``false``.
- **mode** (*Optional*, string): A pin mode to set for the pin at. One of ``INPUT`` or ``OUTPUT``.
See Also
--------
- :ref:`i2c`
- :doc:`switch/gpio`
- :doc:`binary_sensor/gpio`
- `XL9535 datasheet <https://datasheet.lcsc.com/lcsc/2211110930_XINLUDA-XL9535_C561273.pdf>`__
- :apiref:`xl9535/xl9535.h`
- :ghedit:`Edit`

View File

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

View File

@ -286,6 +286,7 @@ Contributors
- `Anthony Uk (@dataway) <https://github.com/dataway>`__
- `Dav-id (@dav-id-org) <https://github.com/dav-id-org>`__
- `DAVe3283 (@DAVe3283) <https://github.com/DAVe3283>`__
- `David Marín (@davefx) <https://github.com/davefx>`__
- `Dave Richer (@davericher) <https://github.com/davericher>`__
- `Dave T (@davet2001) <https://github.com/davet2001>`__
- `Dave Wongillies (@davewongillies) <https://github.com/davewongillies>`__
@ -683,6 +684,7 @@ Contributors
- `Klarstein (@Klarstein) <https://github.com/Klarstein>`__
- `Marcus Klein (@kleini) <https://github.com/kleini>`__
- `KNXBroker (@KNXBroker) <https://github.com/KNXBroker>`__
- `KoenBreeman (@KoenBreeman) <https://github.com/KoenBreeman>`__
- `kokangit (@kokangit) <https://github.com/kokangit>`__
- `konsulten (@konsulten) <https://github.com/konsulten>`__
- `Kevin Pelzel (@kpelzel) <https://github.com/kpelzel>`__
@ -711,6 +713,7 @@ Contributors
- `Benny de Leeuw (@leeuwte) <https://github.com/leeuwte>`__
- `Leonardo La Rocca (@leoli51) <https://github.com/leoli51>`__
- `Leo Winter (@LeoWinterDE) <https://github.com/LeoWinterDE>`__
- `Lewis Baker (@lewissbaker) <https://github.com/lewissbaker>`__
- `Leon Loopik (@Lewn) <https://github.com/Lewn>`__
- `Luca Gugelmann (@lgugelmann) <https://github.com/lgugelmann>`__
- `Lubos Horacek (@lhoracek) <https://github.com/lhoracek>`__
@ -827,7 +830,6 @@ Contributors
- `mmanza (@mmanza) <https://github.com/mmanza>`__
- `mnltake (@mnltake) <https://github.com/mnltake>`__
- `Matt N. (@mnoorenberghe) <https://github.com/mnoorenberghe>`__
- `Michał Obrembski (@mobrembski) <https://github.com/mobrembski>`__
- `moritzj29 (@moritzj29) <https://github.com/moritzj29>`__
- `Chris Laplante (@mostthingsweb) <https://github.com/mostthingsweb>`__
- `MrEditor97 (@mreditor97) <https://github.com/mreditor97>`__
@ -846,7 +848,6 @@ Contributors
- `Igor Scheller (@MyIgel) <https://github.com/MyIgel>`__
- `Mykle (@myklemykle) <https://github.com/myklemykle>`__
- `Mynasru (@Mynasru) <https://github.com/Mynasru>`__
- `Mikhail Zakharov (@mzakharo) <https://github.com/mzakharo>`__
- `Kevin Uhlir (@n0bel) <https://github.com/n0bel>`__
- `N6RDV (@N6RDV) <https://github.com/N6RDV>`__
- `Erik Näsström (@Naesstrom) <https://github.com/Naesstrom>`__
@ -861,7 +862,6 @@ Contributors
- `Bergont Nicolas (@nbergont) <https://github.com/nbergont>`__
- `neilger (@neilger) <https://github.com/neilger>`__
- `Nejc Koncan (@nejc-cc) <https://github.com/nejc-cc>`__
- `Mike Meessen (@netmikey) <https://github.com/netmikey>`__
- `Nicolas Graziano (@ngraziano) <https://github.com/ngraziano>`__
- `nickrout (@nickrout) <https://github.com/nickrout>`__
- `Nick Whyte (@nickw444) <https://github.com/nickw444>`__
@ -919,6 +919,7 @@ Contributors
- `Paul Deen (@PaulAntonDeen) <https://github.com/PaulAntonDeen>`__
- `Paul Monigatti (@paulmonigatti) <https://github.com/paulmonigatti>`__
- `Paul Nicholls (@pauln) <https://github.com/pauln>`__
- `Pavlo Dudnytskyi (@paveldn) <https://github.com/paveldn>`__
- `Bartłomiej Biernacki (@pax0r) <https://github.com/pax0r>`__
- `pcr20 (@pcr20) <https://github.com/pcr20>`__
- `peddamat (@peddamat) <https://github.com/peddamat>`__
@ -1222,4 +1223,4 @@ Contributors
- `Zack Barett (@zsarnett) <https://github.com/zsarnett>`__
- `Christian Zufferey (@zuzu59) <https://github.com/zuzu59>`__
*This page was last updated July 10, 2023.*
*This page was last updated July 13, 2023.*

BIN
images/alpha3.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 30 KiB

BIN
images/atm90e26.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 25 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

BIN
images/grove_tb6612fng.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

BIN
images/motor.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 527 B

View File

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M15 3H9V1H15V3M11 14H13V8H11V14M19 13C19.7 13 20.36 13.13 21 13.35C21 13.23 21 13.12 21 13C21 10.88 20.26 8.93 19.03 7.39L20.45 5.97C20 5.46 19.55 5 19.04 4.56L17.62 6C16.07 4.74 14.12 4 12 4C7.03 4 3 8.03 3 13S7.03 22 12 22C12.59 22 13.16 21.94 13.71 21.83C13.4 21.25 13.18 20.6 13.08 19.91C12.72 19.96 12.37 20 12 20C8.13 20 5 16.87 5 13S8.13 6 12 6 19 9.13 19 13M17 16V22L22 19L17 16Z" /></svg>

After

Width:  |  Height:  |  Size: 466 B

1
images/xl9535.svg Normal file
View File

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="375.31" height="94.488" viewBox="0 0 99.301 25"><path d="M5 0h89.3c2.77 0 5 2.23 5 5v15c0 2.77-2.23 5-5 5H5c-2.77 0-5-2.23-5-5V5c0-2.77 2.23-5 5-5Z" style="fill:#000;fill-opacity:1;stroke-width:.133497;stroke-miterlimit:4;stroke-dasharray:none"/><g aria-label="XL9535" style="font-size:10.5833px;line-height:1.25;letter-spacing:1.08479px;fill:#fffffc;stroke-width:.264583"><path d="m14.766 12.493 5.893 8.173h-4.222l-3.815-5.487-3.748 5.487h-4.2l5.848-8.038-5.554-7.767h4.154l3.635 5.125 3.567-5.125h3.951zM34.772 20.666H23.189V4.86h3.658v12.824h7.925zM42.246 4.59q3.319 0 5.193 2.032 1.874 2.01 1.874 5.803 0 2.687-1.016 4.606-.994 1.919-2.823 2.912-1.828.994-4.222.994-1.264 0-2.415-.271-1.152-.294-1.965-.813l1.355-2.687q1.151.79 2.958.79 2.01 0 3.183-1.174 1.174-1.196 1.264-3.432-1.422 1.423-3.928 1.423-1.513 0-2.755-.61-1.241-.61-1.964-1.716-.722-1.129-.722-2.596 0-1.58.79-2.777t2.145-1.829q1.377-.655 3.048-.655zm.27 7.451q1.197 0 1.942-.655.768-.677.768-1.716 0-1.038-.745-1.693-.722-.655-2.01-.655-1.173 0-1.919.632-.722.633-.722 1.716 0 1.084.722 1.739.746.632 1.965.632zM57.577 10.8q3.342 0 4.922 1.331 1.603 1.332 1.603 3.568 0 1.445-.722 2.641-.723 1.174-2.213 1.897-1.468.7-3.635.7-1.67 0-3.296-.43-1.603-.45-2.732-1.264l1.445-2.8q.903.678 2.077 1.062 1.174.361 2.416.361 1.377 0 2.167-.542.79-.542.79-1.513 0-1.016-.835-1.535-.813-.52-2.845-.52h-4.041l.813-8.895h9.64v2.935H56.54L56.29 10.8ZM73.947 11.296q2.077.339 3.184 1.558 1.106 1.196 1.106 2.98 0 1.377-.723 2.551-.722 1.152-2.212 1.852-1.468.7-3.613.7-1.67 0-3.296-.43-1.603-.45-2.732-1.264l1.422-2.8q.904.678 2.078 1.062 1.196.361 2.438.361 1.377 0 2.168-.52.79-.541.79-1.512 0-1.942-2.958-1.942h-1.67v-2.415l3.25-3.68h-6.728V4.86h11.063v2.37zM86.208 10.8q3.341 0 4.922 1.331 1.603 1.332 1.603 3.568 0 1.445-.723 2.641-.722 1.174-2.212 1.897-1.468.7-3.635.7-1.67 0-3.297-.43-1.603-.45-2.731-1.264l1.445-2.8q.903.678 2.077 1.062 1.174.361 2.415.361 1.378 0 2.168-.542.79-.542.79-1.513 0-1.016-.835-1.535-.813-.52-2.845-.52h-4.041l.812-8.895h9.641v2.935H85.17l-.248 3.003z" style="font-weight:700;font-size:22.5778px;font-family:Montserrat;-inkscape-font-specification:&quot;Montserrat, Bold&quot;"/></g></svg>

After

Width:  |  Height:  |  Size: 2.2 KiB

BIN
images/zio_ultrasonic.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

View File

@ -160,7 +160,6 @@ Core
Sensor Core, components/sensor/index, folder-open.svg, dark-invert
Home Assistant, components/sensor/homeassistant, home-assistant.svg, dark-invert
Integration, components/sensor/integration, sigma.svg, dark-invert
MQTT Subscribe, components/sensor/mqtt_subscribe, mqtt.png
Uptime Sensor, components/sensor/uptime, timer.svg, dark-invert
WiFi Signal Strength, components/sensor/wifi_signal, network-wifi.svg, dark-invert
@ -220,6 +219,7 @@ Bluetooth Low Energy (BLE)
Mopeka Standard Check LP, components/sensor/mopeka_std_check, mopeka_std_check.jpg, tank level
RuuviTag, components/sensor/ruuvitag, ruuvitag.jpg, Temperature & Humidity & Accelerometer
Xiaomi BLE, components/sensor/xiaomi_ble, xiaomi_mijia_logo.jpg, Various
Alpha3, components/sensor/alpha3, alpha3.jpg
Digital Signals
@ -240,6 +240,7 @@ Distance
TOF10120, components/sensor/tof10120, tof10120.jpg, IR optical distance
Ultrasonic Sensor, components/sensor/ultrasonic, ultrasonic.jpg, Acoustic distance
VL53L0x, components/sensor/vl53l0x, vl53l0x.jpg, IR optical distance
Zio Ultrasonic Sensor, components/sensor/zio_ultrasonic, zio_ultrasonic.jpg, Acoustic distance
Electricity
@ -247,6 +248,7 @@ Electricity
.. imgtable::
ADE7953, components/sensor/ade7953, ade7953.svg, Power
ATM90E26, components/sensor/atm90e26, atm90e26.jpg, Voltage & Current & Power
ATM90E32, components/sensor/atm90e32, atm90e32.jpg, Voltage & Current & Power
BL0939, components/sensor/bl0939, bl0939.png, Voltage & Current & Power & Energy
BL0940, components/sensor/bl0940, bl0940.png, Voltage & Current & Power
@ -357,9 +359,11 @@ Miscellaneous
AS3935, components/sensor/as3935, as3935.jpg, Storm lightning
Binary Sensor Map, components/sensor/binary_sensor_map, binary_sensor_map.jpg, Map binary to value
b-parasite, components/sensor/b_parasite, b_parasite.jpg, Moisture & Temperature & Humidity & Light
Duty Time, components/sensor/duty_time, timer-play-outline.svg, dark-invert
EZO sensor circuits, components/sensor/ezo, ezo-ph-circuit.png, (pH)
FS3000, components/sensor/fs3000, fs3000.jpg, Air velocity
Havells Solar, components/sensor/havells_solar, havellsgti5000d_s.jpg, Solar rooftop
Integration, components/sensor/integration, sigma.svg, dark-invert
Growatt Solar, components/sensor/growatt_solar, growatt.jpg, Solar rooftop
Kalman Combinator, components/sensor/kalman_combinator, function.svg, dark-invert
Modbus Sensor, components/sensor/modbus_controller, modbus.png
@ -460,6 +464,7 @@ Touchscreen
Nextion Binary Sensor, components/binary_sensor/nextion, nextion.jpg
Touchscreen, components/touchscreen/index, touch.svg, dark-invert
TT21100, components/touchscreen/tt21100, esp32-s3-korvo-2-lcd.png
XPT2046, components/binary_sensor/xpt2046, xpt2046.jpg
Miscellaneous
@ -577,6 +582,7 @@ Button Components
Factory Reset Button, components/button/factory_reset, restart-alert.svg, dark-invert
Wake-on-LAN, components/button/wake_on_lan, power_settings.svg, dark-invert
Fan Components
--------------
@ -631,6 +637,7 @@ Touchscreen Components
Touchscreen Core, components/touchscreen/index, folder-open.svg, dark-invert
EKTF2232, components/touchscreen/ektf2232, ektf2232.svg, Inkplate 6 Plus
Lilygo T5 4.7", components/touchscreen/lilygo_t5_47, lilygo_t5_47_touch.jpg
TT21100, components/touchscreen/tt21100, esp32-s3-korvo-2-lcd.png
Cover Components
----------------
@ -746,6 +753,7 @@ Time Components
SNTP, components/time/sntp, clock-outline.svg, dark-invert
GPS Time, components/time/gps, crosshairs-gps.svg, dark-invert
DS1307 RTC, components/time/ds1307, clock-outline.svg, dark-invert
PCF8563 RTC, components/time/pcf8563, clock-outline.svg, dark-invert
PCF85063 RTC, components/time/pcf85063, clock-outline.svg, dark-invert
Home Assistant Companion Components
@ -799,6 +807,7 @@ Miscellaneous Components
Stepper, components/stepper/index, stepper.svg
Servo, components/servo, servo.svg
Sprinkler, components/sprinkler, sprinkler-variant.svg, dark-invert
Grove TB6612FNG, components/grove_tb6612fng, motor.png
PCA6416A I/O Expander, components/pca6416a, pca6416a.svg
PCA9554 I/O Expander, components/pca9554, pca9554a.jpg
@ -810,6 +819,7 @@ Miscellaneous Components
SX1509 I/O Expander, components/sx1509, sx1509.jpg
SN74HC165 I/O Expander, components/sn74hc165, sn74hc595.jpg
SN74HC595 I/O Expander, components/sn74hc595, sn74hc595.jpg
XL9535 I/O Expander, components/xl9535, xl9535.svg
SIM800L, components/sim800l, sim800l.jpg
DFPlayer, components/dfplayer, dfplayer.svg, dark-invert
Captive Portal, components/captive_portal, wifi-strength-alert-outline.svg, dark-invert