Merge pull request #3213 from esphome/bump-2023.9.0

2023.9.0
This commit is contained in:
Jesse Hills 2023-09-27 17:20:20 +13:00 committed by GitHub
commit ba5d616210
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
49 changed files with 1824 additions and 102 deletions

View File

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

View File

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 63 KiB

View File

@ -1 +1 @@
2023.8.3
2023.9.0

237
changelog/2023.9.0.rst Normal file
View File

@ -0,0 +1,237 @@
ESPHome 2023.9.0 - 27th September 2023
======================================
.. seo::
:description: Changelog for ESPHome 2023.9.0.
:image: /_static/changelog-2023.9.0.png
:author: Jesse Hills
:author_twitter: @jesserockz
.. imgtable::
:columns: 3
BK72xx, components/libretiny, bk72xx.svg
RTL87xx, components/libretiny, rtl87xx.svg
WireGuard, components/wireguard, wireguard_custom_logo.svg, dark-invert
PMWCS3, components/sensor/pmwcs3, pmwcs3.jpg
SEN0321, components/sensor/sen0321, sen0321.jpg
LightWaveRF, components/light/lightwaverf, brightness-medium.svg, dark-invert
BMI160, components/sensor/bmi160, bmi160.jpg
SPI LED Strips, components/light/spi_led_strip, apa102.jpg
LibreTiny
---------
:doc:`LibreTiny </components/libretiny>` is a platform for the RTL87xx and BK72xx family of chips. ESPHome leverages
this platform and brings the powerful yet simple YAML configuration to these chips.
It has been months in the making, and many back and forwards with :ghuser:`kuba2k2`
(and all of the contributors to LibreTiny), but we finally got there and merged it in.
.. |wireguard| unicode:: WireGuard 0xAE
Wireguard
---------
:doc:`WireGuard </components/wireguard>` is a new component that allows you to connect to a |wireguard| Peer.
LED Strips
----------
Following on from the previously added :doc:`/components/light/esp32_rmt_led_strip`, we now have
:doc:`SPI LED Strips </components/light/spi_led_strip>`. These are replacement components for
:doc:`/components/light/neopixelbus` and :doc:`/components/light/fastled` that
do not rely on the Arduino framework.
Full list of changes
--------------------
New Components
^^^^^^^^^^^^^^
- Add pmwcs3 capacitive soil moisture & temperature sensor component :esphomepr:`4624` by :ghuser:`SeByDocKy` (new-integration)
- Support for LibreTiny platform (RTL8710, BK7231 & other modules) :esphomepr:`3509` by :ghuser:`kuba2k2` (new-integration)
- Adding DFRobot Ozone Sensor Support (sen0321) :esphomepr:`4782` by :ghuser:`notjj` (new-integration)
- Integration LightwaveRF switches :esphomepr:`4812` by :ghuser:`max246` (new-integration)
- Refactor SPI code; Add ESP-IDF hardware support :esphomepr:`5311` by :ghuser:`clydebarrow` (new-integration)
- Add BMI160 support :esphomepr:`5143` by :ghuser:`flaviut` (new-integration)
- Native SPI RGB LED component :esphomepr:`5288` by :ghuser:`clydebarrow` (new-integration)
- Wireguard component :esphomepr:`4256` by :ghuser:`lhoracek` (new-integration)
Breaking Changes
^^^^^^^^^^^^^^^^
- Synchronise Device Classes from Home Assistant :esphomepr:`5328` by :ghuser:`esphomebot` (breaking-change)
- Use /data directory for .esphome folder when running as HA add-on :esphomepr:`5374` by :ghuser:`jesserockz` (breaking-change)
Beta Changes
^^^^^^^^^^^^
- Add patch to apt install :esphomepr:`5389` by :ghuser:`synesthesiam`
- Fix Waveshare 7.5v2 epaper screens are always powered on :esphomepr:`5283` by :ghuser:`phoenixswiss`
- Update radon_eye_listener.cpp :esphomepr:`5401` by :ghuser:`rmmacias`
- Add shelly-dimmer-stm32 51.7 to known versions :esphomepr:`5400` by :ghuser:`trvrnrth`
- Add E-Trailer Gaslevel support to Mopeka Std Check :esphomepr:`5397` by :ghuser:`Phhere`
- fix disabled wifi power on 8266 :esphomepr:`5409` by :ghuser:`ssieb`
- fix handling of web server version :esphomepr:`5405` by :ghuser:`ssieb`
- Climate preset fix :esphomepr:`5407` by :ghuser:`Jorre05`
- Remove Wi-Fi dependency from Midea component :esphomepr:`5394` by :ghuser:`AnthonyMaiorani`
- http_request: Cleanups and safety improvements :esphomepr:`5360` by :ghuser:`kpfleming`
- Make the pulse meter timeout on startup when no pulses are received :esphomepr:`5388` by :ghuser:`TrentHouliston`
- Wizard: fix colored text in input prompts :esphomepr:`5313` by :ghuser:`kuba2k2`
- support keypads with pulldowns :esphomepr:`5404` by :ghuser:`ssieb`
- Fix SPI inverted clock on ESP8266 :esphomepr:`5416` by :ghuser:`clydebarrow`
- [RP2040W] Fix WiFi bootloop upon LibreTiny support :esphomepr:`5414` by :ghuser:`hostcc`
- dallas: limit addresses to 64 bits :esphomepr:`5413` by :ghuser:`oddstr13`
- Bump zeroconf from 0.108.0 to 0.112.0 :esphomepr:`5392` by :ghuser:`dependabot[bot]`
- LibreTiny: enable MQTT, bump to v1.4.1 :esphomepr:`5419` by :ghuser:`kuba2k2`
- Wireguard keepalive remove uint16 type :esphomepr:`5430` by :ghuser:`glmnet`
- Fix #4896 and #4903 :esphomepr:`5433` by :ghuser:`clydebarrow`
All changes
^^^^^^^^^^^
- Updated my username in Code Owners :esphomepr:`5247` by :ghuser:`mreditor97`
- remote_base: change dumpers log level :esphomepr:`5253` by :ghuser:`dudanov`
- Add `libfreetype-dev` Debian package for armv7 Docker builds :esphomepr:`5262` by :ghuser:`pierlon`
- Add delay before enabling ipv6 :esphomepr:`5256` by :ghuser:`HeMan`
- Bump zeroconf from 0.74.0 to 0.80.0 :esphomepr:`5260` by :ghuser:`dependabot[bot]`
- Bump click from 8.1.6 to 8.1.7 :esphomepr:`5272` by :ghuser:`dependabot[bot]`
- Remove support for ESP-IDF version < 4 :esphomepr:`5261` by :ghuser:`HeMan`
- Add pmwcs3 capacitive soil moisture & temperature sensor component :esphomepr:`4624` by :ghuser:`SeByDocKy` (new-integration)
- Add manufacturer data config to BLE server :esphomepr:`5251` by :ghuser:`clydebarrow`
- Add support for ESP32-{S2,S3,C3} to debug component :esphomepr:`4731` by :ghuser:`jayme-github`
- Support for ESP32-C2 & ESP32-C6 :esphomepr:`4377` by :ghuser:`vidplace7`
- Bump arduino-heatpumpir to v1.0.23 :esphomepr:`5269` by :ghuser:`rob-deutsch`
- Fix equality check when setting current-based cover position :esphomepr:`5167` by :ghuser:`kroimon`
- Bump platformio from 6.1.9 to 6.1.10 :esphomepr:`5237` by :ghuser:`dependabot[bot]`
- Add Invert method for SSD1306 :esphomepr:`5292` by :ghuser:`max246`
- Update PSRAM config params for IDF4+ :esphomepr:`5298` by :ghuser:`kbx81`
- Fix legacy zeroconf record update method :esphomepr:`5294` by :ghuser:`bdraco`
- Bump zeroconf from 0.80.0 to 0.86.0 :esphomepr:`5308` by :ghuser:`dependabot[bot]`
- Add PSRAM mode and speed config :esphomepr:`5312` by :ghuser:`kbx81`
- Add extra SLPOUT for waking up some ST7789 chips :esphomepr:`5319` by :ghuser:`clydebarrow`
- 7789 controller fixes take 2 :esphomepr:`5320` by :ghuser:`clydebarrow`
- Bump Arduino Pico to 3.4.0 :esphomepr:`5321` by :ghuser:`HeMan`
- Use gzip compression for the web server component's static resources :esphomepr:`5291` by :ghuser:`EternityForest`
- Bump zeroconf from 0.86.0 to 0.88.0 :esphomepr:`5315` by :ghuser:`dependabot[bot]`
- Adding heating coil and fan icons, enum device_class :esphomepr:`5325` by :ghuser:`barndawgie`
- Add dashboard API to get firmware binaries :esphomepr:`4675` by :ghuser:`kuba2k2`
- Make uart error message go away :esphomepr:`5329` by :ghuser:`clydebarrow`
- add heating functionality to SI7021 :esphomepr:`4828` by :ghuser:`max246`
- Bump esphome-dashboard to 20230904.0 :esphomepr:`5339` by :ghuser:`jesserockz`
- Added Handling for Nack "file not found" :esphomepr:`5338` by :ghuser:`croessi`
- Prepare api and time for ESP-IDF >= 5 :esphomepr:`5332` by :ghuser:`HeMan`
- Tweak Improv serial to build in IDF 5 :esphomepr:`5331` by :ghuser:`kbx81`
- Support for LibreTiny platform (RTL8710, BK7231 & other modules) :esphomepr:`3509` by :ghuser:`kuba2k2` (new-integration)
- Extend ESP32 CAN bit rates /bus speed support :esphomepr:`5280` by :ghuser:`mkaiser`
- Debug component: add free PSRAM sensor :esphomepr:`5334` by :ghuser:`kahrendt`
- libretiny: fix uart_port framework config :esphomepr:`5343` by :ghuser:`jesserockz`
- Bump actions/checkout from 3 to 4 :esphomepr:`5341` by :ghuser:`dependabot[bot]`
- Add Lilygo T-Embed to st7789v display config. :esphomepr:`5337` by :ghuser:`clydebarrow`
- Disable IPv6 when config explicitly says false :esphomepr:`5310` by :ghuser:`HeMan`
- Add defines.h to ethernet_component.h for ENABLE_IPV6 :esphomepr:`5344` by :ghuser:`kbx81`
- Synchronise Device Classes from Home Assistant :esphomepr:`5328` by :ghuser:`esphomebot` (breaking-change)
- Bump pytest from 7.4.0 to 7.4.1 :esphomepr:`5342` by :ghuser:`dependabot[bot]`
- Fixed default temperature step values for haier climate :esphomepr:`5330` by :ghuser:`paveldn`
- Add debug component to all tests :esphomepr:`5333` by :ghuser:`HeMan`
- Support MaxBotix XL in addition to HRXL :esphomepr:`4510` by :ghuser:`notjj`
- Adding DFRobot Ozone Sensor Support (sen0321) :esphomepr:`4782` by :ghuser:`notjj` (new-integration)
- mdns: bump IDF mdns component to 1.2.0 :esphomepr:`5217` by :ghuser:`stintel`
- Integration LightwaveRF switches :esphomepr:`4812` by :ghuser:`max246` (new-integration)
- Bump flake8 from 6.0.0 to 6.1.0 :esphomepr:`5171` by :ghuser:`dependabot[bot]`
- Bump tornado from 6.3.2 to 6.3.3 :esphomepr:`5236` by :ghuser:`dependabot[bot]`
- Bump platformio from 6.1.10 to 6.1.11 :esphomepr:`5323` by :ghuser:`dependabot[bot]`
- Only run ci-docker when ci-docker workflow changes :esphomepr:`5347` by :ghuser:`jesserockz`
- esp32: Extra build customization :esphomepr:`5322` by :ghuser:`jesserockz`
- Allow upload command to flash file via serial :esphomepr:`5274` by :ghuser:`jesserockz`
- Allow "--device SERIAL" on cli to flash only via serial :esphomepr:`5351` by :ghuser:`jesserockz`
- Fix PN532 for IDF 5 and ultralight enhancements :esphomepr:`5352` by :ghuser:`kbx81`
- Fix cpu_ll_get_cycle_count() deprecated warning :esphomepr:`5353` by :ghuser:`kbx81`
- Refactor SPI code; Add ESP-IDF hardware support :esphomepr:`5311` by :ghuser:`clydebarrow` (new-integration)
- Bump actions/cache from 3.3.1 to 3.3.2 :esphomepr:`5367` by :ghuser:`dependabot[bot]`
- Bump zeroconf from 0.88.0 to 0.102.0 :esphomepr:`5368` by :ghuser:`dependabot[bot]`
- Fix repeat.count = 0 case :esphomepr:`5364` by :ghuser:`Xmister`
- Fix dashboard download for ESP32 variants :esphomepr:`5355` by :ghuser:`kuba2k2`
- Bump pytest from 7.4.1 to 7.4.2 :esphomepr:`5357` by :ghuser:`dependabot[bot]`
- [ADC] Support measuring VCC on Raspberry Pico (W) :esphomepr:`5335` by :ghuser:`hostcc`
- Move CONF_PHASE_A/B/C constants to const.py. :esphomepr:`5304` by :ghuser:`kpfleming`
- Add BMI160 support :esphomepr:`5143` by :ghuser:`flaviut` (new-integration)
- Use black-pre-commit-mirror to speed up pre-commit runs. :esphomepr:`5372` by :ghuser:`kpfleming`
- Native SPI RGB LED component :esphomepr:`5288` by :ghuser:`clydebarrow` (new-integration)
- Wireguard component :esphomepr:`4256` by :ghuser:`lhoracek` (new-integration)
- Bump LibreTiny version to 1.4.0 :esphomepr:`5375` by :ghuser:`kuba2k2`
- time: Make std::string version of strftime() avoid runaway memory allocations :esphomepr:`5348` by :ghuser:`kpfleming`
- Fix disabled wifi crash on boot :esphomepr:`5370` by :ghuser:`Xmister`
- debug: add ESP32-C6 support :esphomepr:`5354` by :ghuser:`stintel`
- Make string globals persist-able using fixed size allocations :esphomepr:`5296` by :ghuser:`EternityForest`
- Use /data directory for .esphome folder when running as HA add-on :esphomepr:`5374` by :ghuser:`jesserockz` (breaking-change)
- Bump zeroconf from 0.102.0 to 0.108.0 :esphomepr:`5376` by :ghuser:`dependabot[bot]`
- Bump black from 23.7.0 to 23.9.1 :esphomepr:`5377` by :ghuser:`dependabot[bot]`
- Attempt to fix rp2040 adc with vcc :esphomepr:`5378` by :ghuser:`jesserockz`
- Enable IPv6 for ESP8266 and Raspberry pi pico w (RP2040) :esphomepr:`4759` by :ghuser:`HeMan`
- Workflow updates :esphomepr:`5384` by :ghuser:`jesserockz`
- Modbus Controller added some features :esphomepr:`5318` by :ghuser:`0x3333`
- Force heater off on setup :esphomepr:`5161` by :ghuser:`rufuswilson`
- Add IDF 5 test yaml, add adc to IDF tests, fix adc for IDF 5 :esphomepr:`5379` by :ghuser:`kbx81`
- Add patch to apt install :esphomepr:`5389` by :ghuser:`synesthesiam`
- Fix Waveshare 7.5v2 epaper screens are always powered on :esphomepr:`5283` by :ghuser:`phoenixswiss`
- Update radon_eye_listener.cpp :esphomepr:`5401` by :ghuser:`rmmacias`
- Add shelly-dimmer-stm32 51.7 to known versions :esphomepr:`5400` by :ghuser:`trvrnrth`
- Add E-Trailer Gaslevel support to Mopeka Std Check :esphomepr:`5397` by :ghuser:`Phhere`
- fix disabled wifi power on 8266 :esphomepr:`5409` by :ghuser:`ssieb`
- fix handling of web server version :esphomepr:`5405` by :ghuser:`ssieb`
- Climate preset fix :esphomepr:`5407` by :ghuser:`Jorre05`
- Remove Wi-Fi dependency from Midea component :esphomepr:`5394` by :ghuser:`AnthonyMaiorani`
- http_request: Cleanups and safety improvements :esphomepr:`5360` by :ghuser:`kpfleming`
- Make the pulse meter timeout on startup when no pulses are received :esphomepr:`5388` by :ghuser:`TrentHouliston`
- Wizard: fix colored text in input prompts :esphomepr:`5313` by :ghuser:`kuba2k2`
- support keypads with pulldowns :esphomepr:`5404` by :ghuser:`ssieb`
- Fix SPI inverted clock on ESP8266 :esphomepr:`5416` by :ghuser:`clydebarrow`
- [RP2040W] Fix WiFi bootloop upon LibreTiny support :esphomepr:`5414` by :ghuser:`hostcc`
- dallas: limit addresses to 64 bits :esphomepr:`5413` by :ghuser:`oddstr13`
- Bump zeroconf from 0.108.0 to 0.112.0 :esphomepr:`5392` by :ghuser:`dependabot[bot]`
- LibreTiny: enable MQTT, bump to v1.4.1 :esphomepr:`5419` by :ghuser:`kuba2k2`
- Wireguard keepalive remove uint16 type :esphomepr:`5430` by :ghuser:`glmnet`
- Fix #4896 and #4903 :esphomepr:`5433` by :ghuser:`clydebarrow`
Past Changelogs
---------------
- :doc:`2023.8.0`
- :doc:`2023.7.0`
- :doc:`2023.6.0`
- :doc:`2023.5.0`
- :doc:`2023.4.0`
- :doc:`2023.3.0`
- :doc:`2023.2.0`
- :doc:`2022.12.0`
- :doc:`2022.11.0`
- :doc:`2022.10.0`
- :doc:`2022.9.0`
- :doc:`2022.8.0`
- :doc:`2022.6.0`
- :doc:`2022.5.0`
- :doc:`2022.4.0`
- :doc:`2022.3.0`
- :doc:`2022.2.0`
- :doc:`2022.1.0`
- :doc:`2021.12.0`
- :doc:`2021.11.0`
- :doc:`2021.10.0`
- :doc:`2021.9.0`
- :doc:`2021.8.0`
- :doc:`v1.20.0`
- :doc:`v1.19.0`
- :doc:`v1.18.0`
- :doc:`v1.17.0`
- :doc:`v1.16.0`
- :doc:`v1.15.0`
- :doc:`v1.14.0`
- :doc:`v1.13.0`
- :doc:`v1.12.0`
- :doc:`v1.11.0`
- :doc:`v1.10.0`
- :doc:`v1.9.0`
- :doc:`v1.8.0`
- :doc:`v1.7.0`

