From 6f0e2c6b191c42f7b70ba34bb609a2db1715c2d8 Mon Sep 17 00:00:00 2001 From: Jesse Hills <3060199+jesserockz@users.noreply.github.com> Date: Tue, 23 Apr 2024 15:12:01 +1200 Subject: [PATCH 01/11] Add fosstodon verification tag (#3786) --- _templates/layout.html | 1 + 1 file changed, 1 insertion(+) diff --git a/_templates/layout.html b/_templates/layout.html index c2d52b8ff..b11da1a47 100644 --- a/_templates/layout.html +++ b/_templates/layout.html @@ -16,6 +16,7 @@ + From b8523b89fbf3a29c32ecbec928f8d41ef402ba27 Mon Sep 17 00:00:00 2001 From: Jesse Hills <3060199+jesserockz@users.noreply.github.com> Date: Tue, 23 Apr 2024 16:46:47 +1200 Subject: [PATCH 02/11] Remove "Required Home Assistant XXXX.X" messages for older versions (#3788) --- components/binary_sensor/homeassistant.rst | 1 - components/binary_sensor/index.rst | 4 ++-- components/bluetooth_proxy.rst | 8 ++------ components/climate/index.rst | 4 ++-- components/cover/index.rst | 4 ++-- components/datetime/index.rst | 4 ++-- components/esp32_camera.rst | 6 +++--- components/fan/index.rst | 4 ++-- components/light/index.rst | 4 ++-- components/lock/index.rst | 4 ---- components/number/index.rst | 8 ++++---- components/select/index.rst | 4 ++-- components/sensor/homeassistant.rst | 7 +++---- components/sensor/index.rst | 4 ++-- components/switch/index.rst | 6 +++--- components/text_sensor/index.rst | 4 ++-- 16 files changed, 33 insertions(+), 43 deletions(-) diff --git a/components/binary_sensor/homeassistant.rst b/components/binary_sensor/homeassistant.rst index f98924abd..2628c5d58 100644 --- a/components/binary_sensor/homeassistant.rst +++ b/components/binary_sensor/homeassistant.rst @@ -34,7 +34,6 @@ Configuration variables: - **entity_id** (**Required**, string): The entity ID to import from Home Assistant. - **attribute** (*Optional*, string): The name of the state attribute to import from the specified entity. The entity state is used when this option is omitted. - Requires Home Assistant 2021.6 or newer. - **id** (*Optional*, :ref:`config-id`): Manually specify the ID used for code generation. - All other options from :ref:`Binary Sensor `. diff --git a/components/binary_sensor/index.rst b/components/binary_sensor/index.rst index 0573e2f42..7cab5120d 100644 --- a/components/binary_sensor/index.rst +++ b/components/binary_sensor/index.rst @@ -66,12 +66,12 @@ Advanced options: 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``. + Defaults to ``false``. - **publish_initial_state** (*Optional*, boolean): If true, then the sensor will publish its initial state at boot or when HA first connects, depending on the platform. This means that any applicable triggers will be run. Defaults to ``false``. - **entity_category** (*Optional*, string): The category of the entity. See https://developers.home-assistant.io/docs/core/entity/#generic-properties - for a list of available options. Requires Home Assistant 2021.11 or newer. + for a list of available options. Set to ``""`` to remove the default entity category. - If MQTT enabled, all other options from :ref:`MQTT Component `. diff --git a/components/bluetooth_proxy.rst b/components/bluetooth_proxy.rst index b976d10be..10c38bb32 100644 --- a/components/bluetooth_proxy.rst +++ b/components/bluetooth_proxy.rst @@ -32,7 +32,7 @@ our `Bluetooth Proxy installer `__ The :doc:`web_server` component should be disabled as the device is likely to run out of memory and will malfunction when both components are enabled simultaneously. - + Not all devices are supported and ESPHome does not decode or keep a list. To find out if your device is supported, please search for it in the `Home Assistant Integrations `__ list. @@ -43,15 +43,11 @@ Configuration: bluetooth_proxy: -- **active** (*Optional*, boolean): Enables proxying active connections. Defaults to ``false``. Requires Home Assistant 2022.10 or later. +- **active** (*Optional*, boolean): Enables proxying active connections. Defaults to ``false``. - **cache_services** (*Optional*, boolean): Enables caching GATT services in NVS flash storage which significantly speeds up active connections. Defaults to ``true`` when using the ESP-IDF framework. The Bluetooth proxy depends on :doc:`esp32_ble_tracker` so make sure to add that to your configuration. -.. note:: - - Bluetooth proxy requires Home Assistant 2022.9 or later. ESPHome 2022.12.0 and Home Assistant 2022.12.6 or later is recommended. - Improving reception performance ------------------------------- diff --git a/components/climate/index.rst b/components/climate/index.rst index dde76b23b..263913e73 100644 --- a/components/climate/index.rst +++ b/components/climate/index.rst @@ -80,10 +80,10 @@ Advanced options: 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``. + Defaults to ``false``. - **entity_category** (*Optional*, string): The category of the entity. See https://developers.home-assistant.io/docs/core/entity/#generic-properties - for a list of available options. Requires Home Assistant 2021.11 or newer. + for a list of available options. Set to ``""`` to remove the default entity category. MQTT options: diff --git a/components/cover/index.rst b/components/cover/index.rst index abc95bec2..146f4db9e 100644 --- a/components/cover/index.rst +++ b/components/cover/index.rst @@ -46,10 +46,10 @@ Advanced options: 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``. + Defaults to ``false``. - **entity_category** (*Optional*, string): The category of the entity. See https://developers.home-assistant.io/docs/core/entity/#generic-properties - for a list of available options. Requires Home Assistant 2021.11 or newer. + for a list of available options. Set to ``""`` to remove the default entity category. MQTT options: diff --git a/components/datetime/index.rst b/components/datetime/index.rst index 26ff54eea..57636918e 100644 --- a/components/datetime/index.rst +++ b/components/datetime/index.rst @@ -42,10 +42,10 @@ Configuration variables: 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``. + Defaults to ``false``. - **entity_category** (*Optional*, string): The category of the entity. See https://developers.home-assistant.io/docs/core/entity/#generic-properties - for a list of available options. Requires Home Assistant 2021.11 or newer. + for a list of available options. Set to ``""`` to remove the default entity category. MQTT Options: diff --git a/components/esp32_camera.rst b/components/esp32_camera.rst index 793e08887..0981c25fc 100644 --- a/components/esp32_camera.rst +++ b/components/esp32_camera.rst @@ -37,10 +37,10 @@ Configuration variables: 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``. + Defaults to ``false``. - **entity_category** (*Optional*, string): The category of the entity. See https://developers.home-assistant.io/docs/core/entity/#generic-properties - for a list of available options. Requires Home Assistant 2021.11 or newer. + for a list of available options. Set to ``""`` to remove the default entity category. Connection Options: @@ -179,7 +179,7 @@ Configuration for Ai-Thinker Camera .. warning:: - GPIO16 on this board (and possibly other boards below) is connected to onboard PSRAM. + GPIO16 on this board (and possibly other boards below) is connected to onboard PSRAM. Using this GPIO for other purposes (eg as a button) will trigger the watchdog. Further information on pin notes can be found here: https://github.com/raphaelbs/esp32-cam-ai-thinker/blob/master/docs/esp32cam-pin-notes.md diff --git a/components/fan/index.rst b/components/fan/index.rst index 415e3d562..08039308a 100644 --- a/components/fan/index.rst +++ b/components/fan/index.rst @@ -49,10 +49,10 @@ Configuration variables: 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``. + Defaults to ``false``. - **entity_category** (*Optional*, string): The category of the entity. See https://developers.home-assistant.io/docs/core/entity/#generic-properties - for a list of available options. Requires Home Assistant 2021.11 or newer. + for a list of available options. Set to ``""`` to remove the default entity category. MQTT options: diff --git a/components/light/index.rst b/components/light/index.rst index c57c9470a..ee9a31d9f 100644 --- a/components/light/index.rst +++ b/components/light/index.rst @@ -77,10 +77,10 @@ Advanced options: 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``. + Defaults to ``false``. - **entity_category** (*Optional*, string): The category of the entity. See https://developers.home-assistant.io/docs/core/entity/#generic-properties - for a list of available options. Requires Home Assistant 2021.11 or newer. + for a list of available options. Set to ``""`` to remove the default entity category. - If MQTT enabled, all other options from :ref:`MQTT Component `. diff --git a/components/lock/index.rst b/components/lock/index.rst index 0428510cb..ac15894c3 100644 --- a/components/lock/index.rst +++ b/components/lock/index.rst @@ -8,10 +8,6 @@ Lock Component The ``lock`` domain includes all platforms that should function like a lock with lock/unlock actions. -.. note:: - - ESPHome lock components requires Home Assistant 2022.3 or newer - .. _config-lock: Base Lock Configuration diff --git a/components/number/index.rst b/components/number/index.rst index d32079576..9cdb03526 100644 --- a/components/number/index.rst +++ b/components/number/index.rst @@ -43,16 +43,16 @@ Configuration variables: 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``. + Defaults to ``false``. - **entity_category** (*Optional*, string): The category of the entity. See https://developers.home-assistant.io/docs/core/entity/#generic-properties - for a list of available options. Requires Home Assistant 2021.11 or newer. + for a list of available options. Set to ``""`` to remove the default entity category. - **unit_of_measurement** (*Optional*, string): Manually set the unit - of measurement for the number. Requires Home Assistant Core 2021.12 or newer. + of measurement for the number. - **mode** (*Optional*, string): Defines how the number should be displayed in the frontend. See https://developers.home-assistant.io/docs/core/entity/number/#properties - for a list of available options. Requires Home Assistant Core 2021.12 or newer. + for a list of available options. Defaults to ``"auto"``. - **device_class** (*Optional*, string): The device class for the number. See https://www.home-assistant.io/integrations/number/#device-class diff --git a/components/select/index.rst b/components/select/index.rst index a79c4d926..77fc53891 100644 --- a/components/select/index.rst +++ b/components/select/index.rst @@ -43,10 +43,10 @@ Configuration variables: 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``. + Defaults to ``false``. - **entity_category** (*Optional*, string): The category of the entity. See https://developers.home-assistant.io/docs/core/entity/#generic-properties - for a list of available options. Requires Home Assistant 2021.11 or newer. + for a list of available options. Set to ``""`` to remove the default entity category. Automations: diff --git a/components/sensor/homeassistant.rst b/components/sensor/homeassistant.rst index fd2096fa1..b8d0ea0e9 100644 --- a/components/sensor/homeassistant.rst +++ b/components/sensor/homeassistant.rst @@ -31,7 +31,7 @@ Entity state attributes can also be imported: This component is only for numeral states. If you want to import arbitrary text states from Home Assistant, use the :doc:`Home Assistant Text Sensor `. - + Although you might not plan to *export* states from the node and you do not need an entity of the node in Home Assistant, this component still requires you to register the node under Home Assistant. See: :doc:`Getting started with Home Assistant ` @@ -43,16 +43,15 @@ Configuration variables: - **entity_id** (**Required**, string): The entity ID to import from Home Assistant. - **attribute** (*Optional*, string): The name of the state attribute to import from the specified entity. The entity state is used when this option is omitted. - Requires Home Assistant 2021.6 or newer. - **id** (*Optional*, :ref:`config-id`): Manually specify the ID used for code generation. - All other options from :ref:`Sensor `. .. note:: - The sensors implemented by this component are by default ``internal``, to avoid exporting them back to + The sensors implemented by this component are by default ``internal``, to avoid exporting them back to Home Assistant. Should you still want to do that (eg. because you use ESPHome's very efficient filters - on them) you need to specifically configure ``internal: false``. Also, ``state_class``, ``unit_of_measurement`` + on them) you need to specifically configure ``internal: false``. Also, ``state_class``, ``unit_of_measurement`` are not inherited from the imported sensor so you need to set them manually. diff --git a/components/sensor/index.rst b/components/sensor/index.rst index 9be1a5869..05df0921d 100644 --- a/components/sensor/index.rst +++ b/components/sensor/index.rst @@ -68,10 +68,10 @@ Configuration variables: 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``. + Defaults to ``false``. - **entity_category** (*Optional*, string): The category of the entity. See https://developers.home-assistant.io/docs/core/entity/#generic-properties - for a list of available options. Requires Home Assistant 2021.11 or newer. + for a list of available options. Set to ``""`` to remove the default entity category. Automations: diff --git a/components/switch/index.rst b/components/switch/index.rst index 88c739be6..eca9a1bed 100644 --- a/components/switch/index.rst +++ b/components/switch/index.rst @@ -59,14 +59,14 @@ Configuration variables: 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``. + Defaults to ``false``. - **entity_category** (*Optional*, string): The category of the entity. See https://developers.home-assistant.io/docs/core/entity/#generic-properties - for a list of available options. Requires Home Assistant 2021.11 or newer. + for a list of available options. Set to ``""`` to remove the default entity category. - **device_class** (*Optional*, string): The device class for the switch. See https://www.home-assistant.io/integrations/switch/#device-class - for a list of available options. Requires Home Assistant 2022.3 or newer. + for a list of available options. - If MQTT enabled, All other options from :ref:`MQTT Component `. .. _switch-toggle_action: diff --git a/components/text_sensor/index.rst b/components/text_sensor/index.rst index 9638ced99..ad909ecb2 100644 --- a/components/text_sensor/index.rst +++ b/components/text_sensor/index.rst @@ -41,10 +41,10 @@ Configuration variables: 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``. + Defaults to ``false``. - **entity_category** (*Optional*, string): The category of the entity. See https://developers.home-assistant.io/docs/core/entity/#generic-properties - for a list of available options. Requires Home Assistant 2021.11 or newer. + for a list of available options. Set to ``""`` to remove the default entity category. - If MQTT enabled, All other options from :ref:`MQTT Component `. From c20f304142965a0ea3b399a1115ca8c3479545e7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?H=2E=20=C3=81rkosi=20R=C3=B3bert?= Date: Tue, 23 Apr 2024 21:52:39 +0200 Subject: [PATCH 03/11] Graphical menu screenshot (#3791) --- changelog/2023.12.0.rst | 2 +- .../display_menu/graphical_display_menu.rst | 2 +- .../images/graphical_display_menu.jpg | Bin 103805 -> 0 bytes .../images/graphical_display_menu.png | Bin 0 -> 4040 bytes images/graphical_display_menu.jpg | Bin 13999 -> 0 bytes images/graphical_display_menu.png | Bin 0 -> 10769 bytes index.rst | 2 +- 7 files changed, 3 insertions(+), 3 deletions(-) delete mode 100644 components/display_menu/images/graphical_display_menu.jpg create mode 100644 components/display_menu/images/graphical_display_menu.png delete mode 100644 images/graphical_display_menu.jpg create mode 100644 images/graphical_display_menu.png diff --git a/changelog/2023.12.0.rst b/changelog/2023.12.0.rst index 58ff62091..499288e89 100644 --- a/changelog/2023.12.0.rst +++ b/changelog/2023.12.0.rst @@ -14,7 +14,7 @@ ESPHome 2023.12.0 - 20th December 2023 GT911, components/touchscreen/gt911, esp32_s3_box_3.png Pylontech Batteries, components/pylontech, pylontech.jpg HE60R Cover, components/cover/he60r, he60r.jpg - Graphical Display Menu, components/display_menu/graphical_display_menu, graphical_display_menu.jpg + Graphical Display Menu, components/display_menu/graphical_display_menu, graphical_display_menu.png FT63X6, components/touchscreen/ft63x6, wt32-sc01.png A02YYUW, components/sensor/a02yyuw, a02yyuw.jpg PN7150, components/binary_sensor/pn7150, pn7150.jpg diff --git a/components/display_menu/graphical_display_menu.rst b/components/display_menu/graphical_display_menu.rst index fc1fb52ae..751769d8f 100644 --- a/components/display_menu/graphical_display_menu.rst +++ b/components/display_menu/graphical_display_menu.rst @@ -12,7 +12,7 @@ on graphical displays. This offers the user an interactive method to display labels, control entities like ``switch``, ``select``, ``number`` available locally on the ESPHome node, without the requirement of a network connection. -.. figure:: images/graphical_display_menu.jpg +.. figure:: images/graphical_display_menu.png :align: center :width: 60.0% diff --git a/components/display_menu/images/graphical_display_menu.jpg b/components/display_menu/images/graphical_display_menu.jpg deleted file mode 100644 index eaed932d3fe75c3ebeb2f46bf55f3a11d29f9ec3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 103805 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 Date: Tue, 23 Apr 2024 19:51:00 -0500 Subject: [PATCH 04/11] Organize main page better (#3789) --- index.rst | 524 +++++++++++++++++++++++++++++++----------------------- 1 file changed, 299 insertions(+), 225 deletions(-) diff --git a/index.rst b/index.rst index 51b52e469..9cc42dae9 100644 --- a/index.rst +++ b/index.rst @@ -121,41 +121,112 @@ ESPHome is a system to control your microcontrollers by simple yet powerful conf .. _devices: -Platforms ---------- +Supported Microcontrollers +-------------------------- .. imgtable:: - ESP8266, components/esp8266, esp8266.svg ESP32, components/esp32, esp32.svg + ESP8266, components/esp8266, esp8266.svg RP2040, components/rp2040, rp2040.svg BK72xx, components/libretiny, bk72xx.svg RTL87xx, components/libretiny, rtl87xx.svg -Core Components ---------------- +Microcontroller Peripherals +--------------------------- + +Peripherals which directly support the operation of the microcontroller's processor(s). + +.. imgtable:: + + PSRAM, components/psram, psram.svg + Deep Sleep, components/deep_sleep, hotel.svg, dark-invert + +ESPHome Components +------------------ + +ESPHome-specific components or components supporting ESPHome device provisioning post-installation. .. imgtable:: Core, components/esphome, cloud-circle.svg, dark-invert - PSRAM, components/psram, psram.svg - WiFi, components/wifi, network-wifi.svg, dark-invert - Network, components/network, network-wifi.svg, dark-invert - - I²C Bus, components/i2c, i2c.svg - SPI Bus, components/spi, spi.svg - UART Bus, components/uart, uart.svg - CAN Bus, components/canbus, canbus.svg - - MQTT, components/mqtt, mqtt.png - OTA Updates, components/ota, system-update.svg, dark-invert - Logger, components/logger, file-document-box.svg, dark-invert - Web Server, components/web_server, http.svg, dark-invert - - Native API, components/api, server-network.svg, dark-invert - Power Supply, components/power_supply, power.svg, dark-invert - Deep Sleep, components/deep_sleep, hotel.svg, dark-invert + Captive Portal, components/captive_portal, wifi-strength-alert-outline.svg, dark-invert + Copy, components/copy, content-copy.svg, dark-invert + Demo, components/demo, description.svg, dark-invert External Components, components/external_components, external_components.svg, dark-invert + Improv via BLE, components/esp32_improv, improv.svg, dark-invert + Improv via Serial, components/improv_serial, improv.svg, dark-invert + +Network Hardware +---------------- + +.. imgtable:: + + WiFi, components/wifi, network-wifi.svg, dark-invert + ESP32 Ethernet, components/ethernet, ethernet.svg, dark-invert + +Network Protocols +----------------- + +.. imgtable:: + + Network Core, components/network, server-network.svg, dark-invert + Native API, components/api, server-network.svg, dark-invert + MQTT, components/mqtt, mqtt.png + HTTP Request, components/http_request, connection.svg, dark-invert + mDNS, components/mdns, radio-tower.svg, dark-invert + WireGuard, components/wireguard, wireguard_custom_logo.svg + +Bluetooth/BLE +------------- + +.. imgtable:: + + ESP32 BLE Beacon, components/esp32_ble_beacon, bluetooth.svg, dark-invert + ESP32 BLE Client, components/ble_client, bluetooth.svg, dark-invert + ESP32 BLE Tracker, components/esp32_ble_tracker, bluetooth.svg, dark-invert + Bluetooth Proxy, components/bluetooth_proxy, bluetooth.svg, dark-invert + Improv via BLE, components/esp32_improv, improv.svg, dark-invert + +Management and Monitoring +------------------------- + +.. imgtable:: + + Debug, components/debug, bug-report.svg, dark-invert + Logger, components/logger, file-document-box.svg, dark-invert + OTA Updates, components/ota, system-update.svg, dark-invert + Prometheus, components/prometheus, prometheus.svg + Web Server, components/web_server, http.svg, dark-invert + ESP32 Camera Web Server, components/esp32_camera_web_server, camera.svg, dark-invert + +Hardware Peripheral Interfaces/Busses +------------------------------------- + +.. imgtable:: + + CAN Bus, components/canbus, canbus.svg + I²C Bus, components/i2c, i2c.svg + I²S Audio, components/i2s_audio, i2s_audio.svg + SPI Bus, components/spi, spi.svg + UART, components/uart, uart.svg + +I/O Expanders/Multiplexers +-------------------------- + +.. imgtable:: + + MAX6956 - I²C Bus, components/max6956, max6956.jpg + MCP230XX - I²C Bus, components/mcp230xx, mcp230xx.svg + MCP23SXX - SPI Bus, components/mcp23Sxx, mcp230xx.svg + PCA6416A, components/pca6416a, pca6416a.svg + PCA9554, components/pca9554, pca9554a.jpg + PCF8574, components/pcf8574, pcf8574.jpg + SN74HC165, components/sn74hc165, sn74hc595.jpg + SN74HC595, components/sn74hc595, sn74hc595.jpg + SX1509, components/sx1509, sx1509.jpg + TCA9548A I²C Multiplexer, components/tca9548a, tca9548a.jpg + XL9535, components/xl9535, xl9535.svg Sensor Components ----------------- @@ -164,19 +235,19 @@ Sensors are split into categories. If a sensor fits into more than one category, Core **** + .. imgtable:: Sensor Core, components/sensor/index, folder-open.svg, dark-invert + Template Sensor, components/sensor/template, description.svg, dark-invert Home Assistant, components/sensor/homeassistant, home-assistant.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 - Template Sensor, components/sensor/template, description.svg, dark-invert - Custom Sensor, components/sensor/custom, language-cpp.svg, dark-invert - Air Quality *********** + .. imgtable:: AGS10, components/sensor/ags10, ags10.jpg, Volatile Organic Compound Sensor @@ -186,18 +257,19 @@ Air Quality ENS160, components/sensor/ens160, ens160.jpg, CO2 & Air Quality GCJA5, components/sensor/gcja5, gcja5.svg, Particulate HM3301, components/sensor/hm3301, hm3301.jpg, Particulate + iAQ-Core, components/sensor/iaqcore, iaqcore.jpg, CO2 & Volatile organics MH-Z19, components/sensor/mhz19, mhz19.jpg, CO2 & Temperature MiCS-4514, components/sensor/mics_4514, mics_4514.jpg, Gas concentration PM1006 Sensor, components/sensor/pm1006, pm1006.jpg, Particulate PMSA003I, components/sensor/pmsa003i, pmsa003i.jpg, Particulate PMSX003, components/sensor/pmsx003, pmsx003.svg, Particulate RadonEye BLE, components/sensor/radon_eye_ble, radon_eye_logo.png, Radon + SCD30, components/sensor/scd30, scd30.jpg, CO2 & Temperature & Humidity + SCD4X, components/sensor/scd4x, scd4x.jpg, CO2 & Temperature & Humidity SDS011 Sensor, components/sensor/sds011, sds011.jpg, Particulate SEN0321, components/sensor/sen0321, sen0321.jpg, Ozone SEN5x, components/sensor/sen5x, sen54.jpg, Temperature & Humidity, Volatile organics and NOx SenseAir, components/sensor/senseair, senseair_s8.jpg, CO2 - SCD30, components/sensor/scd30, scd30.jpg, CO2 & Temperature & Humidity - SCD4X, components/sensor/scd4x, scd4x.jpg, CO2 & Temperature & Humidity SFA30, components/sensor/sfa30, sfa30.jpg, Formaldehyde SGP30, components/sensor/sgp30, sgp30.jpg, CO2 & Volatile organics SGP4x, components/sensor/sgp4x, sgp40.jpg, Volatile organics and NOx @@ -205,11 +277,10 @@ Air Quality SPS30, components/sensor/sps30, sps30.jpg, Particulate T6613/15, components/sensor/t6615, t6615.jpg, CO2 ZyAura, components/sensor/zyaura, zgm053.jpg, CO2 & Temperature & Humidity - iAQ-Core, components/sensor/iaqcore, iaqcore.jpg, CO2 & Volatile organics - Analogue ******** + .. imgtable:: ADC, components/sensor/adc, flash.svg, ESP internal, dark-invert @@ -221,25 +292,25 @@ Analogue MCP3204 / MCP3208, components/sensor/mcp3204, mcp3204.jpg, 4-channel ADC Resistance, components/sensor/resistance, omega.svg, dark-invert - Bluetooth Low Energy (BLE) ************************** + .. imgtable:: + Alpha3, components/sensor/alpha3, alpha3.jpg AM43, components/sensor/am43, am43.jpg, Lux & Battery level BLE Client Sensor, components/sensor/ble_client, bluetooth.svg, dark-invert BLE RSSI, components/sensor/ble_rssi, bluetooth.svg, dark-invert + HHCCJCY10 (MiFlora Pink), components/sensor/xiaomi_hhccjcy10, xiaomi_hhccjcy10.jpg, Soil moisture & Temperature & Light Inkbird IBS-TH1 Mini, components/sensor/inkbird_ibsth1_mini, inkbird_isbth1_mini.jpg, Temperature & Humidity Mopeka Pro Check LP, components/sensor/mopeka_pro_check, mopeka_pro_check.jpg, tank level 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 - HHCCJCY10 (MiFlora Pink), components/sensor/xiaomi_hhccjcy10, xiaomi_hhccjcy10.jpg, Soil moisture & Temperature & Light - Alpha3, components/sensor/alpha3, alpha3.jpg - Digital Signals *************** + .. imgtable:: Duty Cycle, components/sensor/duty_cycle, percent.svg, dark-invert @@ -247,22 +318,23 @@ Digital Signals Pulse Meter, components/sensor/pulse_meter, pulse.svg, dark-invert Pulse Width, components/sensor/pulse_width, pulse.svg, dark-invert - Distance ******** + .. imgtable:: A01NYUB, components/sensor/a01nyub, a01nyub.jpg, Acoustic distance A02YYUW, components/sensor/a02yyuw, a02yyuw.jpg, Acoustic distance HRXL MaxSonar WR, components/sensor/hrxl_maxsonar_wr, hrxl_maxsonar_wr.jpg, Acoustic distance + JSN-SR04T, components/sensor/jsn_sr04t, jsn-sr04t-v3.jpg, Acoustic 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 - JSN-SR04T, components/sensor/jsn_sr04t, jsn-sr04t-v3.jpg, Acoustic distance Electricity *********** + .. imgtable:: ADE7880, components/sensor/ade7880, ade7880.svg, Voltage & Current & Power @@ -293,7 +365,6 @@ Electricity Teleinfo, components/sensor/teleinfo, teleinfo.jpg, Electrical counter Total Daily Energy, components/sensor/total_daily_energy, sigma.svg, dark-invert - Environmental ************* @@ -304,14 +375,14 @@ Environmental AirThings BLE, components/sensor/airthings_ble, airthings_logo.png, Temperature & Humidity & Pressure AM2315C, components/sensor/am2315c, am2315c.jpg, Temperature & Humidity AM2320, components/sensor/am2320, am2320.jpg, Temperature & Humidity + b-parasite, components/sensor/b_parasite, b_parasite.jpg, Moisture & Temperature & Humidity & Light BME280, components/sensor/bme280, bme280.jpg, Temperature & Humidity & Pressure - BME680, components/sensor/bme680, bme680.jpg, Temperature & Humidity & Pressure & Gas BME680 via BSEC, components/sensor/bme680_bsec, bme680.jpg, Temperature & Humidity & Pressure & Gas + BME680, components/sensor/bme680, bme680.jpg, Temperature & Humidity & Pressure & Gas BMP085, components/sensor/bmp085, bmp180.jpg, Temperature & Pressure BMP280, components/sensor/bmp280, bmp280.jpg, Temperature & Pressure BMP388 and BMP390, components/sensor/bmp3xx, bmp388.jpg, Temperature & Pressure BMP581, components/sensor/bmp581, bmp581.jpg, Temperature & Pressure - b-parasite, components/sensor/b_parasite, b_parasite.jpg, Moisture & Temperature & Humidity & Light Dallas DS18B20, components/sensor/dallas, dallas.jpg, Temperature DHT, components/sensor/dht, dht.jpg, Temperature & Humidity DHT12, components/sensor/dht12, dht12.jpg, Temperature & Humidity @@ -321,13 +392,14 @@ Environmental ENS210, components/sensor/ens210, ens210.jpg, Temperature & Humidity HDC1080, components/sensor/hdc1080, hdc1080.jpg, Temperature & Humidity HHCCJCY10 (MiFlora Pink), components/sensor/xiaomi_hhccjcy10, xiaomi_hhccjcy10.jpg, Soil moisture & Temperature & Light - HTE501, components/sensor/hte501, HTE501.png, Temperature & Humidity Honeywell ABP, components/sensor/honeywellabp, honeywellabp.jpg, Pressure & Temperature Honeywell ABP2 I2C, components/sensor/honeywellabp2_i2c, honeywellabp.jpg, Pressure & Temperature Honeywell HIH I2C, components/sensor/honeywell_hih_i2c, honeywellhih.jpg, Temperature & Humidity + HTE501, components/sensor/hte501, HTE501.png, Temperature & Humidity HTU21D / Si7021 / SHT21, components/sensor/htu21d, htu21d.jpg, Temperature & Humidity HTU31D, components/sensor/htu31d, htu31d.jpg, Temperature & Humidity Hydreon Rain Sensor, components/sensor/hydreon_rgxx, hydreon_rg9.jpg, Rain + HYT271, components/sensor/hyt271, hyt271.jpg, Temperature & Humidity Inkbird IBS-TH1 Mini, components/sensor/inkbird_ibsth1_mini, inkbird_isbth1_mini.jpg, Temperature & Humidity Internal Temperature, components/sensor/internal_temperature, thermometer.svg, Temperature, dark-invert MCP9808, components/sensor/mcp9808, mcp9808.jpg, Temperature @@ -352,14 +424,13 @@ Environmental STS3X, components/sensor/sts3x, sts3x.jpg, Temperature TEE501, components/sensor/tee501, TEE501.png, Temperature TMP102, components/sensor/tmp102, tmp102.jpg, Temperature - TMP117, components/sensor/tmp117, tmp117.jpg, Temperature TMP1075, components/sensor/tmp1075, tmp1075.jpg, Temperature - HYT271, components/sensor/hyt271, hyt271.jpg, Temperature & Humidity + TMP117, components/sensor/tmp117, tmp117.jpg, Temperature XGZP68xx Series, components/sensor/xgzp68xx, 6897d.jpg, Differential Pressure - Light ***** + .. imgtable:: AM43, components/sensor/am43, am43.jpg, Lux @@ -375,65 +446,65 @@ Light VEML6030, components/sensor/veml7700, veml6030.jpg, Lux VEML7700, components/sensor/veml7700, veml7700.jpg, Lux - Magnetic ******** + .. imgtable:: - ESP32 Hall Sensor, components/sensor/esp32_hall, magnet.svg, ESP internal, dark-invert AS5600, components/sensor/as5600, as5600.jpg, 12-Bit Magnetic Position Sensor + ESP32 Hall Sensor, components/sensor/esp32_hall, magnet.svg, ESP internal, dark-invert HMC5883L, components/sensor/hmc5883l, hmc5883l.jpg, 3-Axis magnetometer + MLX90393, components/sensor/mlx90393, mlx90393.jpg, 3-Axis magnetometer MMC5603, components/sensor/mmc5603, mmc5603.jpg, 3-Axis magnetometer MMC5983, components/sensor/mmc5983, mmc5983.jpg, 3-Axis magnetometer - MLX90393, components/sensor/mlx90393, mlx90393.jpg, 3-Axis magnetometer QMC5883L, components/sensor/qmc5883l, qmc5883l.jpg, 3-Axis magnetometer - Miscellaneous ************* + .. imgtable:: AS3935, components/sensor/as3935, as3935.jpg, Storm lightning - Binary Sensor Map, components/sensor/binary_sensor_map, binary_sensor_map.jpg, Map binary to value b-parasite, components/sensor/b_parasite, b_parasite.jpg, Moisture & Temperature & Humidity & Light + Binary Sensor Map, components/sensor/binary_sensor_map, binary_sensor_map.jpg, Map binary to value Combination, components/sensor/combination, function.svg, dark-invert Duty Time, components/sensor/duty_time, timer-play-outline.svg, dark-invert EZO sensor circuits, components/sensor/ezo, ezo-ph-circuit.png, (pH) FS3000, components/sensor/fs3000, fs3000.jpg, Air velocity + Growatt Solar, components/sensor/growatt_solar, growatt.jpg, Solar rooftop 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 + Kuntze pool sensor, components/sensor/kuntze, kuntze.jpg + MicroNova pellet stove, components/micronova, pellet.svg Modbus Sensor, components/sensor/modbus_controller, modbus.png Nextion, components/sensor/nextion, nextion.jpg, Sensors from display + Person Sensor (SEN21231), components/sensor/sen21231, sen21231.png + Resol VBus, components/vbus, resol_deltasol_bs_plus.jpg Rotary Encoder, components/sensor/rotary_encoder, rotary_encoder.jpg SMT100, components/sensor/smt100, smt100.jpg, Moisture & Temperature Tuya Sensor, components/sensor/tuya, tuya.png TX20, components/sensor/tx20, tx20.jpg, Wind speed & Wind direction uFire EC sensor, components/sensor/ufire_ec, ufire_ec.png, EC & Temperature uFire ISE sensor, components/sensor/ufire_ise, ufire_ise.png, pH & Temperature - Resol VBus, components/vbus, resol_deltasol_bs_plus.jpg - Person Sensor (SEN21231), components/sensor/sen21231, sen21231.png - Kuntze pool sensor, components/sensor/kuntze, kuntze.jpg WireGuard, components/wireguard, wireguard_custom_logo.svg - MicroNova pellet stove, components/micronova, pellet.svg - Motion ****** + .. imgtable:: APDS9960, components/sensor/apds9960, apds9960.jpg, Colour & Gesture BMI160, components/sensor/bmi160, bmi160.jpg, Accelerometer & Gyroscope LD2410, components/sensor/ld2410, ld2410.jpg, Motion & Presence LD2420, components/sensor/ld2420, ld2420.jpg, Motion & Presence - Seeed Studio MR24HPC1 mmWave, components/seeed_mr24hpc1, seeed-mr24hpc1.jpg, Motion & Presence MPU6050, components/sensor/mpu6050, mpu6050.jpg, Accelerometer & Gyroscope MPU6886, components/sensor/mpu6886, mpu6886.jpg, Accelerometer & Gyroscope RuuviTag, components/sensor/ruuvitag, ruuvitag.jpg, Temperature & Humidity & Accelerometer - + Seeed Studio MR24HPC1 mmWave, components/seeed_mr24hpc1, seeed-mr24hpc1.jpg, Motion & Presence Thermocouple ************ + .. imgtable:: KMeterISO, components/sensor/kmeteriso, kmeteriso.jpg, K-Type, @@ -443,9 +514,9 @@ Thermocouple MAX6675, components/sensor/max6675, max6675.jpg, K-Type, MCP9600, components/sensor/mcp9600, mcp9600.jpg, All types - Weight ****** + .. imgtable:: HX711, components/sensor/hx711, hx711.jpg, Load cell amplifier @@ -464,17 +535,18 @@ Binary Sensors are split into categories. If a sensor fits into more than one ca Core **** + .. imgtable:: Binary Sensor Core, components/binary_sensor/index, folder-open.svg, dark-invert - Custom Binary Sensor, components/binary_sensor/custom, language-cpp.svg, dark-invert + Template Binary Sensor, components/binary_sensor/template, description.svg, dark-invert GPIO, components/binary_sensor/gpio, pin.svg, dark-invert Home Assistant, components/binary_sensor/homeassistant, home-assistant.svg, dark-invert Status, components/binary_sensor/status, server-network.svg, dark-invert - Template Binary Sensor, components/binary_sensor/template, description.svg, dark-invert Capacitive Touch **************** + .. imgtable:: CAP1188 Capacitive Touch Sensor, components/binary_sensor/cap1188, cap1188.jpg @@ -484,14 +556,15 @@ Capacitive Touch Mechanical ********** + .. imgtable:: Matrix Keypad, components/matrix_keypad, matrix_keypad.jpg TM1637, components/display/tm1637, tm1637.jpg TM1638, components/display/tm1638, tm1638.jpg -NFC/RFID Components -******************* +NFC/RFID +******** Often known as "tag" or "card" readers within the community. @@ -503,29 +576,33 @@ Often known as "tag" or "card" readers within the community. PN716X, components/pn7160, pn716x.jpg RC522, components/binary_sensor/rc522, rc522.jpg RDM6300, components/binary_sensor/rdm6300, rdm6300.jpg + Wiegand Reader, components/wiegand, wiegand.jpg Touchscreen *********** + .. imgtable:: - 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 + Touchscreen Core, components/touchscreen/index, touch.svg, dark-invert FT5X06, components/touchscreen/ft5x06, indicator.jpg GT911, components/touchscreen/gt911, esp32_s3_box_3.png + Nextion Binary Sensor, components/binary_sensor/nextion, nextion.jpg + TT21100, components/touchscreen/tt21100, esp32-s3-korvo-2-lcd.png Presence Detection ****************** + .. imgtable:: - DFRobot mmWave Radar, components/dfrobot_sen0395, dfrobot_sen0395.jpg AT581X, components/at581x, at581x.png + DFRobot mmWave Radar, components/dfrobot_sen0395, dfrobot_sen0395.jpg LD2410, components/sensor/ld2410, ld2410.jpg LD2420, components/sensor/ld2420, ld2420.jpg Seeed Studio MR24HPC1 mmWave, components/seeed_mr24hpc1, seeed-mr24hpc1.jpg Miscellaneous ************* + .. imgtable:: Analog Threshold, components/binary_sensor/analog_threshold, analog_threshold.svg, dark-invert @@ -546,36 +623,35 @@ Output Components .. imgtable:: Output Core, components/output/index, folder-open.svg, dark-invert - ESP8266 Software PWM, components/output/esp8266_pwm, pwm.png - Slow PWM, components/output/slow_pwm, pwm.png - GPIO Output, components/output/gpio, pin.svg, dark-invert + Template Output, components/output/template, description.svg, dark-invert + AC Dimmer, components/output/ac_dimmer, ac_dimmer.svg, dark-invert + BLE Binary Output, components/output/ble_client, bluetooth.svg, dark-invert + BP1658CJ, components/output/bp1658cj, bp1658cj.svg + BP5758D, components/output/bp5758d, bp5758d.svg + DAC7678, components/output/dac7678, dac7678.svg + EMC2101, components/emc2101, emc2101.jpg ESP32 DAC, components/output/esp32_dac, dac.svg ESP32 LEDC, components/output/ledc, pwm.png + ESP8266 Software PWM, components/output/esp8266_pwm, pwm.png + GP8403, components/output/gp8403, gp8403.svg + GPIO Output, components/output/gpio, pin.svg, dark-invert LibreTiny PWM, components/output/libretiny_pwm, pwm.png - AC Dimmer, components/output/ac_dimmer, ac_dimmer.svg, dark-invert - PCA9685, components/output/pca9685, pca9685.jpg - TLC59208F, components/output/tlc59208f, tlc59208f.jpg - TLC5947, components/output/tlc5947, tlc5947.jpg - TLC5971, components/output/tlc5971, tlc5971.jpg + MCP4725, components/output/mcp4725, mcp4725.jpg + MCP4728, components/output/mcp4728, mcp4728.jpg + MCP47A1, components/output/mcp47a1, mcp47a1.svg + Modbus Output, components/output/modbus_controller, modbus.png MY9231/MY9291, components/output/my9231, my9231.svg + PCA9685, components/output/pca9685, pca9685.jpg + Sigma-Delta Output, components/output/sigma_delta_output, sigma-delta.svg, dark-invert + Slow PWM, components/output/slow_pwm, pwm.png SM16716, components/output/sm16716, sm16716.svg SM2135, components/output/sm2135, sm2135.svg SM2235, components/output/sm2235, sm2235.svg SM2335, components/output/sm2335, sm2335.svg - MCP4725, components/output/mcp4725, mcp4725.jpg - MCP4728, components/output/mcp4728, mcp4728.jpg - MCP47A1, components/output/mcp47a1, mcp47a1.svg - DAC7678, components/output/dac7678, dac7678.svg - BLE Binary Output, components/output/ble_client, bluetooth.svg, dark-invert - Modbus Output, components/output/modbus_controller, modbus.png - Custom Output, components/output/custom, language-cpp.svg, dark-invert - Sigma-Delta Output, components/output/sigma_delta_output, sigma-delta.svg, dark-invert - Template Output, components/output/template, description.svg, dark-invert - BP1658CJ, components/output/bp1658cj, bp1658cj.svg - BP5758D, components/output/bp5758d, bp5758d.svg + TLC59208F, components/output/tlc59208f, tlc59208f.jpg + TLC5947, components/output/tlc5947, tlc5947.jpg + TLC5971, components/output/tlc5971, tlc5971.jpg X9C Potentiometer, components/output/x9c, x9c.jpg - GP8403, components/output/gp8403, gp8403.svg - EMC2101, components/emc2101, emc2101.jpg Light Components ---------------- @@ -584,33 +660,29 @@ Light Components Light Core, components/light/index, folder-open.svg, dark-invert Binary Light, components/light/binary, lightbulb.svg, dark-invert - Status Led, components/light/status_led, led-on.svg, dark-invert - Monochromatic Light, components/light/monochromatic, brightness-medium.svg, dark-invert - Cold+Warm White Light, components/light/cwww, brightness-medium.svg, dark-invert Color Temperature Light, components/light/color_temperature, brightness-medium.svg, dark-invert + ESP32 RMT, components/light/esp32_rmt_led_strip, color_lens.svg, dark-invert + FastLED Light, components/light/fastled, color_lens.svg, dark-invert + H-bridge Light, components/light/hbridge, brightness-medium.svg, dark-invert + Light Partition, components/light/partition, color_lens.svg, dark-invert + LightWaveRF, components/lightwaverf, brightness-medium.svg + Monochromatic Light, components/light/monochromatic, brightness-medium.svg, dark-invert + NeoPixelBus Light, components/light/neopixelbus, color_lens.svg, dark-invert RGB Light, components/light/rgb, rgb.png + RGBCT Light, components/light/rgbct, rgbw.png RGBW Light, components/light/rgbw, rgbw.png RGBWW Light, components/light/rgbww, rgbw.png - RGBCT Light, components/light/rgbct, rgbw.png - - ESP32 RMT, components/light/esp32_rmt_led_strip, color_lens.svg, dark-invert RP2040 PIO, components/light/rp2040_pio_led_strip, color_lens.svg, dark-invert - FastLED Light, components/light/fastled, color_lens.svg, dark-invert - NeoPixelBus Light, components/light/neopixelbus, color_lens.svg, dark-invert - Light Partition, components/light/partition, color_lens.svg, dark-invert - SPI LED Strips, components/light/spi_led_strip, apa102.jpg - - Tuya Dimmer, components/light/tuya, tuya.png Shelly Dimmer, components/light/shelly_dimmer, shellydimmer2.jpg - Custom Light, components/light/custom, language-cpp.svg, dark-invert - LightWaveRF, components/lightwaverf, brightness-medium.svg - - H-bridge Light, components/light/hbridge, brightness-medium.svg, dark-invert Sonoff D1 Dimmer, components/light/sonoff_d1, sonoff_d1.jpg + SPI LED Strips, components/light/spi_led_strip, apa102.jpg + Status Led, components/light/status_led, led-on.svg, dark-invert + Tuya Dimmer, components/light/tuya, tuya.png -Looking for WS2811 and similar individually addressable lights? Have a look at the -:doc:`FastLED Light `. +**Looking for WS2811 and similar individually addressable lights?** For the ESP32 and its variants, we +recommend the :doc:`components/light/esp32_rmt_led_strip` or :doc:`components/light/spi_led_strip`; for +other processors, have a look at the :doc:`FastLED Light `. Switch Components ----------------- @@ -618,19 +690,18 @@ Switch Components .. imgtable:: Switch Core, components/switch/index, folder-open.svg, dark-invert + Template Switch, components/switch/template, description.svg, dark-invert + BLE Client Switch, components/switch/ble_client, bluetooth.svg, dark-invert + Factory Reset Switch, components/switch/factory_reset, restart-alert.svg, dark-invert + Generic Output Switch, components/switch/output, upload.svg, dark-invert GPIO Switch, components/switch/gpio, pin.svg, dark-invert + Modbus Switch, components/switch/modbus_controller, modbus.png + Nextion Switch, components/switch/nextion, nextion.jpg Restart Switch, components/switch/restart, restart.svg, dark-invert Safe Mode Switch, components/switch/safe_mode, restart-alert.svg, dark-invert Shutdown Switch, components/switch/shutdown, power_settings.svg, dark-invert - Factory Reset Switch, components/switch/factory_reset, restart-alert.svg, dark-invert - Generic Output Switch, components/switch/output, upload.svg, dark-invert - Template Switch, components/switch/template, description.svg, dark-invert - UART Switch, components/switch/uart, uart.svg - Custom Switch, components/switch/custom, language-cpp.svg, dark-invert Tuya Switch, components/switch/tuya, tuya.png - Modbus Switch, components/switch/modbus_controller, modbus.png - BLE Client Switch, components/switch/ble_client, bluetooth.svg, dark-invert - Nextion Switch, components/switch/nextion, nextion.jpg + UART Switch, components/switch/uart, uart.svg Button Components ----------------- @@ -639,14 +710,13 @@ Button Components Button Core, components/button/index, folder-open.svg, dark-invert Template Button, components/button/template, description.svg, dark-invert + Factory Reset Button, components/button/factory_reset, restart-alert.svg, dark-invert Generic Output Button, components/button/output, upload.svg, dark-invert Restart Button, components/button/restart, restart.svg, dark-invert Safe Mode Button, components/button/safe_mode, restart-alert.svg, dark-invert Shutdown Button, components/button/shutdown, power_settings.svg, dark-invert - 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 UART Button, components/button/uart, uart.svg - + Wake-on-LAN, components/button/wake_on_lan, power_settings.svg, dark-invert Fan Components -------------- @@ -654,11 +724,11 @@ Fan Components .. imgtable:: Fan Core, components/fan/index, folder-open.svg, dark-invert + Template Fan, components/fan/template, description.svg, dark-invert Binary Fan, components/fan/binary, fan.svg, dark-invert H-bridge Fan, components/fan/hbridge, fan.svg, dark-invert Speed Fan, components/fan/speed, fan.svg, dark-invert Tuya Fan, components/fan/tuya, tuya.png - Template Fan, components/fan/template, description.svg, dark-invert Display Components ------------------ @@ -666,7 +736,17 @@ Display Components .. imgtable:: Display Core, components/display/index, folder-open.svg, dark-invert + Display Menu Core, components/display_menu/index, folder-open.svg, dark-invert Font Renderer, components/display/fonts, format-font.svg, dark-invert + + Graphical Display Menu, components/display_menu/graphical_display_menu, graphical_display_menu.png + LCD Menu, components/display_menu/lcd_menu, lcd_menu.png + +Display Hardware Platforms +-------------------------- + +.. imgtable:: + Addressable Light, components/display/addressable_light, addressable_light.jpg ILI9xxx, components/display/ili9xxx, ili9341.jpg ILI9341, components/display/ili9xxx, ili9341.svg @@ -675,15 +755,14 @@ Display Components ILI9486, components/display/ili9xxx, ili9341.jpg ILI9488, components/display/ili9xxx, ili9488.svg WSPICOLCD, components/display/ili9xxx, ili9488.svg - Inkplate, components/display/inkplate6, inkplate6.jpg LCD Display, components/display/lcd_display, lcd.jpg - MAX7219, components/display/max7219, max7219.jpg MAX7219 Dot Matrix, components/display/max7219digit, max7219digit.jpg + MAX7219, components/display/max7219, max7219.jpg Nextion, components/display/nextion, nextion.jpg PCD8544 (Nokia 5110/ 3310), components/display/pcd8544, pcd8544.jpg - Quad SPI AMOLED, components/display/qspi_amoled, t4-s3.jpg PVVX MiThermometer, components/display/pvvx_mithermometer, ../components/sensor/images/xiaomi_lywsd03mmc.jpg + Quad SPI AMOLED, components/display/qspi_amoled, t4-s3.jpg RPI_DPI_RGB, components/display/rpi_dpi_rgb, waveshare_touch-s3.jpg SSD1306, components/display/ssd1306, ssd1306.jpg SSD1322, components/display/ssd1322, ssd1322.jpg @@ -692,14 +771,15 @@ Display Components SSD1331, components/display/ssd1331, ssd1331.jpg SSD1351, components/display/ssd1351, ssd1351.jpg ST7567, components/display/st7567, st7567.jpg - ST7735, components/display/st7735, st7735.jpg ST7701S, components/display/st7701s, indicator.jpg + ST7735, components/display/st7735, st7735.jpg ST7789V, components/display/st7789v, st7789v.jpg ST7796, components/display/ili9xxx, st7796.svg ST7920, components/display/st7920, st7920.jpg TM1621, components/display/tm1621, tm1621.jpg TM1637, components/display/tm1637, tm1637.jpg TM1638, components/display/tm1638, tm1638.jpg + TM1651 Battery Display, components/tm1651, tm1651_battery_display.jpg Waveshare E-Paper, components/display/waveshare_epaper, waveshare_epaper.jpg Touchscreen Components @@ -708,14 +788,14 @@ Touchscreen Components .. imgtable:: Touchscreen Core, components/touchscreen/index, folder-open.svg, dark-invert + CST226, components/touchscreen/cst226, t4-s3.jpg CST816, components/touchscreen/cst816, cst816.jpg EKTF2232, components/touchscreen/ektf2232, ektf2232.svg, Inkplate 6 Plus + FT63X6, components/touchscreen/ft63x6, wt32-sc01.png + GT911, components/touchscreen/gt911, esp32_s3_box_3.png Lilygo T5 4.7", components/touchscreen/lilygo_t5_47, lilygo_t5_47_touch.jpg TT21100, components/touchscreen/tt21100, esp32-s3-korvo-2-lcd.png XPT2046, components/touchscreen/xpt2046, xpt2046.jpg - CST226, components/touchscreen/cst226, t4-s3.jpg - GT911, components/touchscreen/gt911, esp32_s3_box_3.png - FT63X6, components/touchscreen/ft63x6, wt32-sc01.png Cover Components ---------------- @@ -724,14 +804,21 @@ Cover Components Cover Core, components/cover/index, folder-open.svg, dark-invert Template Cover, components/cover/template, description.svg, dark-invert - Feedback Cover, components/cover/feedback, feedback_cover.svg, dark-invert - Endstop Cover, components/cover/endstop, electric-switch.svg, dark-invert - Current-Based Cover, components/cover/current_based, flash.svg, dark-invert - Time-Based Cover, components/cover/time_based, timer.svg, dark-invert - Custom Cover, components/cover/custom, language-cpp.svg, dark-invert AM43 Cover, components/cover/am43, am43.jpg - Tuya Cover, components/cover/tuya, tuya.png + Current-Based Cover, components/cover/current_based, flash.svg, dark-invert + Endstop Cover, components/cover/endstop, electric-switch.svg, dark-invert + Feedback Cover, components/cover/feedback, feedback_cover.svg, dark-invert HE60R Cover, components/cover/he60r, he60r.jpg + Time-Based Cover, components/cover/time_based, timer.svg, dark-invert + Tuya Cover, components/cover/tuya, tuya.png + +Text Components +--------------- + +.. imgtable:: + + Text Core, components/text/index, folder-open.svg, dark-invert + Template Text, components/text/template, description.svg, dark-invert Text Sensor Components ---------------------- @@ -739,20 +826,19 @@ Text Sensor Components .. imgtable:: Text Sensor Core, components/text_sensor/index, folder-open.svg, dark-invert - Home Assistant, components/text_sensor/homeassistant, home-assistant.svg, dark-invert - MQTT Subscribe Text, components/text_sensor/mqtt_subscribe, mqtt.png - Version, components/text_sensor/version, new-box.svg, dark-invert - WiFi Info, components/text_sensor/wifi_info, network-wifi.svg, dark-invert - Ethernet Info, components/text_sensor/ethernet_info, ethernet.svg, dark-invert - BLE Scanner, components/text_sensor/ble_scanner, bluetooth.svg, dark-invert - Modbus Text Sensor, components/text_sensor/modbus_controller, modbus.png Template Text Sensor, components/text_sensor/template, description.svg, dark-invert - Custom Text Sensor, components/text_sensor/custom, language-cpp.svg, dark-invert + BLE Scanner, components/text_sensor/ble_scanner, bluetooth.svg, dark-invert + Ethernet Info, components/text_sensor/ethernet_info, ethernet.svg, dark-invert + Home Assistant, components/text_sensor/homeassistant, home-assistant.svg, dark-invert + LibreTiny, components/text_sensor/libretiny, libretiny.svg + Modbus Text Sensor, components/text_sensor/modbus_controller, modbus.png + MQTT Subscribe Text, components/text_sensor/mqtt_subscribe, mqtt.png Nextion Text Sensor, components/text_sensor/nextion, nextion.jpg Tuya Text Sensor, components/text_sensor/tuya, tuya.png - WL-134 Pet Tag Sensor , components/text_sensor/wl_134, fingerprint.svg, dark-invert - LibreTiny, components/text_sensor/libretiny, libretiny.svg + Version, components/text_sensor/version, new-box.svg, dark-invert + WiFi Info, components/text_sensor/wifi_info, network-wifi.svg, dark-invert WireGuard, components/wireguard, wireguard_custom_logo.svg + WL-134 Pet Tag Sensor , components/text_sensor/wl_134, fingerprint.svg, dark-invert Climate Components ------------------ @@ -760,16 +846,15 @@ Climate Components .. imgtable:: Climate Core, components/climate/index, folder-open.svg, dark-invert - Bang Bang Controller, components/climate/bang_bang, air-conditioner.svg, dark-invert - Thermostat Controller, components/climate/thermostat, air-conditioner.svg, dark-invert - Custom Climate, components/climate/custom, language-cpp.svg, dark-invert - PID Controller, components/climate/pid, function.svg, dark-invert - IR Remote Climate, components/climate/climate_ir, air-conditioner-ir.svg, dark-invert - Tuya Climate, components/climate/tuya, tuya.png - Midea, components/climate/midea, midea.svg Anova Cooker, components/climate/anova, anova.png + Bang Bang Controller, components/climate/bang_bang, air-conditioner.svg, dark-invert BedJet Climate System, components/climate/bedjet, bedjet.png Haier Climate, components/climate/haier, haier.svg + IR Remote Climate, components/climate/climate_ir, air-conditioner-ir.svg, dark-invert + Midea, components/climate/midea, midea.svg + PID Controller, components/climate/pid, function.svg, dark-invert + Thermostat Controller, components/climate/thermostat, air-conditioner.svg, dark-invert + Tuya Climate, components/climate/tuya, tuya.png Uponor Smatrix Base Pulse Underfloor Heating, components/uponor_smatrix, uponor.svg Number Components @@ -778,8 +863,8 @@ Number Components .. imgtable:: Number Core, components/number/index, folder-open.svg, dark-invert - Modbus Number, components/number/modbus_controller, modbus.png Template Number, components/number/template, description.svg, dark-invert + Modbus Number, components/number/modbus_controller, modbus.png Tuya Number, components/number/tuya, tuya.png Select Components @@ -798,16 +883,8 @@ Lock Components .. imgtable:: Lock Core, components/lock/index, folder-open.svg, dark-invert - Generic Output Lock, components/lock/output, upload.svg, dark-invert Template Lock, components/lock/template, description.svg, dark-invert - -Text Components ---------------- - -.. imgtable:: - - Text Core, components/text/index, folder-open.svg, dark-invert - Template Text, components/text/template, description.svg, dark-invert + Generic Output Lock, components/lock/output, upload.svg, dark-invert Media Player Components ----------------------- @@ -815,6 +892,7 @@ Media Player Components .. imgtable:: Media Player Core, components/media_player/index, folder-open.svg, dark-invert + DFPlayer, components/dfplayer, dfplayer.svg, dark-invert I2S Audio, components/media_player/i2s_audio, i2s_audio.svg Microphone Components @@ -839,24 +917,26 @@ Time Components .. imgtable:: Time Core, components/time/index, clock-outline.svg, dark-invert - Home Assistant Time, components/time/homeassistant, home-assistant.svg, dark-invert - 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 + GPS Time, components/time/gps, crosshairs-gps.svg, dark-invert + Home Assistant Time, components/time/homeassistant, home-assistant.svg, dark-invert PCF85063 RTC, components/time/pcf85063, clock-outline.svg, dark-invert + PCF8563 RTC, components/time/pcf8563, clock-outline.svg, dark-invert + SNTP, components/time/sntp, clock-outline.svg, dark-invert -Home Assistant Companion Components ------------------------------------ +Home Assistant Components +------------------------- + +Components specifically for interacting with Home Assistant. .. imgtable:: + Binary Sensor, components/binary_sensor/homeassistant, home-assistant.svg, dark-invert Bluetooth Proxy, components/bluetooth_proxy, bluetooth.svg, dark-invert - Voice Assistant, components/voice_assistant, voice-assistant.svg, dark-invert micro Wake Word, components/micro_wake_word, voice-assistant.svg, dark-invert Sensor, components/sensor/homeassistant, home-assistant.svg, dark-invert Text Sensor, components/text_sensor/homeassistant, home-assistant.svg, dark-invert - Binary Sensor, components/binary_sensor/homeassistant, home-assistant.svg, dark-invert + Voice Assistant, components/voice_assistant, voice-assistant.svg, dark-invert Alarm Control Panel Components @@ -875,81 +955,75 @@ Datetime Components Datetime Core, components/datetime/index, clock-outline.svg, dark-invert Template Datetime, components/datetime/template, description.svg, dark-invert +Energy/Solar Management +----------------------- + +.. imgtable:: + + PipSolar-compatible PV Inverter, components/pipsolar, pipsolar.jpg + Power Supply, components/power_supply, power.svg, dark-invert + Resol VBus, components/vbus, resol_deltasol_bs_plus.jpg + SML, components/sml, sml.svg + SUN-GTIL2 inverter, components/sun_gtil2, sun_1000g2.png + +Electromechanical +----------------- + +.. imgtable:: + + Atlas Scientific Peristaltic Pump, components/ezo_pmp, ezo-pmp.jpg + Grove TB6612FNG, components/grove_tb6612fng, motor.png + Matrix Keypad, components/matrix_keypad, matrix_keypad.jpg + RTTTL Buzzer, components/rtttl, buzzer.jpg + Servo, components/servo, servo.svg + Stepper, components/stepper/index, stepper.svg + +Wireless Communication +---------------------- + +Wireless communication that is **not Wi-Fi.** + +.. imgtable:: + + IR Remote Climate, components/climate/climate_ir, air-conditioner-ir.svg, dark-invert + Remote Receiver, components/remote_receiver, remote.svg, dark-invert + Remote Transmitter, components/remote_transmitter, remote.svg, dark-invert + RF Bridge, components/rf_bridge, rf_bridge.jpg + SIM800L, components/sim800l, sim800l.jpg + Miscellaneous Components ------------------------ .. imgtable:: - Remote Receiver, components/remote_receiver, remote.svg, dark-invert - Remote Transmitter, components/remote_transmitter, remote.svg, dark-invert - Status LED, components/status_led, led-on.svg, dark-invert - Display Menu Core, components/display_menu/index, folder-open.svg, dark-invert - LCD Menu, components/display_menu/lcd_menu, lcd_menu.png - Graphical Display Menu, components/display_menu/graphical_display_menu, graphical_display_menu.png - Matrix Keypad, components/matrix_keypad, matrix_keypad.jpg - Wiegand Reader, components/wiegand, wiegand.jpg - HTTP Request, components/http_request, connection.svg, dark-invert - mDNS, components/mdns, radio-tower.svg, dark-invert - - Sun, components/sun, weather-sunny.svg, dark-invert - GPS, components/gps, crosshairs-gps.svg, dark-invert - - Bluetooth Proxy, components/bluetooth_proxy, bluetooth.svg, dark-invert - ESP32 BLE Client, components/ble_client, bluetooth.svg, dark-invert - ESP32 BLE Tracker, components/esp32_ble_tracker, bluetooth.svg, dark-invert - ESP32 BLE Beacon, components/esp32_ble_beacon, bluetooth.svg, dark-invert - - ESP32 Ethernet, components/ethernet, ethernet.svg, dark-invert ESP32 Camera, components/esp32_camera, camera.svg, dark-invert - ESP32 Camera Web Server, components/esp32_camera_web_server, camera.svg, dark-invert - - I²S Audio, components/i2s_audio, i2s_audio.svg - - 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 - PCF8574 I/O Expander, components/pcf8574, pcf8574.jpg - MAX6956 I/O expander - I²C Bus, components/max6956, max6956.jpg - MCP230XX I/O Expander - I²C Bus, components/mcp230xx, mcp230xx.svg - TCA9548A I²C Multiplexer, components/tca9548a, tca9548a.jpg - MCP23SXX I/O Expander - SPI Bus, components/mcp23Sxx, mcp230xx.svg - 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 - Improv via BLE, components/esp32_improv, improv.svg, dark-invert - Improv via Serial, components/improv_serial, improv.svg, dark-invert - Debug Component, components/debug, bug-report.svg, dark-invert - TM1651 Battery Display, components/tm1651, tm1651_battery_display.jpg - RF Bridge, components/rf_bridge, rf_bridge.jpg - Tuya MCU, components/tuya, tuya.png - Modbus Controller, components/modbus_controller, modbus.png Exposure Notifications, components/exposure_notifications, exposure_notifications.png - RTTTL Buzzer, components/rtttl, buzzer.jpg - Prometheus, components/prometheus, prometheus.svg - PipSolar - compatible PV Inverter, components/pipsolar, pipsolar.jpg + GPS, components/gps, crosshairs-gps.svg, dark-invert Grow Fingerprint Reader, components/fingerprint_grow, fingerprint.svg, dark-invert - SML, components/sml, sml.svg - SUN-GTIL2 inverter, components/sun_gtil2, sun_1000g2.png - Atlas Scientific Peristaltic Pump, components/ezo_pmp, ezo-pmp.jpg - Resol VBus, components/vbus, resol_deltasol_bs_plus.jpg - WireGuard, components/wireguard, wireguard_custom_logo.svg - Demo, components/demo, description.svg, dark-invert - Copy, components/copy, content-copy.svg, dark-invert + Modbus Controller, components/modbus_controller, modbus.png + Sprinkler, components/sprinkler, sprinkler-variant.svg, dark-invert + Status LED, components/status_led, led-on.svg, dark-invert + Sun, components/sun, weather-sunny.svg, dark-invert + Tuya MCU, components/tuya, tuya.png -Additional Custom Components ----------------------------- +Custom Components +----------------- + +**Note: Custom Components are deprecated in favor of** :doc:`components/external_components`! .. imgtable:: Generic Custom Component, custom/custom_component, language-cpp.svg, dark-invert + + Custom Binary Sensor, components/binary_sensor/custom, language-cpp.svg, dark-invert + Custom Climate, components/climate/custom, language-cpp.svg, dark-invert + Custom Cover, components/cover/custom, language-cpp.svg, dark-invert + Custom Light, components/light/custom, language-cpp.svg, dark-invert + Custom Output, components/output/custom, language-cpp.svg, dark-invert + Custom Sensor, components/sensor/custom, language-cpp.svg, dark-invert + Custom Switch, components/switch/custom, language-cpp.svg, dark-invert + Custom Text Sensor, components/text_sensor/custom, language-cpp.svg, dark-invert + Custom I²C Component, custom/i2c, language-cpp.svg, dark-invert Custom SPI Component, custom/spi, language-cpp.svg, dark-invert Custom UART Component, custom/uart, language-cpp.svg, dark-invert From 0559ef14fbd526706989b2c5e9ba86e889f00ef5 Mon Sep 17 00:00:00 2001 From: Jean Louis-Guerin Date: Wed, 24 Apr 2024 03:21:48 +0200 Subject: [PATCH 05/11] Add WeiKai component documentation (#3113) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Keith Burzinski Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com> Co-authored-by: H. Árkosi Róbert --- components/images/DFR0627.jpg | Bin 0 -> 112830 bytes components/weikai.rst | 340 ++++++++++++++++++++++++++++++++++ images/wk2168.jpg | Bin 0 -> 18827 bytes index.rst | 1 + 4 files changed, 341 insertions(+) create mode 100644 components/images/DFR0627.jpg create mode 100644 components/weikai.rst create mode 100644 images/wk2168.jpg diff --git a/components/images/DFR0627.jpg b/components/images/DFR0627.jpg new file mode 100644 index 0000000000000000000000000000000000000000..5a112ccc9568a2ae02dd82f6b7a83f2d8c9b7bef GIT binary patch literal 112830 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 literal 0 HcmV?d00001 diff --git a/components/weikai.rst b/components/weikai.rst new file mode 100644 index 000000000..eec22c4e6 --- /dev/null +++ b/components/weikai.rst @@ -0,0 +1,340 @@ +WeiKai SPI/I²C UART/IO Expander +=============================== + +.. seo:: + :description: Instructions for setting up WeiKai SPI/I²C to UART Expanders in ESPHome. + :image: wk2168.jpg + :keywords: UART, SPI, I²C, WK2132, WK2168, WK2204, WK2212, wk2124 + +**WeiKai Microelectronics** provides a family of UART & GPIO expansion chips +that interfaces to a micro-controller through SPI or I²C bus. + +The ESPHome ``WeiKai`` component supports the following WeiKai chips: + +- `WK2168-IQPG `__ +- `WK2132-ISSG `__ +- `WK2124-ISSG `__ +- `WK2204-IQNG `__ +- `WK2212-IQNG `__ + +It can also be used with evaluation board equipped with these chips, such as: + +- `WK2168 Chip Development Board `__ +- `WK2132 Chip Development Board `__ +- `DFROBOT Gravity: I²C to Dual UART Module `__ + +.. figure:: images/DFR0627.jpg + :align: center + +The features provided by the different WeiKai chips are described in the following table: + +.. list-table:: WeiKai chip's features + :header-rows: 1 + :width: 450px + :align: center + + * - Chip + - Bus + - UART + - GPIO + * - WK2132-ISSG + - S/I + - 2 + - + * - WK2212-IQNG + - S/I + - 2 + - 8 + * - WK2124-ISSG + - S + - 4 + - + * - WK2204-IQNG + - S/I + - 4 + - + * - WK2168-IQPG + - S/I + - 4 + - 8 + +As you can see most of the components can interface either through an I²C bus or a SPI bus, +they provide either 2 or 4 serial channels, and some provide 8 input/output pins. + +Each UART channel has two independent 256-byte FIFO hardware buffers to transmit and +receive and support data transmission rates up to 1 Mbps. +The baud rate and parity format of each UART channel can be configured independently. +However, the data bit length is fixed at 8. + +Utilizing the UART channels enables you to connect your UART devices, with each channel functioning +as a virtual UART bus for the connected component. + +The I/O pins of the WeiKai chips can be use as any of the other GPIO pins. +Any option accepting a :ref:`Pin Schema ` can theoretically +be used, but some more complicated components that do communication through +this I/O expander might not work. + +Connecting via an SPI bus +------------------------- + +The ``wk2132_spi``, ``wk2212_spi``, ``wk2204_spi``, ``wk2168_spi`` components allows +you to connect the WeiKai chip with ESPHome via a :ref:`SPI ` bus. + +You can connect several of these modules to a single SPI controller circuit effectively expanding +the number of hardware serial ports available. Each WeiKai chip needs to be selected +with a individual CS. + +Here is an example of configuration entry for a wk2168_spi component. For the other components +in the list just replace the name of the component and make sure you do not use more channels that the chip +can support (an error message will be generated otherwise). Note that for the ``WK2124-ISSG`` chip +you need to use ``wk2204_spi`` as the two chips are similar. + +.. code-block:: yaml + + wk2168_spi: + - id: wk2168_bridge_spi + cs_pin: 5 + uart: + - id: spi_uart_0 + channel: 0 + baud_rate: 128200 + parity: even + - id: spi_uart_1 + channel: 1 + baud_rate: 19200 + - id: spi_uart_2 + channel: 2 + baud_rate: 9600 + - id: spi_uart_3 + channel: 3 + baud_rate: 19200 + +Configuration variables: +************************ + +- **id** (**Required**, :ref:`config-id`): The id to use for this WeiKai component. +- **spi_id** (*Optional*, :ref:`config-id`): Manually specify the ID of the :ref:`SPI Component ` if you want + to use multiple SPI buses. +- **cs_pin** (**Required**, :ref:`Pin Schema `): The pin on the ESP that the chip select line + of the chip is connected to. +- **data_rate** (*Optional*): Set the data rate of the controller. One of ``80MHz``, ``40MHz``, ``20MHz``, ``10MHz``, + ``5MHz``, ``4MHz``, ``2MHz``, ``1MHz`` (default), ``200kHz``, ``75kHz`` or ``1kHz``. A numeric value in Hz can + alternatively be specified. +- **crystal** (*Optional*): The frequency in Hz of the crystal connected to the chip. + The default value is 14745600 Hz. +- **uart** (**Required**): The UART channels. + + - **id** (**Required**, :ref:`config-id`): The id to use for this UART channel. + - **channel** (**Required**): Unique channel number of this virtual UART. + Options: ``0`` to ``1`` or ``0`` to ``3`` depending on the model. + - **baud_rate** (**Required**): The baud rate of the UART channel. + - **parity** (*Optional*): The parity used on the UART channel. Options: ``NONE``, ``EVEN``, + ``ODD``. Defaults to ``NONE``. + - **stop_bits** (*Optional*): The number of stop bits to send. Options: ``1``, ``2``. + Defaults to ``1``. + +Connecting via an I²C bus +------------------------- + +The ``wk2132_i2c`` ``wk2212_i2c`` ``wk2204_i2c`` ``wk2168_i2c`` components allows you +to connect the WeiKai chip with ESPHome via an :ref:`I²C ` bus. +Up to four WeiKai chips can be connected to an I²C controller board, effectively expanding the +available hardware serial ports. The base addresses of these boards are defined by the +positions of two switches, A0 and A1, on the board. + +.. list-table:: WeiKai address selection + :header-rows: 1 + :width: 350px + :align: center + + * - I²C address + - A1 + - A0 + * - 0x10 - 0x17 + - 0 + - 0 + * - 0x30 - 0x37 + - 0 + - 1 + * - 0x50 - 0x57 + - 1 + - 0 + * - 0x70 - 0x77 + - 1 + - 1 + +.. important:: + + Note that the address is given as a **range** a not a number as you usually find on other I²C component. + Indeed due to a peculiar way of addressing the different internal registers each component actually occupy + 8 consecutive addresses. For example if the component base address is 0x10, it will occupy the addresses ranging from + 0x10 to 0x17 on the I²C bus. + + This is important to know if you want to connect other devices on the same I²C bus. + +Here is an example of configuration entry for a ``wk2168_i2c`` component. For the other components +just replace the name of the component and do not use more channels that the chip can +support (an error message will be generated in this case). + +.. code-block:: yaml + + wk2168_i2c: + - address: 0x70 + id: wk2168_bridge_i2c + uart: + - id: i2c_uart_0 + channel: 0 + baud_rate: 9600 + parity: even + - id: i2c_uart_1 + channel: 1 + baud_rate: 19200 + - id: i2c_uart_2 + channel: 2 + baud_rate: 9600 + - id: i2c_uart_3 + channel: 3 + baud_rate: 19200 + +Configuration variables: +************************ + +- **id** (**Required**, :ref:`config-id`): The id to use for this WeiKai component. +- **address** (*Optional*): The I²C address of this component. Defaults to ``0x10``. +- **i2c_id** (*Optional*): The I²C Bus ID. Defaults to the default i²c bus. +- **crystal** (*Optional*): The frequency in Hz of the crystal connected to the chip. + The default value is 14745600 Hz. +- **uart** (*Required*): The UART channels. + + - **id** (**Required**, :ref:`config-id`): The id to use for this UART channel. + - **channel** (**Required**): Unique channel number of this virtual UART. + Options: ``0`` to ``1`` or ``0`` to ``3`` depending on the model. + - **baud_rate** (**Required**): The baud rate of the UART channel. + - **parity** (*Optional*): The parity used on the UART channel. Options: ``NONE``, ``EVEN``, + ``ODD``. Defaults to ``NONE``. + - **stop_bits** (*Optional*): The number of stop bits to send. Options: ``1``, ``2``. + Defaults to ``1``. + +Using the GPIO pins +------------------- + +For the ``WK2212``, and ``WK2168`` it is possible to use the chip I/O pins as any of the other GPIO pins. +For example for a wk2168_spi chip: + +.. code-block:: yaml + + # individual binary_sensor inputs + binary_sensor: + - platform: gpio + name: "pin_0" + pin: + wk2168_spi: wk2168_bridge_spi + number: 0 + mode: + input: true + - platform: gpio + name: "pin_1" + pin: + wk2168_spi: wk2168_bridge_spi + number: 1 + mode: + input: true + inverted: true + + # Individual binary outputs + switch: + - platform: gpio + name: "pin_2" + pin: + wk2168_spi: wk2168_bridge_spi + number: 2 + mode: + output: true + - platform: gpio + name: "pin_3" + pin: + wk2168_spi: wk2168_bridge_spi + number: 3 + mode: + output: true + inverted: true + +Pin configuration variables: +**************************** + +- **wkxxxx_xxx** (**Required**, :ref:`config-id`): The id of the ``wkxxxx_xxx`` component for the pin. For + example ``wk2212_i2c: wk2168_bridge_spi`` +- **number** (**Required**): The pin number (``0`` to ``7``) +- **inverted** (*Optional*): If all read and written values should be treated as inverted. Defaults to ``false``. +- **mode** (*Optional*): A pin mode to set for the pin at. One of ``INPUT`` or ``OUTPUT``. Default to ``INPUT`` + +Performance considerations: +--------------------------- + +Bus speed +********* + +Please be aware that the communication between the WeiKai chips and the processor occurs on an external bus, +with a relatively low operating frequency. Therefore tasks such as checking the status of the chip's +registers or transferring bytes from the internal FIFOs to the processor may take time. + +To improve this situation, it is strongly recommended to increase the default bus frequency. + +- With a SPI bus this can be done on the WeiKai component by specifying ``data_rate``. For example: + +.. code-block:: yaml + + wk2168_spi: + - id: wk2168_bridge_spi + spi_id: spi_bus_id + cs_pin: 5 + data_rate: 4MHz + +- With an I²C bus this needs to be done on the ``i2c`` declaration and therefore this frequency will + apply to all components connected to this bus. + +.. code-block:: yaml + + i2c: + sda: 21 + scl: 22 + scan: true + id: bus_i2c + frequency: 800kHz + +Maximum Baud rate +***************** + +The maximum baud_rate is proportional to the crystal frequency. The following table +gives the maximum baud_rate at usual system clock: + +.. list-table:: maximum baud rate + :header-rows: 1 + :width: 300px + :align: center + + * - Clock + - Max Bd + * - 14,745,600 Hz + - 921,600 Bd + * - 11,059,200 Hz + - 691,200 Bd + * - 7,372,800 Hz + - 460,800 Bd + * - 3,686,400 Hz + - 230,400 Bd + * - 1,843,200 Hz + - 115,200 Bd + +If you try to use a baud rate superior to the maximum baud_rate an error will be displayed in the +log file and the baud rate will automatically be decreased. + +See Also +-------- + +- :ref:`i2c` +- :ref:`spi` +- :doc:`switch/gpio` +- :doc:`binary_sensor/gpio` +- :apiref:`weika/weika.h` +- :ghedit:`Edit` diff --git a/images/wk2168.jpg b/images/wk2168.jpg new file mode 100644 index 0000000000000000000000000000000000000000..284699c938f5016c21ed1cc85ae30cd1305e2fb4 GIT binary patch literal 18827 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 Q0B+%&QAhD+iU* Date: Tue, 23 Apr 2024 19:35:29 -0700 Subject: [PATCH 06/11] Event components (#3722) Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com> --- components/event/index.rst | 147 ++++++++++++++++++++++++++++++++++ components/event/template.rst | 31 +++++++ components/index.rst | 1 + index.rst | 8 ++ schema_doc.py | 1 + 5 files changed, 188 insertions(+) create mode 100644 components/event/index.rst create mode 100644 components/event/template.rst diff --git a/components/event/index.rst b/components/event/index.rst new file mode 100644 index 000000000..85004ac46 --- /dev/null +++ b/components/event/index.rst @@ -0,0 +1,147 @@ +Event Component +=============== + +.. seo:: + :description: Instructions for setting up event components in ESPHome. + :image: folder-open.svg + +ESPHome supports the creation of event entities in Home Assistant. +These entities allow for the triggering of custom events within the Home Assistant ecosystem, +enabling complex automations and integrations. An event entity is represented as a stateless +entity associated with a device that has a pre-defined set of event types which can be +triggered in Home Assistant via automations. + +.. note:: + + Events in ESPHome are designed to trigger an action in Home Assistant, and have a unidirectional flow from ESPHome to Home Assistant. + Home Assistant event entities are different from events on event bus. If you just want to trigger an event on the + Home Assistant event bus, you should use a :ref:`Home Assistant event ` instead. + + +.. note:: + + Home Assistant Core 2024.5 or higher is required for ESPHome event entities to work. + +.. _config-event: + +Base Event Configuration +------------------------ + +Each event in ESPHome needs to be configured with a list of event types it can trigger and an optional device class. + +.. code-block:: yaml + + # Example event configuration + event: + - platform: ... + name: Motion Detected Event + id: my_event + + # Optional variables: + icon: "mdi:motion-sensor" + device_class: "motion" + on_event: + then: + - logger.log: "Event triggered" + +Configuration variables: + +One of ``id`` or ``name`` is required. + +- **id** (**Required**, :ref:`config-id`): Manually specify the ID used for code generation, allowing for further customization or interaction with this event within ESPHome scripts or lambda functions. +- **name** (**Required**, string): The name for the event. + + .. note:: + + If you have a :ref:`friendly_name ` set for your device and + you want the event to use that name, you can set ``name: None``. + +- **icon** (*Optional*, icon): Manually set the icon to use for the event 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). +- **entity_category** (*Optional*, string): The category of the entity. + See https://developers.home-assistant.io/docs/core/entity/#generic-properties + for a list of available options. Set to ``""`` to remove the default entity category. +- **device_class** (*Optional*, string): The device class for the event. The following device classes are supported by event entities: + + - None: Generic event. This is the default and doesn't need to be set. + - ``button``: For remote control buttons. + - ``doorbell``: Specifically for buttons that are used as a doorbell. + - ``motion``: For motion events detected by a motion sensor. + + See https://www.home-assistant.io/integrations/event/#device-class + for a list of available options. + +Automations: + +- **on_event** (*Optional*, :ref:`Automation `): An automation to perform when an event is triggered. + +MQTT options: + +- All other options from :ref:`MQTT Component `. + +Event Automation +---------------- + +.. _event-on_event: + +``on_event`` +************ + +This automation will be triggered when an event of the specified types is triggered. + +.. code-block:: yaml + + event: + - platform: template + # ... + on_event: + then: + - logger.log: "Event Triggered" + +Configuration variables: see :ref:`Automation `. + +``event.trigger`` Action +************************ + +This action allows for the triggering of an event from within an automation. + +.. code-block:: yaml + + - event.trigger: + id: my_event + event_type: "custom_event" + +Configuration variables: + +- **id** (**Required**, :ref:`config-id`): The ID of the event. +- **event_type** (**Required**, string): The type of event to trigger. + +.. _event-lambda_calls: + +lambda Calls +************ + +From :ref:`lambdas `, you can trigger an event. + +- ``trigger(std::string event_type)``: Trigger an event with the specified type. + + .. code-block:: cpp + + // Within lambda, trigger the event. + id(my_event).trigger("custom_event"); + +See Also +-------- + +- :apiref:`event/event.h` +- :ghedit:`Edit` + +.. toctree:: + :maxdepth: 1 + :glob: + + * diff --git a/components/event/template.rst b/components/event/template.rst new file mode 100644 index 000000000..d0a8d5533 --- /dev/null +++ b/components/event/template.rst @@ -0,0 +1,31 @@ +Template Event +============== + +.. seo:: + :description: Instructions for setting up template events that can trigger arbitrary automations when an event occurs. + :image: description.svg + +The ``template`` event platform enables you to define events that trigger specific automations or actions within Home Assistant. These custom events can be utilized to orchestrate complex behaviors across your smart home ecosystem based on conditions or sequences defined in your ESPHome configuration. + +.. code-block:: yaml + + # Example configuration entry + event: + - platform: template + name: "Template Event" + event_types: + - "custom_event_1" + - "custom_event_2" + +Configuration variables: +------------------------ + +- **event_types** (**Required**, list): A list of custom event identifiers that this template event is capable of triggering. These identifiers can be used in Home Assistant automations or ESPHome scripts to perform actions when the event occurs. +- All other options from :ref:`Event `. + +See Also +-------- + +- :doc:`/guides/automations` +- :doc:`/components/event/index` +- :ghedit:`Edit` diff --git a/components/index.rst b/components/index.rst index a3e62fc17..b1f4c8739 100644 --- a/components/index.rst +++ b/components/index.rst @@ -17,6 +17,7 @@ Components sensor/index switch/index button/index + event/index display/index text_sensor/index stepper/index diff --git a/index.rst b/index.rst index 2c6f87d22..3f6bdf1b8 100644 --- a/index.rst +++ b/index.rst @@ -719,6 +719,14 @@ Button Components UART Button, components/button/uart, uart.svg Wake-on-LAN, components/button/wake_on_lan, power_settings.svg, dark-invert +Event Components +----------------- + +.. imgtable:: + + Event Core, components/event/index, folder-open.svg, dark-invert + Template Event, components/event/template, description.svg, dark-invert + Fan Components -------------- diff --git a/schema_doc.py b/schema_doc.py index 36655981a..21042f584 100644 --- a/schema_doc.py +++ b/schema_doc.py @@ -85,6 +85,7 @@ PLATFORMS_TITLES = { "Microphone": "microphone", "Speaker": "speaker", "Alarm Control Panel": "alarm_control_panel", + "Event": "event", } CUSTOM_DOCS = { From ab21cada9386c16715ed5d7f54b2b4bfb6138436 Mon Sep 17 00:00:00 2001 From: rforro Date: Wed, 24 Apr 2024 05:21:12 +0200 Subject: [PATCH 07/11] Include roomba ir in docs (#2767) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Richard Forro Co-authored-by: H. Árkosi Róbert Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com> --- components/remote_receiver.rst | 8 ++++++++ components/remote_transmitter.rst | 23 +++++++++++++++++++++++ 2 files changed, 31 insertions(+) diff --git a/components/remote_receiver.rst b/components/remote_receiver.rst index d3eb1f6f5..eda32b68c 100644 --- a/components/remote_receiver.rst +++ b/components/remote_receiver.rst @@ -54,6 +54,7 @@ Configuration variables: - **rc5**: Decode and dump RC5 IR codes. - **rc6**: Decode and dump RC6 IR codes. - **rc_switch**: Decode and dump RCSwitch RF codes. + - **roomba**: Decode and dump Roomba infrared codes. - **samsung**: Decode and dump Samsung infrared codes. - **samsung36**: Decode and dump Samsung36 infrared codes. - **sony**: Decode and dump Sony infrared codes. @@ -165,6 +166,9 @@ Automations: - **on_rc_switch** (*Optional*, :ref:`Automation `): An automation to perform when a RCSwitch RF code has been decoded. A variable ``x`` of type :apistruct:`remote_base::RCSwitchData` is passed to the automation for use in lambdas. +- **on_roomba** (*Optional*, :ref:`Automation `): An automation to perform when a + Roomba remote code has been decoded. A variable ``x`` of type :apistruct:`remote_base::RoombaData` + is passed to the automation for use in lambdas. - **on_samsung** (*Optional*, :ref:`Automation `): An automation to perform when a Samsung remote code has been decoded. A variable ``x`` of type :apistruct:`remote_base::SamsungData` is passed to the automation for use in lambdas. @@ -398,6 +402,10 @@ Remote code selection (exactly one of these has to be included): - **state** (**Required**, boolean): The on/off state to trigger on. - **protocol** (*Optional*): The RC Switch protocol to use, see :ref:`remote_transmitter-rc_switch-protocol` for more info. +- **roomba**: Trigger on a decoded Roomba remote code with the given data. + + - **data** (**Required**, int): The Roomba code to trigger on, see dumper output for more info. + - **samsung**: Trigger on a decoded Samsung remote code with the given data. - **data** (**Required**, int): The data to trigger on, see dumper output for more info. diff --git a/components/remote_transmitter.rst b/components/remote_transmitter.rst index 5d34b30b3..5bafd4972 100644 --- a/components/remote_transmitter.rst +++ b/components/remote_transmitter.rst @@ -781,6 +781,29 @@ Configuration variables: for more information. - All other options from :ref:`remote_transmitter-transmit_action`. +.. _remote_transmitter-transmit_roomba: + +``remote_transmitter.transmit_roomba`` Action +********************************************* + +This :ref:`action ` sends a Roomba infrared remote code to a remote transmitter. + +.. code-block:: yaml + + on_...: + - remote_transmitter.transmit_roomba: + data: 0x88 # clean + repeat: + times: 3 + wait_time: 17ms + +Configuration variables: + +- **data** (**Required**, int): The Roomba code to send, see dumper output for more info. +- Note that ``repeat`` is still optional, however **Roomba vacuums require that a given code is received at least three times before they will act on it.** If your Roomba still does not respond to sent command increase this value. +- Note that ``wait_time`` is still optional; it will even work without this parameter, but Roomba Remote uses this 17 ms wait time between sent commands. +- All other options from :ref:`remote_transmitter-transmit_action`. + .. _remote_transmitter-transmit_samsung: ``remote_transmitter.transmit_samsung`` Action From 57c9493b1b5c692b36577f0002e3b8837b573a92 Mon Sep 17 00:00:00 2001 From: Jesse Hills <3060199+jesserockz@users.noreply.github.com> Date: Fri, 26 Apr 2024 09:19:56 +1200 Subject: [PATCH 08/11] Add DateTime datetime type entities to docs (#3784) Co-authored-by: Keith Burzinski --- components/datetime/index.rst | 97 ++++++++++++++++++++++++++++++-- components/datetime/template.rst | 24 ++++++++ 2 files changed, 115 insertions(+), 6 deletions(-) diff --git a/components/datetime/index.rst b/components/datetime/index.rst index 57636918e..c13c979a5 100644 --- a/components/datetime/index.rst +++ b/components/datetime/index.rst @@ -47,17 +47,22 @@ Configuration variables: See https://developers.home-assistant.io/docs/core/entity/#generic-properties for a list of available options. Set to ``""`` to remove the default entity category. +- **time_id** (**Required**, :ref:`config-id`): The ID of the time entity. Automatically set + to the ID of a time component if only a single one is defined. MQTT Options: - All other options from :ref:`MQTT Component `. -Datetime Automation -------------------- +Time and DateTime Options: -You can access the most recent state as a string of the datetime in :ref:`lambdas ` using -``id(datetime_id).state``. -You can also access it as a ``ESPTime`` object by ``id(datetime_id).state_as_time`` +- **on_time** (*Optional*, :ref:`automation`): Automation to run when the current datetime or time matches the current state. + Only valid on ``time`` or ``datetime`` types. + +Automation +---------- + +You can access the most recent state as a ``ESPTime`` object by ``id(datetime_id).state_as_esptime()`` .. _datetime-on_value: @@ -225,14 +230,94 @@ advanced stuff (see the full API Reference for more info). ESP_LOGI("main", "Value of my datetime: %0d:%02d:%02d", id(my_time).hour, id(my_time).minute, id(my_time).second); +DateTime Automation +------------------- + +.. _datetime-datetime_set_action: + +``datetime.datetime.set`` Action +******************************** + +This is an :ref:`Action ` for setting a datetime datetime state. +The ``datetime`` provided can be in one of 3 formats: + +.. code-block:: yaml + + # String datetime + - datetime.time.set: + id: my_datetime + datetime: "2024-12-31 12:34:56" + + # Individual datetime parts + - datetime.datetime.set: + id: my_datetime + datetime: + year: 2024 + month: 12 + day: 31 + hour: 12 + minute: 34 + second: 56 + + # Using a lambda + - datetime.datetime.set: + id: my_datetime + datetime: !lambda |- + // Return an ESPTime struct + return {.second: 56, .minute: 34, .hour: 12, .day_of_month: 31, .month: 12, .year: 2024}; + +Configuration variables: + +- **id** (**Required**, :ref:`config-id`): The ID of the datetime to set. +- **datetime** (**Required**, string, datetime parts, :ref:`templatable `): + The value to set the datetime to. + + +.. _datetime-datetime-lambda_calls: + +Lambda calls +************ + +For more complex use cases, several methods are available for use on datetimes from within :ref:`lambdas `. See the full API Reference for more information. + +- ``.make_call()``: Make a call for updating the datetime value. + + .. code-block:: cpp + + // Within lambda, set the datetime to 2024-12-31 12:34:56 + auto call = id(my_datetime).make_call(); + call.set_date("2024-12-31 12:34:56"); + call.perform(); + + Check the API reference for information on the methods that are available for + the ``DateTimeCall`` object. + +- ``.year``: Retrieve the current year of the ``datetime``. It will be ``0`` if no value has been set. +- ``.month``: Retrieve the current month of the ``datetime``. It will be ``0`` if no value has been set. +- ``.day``: Retrieve the current day of the ``datetime``. It will be ``0`` if no value has been set. +- ``.hour``: Retrieve the current hour of the ``datetime``. It will be ``0`` if no value has been set. +- ``.minute``: Retrieve the current minute of the ``datetime``. It will be ``0`` if no value has been set. +- ``.second``: Retrieve the current second of the ``datetime``. It will be ``0`` if no value has been set. +- ``.state_as_esptime()``: Retrieve the current value of the datetime as a :apistruct:`ESPTime` object. + + .. code-block:: cpp + + // For example, create a custom log message when a value is received: + ESP_LOGI("main", "Value of my datetime: %04d-%02d-%02d %0d:%02d:%02d", + id(my_datetime).year, id(my_datetime).month, id(my_datetime).day, + id(my_datetime).hour, id(my_datetime).minute, id(my_datetime).second); + + See Also -------- - :apiref:`DateTimeBase ` - :apiref:`DateEntity ` - :apiref:`DateCall ` -- :apiref:`TimeeEntity ` +- :apiref:`TimeEntity ` - :apiref:`TimeCall ` +- :apiref:`DateTimeEntity ` +- :apiref:`DateTimeCall ` - :ghedit:`Edit` .. toctree:: diff --git a/components/datetime/template.rst b/components/datetime/template.rst index 3619db27e..e99161908 100644 --- a/components/datetime/template.rst +++ b/components/datetime/template.rst @@ -29,6 +29,15 @@ using :ref:`lambdas `. initial_value: "12:34:56" restore_value: true + # Example DateTime + - platform: template + id: my_datetime + type: datetime + name: Pick a DateTime + optimistic: yes + initial_value: "2024-12-31 12:34:56" + restore_value: true + Configuration variables: ------------------------ @@ -72,6 +81,21 @@ Configuration variables: minute: 34 second: 56 + - For ``type: datetime``: + + - A string in the format ``%Y-%m-%d %H:%M:%S`` , eg: ``"2023-12-04 12:34:56"``. + - An object including ``year``, ``month``, ``day``, ``hour``, ``minute``, ``second``. + + .. code-block:: yaml + + initial_value: + year: 2023 + month: 12 + day: 4 + hour: 12 + minute: 34 + second: 56 + - All other options from :ref:`Datetime `. See Also From e242b5102e79fe123de7c9fadc549162b8b14037 Mon Sep 17 00:00:00 2001 From: NP v/d Spek Date: Fri, 26 Apr 2024 05:23:03 +0200 Subject: [PATCH 09/11] Update description about showing the Color Test Card. (#3796) Co-authored-by: Clyde Stubbs <2366188+clydebarrow@users.noreply.github.com> --- components/display/images/test_card.jpg | Bin 0 -> 20883 bytes components/display/index.rst | 57 ++++++++---------------- 2 files changed, 19 insertions(+), 38 deletions(-) create mode 100644 components/display/images/test_card.jpg diff --git a/components/display/images/test_card.jpg b/components/display/images/test_card.jpg new file mode 100644 index 0000000000000000000000000000000000000000..49ba2cf8a7dd842bf98033fc5c531f3447f82c1d GIT binary patch literal 20883 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 literal 0 HcmV?d00001 diff --git a/components/display/index.rst b/components/display/index.rst index d6f443eba..3082043f2 100644 --- a/components/display/index.rst +++ b/components/display/index.rst @@ -935,49 +935,30 @@ Additionally the old page will be given as the variable ``from`` and the new one Troubleshooting --------------- -Color Test Pattern ------------------- +Using the Color Test Card +------------------------- -If you're experiencing issues with your color display, the script below can help you to identify what might be wrong. -It will show 3 color bars in **RED**, **GREEN** and **BLUE**. To help the graphics display team determine -the best way to help you, **a picture of the result of this script is very helpful.** +If you're experiencing issues with your color display, the ``show_test_card: true`` option can help you to identify what might be wrong. + +- It will show bars for Red, Green and Blue, graduating to black and white. +- Together with that it will show the letters "**R**", "**G**" and "**B**" to validate the display geometry. +- There will be a rectangle around the corners of the display with a marker at the 0,0 corner which should be at the top left of the screen. + +.. figure:: images/test_card.jpg + :align: center + :width: 50.0% + + + +When all points above are shown correctly then the display is working as expected. +To help the graphics display team determine the best way to help you, **a picture of the result of this option is very helpful.** Should you `create an issue `__ in GitHub regarding your display, please -be sure to **include a link to where you purchased it** so that we can validate the configuration you've used. +be sure to **include a link to where you purchased the display** so that we can validate the configuration you've used. -.. code-block:: yaml +.. note:: - display: - - platform: ... - ... - lambda: |- - int shift_x = (it.get_width()-310)/2; - int shift_y = (it.get_height()-256)/2; - for(auto i = 0; i<256; i++) { - it.horizontal_line(shift_x+ 0,i+shift_y,50, my_red.fade_to_white(i)); - it.horizontal_line(shift_x+ 50,i+shift_y,50, my_red.fade_to_black(i)); - - it.horizontal_line(shift_x+105,i+shift_y,50, my_green.fade_to_white(i)); - it.horizontal_line(shift_x+155,i+shift_y,50, my_green.fade_to_black(i)); - - it.horizontal_line(shift_x+210,i+shift_y,50, my_blue.fade_to_white(i)); - it.horizontal_line(shift_x+260,i+shift_y,50, my_blue.fade_to_black(i)); - } - it.rectangle(shift_x+ 0, 0+shift_y, shift_x+ 310, 256+shift_y, my_yellow); - - color: - - id: my_blue - blue: 100% - - id: my_red - red: 100% - - id: my_green - green: 100% - - id: my_white - red: 100% - blue: 100% - green: 100% - - id: my_yellow - hex: ffff00 + For displays in 8 bit mode you will see distinct color blocks rather than a smooth gradient. See Also -------- From 1f272092d6611f545007a83035795e0a40998640 Mon Sep 17 00:00:00 2001 From: polyfloyd Date: Fri, 26 Apr 2024 10:44:04 +0200 Subject: [PATCH 10/11] waveshare_epaper: Add 2.90in-dke (#3780) --- components/display/waveshare_epaper.rst | 1 + 1 file changed, 1 insertion(+) diff --git a/components/display/waveshare_epaper.rst b/components/display/waveshare_epaper.rst index 44a194a81..d1a5cf8ff 100644 --- a/components/display/waveshare_epaper.rst +++ b/components/display/waveshare_epaper.rst @@ -96,6 +96,7 @@ Configuration variables: - ``2.70in-b`` - Black/White/Red - ``2.70in-bv2`` - Black/White/Red - ``2.90in`` + - ``2.90in-dke`` - ``2.90inv2`` - ``2.90inv2-r2`` - 2.9in V2 display, but with different initialization and full/partial display refresh management than ``2.90inv2`` - ``2.90in-b`` - B/W rendering only From 98b7c74e96e8c168479a9cb2356d6521c9ab4cc0 Mon Sep 17 00:00:00 2001 From: Lucas Hartmann Date: Sun, 28 Apr 2024 16:47:17 -0300 Subject: [PATCH 11/11] Add transition_length to strobe effect. (#3775) --- components/light/index.rst | 1 + 1 file changed, 1 insertion(+) diff --git a/components/light/index.rst b/components/light/index.rst index ee9a31d9f..2f3550a14 100644 --- a/components/light/index.rst +++ b/components/light/index.rst @@ -583,6 +583,7 @@ Configuration variables: - **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. + - **transition_length** (*Optional*, :ref:`config-time`): The duration of each transition. Defaults to ``0s``. See `light.turn_on ` for more information on the various color fields.