Merge pull request #1794 from esphome/bump-2022.1.0b1

2022.1.0b1
This commit is contained in:
Jesse Hills 2022-01-13 12:13:01 +13:00 committed by GitHub
commit c217098ab9
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
52 changed files with 1594 additions and 229 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 = 2021.12.3
PROJECT_NUMBER = 2022.1.0b1
# Using the PROJECT_BRIEF tag one can provide an optional one line description
# for a project that appears at the top of each page and should give viewer a

View File

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 127 KiB

View File

@ -1 +1 @@
2021.12.3
2022.1.0b1

188
changelog/2022.1.0.rst Normal file
View File

@ -0,0 +1,188 @@
ESPHome 2022.1.0 - 19th January 2022
====================================
.. seo::
:description: Changelog for ESPHome 2022.1.0.
:image: /_static/changelog-2022.1.0.png
:author: ESPHome
:author_twitter: @esphome_
.. imgtable::
:columns: 4
BL0940, components/sensor/bl0940, bl0940.png
BMP388 and BMP390, components/sensor/bmp3xx, bmp388.jpg
CD74HC4067, components/sensor/cd74hc4067, cd74hc4067.jpg
ESP32 Native CAN Bus, components/canbus, canbus.svg
Growatt Solar, components/sensor/growatt_solar, growatt.jpg
INA260, components/sensor/ina260, ina260.jpg
Inkplate 10, components/display/inkplate6, inkplate6.jpg
Kalman Combinator, components/sensor/kalman_combinator, function.svg
MCP3204, components/sensor/mcp3204, mcp3204.jpg
MCP47A1, components/output/mcp47a1, mcp47a1.svg
Midea IR Climate, components/climate/ir_climate, air-conditioner-ir.svg
Safe Mode Button, components/button/safe_mode, restart-alert.svg
Shutdown Button, components/button/shutdown, power_settings.svg
Tuya Number, components/number/tuya, tuya.png
HAPPY NEW YEAR!!
Full list of changes
--------------------
New Features
^^^^^^^^^^^^
- Support different run duration for non-timer wakeup :esphomepr:`2861` by :ghuser:`jhamhader` (new-feature)
- Add light.on_state trigger :esphomepr:`2868` by :ghuser:`tony-fav` (new-feature)
- Support inkplate10 :esphomepr:`2937` by :ghuser:`jesserockz` (new-feature)
New Components
^^^^^^^^^^^^^^
- Add growatt modbus sensor :esphomepr:`2922` by :ghuser:`leeuwte` (new-integration)
- Add Tuya Number support :esphomepr:`2765` by :ghuser:`frankiboy1` (new-integration)
- Add shutdown and safe_mode button :esphomepr:`2918` by :ghuser:`jsuanet` (new-integration)
- INA260 Current and Power Sensor support :esphomepr:`2788` by :ghuser:`MrEditor97` (new-integration)
- Improve PSRAM support :esphomepr:`2884` by :ghuser:`oxan` (new-integration)
- Add bl0940 component used by e.g. tuya devices :esphomepr:`1904` by :ghuser:`tobias-` (new-integration)
- Add support for BMP388 / BMP 390 pressure and temperature sensor :esphomepr:`2716` by :ghuser:`martgras` (new-integration)
- Add MCP47A1 DAC output :esphomepr:`3014` by :ghuser:`jesserockz` (new-integration)
- Create new kalman_combinator component :esphomepr:`2965` by :ghuser:`Cat-Ion` (new-integration)
- New Midea IR component, improvements and fixes :esphomepr:`2847` by :ghuser:`dudanov` (new-integration)
- MCP3204 4-channel 12-bit ADC component :esphomepr:`2895` by :ghuser:`rsumner` (new-integration)
- Add cd74hc4067 multiplexer :esphomepr:`2431` by :ghuser:`asoehlke` (new-integration)
- Native ESP32 CAN support :esphomepr:`1629` by :ghuser:`Sympatron` (new-integration)
Breaking Changes
^^^^^^^^^^^^^^^^
- Modbus: use multiply for publishing number :esphomepr:`2916` by :ghuser:`martgras` (breaking-change)
- Upgrade ArduinoJson to 6.18.5 and migrate code :esphomepr:`2844` by :ghuser:`jesserockz` (breaking-change)
All changes
^^^^^^^^^^^
- Add a simple helper to remap values :esphomepr:`2850` by :ghuser:`jesserockz`
- Bump pylint from 2.12.1 to 2.12.2 :esphomepr:`2858` by :ghuser:`dependabot[bot]`
- Support different run duration for non-timer wakeup :esphomepr:`2861` by :ghuser:`jhamhader` (new-feature)
- Drop len parameter from parse_number() :esphomepr:`2883` by :ghuser:`oxan`
- Drop unused xSemaphoreWait define :esphomepr:`2888` by :ghuser:`oxan`
- Move i2c scan to setup :esphomepr:`2869` by :ghuser:`martgras`
- Introduce hex parsing & formatting helper functions :esphomepr:`2882` by :ghuser:`oxan`
- Add light.on_state trigger :esphomepr:`2868` by :ghuser:`tony-fav` (new-feature)
- Reduce timing noise in duty_cycle :esphomepr:`2881` by :ghuser:`CarlosGS`
- Turn verbose a debug statement in bme280 :esphomepr:`2906` by :ghuser:`CarlosGS`
- Add reset_duration option for waveshare epaper HAT rev 2.1 :esphomepr:`1481` by :ghuser:`owenb321`
- Log the actual value in modbus number :esphomepr:`2901` by :ghuser:`jesserockz`
- Add gpio 12 to strapping pin list :esphomepr:`2902` by :ghuser:`martgras`
- Added access to ble_scan_result_evt_param as get_scan_result :esphomepr:`2854` by :ghuser:`myhomeiot`
- fix multi-line comment warning/error :esphomepr:`2891` by :ghuser:`martgras`
- Bump black from 21.11b1 to 21.12b0 :esphomepr:`2879` by :ghuser:`dependabot[bot]`
- Adding Pascal unit to constants :esphomepr:`2914` by :ghuser:`jddonovan`
- quantile filter support :esphomepr:`2900` by :ghuser:`konikvranik`
- ESP32 CAM add Automatic Exposure Control option :esphomepr:`2892` by :ghuser:`sveip`
- Modbus: use multiply for publishing number :esphomepr:`2916` by :ghuser:`martgras` (breaking-change)
- Add growatt modbus sensor :esphomepr:`2922` by :ghuser:`leeuwte` (new-integration)
- Add Tuya Number support :esphomepr:`2765` by :ghuser:`frankiboy1` (new-integration)
- Support inverted tm1637 display :esphomepr:`2878` by :ghuser:`jlsjonas`
- Fix tm1637 bootloop :esphomepr:`2929` by :ghuser:`jlsjonas`
- Add shutdown and safe_mode button :esphomepr:`2918` by :ghuser:`jsuanet` (new-integration)
- Support inkplate10 :esphomepr:`2937` by :ghuser:`jesserockz` (new-feature)
- bang_bang: respect set cool- and heat-only modes :esphomepr:`2926` by :ghuser:`sairon`
- Update curl package version in docker :esphomepr:`2939` by :ghuser:`jesserockz`
- Change HDC1080 init instruction failure from error to warning :esphomepr:`2927` by :ghuser:`grob6000`
- Add option to load docker image when building :esphomepr:`2938` by :ghuser:`jesserockz`
- Disable nightly dev build :esphomepr:`2943` by :ghuser:`jesserockz`
- Revert "Disable nightly dev build" :esphomepr:`2944` by :ghuser:`jesserockz`
- Remove Content-Length header from camera snapshot response :esphomepr:`2860` by :ghuser:`DotNetDann`
- ST7920 ESP32 fix :esphomepr:`2962` by :ghuser:`marsjan155`
- Fix switch log state if inverted :esphomepr:`2960` by :ghuser:`hobbyquaker`
- Add pin aliases for featheresp32-s2 :esphomepr:`2970` by :ghuser:`arunderwood`
- INA260 Current and Power Sensor support :esphomepr:`2788` by :ghuser:`MrEditor97` (new-integration)
- Upgrade ArduinoJson to 6.18.5 and migrate code :esphomepr:`2844` by :ghuser:`jesserockz` (breaking-change)
- Don't use pyproject.toml for esphome build :esphomepr:`2980` by :ghuser:`agners`
- Explicitly use overloaded begin() for I2C master initialization :esphomepr:`2978` by :ghuser:`agners`
- Use template path :esphomepr:`2961` by :ghuser:`balloob`
- Fix compile error for idf projects with ArduinoJson 6 :esphomepr:`2979` by :ghuser:`martgras`
- Modbus: fix response parsing error for coil write :esphomepr:`2986` by :ghuser:`martgras`
- Change unset ESPHOME_LOG_LEVEL fallback to NONE :esphomepr:`2982` by :ghuser:`dbuezas`
- Add SH1107_128x64 to the ssd1306 component :esphomepr:`2967` by :ghuser:`arunderwood`
- Add logging for some Nextion errors that didn't have any :esphomepr:`2957` by :ghuser:`masto`
- Fix HTTPRequestComponent::get_string return value :esphomepr:`2987` by :ghuser:`martgras`
- Improve PSRAM support :esphomepr:`2884` by :ghuser:`oxan` (new-integration)
- Support ISR based pulse counter on ESP32-C3 :esphomepr:`2983` by :ghuser:`agners`
- Use to_string() from STL when available :esphomepr:`2992` by :ghuser:`oxan`
- Set UTF-8 encoding and version for prometheus /metrics :esphomepr:`2993` by :ghuser:`MyIgel`
- Introduce bit_cast() backport :esphomepr:`2991` by :ghuser:`oxan`
- Apply --no-use-pep517 for docker images :esphomepr:`2985` by :ghuser:`jesserockz`
- Dont validate baud_rate for sim800l platform :esphomepr:`2945` by :ghuser:`jesserockz`
- Modbus: add binary output :esphomepr:`2931` by :ghuser:`martgras`
- Add bl0940 component used by e.g. tuya devices :esphomepr:`1904` by :ghuser:`tobias-` (new-integration)
- Honor user set values for col/row start for INITR_MINI_160X80. :esphomepr:`2976` by :ghuser:`gonzalop`
- Fix clang-tidy with multiple ESP32 toolchains installed :esphomepr:`2998` by :ghuser:`oxan`
- Set correct include_dir in platformio.ini :esphomepr:`2999` by :ghuser:`oxan`
- SGP40 - Reduce delay in measurement :esphomepr:`2996` by :ghuser:`martgras`
- atc mithermometer: Add possibility to report signal strength :esphomepr:`3000` by :ghuser:`mknjc`
- Support clang-tidy for ESP32 variants :esphomepr:`3001` by :ghuser:`oxan`
- Fix SlowPWM output switch at the end of period :esphomepr:`2984` by :ghuser:`Chupaka`
- Add support for BMP388 / BMP 390 pressure and temperature sensor :esphomepr:`2716` by :ghuser:`martgras` (new-integration)
- Clean-up reverse_bits helpers :esphomepr:`3011` by :ghuser:`oxan`
- Convert clamp() helper to backport of std::clamp() :esphomepr:`3010` by :ghuser:`oxan`
- Introduce str_lower_case() and str_upper_case() helpers :esphomepr:`3008` by :ghuser:`oxan`
- Drop uint{32,64}_to_string() helper functions :esphomepr:`3009` by :ghuser:`oxan`
- Bump PlatformIO to 5.2.4 and zeroconf to 0.37.0 :esphomepr:`3007` by :ghuser:`oxan`
- Offset bugfix in Modbus Text Sensor :esphomepr:`3006` by :ghuser:`stegm`
- Add MCP47A1 DAC output :esphomepr:`3014` by :ghuser:`jesserockz` (new-integration)
- Bump docker dependencies :esphomepr:`3019` by :ghuser:`OttoWinter`
- Fix register ranges in modbus controller :esphomepr:`2981` by :ghuser:`stegm`
- Add restore_mode to output switch :esphomepr:`3016` by :ghuser:`joshuaspence`
- Add turn_on/off trigger to slow_pwm :esphomepr:`2921` by :ghuser:`martgras`
- Convert is_callable to a backport of std::is_invocable :esphomepr:`3023` by :ghuser:`oxan`
- Create new kalman_combinator component :esphomepr:`2965` by :ghuser:`Cat-Ion` (new-integration)
- New Midea IR component, improvements and fixes :esphomepr:`2847` by :ghuser:`dudanov` (new-integration)
- Extend esp32_camera with requester to improve performance :esphomepr:`2813` by :ghuser:`ayufan`
- MCP3204 4-channel 12-bit ADC component :esphomepr:`2895` by :ghuser:`rsumner` (new-integration)
- Adding sdm_meter ability to report total power :esphomepr:`2959` by :ghuser:`MiKuBB`
- [Modbus_controller] Fix binary sensor lambda :esphomepr:`3020` by :ghuser:`martgras`
- Clean-up random helper functions :esphomepr:`3022` by :ghuser:`oxan`
- Fix display picture for nextion display :esphomepr:`3018` by :ghuser:`lhoracek`
- Fix heatpumpir codegen min/max temperatures :esphomepr:`3025` by :ghuser:`jeffborg`
- Add an action for pzemac to reset the total energy :esphomepr:`2480` by :ghuser:`nuttytree`
- Nexa 433MHz RF protocol :esphomepr:`2037` by :ghuser:`GruffyPuffy`
- Deprecate virtual methods to set entity properties :esphomepr:`3021` by :ghuser:`oxan`
- Run post scripts for factory binaries for flashing :esphomepr:`3003` by :ghuser:`jesserockz`
- Add cd74hc4067 multiplexer :esphomepr:`2431` by :ghuser:`asoehlke` (new-integration)
- Native ESP32 CAN support :esphomepr:`1629` by :ghuser:`Sympatron` (new-integration)
- [Modbus_controller] Fix duplicate cmd check :esphomepr:`3031` by :ghuser:`martgras`
- Introduce big- and little-endian integer types :esphomepr:`2997` by :ghuser:`oxan`
- Generate basic config for esphome-web devices :esphomepr:`3036` by :ghuser:`jesserockz`
- Bump esphome-dashboard to 20220113.1 :esphomepr:`3038` by :ghuser:`jesserockz`
Past Changelogs
---------------
.. toctree::
:maxdepth: 1
2021.12.0
2021.11.0
2021.10.0
2021.9.0
2021.8.0
v1.20.0
v1.19.0
v1.18.0
v1.17.0
v1.16.0
v1.15.0
v1.14.0
v1.13.0
v1.12.0
v1.11.0
v1.10.0
v1.9.0
v1.8.0
v1.7.0

View File

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.7 KiB

View File