View File

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

View File

@ -63,9 +63,13 @@ Configuration variables:
*false*: Standard 11 bits IDs, *true*: Extended 29 bits ID
- **bit_rate** (*Optional*, enum): One of the supported bitrates. Defaults to ``125KBPS``.
- ``5KBPS`` - Not supported by ``esp32_can``
- ``10KBPS`` - Not supported by ``esp32_can``
- ``20KBPS`` - Not supported by ``esp32_can``
- ``1KBPS`` - Support by ``esp32_can`` depends on ESP32 variant
- ``5KBPS`` - Support by ``esp32_can`` depends on ESP32 variant
- ``10KBPS`` - Support by ``esp32_can`` depends on ESP32 variant
- ``12K5BPS`` - Support by ``esp32_can`` depends on ESP32 variant
- ``16KBPS`` - Support by ``esp32_can`` depends on ESP32 variant
- ``20KBPS`` - Support by ``esp32_can`` depends on ESP32 variant
- ``25KBPS``
- ``31K25BPS`` - Not supported by ``esp32_can``
- ``33KBPS`` - Not supported by ``esp32_can``
- ``40KBPS`` - Not supported by ``esp32_can``
@ -80,6 +84,9 @@ Configuration variables:
- ``500KBPS``
- ``1000KBPS``
See :ref:`this table <esp32-can-bit-rate>` for a list of supported bit rates by the internal CAN (TWAI) controllers of different ESP32 variants.
Automations:
------------
@ -198,6 +205,36 @@ You only need to specify the RX and TX pins. Any GPIO will work.
on_frame:
...
.. _esp32-can-bit-rate:
The table lists the specific bit rates supported by the component for ESP32 variants:
=================== ======= ========== ========== ========== ========== ==========
bit_rate ESP32 ESP32-S2 ESP32-S3 ESP32-C3 ESP32-C6 ESP32-H2
=================== ======= ========== ========== ========== ========== ==========
1KBPS x x x x x
5KBPS x x x x x
10KBPS x x x x x
12K5BPS x x x x x
16KBPS x x x x x
20KBPS x x x x x
25KBPS x x x x x x
31K25BPS
33KBPS
40KBPS
50KBPS x x x x x x
80KBPS
83K38BPS
95KBPS
100KBPS x x x x x x
125KBPS (Default) x x x x x x
250KBPS x x x x x x
500KBPS x x x x x x
800KBPS x x x x x x
1000KBPS x x x x x x
=================== ======= ========== ========== ========== ========== ==========
Wiring options
**************

View File

@ -104,7 +104,7 @@ This platform utilises the library's generic one-size-fits-all API, which might
Additional configuration must be specified for this platform:
- **protocol** (**Required**, string): Choose one of Arduino-HeatpumpIR's supported protcols: ``aux``, ``ballu``, ``carrier_mca``, ``carrier_nqv``, ``daikin_arc417``, ``daikin_arc480``, ``daikin``, ``electroluxyal``, ``fuego``, ``fujitsu_awyz``, ``gree``, ``greeya``, ``greeyac``, ``greeyan``, ``hisense_aud``, ``hitachi``, ``hyundai``, ``ivt``, ``midea``, ``mitsubishi_fa``, ``mitsubishi_fd``, ``mitsubishi_fe``, ``mitsubishi_heavy_fdtc``, ``mitsubishi_heavy_zj``, ``mitsubishi_heavy_zm``, ``mitsubishi_heavy_zmp``, ``mitsubishi_heavy_kj``, ``mitsubishi_msc``, ``mitsubishi_msy``, ``mitsubishi_sez``, ``panasonic_ckp``, ``panasonic_dke``, ``panasonic_jke``, ``panasonic_lke``, ``panasonic_nke``, ``samsung_aqv``, ``samsung_fjm``, ``sharp``, ``toshiba_daiseikai``, ``toshiba``, ``zhlt01``
- **protocol** (**Required**, string): Choose one of Arduino-HeatpumpIR's supported protcols: ``aux``, ``ballu``, ``carrier_mca``, ``carrier_nqv``, ``daikin_arc417``, ``daikin_arc480``, ``daikin``, ``electroluxyal``, ``fuego``, ``fujitsu_awyz``, ``gree``, ``greeya``, ``greeyac``, ``greeyan``, ``greeyt``, ``hisense_aud``, ``hitachi``, ``hyundai``, ``ivt``, ``midea``, ``mitsubishi_fa``, ``mitsubishi_fd``, ``mitsubishi_fe``, ``mitsubishi_heavy_fdtc``, ``mitsubishi_heavy_zj``, ``mitsubishi_heavy_zm``, ``mitsubishi_heavy_zmp``, ``mitsubishi_heavy_kj``, ``mitsubishi_msc``, ``mitsubishi_msy``, ``mitsubishi_sez``, ``panasonic_ckp``, ``panasonic_dke``, ``panasonic_jke``, ``panasonic_lke``, ``panasonic_nke``, ``samsung_aqv``, ``samsung_fjm``, ``sharp``, ``toshiba_daiseikai``, ``toshiba``, ``zhlt01``
- **horizontal_default** (**Required**, string): What to default to when the AC unit's horizontal direction is *not* set to swing. Options are: ``left``, ``mleft``, ``middle``, ``mright``, ``right``, ``auto``
- **vertical_default** (**Required**, string): What to default to when the AC unit's vertical direction is *not* set to swing. Options are: ``down``, ``mdown``, ``middle``, ``mup``, ``up``, ``auto``
- **max_temperature** (**Required**, float): The maximum temperature that the AC unit supports being set to.

View File

@ -38,6 +38,8 @@ ESP heap memory (free space, maximum free block size and fragmentation level) an
name: "Heap Max Block"
loop_time:
name: "Loop Time"
psram:
name: "Free PSRAM"
# Logger must be at least debug (default)
logger:
@ -55,7 +57,7 @@ Configuration variables:
- ESP32:
- Chip model, cores, revision
- Chip features (BLE / BT / WiFi_BGN / EMB_FLASH / ...)
- Chip features (BLE / BT / WiFi_BGN / EMB_FLASH / EMB_PSRAM / ...)
- ESP-IDF version
- EFuse MAC
- Reset reason
@ -67,42 +69,25 @@ Configuration variables:
- SDK, Core & Boot versions
- Reset reason & information
Accepts these options:
Accepts all options from :ref:`Text Sensor <config-text_sensor>`.
- **name** (**Required**, string): The name of the sensor.
- All other options from :ref:`Text Sensor <config-text_sensor>`.
- **reset_reason** (*Optional*): Reports the last reboot reason in a human-readable form.
Accepts these options:
- **name** (**Required**, string): The name of the sensor.
- All other options from :ref:`Text Sensor <config-text_sensor>`.
- **reset_reason** (*Optional*): Reports the last reboot reason in a human-readable form. Accepts all options from :ref:`Text Sensor <config-text_sensor>`.
Sensor
-------
Configuration variables:
- **free** (*Optional*): Reports the free heap size in bytes.
- **name** (**Required**, string): The name of the sensor.
- All other options from :ref:`Sensor <config-sensor>`.
- **free** (*Optional*): Reports the free heap size in bytes. All options from :ref:`Sensor <config-sensor>`.
- **fragmentation** (*Optional*): Reports the fragmentation metric of the heap
(0% is clean, more than ~50% is not harmless). Only available on ESP8266 with Arduino 2.5.2+.
All options from :ref:`Sensor <config-sensor>`.
- **block** (*Optional*): Reports the largest contiguous free RAM block on the heap in bytes. All options from :ref:`Sensor <config-sensor>`.
- **name** (**Required**, string): The name of the sensor.
- All other options from :ref:`Sensor <config-sensor>`.
- **loop_time** (*Optional*): Reports the longest time between successive iterations of the main loop. All options from :ref:`Sensor <config-sensor>`.
- **block** (*Optional*): Reports the largest contiguous free RAM block on the heap in bytes.
- **name** (**Required**, string): The name of the sensor.
- All other options from :ref:`Sensor <config-sensor>`.
- **loop_time** (*Optional*): Reports the longest time between successive iterations of the main loop.
- **name** (**Required**, string): The name of the sensor.
- All other options from :ref:`Sensor <config-sensor>`.
- **psram** (*Optional*): Reports the free PSRAM in bytes. Only available on ESP32. All options from :ref:`Sensor <config-sensor>`.
See Also
--------

View File

@ -57,50 +57,140 @@ to an ESP module.
For more information about the font options see: :ref:`display-fonts`.
.. warning::
When using the TTGO T-Display module, the GPIO pin numbers above *cannot be changed* as they are
hardwired within the module/PCB.
Configuration variables:
************************
Options below marked **Required** *unless preset* must be provided but may be defined by a preset depending on the selected model, so
may not need to be explicitly specified in your YAML file. If you do specify them they will override any preset.
- **model** (**Required**, string): The display model to use. One of the following options:
- ``TTGO TDisplay 135x240``
- ``Adafruit Funhouse 240x240``
- ``Adafruit RR 280x240`` (round-rectangular display -- some pixels are "deleted" from corners to form rounded shape)
- ``Adafruit S2 TFT FEATHER 240X135`` (requires ``power_supply`` be specified, see below)
- ``Custom`` (see details below)
- ``Adafruit S2 TFT FEATHER 240X135``
- ``LILYGO T-Embed 170X320``
- ``Custom`` For other displays not listed above
- **cs_pin** (*Optional*, :ref:`Pin Schema <config-pin_schema>`): The CS pin.
- **dc_pin** (**Required**, :ref:`Pin Schema <config-pin_schema>`): The DC pin.
- **reset_pin** (**Required**, :ref:`Pin Schema <config-pin_schema>`): The RESET pin.
- **height** (*Optional*, int): When ``model`` is set to "Custom", use this to specify the ``height`` of the display
in pixels. This option may not be specified when the ``model`` is not set to "Custom".
- **width** (*Optional*, int): When ``model`` is set to "Custom", use this to specify the ``width`` of the display
in pixels. This option may not be specified when the ``model`` is not set to "Custom".
- **offset_height** (*Optional*, int): When ``model`` is set to "Custom", use this to specify the display's vertical
- **height** (**Required** *unless preset*, int): Sets height of display in pixels.
- **width** (**Required** *unless preset*, int): Sets width of display.
- **offset_height** (**Required** *unless preset*, int): When ``model`` is set to "Custom", use this to specify the display's vertical
offset in pixels. This option may not be specified when the ``model`` is not set to "Custom".
- **offset_width** (*Optional*, int): When ``model`` is set to "Custom", use this to specify the display's horizontal
- **offset_width** (**Required** *unless preset*, int): When ``model`` is set to "Custom", use this to specify the display's horizontal
offset in pixels. This option may not be specified when the ``model`` is not set to "Custom".
- **cs_pin** (**Required** *unless preset*, :ref:`Pin Schema <config-pin_schema>`): The CS pin.
- **dc_pin** (**Required** *unless preset*, :ref:`Pin Schema <config-pin_schema>`): The DC pin.
- **reset_pin** (**Required** *unless preset*, :ref:`Pin Schema <config-pin_schema>`): The RESET pin.
- **eightbitcolor** (*Optional*, boolean): Limits the supported color depth to eight bits. May be useful on
memory-constrained devices.
- **backlight_pin** (*Optional*, :ref:`Pin Schema <config-pin_schema>`): The display's backlight pin.
memory-constrained devices. Defaults to false.
- **backlight_pin** (*Optional*, :ref:`Pin Schema <config-pin_schema>`): The display's backlight pin. May be required
depending on the hardware configuration.
- **power_supply** (*Optional*, :ref:`config-id`): The :doc:`power supply </components/power_supply>` to connect to
this display. The power supply will be turned on before attempting to initialize the display. When ``model`` is set
to "Adafruit S2 TFT FEATHER 240X135" this option is required as there are variations of this board sold with differing
pin assignments.
this display if required by hardware. The power supply will be turned on before attempting to initialize the display.
- **lambda** (*Optional*, :ref:`lambda <config-lambda>`): The lambda to use for rendering the content on the display.
See :ref:`display-engine` for more information.
- **update_interval** (*Optional*, :ref:`config-time`): The interval to re-draw the screen. Defaults to ``5s``.
- **pages** (*Optional*, list): Show pages instead of a single lambda. See :ref:`display-pages`.
- **id** (*Optional*, :ref:`config-id`): Manually specify the ID used for code generation.
Preset configuration
********************
For specific models there is some preset configuration which will satisy some of the **Required** *unless preset* values.
All models except ``Custom`` preset the ``height``, ``width`` and ``offset_...`` values.
The table below summarises the other presets. Note that SPI CLK and SDO (mosi) pins, and the power supply pin must be separately
configured in ``spi:`` and ``power_supply:`` blocks - the pins are noted below for convenience only.
Items marked RQ are hardware dependent but required and not preset. Items marked ? are optional depending on the hardware.
.. list-table:: Model presets
:header-rows: 1
* - Model
- Height/ width
- Offsets
- CS
- DC
- Reset
- Back light
- Pwr sup
- SPI clk
- SPI mosi
* - TTGO TDisplay 135x240
- 240/135
- 52/40
- 5
- 6
- 23
- 4
-
- 18
- 19
* - Adafruit Funhouse 240x240
- 240/240
- 0/0
- 40
- 39
- 41
- 21
-
- 36
- 35
* - Adafruit RR 280x240
- 240/240
- 0/20
- RQ
- RQ
- RQ
- ?
- ?
- RQ
- RQ
* - Adafruit S2 TFT FEATHER 240X135
- 240/135
- 52/40
- 7
- 39
- 40
- 45
- 21
- 36
- 35
* - LILYGO T-Embed 170X320
- 320/170
- 35/0
- 10
- 13
- 9
- 15
- 46
- 12
- 11
* - Custom
- RQ
- RQ
- RQ
- RQ
- RQ
- ?
- ?
- RQ
- RQ
For all boards you can override the presets by specifying any of the configuration options. Pin assignments on some
boards can change between versions so if it doesn't work with the presets check the board pinouts and override options as
required.
.. note::
On memory-constrained devices, it may be possible to use *part* of the display area by setting the model to "custom"
and specifying a smaller ``height`` and/or ``width`` than that of the actual display.
On memory-constrained devices, it may be possible to use *part* of the display area by
specifying a smaller ``height`` and/or ``width`` than that of the actual display.
Configuration examples

View File

@ -14,6 +14,8 @@ data and control.
# Example configuration
esp32_ble_server:
manufacturer: "Orange"
manufacturer_data: [0x4C, 0, 0x23, 77, 0xF0 ]
Configuration variables:
@ -22,6 +24,9 @@ Configuration variables:
- **manufacturer** (*Optional*, string): The name of the manufacturer/firmware creator. Defaults to ``ESPHome``.
- **model** (*Optional*, string): The model name of the device. Defaults to the friendly name of the ``board`` chosen
in the :ref:`core configuration <esphome-configuration_variables>`.
- **manufacturer_data** (*Optional*, list of bytes): The manufacturer-specific data to include in the advertising
packet. Should be a list of bytes, where the first two are the little-endian representation of the 16-bit
manufacturer ID as assigned by the Bluetooth SIG.
See Also
--------

221
components/libretiny.rst Normal file
View File

@ -0,0 +1,221 @@
LibreTiny Platform
==================
.. seo::
:description: Configuration for the LibreTiny platform for ESPHome.
:image: libretiny.svg
This component contains platform-specific options for the `LibreTiny <https://docs.libretiny.eu/>`__ platform.
It provides support for the following microcontrollers:
- **BK72xx**: BK7231T, BK7231N
- **RTL87xx**: RTL8710BN, RTL8710BX
Since different microcontrollers are supported, you need to include the appropriate ESPHome component,
depending on which processor your device has.
Refer to `LibreTiny/Boards <https://docs.libretiny.eu/link/boards>`__ to find your board type.
.. code-block:: yaml
# Example configuration entry for BK72xx
bk72xx:
board: generic-bk7231n-qfn32-tuya
# Example configuration entry for RTL87xx
rtl87xx:
board: generic-rtl8710bn-2mb-788k
Configuration variables:
------------------------
- **board** (**Required**, string): The PlatformIO board ID that should be used. Choose the appropriate board from
`this list <https://registry.platformio.org/packages/platforms/kuba2k2/libretiny/boards>`__
(the icon next to the name can be used to copy the board ID).
**This affects CPU selection and some internal settings** - make sure to choose the right CPU.
If unsure about the choice of a particular board, choose a generic board such as ``generic-bk7231n-qfn32-tuya``.
- **framework** (*Optional*): Options for the underlying framework used by ESPHome.
- **version** (*Optional*, string): The LibreTiny version number to use, from
`LibreTiny platform releases <https://github.com/kuba2k2/libretiny/releases>`__. Defaults to ``recommended``. Additional values
- ``dev``: Use the latest commit from https://github.com/kuba2k2/libretiny, note this may break at any time
- ``latest``: Use the latest *release* from https://github.com/kuba2k2/libretiny/releases, even if it hasn't been recommended yet.
- ``recommended``: Use the recommended framework version.
- **source** (*Optional*, string): The PlatformIO package or repository to use for the framework. This can be used to use a custom or patched version of the framework.
- :ref:`Advanced options <advanced-options>`
- **family** (*Optional*, boolean): The family of LibreTiny-supported microcontrollers that is used on this board.
One of ``bk7231n``, ``bk7231t``, ``rtl8710b``, ``rtl8720c``, ``bk7251``, ``bk7231q``.
Defaults to the variant that is detected from the board, if a board that's unknown to ESPHome is used,
this option is mandatory. **It's recommended not to include this option**.
.. note::
Support for the LibreTiny platform is still in development and there could be issues or missing components.
In particular, **MQTT is not supported yet**, because of reported stability issues.
Please report any issues on `LibreTiny GitHub <https://github.com/kuba2k2/libretiny>`__.
Getting Started
---------------
Since BK72xx and RTL87xx chips are relatively new on the IoT Open Source development stage,
there aren't many resources on flashing and configuring them.
Here are a few useful links:
- `tuya-cloudcutter <https://github.com/tuya-cloudcutter/tuya-cloudcutter>`__ - flashing ESPHome Over-the-Air
to some devices compatible with Tuya/SmartLife apps (BK72xx only!)
- `Textual & video guide by digiblurDIY <https://docs.libretiny.eu/link/cloudcutter-digiblur>`__
- `Video guide by LibreTiny <https://docs.libretiny.eu/link/cloudcutter-video>`__
- `ESPHome-Kickstart <https://docs.libretiny.eu/link/kickstart>`__ - starter firmware to upload OTA with Cloudcutter
- `Flashing BK72xx by UART <https://docs.libretiny.eu/link/flashing-beken-72xx>`__
- `Flashing RTL8710B by UART <https://docs.libretiny.eu/link/flashing-realtek-ambz>`__
- `UPK2ESPHome <https://upk.libretiny.eu/>`__ - generating ESPHome YAML automatically, from Cloudcutter profiles or Kickstart firmware (also BK72xx only)
GPIO Pin Numbering
------------------
Chips supported by LibreTiny use the internal GPIO pin numbering of the boards, this means that
you don't have to worry about other kinds of pin numberings, yay!
Additionally, you can use **pin function macros** to quickly access a GPIO tied to a particular peripheral,
such as UART1 TX/RX or PWM0.
See `LibreTiny/GPIO Access <https://docs.libretiny.eu/link/gpio-access>`__ to learn more.
Most of the popular boards (often incorrectly called "chips"), that are usually shipped with Smart Home devices,
are *supported by LibreTiny*, which means that a pinout drawing is available, with all GPIOs described.
Visit `LibreTiny/Boards <https://docs.libretiny.eu/link/boards>`__ to find all supported boards.
The ``Pin functions`` table outlines all GPIOs available on the chosen board.
*You can use any of the visible names* to access a particular GPIO.
Some notes about the pins on BK72xx:
- ``TX2 (P0)`` and ``RX2 (P1)`` are used for the default :doc:`/components/logger` UART port.
- ``TX1 (P11)`` and ``RX1 (P10)`` are used for flashing firmware, as well as for :doc:`/components/tuya`.
- ``ADC3 (P23)`` is the only :doc:`/components/sensor/adc` available on BK7231.
Some notes about the pins on RTL8710BN/BX:
- ``TX2 (PA30)`` and ``RX2 (PA29)`` are used for flashing the firmware,
as well as the default :doc:`/components/logger` UART port.
- ``TX2 (PA30)`` is additionally used to determine the boot mode on startup (similar to ESP32).
Pulling it LOW on startup will enter "download mode".
Example configuration entries using various naming styles:
.. code-block:: yaml
# GPIO switch on P26/GPIO26 (BK72xx example)
switch:
- platform: gpio
name: Relay 1
pin: P26
# GPIO binary sensor on PA12 (RTL87xx example)
binary_sensor:
- platform: gpio
name: "Pin PA12"
pin: PA12
# ADC reading (BK72xx example)
sensor:
- platform: adc
pin: ADC3
name: "Battery Level"
# PWM component
output:
- platform: libretiny_pwm
pin: PWM2
frequency: 1000 Hz
id: pwm_output
# using light with the PWM
light:
- platform: monochromatic
output: pwm_output
name: "Kitchen Light"
# Tuya MCU on UART1 (BK72xx example)
uart:
rx_pin: RX1
tx_pin: TX1
baud_rate: 9600
tuya:
.. _advanced-options:
Advanced options
----------------
These are some advanced configuration options of LibreTiny platform.
.. code-block:: yaml
# Example configuration entry
bk72xx:
board: cb2s
framework:
version: dev
loglevel: debug
debug:
- wifi
- ota
sdk_silent: auto
uart_port: 2
gpio_recover: false
options:
LT_LOG_HEAP: 1
LT_AUTO_DOWNLOAD_REBOOT: 1
- **loglevel** (*Optional*, string): Logging level for LibreTiny core. Controls the output of logging messages
from the core (doesn't affect ESPHome logger!). *These messages are only visible on the physical UART*.
One of ``verbose``, ``trace`` (same as ``verbose``), ``debug``, ``info``,
``warn`` (default), ``error``, ``fatal``, ``none``.
- **debug** (*Optional*, string or string list): Modules to enable LibreTiny debugging for.
Refer to `LibreTiny/Configuration <https://docs.libretiny.eu/link/config-debug>`__
for more information - some modules are enabled by default.
One or more of ``wifi``, ``client``, ``server``, ``ssl``, ``ota``, ``fdb``,
``mdns``, ``lwip``, ``lwip_assert``.
Specifying ``none`` will disable all modules. You can also combine ``none`` with one or more of the modules.
- **sdk_silent** (*Optional*, string): Define the SDK logging "silent mode".
This disables messages from vendor SDKs, which makes UART output more readable, but can hide some error messages.
*This affects the physical UART port only*.
Refer to `LibreTiny/Configuration <https://docs.libretiny.eu/link/config-serial>`__ for more information.
- ``all``: Disable all messages (default).
- ``auto``: Disable selectively, i.e. during Wi-Fi activation.
- ``none``: Keep all logging messages, don't disable anything.
- **uart_port** (*Optional*, int): Choose the default UART port of the framework.
This affects LibreTiny logging messages, **as well as the default port for**
:doc:`ESPHome logger </components/logger>` (e.g. if you don't specify any other).
One of 0, 1, 2. The default value is chip-specific and is chosen by LibreTiny appropriately.
- **gpio_recover** (*Optional*, boolean): Disable JTAG/SWD debugging peripherals. This may be needed
to free GPIOs that should be used for other functions. Defaults to ``true``.
- **options** (*Optional*, mapping): Custom options passed to LibreTiny platform.
Refer to `LibreTiny/Configuration <https://docs.libretiny.eu/link/config>`__ to see all options.
*This takes precedence (overrides) all options described above*.
See Also
--------
- :doc:`esphome`
- :doc:`/components/output/libretiny_pwm`
- :doc:`/components/text_sensor/libretiny`
- `LibreTiny Documentation <https://docs.libretiny.eu/>`__ (external)
- :doc:`/components/tuya`
- :ghedit:`Edit`

View File

@ -24,7 +24,7 @@ FastLED Light
FastLED does **not** work with ESP-IDF.
For addressable lights, you can use :doc:`esp32_rmt_led_strip`.
For addressable lights, you can use :doc:`esp32_rmt_led_strip` or for SPI LEDs see :doc:`spi_led_strip`..
.. _fastled-clockless:
@ -110,6 +110,8 @@ SPI
The ``fastled_spi`` light platform allows you to create RGB lights
in ESPHome for a :ref:`number of supported chipsets <fastled_spi-chipsets>`.
See :doc:`/components/light/spi_led_strip` for an alternative component that works on ESP-IDF (and Arduino.)
SPI FastLED lights differ from the
:ref:`fastled-clockless` in that they require two pins to be connected, one for a data and one for a clock signal
whereas the clockless lights only need a single pin.
@ -169,6 +171,7 @@ See Also
--------
- :doc:`/components/light/index`
- :doc:`/components/light/spi_led_strip`
- :doc:`/components/power_supply`
- :apiref:`fastled_base/fastled_light.h`
- `Arduino FastLED library <https://github.com/FastLED/FastLED>`__

Binary file not shown.

After

Width:  |  Height:  |  Size: 29 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

View File

@ -0,0 +1,93 @@
LightWaveRF Switch
==================
.. seo::
:description: LightWaveRF Switch Lights
:image: brightness-medium.svg
The ``LightWaveRF`` light platform creates a module to dump and send commands to light switches
.. figure:: images/lightwaverf.jpg
:align: center
:width: 40.0%
LightwaveRF switches are very common in UK automation. They allow control of lights, sockets, relays and more via RF remote or via a hub.
Using an inexpensive RF transmitter and receiver you can control your devices via ESPHome.
.. code-block:: yaml
# Example configuration entry
# Specify the two pins to connect the receiver and transmitter
lightwaverf:
read_pin: 13
write_pin: 14
# Create a switch to trigger a light
switch:
- platform: template
name: "Turn off sofa"
id: light_off_ceiling_sofa
turn_on_action:
lightwaverf.send_raw:
code: [0x04, 0x00, 0x00, 0x00, 0x0f, 0x03, 0x0d, 0x09, 0x08, 0x08]
name: "Sofa"
repeat: 1
Note: To gather the RAW codes from the remote, setup the ``read_pin`` and observe in the logs the printing of the codes.
Configuration variables:
------------------------
- **read_pin** (**Required**, :ref:`Pin Schema <config-pin_schema>`): The pin that the receiver is connected to
- **write_pin** (**Required**, :ref:`Pin Schema <config-pin_schema>`): the pin that the transmitter is connected to
.. lightwaverf.send_raw:
``lightwaverf.send_raw`` Action
--------------------------------
Send the raw data that has been captured via the dump system
.. code-block:: yaml
on_...:
then:
- lightwaverf.send_raw:
code: [0x04, 0x00, 0x00, 0x00, 0x0f, 0x03, 0x0d, 0x09, 0x08, 0x08]
name: "Sofa"
repeat: 1
Configuration variables:
------------------------
- **name** (*Optional*, string): The name to give for the action
- **code** (**Required**, list hex): The raw dump in an array of hex
- **repeat** (*Optional*, int): The number of times the message will be repeated
- **inverted** (*Optional*, boolean): Send the signal inverted
Compatible Hardware
-------------------
The RF transmitters/receivers listed below have been confirmed to work with the current code base. If you discover others that work, please let us know!
Compatible transmitter:
- MX-FS-03V
Compatible receiver:
- RXB6
See Also
--------
- :doc:`/components/light/index`
- :ghedit:`Edit`

View File

@ -9,7 +9,8 @@ NeoPixelBus Light
NeoPixelBus does **not** work with ESP-IDF.
For addressable lights, you can use :doc:`esp32_rmt_led_strip`.
For clockless lights, you can use :doc:`esp32_rmt_led_strip`, and for SPI LEDs see :doc:`spi_led_strip`.
The ``neopixelbus`` light platform allows you to create RGB lights
in ESPHome for an individually addressable lights like NeoPixel or WS2812.

View File

@ -0,0 +1,68 @@
SPI LED Strip Light
===================
.. seo::
:description: Instructions for setting up SPI LED RGB lights in ESPHome.
:image: ../components/light/images/apa102.jpg
The ``spi_led_strip`` light platform drives one or more SPI interfaced RGB LEDs. These LEDs are often used in strips, where
each LED is individually addressable. This component requires an SPI interface to be configured.
This component has been tested with APA102 LEDs and should also work with HD107 and SK9822 type LEDs, or any others
with a similar interface - SPI, 8 bits per colour and BGR ordering.
.. figure:: images/apa102.jpg
:align: center
:width: 75.0%
.. code-block:: yaml
# Example configuration entry
spi:
mosi_pin: GPIO3
clk_pin: GPIO9
light:
- platform: spi_led_strip
num_leds: 30
color_correct: [80%, 60%, 100%]
id: rgb_led
name: "RGB LED Strip"
data_rate: 1MHz
Color Correction
----------------
It is often favourable to calibrate/correct the color produced by an LED strip light as the
perceived intensity of different colors will generally vary. This can be done by using
``color_correct`` to adjust the relative brightness of the RGB components.
Configuration variables:
------------------------
- **name** (**Required**, string): The name of the light.
- **num_leds** (*Optional*, int): The number of LEDs attached. The default is 1.
- **effects** (*Optional*, list): A list of :ref:`light effects <light-effects>` to use for this light.
- **id** (*Optional*, :ref:`config-id`): Manually specify the ID used for code generation.
- **data_rate** (*Optional*): Set the data rate of the SPI interface to the display. One of ``80MHz``, ``40MHz``, ``20MHz``, ``10MHz``, ``5MHz``, ``2MHz``, ``1MHz`` (default), ``200kHz``, ``75kHz`` or ``1kHz``.
- All other options from :ref:`Light <config-light>`.
You may also need to configure an ``output`` GPIO pin to control power to the LEDs, depending on your hardware. The
APA102 and friends do not have a ``CS`` input, and are write-only so the SPI ``miso`` pin should not be specified.
See Also
--------
.. figure:: images/rgb-detail.jpg
:align: center
:width: 75.0%
- :doc:`/components/light/index`
- :doc:`/components/output/ledc`
- :doc:`/components/output/esp8266_pwm`
- :doc:`/components/output/pca9685`
- :doc:`/components/output/tlc59208f`
- :doc:`/components/output/my9231`
- :doc:`/components/output/sm16716`
- :apiref:`rgb/rgb_light_output.h`
- :ghedit:`Edit`

View File

@ -59,6 +59,11 @@ Configuration variables:
- **update_interval** (*Optional*, :ref:`config-time`): The interval that the sensors should be checked.
Defaults to 60 seconds.
- **offline_skip_updates** (*Optional*, integer): When a controller doesn't respond to a command, it is
marked as offline, you can specify how many updates will be skipped while it is offline. If using a bus with multiple
controllers, this avoids waiting for timeouts allowing to read other controllers in the same bus. When the controller
responds to a command, it'll be marked online again.
Example
-------

View File

@ -18,7 +18,7 @@ networks (WiFi, Ethernet).
Configuration variables:
------------------------
- **enable_ipv6** (*Optional*, boolean): Enables IPv6 support. Defaults to ``false``. Only available on ESP32 with ESP-IDF framework.
- **enable_ipv6** (*Optional*, boolean): Enables IPv6 support. Defaults to ``false``.
See Also
--------

View File

@ -0,0 +1,66 @@
LibreTiny PWM Output
====================
.. seo::
:description: Instructions for setting up LibreTiny hardware PWMs.
:image: pwm.png
The LibreTiny PWM platform allows you to use a hardware PWM on BK72xx and RTL87xx chips.
Refer to `LibreTiny/Boards <https://docs.libretiny.eu/link/boards>`__ to find your board
and which PWM pins it supports.
.. code-block:: yaml
# Example configuration entry
output:
- platform: libretiny_pwm
pin: P8
frequency: 1000 Hz
id: pwm_output
# Example usage in a light
light:
- platform: monochromatic
output: pwm_output
name: "Kitchen Light"
Configuration variables:
------------------------
- **pin** (**Required**, :ref:`Pin Schema <config-pin_schema>`): The pin to use PWM on.
- **id** (**Required**, :ref:`config-id`): The id to use for this output component.
- **frequency** (*Optional*, frequency): The frequency to run the PWM with. Lower frequencies
have more visual artifacts, but can represent much more colors. Defaults to ``1000 Hz``.
- All other options from :ref:`Output <config-output>`.
.. _output-libretiny_pwm-set_frequency_action:
``output.libretiny_pwm.set_frequency`` Action
---------------------------------------------
This :ref:`Action <config-action>` allows you to manually change the frequency of a LibreTiny PWM
channel at runtime. Use cases include controlling a passive buzzer (for pitch control).
.. code-block:: yaml
on_...:
- output.libretiny_pwm.set_frequency:
id: pwm_output
frequency: 100Hz
Configuration variables:
- **id** (**Required**, :ref:`config-id`): The ID of the PWM output to change.
- **frequency** (**Required**, :ref:`templatable <config-templatable>`, float): The frequency
to set in hertz.
See Also
--------
- :doc:`/components/libretiny`
- :doc:`/components/output/index`
- :doc:`/components/light/monochromatic`
- :doc:`/components/fan/speed`
- :doc:`/components/power_supply`
- :apiref:`libretiny_pwm/libretiny_pwm.h`
- :ghedit:`Edit`

31
components/psram.rst Normal file
View File

@ -0,0 +1,31 @@
PSRAM
=====
.. seo::
:description: Configuration for the ESP32 PSRAM platform for ESPHome.
:image: psram.svg
This component enables and configures PSRAM if/when available on ESP32 modules/boards.
It is automatically loaded and enabled by components that require it.
PSRAM is only available on the ESP32.
.. code-block:: yaml
# Example configuration entry
psram:
mode: octal
speed: 80MHz
Configuration variables:
------------------------
- **mode** (*Optional*): Defines the operating mode the PSRAM should utilize. One of ``quad`` or ``octal``.
- **speed** (*Optional*, int): The speed at which the PSRAM should operate. One of ``40MHz``, ``80MHz`` or ``120MHz``.
Note that ``80MHz`` and ``120MHz`` are not supported on all modules; in addition, ``120MHz`` is considered
"experimental" at the time this document was written.
See Also
--------
- :ghedit:`Edit`

View File

@ -30,7 +30,7 @@ Configuration variables:
------------------------
- **pin** (**Required**, :ref:`config-pin`): The pin to measure the voltage on.
Or on the ESP8266 alternatively also ``VCC``, see :ref:`adc-esp8266_vcc`.
Or on the ESP8266 or Raspberry Pi Pico it could alternatively be set to ``VCC``, see :ref:`adc-vcc`.
- **name** (**Required**, string): The name of the voltage sensor.
- **attenuation** (*Optional*): Only on ESP32. Specify the ADC
attenuation to use. See :ref:`adc-esp32_attenuation`. Defaults to ``0db``.
@ -122,10 +122,23 @@ For users that don't need a precise voltage reading, the "raw" output option all
Note we don't recommend this method as it will change between chips, and newer ESP32 modules have different ranges (i.e. 0-8191); it is better to use the new calibrated voltages and update any existing filters accordingly.
.. _adc-esp8266_vcc:
.. _adc-vcc:
ESP8266 Measuring VCC
---------------------
Measuring VCC
-------------
The following configuration block adds the sensor reflecting VCC on a supported hardware platform.
Please see specific sections below of what voltage is actually measured.
.. code-block:: yaml
sensor:
- platform: adc
pin: VCC
name: "VCC Voltage"
On ESP8266
~~~~~~~~~~
On the ESP8266 you can even measure the voltage the *chip is getting*. This can be useful in situations
where you want to shut down the chip if the voltage is low when using a battery.
@ -136,12 +149,19 @@ To measure the VCC voltage, set ``pin:`` to ``VCC`` and make sure nothing is con
To avoid confusion: It measures the voltage at the chip, and not at the VCC pin of the board. It should usually be around 3.3V.
.. code-block:: yaml
On Raspberry Pi Pico
~~~~~~~~~~~~~~~~~~~~
On the Raspberry Pi Pico and Pico W the ADC can measure VSYS voltage.
Depending on how VSYS is powered the readings will have different meanings - either power supply voltage when it is connected to VSYS pin directly, or USB voltage (VBUS) minus some drop on the Schottky diode the Raspberry Pi Pico has between those pins.
Our experiments indicate the drop being ~0.1V for Pico and ~0.25V for Pico W; you can use sensor filters to adjust the final value.
.. note::
On Raspberry Pi Pico W the ADC GPIO29 pin for VSYS is shared with WiFi chip, so attempting to use it explicitly will likely hang the WiFi connection.
It is recommended to use ``VCC`` as ADC pin in that case.
sensor:
- platform: adc
pin: VCC
name: "VCC Voltage"
RP2040 Internal Core Temperature
--------------------------------

View File

@ -0,0 +1,84 @@
BMI160 Accelerometer/Gyroscope Sensor
======================================
.. seo::
:description: Instructions for setting up BMI160 Accelerometer and Gyroscope sensors.
:image: bmi160.jpg
The ``bmi160`` sensor platform allows you to use your BMI160 Accelerometer/Gyroscope
(`datasheet <https://www.bosch-sensortec.com/media/boschsensortec/downloads/datasheets/bst-bmi160-ds000.pdf>`__,
`SparkFun`_) sensors with
ESPHome. The :ref:`I²C Bus <i2c>` is
required to be set up in your configuration for this sensor to work.
This component only does some basic filtering and no calibration. Due to the complexity of
this sensor and the amount of possible configuration options, you should probably
create a custom component by copying and modifying the existing code if you want a specific
new feature. Supporting all possible use-cases would be quite hard.
.. figure:: images/bmi160-full.jpg
:align: center
:width: 50.0%
BMI160 Accelerometer/Gyroscope Sensor.
.. _SparkFun: https://www.sparkfun.com/products/18794
.. figure:: images/bmi160-ui.png
:align: center
:width: 80.0%
.. code-block:: yaml
# Example configuration entry
sensor:
- platform: bmi160
address: 0x68
update_interval: 60s
acceleration_x:
name: "BMI160 Accel X"
acceleration_y:
name: "BMI160 Accel Y"
acceleration_z:
name: "BMI160 Accel z"
gyroscope_x:
name: "BMI160 Gyro X"
gyroscope_y:
name: "BMI160 Gyro Y"
gyroscope_z:
name: "BMI160 Gyro z"
temperature:
name: "BMI160 Temperature"
Configuration variables:
------------------------
- **address** (*Optional*, int): Manually specify the I²C address of the sensor. Defaults to ``0x68``, may also be ``0x69``.
- **acceleration_x** (*Optional*): Use the X-Axis of the Accelerometer. All options from
:ref:`Sensor <config-sensor>`.
- **acceleration_y** (*Optional*): Use the Y-Axis of the Accelerometer. All options from
:ref:`Sensor <config-sensor>`.
- **acceleration_z** (*Optional*): Use the Z-Axis of the Accelerometer. All options from
:ref:`Sensor <config-sensor>`.
- **gyroscope_x** (*Optional*): Use the X-Axis of the Gyroscope. All options from
:ref:`Sensor <config-sensor>`.
- **gyroscope_y** (*Optional*): Use the Y-Axis of the Gyroscope. All options from
:ref:`Sensor <config-sensor>`.
- **gyroscope_z** (*Optional*): Use the Z-Axis of the Gyroscope. All options from
:ref:`Sensor <config-sensor>`.
- **temperature** (*Optional*): Use the internal temperature of the sensor. All options from
:ref:`Sensor <config-sensor>`.
- **update_interval** (*Optional*, :ref:`config-time`): The interval to check the sensor. Defaults to ``60s``.
- **id** (*Optional*, :ref:`config-id`): Manually specify the ID used for code generation.
See Also
--------
- :ref:`sensor-filters`
- :doc:`template`
- :doc:`ultrasonic`
- :apiref:`bmi160/bmi160.h`
- `i2cdevlib <https://github.com/jrowberg/i2cdevlib>`__ by `Jeff Rowberg <https://github.com/jrowberg>`__
- :ghedit:`Edit`

After

Width:  |  Height:  |  Size: 3.0 KiB

View File

@ -1,13 +1,15 @@
HRXL MaxSonar WR Series
=======================
HRXL/XL MaxSonar WR Series
==========================
.. seo::
:description: Instructions for setting up MaxBotix HRXL MaxSonar WR ultrasonic distance measurement sensors in ESPHome.
:description: Instructions for setting up MaxBotix HRXL or XL MaxSonar WR ultrasonic distance measurement sensors in ESPHome.
:image: hrxl_maxsonar_wr.jpg
:keywords: ultrasonic, maxbotix, maxsonar
This sensor allows you to use HRXL MaxSonar WR series ultrasonic sensors by MaxBotix
(`datasheet <https://www.maxbotix.com/documents/HRXL-MaxSonar-WR_Datasheet.pdf>`__)
or the XL MaxSonar WR series
(`datasheet <https://www.maxbotix.com/documents/XL-MaxSonar-WR_Datasheet.pdf>`__)
with ESPHome to measure distances. Depending on the model, these sensors can measure
in a range between 30 centimeters and 10 meters.

View File

@ -9,6 +9,7 @@ HTU21D | Si7021 | SHT21 Temperature & Humidity Sensor
The HTU21D Temperature & Humidity component allows you to use HTU21D, Si7021 and SHT21 sensors with
ESPHome. The :ref:`I²C Bus <i2c>` is required to be set up in your configuration for this sensor to work.
Example sensors:
- (`Adafruit <https://www.adafruit.com/product/1899>`__)
@ -34,6 +35,8 @@ Example sensors:
name: "Temperature"
humidity:
name: "Humidity"
heater:
name: "Heater"
Configuration variables:
------------------------
@ -44,8 +47,12 @@ Configuration variables:
- **humidity** (*Optional*): The information for the humidity sensor.
All options from :ref:`Sensor <config-sensor>`.
- **heater** (*Optional*): The information for the heater sensor.
All options from :ref:`Sensor <config-sensor>`.
- **update_interval** (*Optional*, :ref:`config-time`): The interval to check the sensor. Defaults to ``60s``.
The heater may be enabled to help correct the reading; see the datasheet for more information.
See Also
--------

Binary file not shown.

After

Width:  |  Height:  |  Size: 84 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 36 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 103 KiB

View File

@ -0,0 +1,135 @@
PMWCS3 Capacitive Soil Moisture and Temperature Sensor
======================================================
.. seo::
:description: Instructions for setting up PMWCS3 capacitive soil moisture sensor in ESPHome.
:image: pmwcs3.jpg
:keywords: PMWCS3
The ``pmwcs3`` sensor platform allows you to use your PMWCS3
(`informations <https://tinovi.com/wp-content/uploads/2020/01/PM-WCS-3-I2C.pdf>`__)
capacitive soil moisture and temperature sensor with ESPHome. The :ref:`I²C bus <i2c>` is required to be set up in
your configuration for this sensor to work. Wiring scheme: red is 3.3V, black & shield is GND, green is SDA and white is SCL.
2.2kOhm resistors are advised to pullup both SDA & SDA lines.
.. figure:: images/pmwcs3.jpg
:align: center
:width: 80.0%
PMWCS3 Capacitive Soil Moisture and Temperature Sensor.
.. code-block:: yaml
# Example configuration entry
sensor:
- platform: pmwcs3
e25:
name: "pmwcs3 e25"
ec:
name: "pmwcs3 ec"
temperature:
name: "pmwcs3 temperature"
vwc:
name: "pmwcs3 vwc"
Configuration variables:
------------------------
- **e25** (*Optional*): Electrical Conductivity, reference at 25°C in dS/m.
All options from :ref:`Sensor <config-sensor>`.
- **ec** (*Optional*): Electrical Conductivity in mS/m.
All options from :ref:`Sensor <config-sensor>`.
- **temperature** (*Optional*): Soil temperature in °C.
All options from :ref:`Sensor <config-sensor>`.
- **vwc** (*Optional*): Volumetric Water Content in cm3cm3.
All options from :ref:`Sensor <config-sensor>`.
- **address** (*Optional*, int): Manually specify the I²C address of the sensor.
Defaults to ``0x63``.
- **update_interval** (*Optional*, :ref:`config-time`): The interval to check the
sensor. Defaults to ``60s``.
.. _sensor-PMWCS3AirCalibrationAction:
``pmwcs3.air_calibration`` Action
-----------------------------------
The pmwcs3 probe can to be calibrated in dry/air conditions.
The air calibration is a 30s procedure.
.. code-block:: yaml
# Example configuration entry
sensor:
- platform: pmwcs3
id: pmwcs3_id
# ...
# in some trigger
on_...:
- sensor.pmwcs3_id.air_calibration:
id: pmwcs3_id
Configuration option:
- **id** (**Required**, :ref:`config-id`): The ID of the pmwcs3 sensor.
.. _sensor-PMWCS3WaterCalibrationAction:
``pmwcs3.water_calibration`` Action
-----------------------------------
The pmwcs3 probe can to be also calibrated in water saturated conditions. Install the probe into a glass of water.
The water calibration is also a 30s procedure.
.. code-block:: yaml
# Example configuration entry
sensor:
- platform: pmwcs3
id: pmwcs3_id
# ...
# in some trigger
on_...:
- sensor.pmwcs3_id.water_calibration:
id: pmwcs3_id
Configuration option:
- **id** (**Required**, :ref:`config-id`): The ID of the pmwcs3 sensor.
.. _sensor-PMWCS3NewI2cAddressAction:
``pmwcs3.newi2caddress`` Action
-----------------------------------
A new I2C address can be set (for multi-probes cases for example)
.. code-block:: yaml
# Example configuration entry
sensor:
- platform: pmwcs3
id: pmwcs3_id
# ...
# in some trigger
on_...:
- sensor.pmwcs3_id.newi2caddress:
id: pmwcs3_id
newaddress: 0x65
Configuration options:
- **id** (**Required**, :ref:`config-id`): The ID of the pmwcs3 sensor.
- **newaddress** (**Required**, int): New I2C address.
See Also
--------
- :ref:`sensor-filters`
- :apiref:`pmwcs3/pmwcs3.h`
- `Temperature Compensation for Conductivity <https://www.aqion.de/site/112>`__
- `PMWCS3 Library <https://github.com/tinovi/i2cArduino>`__ by `@tinovi <https://github.com/tinovi>`__
- :ghedit:`Edit`

View File

@ -0,0 +1,49 @@
SEN0321 DFRobot Ozone Sensor
============================
.. seo::
:description: Instructions for setting up SEN0321 DFRobot ozone sensors
:image: sen0321.jpg
:keywords: sen0321
The ``sen0321`` sensor platform allows you to use your DFRobot
(`product wiki <https://wiki.dfrobot.com/Gravity_IIC_Ozone_Sensor_(0-10ppm)%20SKU_SEN0321>`__,
`DFRobot`_) ozone sensors with ESPHome. The sensor is used in automatic mode where the sensor actively
updates its measurements every 2 seconds.
:ref:`I²C <i2c>` is required to be set up in your configuration for this sensor to work.
.. figure:: images/sen0321.jpg
:align: center
:width: 50.0%
DFRobot Ozone Sensor (sen0321).
.. _DFRobot: https://www.dfrobot.com/product-2005.html
.. code-block:: yaml
# Example configuration entry
sensor:
- platform: sen0321
name: "Ozone Sensor"
address: 0x73
update_interval: 60s
Configuration variables:
------------------------
- All options from :ref:`Sensor <config-sensor>`.
- **address** (*Optional*, int): Manually specify the I²C address of
the sensor. Defaults to ``0x73``. Sensor can be configured to ``0x70``, ``0x71``, ``0x72``, or ``0x73`` using jumpers on the board.
- **update_interval** (*Optional*, :ref:`config-time`): The interval to check the
sensor. Defaults to ``60s``.
See Also
--------
- :ref:`sensor-filters`
- :apiref:`sen0321/sen0321.h`
- `DFRobot SEN0321 Library <https://github.com/DFRobot/DFRobot_OzoneSensor/>`__ by `DFRobot <https://www.dfrobot.com/>`__
- :ghedit:`Edit`

View File

@ -48,6 +48,8 @@ Configuration variables:
Defaults to ``0x44``.
- **update_interval** (*Optional*, :ref:`config-time`): The interval to check the
sensor. Defaults to ``60s``.
- **heater_enabled** (*Optional*, bool): Turn on/off heater at boot.
Defaults to ``true``.
See Also
--------

View File

@ -4,47 +4,145 @@ SPI Bus
=======
.. seo::
:description: Instructions for setting up an SPI bus in ESPHome
:description: Instructions for setting up SPI components in ESPHome
:image: spi.svg
:keywords: SPI
SPI is a very common high-speed protocol for a lot of devices. The SPI bus usually consists of 4 wires:
SPI is a very common high-speed protocol for a lot of devices. The ESPHome SPI component implements only the host controller
role, where it controls the bus, and writes or reads data from peripherals attached to the bus.
The SPI bus usually consists of 4 wires:
- **CLK**: Is used to tell the receiving device when to read data. All devices on the bus can
share this line. Sometimes also called ``SCK``.
- **CS** (chip select): Is used to tell the receiving device when it should listen for data. Each device has
an individual CS line. Sometimes also called ``SS``. If the SPI bus has a single device, its CS pin
can sometimes be connected to ground to tell it that it is always selected.
- **MOSI** (also DIN): Is used to send data from the master (the ESP) to the receiving device. All devices on the bus can
share this line.
- **MISO** (also DOUT): Is used to receive data. All devices on the bus can
share this line.
- **MOSI** (aka SDO - Serial Data Out): Is used to send data from the controller (the ESP) to the peripheral device.
All devices on the bus share this line.
- **MISO** (also SDI - Serial Data In): Is used to receive data. All devices on the bus share this line.
In some cases one of **MOSI** or **MISO** do not exist as the receiving device only accepts data or sends data.
To set up SPI devices in ESPHome, you first need to place a top-level SPI hub like below which defines what pins to
use for the functions described above. The **CS** pins are then individually managed by the components. The ``spi:``
component also accepts a list of buses if you want to have multiple SPI buses with your ESP (though this should
rarely be necessary, as the SPI bus can be shared by the devices).
To set up SPI devices in ESPHome, you first need to place a top-level SPI component which defines the pins to
use for the functions described above. The **CS** pins are individually managed by the other components that
reference the ``spi`` component.
This component also accepts a list of controllers if you want to implement multiple SPI buses.
.. code-block:: yaml
# Example configuration entry
# Example configuration entry - single controller
spi:
clk_pin: GPIO14
mosi_pin: GPIO13
miso_pin: GPIO12
# Example configuration entry - two controllers
spi:
- id: spi_bus0
clk_pin: GPIO18
mosi_pin: GPIO23
miso_pin: GPIO19
interface: hardware
- id: spi_bus1
clk_pin: GPIO14
mosi_pin: GPIO27
miso_pin: GPIO26
interface: any
Configuration variables:
------------------------
- **clk_pin** (**Required**, :ref:`Pin Schema <config-pin_schema>`): The pin used for the clock line of the SPI bus.
- **mosi_pin** (*Optional*, :ref:`Pin Schema <config-pin_schema>`): The pin used for the MOSI line of the SPI bus.
- **miso_pin** (*Optional*, :ref:`Pin Schema <config-pin_schema>`): The pin used for the MISO line of the SPI bus.
- **force_sw** (*Optional*, boolean): Whether software implementation should be used even if hardware one is available.
- **id** (*Optional*, :ref:`config-id`): Manually specify the ID for this SPI hub if you need multiple SPI hubs.
- **interface** (*Optional*): Controls which hardware or software SPI implementation should be used.
Value may be one of ``any`` (default), ``software``, ``hardware``, ``spi``, ``spi2`` or ``spi3``, depending on
the particular chip. See discussion below.
- **force_sw** (*Optional*, **Deprecated**, boolean): Whether software implementation should be used even if a hardware
controller is available. Default is ``false``.
Interface selection:
--------------------
ESP32 and ESP8266 chips have several hardware SPI controller implementations - usually the first one or two
are reserved for use to access
the flash and PSRAM memories, leaving one or two user-accessible controllers. SPI controller instances configured in
ESPHome can be assigned to one of these with the ``interface:`` configuration option.
By default (``interface: any``) the first available hardware controller will be assigned, a second if available then
any further instances configured will use software mode. You can choose a specific controller with ``spi`` (meaning
the first or only available controller) or one of ``spi2`` and ``spi3`` for ESP32 chips with two available SPI
controllers. Note that SPI0 and SPI1 are typically not available, being reserved for accessing flash and PSRAM.
If the ``software`` option is chosen, or you configure more SPI instances than there are available hardware controllers,
the remaining instances will use a software implementation, which is unable to achieve data rates above a few hundred
kHz. This is acceptable for sensors or other devices not transferring large amounts of data, but will be too slow
to drive a display for example.
While the ESP32 supports the reassignment of the default SPI pins to most other GPIO pins, using the dedicated SPI pins
can improve performance and stability for certain ESP/device combinations.
ESP8266 has a more limited selection of pins that can be used; check the datasheet for more information.
Generic SPI device component:
-----------------------------
.. _spi_device:
Other components that depend on the SPI component will reference it, typically to communicate with specific
peripheral devices. There is also a general-purpose SPI device component that can be used to communicate with hardware not
supported by a specific component. It allows selection of the SPI mode, data_rate, CS pin and bit order.
Reads and writes on the device can be performed with lambdas. For example:
.. code-block:: yaml
spi:
clk_pin: GPIO14
mosi_pin: GPIO27
miso_pin: GPIO26
interface: hardware
spi_device:
id: spidev
cs_pin: GPIO13
data_rate: 2MHz
mode: 3
bit_order: lsb_first
on...:
then:
- lambda: !lambda |-
id(spidev).enable();
id(spidev).write_byte(0x4F);
id(spidev).disable();
Configuration variables:
------------------------
- **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.
- **mode** (*Optional*): Set the controller mode - one of ``mode0``, ``mode1``, ``mode2``, ``mode3``. The default is ``mode3``.
See table below for more information
- **bit_order** (*Optional*): Set the bit order - choose one of ``msb_first`` (default) or ``lsb_first``.
- **cs_pin** (*Optional*, :ref:`Pin Schema <config-pin_schema>`): The CS pin.
SPI modes:
----------
SPI devices operate in one of four modes as per the table below. The choice of mode is dictated by the requirements
of the speficic peripheral chip.
.. csv-table:: Supported Modes
:header: "Mode", "Clock Idle Polarity", "Clock Phase", "Data shifted on", "Data sampled on"
"0", "low", "leading", "/CS activation and falling CLK", "rising CLK"
"1", "low", "trailing", "rising CLK", "falling CLK"
"2", "high", "leading", "/CS activation and rising CLK", "falling CLK"
"3", "high", "trailing", "falling CLK", "rising CLK"
**Please note:** while both ESP8266 and ESP32 support the reassignment of the default SPI pins to other GPIO pins, using the dedicated SPI pins can improve performance and stability for certain ESP/device combinations.
See Also
--------

View File

@ -0,0 +1,31 @@
LibreTiny Text Sensor
=====================
.. seo::
:description: Instructions for setting up LibreTiny text sensors.
:image: libretiny.svg
The ``libretiny`` text sensor platform exposes various LibreTiny core
information via text sensors.
.. code-block:: yaml
# Example configuration entry
text_sensor:
- platform: libretiny
version:
name: LibreTiny Version
Configuration variables:
------------------------
- **version** (*Optional*): Expose the version of LibreTiny core as a text sensor. All options from
:ref:`Text Sensor <config-text_sensor>`.
See Also
--------
- :doc:`/components/libretiny`
- :apiref:`libretiny/lt_component.h`
- :ghedit:`Edit`

296
components/wireguard.rst Normal file
View File

@ -0,0 +1,296 @@
WireGuard Component
===================
.. |wireguard| unicode:: WireGuard 0xAE
.. _wireguard: https://www.wireguard.org/
.. seo::
:description: Instructions to setup WireGuard for your ESP board.
:keywords: WireGuard, VPN, ESP32
|wireguard|_ is an extremely simple yet fast and modern VPN that utilizes
state-of-the-art cryptography. This component uses a **custom**
implementation not developed by original authors and currently
available for **ESP32 platform only**.
Please note that *"WireGuard" and the "WireGuard" logo are
registered trademarks of Jason A. Donenfeld.* See
`"WireGuard" Trademark Usage Policy <https://www.wireguard.com/trademark-policy/>`__
for additional information.
.. warning::
To successfully use this component you must have |wireguard| also
on your remote host (already installed and ready to accept connections).
If you don't have it please read the section :ref:`wireguard-installation`.
.. warning::
This component requires the system clock to be synchronized.
See :doc:`time/index` to setup a time source
and **do not use** ``homeassistant`` time-platform if
Home Assistant is on the remote peer because the time
synchronization is a prerequisite to establish the VPN link.
The :doc:`time/sntp` is a valid time-platform choice.
A VPN tunnel can be created to a **single** remote peer
adding the following to your configuration:
.. code-block:: yaml
# Example configuration entry
wireguard:
address: x.y.z.w
private_key: AaBbCcDd...=
peer_endpoint: wg.server.example
peer_public_key: EeFfGgHh...=
# Optional netmask (this is the default if omitted)
netmask: 255.255.255.255
# Optional endpoint port (WireGuard default if omitted)
peer_port: 51820
# Optional pre-shared key (omit if not in use)
peer_preshared_key: XxYyZzWw...=
# Optional list of ip/mask (any host is allowed if omitted)
peer_allowed_ips:
- x.y.z.0/24
- l.m.n.o/32 # the /32 can be omitted for single host
- [...]
# Optional keepalive (disabled by default)
peer_persistent_keepalive: 25s
It is recommended to use *secrets* at least for private and pre-shared keys:
.. code-block:: yaml
wireguard:
private_key: !secret wg_privkey
peer_preshared_key: !secret wg_shrdkey
Configuration variables
------------------------
.. _wireguard-address:
- **address** (**Required**, IPv4 address): The local VPN address of the device.
If you intend to upload firmwares through the VPN link you probably need
to copy this value to the ``use_address`` parameter of the :doc:`wifi`.
- **netmask** (*Optional*, IPv4 address): The netmask for the configured address.
Default to ``255.255.255.255``.
See section :ref:`wireguard-static-routes` if outgoing connections are
expected to transit through the VPN link (e.g. with :doc:`mqtt` to a
remote MQTT broker).
- **private_key** (**Required**, string): The private key of the device.
- **peer_endpoint** (**Required**, string): The hostname of the remote peer.
- **peer_port** (*Optional*, UDP port): The port where remote peer is listening on.
The |wireguard| default is ``51820``.
- **peer_public_key** (**Required**, string): The public key of the remote peer.
- **peer_preshared_key** (*Optional*, string): The chosen pre-shared key between
local device and remote peer.
- **peer_persistent_keepalive** (*Optional*, :ref:`config-time`): The amount of
time after which a *keepalive* packet is sent through the tunnel.
By default this feature is disabled (``0s``).
If there are NATs or firewalls between the device and the remote peer set
this value to something like ``25s``.
- **peer_allowed_ips** (*Optional*, list of IPv4 networks): A list of networks
in CIDR notation (*IP/mask*) to be allowed through the tunnel. Any host
(``0.0.0.0/0``) will be allowed if this parameter is omitted.
The device own ``address/32`` is always added by default to this list.
See section :ref:`wireguard-static-routes` if outgoing connections are
expected to transit through the VPN link (e.g. with :doc:`mqtt` to a
remote MQTT broker).
- **reboot_timeout** (*Optional*, :ref:`config-time`): The amount of time to wait
before rebooting the device when the remote peer is unreachable. Can be disabled
by setting this to ``0s``. Default to ``15min``.
- **require_connection_to_proceed** (*Optional*, boolean): Set to ``true`` to
wait for the remote peer to be up before continuing to boot the device.
Default to ``false``.
This can be used to delay the initialization of components that use the
VPN tunnel as long as the VPN isn't ready. For example if you are using
:doc:`mqtt` to reach a remote broker you may experience boot freeze just
after the setup of MQTT because it waits for the broker to be reachable,
but the connection cannot be established until the VPN link is
active too. To bypass such deadlock set this parameter to ``true`` in
order to not initialize MQTT until the remote peer is up.
- **update_interval** (*Optional*, :ref:`config-time`): How often to check
the connection status and the latest handshake value. Default to ``10s``.
- **id** (*Optional*, :ref:`config-id`): Manually specify the ID used for code generation.
.. _wireguard-static-routes:
Static routes and outgoing connections
--------------------------------------
Currently there is no way on ESP32 devices to configure static routes for
network interfaces, so the ``peer_allowed_ips`` list is used only to allow
(or drop) packets that pass through the VPN tunnel, not to define static
routes for remote hosts.
The routes are implicitly added by the configured ``netmask`` and
**only** packets with destination *inside* the same network defined
by ``address/netmask`` will be routed to the tunnel.
This means that the user has to tweak the ``netmask`` parameter
to "cover" **all** the networks in the allowed IPs list in order
to successfully establish *outgoing* connections to remote hosts.
Incoming connections are not affected by ``netmask``.
Let's explain with some examples:
+--------------+---------------------+----------------------+------------------------------+
| address | netmask | allowed ips | working outgoing connections |
+==============+=====================+======================+==============================+
| 172.16.0.100 | *omitted* or | *omitted* or | **none**, |
| | 255.255.255.255 | any other value | no routes are created |
+ +---------------------+----------------------+------------------------------+
| | 255.255.255.0 | *omitted* | only to ``172.16.0.0/24`` |
+ + +----------------------+ because ``192.168.0.0/24`` +
| | | - 172.16.0.0/24 | and any other network will |
| | | - 192.168.0.0/24 | be outside ``172.16.0.0/24`` |
| | | - *any other* | |
+ + +----------------------+------------------------------+
| | | - 192.168.0.0/24 | **none** because |
| | | | ``192.168.0.0/24`` is not |
| | | | part of ``172.16.0.0/24`` |
+--------------+---------------------+----------------------+------------------------------+
| 10.44.0.100 | 255.0.0.0 | *omitted* | to ``10.0.0.0/8`` network |
+ + +----------------------+------------------------------+
| | | - 10.44.0.0/16 | only to the networks in |
| | | - 10.10.0.0/16 | the allowed list because the |
| | | | netmask will route the whole |
| | | | ``10.0.0.0/8`` but wireguard |
| | | | allows only those two |
| | | | subnets |
+--------------+---------------------+----------------------+------------------------------+
| any | 0.0.0.0 | *omitted* | **any** |
+ + +----------------------+------------------------------+
| | | - 172.16.0.0/24 | to any network that is in |
| | | - 10.44.0.0/16 | the list of allowed IPs |
| | | - 10.10.0.0/16 | because the netmask will |
| | | | route any traffic but |
| | | | wireguard allows only its |
| | | | own list |
+--------------+---------------------+----------------------+------------------------------+
.. note::
Setting the ``netmask`` to ``0.0.0.0`` has the effect of routing
through the VPN link any traffic. It is like having set the wireguard
interface as the system default.
.. _wireguard-sensors:
Sensors
-------
Here after the sensors available for this component.
Status Binary Sensor
^^^^^^^^^^^^^^^^^^^^
This binary sensor tracks the connection status (*online*/*offline*) of the remote peer.
.. code-block:: yaml
# Example configuration entry
binary_sensor:
- platform: wireguard
status:
name: 'WireGuard Status'
All options from :ref:`Binary Sensor <config-binary_sensor>` can be added to the
above configuration.
Latest Handshake Sensor
^^^^^^^^^^^^^^^^^^^^^^^
This sensor reports the *timestamp* of the latest completed handshake.
.. code-block:: yaml
# Example configuration entry
sensor:
- platform: wireguard
latest_handshake:
name: 'WireGuard Latest Handshake'
All options from :ref:`Sensor <config-sensor>` can be added to the
above configuration.
.. _wireguard-installation:
Remote peer setup
-----------------
There are many different ways for installing and configuring
|wireguard| on servers, home servers or general host. It depends
on the platform and on the operating system in use.
You can start reading the `official documentation <https://www.wireguard.com/>`__
to have an overview of what it is and on how to install it *system wide* for
common operating systems. Read the thread at `Home Assistant Community Add-on: WireGuard
<https://community.home-assistant.io/t/home-assistant-community-add-on-wireguard/134662>`__
if you intend to install it through Home Assistant. Plase note that securely
setting up a VPN requires some networking experience, you will need to open
router ports and possibly use custom commands to redirect traffic.
Once everything is configured you should be able to add the device
to Home Assistant. See next section.
Connecting to remote Home Assistant
-----------------------------------
The ESP device should interact with remote Home Assistant, across the VPN link,
as it is on the local network but probably the initial *auto discovery*
will not work and you have to add the device **manually**.
These are the steps:
1. go to the Home Assistant "Integrations" page
2. click on the "Add Integration" button (bottom right corner)
3. select "ESPHome" from the list
4. insert the configured IP :ref:`address <wireguard-address>`
as the host name
The device should now be linked to your remote Home Assistant.
.. note::
If you have issues linking the ESP device try setting
the ``use_address`` parameter of the :doc:`wifi` to the value
of the :ref:`address <wireguard-address>` configured here.
See Also
--------
- :doc:`time/index`
- :doc:`time/sntp`
- |wireguard|_ official website
- `Home Assistant Community Add-on: WireGuard
<https://community.home-assistant.io/t/home-assistant-community-add-on-wireguard/134662>`__
(also on `GitHub <https://github.com/hassio-addons/addon-wireguard>`__)
- :ghedit:`Edit`

View File

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

View File

@ -273,7 +273,8 @@ global variables can be used to store the state of a garage door.
# Example for global string variable
- id: my_global_string
type: std::string
restore_value: no # Strings cannot be saved/restored
restore_value: yes
max_restore_data_length: 24
initial_value: '"Global value is"'
# In an automation
@ -298,6 +299,8 @@ Configuration variables:
- **restore_value** (*Optional*, boolean): Whether to try to restore the state on boot up.
Be careful: on the ESP8266, you only have a total of 96 bytes available for this! Defaults to ``no``.
This will use storage in "RTC memory", so it won't survive a power-cycle unless you use the ``esp8266_restore_from_flash`` option to save to flash. See :doc:`esp8266_restore_from_flash </components/esphome>` for details.
- **max_restore_data_length** (*Optional*, integer): Only applies to variables of type ``std::string``. ESPHome will allocate enough space for this many characters,
plus single character of overhead. Strings longer than this will not be saved. The max value of this variable is 254 characters, and the default is 63 characters.
- **initial_value** (*Optional*, string): The value with which to initialize this variable if the state
can not be restored or if state restoration is not enabled. This needs to be wrapped in quotes! Defaults to
the C++ default value for this type (for example ``0`` for integers).

View File

@ -19,6 +19,7 @@ Contributors
- `007hacky007 (@007hacky007) <https://github.com/007hacky007>`__
- `0hax (@0hax) <https://github.com/0hax>`__
- `0x0a11c0de (@0x0a11c0de) <https://github.com/0x0a11c0de>`__
- `Tercio Filho (@0x3333) <https://github.com/0x3333>`__
- `Denis Bodor (aka Lefinnois) (@0xDRRB) <https://github.com/0xDRRB>`__
- `2016for (@2016for) <https://github.com/2016for>`__
- `2mikrobi (@2mikrobi) <https://github.com/2mikrobi>`__
@ -95,6 +96,7 @@ Contributors
- `Sergey Anisimov (@anisimovsergey) <https://github.com/anisimovsergey>`__
- `Nikolay Vasilchuk (@Anonym-tsk) <https://github.com/Anonym-tsk>`__
- `Anthony Keane (@anthonykeane) <https://github.com/anthonykeane>`__
- `Anthony (@AnthonyMaiorani) <https://github.com/AnthonyMaiorani>`__
- `Rémi K. (@antibill51) <https://github.com/antibill51>`__
- `Antonio Fiol (@antonio-fiol) <https://github.com/antonio-fiol>`__
- `Adriaan Peeters (@apeeters) <https://github.com/apeeters>`__
@ -147,6 +149,7 @@ Contributors
- `Bella Coola (@BellaCoola) <https://github.com/BellaCoola>`__
- `Pierre (@bemble) <https://github.com/bemble>`__
- `Ben-Schwabe (@Ben-Schwabe) <https://github.com/Ben-Schwabe>`__
- `Benas09 (@Benas09) <https://github.com/Benas09>`__
- `Ben Hoff (@benhoff) <https://github.com/benhoff>`__
- `Benjamin Aigner (@benjaminaigner) <https://github.com/benjaminaigner>`__
- `Benno Pütz (@bennop) <https://github.com/bennop>`__
@ -167,6 +170,7 @@ Contributors
- `Bill Church (@billchurch) <https://github.com/billchurch>`__
- `Brian Kaufman (@bkaufx) <https://github.com/bkaufx>`__
- `JDavid (@blackhack) <https://github.com/blackhack>`__
- `blackshoals (@blackshoals) <https://github.com/blackshoals>`__
- `blacktirion (@blacktirion) <https://github.com/blacktirion>`__
- `blakadder (@blakadder) <https://github.com/blakadder>`__
- `Branimir Lambov (@blambov) <https://github.com/blambov>`__
@ -224,6 +228,7 @@ Contributors
- `Carlos Cordero (@ccorderor) <https://github.com/ccorderor>`__
- `cdmonk (@cdmonk) <https://github.com/cdmonk>`__
- `ceaswaran (@ceaswaran) <https://github.com/ceaswaran>`__
- `Xavi (@Cebeerre) <https://github.com/Cebeerre>`__
- `Cellie (@CelliesProjects) <https://github.com/CelliesProjects>`__
- `Jeppe H. (@cenobitedk) <https://github.com/cenobitedk>`__
- `Chris Feenstra (@cfeenstra1024) <https://github.com/cfeenstra1024>`__
@ -280,6 +285,7 @@ Contributors
- `d-rez (@d-rez) <https://github.com/d-rez>`__
- `Dale Higgs (@dale3h) <https://github.com/dale3h>`__
- `damanti-me (@damanti-me) <https://github.com/damanti-me>`__
- `Justin Grover (@dancingcactus) <https://github.com/dancingcactus>`__
- `Dan C Williams (@dancwilliams) <https://github.com/dancwilliams>`__
- `Daniel Bjørnbakk (@danibjor) <https://github.com/danibjor>`__
- `Daniel Kucera (@danielkucera) <https://github.com/danielkucera>`__
@ -324,6 +330,7 @@ Contributors
- `denes44 (@denes44) <https://github.com/denes44>`__
- `Dennis (@dennisvbussel) <https://github.com/dennisvbussel>`__
- `dentra (@dentra) <https://github.com/dentra>`__
- `depasseg (@depasseg) <https://github.com/depasseg>`__
- `Davide Depau (@depau) <https://github.com/depau>`__
- `dependabot[bot] (@dependabot[bot]) <https://github.com/dependabot[bot]>`__
- `Joeri Colman (@depuits) <https://github.com/depuits>`__
@ -354,7 +361,6 @@ Contributors
- `Dominik (@DomiStyle) <https://github.com/DomiStyle>`__
- `Derek M. (@doolbneerg) <https://github.com/doolbneerg>`__
- `Dorian Zedler (@dorianim) <https://github.com/dorianim>`__
- `Mark Dietzer (@Doridian) <https://github.com/Doridian>`__
- `Sebastian Krzyszkowiak (@dos1) <https://github.com/dos1>`__
- `Jiang Sheng (@doskoi) <https://github.com/doskoi>`__
- `Artem Sheremet (@dotdoom) <https://github.com/dotdoom>`__
@ -495,6 +501,7 @@ Contributors
- `Germain Masse (@gmasse) <https://github.com/gmasse>`__
- `Garret Buell (@gmbuell) <https://github.com/gmbuell>`__
- `Jelle Raaijmakers (@gmta) <https://github.com/gmta>`__
- `gnicolasb (@gnicolasb) <https://github.com/gnicolasb>`__
- `Go0oSer (@Go0oSer) <https://github.com/Go0oSer>`__
- `Dario Gogliandolo (@godario) <https://github.com/godario>`__
- `Gonzalo Paniagua Javier (@gonzalop) <https://github.com/gonzalop>`__
@ -506,12 +513,12 @@ Contributors
- `Greg Arnold (@GregJArnold) <https://github.com/GregJArnold>`__
- `Greg MacLellan (@gregmac) <https://github.com/gregmac>`__
- `Gil Peeters (@grillp) <https://github.com/grillp>`__
- `Guillaume Rischard (@grischard) <https://github.com/grischard>`__
- `George (@grob6000) <https://github.com/grob6000>`__
- `groovejumper (@groovejumper) <https://github.com/groovejumper>`__
- `gsexton (@gsexton) <https://github.com/gsexton>`__
- `Gabriel Sieben (@gsieben) <https://github.com/gsieben>`__
- `Jadson Santos (@gtjadsonsantos) <https://github.com/gtjadsonsantos>`__
- `guardmedia (@guardmedia) <https://github.com/guardmedia>`__
- `Guillaume DELVIT (@guiguid) <https://github.com/guiguid>`__
- `guillempages (@guillempages) <https://github.com/guillempages>`__
- `Guyohms (@Guyohms) <https://github.com/Guyohms>`__
@ -538,7 +545,10 @@ Contributors
- `Hermann Kraus (@herm) <https://github.com/herm>`__
- `Herr Frei (@herrfrei) <https://github.com/herrfrei>`__
- `highground88 (@highground88) <https://github.com/highground88>`__
- `hindenbugbite (@hindenbugbite) <https://github.com/hindenbugbite>`__
- `Henrik Fransson (@hmfhmf) <https://github.com/hmfhmf>`__
- `Hamish Moffatt (@hmoffatt) <https://github.com/hmoffatt>`__
- `Hobby Components (@HobbyComponents) <https://github.com/HobbyComponents>`__
- `Marcel Hoppe (@hobbypunk90) <https://github.com/hobbypunk90>`__
- `Hopperpop (@Hopperpop) <https://github.com/Hopperpop>`__
- `Ilia Sotnikov (@hostcc) <https://github.com/hostcc>`__
@ -640,8 +650,6 @@ Contributors
- `jmichiel (@jmichiel) <https://github.com/jmichiel>`__
- `JMoratelli (@JMoratelli) <https://github.com/JMoratelli>`__
- `Jonathas Barbosa (@jnthas) <https://github.com/jnthas>`__
- `Joe Gross (@joegross) <https://github.com/joegross>`__
- `Johan van der Kuijl (@johanvanderkuijl) <https://github.com/johanvanderkuijl>`__
- `Johboh (@Johboh) <https://github.com/Johboh>`__
- `John Britton (@johndbritton) <https://github.com/johndbritton>`__
- `John Erik Halse (@johnerikhalse) <https://github.com/johnerikhalse>`__
@ -675,6 +683,7 @@ Contributors
- `kaegi (@kaegi) <https://github.com/kaegi>`__
- `kahrendt (@kahrendt) <https://github.com/kahrendt>`__
- `Kamahat (@kamahat) <https://github.com/kamahat>`__
- `Kapil Yedidi (@kapily) <https://github.com/kapily>`__
- `Karl0ss (@karl0ss) <https://github.com/karl0ss>`__
- `Kattni (@kattni) <https://github.com/kattni>`__
- `Krzysztof Białek (@kbialek) <https://github.com/kbialek>`__
@ -777,10 +786,8 @@ Contributors
- `Ben Marengo (@marengaz) <https://github.com/marengaz>`__
- `Marvin Gaube (@margau) <https://github.com/margau>`__
- `maringeph (@maringeph) <https://github.com/maringeph>`__
- `Mario (@mario-tux) <https://github.com/mario-tux>`__
- `Mark Hildreth (@markhildreth) <https://github.com/markhildreth>`__
- `Mark Schabacker (@markschabacker) <https://github.com/markschabacker>`__
- `Marek Marczykowski-Górecki (@marmarek) <https://github.com/marmarek>`__
- `marshn (@marshn) <https://github.com/marshn>`__
- `marsjan155 (@marsjan155) <https://github.com/marsjan155>`__
- `Martin (@martgras) <https://github.com/martgras>`__
@ -876,7 +883,6 @@ Contributors
- `Nicky Ivy (@nickyivyca) <https://github.com/nickyivyca>`__
- `NP v/d Spek (@nielsnl68) <https://github.com/nielsnl68>`__
- `Niels Zeilemaker (@NielsZeilemaker) <https://github.com/NielsZeilemaker>`__
- `Joakim Vindgard (@nigobo) <https://github.com/nigobo>`__
- `nikito7 (@nikito7) <https://github.com/nikito7>`__
- `niklasweber (@niklasweber) <https://github.com/niklasweber>`__
- `Zvonimir Haramustek (@nitko12) <https://github.com/nitko12>`__
@ -950,7 +956,6 @@ Contributors
- `Peter Kuehne (@pkuehne) <https://github.com/pkuehne>`__
- `Plácido Revilla (@placidorevilla) <https://github.com/placidorevilla>`__
- `PlainTechEnthusiast (@PlainTechEnthusiast) <https://github.com/PlainTechEnthusiast>`__
- `Marcus Kempe (@plopp) <https://github.com/plopp>`__
- `Jan Pluskal (@pluskal) <https://github.com/pluskal>`__
- `DK (@poldim) <https://github.com/poldim>`__
- `poloswiss (@poloswiss) <https://github.com/poloswiss>`__
@ -972,7 +977,6 @@ Contributors
- `Quinn Casey (@qcasey) <https://github.com/qcasey>`__
- `Tommy Jonsson (@quazzie) <https://github.com/quazzie>`__
- `Quentin Smith (@quentinmit) <https://github.com/quentinmit>`__
- `Johannes Rebling (@r0oland) <https://github.com/r0oland>`__
- `Richard Kuhnt (@r15ch13) <https://github.com/r15ch13>`__
- `Richard Miles (@r89m) <https://github.com/r89m>`__
- `Aaron Zhang (@rabbit-aaron) <https://github.com/rabbit-aaron>`__
@ -988,7 +992,6 @@ Contributors
- `reddn (@reddn) <https://github.com/reddn>`__
- `redlukas (@redlukas) <https://github.com/redlukas>`__
- `Alex (@redwngsrul) <https://github.com/redwngsrul>`__
- `Refferic (@Refferic) <https://github.com/Refferic>`__
- `Regev Brody (@regevbr) <https://github.com/regevbr>`__
- `Rei Vilo (@rei-vilo) <https://github.com/rei-vilo>`__
- `Alex Reid (@reidprojects) <https://github.com/reidprojects>`__
@ -1117,6 +1120,7 @@ Contributors
- `testbughub (@testbughub) <https://github.com/testbughub>`__
- `Greg Lincoln (@tetious) <https://github.com/tetious>`__
- `Terry Hardie (@thardie) <https://github.com/thardie>`__
- `Michael Jahn (@thatSecOpsGuy) <https://github.com/thatSecOpsGuy>`__
- `thatslolo (@thatslolo) <https://github.com/thatslolo>`__
- `The-Paran0id-Andr0id (@The-Paran0id-Andr0id) <https://github.com/The-Paran0id-Andr0id>`__
- `Thomas Eckerstorfer (@TheEggi) <https://github.com/TheEggi>`__
@ -1128,6 +1132,7 @@ Contributors
- `Bart (@TheNameIsBart) <https://github.com/TheNameIsBart>`__
- `Zixuan Wang (@TheNetAdmin) <https://github.com/TheNetAdmin>`__
- `Dominik Bruhn (@theomega) <https://github.com/theomega>`__
- `Alan Lord (@theopensourcerer) <https://github.com/theopensourcerer>`__
- `Brian Levinsen (@therealeldaria) <https://github.com/therealeldaria>`__
- `Steve Scott (@thewishy) <https://github.com/thewishy>`__
- `Florian Gareis (@TheZoker) <https://github.com/TheZoker>`__
@ -1205,6 +1210,7 @@ Contributors
- `Wauter (@Wauter) <https://github.com/Wauter>`__
- `WeekendWarrior1 (@WeekendWarrior1) <https://github.com/WeekendWarrior1>`__
- `Ian Wells (@wellsi) <https://github.com/wellsi>`__
- `Andrew Garrett (@werdnum) <https://github.com/werdnum>`__
- `whimsee (@whimsee) <https://github.com/whimsee>`__
- `wifwucite (@wifwucite) <https://github.com/wifwucite>`__
- `wilberforce (@wilberforce) <https://github.com/wilberforce>`__
@ -1218,10 +1224,10 @@ Contributors
- `workingmanrob (@workingmanrob) <https://github.com/workingmanrob>`__
- `Sven Serlier (@wrt54g) <https://github.com/wrt54g>`__
- `Wolfgang Tremmel (@wtremmel) <https://github.com/wtremmel>`__
- `Wvirgil123 (@Wvirgil123) <https://github.com/Wvirgil123>`__
- `wysiwyng (@wysiwyng) <https://github.com/wysiwyng>`__
- `Jakob (@XDjackieXD) <https://github.com/XDjackieXD>`__
- `Mike Brown (@xenoxaos) <https://github.com/xenoxaos>`__
- `Péter Sárközi (@Xmister) <https://github.com/Xmister>`__
- `Xose Pérez (@xoseperez) <https://github.com/xoseperez>`__
- `WitchKing (@xvil) <https://github.com/xvil>`__
- `Andrew Kroll (@xxxajk) <https://github.com/xxxajk>`__
@ -1240,4 +1246,4 @@ Contributors
- `Zsolt Zsiros (@ZsZs73) <https://github.com/ZsZs73>`__
- `Christian Zufferey (@zuzu59) <https://github.com/zuzu59>`__
*This page was last updated September 6, 2023.*
*This page was last updated September 27, 2023.*

BIN
images/apa102.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.7 KiB

14
images/bk72xx.svg Normal file
View File

@ -0,0 +1,14 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg width="404.53" height="94.488" version="1.1" viewBox="0 0 107.03 25" xmlns="http://www.w3.org/2000/svg">
<g>
<path d="m5.0006-2.5483e-5h97.032c2.7704 0 5.0006 2.2303 5.0006 5.0006v14.999c0 2.7704-2.2303 5.0006-5.0006 5.0006h-97.032c-2.7704 0-5.0006-2.2303-5.0006-5.0006v-14.999c0-2.7704 2.2303-5.0006 5.0006-5.0006z" stroke-width="2.1757"/>
<g fill="#fffffc" stroke-width=".26458" aria-label="BK72xx">
<path d="m5.8934 20.666v-15.805h8.4441q3.2738 0 4.8317 1.1741 1.5579 1.1515 1.5579 2.9577 0 1.1966-0.67734 2.1449-0.65476 0.92569-1.9191 1.4676-1.2644 0.54187-3.1158 0.54187l0.45156-1.2192q1.8514 0 3.1835 0.51929 1.3547 0.51929 2.0772 1.5127 0.74507 0.97085 0.74507 2.3481 0 2.0546-1.7159 3.2061-1.6933 1.1515-4.9671 1.1515zm5.2381-3.7254h3.2061q0.88054 0 1.3095-0.31609 0.45156-0.31609 0.45156-0.92569t-0.45156-0.92569q-0.42898-0.31609-1.3095-0.31609h-3.5673v-3.5222h2.8448q0.90312 0 1.3095-0.29351 0.42898-0.31609 0.42898-0.88054 0-0.58703-0.42898-0.88054-0.4064-0.29351-1.3095-0.29351h-2.4836z"/>
<path d="m29.231 17.279-0.29351-5.8477 5.9606-6.5702h5.8025l-6.6831 7.3604-2.9577 3.0254zm-4.7639 3.3867v-15.805h5.2381v15.805zm10.386 0-4.651-6.1412 3.4544-3.6576 7.3604 9.7988z"/>
<path d="m44.49 20.666 5.9606-13.908 1.4224 2.2352h-7.4959l2.0772-2.4158v4.7188h-4.4027v-6.4347h13.524v3.2738l-5.2607 12.531z"/>
<path d="m57.873 20.666v-3.2738l5.7122-5.2832q0.54187-0.51929 0.79023-0.90312 0.27094-0.38382 0.36125-0.67734 0.09031-0.31609 0.09031-0.58703 0-0.58703-0.38382-0.90312-0.38382-0.33867-1.1515-0.33867-0.69992 0-1.3321 0.38382-0.63218 0.36125-0.99343 1.0837l-4.0189-2.0094q0.85796-1.6256 2.5739-2.6416 1.7159-1.016 4.2672-1.016 1.874 0 3.319 0.6096 1.445 0.6096 2.2578 1.7159 0.8128 1.1063 0.8128 2.619 0 0.76765-0.2032 1.5353-0.18062 0.76765-0.76765 1.6256-0.58702 0.83538-1.7385 1.874l-4.2898 3.906-0.83538-1.8514h8.1958v4.1318z"/>
<path d="m71.863 20.666 5.8251-7.6313-0.13547 2.9351-5.5542-7.6539h5.7574l2.7319 4.0866-2.1223 0.15804 3.0029-4.2446h5.351l-5.5767 7.4056v-2.8222l5.6896 7.7668h-5.8477l-2.8222-4.3575 2.1449 0.29351-2.9125 4.064z"/>
<path d="m87.527 20.666 5.8251-7.6313-0.13547 2.9351-5.5542-7.6539h5.7574l2.7319 4.0866-2.1223 0.15804 3.0029-4.2446h5.351l-5.5767 7.4056v-2.8222l5.6896 7.7668h-5.8477l-2.8222-4.3575 2.1449 0.29351-2.9125 4.064z"/>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 2.3 KiB

BIN
images/bmi160.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

17
images/libretiny.svg Normal file
View File

@ -0,0 +1,17 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg width="493.56" height="116.85" version="1.1" viewBox="0 0 130.59 30.916" xmlns="http://www.w3.org/2000/svg">
<g>
<path d="m5.0006-2.5483e-5h120.59c2.7704 0 5.0006 2.2303 5.0006 5.0006v20.914c0 2.7704-2.2303 5.0006-5.0006 5.0006h-120.59c-2.7704 0-5.0006-2.2303-5.0006-5.0006v-20.914c0-2.7704 2.2303-5.0006 5.0006-5.0006z" stroke-width="2.6724"/>
<g fill="#fffffc" stroke-width=".26458" aria-label="LibreTiny">
<path d="m5.8934 23.398v-15.805h5.3284v11.673h7.1346v4.1318z"/>
<path d="m20.781 23.398v-12.35h5.1026v12.35zm2.5513-13.344q-1.3998 0-2.2352-0.74507-0.83538-0.74507-0.83538-1.8514t0.83538-1.8514q0.83538-0.74507 2.2352-0.74507t2.2352 0.69991 0.83538 1.8062q0 1.1741-0.83538 1.9417-0.83538 0.74507-2.2352 0.74507z"/>
<path d="m37.498 23.623q-1.6933 0-2.7319-0.67734-1.0386-0.67734-1.5127-2.0997-0.45156-1.4224-0.45156-3.635 0-2.1901 0.49671-3.5899 0.49671-1.4224 1.5353-2.0997 1.0612-0.69992 2.6642-0.69992 1.6256 0 2.9803 0.76765 1.3547 0.76765 2.1675 2.2126 0.8128 1.4224 0.8128 3.4093 0 1.9869-0.8128 3.4318-0.8128 1.4224-2.1675 2.2126-1.3547 0.76765-2.9803 0.76765zm-8.2409-0.22578v-16.753h5.1026v6.0509l-0.22578 4.5156-0.02258 4.5156v1.6708zm7.0217-3.7479q0.56445 0 1.016-0.27094t0.72249-0.8128q0.27094-0.56445 0.27094-1.3547 0-0.8128-0.27094-1.3321-0.27094-0.54187-0.72249-0.8128t-1.016-0.27094q-0.56445 0-1.016 0.27094t-0.72249 0.8128q-0.27093 0.51929-0.27093 1.3321 0 0.79023 0.27093 1.3547 0.27094 0.54187 0.72249 0.8128t1.016 0.27094z"/>
<path d="m46.155 23.398v-12.35h4.8542v3.7254l-0.79023-1.0612q0.56445-1.445 1.8062-2.1675 1.2418-0.72249 2.9803-0.72249v4.5156q-0.33867-0.04516-0.6096-0.06773-0.24836-0.02258-0.51929-0.02258-1.1515 0-1.8965 0.6096-0.72249 0.58702-0.72249 2.0546v5.4864z"/>
<path d="m64.227 23.623q-2.2578 0-3.9511-0.83538-1.6708-0.83538-2.5965-2.2804-0.92569-1.4676-0.92569-3.2964 0-1.874 0.90312-3.319 0.92569-1.445 2.5061-2.2578 1.603-0.8128 3.5899-0.8128 1.8288 0 3.3641 0.72249 1.5579 0.72249 2.4836 2.1449 0.94827 1.4224 0.94827 3.5222 0 0.27093-0.02258 0.6096-0.02258 0.31609-0.04516 0.58702h-9.5053v-2.461h6.7959l-1.9191 0.65476q0-0.72249-0.27094-1.2192-0.24836-0.51929-0.69991-0.79023-0.45156-0.29351-1.0837-0.29351-0.63218 0-1.1063 0.29351-0.45156 0.27094-0.69992 0.79023-0.24836 0.49671-0.24836 1.2192v0.76765q0 0.79023 0.31609 1.3547 0.31609 0.56445 0.90312 0.85796 0.58702 0.27094 1.4224 0.27094 0.85796 0 1.3998-0.22578 0.56445-0.22578 1.174-0.67734l2.6642 2.6868q-0.90312 0.97085-2.2352 1.4901-1.3095 0.49671-3.1609 0.49671z"/>
<path d="m74.81 23.398v-11.673h-4.6285v-4.1318h14.585v4.1318h-4.6285v11.673z"/>
<path d="m87.104 23.398v-12.35h5.1026v12.35zm2.5513-13.344q-1.3998 0-2.2352-0.74507-0.83538-0.74507-0.83538-1.8514t0.83538-1.8514q0.83538-0.74507 2.2352-0.74507 1.3998 0 2.2352 0.69991 0.83538 0.69991 0.83538 1.8062 0 1.1741-0.83538 1.9417-0.83538 0.74507-2.2352 0.74507z"/>
<path d="m104.16 10.822q1.4224 0 2.5739 0.58702 1.1515 0.56445 1.8062 1.7837 0.67733 1.2192 0.67733 3.1609v7.0443h-5.1026v-6.1638q0-1.1515-0.4064-1.6256-0.40641-0.49671-1.1063-0.49671-0.51929 0-0.97085 0.24836-0.42898 0.22578-0.69992 0.76765-0.24835 0.54187-0.24835 1.4676v5.8025h-5.1026v-12.35h4.8542v3.6125l-0.97085-1.0386q0.72249-1.3998 1.9417-2.0997 1.2418-0.69992 2.7545-0.69992z"/>
<path d="m115.01 28.004q-1.016 0-2.0772-0.31609-1.0386-0.29351-1.6708-0.79023l1.6933-3.4996q0.38382 0.29351 0.85796 0.47414 0.49671 0.18062 0.94827 0.18062 0.67734 0 1.0386-0.29351 0.36125-0.27094 0.58703-0.83538l0.51929-1.3095 0.36125-0.49671 3.9511-10.07h4.8317l-5.08 12.598q-0.67733 1.6933-1.5804 2.6416-0.88054 0.94827-1.9868 1.3321-1.0837 0.38382-2.3933 0.38382zm1.1966-4.0414-5.3735-12.915h5.2381l3.7028 9.6182z"/>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 3.6 KiB

BIN
images/pmwcs3.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

1
images/psram.svg Normal file
View File

@ -0,0 +1 @@
<svg viewBox="0 0 106 25" id="svg5" xmlns="http://www.w3.org/2000/svg" xmlns:svg="http://www.w3.org/2000/svg"><defs id="defs9"/><path d="M5 0h96a5 5 0 015 5v15a5 5 0 01-5 5H5a5 5 0 01-5-5V5a5 5 0 015-5z" style="fill:#000" id="path2"/><g aria-label="PSRAM" id="component-text" style="font-weight:700;font-size:25px;font-family:Montserrat;letter-spacing:1.1px;fill:#fffffc"><path d="M7.075 21V3.5h7.575q2.35.0 4.05.775 1.7.75 2.625 2.175t.925 3.4q0 1.95-.925 3.375t-2.625 2.2q-1.7.75-4.05.75H9.325l1.8-1.825V21zm4.05-6.2-1.8-1.925h5.1q1.875.0 2.8-.8t.925-2.225q0-1.45-.925-2.25-.925-.8-2.8-.8h-5.1l1.8-1.925z" id="path11"/><path d="m32.225009 21.3q-2.1.0-4.025-.55-1.925-.575-3.1-1.475l1.375-3.05q1.125.8 2.65 1.325 1.55.5 3.125.5 1.2.0 1.925-.225.75-.25 1.1-.675t.35-.975q0-.7-.55-1.1-.55-.425-1.45-.675-.9-.275-2-.5-1.075-.25-2.175-.6-1.075-.35-1.975-.9-.9-.55-1.475-1.45-.55-.9-.55-2.3.0-1.5.8-2.725.825-1.25 2.45-1.975 1.65-.75 4.125-.75 1.65.0 3.25.4 1.6.375 2.825 1.15l-1.25 3.075q-1.225-.7-2.45-1.025-1.225-.35-2.4-.35-1.175.0-1.925.275t-1.075.725q-.325.425-.325 1 0 .675.55 1.1.55.4 1.45.65.9.25 1.975.5 1.1.25 2.175.575 1.1.325 2 .875t1.45 1.45q.575.9.575 2.275.0 1.475-.825 2.7t-2.475 1.975q-1.625.75-4.125.75z" id="path13"/><path d="M43.52502 21V3.5h7.575q2.35.0 4.05.775 1.7.75 2.625 2.175t.925 3.4q0 1.95-.925 3.375-.925 1.4-2.625 2.15t-4.05.75h-5.325l1.8-1.775V21zm11.125.0-4.375-6.35h4.325l4.425 6.35zm-7.075-6.2-1.8-1.9h5.1q1.875.0 2.8-.8.925-.825.925-2.25.0-1.45-.925-2.25-.925-.8-2.8-.8h-5.1l1.8-1.925z" id="path15"/><path d="m60.700037 21 7.8-17.5h4l7.825 17.5h-4.25l-6.4-15.45h1.6l-6.425 15.45zm3.9-3.75 1.075-3.075h9l1.1 3.075z" id="path17"/><path d="M83.250056 21V3.5h3.35l7.45 12.35h-1.775l7.325-12.35h3.325004l.05 17.5h-3.800004l-.025-11.675h.7l-5.85 9.825h-1.825l-5.975-9.825h.85V21z" id="path19"/></g></svg>

After

Width:  |  Height:  |  Size: 1.8 KiB

15
images/rtl87xx.svg Normal file
View File

@ -0,0 +1,15 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg width="454.57" height="94.488" version="1.1" viewBox="0 0 120.27 25" xmlns="http://www.w3.org/2000/svg">
<g>
<path d="m5.0006-2.5483e-5h110.27c2.7704 0 5.0006 2.2303 5.0006 5.0006v14.999c0 2.7704-2.2303 5.0006-5.0006 5.0006h-110.27c-2.7704 0-5.0006-2.2303-5.0006-5.0006v-14.999c0-2.7704 2.2303-5.0006 5.0006-5.0006z" stroke-width="2.3063"/>
<g fill="#fffffc" stroke-width=".26458" aria-label="RTL87xx">
<path d="m5.8934 20.666v-15.805h7.6088q2.2126 0 3.8157 0.72249 1.6256 0.72249 2.5061 2.0772 0.88054 1.3321 0.88054 3.1609 0 1.8288-0.88054 3.1609-0.88054 1.3095-2.5061 2.0094-1.603 0.69992-3.8157 0.69992h-4.651l2.3707-2.1901v6.1638zm9.4601 0-3.8834-5.7574h5.6445l3.9286 5.7574zm-4.1318-5.5767-2.3707-2.4158h4.3124q1.1063 0 1.6256-0.49671 0.54187-0.49671 0.54187-1.3547 0-0.85796-0.54187-1.3547-0.51929-0.49671-1.6256-0.49671h-4.3124l2.3707-2.4158z"/>
<path d="m27.017 20.666v-11.673h-4.6285v-4.1318h14.585v4.1318h-4.6285v11.673z"/>
<path d="m39.469 20.666v-15.805h5.3284v11.673h7.1346v4.1318z"/>
<path d="m60.882 21.027q-2.0997 0-3.7028-0.6096-1.5805-0.63218-2.4836-1.7611-0.90312-1.1515-0.90312-2.6868t0.92569-2.619q0.92569-1.0837 2.5287-1.6482 1.603-0.56445 3.635-0.56445t3.635 0.56445q1.603 0.56445 2.5287 1.6482 0.92569 1.0837 0.92569 2.619t-0.90312 2.6868q-0.90312 1.1289-2.5061 1.7611-1.5805 0.6096-3.6802 0.6096zm0-3.5899q0.76765 0 1.2418-0.42898 0.49671-0.45156 0.49671-1.2192 0-0.76765-0.49671-1.1966-0.47414-0.45156-1.2418-0.45156-0.76765 0-1.2644 0.45156-0.47414 0.42898-0.47414 1.1966 0 0.76765 0.47414 1.2192 0.49671 0.42898 1.2644 0.42898zm0-3.7254q-1.8514 0-3.3415-0.51929-1.4676-0.54187-2.3255-1.5353-0.85796-1.016-0.85796-2.4384 0-1.445 0.83538-2.4836 0.83538-1.0612 2.3029-1.6482 1.4676-0.58703 3.3867-0.58703 1.9191 0 3.3867 0.58703 1.4676 0.58703 2.3029 1.6482 0.83538 1.0386 0.83538 2.4836 0 1.4224-0.85796 2.4384-0.85796 0.99343-2.3255 1.5353-1.4676 0.51929-3.3415 0.51929zm0-2.9125q0.54187 0 0.90312-0.36125 0.36125-0.36125 0.36125-0.99343 0-0.65476-0.36125-0.99343-0.36125-0.36125-0.90312-0.36125-0.54187 0-0.90312 0.36125-0.36125 0.33867-0.36125 0.99343 0 0.63218 0.36125 0.99343 0.36125 0.36125 0.90312 0.36125z"/>
<path d="m72.554 20.666 5.9606-13.908 1.4224 2.2352h-7.4959l2.0772-2.4158v4.7188h-4.4027v-6.4347h13.524v3.2738l-5.2607 12.531z"/>
<path d="m85.102 20.666 5.8251-7.6313-0.13547 2.9351-5.5542-7.6539h5.7574l2.7319 4.0866-2.1223 0.15804 3.0029-4.2446h5.351l-5.5767 7.4056v-2.8222l5.6896 7.7668h-5.8477l-2.8222-4.3575 2.1449 0.29351-2.9125 4.064z"/>
<path d="m100.76 20.666 5.8251-7.6313-0.13546 2.9351-5.5542-7.6539h5.7574l2.7319 4.0866-2.1223 0.15804 3.0029-4.2446h5.351l-5.5767 7.4056v-2.8222l5.6896 7.7668h-5.8477l-2.8222-4.3575 2.1449 0.29351-2.9126 4.064z"/>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 2.7 KiB

BIN
images/sen0321.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.6 KiB

View File

@ -0,0 +1,87 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
width="282"
height="188"
version="1.1"
id="svg8">
<metadata
id="metadata14">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<defs
id="defs12" />
<path
d="m 21.2435,127.36317 h 239.512 c 10.31,0 18.667,8.358 18.667,18.667 v 20.667 c 0,10.309 -8.358,18.666 -18.667,18.666 H 21.2435 c -10.31,0 -18.666,-8.357 -18.666,-18.666 v -20.667 c 0,-10.31 8.357,-18.667 18.666,-18.667 z"
id="path2" />
<path
d="m 21.2435,127.36317 h 239.512 c 10.31,0 18.667,8.358 18.667,18.667 v 20.667 c 0,10.309 -8.358,18.666 -18.667,18.666 H 21.2435 c -10.309,0 -18.666,-8.357 -18.666,-18.666 v -20.667 c 0,-10.31 8.357,-18.667 18.666,-18.667 z"
fill="none"
stroke="#000000"
stroke-width="1.333"
stroke-linecap="round"
stroke-linejoin="round"
stroke-miterlimit="10"
id="path4" />
<g
aria-label="WIREGUARD®"
id="text18"
style="font-size:42.6667px;line-height:125%;font-family:'Neuropol Nova';-inkscape-font-specification:'Neuropol Nova';text-align:center;letter-spacing:2px;word-spacing:0px;text-anchor:middle;fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1">
<path
d="m 20.982449,141.10321 h 4.250003 l 6.541672,26.29168 6.520838,-26.29168 h 4.72917 l 6.541671,26.29168 6.520839,-26.29168 h 4.270836 l -7.812506,31.10419 h -5.29167 l -6.562505,-27.00002 -6.625005,27.00002 h -5.291671 z"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:42.6667px;font-family:sans-serif;-inkscape-font-specification:sans-serif;fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-opacity:1"
id="path851" />
<path
d="m 66.611383,150.82331 h 2.893225 v 21.38409 h -2.893225 z"
style="font-size:29.3333px"
id="path853" />
<path
d="m 87.403027,162.18137 q 0.930989,0.3151 1.804686,1.34635 0.88802,1.03125 1.776039,2.83593 l 2.936195,5.84375 h -3.108069 l -2.735674,-5.48567 q -1.059895,-2.14844 -2.062498,-2.85026 -0.98828,-0.70182 -2.707028,-0.70182 H 80.15564 v 9.03775 h -2.893226 v -21.38409 h 6.531243 q 3.666662,0 5.471347,1.53255 1.804686,1.53255 1.804686,4.62629 0,2.01953 -0.945312,3.35156 -0.930988,1.33203 -2.721351,1.84766 z m -7.247387,-8.98046 v 7.59114 h 3.638017 q 2.091143,0 3.151038,-0.95964 1.074217,-0.97396 1.074217,-2.85026 0,-1.8763 -1.074217,-2.82161 -1.059895,-0.95963 -3.151038,-0.95963 z"
style="font-size:29.3333px"
id="path855" />
<path
d="m 99.658223,150.82331 h 13.520817 v 2.43489 h -10.62759 v 6.33072 h 10.18358 v 2.4349 h -10.18358 v 7.74868 h 10.8854 v 2.4349 H 99.658223 Z"
style="font-size:29.3333px"
id="path857" />
<path
d="m 142.73765,167.76989 v -8.35417 h -6.87501 v -3.45833 h 11.04168 v 13.35417 q -2.4375,1.72917 -5.375,2.625 -2.93751,0.875 -6.27084,0.875 -7.29167,0 -11.41668,-4.25 -4.10417,-4.27084 -4.10417,-11.87501 0,-7.625 4.10417,-11.87501 4.12501,-4.27083 11.41668,-4.27083 3.04167,0 5.77084,0.75 2.75,0.75 5.0625,2.20833 v 4.47917 q -2.33334,-1.97917 -4.95834,-2.97917 -2.625,-1 -5.52084,-1 -5.70833,0 -8.58334,3.18751 -2.85416,3.1875 -2.85416,9.5 0,6.29167 2.85416,9.47918 2.87501,3.1875 8.58334,3.1875 2.22917,0 3.97917,-0.375 1.75001,-0.39584 3.14584,-1.20834 z"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:42.6667px;font-family:sans-serif;-inkscape-font-specification:sans-serif;fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-opacity:1"
id="path859" />
<path
d="m 154.97463,150.82331 h 2.90755 v 12.99087 q 0,3.43749 1.24609,4.95572 1.2461,1.50391 4.03906,1.50391 2.77864,0 4.02474,-1.50391 1.24609,-1.51823 1.24609,-4.95572 v -12.99087 h 2.90755 v 13.34894 q 0,4.18229 -2.07682,6.3164 -2.0625,2.13411 -6.10156,2.13411 -4.05338,0 -6.1302,-2.13411 -2.0625,-2.13411 -2.0625,-6.3164 z"
style="font-size:29.3333px"
id="path861" />
<path
d="m 185.93553,153.67356 -3.92447,10.64192 h 7.86327 z m -1.63281,-2.85025 h 3.27994 l 8.14973,21.38409 h -3.0078 l -1.94792,-5.48567 h -9.63931 l -1.94792,5.48567 h -3.05077 z"
style="font-size:29.3333px"
id="path864" />
<path
d="m 210.98108,162.18137 q 0.93099,0.3151 1.80469,1.34635 0.88802,1.03125 1.77603,2.83593 l 2.9362,5.84375 h -3.10807 l -2.73567,-5.48567 q -1.0599,-2.14844 -2.0625,-2.85026 -0.98828,-0.70182 -2.70703,-0.70182 h -3.15104 v 9.03775 h -2.89322 v -21.38409 h 6.53124 q 3.66666,0 5.47135,1.53255 1.80468,1.53255 1.80468,4.62629 0,2.01953 -0.94531,3.35156 -0.93099,1.33203 -2.72135,1.84766 z m -7.24739,-8.98046 v 7.59114 h 3.63802 q 2.09114,0 3.15104,-0.95964 1.07421,-0.97396 1.07421,-2.85026 0,-1.8763 -1.07421,-2.82161 -1.0599,-0.95963 -3.15104,-0.95963 z"
style="font-size:29.3333px"
id="path866" />
<path
d="m 226.12951,153.20091 v 16.62889 h 3.49478 q 4.42578,0 6.47395,-2.00521 2.0625,-2.00521 2.0625,-6.33072 0,-4.29687 -2.0625,-6.28776 -2.04817,-2.0052 -6.47395,-2.0052 z m -2.89323,-2.3776 h 5.944 q 6.21614,0 9.12369,2.59244 2.90755,2.57812 2.90755,8.07812 0,5.52864 -2.92187,8.12108 -2.92187,2.59245 -9.10937,2.59245 h -5.944 z"
style="font-size:29.3333px"
id="path868" />
<path
d="m 254.26362,142.54434 q -1.19401,0 -2.22396,0.42839 -1.02995,0.42838 -1.88673,1.28516 -0.85677,0.85677 -1.29427,1.90495 -0.4375,1.03906 -0.4375,2.22396 0,1.17578 0.4375,2.21485 0.4375,1.02995 1.29427,1.88672 0.85678,0.85677 1.88673,1.29427 1.02995,0.42839 2.22396,0.42839 1.20313,0 2.23307,-0.42839 1.03907,-0.4375 1.89584,-1.29427 0.84766,-0.84766 1.26693,-1.87761 0.42839,-1.02995 0.42839,-2.22396 0,-1.21224 -0.42839,-2.24219 -0.42839,-1.03907 -1.26693,-1.88672 -0.85677,-0.85678 -1.89584,-1.28516 -1.02994,-0.42839 -2.23307,-0.42839 z m 0,-0.9388 q 1.38542,0 2.57943,0.5013 1.20313,0.5013 2.19662,1.4948 0.99349,0.99349 1.48568,2.1875 0.49219,1.19401 0.49219,2.59766 0,1.38542 -0.49219,2.57943 -0.49219,1.1849 -1.48568,2.17839 -0.99349,0.99349 -2.19662,1.4948 -1.19401,0.5013 -2.57943,0.5013 -1.38542,0 -2.58855,-0.5013 -1.19401,-0.50131 -2.1875,-1.4948 -0.99349,-0.99349 -1.48568,-2.17839 -0.49219,-1.19401 -0.49219,-2.57943 0,-1.40365 0.49219,-2.59766 0.49219,-1.19401 1.48568,-2.1875 0.99349,-0.9935 2.1875,-1.4948 1.20313,-0.5013 2.58855,-0.5013 z m -0.2461,3.77344 h -1.12109 v 2.51563 h 1.12109 q 1.00261,0 1.39454,-0.28255 0.40104,-0.28255 0.40104,-0.96615 0,-0.69271 -0.40104,-0.97526 -0.40104,-0.29167 -1.39454,-0.29167 z m 0.0638,-0.9388 q 1.60417,0 2.39714,0.54687 0.79297,0.53777 0.79297,1.64063 0,0.78386 -0.48308,1.29428 -0.47396,0.51041 -1.34896,0.66536 0.21875,0.0729 0.51953,0.42839 0.3099,0.34635 0.72917,1.01172 l 1.2487,2.03255 h -1.56771 l -1.17578,-1.90495 q -0.53776,-0.875 -0.875,-1.10286 -0.32813,-0.23698 -0.82032,-0.23698 h -0.60156 v 3.24479 h -1.41276 v -7.6198 z"
style="font-size:18.6667px;baseline-shift:super;stroke:none"
id="path870" />
</g>
<path
d="M 117.67886,1.97033 H 164.3211 L 140.99998,25.29145 117.67886,1.97033 m 11.66056,75.093997 c -2.33211,2.643067 -3.88685,6.529913 -3.88685,10.416768 a 15.547412,15.547412 0 0 0 15.54741,15.547415 15.547412,15.547412 0 0 0 15.54741,-15.547415 c 0,-4.27554 -1.71021,-8.162386 -4.58649,-10.960923 l 11.03867,-11.038667 c 5.59707,5.674809 9.09524,13.448519 9.09524,21.99959 A 31.094826,31.094826 0 0 1 140.99998,118.57592 31.094826,31.094826 0 0 1 109.90515,87.481095 c 0,-8.317865 3.26496,-15.858362 8.55108,-21.377691 l -0.0777,-0.07773 55.03784,-54.960104 v 0 c 5.59707,-5.59708 13.37078,-9.09524 21.99959,-9.09524 a 31.094826,31.094826 0 0 1 31.09483,31.094832 31.094826,31.094826 0 0 1 -31.09483,31.094824 c -8.55107,0 -16.32478,-3.49817 -21.99959,-9.095234 l 11.03867,-11.038667 c 2.79853,2.876271 6.68539,4.586489 10.96092,4.586489 A 15.547412,15.547412 0 0 0 210.96337,33.065162 15.547412,15.547412 0 0 0 195.41596,17.51774 c -4.27553,0 -8.16239,1.71021 -10.96092,4.58648 L 129.33946,77.064332 M 97.54496,22.10422 C 94.74643,19.22795 90.85957,17.51774 86.58403,17.51774 A 15.547412,15.547412 0 0 0 71.03662,33.065157 15.547412,15.547412 0 0 0 86.58403,48.612569 c 4.27554,0 8.1624,-1.710218 10.96093,-4.586489 l 11.03866,11.038658 c -5.67481,5.597073 -13.44851,9.095243 -21.99959,9.095243 A 31.094826,31.094826 0 0 1 55.48921,33.065157 31.094826,31.094826 0 0 1 86.58403,1.97033 c 8.62882,0 16.40252,3.49816 21.99959,9.09524 v 0 l 21.45543,21.455423 -11.03866,11.038667 z"
id="path863"
style="stroke-width:7.77371" />
</svg>

After

Width:  |  Height:  |  Size: 8.8 KiB

View File

@ -5,14 +5,14 @@
.. seo::
:description: ESPHome Homepage - Reimagining DIY Home Automation. ESPHome is a framework that
tries to provide the best possible use experience for using ESP8266, ESP32 and RP2040 microcontrollers
tries to provide the best possible use experience for using IoT microcontrollers
for Home Automation. Just write a simple YAML configuration file and get your own customized firmware.
:image: logo.svg
.. image:: /images/logo-text.svg
:class: dark-invert
ESPHome is a system to control your ESP8266/ESP32 and RP2040 by simple yet powerful configuration files and control them remotely through Home Automation systems.
ESPHome is a system to control your microcontrollers by simple yet powerful configuration files and control them remotely through Home Automation systems.
.. image:: /images/hero.png
@ -124,6 +124,8 @@ Platforms
ESP8266, components/esp8266, esp8266.svg
ESP32, components/esp32, esp32.svg
RP2040, components/rp2040, rp2040.svg
BK72xx, components/libretiny, bk72xx.svg
RTL87xx, components/libretiny, rtl87xx.svg
Core Components
---------------
@ -131,8 +133,8 @@ Core Components
.. imgtable::
Core, components/esphome, cloud-circle.svg, dark-invert
PSRAM, components/psram, psram.svg
WiFi, components/wifi, network-wifi.svg, dark-invert
MQTT, components/mqtt, mqtt.png
Network, components/network, network-wifi.svg, dark-invert
I²C Bus, components/i2c, i2c.svg
@ -140,6 +142,7 @@ Core Components
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
@ -183,6 +186,7 @@ Air Quality
PMSX003, components/sensor/pmsx003, pmsx003.svg, Particulate
RadonEye BLE, components/sensor/radon_eye_ble, radon_eye_logo.png, Radon
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
@ -311,6 +315,7 @@ Environmental
MPL3115A2, components/sensor/mpl3115a2, mpl3115a2.jpg, Temperature & Pressure
MS5611, components/sensor/ms5611, ms5611.jpg, Pressure
NTC Thermistor, components/sensor/ntc, ntc.jpg, Temperature
PMWCS3, components/sensor/pmwcs3, pmwcs3.jpg, Soil moisture & Temperature
QMP6988, components/sensor/qmp6988, qmp6988_env3.png, Temperature & Pressure
RadonEye BLE, components/sensor/radon_eye_ble, radon_eye_logo.png, Radon
RuuviTag, components/sensor/ruuvitag, ruuvitag.jpg, Temperature & Humidity & Accelerometer
@ -380,6 +385,7 @@ Miscellaneous
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
Motion
@ -387,10 +393,11 @@ 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
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
LD2410, components/sensor/ld2410, ld2410.jpg, Motion & Presence
Thermocouple
@ -484,6 +491,7 @@ Miscellaneous
Remote Receiver, components/remote_receiver, remote.svg, dark-invert
Resol VBus, components/vbus, resol_deltasol_bs_plus.jpg
Tuya Binary Sensor, components/binary_sensor/tuya, tuya.png
WireGuard, components/wireguard, wireguard_custom_logo.svg
Output Components
-----------------
@ -496,6 +504,7 @@ Output Components
GPIO Output, components/output/gpio, pin.svg, dark-invert
ESP32 DAC, components/output/esp32_dac, dac.svg
ESP32 LEDC, components/output/ledc, pwm.png
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
@ -541,10 +550,12 @@ Light Components
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/light/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
@ -676,6 +687,7 @@ Text Sensor Components
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
Climate Components
------------------
@ -842,6 +854,7 @@ Miscellaneous Components
SML, components/sml, sml.svg
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