@ -0,0 +1,38 @@
Safe Mode Button
================
.. seo::
:description: Instructions for setting up buttons that can remotely reboot the ESP in ESPHome into safe mode.
:image: restart.svg
The ``safe_mode`` button allows you to remotely reboot your node into :ref:`Safe Mode <config-ota>`. This is useful in certain situations
where a misbehaving component is preventing Over-The-Air updates from completing successfully.
This component requires :ref:`OTA <config-ota>` to be configured.
.. figure:: images/safemode-ui.png
:align: center
:width: 80.0%
.. code-block:: yaml
# Example configuration entry
button:
- platform: safe_mode
name: "Living Room Restart (Safe Mode)"
Configuration variables:
------------------------
- **name** (**Required**, string): The name for the button.
- **id** (*Optional*, :ref:`config-id`): Manually specify the ID used for code generation.
- All other options from :ref:`Button <config-button>`.
See Also
--------
- :doc:`shutdown`
- :doc:`restart`
- :doc:`template`
- :apiref:`safe_mode/safe_mode_button.h`
- :ghedit:`Edit`

View File

@ -0,0 +1,37 @@
Shutdown Button
===============
.. seo::
:description: Instructions for setting up buttons that can remotely shut down the ESP.
:image: power_settings.svg
The ``shutdown`` button platform allows you to shutdown your node remotely
through Home Assistant. It does this by putting the node into deep sleep mode with no
wakeup source selected. After enabling, the only way to startup the ESP again is by
pressing the reset button or restarting the power supply.
.. figure:: images/shutdown-ui.png
:align: center
:width: 80.0%
.. code-block:: yaml
# Example configuration entry
button:
- platform: shutdown
name: "Living Room Shutdown"
Configuration variables:
------------------------
- **name** (**Required**, string): The name for the button.
- **id** (*Optional*, :ref:`config-id`): Manually specify the ID used for code generation.
- All other options from :ref:`Button <config-button>`.
See Also
--------
- :doc:`restart`
- :doc:`template`
- :apiref:`shutdown/shutdown_button.h`
- :ghedit:`Edit`

View File

@ -25,7 +25,7 @@ transmitted data.
The CAN bus itself has only two wires named Can High and Can Low or CanH and CanL. For the ESPHome
CAN bus to work you need to select the device that has the physical CAN bus implemented.
At this moment only the MCP2515 controller is supported. You can configure multiple buses.
You can configure multiple buses.
Any can bus node can transmit data at any time, and any node can send any ``can_id`` value and any
node can receive any can_id too. Is up to you how to organize the can_id values. You can setup a can
@ -59,20 +59,21 @@ Configuration variables:
- **use_extended_id** (*Optional*, boolean): default *false* identifies the type of *can_id*:
*false*: Standard 11 bits IDs, *true*: Extended 29 bits ID
- **bit_rate** (*Optional*, enum): One of the supported bitrates. Defaults to ``125KBPS``.
Bitrates marked with * are not supported by the internal ESP32 CAN controller.
- 5KBPS
- 10KBPS
- 20KBPS
- 31K25BPS
- 33KBPS
- 40KBPS
- 5KBPS *
- 10KBPS *
- 20KBPS *
- 31K25BPS *
- 33KBPS *
- 40KBPS *
- 50KBPS
- 80KBPS
- 83K3BPS
- 95KBPS
- 80KBPS *
- 83K3BPS *
- 95KBPS *
- 100KBPS
- 125KBPS
- 200KBPS
- 200KBPS *
- 250KBPS
- 500KBPS
- 1000KBPS
@ -141,6 +142,18 @@ Configuration variables:
- **use_extended_id** (*Optional*, boolean): default *false* identifies the type of *can_id*:
*false*: Standard 11 Bit IDs, *true*: Extended 29Bit ID
ESP32 CAN Component
-------------------
The ESP32 has an integrated CAN controller and therefore doesn't need an external controller necessarily.
You only need to specify the RX and TX pins.
Configuration variables:
************************
- **rx_pin** (**Required**, :ref:`Pin <config-pin>`): Receive pin.
- **tx_pin** (**Required**, :ref:`Pin <config-pin>`): Transmit pin.
MCP2515 Component
-----------------

View File

@ -34,6 +34,8 @@ submit a feature request (see FAQ).
+---------------------------------------+---------------------+----------------------+
| :ref:`LG<climate_ir_lg>` | ``climate_ir_lg`` | yes |
+---------------------------------------+---------------------+----------------------+
| Midea | ``midea_ir`` | yes |
+---------------------------------------+---------------------+----------------------+
| Mitsubishi | ``mitsubishi`` | |
+---------------------------------------+---------------------+----------------------+
| TCL112, Fuego | ``tcl112`` | yes |
@ -149,6 +151,30 @@ IR receiver.
name: "Living Room AC"
receiver_id: rcvr
.. _midea_ir:
``midea_ir`` Climate
-------------------------
These air conditioners support two protocols: Midea and Coolix. Therefore, when using an IR receiver, it considers both protocols and publishes the received states.
Additional configuration is available for this platform
Configuration variables:
- **use_fahrenheit** (*Optional*, boolean): Allows you to transfer the temperature to the air conditioner in degrees Fahrenheit. The air conditioner display also shows the temperature in Fahrenheit. Defaults to ``false``.
.. code-block:: yaml
# Example configuration entry
climate:
- platform: midea_ir
name: "AC"
sensor: room_temperature
use_fahrenheit: true
.. _climate_ir_lg:
``climate_ir_lg`` Climate
@ -237,6 +263,7 @@ See Also
:apiref:`daikin.h <daikin/daikin.h>`
:apiref:`fujitsu_general.h <fujitsu_general/fujitsu_general.h>`,
:apiref:`hitachi_ac344.h <hitachi_ac344/hitachi_ac344.h>`,
:apiref:`midea_ir.h <midea_ir/midea_ir.h>`,
:apiref:`mitsubishi.h <mitsubishi/mitsubishi.h>`,
:apiref:`tcl112.h <tcl112/tcl112.h>`,
:apiref:`yashima.h <yashima/yashima.h>`

View File

@ -34,6 +34,13 @@ Configuration variables:
------------------------
- **run_duration** (*Optional*, :ref:`config-time`): The time duration the node should be active, i.e. run code.
Only on ESP32, instead of time, it is possible to specify run duration according to the wakeup reason from deep-sleep:
- **default** (**Required**, :ref:`config-time`): default run duration for timer wakeup and any unspecified wakeup reason.
- **gpio_wakeup_reason** (*Optional*, :ref:`config-time`): run duration if woken up by GPIO.
- **touch_wakeup_reason** (*Optional*, :ref:`config-time`): run duration if woken up by touch.
- **sleep_duration** (*Optional*, :ref:`config-time`): The time duration to stay in deep sleep mode.
- **touch_wakeup** (*Optional*, boolean): Only on ESP32. Use a touch event to wakeup from deep sleep. To be able
to wakeup from a touch event, :ref:`esp32-touch-binary-sensor` must be configured properly.

View File

@ -1,12 +1,14 @@
Inkplate 6
==========
Inkplate 6 and Inkplate 10
==========================
.. seo::
:description: Instructions for setting up Inkplate E-Paper displays in ESPHome.
:image: inkplate6.jpg
All-in-one e-paper display ``Inkplate 6``
Inkplate 6 is a powerful, Wi-Fi enabled ESP32 based six-inch e-paper display recycled from a Kindle e-reader. Its main feature is simplicity.
All-in-one e-paper display ``Inkplate 6`` and ``Inkplate 10``.
The Inkplate 6 and Inkplate 10 are powerful, Wi-Fi enabled ESP32 based six-inch e-paper displays recycled from a Kindle e-reader. Its main feature is simplicity.
Learn more at `Inkplate's website <https://inkplate.io/>`__
.. figure:: images/inkplate6.jpg
@ -30,6 +32,7 @@ Learn more at `Inkplate's website <https://inkplate.io/>`__
greyscale: false
partial_updating: false
update_interval: 60s
model: inkplate_6
ckv_pin: 32
sph_pin: 33
@ -70,6 +73,7 @@ Configuration variables:
************************
- **id** (*Optional*, :ref:`config-id`): Manually specify the ID used for code generation.
- **model** (*Optional*, enum): Specify the model ``inkplate_6`` or ``inkplate_10``. Defaults to ``inkplate_6``.
- **greyscale** (*Optional*, boolean): Makes the screen display 3 bit colors. Defaults to ``false``
- **partial_updating** (*Optional*, boolean): Makes the screen update partially, which is faster, but leaves burnin. Defaults to ``false``
- **full_update_every** (*Optional*, int): When partial updating is enabled, forces a full screen update after chosen number of updates. Defaults to ``10``

View File

@ -56,6 +56,7 @@ Configuration variables:
- ``SH1106 128x64``
- ``SH1106 96x16``
- ``SH1106 64x48``
- ``SH1107 128x64``
- ``SSD1305 128x32``
- ``SSD1305 128x64``
@ -69,12 +70,12 @@ Configuration variables:
Defaults to ``false``.
- **flip_x** (*Optional*, boolean): Flip the horizontal axis on the screen. Defaults to ``true``.
- **flip_y** (*Optional*, boolean): Flip the vertical axis on the screen. Defaults to ``true``.
- **offset_x** (*Optional*, int): Set this option if some horizontal pixel is missing. Numbers are only allowed between ``0~15``. Defaults to ``0``.
- **offset_y** (*Optional*, int): Set this option if some vertical pixel is missing. Numbers are only allowed between ``0~15``. Defaults to ``0``.
- **offset_x** (*Optional*, int): Set this option if some horizontal pixel is missing. Numbers are only allowed between ``-32~32``. Defaults to ``0``.
- **offset_y** (*Optional*, int): Set this option if some vertical pixel is missing. Numbers are only allowed between ``-32~32``. Defaults to ``0``.
- **invert** (*Optional*, boolean): Invert all pixel state on the display. Defaults to ``false``.
- **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``.
- **update_interval** (*Optional*, :ref:`config-time`): The interval to re-draw the screen. Defaults to ``1s``.
- **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.
@ -134,6 +135,7 @@ Configuration variables:
- ``SH1106 128x64``
- ``SH1106 96x16``
- ``SH1106 64x48``
- ``SH1107 128x64``
- ``SSD1305 128x32``
- ``SSD1305 128x64``
@ -148,12 +150,12 @@ Configuration variables:
Defaults to ``false``.
- **flip_x** (*Optional*, boolean): Flip the horizontal axis on the screen. Defaults to ``true``.
- **flip_y** (*Optional*, boolean): Flip the vertical axis on the screen. Defaults to ``true``.
- **offset_x** (*Optional*, int): Set this option if some horizontal pixel is missing. Numbers are only allowed between ``0~15``. Defaults to ``0``.
- **offset_y** (*Optional*, int): Set this option if some vertical pixel is missing. Numbers are only allowed between ``0~15``. Defaults to ``0``.
- **offset_x** (*Optional*, int): Set this option if some horizontal pixel is missing. Numbers are only allowed between ``-32~32``. Defaults to ``0``.
- **offset_y** (*Optional*, int): Set this option if some vertical pixel is missing. Numbers are only allowed between ``-32~32``. Defaults to ``0``.
- **invert** (*Optional*, boolean): Invert all pixel state on the display. Defaults to ``false``.
- **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``.
- **update_interval** (*Optional*, :ref:`config-time`): The interval to re-draw the screen. Defaults to ``1s``.
- **pages** (*Optional*, list): Show pages instead of a single lambda. See :ref:`display-pages`.
- **spi_id** (*Optional*, :ref:`config-id`): Manually specify the ID of the :ref:`SPI Component <spi>` if you want
to use multiple SPI buses.

View File

@ -25,6 +25,8 @@ The module can be powered with 5v or with 3.3v too. To display the colon punctua
id: tm1637_display
clk_pin: D6
dio_pin: D5
inverted: true
length: 4
lambda: |-
it.print("0123");
@ -36,6 +38,9 @@ Configuration variables:
- **dio_pin** (**Required**, :ref:`Pin Schema <config-pin_schema>`): The pin you have the DIO line hooked up to.
- **intensity** (*Optional*, int): The intensity with which the TM1637 should drive the outputs. Range is from
0 (least intense) to 7 (the default).
- **inverted** (*Optional*, bool): Invert character rendering to the TM1637 so you can physically flip the display around.
- **length** (*Optional*, int): The amount of digits your TM1637 is driving. Only required when `inverted: true`
Range is from 1 to 6 (the default).
- **lambda** (*Optional*, :ref:`lambda <config-lambda>`): The lambda to use for rendering the content on the TM1637.
See :ref:`display-tm1637_lambda` for more information.
- **update_interval** (*Optional*, :ref:`config-time`): The interval to re-draw the screen. Defaults to ``1s``.

View File

@ -107,6 +107,8 @@ Configuration variables:
because artifacts accumulate. On the ``1.54in``, ``1.54inv2``, ``2.13in``, ``2.90in`` and ``2.90inv2`` models you have the option to switch only
do a full-redraw every x-th time using this option. Defaults to ``30`` on the described models and a full update for
all other models.
- **reset_duration** (*Optional*, :ref:`config-time`): Duration for the display reset operation. Defaults to ``200ms``.
Setting this value to ``2ms`` may resolve issues with newer e-Paper Driver modules (e.g. Rev 2.1).
- **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 ``1s``, use ``never`` to only manually update the screen via ``component.update``.

View File

@ -96,6 +96,9 @@ Frame Settings:
- **saturation** (*Optional*, int): The saturation to apply to the picture, from -2 to 2. Defaults to ``0``.
- **vertical_flip** (*Optional*, boolean): Whether to flip the image vertically. Defaults to ``true``.
- **horizontal_mirror** (*Optional*, boolean): Whether to mirror the image horizontally. Defaults to ``true``.
- **aec2** (*Optional*, boolean): Whether to enable Auto Exposure Control 2. Defaults to ``false``.
- **ae_level** (*Optional*, int): The auto exposure level to apply to the picture, from -2 to 2. Defaults to ``0``.
- **aec_value** (*Optional*, int): The Auto Exposure Control 2 value to apply to the picture, from 0 to 1200. Defaults to ``300``.
.. note::

View File

@ -50,6 +50,8 @@ Configuration variables:
when the light is turned on. See :ref:`light-on_turn_on_off_trigger`.
- **on_turn_off** (*Optional*, :ref:`Action <config-action>`): An automation to perform
when the light is turned off. See :ref:`light-on_turn_on_off_trigger`.
- **on_state** (*Optional*, :ref:`Action <config-action>`): An automation to perform
when the light's set state is changed. See :ref:`light-on_state_trigger`.
Additional configuration variables for addressable lights:
@ -398,6 +400,25 @@ with the behavior of the ``light.is_on`` and ``light.is_off`` condition above.
on_turn_off:
- logger.log: "Light Turned Off!"
.. _light-on_state_trigger:
``light.on_state`` Trigger
**************************
This trigger is activated each time the set light state is changed. It is not triggered
based on current state, but rather, it triggers on the set state which can differ from
the current state due to transitions. For example, the ``light.on_state`` trigger can
be used for immediate action when the light is set to off; while ``light.on_turn_off``
does not trigger until the light actually achieves the off state.
.. code-block:: yaml
light:
- platform: binary # or any other platform
# ...
on_state:
- logger.log: "Light State Changed!"
.. _light-effects:
Light Effects

View File

@ -0,0 +1,67 @@
Tuya Number
===========
.. seo::
:description: Instructions for setting up a Tuya device integer or enum datapoint..
:image: upload.svg
The ``tuya`` number platform allows you to create a number that controls
a tuya serial component. This platform requires :doc:`/components/tuya` to be configured.
When :doc:`/components/tuya` has been properly configured, it will output a list of
valid data points to the log after start-up.
.. code-block:: text
[21:37:14][C][tuya:028]: Tuya:
[21:37:14][C][tuya:045]: Datapoint 101: enum (value: 4)
[21:37:14][C][tuya:045]: Datapoint 102: enum (value: 1)
[21:37:14][C][tuya:041]: Datapoint 103: int value (value: 5)
[21:37:14][C][tuya:039]: Datapoint 104: switch (value: OFF)
[21:37:14][C][tuya:041]: Datapoint 105: int value (value: 229)
[21:37:14][C][tuya:041]: Datapoint 106: int value (value: 37)
[21:37:14][C][tuya:041]: Datapoint 107: int value (value: 10)
[21:37:14][C][tuya:041]: Datapoint 108: int value (value: 35)
[21:37:14][C][tuya:041]: Datapoint 109: int value (value: 30)
[21:37:14][C][tuya:041]: Datapoint 110: int value (value: 80)
[21:37:14][C][tuya:039]: Datapoint 112: switch (value: OFF)
[21:37:14][C][tuya:039]: Datapoint 113: switch (value: OFF)
[21:37:14][C][tuya:039]: Datapoint 114: switch (value: OFF)
[21:37:14][C][tuya:045]: Datapoint 115: enum (value: 4)
[21:37:14][C][tuya:045]: Datapoint 116: enum (value: 2)
[21:37:14][C][tuya:055]: Product: '{"p":"ymf4oruxqx0xlogp","v":"1.0.3","m":0}'
The example output above from a Tuya Siren with temperature and humidity sensors. The
``tuya`` number platform can be used to control all of the integer and enum datapoints.
On this device, datapoint 116 represents the volume control, with valid values being
0=High, 1=Medium, 2=Low.
Based on this, you can create a number as follows:
.. code-block:: yaml
- platform: "tuya"
name: "Volume"
number_datapoint: 116
min_value: 0
max_value: 2
step: 1
Configuration variables:
------------------------
- **id** (*Optional*, :ref:`config-id`): Manually specify the ID used for code generation.
- **name** (**Required**, string): The name of the switch.
- **number_datapoint** (**Required**, int): The datapoint id number of the number.
- **min_value** (**Required**, float): The minimum value this number can be.
- **max_value** (**Required**, float): The maximum value this number can be.
- **step** (**Required**, float): The granularity with which the number can be set.
- All other options from :ref:`Number <config-number>`.
See Also
--------
- :doc:`/components/number/index`
- :apiref:`tuya/number/tuya_number.h`
- :ghedit:`Edit`

View File

@ -0,0 +1,48 @@
MCP47A1 Output
==============
.. seo::
:description: Instructions for setting up MCP47A1 outputs on the ESP.
:image: mcp47a1.svg
The ``mcp47a1`` output component allows to use `6bit external DAC <https://www.microchip.com/en-us/product/MCP47A1>`__
in order to have analog output(s) on any board by using I²C. Devices default address is ``0x2E``
and configurable alternative is ``0x3E``.
.. code-block:: yaml
# Example configuration entry
# Set a global I²C connection
i2c:
sda: 21
scl: 22
scan: true
# Set the output with default (address: 0x2E / global I²C)
output:
- platform: mcp47a1
id: dac_output
on_...:
then:
- output.set_level:
id: dac_output
level: 100%
Configuration variables:
------------------------
- **id** (**Required**, :ref:`config-id`): The id to use for this output component.
- **address** (*Optional*, int): Manually specify the I²C address of
the DAC. Defaults to ``0x2E``.
- All other options from :ref:`Output <config-output>`.
See Also
--------
- :doc:`/components/output/mcp4725`
- :doc:`/components/output/esp32_dac`
- :doc:`/components/output/esp8266_pwm`
- :ghedit:`Edit`

View File

@ -28,9 +28,10 @@ Configuration variables:
- **register_count**: (*Optional*): only required for uncommon response encodings
The number of registers this data point spans. Default is 1
- **write_lambda** (*Optional*, :ref:`lambda <config-lambda>`):
Lambda is evaluated before the modbus write command is created. The value is passed in as ``float x`` and an empty vector is passed in as ``std::vector<uint16_t>&payload``
Lambda is evaluated before the modbus write command is created. The value is passed in as ``float x`` and an empty vector is passed in as ``std::vector<uint16_t>&payload``.
You can directly define the payload by adding data to payload then the return value is ignored and the content of payload is used.
- **multiply** (*Optional*, float): multiply the new value with this factor before sending the requests. Ignored if lambda is defined.
- **register_type** (*Optional*): ``coil`` to create a binary outout or ``holding`` to create a float output.
- **multiply** (*Optional*, float): multiply the new value with this factor before sending the requests. Ignored if lambda is defined. Only valid for ``register_type: holding``.
- **offset**: (*Optional*, int): only required for uncommon response encodings
offset from start address in bytes. If more than one register is read a modbus read registers command this value is used to find the start of this datapoint relative to start address. The component calculates the size of the range based on offset and size of the value type
- **use_write_multiple**: (*Optional*, boolean): By default the modbus command ``Preset Single Registers`` (function code 6) is used for setting the holding register if only 1 register is set. If your device only supports ``Preset Multiple Registers`` (function code 16) set this option to true.
@ -40,15 +41,20 @@ All other options from :ref:`Output <config-output>`.
**Parameters passed into the lambda**
- **x** (float): The float value to be sent to the modbus device
- **x** (float): The float value to be sent to the modbus device for ``register_type: holding``
- **x** (bool): The boolean value to be sent to the modbus device for ``register_type: coil``
- **payload** (`std::vector<uint16_t>&payload`):
- for ``register_type: holding``: empty vector for the payload. The lamdba can add 16 bit raw modbus register words.
- for ``register_type: coil``: empty vector for the payload. If payload is set in the lambda it is sent as a custom command and must include all required bytes for a modbus request
note: because the response contains data for all registers in the same range you have to use ``data[item->offset]`` to get the first response byte for your sensor.
- **payload** (`std::vector<uint16_t>&payload`): empty vector for the payload. The lamdba can add 16 bit raw modbus register words.
note: because the response contains data for all registers in the same range you have to use ``data[item->offset]`` to get the first response byte for your sensor.
- **item** (const pointer to a SensorItem derived object): The sensor object itself.
Possible return values for the lambda:
- ``return <FLOATING_POINT_NUMBER>;`` the new value for the sensor.
- ``return <FLOATING_POINT_NUMBER / BOOL>;`` the new value for the sensor.
- ``return <anything>; and fill payload with data`` if the payload is added from the lambda then these 16 bit words will be sent
- ``return {};`` if you don't want write the command to the device (or do it from the lambda).

View File

@ -30,12 +30,41 @@ heating element through a relay where a fast PWM update cycle would not be appro
Configuration variables:
------------------------
- **pin** (**Required**, :ref:`Pin Schema <config-pin_schema>`): The pin to pulse.
- **id** (**Required**, :ref:`config-id`): The id to use for this output component.
- **period** (**Required**, :ref:`config-time`): The duration of each cycle. (i.e. a 10s
period at 50% duty would result in the pin being turned on for 5s, then off for 5s)
- **pin** (*Optional*, :ref:`Pin Schema <config-pin_schema>`): The pin to pulse.
- **state_change_action** (*Optional*, :ref:`Automation <automation>`): An automation to perform when the load is switched. If a lambda is used the boolean ``state`` parameter holds the new status.
- **turn_on_action** (*Optional*, :ref:`Automation <automation>`): An automation to perform when the load is turned on. Can be used to control for example a switch or output component.
- **turn_off_action** (*Optional*, :ref:`Automation <automation>`): An automation to perform when the load is turned off. ``turn_on_action`` and ``turn_off_action`` must be configured together.
- All other options from :ref:`Output <config-output>`.
.. note::
- If ``pin`` is defined the GPIO pin state is writen before any action is executed.
- ``state_change_action`` and ``turn_on_action``/``turn_off_action`` can be used togther. ``state_change_action`` is called before ``turn_on_action``/``turn_off_action``. It's recommended to use either ``state_change_action`` or ``turn_on_action``/``turn_off_action`` to change the state of an output. Using both automations together is only recommended for monitoring.
Example:
--------
.. code-block:: yaml
output:
- platform: slow_pwm
id: my_slow_pwm
period: 15s
turn_on_action:
- lambda: |-
auto *out1 = id(output1);
out1->turn_on();
turn_off_action:
- output.turn_off: output1
See Also
--------

View File

@ -30,19 +30,22 @@ Configuration variables:
- **dump** (*Optional*, list): Decode and dump these remote codes in the logs (at log.level=DEBUG).
Set to ``all`` to dump all available codecs:
- **coolix**: Decode and dump Coolix infrared codes.
- **dish**: Decode and dump Dish infrared codes.
- **jvc**: Decode and dump JVC infrared codes.
- **lg**: Decode and dump LG infrared codes.
- **midea**: Decode and dump Midea infrared codes.
- **nec**: Decode and dump NEC infrared codes.
- **nexa**: Decode and dump Nexa (RF) codes.
- **panasonic**: Decode and dump Panasonic infrared codes.
- **pioneer**: Decode and dump Pioneer infrared codes.
- **jvc**: Decode and dump JVC infrared codes.
- **raw**: Print all remote codes in their raw form. Useful for using arbitrary protocols.
- **rc5**: Decode and dump RC5 IR codes.
- **rc_switch**: Decode and dump RCSwitch RF codes.
- **samsung**: Decode and dump Samsung infrared codes.
- **samsung36**: Decode and dump Samsung36 infrared codes.
- **sony**: Decode and dump Sony infrared codes.
- **toshiba_ac**: Decode and dump Toshiba AC infrared codes.
- **rc_switch**: Decode and dump RCSwitch RF codes.
- **rc5**: Decode and dump RC5 IR codes.
- **raw**: Print all remote codes in their raw form. Useful for using arbitrary protocols.
- **tolerance** (*Optional*, int): The percentage that the remote signal lengths can deviate in the
decoding process. Defaults to ``25%``.
@ -59,6 +62,13 @@ Configuration variables:
Automations:
- **on_coolix** (*Optional*, :ref:`Automation <automation>`): An automation to perform when a
Coolix remote code has been decoded. A variable ``x`` of type :apiclass:`remote_base::CoolixData`
is passed to the automation for use in lambdas.
- **on_dish** (*Optional*, :ref:`Automation <automation>`): An automation to perform when a
dish network remote code has been decoded. A variable ``x`` of type :apistruct:`remote_base::DishData`
is passed to the automation for use in lambdas.
Beware that Dish remotes use a different carrier frequency (57.6kHz) that many receiver hardware don't decode.
- **on_jvc** (*Optional*, :ref:`Automation <automation>`): An automation to perform when a
JVC remote code has been decoded. A variable ``x`` of type :apistruct:`remote_base::JVCData`
is passed to the automation for use in lambdas.
@ -78,11 +88,14 @@ Automations:
Therefore, if the the configuration file has come from an earlier version of ESPhome, it is necessary to reverse the order of the address and command bits when moving to 2021.12 or above.
For example, address: 0x84ED, command: 0x13EC becomes 0xB721 and 0x37C8 respectively.
- **on_sony** (*Optional*, :ref:`Automation <automation>`): An automation to perform when a
Sony remote code has been decoded. A variable ``x`` of type :apistruct:`remote_base::SonyData`
- **on_nexa** (*Optional*, :ref:`Automation <automation>`): An automation to perform when a
Nexa RF code has been decoded. A variable ``x`` of type :apiclass:`remote_base::NexaData`
is passed to the automation for use in lambdas.
- **on_toshiba_ac** (*Optional*, :ref:`Automation <automation>`): An automation to perform when a
Toshiba AC remote code has been decoded. A variable ``x`` of type :apistruct:`remote_base::ToshibaAcData`
- **on_panasonic** (*Optional*, :ref:`Automation <automation>`): An automation to perform when a
Panasonic remote code has been decoded. A variable ``x`` of type :apistruct:`remote_base::PanasonicData`
is passed to the automation for use in lambdas.
- **on_pioneer** (*Optional*, :ref:`Automation <automation>`): An automation to perform when a
pioneer remote code has been decoded. A variable ``x`` of type :apistruct:`remote_base::PioneerData`
is passed to the automation for use in lambdas.
- **on_raw** (*Optional*, :ref:`Automation <automation>`): An automation to perform when a
raw remote code has been decoded. A variable ``x`` of type ``std::vector<int>``
@ -99,16 +112,12 @@ Automations:
- **on_samsung36** (*Optional*, :ref:`Automation <automation>`): An automation to perform when a
Samsung36 remote code has been decoded. A variable ``x`` of type :apistruct:`remote_base::Samsung36Data`
is passed to the automation for use in lambdas.
- **on_panasonic** (*Optional*, :ref:`Automation <automation>`): An automation to perform when a
Panasonic remote code has been decoded. A variable ``x`` of type :apistruct:`remote_base::PanasonicData`
- **on_sony** (*Optional*, :ref:`Automation <automation>`): An automation to perform when a
Sony remote code has been decoded. A variable ``x`` of type :apistruct:`remote_base::SonyData`
is passed to the automation for use in lambdas.
- **on_pioneer** (*Optional*, :ref:`Automation <automation>`): An automation to perform when a
pioneer remote code has been decoded. A variable ``x`` of type :apistruct:`remote_base::PioneerData`
- **on_toshiba_ac** (*Optional*, :ref:`Automation <automation>`): An automation to perform when a
Toshiba AC remote code has been decoded. A variable ``x`` of type :apistruct:`remote_base::ToshibaAcData`
is passed to the automation for use in lambdas.
- **on_dish** (*Optional*, :ref:`Automation <automation>`): An automation to perform when a
dish network remote code has been decoded. A variable ``x`` of type :apistruct:`remote_base::DishData`
is passed to the automation for use in lambdas.
Beware that Dish remotes use a different carrier frequency (57.6kHz) that many receiver hardware don't decode.
.. _remote-receiver-binary-sensor:
@ -143,6 +152,16 @@ Configuration variables:
Remote code selection (exactly one of these has to be included):
- **coolix**: Trigger on a decoded Coolix remote code with the given data.
- **data** (**Required**, int): The 24-bit Coolix code to trigger on, see dumper output for more info.
- **dish**: Trigger on a decoded Dish Network remote code with the given data.
Beware that Dish remotes use a different carrier frequency (57.6kHz) that many receiver hardware don't decode.
- **address** (*Optional*, int): The number of the receiver to target, between 1 and 16 inclusive. Defaults to ``1``.
- **command** (**Required**, int): The Dish command to listen for, between 0 and 63 inclusive.
- **jvc**: Trigger on a decoded JVC remote code with the given data.
- **data** (**Required**, int): The JVC code to trigger on, see dumper output for more info.
@ -168,35 +187,13 @@ Remote code selection (exactly one of these has to be included):
- **address** (**Required**, int): The address to trigger on, see dumper output for more info.
- **command** (**Required**, int): The NEC command to listen for.
- **sony**: Trigger on a decoded Sony remote code with the given data.
- **nexa**: Trigger on a decoded Nexa RF code with the given data.
- **data** (**Required**, int): The Sony code to trigger on, see dumper output for more info.
- **nbits** (*Optional*, int): The number of bits of the remote code. Defaults to ``12``.
- **toshiba_ac**: Trigger on a decoded Toshiba AC remote code with the given data.
- **rc_code_1** (**Required**, int): The remote control code to trigger on, see dumper output for more details.
- **rc_code_2** (*Optional*, int): The second part of the remote control code to trigger on, see dumper output for more details.
- **raw**: Trigger on a raw remote code with the given code.
- **code** (**Required**, list): The code to listen for, see :ref:`remote_transmitter-transmit_raw`
for more info. Usually you only need to copy this directly from the dumper output.
- **rc5**: Trigger on a decoded RC5 remote code with the given data.
- **address** (**Required**, int): The address to trigger on, see dumper output for more info.
- **command** (**Required**, int): The RC5 command to listen for.
- **samsung**: Trigger on a decoded Samsung remote code with the given data.
- **data** (**Required**, int): The data to trigger on, see dumper output for more info.
- **nbits** (*Optional*, int): The number of bits of the remote code. Defaults to ``32``.
- **samsung36**: Trigger on a decoded Samsung36 remote code with the given data.
- **address** (**Required**, int): The address to trigger on, see dumper output for more info.
- **command** (**Required**, int): The command.
- **device** (**Required**, int): The Nexa device code to trigger on, see dumper output for more info.
- **group** (**Required**, int): The Nexa group code to trigger on, see dumper output for more info.
- **state** (**Required**, int): The Nexa state code to trigger on, see dumper output for more info.
- **channel** (**Required**, int): The Nexa channel code to trigger on, see dumper output for more info.
- **level** (**Required**, int): The Nexa level code to trigger on, see dumper output for more info.
- **panasonic**: Trigger on a decoded Panasonic remote code with the given data.
@ -207,11 +204,15 @@ Remote code selection (exactly one of these has to be included):
- **rc_code_1** (**Required**, int): The remote control code to trigger on, see dumper output for more details.
- **dish**: Trigger on a decoded Dish Network remote code with the given data.
Beware that Dish remotes use a different carrier frequency (57.6kHz) that many receiver hardware don't decode.
- **raw**: Trigger on a raw remote code with the given code.
- **address** (*Optional*, int): The number of the receiver to target, between 1 and 16 inclusive. Defaults to ``1``.
- **command** (**Required**, int): The Dish command to listen for, between 0 and 63 inclusive.
- **code** (**Required**, list): The code to listen for, see :ref:`remote_transmitter-transmit_raw`
for more info. Usually you only need to copy this directly from the dumper output.
- **rc5**: Trigger on a decoded RC5 remote code with the given data.
- **address** (**Required**, int): The address to trigger on, see dumper output for more info.
- **command** (**Required**, int): The RC5 command to listen for.
- **rc_switch_raw**: Trigger on a decoded RC Switch raw remote code with the given data.
@ -248,6 +249,26 @@ Remote code selection (exactly one of these has to be included):
- **state** (**Required**, boolean): The on/off state to trigger on.
- **protocol** (*Optional*): The RC Switch protocol to use, see :ref:`remote_transmitter-rc_switch-protocol` for more info.
- **samsung**: Trigger on a decoded Samsung remote code with the given data.
- **data** (**Required**, int): The data to trigger on, see dumper output for more info.
- **nbits** (*Optional*, int): The number of bits of the remote code. Defaults to ``32``.
- **samsung36**: Trigger on a decoded Samsung36 remote code with the given data.
- **address** (**Required**, int): The address to trigger on, see dumper output for more info.
- **command** (**Required**, int): The command.
- **sony**: Trigger on a decoded Sony remote code with the given data.
- **data** (**Required**, int): The Sony code to trigger on, see dumper output for more info.
- **nbits** (*Optional*, int): The number of bits of the remote code. Defaults to ``12``.
- **toshiba_ac**: Trigger on a decoded Toshiba AC remote code with the given data.
- **rc_code_1** (**Required**, int): The remote control code to trigger on, see dumper output for more details.
- **rc_code_2** (*Optional*, int): The second part of the remote control code to trigger on, see dumper output for more details.
.. note::
For the Sonoff RF Bridge you can use `this hack <https://github.com/xoseperez/espurna/wiki/Hardware-Itead-Sonoff-RF-Bridge---Direct-Hack>`__

View File

@ -74,58 +74,50 @@ Configuration variables:
- **transmitter_id** (*Optional*, :ref:`config-id`): The remote transmitter to send the
remote code with. Defaults to the first one defined in the configuration.
If you're looking for the same functionality as is default in the ``rpi_rf`` integration in
Home Assistant, you'll want to set the **times** to 10 and the **wait_time** to 0s.
.. _remote_transmitter-transmit_raw:
.. _remote_transmitter-transmit_coolix:
``remote_transmitter.transmit_raw`` Action
******************************************
This :ref:`action <config-action>` sends a raw code to a remote transmitter.
.. code-block:: yaml
on_...:
- remote_transmitter.transmit_raw:
code: [4088, -1542, 1019, -510, 513, -1019, 510, -509, 511, -510, 1020,
-1020, 1022, -1019, 510, -509, 511, -510, 511, -509, 511, -510,
1020, -1019, 510, -511, 1020, -510, 512, -508, 510, -1020, 1022,
-1021, 1019, -1019, 511, -510, 510, -510, 1022, -1020, 1019,
-1020, 511, -511, 1018, -1022, 1020, -1019, 1021, -1019, 1020,
-511, 510, -1019, 1023, -1019, 1019, -510, 512, -508, 510, -511,
512, -1019, 510, -509]
Configuration variables:
- **code** (**Required**, list): The raw code to send as a list of integers.
Positive numbers represent a digital high signal and negative numbers a digital low signal.
The number itself encodes how long the signal should last (in microseconds).
- **carrier_frequency** (*Optional*, float): Optionally set a frequency to send the signal
with for infrared signals. Defaults to ``0Hz``.
- All other options from :ref:`remote_transmitter-transmit_action`.
.. _remote_transmitter-transmit_pronto:
``remote_transmitter.transmit_pronto`` Action
``remote_transmitter.transmit_coolix`` Action
*********************************************
This :ref:`action <config-action>` sends a raw code to a remote transmitter specified in Pronto format.
This :ref:`action <config-action>` sends a 24-bit Coolix infrared remote code to a remote transmitter.
.. code-block:: yaml
on_...:
- remote_transmitter.transmit_pronto:
data: "0000 006D 0010 0000 0008 0020 0008 0046 000A 0020 0008 0020 0008 001E 000A 001E 000A 0046 000A 001E 0008 0020 0008 0020 0008 0046 000A 0046 000A 0046 000A 001E 000A 001E 0008 06C3"
- remote_transmitter.transmit_coolix:
data: 0xB23FE4
Configuration variables:
- **data** (**Required**, string): The raw code to send specified as a string.
A lot of remote control Pronto codes can be found on http://remotecentral.com
- **data** (**Required**, int): The Coolix code to send, see dumper output for more info.
.. _remote_transmitter-transmit_dish:
``remote_transmitter.transmit_dish`` Action
*******************************************
This :ref:`action <config-action>` sends a Dish Network infrared remote code to a remote transmitter.
.. code-block:: yaml
on_...:
- remote_transmitter.transmit_dish:
address: 1
command: 16
Configuration variables:
- **address** (*Optional*, int): The number of the receiver to target, between 1 and 16 inclusive. Defaults to ``1``.
- **command** (**Required**, int): The command to send, between 0 and 63 inclusive.
- All other options from :ref:`remote_transmitter-transmit_action`.
You can find a list of commands in the `LIRC project <https://sourceforge.net/p/lirc-remotes/code/ci/master/tree/remotes/dishnet/Dish_Network.lircd.conf>`__.
.. _remote_transmitter-transmit_jvc:
``remote_transmitter.transmit_jvc`` Action
******************************************
@ -142,6 +134,8 @@ Configuration variables:
- **data** (**Required**, int): The JVC code to send, see dumper output for more info.
.. _remote_transmitter-transmit_lg:
``remote_transmitter.transmit_lg`` Action
*****************************************
@ -202,82 +196,31 @@ Configuration variables:
- **command** (**Required**, int): The NEC command to send.
- All other options from :ref:`remote_transmitter-transmit_action`.
``remote_transmitter.transmit_sony`` Action
``remote_transmitter.transmit_nexa`` Action
*******************************************
This :ref:`action <config-action>` a Sony infrared remote code to a remote transmitter.
This :ref:`action <config-action>` a Nexa RF remote code to a remote transmitter.
.. code-block:: yaml
on_...:
- remote_transmitter.transmit_sony:
data: 0x123
nbits: 12
- remote_transmitter.nexa:
device: 0x38DDB4A
state: 1
group: 0
channel: 15
level: 0
Configuration variables:
- **data** (**Required**, int): The Sony code to send, see dumper output for more info.
- **nbits** (*Optional*, int): The number of bits to send. Defaults to ``12``.
- **device** (**Required**, int): The Nexa device code to send, see dumper output for more info.
- **state** (**Required**, int): The Nexa state code to send (0-OFF, 1-ON, 2-DIMMER LEVEL), see dumper output for more info.
- **group** (**Required**, int): The Nexa group code to send, see dumper output for more info.
- **channel** (**Required**, int): The Nexa channel code to send, see dumper output for more info.
- **level** (**Required**, int): The Nexa level code to send, see dumper output for more info.
- All other options from :ref:`remote_transmitter-transmit_action`.
``remote_transmitter.transmit_rc5`` Action
******************************************
This :ref:`action <config-action>` sends an RC5 infrared remote code to a remote transmitter.
.. code-block:: yaml
on_...:
- remote_transmitter.transmit_rc5:
address: 0x1F
command: 0x3F
Configuration variables:
- **address** (**Required**, int): The address to send, see dumper output for more details.
- **command** (**Required**, int): The RC5 command to send.
- All other options from :ref:`remote_transmitter-transmit_action`.
``remote_transmitter.transmit_samsung`` Action
**********************************************
This :ref:`action <config-action>` sends a Samsung infrared remote code to a remote transmitter.
It transmits codes up to 64 bits in length in a single packet.
.. code-block:: yaml
on_...:
- remote_transmitter.transmit_samsung:
data: 0x1FEF05E4
# additional example for 48-bit codes:
- remote_transmitter.transmit_samsung:
data: 0xB946F50A09F6
nbits: 48
Configuration variables:
- **data** (**Required**, int): The data to send, see dumper output for more details.
- **nbits** (*Optional*, int): The number of bits to send. Defaults to ``32``.
- All other options from :ref:`remote_transmitter-transmit_action`.
``remote_transmitter.transmit_samsung36`` Action
************************************************
This :ref:`action <config-action>` sends a Samsung36 infrared remote code to a remote transmitter.
It transmits the ``address`` and ``command`` in two packets separated by a "space".
.. code-block:: yaml
on_...:
- remote_transmitter.transmit_samsung36:
address: 0x0400
command: 0x000E00FF
Configuration variables:
- **address** (**Required**, int): The address to send, see dumper output for more details.
- **command** (**Required**, int): The Samsung36 command to send, see dumper output for more details.
- All other options from :ref:`remote_transmitter-transmit_action`.
.. _remote_transmitter-transmit_panasonic:
``remote_transmitter.transmit_panasonic`` Action
************************************************
@ -297,26 +240,7 @@ Configuration variables:
- **command** (**Required**, int): The command to send.
- All other options from :ref:`remote_transmitter-transmit_action`.
``remote_transmitter.transmit_dish`` Action
************************************************
This :ref:`action <config-action>` sends a Dish Network infrared remote code to a remote transmitter.
.. code-block:: yaml
on_...:
- remote_transmitter.transmit_dish:
address: 1
command: 16
Configuration variables:
- **address** (*Optional*, int): The number of the receiver to target, between 1 and 16 inclusive. Defaults to ``1``.
- **command** (**Required**, int): The command to send, between 0 and 63 inclusive.
- All other options from :ref:`remote_transmitter-transmit_action`.
You can find a list of commands in the `LIRC project <https://sourceforge.net/p/lirc-remotes/code/ci/master/tree/remotes/dishnet/Dish_Network.lircd.conf>`__.
.. _remote_transmitter-transmit_pioneer:
``remote_transmitter.transmit_pioneer`` Action
**********************************************
@ -347,26 +271,75 @@ At the time this action was created, Pioneer maintained listings of IR codes use
If unable to find your specific device in the documentation, find a device in the same class; the codes
are largely shared among devices within a given class.
``remote_transmitter.transmit_toshiba_ac`` Action
*************************************************
.. _remote_transmitter-transmit_pronto:
This :ref:`action <config-action>` sends a Toshiba AC infrared remote code to a remote transmitter.
``remote_transmitter.transmit_pronto`` Action
*********************************************
This :ref:`action <config-action>` sends a raw code to a remote transmitter specified in Pronto format.
.. code-block:: yaml
on_...:
- remote_transmitter.transmit_toshiba_ac:
rc_code_1: 0xB24DBF4040BF
rc_code_2: 0xD5660001003C
- remote_transmitter.transmit_pronto:
data: "0000 006D 0010 0000 0008 0020 0008 0046 000A 0020 0008 0020 0008 001E 000A 001E 000A 0046 000A 001E 0008 0020 0008 0020 0008 0046 000A 0046 000A 0046 000A 001E 000A 001E 0008 06C3"
Configuration variables:
- **rc_code_1** (**Required**, int): The remote control code to send, see dumper output for more details.
- **rc_code_2** (*Optional*, int): The secondary remote control code to send; some codes are sent in
two parts.
- **Note:** this action transmits codes using the new(er) Toshiba AC protocol and likely will not work with older units.
- **data** (**Required**, string): The raw code to send specified as a string.
A lot of remote control Pronto codes can be found on http://remotecentral.com
- All other options from :ref:`remote_transmitter-transmit_action`.
.. _remote_transmitter-transmit_raw:
``remote_transmitter.transmit_raw`` Action
******************************************
This :ref:`action <config-action>` sends a raw code to a remote transmitter.
.. code-block:: yaml
on_...:
- remote_transmitter.transmit_raw:
code: [4088, -1542, 1019, -510, 513, -1019, 510, -509, 511, -510, 1020,
-1020, 1022, -1019, 510, -509, 511, -510, 511, -509, 511, -510,
1020, -1019, 510, -511, 1020, -510, 512, -508, 510, -1020, 1022,
-1021, 1019, -1019, 511, -510, 510, -510, 1022, -1020, 1019,
-1020, 511, -511, 1018, -1022, 1020, -1019, 1021, -1019, 1020,
-511, 510, -1019, 1023, -1019, 1019, -510, 512, -508, 510, -511,
512, -1019, 510, -509]
Configuration variables:
- **code** (**Required**, list): The raw code to send as a list of integers.
Positive numbers represent a digital high signal and negative numbers a digital low signal.
The number itself encodes how long the signal should last (in microseconds).
- **carrier_frequency** (*Optional*, float): Optionally set a frequency to send the signal
with for infrared signals. Defaults to ``0Hz``.
- All other options from :ref:`remote_transmitter-transmit_action`.
.. _remote_transmitter-transmit_rc5:
``remote_transmitter.transmit_rc5`` Action
******************************************
This :ref:`action <config-action>` sends an RC5 infrared remote code to a remote transmitter.
.. code-block:: yaml
on_...:
- remote_transmitter.transmit_rc5:
address: 0x1F
command: 0x3F
Configuration variables:
- **address** (**Required**, int): The address to send, see dumper output for more details.
- **command** (**Required**, int): The RC5 command to send.
- All other options from :ref:`remote_transmitter-transmit_action`.
.. _remote_transmitter-transmit_rc_switch_raw:
``remote_transmitter.transmit_rc_switch_raw`` Action
****************************************************
@ -405,6 +378,8 @@ All RC Switch ``protocol`` settings have these settings:
- **one** (*Optional*): The number of high/low pulses for a one bit, defaults to ``[3, 1]``
- **inverted** (*Optional*, boolean): If this protocol is inverted. Defaults to ``false``.
.. _remote_transmitter-transmit_rc_switch_type_a:
``remote_transmitter.transmit_rc_switch_type_a`` Action
*******************************************************
@ -429,6 +404,8 @@ Configuration variables:
for more information.
- All other options from :ref:`remote_transmitter-transmit_action`.
.. _remote_transmitter-transmit_rc_switch_type_b:
``remote_transmitter.transmit_rc_switch_type_b`` Action
*******************************************************
@ -453,6 +430,8 @@ Configuration variables:
for more information.
- All other options from :ref:`remote_transmitter-transmit_action`.
.. _remote_transmitter-transmit_rc_switch_type_c:
``remote_transmitter.transmit_rc_switch_type_c`` Action
*******************************************************
@ -479,6 +458,8 @@ Configuration variables:
for more information.
- All other options from :ref:`remote_transmitter-transmit_action`.
.. _remote_transmitter-transmit_rc_switch_type_d:
``remote_transmitter.transmit_rc_switch_type_d`` Action
*******************************************************
@ -503,8 +484,95 @@ Configuration variables:
for more information.
- All other options from :ref:`remote_transmitter-transmit_action`.
.. _remote_transmitter-transmit_samsung:
lambda calls
``remote_transmitter.transmit_samsung`` Action
**********************************************
This :ref:`action <config-action>` sends a Samsung infrared remote code to a remote transmitter.
It transmits codes up to 64 bits in length in a single packet.
.. code-block:: yaml
on_...:
- remote_transmitter.transmit_samsung:
data: 0x1FEF05E4
# additional example for 48-bit codes:
- remote_transmitter.transmit_samsung:
data: 0xB946F50A09F6
nbits: 48
Configuration variables:
- **data** (**Required**, int): The data to send, see dumper output for more details.
- **nbits** (*Optional*, int): The number of bits to send. Defaults to ``32``.
- All other options from :ref:`remote_transmitter-transmit_action`.
.. _remote_transmitter-transmit_samsung36:
``remote_transmitter.transmit_samsung36`` Action
************************************************
This :ref:`action <config-action>` sends a Samsung36 infrared remote code to a remote transmitter.
It transmits the ``address`` and ``command`` in two packets separated by a "space".
.. code-block:: yaml
on_...:
- remote_transmitter.transmit_samsung36:
address: 0x0400
command: 0x000E00FF
Configuration variables:
- **address** (**Required**, int): The address to send, see dumper output for more details.
- **command** (**Required**, int): The Samsung36 command to send, see dumper output for more details.
- All other options from :ref:`remote_transmitter-transmit_action`.
.. _remote_transmitter-transmit_sony:
``remote_transmitter.transmit_sony`` Action
*******************************************
This :ref:`action <config-action>` a Sony infrared remote code to a remote transmitter.
.. code-block:: yaml
on_...:
- remote_transmitter.transmit_sony:
data: 0x123
nbits: 12
Configuration variables:
- **data** (**Required**, int): The Sony code to send, see dumper output for more info.
- **nbits** (*Optional*, int): The number of bits to send. Defaults to ``12``.
- All other options from :ref:`remote_transmitter-transmit_action`.
.. _remote_transmitter-transmit_toshiba_ac:
``remote_transmitter.transmit_toshiba_ac`` Action
*************************************************
This :ref:`action <config-action>` sends a Toshiba AC infrared remote code to a remote transmitter.
.. code-block:: yaml
on_...:
- remote_transmitter.transmit_toshiba_ac:
rc_code_1: 0xB24DBF4040BF
rc_code_2: 0xD5660001003C
Configuration variables:
- **rc_code_1** (**Required**, int): The remote control code to send, see dumper output for more details.
- **rc_code_2** (*Optional*, int): The secondary remote control code to send; some codes are sent in
two parts.
- **Note:** this action transmits codes using the new(er) Toshiba AC protocol and likely will not work with older units.
- All other options from :ref:`remote_transmitter-transmit_action`.
Lambda calls
************
Actions may also be called from :ref:`lambdas <config-lambda>`. The ``.transmit()`` call can be populated with

View File

@ -0,0 +1,75 @@
Belling BL0940 Energy Monitor
==================================
.. seo::
:description: Instructions for setting up BL0940 power monitors.
:image: bl0940.png
:keywords: BL0940
.. note::
This page is incomplete and could some work. If you want to contribute, please read the
:doc:`contributing guide </guides/contributing>`. This page is missing:
- Images/screenshots/example configs of this device being used in action.
The ``bl0940`` sensor platform allows you to use BL0940 energy monitors sensors with
ESPHome. These are used in some Tuya-devices (e.g. the power metering BW-SHP10)
The communication with this integration is done over a :ref:`UART bus <uart>`.
You must therefore have a ``uart:`` entry in your configuration with both the TX and RX pins set
to some pins on your board and the baud rate set to 4800 with 1 stop bit.
.. code-block:: yaml
# Example configuration entry
uart:
id: uart_bus
tx_pin: TX
rx_pin: RX
baud_rate: 4800
stop_bits: 1
sensor:
- platform: bl0940
uart_id: uart_bus
voltage:
name: 'BL0940 Voltage'
current:
name: 'BL0940 Current'
power:
name: 'BL0940 Power'
energy:
name: 'BL0940 Energy'
temperature:
name: 'BL0940 Internal temperature'
target_temperature:
name: 'BL0940 External temperature'
update_interval: 60s
Configuration variables:
------------------------
- **voltage** (*Optional*): The voltage value of the sensor in Volts.
All options from :ref:`Sensor <config-sensor>`.
- **current** (*Optional*): The current value of the sensor in Amperes. All options from
:ref:`Sensor <config-sensor>`.
- **power** (*Optional*): The (active) power value of the sensor in Watts. All options from
:ref:`Sensor <config-sensor>`.
- **energy** (*Optional*): Use the voltage value of the sensor in kWh.
All options from :ref:`Sensor <config-sensor>`.
- **temperature** (*Optional*): The internal temperature value of the sensor in °C.
All options from :ref:`Sensor <config-sensor>`.
- **target_temperature** (*Optional*): The external value of the sensor in °C. Often not connected and gives garbage data.
All options from :ref:`Sensor <config-sensor>`.
- **update_interval** (*Optional*, :ref:`config-time`): The interval to check the
sensor. Defaults to ``60s``.
- **uart_id** (*Optional*, :ref:`config-id`): Manually specify the ID of the :ref:`UART Component <uart>` if you want
to use multiple UART buses.
See Also
--------
- :ref:`sensor-filters`
- :apiref:`bl0940/bl0940.h`
- :ghedit:`Edit`

View File

@ -0,0 +1,86 @@
BMP388 / BMP390 Temperature+Pressure Sensor
===========================================
.. seo::
:description: Instructions for setting up BMP388 or BMP390 temperature and pressure sensors with ESPHome
:image: bmp388.jpg
:keywords: BMP388 BMP390
The ``bmp3xx`` sensor platform allows you to use your BMP388 or BMP390
(`datasheet <https://www.bosch-sensortec.com/media/boschsensortec/downloads/datasheets/bst-bmp390-ds002.pdf>`__, `BMP390 product page <https://www.bosch-sensortec.com/products/environmental-sensors/pressure-sensors/bmp390/>`__) temperature and pressure sensors with ESPHome. The :ref:`I²C <i2c>` bus is
required to be set up in your configuration for this sensor to work.
.. figure:: images/bmp388.jpg
:align: center
:width: 50.0%
BMP388/BMP390 Temperature and Pressure Sensor.
.. code-block:: yaml
# Example configuration entry
sensor:
- platform: bmp3xx
temperature:
name: "Outside Temperature"
oversampling: 16x
pressure:
name: "Outside Pressure"
address: 0x77
update_interval: 60s
Configuration variables:
------------------------
- **temperature** (*Optional*): The information for the temperature sensor.
- **name** (**Required**, string): The name for the temperature
sensor.
- **oversampling** (*Optional*): The oversampling parameter for the temperature sensor.
See :ref:`Oversampling Options <bmp3xx-oversampling>`.
- **id** (*Optional*, :ref:`config-id`): Set the ID of this sensor for use in lambdas.
- All other options from :ref:`Sensor <config-sensor>`.
- **pressure** (*Optional*): The information for the pressure sensor.
- **name** (**Required**, string): The name for the pressure sensor.
- **oversampling** (*Optional*): The oversampling parameter for the temperature sensor.
See :ref:`Oversampling Options <bmp3xx-oversampling>`.
- **id** (*Optional*, :ref:`config-id`): Set the ID of this sensor for use in lambdas.
- All other options from :ref:`Sensor <config-sensor>`.
- **address** (*Optional*, int): Manually specify the I²C address of
the sensor. Defaults to ``0x77``. Another address can be ``0x76``.
- **iir_filter** (*Optional*): Set up an Infinite Impulse Response filter to increase accuracy. One of
``OFF``, ``2x``, ``4x``, ``16x``, ``32``, ``64x``, ``128x``. Defaults to ``OFF``.
- **update_interval** (*Optional*, :ref:`config-time`): The interval to check the
sensor. Defaults to ``60s``.
.. _bmp3xx-oversampling:
Oversampling Options
--------------------
By default, the BMP3xx sensor measures pressure 16 times and temperature 2 times when requesting a new value. You can, however,
configure this amount. Possible oversampling values:
- ``NONE`` (value is skipped)
- ``2x``
- ``4x``
- ``8x``
- ``16x`` (default)
- ``32x``
See Also
--------
- :ref:`sensor-filters`
- :doc:`bme280`
- :doc:`bmp280`
- :doc:`bme680`
- :doc:`bmp085`
- :apiref:`bmp3xx/bmp3xx.h`
- `BMP3 sensor API <https://github.com/BoschSensortec/BMP3-Sensor-API>`__
- `BMP388/BMP390 Library <https://github.com/MartinL1/BMP388_DEV>`__ by Martin Lindupp
- :ghedit:`Edit`

After

Width:  |  Height:  |  Size: 3.1 KiB

View File

@ -0,0 +1,118 @@
cd74hc4067 Analog Multiplexer
=============================
.. seo::
:description: Instructions for setting up cd74hc4067 Analog Multiplexer and sensors.
:image: cd74hc4067.jpg
The ``cd74hc4067`` Analog Multiplexer component allows you to attach up to 16 analog input sensors to a single ADC pin.
The component is used to activate the right multiplexer pin for each of the defined cd74hc4067 sensors.
For further information about the cd74hc4067 chip see the `spec sheet <https://www.ti.com/lit/ds/symlink/cd74hc4067.pdf>`__
and there are also some guides around like the one from `Adam Meyer <http://adam-meyer.com/arduino/CD74HC4067>`__.
Actually, the chip is bidirectional and could also be used as output, but this is not supported by the component yet.
First, you need to configure the component with the digital pins that control the multiplexer.
Then you need to set up a voltage sensor source (e.g. :doc:`ADC sensor <adc>`) and pass it to the cd74hc4067 sensors with the ``sensor`` option.
Each cd74hc4067 sensor is configured for one of the 16 input pins of the multiplexer.
.. code-block:: yaml
# Example configuration entry
cd74hc4067:
pin_s0: D0
pin_s1: D1
pin_s2: D2
pin_s3: D3
sensor:
- platform: adc
id: adc_sensor
pin: A0
- platform: cd74hc4067
id: adc_0
number: 0
sensor: adc_sensor
- platform: cd74hc4067
id: adc_1
number: 1
sensor: adc_sensor
Component/Hub
-------------
Configuration Variables:
************************
- **pin_s0** to **pin_s3** (**Required**, :ref:`config-pin`): The I/O pins connected to the S0 to S3 channel selection pins
- **delay** (*Optional*, :ref:`config-time`): A small delay duration needed for the chip to switch inputs, defaults to 2ms.
Sensor
------
Configuration Variables:
************************
- **sensor** (**Required**, :ref:`config-id`): The source sensor to measure voltage values from, e.g. :doc:`ADC sensor <adc>`.
- **number** (*Required*, int): The number of the cd74hc4067 input pin (0-15)
- All other options from :ref:`Sensor <config-sensor>`.
Application Example
-------------------
In this example, the component is used to measure the AC power output of two solar inverters to integrate them
as energy sources in `Home Assistant <https://www.home-assistant.io/docs/energy/solar-panels/>`__.
For this purpose, :doc:`CT clamp sensors <ct_clamp>` are attached on each of the sensors.
Filters are needed to calibrate the output and cut off the noise of near-zero values.
The ``adc`` and ``cd74hc4067`` sensors updates are triggered by the ``ct_clamp`` sensors and have a very high internal update frequency.
.. code-block:: yaml
cd74hc4067:
pin_s0: D0
pin_s1: D1
pin_s2: D2
pin_s3: D3
sensor:
- platform: adc
id: adc_sensor
pin: A0
update_interval: 3600s
- platform: cd74hc4067
id: solar_1_raw
number: 0
sensor: adc_sensor
update_interval: 3600s
- platform: cd74hc4067
id: solar_2_raw
number: 1
sensor: adc_sensor
update_interval: 3600s
- platform: ct_clamp
name: "SolarPower1"
sensor: solar_1_raw
update_interval: 5s
unit_of_measurement: "W"
device_class: "power"
filters:
- lambda: "return x > 0.001 ? x * 56221 : 0;"
- platform: ct_clamp
name: "SolarPower2"
sensor: solar_2_raw
update_interval: 5s
unit_of_measurement: "W"
device_class: "power"
filters:
- lambda: "return x > 0.001 ? x * 57519 : 0;"
See Also
--------
- :doc:`adc`
- :doc:`ads1115`
- :doc:`ct_clamp`
- :ghedit:`Edit`

View File

@ -0,0 +1,154 @@
Growatt Solar
=============
.. seo::
:description: Instructions for setting up a Growatt inverter reading on modbus.
:image: growatt.jpg
:keywords: Growatt, Ginverter
The ``Growatt Inverter`` sensor platform allows you to use growatt inverter data reading on modbus with ESPHome.
.. figure:: images/growatt.jpg
:align: center
:width: 50.0%
Growatt Logo
The communication with this integration is done over a :ref:`UART bus <uart>` using :ref:`Modbus <modbus>`.
You must therefore have a ``uart:`` entry in your configuration with both the TX and RX pins set
to some pins on your board and the baud rate set to 9600.
.. code-block:: yaml
# Example configuration entry
uart:
- id: uart1
baud_rate: 9600
tx_pin: GPIO1
rx_pin: GPIO3
modbus:
uart_id: uart1
flow_control_pin: GPIO4
sensor:
- platform: growatt_solar
update_interval: 10s
inverter_status:
name: "Growatt Status Code"
phase_a:
voltage:
name: "Growatt Voltage Phase A"
current:
name: "Growatt Current Phase A"
active_power:
name: "Growatt Power Phase A"
phase_b:
voltage:
name: "Growatt Voltage Phase B"
current:
name: "Growatt Current Phase B"
active_power:
name: "Growatt Power Phase B"
phase_c:
voltage:
name: "Growatt Voltage Phase C"
current:
name: "Growatt Current Phase C"
active_power:
name: "Growatt Power Phase C"
pv1:
voltage:
name: "Growatt PV1 Voltage"
current:
name: "Growatt PV1 Current"
active_power:
name: "Growatt PV1 Active Power"
pv2:
voltage:
name: "Growatt PV2 Voltage"
current:
name: "Growatt PV2 Current"
active_power:
name: "Growatt PV2 Active Power"
active_power:
name: "Growatt Grid Active Power"
pv_active_power:
name: "Growatt PV Active Power"
frequency:
name: "Growatt Frequency"
energy_production_day:
name: "Growatt Today's Generation"
total_energy_production:
name: "Growatt Total Energy Production"
inverter_module_temp:
name: "Growatt Inverter Module Temp"
Configuration variables:
------------------------
- **inverter_status** (*Optional*): Status code of the inverter (0: waiting, 1: normal, 3:fault)
- **phase_a** (*Optional*): The group of exposed sensors for Phase A/1.
- **current** (*Optional*): Use the current value of the sensor in amperes. All options from
:ref:`Sensor <config-sensor>`.
- **voltage** (*Optional*): Use the voltage value of the sensor in volts.
All options from :ref:`Sensor <config-sensor>`.
- **active_power** (*Optional*): Use the (active) power value of the sensor in watts. All options
from :ref:`Sensor <config-sensor>`.
- **phase_b** (*Optional*): The group of exposed sensors for Phase B/2 on applicable inverters.
- All options from **phase_a**
- **phase_c** (*Optional*): The group of exposed sensors for Phase C/3 on applicable inverters.
- All options from **phase_a**
- **pv1** (*Optional*): The group of exposed sensors for Photo Voltaic 1.
- **current** (*Optional*): Use the current value of the sensor in amperes. All options from
:ref:`Sensor <config-sensor>`.
- **voltage** (*Optional*): Use the voltage value of the sensor in volts.
All options from :ref:`Sensor <config-sensor>`.
- **active_power** (*Optional*): Use the (active) power value of the sensor in watts. All options
from :ref:`Sensor <config-sensor>`.
- **pv2** (*Optional*): The group of exposed sensors for Photo Voltaic 2.
- All options from **pv1**
- **active_power** (*Optional*): Use the (active) power value for the Grid in watts. All options
from :ref:`Sensor <config-sensor>`.
- **pv_active_power** (*Optional*): Use the (active) power value of PVs in total in watts. All options
from :ref:`Sensor <config-sensor>`.
- **frequency** (*Optional*): Use the frequency value of the sensor in hertz.
All options from :ref:`Sensor <config-sensor>`.
- **energy_production_day** (*Optional*): Use the export active energy value for same day of the
sensor in kilo watt hours. All options from :ref:`Sensor <config-sensor>`.
- **total_energy_production** (*Optional*): Use the total exported energy value of the sensor in
kilo watt hours. All options from :ref:`Sensor <config-sensor>`.
- **inverter_module_temp** (*Optional*): Use the inverter module temperature value of the sensor in
degree celsius. All options from :ref:`Sensor <config-sensor>`.
See Also
--------
- :ref:`sensor-filters`
- :ghedit:`Edit`

Binary file not shown.

After

Width:  |  Height:  |  Size: 289 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 46 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 152 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

View File

@ -0,0 +1,59 @@
INA260 DC Current and Power sensor
==================================
.. seo::
:description: Instructions for setting up INA260 DC current and power sensors
:image: ina260.jpg
:keywords: ina260
The ``ina260`` sensor platform allows you to use your INA260 DC Current and Power Sensor
(`datasheet <https://www.ti.com/lit/ds/symlink/ina260.pdf>`__,
`Adafruit`_) sensors with ESPHome. The :ref:`I²C Bus <i2c>` is
required to be set up in your configuration for this sensor to work.
.. figure:: images/ina260-full.png
:align: center
:width: 65.0%
INA260 DC Current and Power Sensor.
.. _Adafruit: https://www.adafruit.com/product/4226
.. code-block:: yaml
# Example configuration entry
sensor:
- platform: ina260
address: 0x40
current:
name: "INA260 Current"
power:
name: "INA260 Power"
bus_voltage:
name: "INA260 Bus Voltage"
update_interval: 60s
Configuration variables:
------------------------
- **address** (*Optional*, int): Manually specify the I²C address of the sensor. Defaults to ``0x40``.
Defaults to ``0.002ohm``.
- **current** (*Optional*): Use the current value of the sensor in amperes. All options from
:ref:`Sensor <config-sensor>`.
- **power** (*Optional*): Use the power value of the sensor in watts. All options from
:ref:`Sensor <config-sensor>`.
- **bus_voltage** (*Optional*): Use the bus voltage (voltage of the high side contact) value of the sensor in V. All options from :ref:`Sensor <config-sensor>`.
- **update_interval** (*Optional*, :ref:`config-time`): The interval to check the sensor. Defaults to ``60s``.
See Also
--------
- :ref:`sensor-filters`
- :doc:`ina219`
- :doc:`ina226`
- :doc:`ina3221`
- :apiref:`ina260/ina260.h`
- `INA260 Arduino Library <https://github.com/adafruit/Adafruit_INA260>`__
- :ghedit:`Edit`

View File

@ -129,6 +129,11 @@ Filters are processed in the order they are defined in your configuration.
window_size: 5
send_every: 5
send_first_at: 1
- quantile:
window_size: 5
send_every: 5
send_first_at: 1
quantile: .9
- sliding_window_moving_average:
window_size: 15
send_every: 15
@ -232,6 +237,41 @@ degree with a least squares solver.
filters:
- filter_out: 85.0
``quantile``
************
A `simple moving quantile <https://en.wikipedia.org/wiki/Quantile>`__
over the last few values. This can be used to filter outliers from the received sensor data. A large
window size will make the filter slow to react to input changes.
.. code-block:: yaml
# Example configuration entry
- platform: wifi_signal
# ...
filters:
- quantile:
window_size: 7
send_every: 4
send_first_at: 3
quantile: .9
Configuration variables:
- **window_size** (*Optional*, int): The number of values over which to calculate the quantile
when pushing out a value.
Defaults to ``5``.
- **send_every** (*Optional*, int): How often a sensor value should be pushed out. For
example, in above configuration the quantile is calculated after every 4th
received sensor value, over the last 7 received values.
Defaults to ``5``.
- **send_first_at** (*Optional*, int): By default, the very first raw value on boot is immediately
published. With this parameter you can specify when the very first value is to be sent.
Must be smaller than or equal to ``send_every``
Defaults to ``1``.
- **quantile** (*Optional*, float): value from 0 to 1 to determine which quantile to pick.
Defaults to ``.9``.
``median``
**********
@ -344,6 +384,8 @@ Configuration variables:
published. With this parameter you can specify when the very first value is to be sent.
Defaults to ``1``.
.. _sensor-filter-exponential_moving_average:
``exponential_moving_average``
******************************

View File

@ -0,0 +1,61 @@
Kalman filter-based sensor fusion
=================================
.. seo::
:description: Instructions for setting up a kalman_combinator sensor
The ``kalman_combinator`` sensor platform allows you to filter one or several
sensors into one with a reduced error. If using a single sensor as data source,
it acts like a :ref:`sensor-filter-exponential_moving_average` filter. With
multiple sensors, it combines their values based on their respective standard
deviation.
The ``unit_of_measurement``, ``device_class``, ``entity_category``, ``icon``, and
``accuracy_decimals`` properties are by default inherited from the first sensor.
``state_class`` is explicitly not inherited, because ``total_increasing`` states
could still decrease when multiple sensors are used.
.. code-block:: yaml
# Example configuration entry
sensor:
- platform: kalman_combinator
name: "Temperature"
unit_of_measurement: °C
process_std_dev: 0.001
sources:
- source: temperature_sensor_1
error: 1.0
- source: temperature_sensor_2
error: !lambda |-
return 0.5 + std::abs(x - 25) * 0.023
Configuration variables:
------------------------
- **process_std_dev** (**Required**, float): The standard deviation of the
measurement's change per second (e.g. ``1/3600 = 0.000277`` if the
temperature usually changes at most by one Kelvin per hour). A low value here
will place high importance on the current state and be slow to respond to
changes in the measured samples. A high value will update faster, but also be
more noisy.
- **std_dev** (*Optional*, :ref:`Sensor <config-sensor>`): A sensor
that publishes the current standard deviation of the state with each update.
- **sources** (**Required**, list): A list of sensors to use as source. Each
source must have either **error** or **error_function** set. These work like
the **process_std_dev** parameter, with low values marking accurate data.
- **sensor** (**Required**, :ref:`config-id` of a :doc:`/components/sensor/index`): The
sensor that is used as sample source
- **error** (**Required**, float, :ref:`templatable <config-templatable>`): The standard deviation of the
sensor's measurements. If implemented as a template, the measurement is in
parameter ``x``.
- All other options from :ref:`Sensor <config-sensor>`.
See Also
--------
- :ref:`sensor-filters`
- :apiref:`kalman_combinator/kalman_combinator.h`
- :ghedit:`Edit`

View File

@ -0,0 +1,81 @@
MCP3204 4-Channel 12-Bit A/D Converter
======================================
.. seo::
:description: Instructions for setting up MCP3204 12-Bit Analog to Digital Converter in ESPHome.
:keywords: MCP3204
:image: mcp3204.jpg
The Microchip Technology Inc. MCP3204
devices are successive approximation 12-bit Analog-to-Digital (A/D) converters with on-board sample and
hold circuitry.
.. figure:: images/mcp3204.jpg
:align: center
:width: 50.0%
.. _mcp3204-component:
Component/Hub
-------------
The MCP3204 component allows you to use MCP3204 4-Channel 12-Bit A/D Converter
(`datasheet <https://ww1.microchip.com/downloads/en/DeviceDoc/21298e.pdf>`__) in ESPHome.
It uses the :ref:`SPI Bus <spi>` for communication.
Once configured, you can use any of the 4 pins as
sensors for your projects.
Each pin will respond with a voltage calculated off of the ``reference_voltage`` (default is 3.3V).
It calculates the voltage by multiplying the ``reference_voltage * value`` on the pin (basically the percentage of VREF)
Most configurations will set the ``reference_voltage`` = VREF (pin 13 on the chip)
.. code-block:: yaml
# Example configuration entry
mcp3204:
cs_pin: GPIO15
reference_voltage: 3.3V
# Example config of sensors.
# This is a small 1.5v solar panel power rail attached to pin 0
# of the MCP3204
sensor:
- platform: mcp3204 # Attached to pin 0 of the MCP3204.
update_interval: 1s
id: solar_voltage
number: 0 # MCP3204 pin number
Configuration variables:
************************
- **id** (**Required**, :ref:`config-id`): The id to use for this MCP3204 component.
- **cs_pin** (**Required**, :ref:`Pin Schema <config-pin_schema>`): The SPI cable select pin to use.
- **reference_voltage** (*Optional*, float): The reference voltage. Defaults to ``3.3V``.
Sensor
------
The ``mcp3204`` sensor allows you to use your MCP3204 12-Bit A/D Converter sensors with ESPHome.
First, setup a :ref:`MCP3204 Hub <mcp3204-component>` for your MCP3204 sensor and then use this
sensor platform to create individual sensors that will report the voltage to Home Assistant.
Configuration variables:
************************
- **mcp3204_id** (**Required**, :ref:`config-id`): The id of the parent MCP3204 component.
- **name** (**Required**, string): The name of the voltage sensor.
- **number** (**Required**, int): The pin number of the MCP3204
- **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.
- All other options from :ref:`Sensor <config-sensor>`.
See Also
--------
- :ref:`spi`
- :apiref:`mcp3204/mcp3204.h`
- :ghedit:`Edit`

View File

@ -83,6 +83,19 @@ Configuration variables:
the same UART bus. You will need to set the address of each device manually. Defaults to ``1``.
- **modbus_id** (*Optional*, :ref:`config-id`): Manually specify the ID of the Modbus hub.
.. _pzemac-reset_energy_action:
``pzemac.reset_energy`` Action
******************************
This action resets the total energy value of the pzemac device with the given ID when executed.
.. code-block:: yaml
on_...:
then:
- pzemac.reset_energy: pzemac_1
See Also
--------

View File

@ -49,6 +49,8 @@ to some pins on your board and the baud rate set to 9600.
name: "SDM220M Phase Angle"
frequency:
name: "SDM220M Frequency"
total_power:
name: "SDM220M Total Power"
import_active_energy:
name: "SDM220M Import Active Energy"
export_active_energy:
@ -90,6 +92,8 @@ Configuration variables:
- **frequency** (*Optional*): Use the frequency value of the sensor in hertz.
All options from :ref:`Sensor <config-sensor>`.
- **total_power** (*Optional*): Use the total power value of the sensor in watts (W).
All options from :ref:`Sensor <config-sensor>`.
- **import_active_energy** (*Optional*): Use the import active energy value of the sensor in kilowatt
hours (kWh). All options from :ref:`Sensor <config-sensor>`.
- **export_active_energy** (*Optional*): Use the export active energy value of the sensor in kilowatt

View File

@ -218,6 +218,8 @@ Configuration example for ATC MiThermometer firmware set to "Custom" advertiseme
name: "ATC Battery-Level"
battery_voltage:
name: "ATC Battery-Voltage"
signal_strength:
name: "ATC Signal"
Configuration example for PVVX MiThermometer firmware set to "Custom" advertisement:

View File

@ -29,6 +29,17 @@ Configuration variables:
- **output** (**Required**, :ref:`config-id`): The ID of the output component to use.
- **name** (**Required**, string): The name for the switch.
- **id** (*Optional*, :ref:`config-id`): Manually specify the ID used for code generation.
- **restore_mode** (*Optional*): Control how the switch attempts to restore state on bootup.
For restoring on ESP8266s, also see ``esp8266_restore_from_flash`` in the
:doc:`esphome section </components/esphome>`.
- ``RESTORE_DEFAULT_OFF`` (Default) - Attempt to restore state and default to OFF if not possible to restore.
- ``RESTORE_DEFAULT_ON`` - Attempt to restore state and default to ON.
- ``RESTORE_INVERTED_DEFAULT_OFF`` - Attempt to restore state inverted from the previous state and default to OFF.
- ``RESTORE_INVERTED_DEFAULT_ON`` - Attempt to restore state inverted from the previous state and default to ON.
- ``ALWAYS_OFF`` - Always initialize the pin as OFF on bootup.
- ``ALWAYS_ON`` - Always initialize the pin as ON on bootup.
- All other options from :ref:`Switch <config-switch>`.
See Also

View File

@ -67,9 +67,9 @@ author = "Otto Winter"
# built documents.
#
# The short X.Y version.
version = "2021.12"
version = "2022.1"
# The full version, including alpha/beta/rc tags.
release = "2021.12.3"
release = "2022.1.0b1"
# The language for content autogenerated by Sphinx. Refer to documentation
# for a list of supported languages.

View File

@ -381,6 +381,7 @@ All Actions
- :ref:`rf_bridge.learn <rf_bridge-learn_action>`
- :ref:`ds1307.read_time <ds1307-read_time_action>` / :ref:`ds1307.write_time <ds1307-write_time_action>`
- :ref:`cs5460a.restart <cs5460a-restart_action>`
- :ref:`pzemac.reset_energy <pzemac-reset_energy_action>`
- :ref:`number.set <number-set_action>`
.. _config-condition:

View File

@ -40,6 +40,7 @@ Contributors
- `Anders (@ahd71) <https://github.com/ahd71>`__
- `Alexander Pohl (@ahpohl) <https://github.com/ahpohl>`__
- `Airy André (@airy10) <https://github.com/airy10>`__
- `Andrej Friesen (@ajfriesen) <https://github.com/ajfriesen>`__
- `akoivist (@akoivist) <https://github.com/akoivist>`__
- `Andrej Komelj (@akomelj) <https://github.com/akomelj>`__
- `Alex Konradi (@akonradi) <https://github.com/akonradi>`__
@ -71,8 +72,10 @@ Contributors
- `Darius Ratkevičius (@aphex008) <https://github.com/aphex008>`__
- `Andy Allsopp (@arallsopp) <https://github.com/arallsopp>`__
- `arantius (@arantius) <https://github.com/arantius>`__
- `arunderwood (@arunderwood) <https://github.com/arunderwood>`__
- `Ash McKenzie (@ashmckenzie) <https://github.com/ashmckenzie>`__
- `Pavel Pletenev (@ASMfreaK) <https://github.com/ASMfreaK>`__
- `Andreas Soehlke (@asoehlke) <https://github.com/asoehlke>`__
- `Mike Dunston (@atanisoft) <https://github.com/atanisoft>`__
- `Arsène von Wyss (@avonwyss) <https://github.com/avonwyss>`__
- `Achilleas Pipinellis (@axilleas) <https://github.com/axilleas>`__
@ -118,6 +121,7 @@ Contributors
- `Carlos Garcia Saura (@CarlosGS) <https://github.com/CarlosGS>`__
- `Carlos Ruiz (@CarlosRDomin) <https://github.com/CarlosRDomin>`__
- `carstenschroeder (@carstenschroeder) <https://github.com/carstenschroeder>`__
- `Valentin Ochs (@Cat-Ion) <https://github.com/Cat-Ion>`__
- `cbialobos (@cbialobos) <https://github.com/cbialobos>`__
- `Ciprian Constantinescu (@cciprian5) <https://github.com/cciprian5>`__
- `Marco (@cdrfun) <https://github.com/cdrfun>`__
@ -134,9 +138,11 @@ Contributors
- `Conclusio (@Conclusio) <https://github.com/Conclusio>`__
- `John Coggeshall (@coogle) <https://github.com/coogle>`__
- `James Crook (@cooljimy84) <https://github.com/cooljimy84>`__
- `Cooper Dale (@Cooper-Dale) <https://github.com/Cooper-Dale>`__
- `copercini (@copercini) <https://github.com/copercini>`__
- `Corban Mailloux (@corbanmailloux) <https://github.com/corbanmailloux>`__
- `Dmitry Berezovsky (@corvis) <https://github.com/corvis>`__
- `Cougar (@Cougar) <https://github.com/Cougar>`__
- `Connor Prussin (@cprussin) <https://github.com/cprussin>`__
- `cretep (@cretep) <https://github.com/cretep>`__
- `cryptelli (@cryptelli) <https://github.com/cryptelli>`__
@ -145,6 +151,7 @@ Contributors
- `Alex Solomaha (@CyanoFresh) <https://github.com/CyanoFresh>`__
- `Luar Roji (@cyberplant) <https://github.com/cyberplant>`__
- `d-two (@d-two) <https://github.com/d-two>`__
- `d3wy (@d3wy) <https://github.com/d3wy>`__
- `Dale Higgs (@dale3h) <https://github.com/dale3h>`__
- `damanti-me (@damanti-me) <https://github.com/damanti-me>`__
- `Daniel Bjørnbakk (@danibjor) <https://github.com/danibjor>`__
@ -162,6 +169,7 @@ Contributors
- `David Beitey (@davidjb) <https://github.com/davidjb>`__
- `davidmonro (@davidmonro) <https://github.com/davidmonro>`__
- `David Zovko (@davidzovko) <https://github.com/davidzovko>`__
- `David Buezas (@dbuezas) <https://github.com/dbuezas>`__
- `dckiller51 (@dckiller51) <https://github.com/dckiller51>`__
- `Debashish Sahu (@debsahu) <https://github.com/debsahu>`__
- `declanshanaghy (@declanshanaghy) <https://github.com/declanshanaghy>`__
@ -227,6 +235,7 @@ Contributors
- `Evan Petousis (@epetousis) <https://github.com/epetousis>`__
- `Wilhelm Erasmus (@erasmuswill) <https://github.com/erasmuswill>`__
- `erazor666 (@erazor666) <https://github.com/erazor666>`__
- `Eric Coffman (@ericbrian) <https://github.com/ericbrian>`__
- `Eric Hiller (@erichiller) <https://github.com/erichiller>`__
- `Ernst Klamer (@Ernst79) <https://github.com/Ernst79>`__
- `escoand (@escoand) <https://github.com/escoand>`__
@ -256,12 +265,10 @@ Contributors
- `frippe75 (@frippe75) <https://github.com/frippe75>`__
- `Fritz Mueller (@fritzm) <https://github.com/fritzm>`__
- `Marc Egli (@frog32) <https://github.com/frog32>`__
- `frspp (@frspp) <https://github.com/frspp>`__
- `mr G1K (@G1K) <https://github.com/G1K>`__
- `Aljaž Srebrnič (@g5pw) <https://github.com/g5pw>`__
- `Gabe Cook (@gabe565) <https://github.com/gabe565>`__
- `Gareth Cooper (@gaco79) <https://github.com/gaco79>`__
- `galagaking (@galagaking) <https://github.com/galagaking>`__
- `GeekVisit (@GeekVisit) <https://github.com/GeekVisit>`__
- `R Huish (@genestealer) <https://github.com/genestealer>`__
- `Geoff Davis (@geoffdavis) <https://github.com/geoffdavis>`__
@ -278,15 +285,15 @@ Contributors
- `Germán Martín (@gmag11) <https://github.com/gmag11>`__
- `Germain Masse (@gmasse) <https://github.com/gmasse>`__
- `Jelle Raaijmakers (@GMTA) <https://github.com/GMTA>`__
- `Gonzalo Paniagua Javier (@gonzalop) <https://github.com/gonzalop>`__
- `gordon-zhao (@gordon-zhao) <https://github.com/gordon-zhao>`__
- `Gustavo Ambrozio (@gpambrozio) <https://github.com/gpambrozio>`__
- `Antoine GRÉA (@grea09) <https://github.com/grea09>`__
- `George (@grob6000) <https://github.com/grob6000>`__
- `Stefan Grufman (@GruffyPuffy) <https://github.com/GruffyPuffy>`__
- `Andrea (@Guglio95) <https://github.com/Guglio95>`__
- `Guillaume DELVIT (@guiguid) <https://github.com/guiguid>`__
- `guptamp (@guptamp) <https://github.com/guptamp>`__
- `Guyohms (@Guyohms) <https://github.com/Guyohms>`__
- `h0-- (@h0--) <https://github.com/h0-->`__
- `haade (@haade-administrator) <https://github.com/haade-administrator>`__
- `Peter van Dijk (@Habbie) <https://github.com/Habbie>`__
- `Hagai Shatz (@hagai-shatz) <https://github.com/hagai-shatz>`__
@ -301,6 +308,7 @@ Contributors
- `Hermann Kraus (@herm) <https://github.com/herm>`__
- `Tom Cassady (@heytcass) <https://github.com/heytcass>`__
- `Hamish Moffatt (@hmoffatt) <https://github.com/hmoffatt>`__
- `Sebastian Raff (@hobbyquaker) <https://github.com/hobbyquaker>`__
- `MoA (@honomoa) <https://github.com/honomoa>`__
- `Hopperpop (@Hopperpop) <https://github.com/Hopperpop>`__
- `Yang Hau (@HowJMay) <https://github.com/HowJMay>`__
@ -311,7 +319,6 @@ Contributors
- `Arjan Filius (@iafilius) <https://github.com/iafilius>`__
- `Adrián Panella (@ianchi) <https://github.com/ianchi>`__
- `Ian Leeder (@ianleeder) <https://github.com/ianleeder>`__
- `icarome (@icarome) <https://github.com/icarome>`__
- `igg (@igg) <https://github.com/igg>`__
- `Petko Bordjukov (@ignisf) <https://github.com/ignisf>`__
- `ikatkov (@ikatkov) <https://github.com/ikatkov>`__
@ -328,16 +335,15 @@ Contributors
- `James Gao (@jamesgao) <https://github.com/jamesgao>`__
- `János Rusiczki (@janosrusiczki) <https://github.com/janosrusiczki>`__
- `Jan Pieper (@janpieper) <https://github.com/janpieper>`__
- `Jason-nz (@Jason-nz) <https://github.com/Jason-nz>`__
- `Jason2866 (@Jason2866) <https://github.com/Jason2866>`__
- `Jason Hines (@jasonehines) <https://github.com/jasonehines>`__
- `Jas Strong (@jasstrong) <https://github.com/jasstrong>`__
- `JbLb (@jblb) <https://github.com/jblb>`__
- `James Callaghan (@jcallaghan) <https://github.com/jcallaghan>`__
- `Josh Willox (@jcwillox) <https://github.com/jcwillox>`__
- `Joshua Dadswell (@jdads1) <https://github.com/jdads1>`__
- `jddonovan (@jddonovan) <https://github.com/jddonovan>`__
- `jeff-h (@jeff-h) <https://github.com/jeff-h>`__
- `Jeffrey Borg (@jeffborg) <https://github.com/jeffborg>`__
- `Jeff Rescignano (@JeffResc) <https://github.com/JeffResc>`__
- `Jej (@jej) <https://github.com/jej>`__
- `Jérôme Laban (@jeromelaban) <https://github.com/jeromelaban>`__
@ -359,6 +365,7 @@ Contributors
- `Jonathan Treffler (@JonathanTreffler) <https://github.com/JonathanTreffler>`__
- `JonnyaiR (@jonnyair) <https://github.com/jonnyair>`__
- `Joppy (@JoppyFurr) <https://github.com/JoppyFurr>`__
- `Joshua Spence (@joshuaspence) <https://github.com/joshuaspence>`__
- `Joscha Wagner (@jowgn) <https://github.com/jowgn>`__
- `jsuanet (@jsuanet) <https://github.com/jsuanet>`__
- `junnikokuki (@junnikokuki) <https://github.com/junnikokuki>`__
@ -373,21 +380,18 @@ Contributors
- `Kris (@K-r-i-s-t-i-a-n) <https://github.com/K-r-i-s-t-i-a-n>`__
- `Harald Nagel (@k7hpn) <https://github.com/k7hpn>`__
- `kaegi (@kaegi) <https://github.com/kaegi>`__
- `kalebzettl (@kalebzettl) <https://github.com/kalebzettl>`__
- `Karol Zlot (@karolzlot) <https://github.com/karolzlot>`__
- `Krasimir Nedelchev (@kaykayehnn) <https://github.com/kaykayehnn>`__
- `Krzysztof Białek (@kbialek) <https://github.com/kbialek>`__
- `kbouchard111 (@kbouchard111) <https://github.com/kbouchard111>`__
- `Keilin Bickar (@kbickar) <https://github.com/kbickar>`__
- `Keith Burzinski (@kbx81) <https://github.com/kbx81>`__
- `Robert Kiss (@kepten) <https://github.com/kepten>`__
- `Kevin O'Rourke (@kevinior) <https://github.com/kevinior>`__
- `kimonm (@kimonm) <https://github.com/kimonm>`__
- `Ed (@kixtarter) <https://github.com/kixtarter>`__
- `Kurt Kellner (@kkellner) <https://github.com/kkellner>`__
- `Klaas Schoute (@klaasnicolaas) <https://github.com/klaasnicolaas>`__
- `Klarstein (@Klarstein) <https://github.com/Klarstein>`__
- `Marcus Klein (@kleini) <https://github.com/kleini>`__
- `klenaers (@klenaers) <https://github.com/klenaers>`__
- `Kevin Lewis (@kll) <https://github.com/kll>`__
- `Koen Vervloesem (@koenvervloesem) <https://github.com/koenvervloesem>`__
- `Petr Vraník (@konikvranik) <https://github.com/konikvranik>`__
@ -415,6 +419,7 @@ Contributors
- `Lerosen (@Lerosen) <https://github.com/Lerosen>`__
- `Leon Loopik (@Lewn) <https://github.com/Lewn>`__
- `Luca Gugelmann (@lgugelmann) <https://github.com/lgugelmann>`__
- `Lubos Horacek (@lhoracek) <https://github.com/lhoracek>`__
- `Juraj Liso (@LiJu09) <https://github.com/LiJu09>`__
- `Lazar Obradovic (@lobradov) <https://github.com/lobradov>`__
- `Barry Loong (@loongyh) <https://github.com/loongyh>`__
@ -449,6 +454,7 @@ Contributors
- `Martin Hjelmare (@MartinHjelmare) <https://github.com/MartinHjelmare>`__
- `MartinWelsch (@MartinWelsch) <https://github.com/MartinWelsch>`__
- `MasterTim17 (@MasterTim17) <https://github.com/MasterTim17>`__
- `Christopher Masto (@masto) <https://github.com/masto>`__
- `matikij (@matikij) <https://github.com/matikij>`__
- `Michel Marti (@matoxp) <https://github.com/matoxp>`__
- `matt123p (@matt123p) <https://github.com/matt123p>`__
@ -472,6 +478,7 @@ Contributors
- `Michaël Arnauts (@michaelarnauts) <https://github.com/michaelarnauts>`__
- `Pauline Middelink (@middelink) <https://github.com/middelink>`__
- `Mikko Tervala (@MikkoTervala) <https://github.com/MikkoTervala>`__
- `MiKuBB (@MiKuBB) <https://github.com/MiKuBB>`__
- `Minideezel (@minideezel) <https://github.com/minideezel>`__
- `André Klitzing (@misery) <https://github.com/misery>`__
- `Matthew Edwards (@mje-nz) <https://github.com/mje-nz>`__
@ -486,6 +493,7 @@ Contributors
- `Moritz Glöckl (@moritzgloeckl) <https://github.com/moritzgloeckl>`__
- `Matthew Pettitt (@mpettitt) <https://github.com/mpettitt>`__
- `Sam Hughes (@MrEditor97) <https://github.com/MrEditor97>`__
- `Simon Sasburg (@MrHacky) <https://github.com/MrHacky>`__
- `Mariusz Kryński (@mrk-its) <https://github.com/mrk-its>`__
- `Ryan Matthews (@mrrsm) <https://github.com/mrrsm>`__
- `MrZetor (@MrZetor) <https://github.com/MrZetor>`__
@ -494,6 +502,7 @@ Contributors
- `Michiel van Turnhout (@mvturnho) <https://github.com/mvturnho>`__
- `Martin Weinelt (@mweinelt) <https://github.com/mweinelt>`__
- `myhomeiot (@myhomeiot) <https://github.com/myhomeiot>`__
- `Igor Scheller (@MyIgel) <https://github.com/MyIgel>`__
- `Mynasru (@Mynasru) <https://github.com/Mynasru>`__
- `Niels Ulrik Andersen (@myplacedk) <https://github.com/myplacedk>`__
- `Kevin Uhlir (@n0bel) <https://github.com/n0bel>`__
@ -584,6 +593,7 @@ Contributors
- `Richard Kuhnt (@r15ch13) <https://github.com/r15ch13>`__
- `Richard Miles (@r89m) <https://github.com/r89m>`__
- `Pär Stålberg (@rabbadab) <https://github.com/rabbadab>`__
- `Aaron Zhang (@rabbit-aaron) <https://github.com/rabbit-aaron>`__
- `Radim Karniš (@radimkarnis) <https://github.com/radimkarnis>`__
- `Florian Ragwitz (@rafl) <https://github.com/rafl>`__
- `razorback16 (@razorback16) <https://github.com/razorback16>`__
@ -662,6 +672,7 @@ Contributors
- `Samuel Sieb (@ssieb) <https://github.com/ssieb>`__
- `St4n (@St4n) <https://github.com/St4n>`__
- `Stefan (@stefanroelofs) <https://github.com/stefanroelofs>`__
- `stegm (@stegm) <https://github.com/stegm>`__
- `Steve Baxter (@stevebaxter) <https://github.com/stevebaxter>`__
- `sticilface (@sticilface) <https://github.com/sticilface>`__
- `StijnVdd (@StijnVdd) <https://github.com/StijnVdd>`__
@ -670,11 +681,13 @@ Contributors
- `stubs12 (@stubs12) <https://github.com/stubs12>`__
- `Jordan Vohwinkel (@sublime93) <https://github.com/sublime93>`__
- `sveip (@sveip) <https://github.com/sveip>`__
- `Sympatron GmbH (@Sympatron) <https://github.com/Sympatron>`__
- `synco (@synco) <https://github.com/synco>`__
- `Marcel Feix (@Syndlex) <https://github.com/Syndlex>`__
- `Teemu Mikkonen (@T3m3z) <https://github.com/T3m3z>`__
- `Taigar2015 (@Taigar2015) <https://github.com/Taigar2015>`__
- `Levente Tamas (@tamisoft) <https://github.com/tamisoft>`__
- `Aleksandr Oleinikov (@tannisroot) <https://github.com/tannisroot>`__
- `tantive (@tantive) <https://github.com/tantive>`__
- `TBobsin (@TBobsin) <https://github.com/TBobsin>`__
- `Team Super Panda (@teamsuperpanda) <https://github.com/teamsuperpanda>`__
@ -704,6 +717,7 @@ Contributors
- `Tim P (@timpur) <https://github.com/timpur>`__
- `Tim Savage (@timsavage) <https://github.com/timsavage>`__
- `Max Efremov (@Tmin10) <https://github.com/Tmin10>`__
- `Snōwball (@tobias-) <https://github.com/tobias->`__
- `Philipp Tölke (@toelke) <https://github.com/toelke>`__
- `Tom Brien (@TomBrien) <https://github.com/TomBrien>`__
- `TomFahey (@TomFahey) <https://github.com/TomFahey>`__
@ -717,6 +731,7 @@ Contributors
- `Felix Eckhofer (@tribut) <https://github.com/tribut>`__
- `Tobias (@tripplet) <https://github.com/tripplet>`__
- `Troon (@Troon) <https://github.com/Troon>`__
- `Olli Salonen (@trsqr) <https://github.com/trsqr>`__
- `Trevor North (@trvrnrth) <https://github.com/trvrnrth>`__
- `Trygve Laugstøl (@trygvis) <https://github.com/trygvis>`__
- `Gediminas Šaltenis (@trylika) <https://github.com/trylika>`__
@ -762,10 +777,11 @@ Contributors
- `Yuval Aboulafia (@yuvalabou) <https://github.com/yuvalabou>`__
- `ZabojnikM (@ZabojnikM) <https://github.com/ZabojnikM>`__
- `zaluthar (@zaluthar) <https://github.com/zaluthar>`__
- `david reid (@zathras777) <https://github.com/zathras777>`__
- `ZJY (@zhangjingye03) <https://github.com/zhangjingye03>`__
- `San (@zhujunsan) <https://github.com/zhujunsan>`__
- `Zoltant7 (@Zoltant7) <https://github.com/Zoltant7>`__
- `ZTX18 (@ZTX18) <https://github.com/ZTX18>`__
- `Christian Zufferey (@zuzu59) <https://github.com/zuzu59>`__
*This page was last updated December 30, 2021.*
*This page was last updated January 13, 2022.*

BIN
images/bl0940.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 49 KiB

BIN
images/bmp388.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 94 KiB

BIN
images/cd74hc4067.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 119 KiB

BIN
images/growatt.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 46 KiB

BIN
images/ina260.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 28 KiB

BIN
images/mcp3204.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

47
images/mcp47a1.svg Normal file
View File

@ -0,0 +1,47 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
width="117.92471mm"
height="26.178963mm"
viewBox="0 0 117.92471 26.178963"
version="1.1"
id="svg8"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:dc="http://purl.org/dc/elements/1.1/">
<defs
id="defs2" />
<metadata
id="metadata5">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
</cc:Work>
</rdf:RDF>
</metadata>
<g
id="layer1">
<path
style="fill:#000000;fill-opacity:1;stroke-width:0.133497;stroke-miterlimit:4;stroke-dasharray:none"
id="rect833"
width="117.92471"
height="26.178963"
x="0"
y="0"
ry="6.2711163"
d="M 6.2711163,0 H 111.6536 c 3.4742,0 6.27111,2.7969179 6.27111,6.2711163 V 19.907846 c 0,3.474199 -2.79691,6.271117 -6.27111,6.271117 H 6.2711163 C 2.7969179,26.178963 0,23.382045 0,19.907846 V 6.2711163 C 0,2.7969179 2.7969179,0 6.2711163,0 Z" />
<g
aria-label="MCP47A1"
id="text837"
style="font-size:10.5833px;line-height:1.25;letter-spacing:1.08479px;fill:#fffffc;stroke-width:0.264583">
<path
id="path17814"
style="font-weight:bold;font-size:22.5778px;font-family:Montserrat;-inkscape-font-specification:'Montserrat, Bold'"
d="m 33.033203,3.9355469 c -4.651027,0 -7.541015,3.3181235 -7.541015,8.6464841 0,5.305783 2.867878,8.603516 7.451171,8.603516 4.10916,0 6.818284,-2.372085 7.021485,-6.142578 h -3.296875 c -0.225778,2.099736 -1.535031,3.296875 -3.634766,3.296875 -2.619025,0 -4.154297,-2.121068 -4.154297,-5.710938 0,-3.635026 1.603397,-5.8027341 4.267578,-5.8027341 1.964268,0 3.069929,0.9476069 3.521485,2.9570312 h 3.228515 C 39.783595,8.3608016 39.490928,7.4569398 38.791016,6.53125 37.526659,4.8604927 35.494183,3.9355469 33.033203,3.9355469 Z M 6.0957031,4.2070312 V 20.666016 H 9.4824219 V 7.8417969 L 12.441406,20.666016 h 3.386719 L 18.740234,7.8417969 V 20.666016 h 3.386719 V 4.2070312 H 17.023438 L 14.134766,17.300781 11.154297,4.2070312 Z m 37.5039059,0 V 20.666016 h 3.386719 v -5.871094 h 4.222656 c 3.025425,0 4.966797,-2.144814 4.966797,-5.4863282 0,-3.2963589 -1.872861,-5.1015626 -5.304687,-5.1015626 z m 48.140625,0 -5.847656,16.4589848 h 3.453125 l 1.107422,-3.31836 h 6.164063 l 1.082031,3.31836 h 3.478511 L 95.488281,4.2070312 Z M 64.417969,4.6582031 58.570312,14.457031 v 2.664063 h 6.41211 v 3.544922 h 3.162109 v -3.544922 h 1.669922 V 14.501953 H 68.144531 V 4.6582031 Z m 7.904297,0 v 2.8222657 h 7.96875 c -0.970845,1.0385787 -2.889306,3.9517382 -3.521485,5.3515622 -1.106312,2.325513 -1.670631,4.424737 -2.099609,7.833985 h 3.183594 c 0.293511,-5.057428 1.941304,-8.940144 5.734375,-13.5234379 v -2.484375 z m 36.802734,0 c -0.49671,1.8965353 -2.14395,2.8671875 -4.89844,2.8671875 V 9.625 h 3.83789 v 11.041016 h 3.16016 V 4.6582031 Z M 46.986328,7.0292969 h 3.16211 c 1.806224,0 2.640625,0.7901802 2.640624,2.4609375 0,1.6933346 -0.834401,2.4824216 -2.640624,2.4824216 h -3.16211 z m 17.996094,0.6308593 v 6.8417968 h -4.175781 z m 28.5625,0.4296876 2.146484,6.4355472 h -4.291015 z" />
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 3.3 KiB

View File

@ -195,7 +195,9 @@ Analogue
ADC, components/sensor/adc, flash.svg, ESP internal
ADS1115, components/sensor/ads1115, ads1115.jpg, 4-channel ADC
CD74HC4067, components/sensor/cd74hc4067, cd74hc4067.jpg, 16-channel analog multiplexer
MCP3008, components/sensor/mcp3008, mcp3008.jpg, 8-channel ADC
MCP3204, components/sensor/mcp3204, mcp3204.jpg, 4-channel ADC
Resistance, components/sensor/resistance, omega.svg
@ -237,6 +239,7 @@ Electricity
ADE7953, components/sensor/ade7953, ade7953.svg, Power
ATM90E32, components/sensor/atm90e32, atm90e32.jpg, Voltage & Current & Power
BL0940, components/sensor/bl0940, bl0940.png, Voltage & Current & Power
CS5460A, components/sensor/cs5460a, cs5460a.png, Voltage & Current & Power
CSE7761, components/sensor/cse7761, cse7761.svg, Voltage & Current & Power
CSE7766, components/sensor/cse7766, cse7766.svg, Voltage & Current & Power
@ -244,8 +247,9 @@ Electricity
Daly BMS, components/sensor/daly_bms, daly_bms.png, Voltage & Current & Power
DSMR, components/sensor/dsmr, dsmr.svg, Electrical counter
HLW8012, components/sensor/hlw8012, hlw8012.svg, Voltage & Current & Power
INA219, components/sensor/ina219, ina219.jpg, DC current
INA226, components/sensor/ina226, ina226.jpg, DC current & Power
INA219, components/sensor/ina219, ina219.jpg, DC Current
INA226, components/sensor/ina226, ina226.jpg, DC Current & Power
INA260, components/sensor/ina260, ina260.jpg, DC Current & Power
INA3221, components/sensor/ina3221, ina3221.jpg, 3-Ch DC current
PZEM AC, components/sensor/pzemac, pzem-ac.png, Voltage & Current & Power
PZEM DC, components/sensor/pzemdc, pzem-dc.png, Voltage & Current & Power
@ -269,6 +273,7 @@ Environmental
BME680 via BSEC, components/sensor/bme680_bsec, bme680.jpg, Temperature & Humidity & Pressure & Gas
BMP085, components/sensor/bmp085, bmp180.jpg, Temperature & Pressure
BMP280, components/sensor/bmp280, bmp280.jpg, Temperature & Pressure
BMP388 and BMP390, components/sensor/bmp3xx, bmp388.jpg, Temperature & Pressure
b-parasite, components/sensor/b_parasite, b_parasite.jpg, Moisture & Temperature & Humidity & Light
Dallas DS18B20, components/sensor/dallas, dallas.jpg, Temperature
DHT, components/sensor/dht, dht.jpg, Temperature & Humidity
@ -323,6 +328,8 @@ Miscellaneous
b-parasite, components/sensor/b_parasite, b_parasite.jpg, Moisture & Temperature & Humidity & Light
EZO sensor circuits, components/sensor/ezo, ezo-ph-circuit.png, (pH)
Havells Solar, components/sensor/havells_solar, havellsgti5000d_s.jpg, Solar rooftop
Growatt Solar, components/sensor/growatt_solar, growatt.jpg, Solar rooftop
Kalman Combinator, components/sensor/kalman_combinator, function.svg
Modbus Sensor, components/sensor/modbus_controller, modbus.png
Nextion, components/sensor/nextion, nextion.jpg, Sensors from display
Rotary Encoder, components/sensor/rotary_encoder, rotary_encoder.jpg
@ -405,6 +412,7 @@ Output Components
SM16716, components/output/sm16716, sm16716.svg
SM2135, components/output/sm2135, sm2135.svg
MCP4725, components/output/mcp4725, mcp4725.jpg
MCP47A1, components/output/mcp47a1, mcp47a1.svg
BLE Binary Output, components/output/ble_client, bluetooth.svg
Modbus Output, components/output/modbus_controller, modbus.png
Custom Output, components/output/custom, language-cpp.svg
@ -501,7 +509,7 @@ Display Components
ST7920, components/display/st7920, st7920.jpg
ILI9341, components/display/ili9341, ili9341.jpg
Waveshare E-Paper, components/display/waveshare_epaper, waveshare_epaper.jpg
Inkplate 6, components/display/inkplate6, inkplate6.jpg
Inkplate, components/display/inkplate6, inkplate6.jpg
PCD8544 (Nokia 5110/ 3310), components/display/pcd8544, pcd8544.jpg
Cover Components
@ -558,6 +566,7 @@ Number Components
Number Core, components/number/index, folder-open.svg
Modbus Number, components/number/modbus_controller, modbus.png
Template Number, components/number/template, description.svg
Tuya Number, components/number/tuya, tuya.png
Select Components
-----------------