Merge branch 'current' into patch-1

This commit is contained in:
Philippe FOUQUET 2022-10-06 11:02:44 +02:00 committed by GitHub
commit 5389160be9
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
81 changed files with 1984 additions and 161 deletions

View File

@ -20,7 +20,7 @@ jobs:
steps:
-
name: Checkout source code
uses: actions/checkout@v3.0.2
uses: actions/checkout@v3.1.0
-
name: Set up Docker Buildx
uses: docker/setup-buildx-action@v2

View File

@ -19,7 +19,7 @@ jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3.0.2
- uses: actions/checkout@v3.1.0
- name: Set up Python 3.8
uses: actions/setup-python@v4
with:

View File

@ -16,7 +16,7 @@ jobs:
stale:
runs-on: ubuntu-latest
steps:
- uses: actions/stale@v5
- uses: actions/stale@v6
with:
days-before-pr-stale: 60
days-before-pr-close: 7
@ -35,7 +35,7 @@ jobs:
close-issues:
runs-on: ubuntu-latest
steps:
- uses: actions/stale@v5
- uses: actions/stale@v6
with:
days-before-pr-stale: -1
days-before-pr-close: -1

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 = 2022.8.2
PROJECT_NUMBER = 2022.9.3
# 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 = 2022.8.2
ESPHOME_REF = 2022.9.3
.PHONY: html html-strict cleanhtml deploy help live-html Makefile netlify netlify-api api netlify-dependencies svg2png copy-svg2png minify

Binary file not shown.

After

Width:  |  Height:  |  Size: 156 KiB

View File

@ -1 +1 @@
2022.8.2
2022.9.3

View File

@ -63,6 +63,11 @@ Release 2022.8.2 - September 6
- Ignore NaN states in the integration component :esphomepr:`3767` by :ghuser:`anatoly-savchenkov`
- Update modbus_controller.cpp :esphomepr:`3768` by :ghuser:`Avirsaam`
Release 2022.8.3 - September 6
------------------------------
- Fix HA addon auth using HA credentials :esphomepr:`3758` by :ghuser:`jesserockz`
Full list of changes
--------------------

187
changelog/2022.9.0.rst Normal file
View File

@ -0,0 +1,187 @@
ESPHome 2022.9.0 - 21st September 2022
======================================
.. seo::
:description: Changelog for ESPHome 2022.9.0.
:image: /_static/changelog-2022.9.0.png
:author: Jesse Hills
:author_twitter: @jesserockz
.. imgtable::
:columns: 4
DPS310, components/sensor/dps310, dps310.jpg
MCP9600, components/sensor/mcp9600, mcp9600.jpg
TM1621, components/display/tm1621, tm1621.jpg
MPL3115A2, components/sensor/mpl3115a2, mpl3115a2.jpg
uFire EC sensor, components/sensor/ufire_ec, ufire_ec.png
uFire ISE sensor, components/sensor/ufire_ise, ufire_ise.png
Factory Reset Switch, components/switch/factory_reset, restart-alert.svg
Factory Reset Button, components/button/factory_reset, restart-alert.svg
TM1638, components/display/tm1638, tm1638.jpg
BL0942, components/sensor/bl0942, bl0942.png
ESPHome Editor
--------------
The editor used in ESPHome has been swapped out for Monaco thanks to :ghuser:`glmnet`. He has
been working hard to make the experience of writing your YAML configurations easier and it now
supports auto completion with popups to show you more information.
Factory Reset
-------------
A new Factory Reset switch and button has been added this release, allowing resetting of information such
as counters, restored values, and more importantly, the wifi credentials of a device that has been set up
using the captive portal such as pre-flashed devices you would have purchased.
Bluetooth Active Connections
----------------------------
ESPHome 2022.9.3 adds active connections to the ``bluetooth_proxy`` component allowing Home Assistant
to connect to and control supported devices.
Release 2022.9.1 - September 22
-------------------------------
- Revert "fix spi timing issues" :esphomepr:`3838` by :ghuser:`jesserockz`
Release 2022.9.2 - September 29
-------------------------------
- Bump dashboard to 20220925.0 :esphomepr:`3846` by :ghuser:`glmnet`
Release 2022.9.3 - October 6
----------------------------
- Bluetooth Proxy active connections :esphomepr:`3817` by :ghuser:`jesserockz`
Full list of changes
--------------------
New Components
^^^^^^^^^^^^^^
- Add dps310 sensor support :esphomepr:`3704` by :ghuser:`kbx81` (new-integration)
- Support for MCP9600 Thermocouple Amplifier :esphomepr:`3700` by :ghuser:`MrEditor97` (new-integration)
- Add support to tm1621 display :esphomepr:`3737` by :ghuser:`Philippe12` (new-integration)
- u-fire EC sensor :esphomepr:`3774` by :ghuser:`pvizeli` (new-integration)
- Add support for MPL3115A2 Pressure/Altitude and Temperature Sensor :esphomepr:`3371` by :ghuser:`kbickar` (new-integration)
- Add support for BL0942 voltage, current, energy and power Sensor :esphomepr:`3777` by :ghuser:`dbuezas` (new-integration)
- Add Factory Reset button and switch :esphomepr:`3724` by :ghuser:`anatoly-savchenkov` (new-integration)
- Add support for TM1638 Led and Key component :esphomepr:`3340` by :ghuser:`skykingjwc` (new-integration)
- Add uFire ISE sensor :esphomepr:`3789` by :ghuser:`pvizeli` (new-integration)
Beta Changes
^^^^^^^^^^^^
- null initialize total sensor for pulse counter :esphomepr:`3803` by :ghuser:`RoboMagus`
- Sim800l add calls, multiline sms and ussd :esphomepr:`3630` by :ghuser:`glmnet`
- Unify 'nullptr' initalization of class members; :esphomepr:`3805` by :ghuser:`RoboMagus`
- Initialize all child sensors to nullptr :esphomepr:`3808` by :ghuser:`jesserockz`
- Remove floating point calculation from ac_dimmer ISR :esphomepr:`3770` by :ghuser:`Azimath`
- split pronto codes if they are too long :esphomepr:`3812` by :ghuser:`ssieb`
- [BME280] raise standby time :esphomepr:`3804` by :ghuser:`h3ndrik`
- Make sprinkler reset_resume() method public :esphomepr:`3824` by :ghuser:`kbx81`
- Bump dashboard to 20220919.1 :esphomepr:`3828` by :ghuser:`balloob`
- Fix-esphome-validation-line-number :esphomepr:`3815` by :ghuser:`glmnet`
- Bump dashboard to 20220920.0 :esphomepr:`3831` by :ghuser:`balloob`
- Bump dashboard to 20220920.1 :esphomepr:`3834` by :ghuser:`glmnet`
All changes
^^^^^^^^^^^
- support modifying the apds9960 settings :esphomepr:`3708` by :ghuser:`ssieb`
- Add support for pvvx mithermometer display via ble client :esphomepr:`3333` by :ghuser:`puuu`
- Improve OTA error messages adding return codes :esphomepr:`3698` by :ghuser:`IgnacioHR`
- Send CR also for commands for sim800l :esphomepr:`3719` by :ghuser:`ssieb`
- hydreon_rgxx: Support lens_bad, em_sat and temperature :esphomepr:`3642` by :ghuser:`functionpointer`
- wifi: support 802.11k and 802.11v :esphomepr:`3600` by :ghuser:`stintel`
- Add final validate for i2c with mix/max frequency :esphomepr:`3727` by :ghuser:`jesserockz`
- Add dps310 sensor support :esphomepr:`3704` by :ghuser:`kbx81` (new-integration)
- Let favicon be cached :esphomepr:`3729` by :ghuser:`slovdahl`
- Add bitmap font support :esphomepr:`3573` by :ghuser:`justfalter`
- add log messages for bad pronto codes :esphomepr:`3738` by :ghuser:`ssieb`
- add color compare operator's :esphomepr:`3730` by :ghuser:`nielsnl68`
- Support for MCP9600 Thermocouple Amplifier :esphomepr:`3700` by :ghuser:`MrEditor97` (new-integration)
- Support high update rates and fix several bugs in the cse7766 component. :esphomepr:`3675` by :ghuser:`fhriley`
- Add Prometheus metrics relabeling :esphomepr:`3734` by :ghuser:`jangrewe`
- mcp23017: read output latch registers during setup :esphomepr:`3744` by :ghuser:`andyboeh`
- Captive portal show nearby WiFi with no ssid configured :esphomepr:`3748` by :ghuser:`anatoly-savchenkov`
- Remove unnecessary schema extension on template button :esphomepr:`3753` by :ghuser:`jesserockz`
- Tidy up switch schemas :esphomepr:`3754` by :ghuser:`jesserockz`
- Add IP101 support to Ethernet component :esphomepr:`3751` by :ghuser:`kbx81`
- Add BedJet Fan child component :esphomepr:`3735` by :ghuser:`jhansche`
- ibeacon support for the ble_rssi sensor :esphomepr:`3745` by :ghuser:`wjtje`
- Add AEHA IR Protocol :esphomepr:`3726` by :ghuser:`hazi`
- Add sum type to binary_sensor_map :esphomepr:`3541` by :ghuser:`fbrthld`
- Bump aioesphomeapi from 10.11.0 to 10.13.0 :esphomepr:`3740` by :ghuser:`dependabot[bot]`
- Bump pylint from 2.14.5 to 2.15.0 :esphomepr:`3746` by :ghuser:`dependabot[bot]`
- Esp32 pulsecounter optional pcnt :esphomepr:`3691` by :ghuser:`RoboMagus`
- Bump black from 22.6.0 to 22.8.0 :esphomepr:`3760` by :ghuser:`dependabot[bot]`
- Various ili9341 fixes :esphomepr:`3756` by :ghuser:`nielsnl68`
- Add the same docker tags as used in HA :esphomepr:`3752` by :ghuser:`andrey-yantsen`
- Bump pytest from 7.1.1 to 7.1.3 :esphomepr:`3766` by :ghuser:`dependabot[bot]`
- Remove unneeded line (spi component adds it) :esphomepr:`3778` by :ghuser:`jesserockz`
- Move crc16 to helpers :esphomepr:`3780` by :ghuser:`jesserockz`
- YAML linting :esphomepr:`3779` by :ghuser:`jesserockz`
- Add support to tm1621 display :esphomepr:`3737` by :ghuser:`Philippe12` (new-integration)
- u-fire EC sensor :esphomepr:`3774` by :ghuser:`pvizeli` (new-integration)
- Add support for MPL3115A2 Pressure/Altitude and Temperature Sensor :esphomepr:`3371` by :ghuser:`kbickar` (new-integration)
- Add support for BL0942 voltage, current, energy and power Sensor :esphomepr:`3777` by :ghuser:`dbuezas` (new-integration)
- Bump pylint from 2.15.0 to 2.15.2 :esphomepr:`3785` by :ghuser:`dependabot[bot]`
- Add Factory Reset button and switch :esphomepr:`3724` by :ghuser:`anatoly-savchenkov` (new-integration)
- [MPU6050] Support devices with WHOAMI 0x98 :esphomepr:`3784` by :ghuser:`CarlosGS`
- Bump zeroconf from 0.39.0 to 0.39.1 :esphomepr:`3782` by :ghuser:`dependabot[bot]`
- Add support for TM1638 Led and Key component :esphomepr:`3340` by :ghuser:`skykingjwc` (new-integration)
- Remove status_set_error from ufire_ec :esphomepr:`3792` by :ghuser:`pvizeli`
- Bump frenck/action-yamllint from 1.2.0 to 1.3.0 :esphomepr:`3798` by :ghuser:`dependabot[bot]`
- esp32_ble_tracker continuous and one shot scanning modes :esphomepr:`3649` by :ghuser:`jonofmac`
- Add stop action for ble scanning :esphomepr:`3799` by :ghuser:`jesserockz`
- Add Prometheus Service Discovery for online devices :esphomepr:`3788` by :ghuser:`cznewt`
- Allow ble tracker to subscribe to ota start and stop the scanning :esphomepr:`3800` by :ghuser:`jesserockz`
- Add uFire ISE sensor :esphomepr:`3789` by :ghuser:`pvizeli` (new-integration)
- fix spi timing issues :esphomepr:`3763` by :ghuser:`IgnacioHR`
- null initialize total sensor for pulse counter :esphomepr:`3803` by :ghuser:`RoboMagus`
- Sim800l add calls, multiline sms and ussd :esphomepr:`3630` by :ghuser:`glmnet`
- Unify 'nullptr' initalization of class members; :esphomepr:`3805` by :ghuser:`RoboMagus`
- Initialize all child sensors to nullptr :esphomepr:`3808` by :ghuser:`jesserockz`
- Remove floating point calculation from ac_dimmer ISR :esphomepr:`3770` by :ghuser:`Azimath`
- split pronto codes if they are too long :esphomepr:`3812` by :ghuser:`ssieb`
- [BME280] raise standby time :esphomepr:`3804` by :ghuser:`h3ndrik`
- Make sprinkler reset_resume() method public :esphomepr:`3824` by :ghuser:`kbx81`
- Bump dashboard to 20220919.1 :esphomepr:`3828` by :ghuser:`balloob`
- Fix-esphome-validation-line-number :esphomepr:`3815` by :ghuser:`glmnet`
- Bump dashboard to 20220920.0 :esphomepr:`3831` by :ghuser:`balloob`
- Bump dashboard to 20220920.1 :esphomepr:`3834` by :ghuser:`glmnet`
Past Changelogs
---------------
- :doc:`2022.8.0`
- :doc:`2022.6.0`
- :doc:`2022.5.0`
- :doc:`2022.4.0`
- :doc:`2022.3.0`
- :doc:`2022.2.0`
- :doc:`2022.1.0`
- :doc:`2021.12.0`
- :doc:`2021.11.0`
- :doc:`2021.10.0`
- :doc:`2021.9.0`
- :doc:`2021.8.0`
- :doc:`v1.20.0`
- :doc:`v1.19.0`
- :doc:`v1.18.0`
- :doc:`v1.17.0`
- :doc:`v1.16.0`
- :doc:`v1.15.0`
- :doc:`v1.14.0`
- :doc:`v1.13.0`
- :doc:`v1.12.0`
- :doc:`v1.11.0`
- :doc:`v1.10.0`
- :doc:`v1.9.0`
- :doc:`v1.8.0`
- :doc:`v1.7.0`

View File

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

View File

@ -40,7 +40,23 @@ Configuration variables:
- **too_cold** (*Optional*): ``true`` if the sensor reports being too cold. Hydreon only mentions this feature for the RG-9.
- **name** (**Required**, string): The name for the voltage sensor.
- **name** (**Required**, string): The name for the sensor.
- **id** (*Optional*, :ref:`config-id`): Set the ID of this sensor for use in lambdas.
- All other options from :ref:`Binary Sensor <config-binary_sensor>`.
- **lens_bad** (*Optional*): ``true`` if the sensor reports the lens being bad.
- **name** (**Required**, string): The name for the sensor.
- **id** (*Optional*, :ref:`config-id`): Set the ID of this sensor for use in lambdas.
- All other options from :ref:`Binary Sensor <config-binary_sensor>`.
- **em_sat** (*Optional*): ``true`` if the sensor reports the Emitter being saturated.
- **name** (**Required**, string): The name for the sensor.
- **id** (*Optional*, :ref:`config-id`): Set the ID of this sensor for use in lambdas.

View File

@ -5,7 +5,7 @@ Bluetooth Proxy
:description: Instructions for setting up the Bluetooth Proxy in ESPHome.
:image: bluetooth.svg
Home Assistant can expand it's Bluetooth reach by communicating through
Home Assistant can expand its Bluetooth reach by communicating through
the Bluetooth proxy component in ESPHome. Place your ESPHome devices close to the
Bluetooth devices that you want to interact with for the best
experience.
@ -14,15 +14,32 @@ If you're looking to create a device that is just a Bluetooth Proxy, see our `Bl
The Bluetooth proxy depends on :doc:`esp32_ble_tracker` so make sure to add that to your configuration.
.. note::
Bluetooth proxy requires Home Assistant 2022.9 or later.
.. note::
The Bluetooth proxy of ESPHome currently only provides Home Assistant with passive sensor
data that is advertised by certain devices. Not all devices are supported and ESPHome does not decode or keep a list.
To find out if your device is supported, please search for it in the `Home Assistant Integrations <https://www.home-assistant.io/integrations/>`__ list.
The Individual device integrations in Home Assistant (such as BTHome) will receive the data from the Bluetooth Integration in Home Assistant
which automatically aggregates all ESPHome bluetooth proxies with any USB Bluetooth Adapters you might have.
Configuration:
--------------
.. code-block::
bluetooth_proxy:
No configuration variables.
- **active** (*Optional*, boolean): Enables proxying active connections. Defaults to ``false``. Requires Home Assistant 2022.10 or later.
See Also
--------
- :doc:`esp32_ble_tracker`
- :apiref:`bluetooth_proxy/bluetooth_proxy.h`
- BTHome `<https://bthome.io/>`__
- :ghedit:`Edit`

View File

@ -0,0 +1,51 @@
Factory Reset Button
====================
.. seo::
:description: Instructions for setting up buttons that can remotely invalidate all ESPHome preferences stored in flash and reboot ESP.
:image: restart.svg
The ``factory_reset`` button allows you to remotely invalidate (reset) all ESPHome :ref:`preferences <preferences-flash_write_interval>` stored in flash memory and reboot your node.
After reboot all states, parameters and variables will be reinitialized with their default values. This is useful:
- for devices preflashed with ESPHome to reset behavior back to factory state
- in case of moving a device to a new environment or starting a new use-case (e.g. reset counters or state)
- for privacy concerns when giving away a device
.. note::
**USE WITH GREAT CAUTION!** All credentials, global variables, counters and saved states stored in non-volatile memory will be lost with no chance of recovering them.
Even raw reading of flash memory with ``esptool`` will not help, since data is physically erased from flash memory.
For devices configured using :doc:`captive portal </components/captive_portal>`, this will reset WiFi settings as well, thus making such devices offline.
You'll need to be in close proximity to your device to configure it again using a built-in WiFi access point and captive portal.
.. figure:: images/factory-rst-ui.png
:align: center
:width: 80.0%
.. code-block:: yaml
# Example configuration entry
button:
- platform: factory_reset
name: Restart with Factory Default Settings
Configuration variables:
------------------------
- **name** (**Required**, string): The name of 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:`safe_mode`
- :doc:`/components/switch/factory_reset`
- :doc:`template`
- :apiref:`factory_reset/factory_reset_button.h`
- :ghedit:`Edit`

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.4 KiB

View File

@ -25,6 +25,9 @@ Configuration variables:
See Also
--------
- :doc:`shutdown`
- :doc:`safe_mode`
- :doc:`factory_reset`
- :doc:`/components/switch/restart`
- :doc:`template`
- :apiref:`restart/button/restart_button.h`

View File

@ -33,6 +33,8 @@ See Also
- :doc:`shutdown`
- :doc:`restart`
- :doc:`factory_reset`
- :doc:`/components/switch/safe_mode`
- :doc:`template`
- :apiref:`safe_mode/safe_mode_button.h`
- :ghedit:`Edit`

View File

@ -32,6 +32,9 @@ See Also
--------
- :doc:`restart`
- :doc:`safe_mode`
- :doc:`factory_reset`
- :doc:`/components/switch/shutdown`
- :doc:`template`
- :apiref:`shutdown/shutdown_button.h`
- :ghedit:`Edit`

View File

@ -68,6 +68,31 @@ From :ref:`lambdas <config-lambda>`, you can call methods to do some advanced st
- lambda: |-
id(bedjet_1).upgrade_firmware();
- ``.send_local_time``: If `time_id` is set, attempt to sync the clock now.
.. code-block:: yaml
button:
- platform: template
name: "Sync Clock"
on_press:
then:
- lambda: |-
id(my_bedjet_fan).send_local_time();
- ``.set_clock``: Set the BedJet clock to a specified time; works with or without a `time_id`.
.. code-block:: yaml
button:
- platform: template
name: "Set Clock to 10:10pm"
on_press:
then:
- lambda: |-
id(my_bedjet_fan).set_clock(22, 10);
``bedjet`` Climate
------------------
@ -97,29 +122,30 @@ Configuration variables:
- All other options from :ref:`Climate <config-climate>`.
- ``.send_local_time``: If ``time_id`` is set, attempt to sync the clock now.
``bedjet`` Fan
--------------
.. code-block:: yaml
The `fan` platform exposes the BedJet's fan-related functionality, including
on/off and speed control.
button:
- platform: template
name: "Sync Clock"
on_press:
then:
- lambda: |-
id(my_bedjet_fan).send_local_time();
When the BedJet is already on, turning the Fan component off will set the BedJet unit's mode to
``OFF``. If it was not already on, it will be turned on to mode ``FAN_ONLY``.
- ``.set_clock``: Set the BedJet clock to a specified time; works with or without a ``time_id``.
.. code-block:: yaml
.. code-block:: yaml
fan:
- platform: bedjet
id: my_bedjet_fan_entity
name: "My BedJet Fan"
bedjet_id: bedjet_1
button:
- platform: template
name: "Set Clock to 10:10pm"
on_press:
then:
- lambda: |-
id(my_bedjet_fan).set_clock(22, 10);
Configuration variables:
************************
- **id** (*Optional*, :ref:`config-id`): Manually specify the ID used for code generation.
- **name** (**Required**, string): The name of the fan device.
- **bedjet_id** (**Required**, :ref:`config-id`): The ID of the Bedjet component.
- Other options from :ref:`Fan <config-fan>`.
Known issues:
-------------

View File

@ -27,9 +27,9 @@ All climate platforms in ESPHome inherit from the climate configuration schema.
climate:
- platform: ...
visual:
min_temperature: 18 °C
max_temperature: 25 °C
temperature_step: 0.1 °C
min_temperature: 18
max_temperature: 25
temperature_step: 0.1
Configuration variables:

View File

@ -180,9 +180,9 @@ than ``off``. If this option is not configured, you'll need to manually change
the front end (Home Assistant), an ESPHome action, automation, or from within a lambda elsewhere in your
device's configuration.
- **default_target_temperature_low** (*Optional*, *Deprecated*, float): The default low target
- **default_target_temperature_low** (*Optional*, float): The default low target
temperature for the control algorithm. This can be dynamically set in the frontend later.
- **default_target_temperature_high** (*Optional*, *Deprecated*, float): The default high target
- **default_target_temperature_high** (*Optional*, float): The default high target
temperature for the control algorithm. This can be dynamically set in the frontend later.
**At least one of** ``default_target_temperature_low`` **and** ``default_target_temperature_high``
@ -190,9 +190,9 @@ device's configuration.
.. note::
**default_mode**, **default_target_temperature_low**, and **default_target_temperature_high** are
deprecated and will be removed in a future release. You should migrate your configuration to using
a :ref:`preset <thermostat-preset>` which allows for more flexibility and customisation
**default_mode**, **default_target_temperature_low**, and **default_target_temperature_high** are
being removed in a future release. In the future you will need to migrate your configuration to using
a :ref:`preset <thermostat-preset>` which will allow for more flexibility and customisation
Note that ``min_temperature`` and ``max_temperature`` from the base climate component are used to define
the range of allowed temperature values in the thermostat component. See :doc:`/components/climate/index`.

View File

@ -68,7 +68,7 @@ Movement Sensors
If movement feedback is available, the cover no longer operates in *optimistic mode* (assuming that movement starts
as soon as an action is triggered) and can also react to commands issued to cover from an external control and still
keep states in sync (useful for "smartization" of and existing cover).
keep states in sync (useful for "smartization" of an existing cover).
When there are no specific endstop sensors, and if the cover has builtin endstops and no external control logic,
these movement sensors can optionally be use to infer the endstop state.
@ -198,7 +198,7 @@ Most options can be left untouched, but some modifications are needed:
id: open_binary_sensor
sensor_id: open_current_sensor
threshold: 0.5
filter:
filters:
- delayed_off: 0.8s
- platform: analog_threshold
id: open_obstacle_binary_sensor

View File

@ -200,7 +200,7 @@ Lambdas
From :ref:`lambdas <config-lambda>`, you can access the current state of the cover (note that these
fields are read-only, if you want to act on the cover, use the ``make_call()`` method as shown above).
- ``position``: Retrieve the current position of the cover, as a value between ``0.0`` (open) and ``1.0`` (closed).
- ``position``: Retrieve the current position of the cover, as a value between ``0.0`` (closed) and ``1.0`` (open).
.. code-block:: cpp

View File

@ -64,6 +64,13 @@ Configuration variables:
The stop button on the UI is always enabled even when the cover is stopped and each press
on the button will cause the ``stop_action`` to be performed.
.. note::
The state of the cover can be restored from flash after a node reboot, with
``esp8266_restore_from_flash: true`` option set.
See :doc:`esp8266_restore_from_flash </components/esphome>` for details.
See Also
--------

Binary file not shown.

After

Width:  |  Height:  |  Size: 426 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 68 KiB

View File

@ -149,10 +149,11 @@ Fonts
The rendering engine also has a powerful font drawer which integrates seamlessly into ESPHome.
Whereas in most Arduino display projects you have to use one of a few pre-defined fonts in very
specific sizes, with ESPHome you have the option to use **any** TrueType (``.ttf``) font file
at **any** size! Granted the reason for it is actually not having to worry about the licensing of font files :)
at **any** size, as well as fixed-size `PCF <https://en.wikipedia.org/wiki/Portable_Compiled_Format>`_ and `BDF <https://en.wikipedia.org/wiki/Glyph_Bitmap_Distribution_Format>`_ bitmap fonts! Granted the reason for it is
actually not having to worry about the licensing of font files :)
To use fonts you first have to define a font object in your ESPHome configuration file. Just grab
a ``.ttf`` file from somewhere on the internet and place it, for example,
a ``.ttf``, ``.pcf``, or ``.bdf`` file from somewhere on the internet and place it, for example,
inside a ``fonts`` folder next to your configuration file.
Next, create a ``font:`` section in your configuration:
@ -169,12 +170,15 @@ Next, create a ``font:`` section in your configuration:
id: roboto
size: 20
- file: "fonts/tom-thumb.bdf"
id: tomthumb
display:
# ...
Configuration variables:
- **file** (**Required**): The path (relative to where the .yaml file is) of the TrueType font
- **file** (**Required**): The path (relative to where the .yaml file is) of the font
file. You can use the ``gfonts://`` short form to use Google Fonts, or use the below structure:
- **type** (**Required**, string): Can be ``gfonts`` or ``local``.
@ -200,12 +204,13 @@ Configuration variables:
**Local Fonts**:
- **path** (**Required**, string): The path (relative to where the .yaml file is) of the TrueType font file.
- **path** (**Required**, string): The path (relative to where the .yaml file is) of the TrueType or bitmap font file.
- **id** (**Required**, :ref:`config-id`): The ID with which you will be able to reference the font later
in your display code.
- **size** (*Optional*, int): The size of the font in pt (not pixel!).
If you want to use the same font in different sizes, create two font objects. Defaults to ``20``.
If you want to use the same font in different sizes, create two font objects. Note: *size* is ignored
by bitmap fonts. Defaults to ``20``.
- **glyphs** (*Optional*, list): A list of characters you plan to use. Only the characters you specify
here will be compiled into the binary. Adjust this if you need some special characters or want to
reduce the size of the binary if you don't plan to use some glyphs. The items in the list can also
@ -216,7 +221,7 @@ Configuration variables:
.. note::
To use fonts you will need to have the python ``pillow`` package installed, as ESPHome uses that package
to translate the TrueType files into an internal format. If you're running this as a Home Assistant
to translate the TrueType and bitmap font files into an internal format. If you're running this as a Home Assistant
add-on or with the official ESPHome docker image, it should already be installed. Otherwise you need
to install it using
``pip install pillow``.

View File

@ -21,7 +21,7 @@ CS to your set ``cs_pin`` and finally GND to GND.
You can even daisy-chain multiple MAX7219s by connecting the DOUT of the previous chip in the chain to the
next DIN. With more than ~3 chips the 3.3V will probably not be enough, so then you will have to potentially
use a logic level converted.
use a logic level converter.
.. code-block:: yaml

View File

@ -0,0 +1,234 @@
PVVX MiThermometer Display
==========================
.. seo::
:description: Instructions for setting up BLE devices with PVVX MiThermometer custom firmware as displays.
:image: /components/sensor/images/xiaomi_lywsd03mmc.jpg
The ``pvvx_mithermometer`` display platform allows you to use devices running the `ATC_MiThermometer firmware <https://github.com/pvvx/ATC_MiThermometer>`__ by pvvx as display drivers with ESPHome.
.. figure:: /components/sensor/images/xiaomi_lywsd03mmc.jpg
:align: center
:width: 75.0%
Xiaomi LYWSD03MMC.
The data to be displayed is transmitted as external data via BLE.
To do this, a ``ble_client`` component must be set up.
This component can also synchronize the time of the pvvx device by transmitting a timestamp on each connection.
After the data has been transmitted, the BLE connection is terminated in order to be able to receive the advertising data required for the ``pvvx_mithermometer`` sensor platform.
The pvvx firmware refreshes the screen periodically (can be set as minimum LCD refresh rate in the firmware configuration).
By default, the internal sensor data and, if available and valid (``validity_period``), the external data are switched every 2.5 s.
Further firmware configuration makes it possible to activate other display modes such as time and battery status.
The firmware configuration can be changed via browser using `TelinkMiFlasher.html <https://pvvx.github.io/ATC_MiThermometer/TelinkMiFlasher.html>`__.
.. code-block:: yaml
# Example configuration entry
esp32_ble_tracker:
ble_client:
- mac_address: "A4:C1:38:B1:CD:7F"
id: pvvx_ble_display
display:
- platform: pvvx_mithermometer
ble_client_id: pvvx_ble_display
lambda: |-
it.print_bignum(23.1);
it.print_unit(pvvx_mithermometer::UNIT_DEG_C);
it.print_smallnum(33);
it.print_percent(true);
it.print_happy(true);
it.print_bracket(true);
Configuration variables:
------------------------
- **ble_client_id** (**Required**, :ref:`config-id`): ID of the associated BLE client.
- **time_id** (*Optional*, :ref:`config-id`): ID of a :doc:`/components/time` component. If set, the time will be synchronized with every connection.
- **disconnect_delay** (*Optional*, :ref:`config-time`): The amount of time the BLE connection is maintained before being disconnected again. Defaults to ``5s``.
- **update_interval** (*Optional*, :ref:`config-time`): The interval to transmit the display data. Defaults to ``60s``.
- **validity_period** (*Optional*, :ref:`config-time`): The time periode for which the pvvx device should display the information. Defaults to ``5min``.
- **lambda** (*Optional*, :ref:`lambda <config-lambda>`): The lambda to use to define the information to be displayed.
See :ref:`display-pvvx_mithermometer_lambda` for more information.
- **auto_clear_enabled** (*Optional*, boolean): Whether to automatically clear the display data before each lambda call,
or to keep the existing display content (must overwrite explicitly, e.g., only on data change). Defaults to ``true``.
- **id** (*Optional*, :ref:`config-id`): Manually specify the ID used for code generation.
.. _display-pvvx_mithermometer_lambda:
Rendering Lambda
----------------
The ``pvvx_mithermometer`` displays can only show two numbers with optional units and a smiley face. Therefore, the API is tailord to these limitations.
In the lambda you're passed a variable called ``it`` as with all other displays. In this case however, ``it`` is a ``PVVXDisplay`` instance (see API Reference).
.. code-block:: yaml
display:
- platform: pvvx_mithermometer
# ...
lambda: |-
// Print -2.1 as big number (first row)
it.print_bignum(-2.1);
// Print °C next to the big number
it.print_unit(pvvx_mithermometer::UNIT_DEG_C);
// Print 88 as small number (second row)
it.print_smallnum(88);
// Print % next to the small number
it.print_percent(true);
// Print the low battery symbol
it.print_battery(true);
// Print a happy smiley. Results in " ^_^ "
it.print_happy(true);
// Print a sad smiley. Results in " -∧- "
it.print_sad(true);
// The comination of happy and sad simley results in " Δ△Δ "
// Print round brackets around the simley
it.print_bracket(true);
// The final result is "(Δ△Δ)"
Valid values for the big number (``it.print_bignum()``) are from -99.5 to 1999.5. Smaller values are displayed as ``Lo``, larger ones as ``Hi``. It will be printed to the screen. If not defined, a 0 will be displayed.
Valid values for the small number (``it.print_smallnum()``) are from -9 to 99. Smaller values are displayed as ``Lo``, larger ones as ``Hi``. If not defined, a 0 will be displayed.
Possible values for the unit of the big number (``it.print_unit()``) are:
- ``pvvx_mithermometer::UNIT_NONE``: do not show a unit
- ``pvvx_mithermometer::UNIT_DEG_GHE``: show ``°Г``
- ``pvvx_mithermometer::UNIT_MINUS``: show ``-``
- ``pvvx_mithermometer::UNIT_DEG_F``: show ``°F``
- ``pvvx_mithermometer::UNIT_LOWDASH``: show ``_``
- ``pvvx_mithermometer::UNIT_DEG_C``: show ``°C``
- ``pvvx_mithermometer::UNIT_LINES``: show ``=``
- ``pvvx_mithermometer::UNIT_DEG_E``: show ``°E``
The appearance of the smiley can be defined by combining the functions ``it.print_happy()``, ``it.print_sad()`` and ``it.print_bracket(true)``:
=================== =============== ================= ==========
``print_bracket()`` ``print_sad()`` ``print_happy()`` result
=================== =============== ================= ==========
false false false
false false true ``^_^``
false true false ``-∧-``
false true true ``Δ△Δ``
true false false ``( )``
true false true ``(^_^)``
true true false ``(-∧-)``
true true true ``(Δ△Δ)``
=================== =============== ================= ==========
Display states of other sensors
*******************************
The following example display the sensor states of a MiFlora sensor on a pvvx display. The time is also synchronized.
.. code-block:: yaml
time:
- platform: homeassistant
id: homeassistant_time
esp32_ble_tracker:
ble_client:
- mac_address: "A4:C1:38:B1:CD:7F"
id: pvvx_ble_display
sensor:
- platform: pvvx_mithermometer
mac_address: "A4:C1:38:B1:CD:7F"
temperature:
name: "PVVX Temperature"
humidity:
name: "PVVX Humidity"
battery_level:
name: "PVVX Battery-Level"
battery_voltage:
name: "PVVX Battery-Voltage"
- platform: xiaomi_hhccjcy01
mac_address: '94:2B:FF:5C:91:61'
temperature:
name: "Xiaomi HHCCJCY01 Temperature"
id: miflora_temperature
moisture:
name: "Xiaomi HHCCJCY01 Moisture"
id: miflora_moisture
illuminance:
name: "Xiaomi HHCCJCY01 Illuminance"
conductivity:
name: "Xiaomi HHCCJCY01 Soil Conductivity"
display:
- platform: pvvx_mithermometer
ble_client_id: pvvx_ble_display
update_interval: 10min
validity_period: 15min
time_id: homeassistant_time
lambda: |-
double temp = id(miflora_temperature).state;
double moisture = id(miflora_moisture).state;
it.print_bignum(temp);
it.print_unit(pvvx_mithermometer::UNIT_DEG_C);
it.print_smallnum(moisture);
it.print_percent();
if (temp < 5 || temp > 30 || moisture < 10 || moisture > 50) {
it.print_sad();
} else {
it.print_happy();
}
Only synchronize the time once a day
************************************
The following example will synchronized the time of the pvvx device once a day.
.. code-block:: yaml
time:
- platform: homeassistant
id: homeassistant_time
esp32_ble_tracker:
ble_client:
- mac_address: "A4:C1:38:B1:CD:7F"
id: pvvx_ble_display
sensor:
- platform: pvvx_mithermometer
mac_address: "A4:C1:38:B1:CD:7F"
temperature:
name: "PVVX Temperature"
humidity:
name: "PVVX Humidity"
battery_level:
name: "PVVX Battery-Level"
battery_voltage:
name: "PVVX Battery-Voltage"
display:
- platform: pvvx_mithermometer
ble_client_id: pvvx_ble_display
update_interval: 24h
validity_period: 0s
time_id: homeassistant_time
See Also
--------
- :doc:`index`
- :doc:`/components/ble_client`
- :doc:`/components/sensor/xiaomi_ble`
- :apiref:`pvvx_mithermometer/display/pvvx_display.h`
- `ATC_MiThermometer firmware <https://github.com/pvvx/ATC_MiThermometer>`__ by `pvvx <https://github.com/pvvx>`__
- :ghedit:`Edit`

View File

@ -0,0 +1,92 @@
TM1621 LCD Display
========================
.. seo::
:description: Instructions for setting up TM1621 LCD Display.
:image: tm1621.jpg
The ``tm1621`` display platform allows you to use the popular TM1621 LCD display drivers with ESPHome, that can find in Sonoff device like THR316D, THR320D, POWR316D or POWR320D
.. figure:: images/tm1621-full.jpg
:align: center
:width: 75.0%
TM1621 LCD Display.
The LCD have four signal, ``cs`` for chip select, ``data`` for data signal, ``read`` for reading data dir and ``write`` for writing data dir
.. code-block:: yaml
# Example configuration entry
display:
platform: tm1621
id: tm1621_display
cs_pin: GPIO17
data_pin: GPIO5
read_pin: GPIO23
write_pin: GPIO18
lambda: |-
it.printf(0, "%.1f", id(my_sensor1).state);
it.display_celsius(true);
it.printf(1, "%.1f", id(my_sensor2).state);
it.display_humidity(true);
Configuration variables:
------------------------
- **cs_pin** (**Required**, :ref:`Pin Schema <config-pin_schema>`): The pin you have the CS line.
- **data_pin** (**Required**, :ref:`Pin Schema <config-pin_schema>`): The pin you have the DATA line.
- **read_pin** (**Required**, :ref:`Pin Schema <config-pin_schema>`): The pin you have the READ line.
- **write_pin** (**Required**, :ref:`Pin Schema <config-pin_schema>`): The pin you have the WRITE line.
- **lambda** (*Optional*, :ref:`lambda <config-lambda>`): The lambda to use for rendering the content on the TM1621.
See :ref:`display-tm1621_lambda` for more information.
- **update_interval** (*Optional*, :ref:`config-time`): The interval to re-draw the screen. Defaults to ``1s``.
- **id** (*Optional*, :ref:`config-id`): Manually specify the ID used for code generation.
.. _display-tm1621_lambda:
Rendering Lambda
----------------
The TM1621 has a similar API to the fully fledged :ref:`display-engine`, but it's only a subset as the TM1621
LCD displays don't have a concept of individual pixels. In the lambda you're passed a variable called ``it``
as with all other displays. In this case however, ``it`` is a TM1621 instance (see API Reference).
The most basic operation with the TM1621 is wiring a simple number to the screen as in the configuration example
at the top of this page. But even though you're passing in a string (here ``"0123"``), ESPHome converts it
into a representation that the TM1621 can understand.
Each of the three methods (``print`` and ``printf``) all optionally take a the line number (0 for first line and 1 for the second).
This argument is ``0`` by default.
Also note that the ``.`` (dot) character is special because when ESPHome encounters it in the string the dot
segment of the previous position will be enabled.
.. code-block:: yaml
display:
- platform: tm1621
# ...
lambda: |-
it.printf(0, "%.1f", id(my_sensor1).state);
it.display_celsius(true);
it.printf(1, "%.1f", id(my_sensor2).state);
it.display_humidity(true);
Please see :ref:`display-printf` for a quick introduction into the ``printf`` formatting rules.
Also we have five function to display or not some unites:
- °C on the first line : ``display_celsius(bool)``
- °F on the first line : ``display_fahrenheit(bool)``
- %HR on the second line : ``display_humidity(bool)``
- V on the first line and A on the second line : ``display_voltage(bool)``
- kW/h on the first line and W on the second line : ``display_kwh(bool)``
See Also
--------
- :doc:`index`
- :apiref:`tm1621/tm1621.h`
- :ghedit:`Edit`

View File

@ -0,0 +1,188 @@
TM1638 7 Segment Display Keypad & LED Module
============================================
.. seo::
:description: Instructions for setting up TM1638 7 Segment Display Keypad & LED Module
:image: tm1638.jpg
The ``tm1638`` display platform allows you to use the popular TM1638 7 Segment Display Keypad & LED Module with ESPHome.
.. figure:: images/tm1638-full.jpg
:align: center
:width: 75.0%
TM1638 8-Segment Display Keypad & LED Module.
The module can be powered with 5v DC. To display the colon punctuation use the
``.`` in the colon place. (See clock example below)
.. code-block:: yaml
# Example configuration entry
display:
platform: tm1638
id: tm1638_display
stb_pin: 5
clk_pin: 18
dio_pin: 23
intensity: 5
update_interval: 5s
lambda: |-
it.print("0123");
Configuration variables:
------------------------
- **stb_pin** (**Required**, :ref:`Pin Schema <config-pin_schema>`): The pin you have the STB line hooked up to.
- **clk_pin** (**Required**, :ref:`Pin Schema <config-pin_schema>`): The pin you have the CLK line hooked up to.
- **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 TM1638 should drive the outputs. Range is from
0 (least intense) to 7 (the default). This setting will affect the 7 segment display and the 8 individual LED lights.
- **lambda** (*Optional*, :ref:`lambda <config-lambda>`): The lambda to use for rendering the content on the TM1638.
See :ref:`display-tm1638_lambda` for more information.
- **update_interval** (*Optional*, :ref:`config-time`): The interval to re-draw the screen. Defaults to ``1s``.
- **id** (*Optional*, :ref:`config-id`): Manually specify the ID used for code generation.
.. _display-tm1638_lambda:
Rendering Lambda
----------------
The TM1638 has a similar API to the fully fledged :ref:`display-engine`, but it's only a subset as the TM1638
7-segment Display Keypad & LED Module does not have a concept of individual pixels. In the lambda you're passed a variable called ``it``
as with all other displays. In this case however, ``it`` is a TM1638 instance (see API Reference).
The most basic operation with the TM1638 is writing a simple number to the screen as in the configuration example
at the top of this page. But even though you're passing in a string (here ``"0123"``), ESPHome converts it
into a representation that the TM1638 can understand: The exact pixels that should be turned on. And of course,
not all characters can be represented. You can see a full list of characters :ref:`at the MAX7219 docs <display-max7219_characters>`.
Each of the three methods (``print``, ``printf`` and ``strftime``) all optionally take a position argument at the
beginning which can be used to print the text at a specific position. This argument is ``0`` by default which
means the first character of the first TM1638. For example to start the first character of your text at
the end of the TM1638, you would write ``it.print(3, "0");``.
Also note that the ``.`` (dot) character is special because when ESPHome encounters it in the string the dot
segment of the previous position will be enabled.
.. code-block:: yaml
display:
- platform: tm1638
# ...
lambda: |-
// Print 0 at position 0 (left)
it.print("0");
// Result: "0 "
// Print 1 at position 1 (second character)
it.print(1, "1");
// Result: "01 "
// Let's write a sensor value (let's assume it's 42.1)
it.printf(0, "%.1f", id(my_sensor).state);
// Result: "42.1 " (the dot will appear on the "2" segment)
// Overwrite the previous content with blank
it.print(" ");
// Print a right-padded sensor value with 0 digits after the decimal
it.printf("S%3.0f", id(my_sensor).state);
// Result: "S 42"
// Print the current time
it.strftime("%H.%M");
// Result for 10:06:42 -> "10:06" on a display with : and "10.06" on a display with .
Please see :ref:`display-printf` for a quick introduction into the ``printf`` formatting rules and
:ref:`display-strftime` for an introduction into the ``strftime`` time formatting.
Creating a digital clock
************************
The following example creates a typical digital clock with the ``:`` colon flashing every second.
.. code-block:: yaml
time:
- platform: homeassistant
id: homeassistant_time
display:
platform: tm1638
clk_pin: 18
dio_pin: 23
stb_pin: 5
update_interval: 500ms
lambda: |-
static int i = 0;
i++;
if ((i % 2) == 0)
it.strftime("%H.%M", id(homeassistant_time).now());
else
it.strftime("%H%M", id(homeassistant_time).now());
LEDs
----------------
The TM1638 7 Segment Display Keypad & LED Module has 8 LED lights across the top or middle of the display, depending on the board. These LEDs can be exposed as :doc:`switches </components/switch/index>` or :doc:`outputs </components/output/index>` with the led property set between 0 and 7. The board has the LEDs labelled 1-8, but the leds use zero based addressing. The LED labelled "1" is LED 0 in the configuration.
.. code-block:: yaml
switch:
- platform: tm1638
id: TM1638Led1
led: 0
output:
- platform: tm1638
id: TM1638Led2
led: 1
Buttons
----------------
The TM1638 7 Segment Display Keypad & LED Module has 8 buttons across the top or middle of the display, depending on the board. These buttons are exposed as binary sensor components with the key property set between 0 and 7, They can be accessed via the binary sensor component configuration. As with the LEDs the buttons are labeled 1-8 on the board, but use zero based addressing. Therefore the button labelled "1" is key 0 in the configuration. See :doc:`/components/binary_sensor/index`
.. code-block:: yaml
binary_sensor:
- platform: tm1638
name: "TM1638 Button 1"
id: TM1638Button1
key: 0
filters:
- delayed_on: 10ms
on_press:
then:
- switch.turn_on: TM1638Led1
on_release:
then:
- switch.turn_off: TM1638Led1
- platform: tm1638
name: "TM1638 Button 2"
id: TM1638Button2
key: 1
filters:
- delayed_on: 10ms
on_press:
then:
- output.turn_on: TM1638Led2
on_release:
then:
- output.turn_off: TM1638Led2
See Also
--------
- :doc:`index`
- :doc:`/components/switch/index`
- :doc:`/components/binary_sensor/index`
- :apiref:`tm1638/tm1638.h`
- :ghedit:`Edit`

View File

@ -72,7 +72,10 @@ Configuration variables:
impact on the device but can be used to debug the BLE stack. Defaults to ``5min``.
- **active** (*Optional*, boolean): Whether to actively send scan requests to request more data
after having received an advertising packet. With some devices this is necessary to receive all data,
but also drains those devices' power a (tiny) bit more. Defaults to ``true``.
but also drains those devices' power a bit more. Some devices don't need this, in that case
you can save power and RF pollution by setting it to ``false``. Defaults to ``true``.
- **continuous** (*Optional*, boolean): Whether to scan continuously (forever) or to only scan when
asked to start a scan (with start_scan action). Defaults to ``true``.
- **id** (*Optional*, :ref:`config-id`): Manually specify the ID for this ESP32 BLE Hub.
@ -86,14 +89,17 @@ Automations:
- **on_ble_service_data_advertise** (*Optional*, :ref:`Automation <automation>`): An automation to
perform when a Bluetooth advertising with service data is received. See
:ref:`esp32_ble_tracker-on_ble_service_data_advertise`.
- **on_scan_end** (*Optional*, :ref:`Automation <automation>`): An automation to perform when
a BLE scan has completed (the duration of the scan). This works with continuous set to true or false.
ESP32 Bluetooth Low Energy Tracker Automation
---------------------------------------------
.. _esp32_ble_tracker-on_ble_advertise:
``on_ble_advertise``
********************
``on_ble_advertise`` Trigger
************************************************
This automation will be triggered when a Bluetooth advertising is received. A variable ``x`` of type
:apiclass:`esp32_ble_tracker::ESPBTDevice` is passed to the automation for use in lambdas.
@ -128,8 +134,8 @@ Configuration variables:
.. _esp32_ble_tracker-on_ble_manufacturer_data_advertise:
``on_ble_manufacturer_data_advertise``
**************************************
``on_ble_manufacturer_data_advertise`` Trigger
************************************************
This automation will be triggered when a Bluetooth advertising with manufcaturer data is received. A
variable ``x`` of type ``std::vector<uint8_t>`` is passed to the automation for use in lambdas.
@ -159,8 +165,8 @@ Configuration variables:
.. _esp32_ble_tracker-on_ble_service_data_advertise:
``on_ble_service_data_advertise``
*********************************
``on_ble_service_data_advertise`` Trigger
************************************************
This automation will be triggered when a Bluetooth advertising with service data is received. A
variable ``x`` of type ``std::vector<uint8_t>`` is passed to the automation for use in lambdas.
@ -185,10 +191,82 @@ Configuration variables:
- **service_uuid** (**Required**, string): 16 bit, 32 bit, or 128 bit BLE Service UUID.
- See :ref:`Automation <automation>`.
``on_scan_end`` Trigger
************************************************
This automation will be triggered when a Bluetooth scanning sequence has completed. If running
with continuous set to true, this will trigger every time the scan completes (the duration of
a scan).
.. code-block:: yaml
esp32_ble_tracker:
on_scan_end:
- then:
- lambda: |-
ESP_LOGD("ble_auto", "The scan has ended!");
Configuration variables:
- None
- See :ref:`Automation <automation>`.
``esp32_ble_tracker.start_scan`` Action
************************************************
Start a Bluetooth scan. If there is a scan already in progress, then the action is ignored.
.. code-block:: yaml
esp32_ble_tracker:
scan_parameters:
continuous: false
on_...:
- esp32_ble_tracker.start_scan:
Configuration variables:
- **continuous** (*Optional*, boolean): Whether to start the scan in continuous mode. Defaults to ``false``
.. note::
This action can also be written in :ref:`lambdas <config-lambda>`:
.. code-block:: yaml
esp32_ble_tracker:
id: ble_tracker_id
.. code-block:: cpp
id(ble_tracker_id).start_scan()
``esp32_ble_tracker.stop_scan`` Action
************************************************
Stops the bluetooth scanning. It can be started again with the above start scan action.
.. code-block:: yaml
esp32_ble_tracker:
on_...:
- esp32_ble_tracker.stop_scan:
See Also
--------
- :doc:`binary_sensor/ble_presence`
- :doc:`text_sensor/ble_scanner`
- :doc:`sensor/ble_rssi`
- :doc:`sensor/b_parasite`
- :doc:`sensor/xiaomi_ble`
- :doc:`sensor/xiaomi_miscale`
- :doc:`sensor/inkbird_ibsth1_mini`
- :doc:`sensor/mopeka_pro_check`
- :doc:`sensor/ruuvitag`
- :doc:`ble_client`
- :doc:`bluetooth_proxy`
- :apiref:`esp32_ble_tracker/esp32_ble_tracker.h`
- `ESP32 BLE for Arduino <https://github.com/nkolban/ESP32_BLE_Arduino>`__ by `Neil Kolban <https://github.com/nkolban>`__.
- :ghedit:`Edit`

View File

@ -6,9 +6,11 @@ Ethernet Component
:image: ethernet.svg
:keywords: Ethernet, ESP32
This core ESPHome component sets up ethernet connections for ESP32s.
This ESPHome component enables *wired* Ethernet connections for ESP32s.
Ethernet for ESP8266 is not supported.
This component can't be used in same time than Wifi one, even if your ESP32 has both wired.
This component and the Wi-Fi component may **not** be used simultaneously, even if both are physically available.
.. code-block:: yaml
@ -29,24 +31,23 @@ This component can't be used in same time than Wifi one, even if your ESP32 has
Configuration variables:
------------------------
- **type** (**Required**, string): The type of LAN chipset. Must be one of
``LAN8720`` or ``TLK110`` (see datasheet for more details).
- **type** (**Required**, string): The type of LAN chipset/phy. Must be one of
``LAN8720``, ``TLK110`` or ``IP101`` (see datasheet for more details).
- **mdc_pin** (**Required**, :ref:`config-pin`): The MDC pin of the board.
Usually this is ``GPIO23``.
- **mdio_pin** (**Required**, :ref:`config-pin`): The MDIO pin of the board.
Usually this is ``GPIO18``.
- **clk_mode** (*Optional*, string): The clock mode of the data lines, this must be one
of these values: (see datasheet of your board for more details)
- **clk_mode** (*Optional*, string): The clock mode of the data lines. See your board's
datasheet for more details. Must be one of the following values:
- ``GPIO0_IN`` (Default) - External clock
- ``GPIO0_OUT`` - Internal clock
- ``GPIO16_OUT`` - Internal clock
- ``GPIO17_OUT`` - Internal clock
- **phy_addr** (*Optional*, int): The PHY addr type of the ethernet controller. Defaults to 0.
- **power_pin** (*Optional*, :ref:`Pin Schema <config-pin_schema>`): The pin with which
to control the power of the board. Leave unspecified for no power pin (default)
- **phy_addr** (*Optional*, int): The PHY addr type of the Ethernet controller. Defaults to 0.
- **power_pin** (*Optional*, :ref:`Pin Schema <config-pin_schema>`): The pin controlling the
power/reset status of the Ethernet controller. Leave unspecified for no power pin (default).
- **manual_ip** (*Optional*): Manually configure the static IP of the node.
- **static_ip** (**Required**, IPv4 address): The static IP of your node.
@ -66,9 +67,10 @@ Configuration variables:
.. note::
If your ethernet board is not designed with an ESP32 built in, chances are that you are going
to use flying leads, dupont wires, etc. to connect the ethernet to the ESP32. This is
probably to fail as the ethernet interface uses a high frequency clock signal. For more
If your Ethernet board is not designed with an ESP32 built in, it's common to attempt
to use flying leads, dupont wires, etc. to connect the Ethernet controller to the ESP32.
This approach is likely to fail, however, as the Ethernet interface uses a high frequency
clock signal that will not travel reliably over these types of connections. For more
information and wiring details refer to the link in the *See also* section.
Configuration for Olimex ESP32-POE
@ -151,7 +153,7 @@ Configuration for OpenHacks LAN8720
program properly.
Configuration for wESP32 board (up to rev.6)
-------------------------------------------------
--------------------------------------------
.. code-block:: yaml
@ -167,6 +169,19 @@ Configuration for wESP32 board (up to rev.6)
Revision 7 and upwards of the wESP32 board does not have a LAN8720 chip. Until support for the
replacement RTL8201 is included in ESPHome, the wESP board rev.7 will not work with the above configuration.
Configuration for ESP32-Ethernet-Kit board
------------------------------------------
.. code-block:: yaml
ethernet:
type: IP101
mdc_pin: GPIO23
mdio_pin: GPIO18
clk_mode: GPIO0_IN
phy_addr: 1
power_pin: GPIO5
See Also
--------

View File

@ -290,6 +290,21 @@ You have to download the server CA certficiate in PEM format and add it to ``cer
Usually these are .crt files and you can open them with any text editor.
Also make sure to change the ``port`` of the mqtt broker. Most brokers use port 8883 for TLS connections.
.. warning::
MbedTLS, the library that handles TLS for the esp-idf, doesn't validate wildcard certificates.
The Common Name check only works if the CN is explicitly reported in the certificate.
- \*.example.com -> Fail
- mqtt.example.com -> Success
If a secure connection is necessary for your device, you really want to set:
.. code-block:: yaml
skip_cert_cn_check: false
.. code-block:: yaml
mqtt:
@ -298,6 +313,7 @@ Also make sure to change the ``port`` of the mqtt broker. Most brokers use port
discovery: true
discovery_prefix: ${mqtt_prefix}/homeassistant
log_topic: ${mqtt_prefix}/logs
# Evaluate carefully skip_cert_cn_check
skip_cert_cn_check: true
idf_send_async: false
certificate_authority: |

View File

@ -177,6 +177,9 @@ enum. These values are:
Updating the password:
----------------------
Changing an existing password:
******************************
Since the password is used both for compiling and uploading the regular ``esphome <file> run``
won't work of course. This issue can be worked around by executing the operations separately
through an ``on_boot`` trigger:
@ -191,6 +194,12 @@ through an ``on_boot`` trigger:
password: "Old password"
id: my_ota
Adding a password:
******************
If OTA is already enabled without a password, simply add a ``password:`` line to the existing
``ota:`` config block.
See Also
--------

View File

@ -29,6 +29,7 @@ Configuration variables:
- **id** (*Optional*, :ref:`config-id`): Manually specify the ID used for code generation.
- **include_internal** (*Optional*, boolean): Whether ``internal`` entities should be displayed on the
web interface. Defaults to ``false``.
- **relabel** (*Optional*): Override metric labels. See :ref:`prometheus-relabel`
.. note::
@ -41,6 +42,32 @@ Configuration variables:
static_configs:
- targets: [<ip or node_name.local>]
Metric Relabeling
-----------------
ESPHome allows you to do some basic relabeling of Prometheus metrics.
This is useful if you want to have different metric names or IDs than those shown in Home Assistant or the web interface.
You can relabel metric name or ID labels by adding a ``relabel`` block in the ``prometheus`` configuration,
and then adding a block with ``id`` and/or ``name`` fields for each sensor whose labels your want to override.
.. _prometheus-relabel:
``relabel``
***********
Set the the ``id`` and ``name`` label values of the Prometheus metric for the sensor with the specified ID.
.. code-block:: yaml
# Example configuration entry
prometheus:
relabel:
my_voltage_sensor:
id: angry_pixies
name: "Angry Pixies"
See Also
--------

View File

@ -30,6 +30,7 @@ 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:
- **aeha**: Decode and dump AEHA infrared codes.
- **coolix**: Decode and dump Coolix infrared codes.
- **dish**: Decode and dump Dish infrared codes.
- **jvc**: Decode and dump JVC infrared codes.
@ -65,6 +66,9 @@ Configuration variables:
Automations:
- **on_aeha** (*Optional*, :ref:`Automation <automation>`): An automation to perform when a
AEHA remote code has been decoded. A variable ``x`` of type :apiclass:`remote_base::AEHAData`
is passed to the automation for use in lambdas.
- **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.
@ -164,6 +168,12 @@ Configuration variables:
Remote code selection (exactly one of these has to be included):
- **aeha**: Trigger on a decoded AEHA remote code with the given data.
- **address** (**Required**, int): The address to trigger on, see dumper output for more info.
- **data** (**Required**, 3-35 bytes list): The code to listen for, see :ref:`remote_transmitter-transmit_aeha`
for more info. Usually you only need to copy this directly from the dumper output.
- **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.

View File

@ -78,6 +78,27 @@ Configuration variables:
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_aeha:
``remote_transmitter.transmit_aeha`` Action
*********************************************
This :ref:`action <config-action>` sends a AEHA code to a remote transmitter.
.. code-block:: yaml
on_...:
- remote_transmitter.transmit_aeha:
address: 0x1FEF
data: [0x1F, 0x3E, 0x06, 0x5F]
Configuration variables:
- **address** (**Required**, int): The address to send the command to, see dumper output for more details.
- **data** (**Required**, list): The command to send, A length of 2-35 bytes can be specified for one packet.
AEHA refers to the Association for Electric Home Appliances in Japan, a format used by Panasonic and many other companies.
.. _remote_transmitter-transmit_coolix:
``remote_transmitter.transmit_coolix`` Action

View File

@ -54,6 +54,12 @@ Base Configuration:
- **address** (*Optional*, int): The I²C address of the sensor. Defaults to ``0x39``.
- **update_interval** (*Optional*, :ref:`config-time`): The interval
to check the sensor. Defaults to ``60s``.
- **led_drive** (*Optional*, int): The LED drive level in mA. One of 100mA, 50mA, 25mA, 12.5mA. Defaults to ``100mA``.
- **proximity_gain** (*Optional*, int): The proximity gain level. One of 1x, 2x, 4x, 8x. Defaults to ``4x``.
- **ambient_light_gain** (*Optional*, int): The ambient light gain level. One of 1x, 4x, 16x, 64x. Defaults to ``4x``.
- **gesture_led_drive** (*Optional*, int): The gesture LED drive level in mA. One of 100mA, 50mA, 25mA, 12.5mA. Defaults to ``100mA``.
- **gesture_gain** (*Optional*, int): The proximity gain level. One of 1x, 2x, 4x, 8x. Defaults to ``4x``.
- **gesture_wait_time** (*Optional*, int): The gesture wait time in ms. One of 0ms, 2.8ms, 5.6ms, 8.4ms, 14ms, 22.4ms, 30.8ms, 39.2ms. Defaults to ``2.8ms``.
Sensor
------

View File

@ -13,7 +13,7 @@ This sensor is **mostly used for touch** devices but could be used for any ``bin
Add your binary sensors as ``channels`` to the binary sensor map. The binary sensor map then publishes a value depending
on the type of the binary sensor map and the values specified with each channel.
This platform currently supports only one measurement type: ``GROUP``, but others might get added later.
This platform currently supports two measurement types: ``GROUP`` and ``SUM``, and others might get added later.
You need to specify which type of mapping you want with the ``type:`` configuration value:
- ``GROUP`` Each channel has its own value. The sensor publishes the average value of all active
@ -47,6 +47,45 @@ You need to specify which type of mapping you want with the ``type:`` configurat
channel: 0
id: touchkey0
# ...
- ``SUM`` Each channel has its own value. The sensor publishes the sum of all active
binary sensors values.
.. code-block:: yaml
# Example configuration entry
sensor:
- platform: binary_sensor_map
id: group_0
name: 'Group Map 0'
type: sum
channels:
- binary_sensor: bit0
value: 1
- binary_sensor: bit1
value: 2
- binary_sensor: bit2
value: 4
- binary_sensor: bit3
value: 8
binary_sensor:
- platform: gpio
pin: 4
id: bit0
- platform: gpio
pin: 5
id: bit1
- platform: gpio
pin: 6
id: bit2
- platform: gpio
pin: 7
id: bit3
# ...
Configuration variables:
------------------------

View File

@ -0,0 +1,68 @@
Belling BL0942 Energy Monitor
==================================
.. seo::
:description: Instructions for setting up BL0942 power monitors.
:image: bl0942.png
:keywords: BL0942, Aubess, Mini Smart Switch With Energy Monitor
The ``bl0942`` sensor platform allows you to use BL0942 energy monitors sensors with
ESPHome. These are used in some Tuya-devices (e.g. Aubess Tuya WiFi Mini Smart Switch With Energy Monitor)
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: bl0942
uart_id: uart_bus
voltage:
name: 'BL0942 Voltage'
current:
name: 'BL0942 Current'
power:
name: 'BL0942 Power'
filters:
multiply: -1
energy:
name: 'BL0942 Energy'
frequency:
name: "BL0942 Frequency"
accuracy_decimals: 2
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. Note that some power meters will report this in negative values (probably wired backwards), so you may want to use a filter to multiply it by -1. 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>`.
- **frequency** (*Optional*): The frequency value of the sensor in Hertz. All options from
:ref:`Sensor <config-sensor>`.
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:`bl0942/bl0942.h`
- :ghedit:`Edit`

View File

@ -24,6 +24,10 @@ instructions for setting up this platform.
- platform: ble_rssi
service_uuid: '11aa'
name: "BLE Test Service 16 bit RSSI value"
# RSSI based on iBeacon UUID
- platform: ble_rssi
ibeacon_uuid: '68586f1e-89c2-11eb-8dcd-0242ac130003'
name: "BLE Test Service iBeacon RSSI value"
.. note::
@ -35,10 +39,18 @@ Configuration variables:
- **name** (**Required**, string): The name of the sensor.
- **mac_address** (*Optional*, MAC Address): The MAC address to track for this
sensor. Either this or ''service_uuid'' has to be present.
sensor. Note that exactly one of ``mac_address``, ``service_uuid`` or ``ibeacon_uuid`` must be present.
- **service_uuid** (*Optional*, 16 bit, 32 bit, or 128 bit BLE Service UUID): The BLE
Service UUID which can be tracked if the device randomizes the MAC address. Either
this or ''mac_address'' has to be present.
Service UUID which can be tracked if the device randomizes the MAC address. Note that exactly one of
``mac_address``, ``service_uuid`` or ``ibeacon_uuid`` must be present.
- **ibeacon_uuid** (*Optional*, string): The `universally unique identifier <https://en.wikipedia.org/wiki/Universally_unique_identifier>`__
to identify the beacon that needs to be tracked. Note that exactly one of ``mac_address``,
``service_uuid`` or ``ibeacon_uuid`` must be present.
- **ibeacon_major** (*Optional*, int): The iBeacon major identifier of the beacon that needs
to be tracked. Usually used to group beacons, for example for grouping all beacons in the
same building.
- **ibeacon_minor** (*Optional*, int): The iBeacon minor identifier of the beacon that needs
to be tracked. Usually used to identify beacons within an iBeacon group.
- **id** (*Optional*, :ref:`config-id`): Manually specify the ID used for code generation.
- All other options from :ref:`Sensor <config-sensor>`.

View File

@ -0,0 +1,61 @@
DPS310 Atmospheric Pressure Sensor
==================================
.. seo::
:description: Instructions for setting up DPS310 atmospheric pressure sensors
:image: dps310.jpg
:keywords: DPS310
The ``dps310`` sensor platform allows you to use both the temperature and pressure sensors on
your DPS310 atmospheric pressure sensor (`Adafruit <https://www.adafruit.com/product/4494>`__)
with ESPHome. The :ref:`I²C <i2c>` component is required to be set up in your configuration.
.. figure:: images/dps310-full.jpg
:align: center
:width: 50.0%
DPS310 Atmospheric Pressure Sensor board from `Adafruit <https://www.adafruit.com/product/4494>`__
.. code-block:: yaml
# Example configuration entry
sensor:
- platform: dps310
temperature:
name: "Outside Temperature"
pressure:
name: "Outside Pressure"
address: 0x77
update_interval: 60s
Configuration variables:
------------------------
- **pressure** (**Required**): The information for the pressure sensor.
- **name** (**Required**, string): The name for the pressure sensor.
- **id** (*Optional*, :ref:`config-id`): Set the ID of this sensor for use in lambdas.
- All other options from :ref:`Sensor <config-sensor>`.
- **temperature** (**Required**): The information for the temperature.
sensor
- **name** (**Required**, string): The name for the temperature
sensor.
- **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``.
- **update_interval** (*Optional*, :ref:`config-time`): The interval to check the
sensor. Defaults to ``60s``.
See Also
--------
- :ref:`sensor-filters`
- :doc:`bmp280`
- :doc:`bme680`
- :doc:`bmp085`
- :apiref:`dps310/dps310.h`
- :ghedit:`Edit`

View File

@ -38,6 +38,8 @@ required to be set up in your configuration for this sensor to work.
- platform: hydreon_rgxx
too_cold:
name: "too cold"
lens_bad:
name: "lens bad"
.. code-block:: yaml
@ -99,6 +101,12 @@ Configuration variables:
- **id** (*Optional*, :ref:`config-id`): Set the ID of this sensor for use in lambdas.
- All other options from :ref:`Sensor <config-sensor>`.
- **temperature** (*Optional*): Temperature +-5°C. Only on RG-9 Version 1.100 or later.
- **name** (**Required**, string): The name for the sensor.
- **id** (*Optional*, :ref:`config-id`): Set the ID of this sensor for use in lambdas.
- All other options from :ref:`Sensor <config-sensor>`.
- **update_interval** (*Optional*, :ref:`config-time`): The interval to check the sensor. Defaults to ``60s``.

Binary file not shown.

After

Width:  |  Height:  |  Size: 399 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 168 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 48 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 73 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 64 KiB

View File

@ -0,0 +1,69 @@
MCP9600 Thermocouple Amplifier
===========================================
.. seo::
:description: Instructions for setting up the MCP9600 thermocouple amplifier
:image: mcp9600.jpg
:keywords: MCP9600
The ``mcp9600`` sensor platform allows you to use your MCP9600 and MCP9601
(`datasheet <https://cdn-learn.adafruit.com/assets/assets/000/105/040/original/MCP960X-Data-Sheet-20005426%281%29.pdf>`__,
`Adafruit`_) to measure the temperature of a connected thermocouple while also measuring the ambient temperature around the sensor with ESPHome. :ref:`I²C <i2c>` is
required to be set up in your configuration for this sensor to work.
.. warning::
The :ref:`I²C <i2c>` bus must be set to a minimum of ``100khz`` due to the limitations of the MCP9600 and MCP9601.
.. figure:: images/mcp9600.jpg
:align: center
:width: 80.0%
MCP9600 Thermocouple Amplifier
.. _Adafruit: https://www.adafruit.com/product/4101
.. code-block:: yaml
# Example configuration entry
sensor:
- platform: mcp9600
hot_junction:
name: "Thermocouple Temperature"
cold_junction:
name: "Ambient Temperature"
thermocouple_type: K
address: 0x67
update_interval: 60s
Configuration variables:
------------------------
- **hot_junction** (*Optional*): The information for the Hot Junction temperature sensor.
- **name** (**Required**, string): The name for the temperature
sensor.
- **id** (*Optional*, :ref:`config-id`): Set the ID of this sensor for use in lambdas.
- All other options from :ref:`Sensor <config-sensor>`.
- **cold_junction** (*Optional*): The information for the Cold Junction temperature sensor.
- **name** (**Required**, string): The name for the temperature sensor.
- **id** (*Optional*, :ref:`config-id`): Set the ID of this sensor for use in lambdas.
- All other options from :ref:`Sensor <config-sensor>`.
- **thermocouple_type** (*Optional*): Set the thermocouple type. Options are:
K, J, T, N, S, E, B and R type thermocouple. Defaults to ``K``.
- **address** (*Optional*, int): Manually specify the I²C address of
the sensor. Defaults to ``0x67``.
- **update_interval** (*Optional*, :ref:`config-time`): The interval to check the
sensor. Defaults to ``60s``.
See Also
--------
- :ref:`sensor-filters`
- :apiref:`mcp9600/mcp9600.h`
- `Adafruit MCP9600 Library <https://github.com/adafruit/Adafruit_MCP9600>`__ by `Adafruit <https://www.adafruit.com/>`__
- `SparkFun MCP9600 Library <https://github.com/sparkfun/SparkFun_MCP9600_Arduino_Library>`__ by `SparkFun <https://www.sparkfun.com/>`__
- :ghedit:`Edit`

View File

@ -0,0 +1,70 @@
MPL3115A2 Barometric Pressure/Altitude/Temperature Sensor
=========================================================
.. seo::
:description: Instructions for setting up MPL3115A2 atmospheric pressure sensors.
:image: mpl3115a2.jpg
:keywords: MPL3115A2
The ``mpl3115a2`` sensor platform allows you to use your MPL3115A2 atmospheric pressure sensors
(`datasheet <https://www.nxp.com/docs/en/data-sheet/MPL3115A2.pdf>`__,
`Adafruit`_) temperature and pressure sensors with ESPHome. The :ref:`I²C <i2c>` is
required to be set up in your configuration for this sensor to work.
.. figure:: images/mpl3115a2-full.jpg
:align: center
:width: 50.0%
MPL3115A2 Barometric Pressure/Altitude/Temperature Sensor
.. _Adafruit: https://www.adafruit.com/product/1893
.. code-block:: yaml
# Example configuration entry
sensor:
- platform: mpl3115a2
temperature:
name: "MPL3115A2 Temperature"
pressure:
name: "MPL3115A2 Pressure"
update_interval: 10s
Configuration variables:
------------------------
The MPL3115A2 can be configured to output either pressure or altitude depending on which
sensor is configured.
- **pressure** (**Optional**): The information for the pressure sensor.
- **name** (**Required**, string): The name for the pressure sensor.
- **id** (*Optional*, :ref:`config-id`): Set the ID of this sensor for use in lambdas.
- All other options from :ref:`Sensor <config-sensor>`.
- **altitude** (**Optional**): The information for the altitude sensor.
- **name** (**Required**, string): The name for the altitude sensor.
- **id** (*Optional*, :ref:`config-id`): Set the ID of this sensor for use in lambdas.
- All other options from :ref:`Sensor <config-sensor>`.
- **temperature** (**Optional**): The information for the temperature sensor.
- **name** (**Required**, string): The name for the temperature sensor.
- **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 ``0x60``.
- **update_interval** (*Optional*, :ref:`config-time`): The interval to check the
sensor. Defaults to ``60s``.
See Also
--------
- :ref:`sensor-filters`
- :doc:`bmp280`
- :doc:`bme280`
- :doc:`bmp085`
- :doc:`ms5611`
- :apiref:`mpl3115a2/mpl3115a2.h`
- :ghedit:`Edit`

View File

@ -38,10 +38,13 @@ Configuration variables:
- **falling_edge** (*Optional*): What to do when a falling edge is
detected. One of ``DISABLE``, ``INCREMENT`` and ``DECREMENT``.
Defaults to ``DISABLE``.
- **use_pcnt** (*Optional*, boolean): Use hardware ``PCNT`` pulse counter. Only supported on ESP32. Defaults to ``true``.
- **internal_filter** (*Optional*, :ref:`config-time`): If a pulse shorter than this
time is detected, its discarded and no pulse is counted. Defaults to ``13us``. On the ESP32,
this value can not be higher than ``13us``, for the ESP8266 you can use larger intervals too.
time is detected, its discarded and no pulse is counted. Defaults to ``13us``. On the ESP32, when using the hardware pulse counter
this value can not be higher than ``13us``, for the ESP8266 or with ``use_pcnt: false`` you can use larger intervals too.
If you enable this, set up the ``count_mode`` to increase on the falling edge, not leading edge. For S0 pulse meters that are used to meter power consumption 50-100 ms is a reasonable value.
- **update_interval** (*Optional*, :ref:`config-time`): The interval to check the sensor. Defaults to ``60s``.

View File

@ -23,7 +23,7 @@ a better understanding of these sensors.
:align: center
:width: 75.0%
To use rotary encoders in ESPHome, first identify the two pins encoding th step value.
To use rotary encoders in ESPHome, first identify the two pins encoding the step value.
These are often called ``CLK`` and ``DT`` as in above image. Note if the values this sensor
outputs go in the wrong direction, you can just swap these two pins.
@ -57,7 +57,7 @@ Configuration variables:
The second pin for determining the step value. Must not be a pin from an external I/O expander.
- **name** (**Required**, string): The name of the rotary encoder sensor.
- **pin_reset** (*Optional*, :ref:`Pin Schema <config-pin_schema>`):
An optional pin that resets the step value. This is useful with rotary encoders that have have a
An optional pin that resets the step value. This is useful with rotary encoders that have a
third pin. Defaults to no reset pin.
- **resolution** (*Optional*, string): The resolution of the sensor, this controls how many
pulses are generated by one step:
@ -72,7 +72,7 @@ Configuration variables:
- **max_value** (*Optional*, int): The maximum value this rotary encoder will go to, turning
the knob further will not increase the number. Defaults to no maximum.
- **publish_initial_value** (*Optional*, boolean): Controls whether the value is published
upon start of ESPHome. By default the value is only published when it changes, causing an
upon start of ESPHome. By default, the value is only published when it changes, causing an
"unknown" value at first. If you set this option to true, the value is published once after
boot and when it changes. Defaults to ``false``.
- **restore_mode** (*Optional*): Control how the Rotary Encoder attempts to restore state on bootup.

View File

@ -107,10 +107,13 @@ In teleinfo platform:
- **uart_id** (*Optional*, :ref:`config-id`): Manually specify the ID of the :ref:`UART Component <uart>` if you want
to use multiple UART buses.
- **id** (*Optional*, :ref:`config-id`): Manually specify the ID used for code generation or multiple hubs.
Sensor
******
- **tag_name** (**Required**, string): Specify the tag you want to retrieve from the Teleinformation.
- **teleinfo_id** (*Optional*, :ref:`config-id`): Specify the ID of used hub.
- **id** (*Optional*, :ref:`config-id`): Manually specify the ID used for code generation.
- All other options from :ref:`Sensor <config-sensor>`.
@ -118,6 +121,7 @@ Text Sensor
***********
- **tag_name** (**Required**, string): Specify the tag you want to retrieve from the Teleinformation.
- **teleinfo_id** (*Optional*, :ref:`config-id`): Specify the ID of used hub.
- **id** (*Optional*, :ref:`config-id`): Manually specify the ID used for code generation.
- All other options from :ref:`Text Sensor <config-text_sensor>`.

View File

@ -37,7 +37,7 @@ Configuration variables:
Lambda to be evaluated every update interval to get the new value of the sensor
- **update_interval** (*Optional*, :ref:`config-time`): The interval to publish the value of the
sensor, either the result of the lambda function or if no lambda function the last value
published using the publish action. Defaults to ``60s``.
published using the publish action. Set to ``never`` to disable updates. Defaults to ``60s``.
- **id** (*Optional*, :ref:`config-id`): Manually specify the ID used for code generation.
- All other options from :ref:`Sensor <config-sensor>`.

View File

@ -0,0 +1,106 @@
uFire Isolated EC sensor
========================
.. seo::
:description: Instructions for setting up uFire Isolated EC sensor in esphome
:image: ufire_ec.png
:keywords: ufire ec sensor temperature esphome
The ``ufire_ec`` sensor platform allows you to use your uFire Isolated EC sensor
with ESPHome. The :ref:`I²C Bus <i2c>` is
required to be set up in your configuration for this sensor to work.
It required also to have an temperature sensor in the liquit tank; this can
be on the same board or external sensor linked to the uFire EC configuration.
.. figure:: images/ufire_ec.png
:align: center
:width: 100.0%
.. code-block:: yaml
# Example configuration entry
sensor:
- platform: ufire_ec
id: ufire_ec_board
temperature:
id: temperature_liquit
name: Temperature
ec:
name: EC
Configuration variables:
------------------------
- **address** (**Optional**, int): Specify the I²C address of the sensor. Defaults to ``0x3C``.
- **update_interval** (*Optional*, :ref:`config-time`): The interval to check the
sensor. Defaults to ``60s``.
- **id** (*Optional*, :ref:`config-id`): Set the ID of this sensor for use in lambdas.
- **temperature_sensor** (*Optional*, :ref:`config-id`): Set the ID of the temperature
sensor. Only needed if the onboard temperature sensor is not used.
- **ec** (*Optional*, :ref:`Sensor <config-sensor>`): Set the EC sensor configuration. All options from :ref:`Sensor <config-sensor>`.
- **temperature** (*Optional*, :ref:`Sensor <config-sensor>`): Set the onboard temperature sensor configuration. All options from :ref:`Sensor <config-sensor>`.
- **temperature_compensation** (*Optional*, float): Set the temperature compensation for the EC
sensor. Defaults to ``21.0``.
- **temperature_coefficient** (*Optional*, float): Set the temperature coefficient for the EC
sensor. Defaults to ``0.019``.
.. _sensor-ufire_ec-calibrate_probe_action:
``sensor.ufire_ec.calibrate_probe`` Action
------------------------------------------
The EC probe have to be calibrated. For this you need know the EC reference value and temperature
of the calibration solution.
.. code-block:: yaml
# Example configuration entry
sensor:
- platform: ufire_ec
id: ufire_ec_board
# ...
# in some trigger
on_...:
- sensor.ufire_ec_board.calibrate_probe:
id: ufire_ec_board
solution: 0.146
temperature: !lambda "return id(temperature_liquit).state;"
Configuration options:
- **id** (**Required**, :ref:`config-id`): The ID of the ufire EC sensor.
- **solution** (**Required**, float): Solution reference EC value.
- **temperature** (**Required**, float): Solution current temperature.
.. _sensor-ufire_ec-reset_action:
``sensor.ufire_ec.reset`` Action
--------------------------------
Reset the current calibration on the sensor.
.. code-block:: yaml
# Example configuration entry
sensor:
- platform: ufire_ec
id: ufire_ec_board
# ...
# in some trigger
on_...:
- sensor.ufire_ec_board.reset:
id: ufire_ec_board
Configuration options:
- **id** (**Required**, :ref:`config-id`): The ID of the ufire EC sensor.
See Also
--------
- :ref:`sensor-filters`
- :apiref:`ufire_ec/ufire_ec.h`
- :ghedit:`Edit`

View File

@ -0,0 +1,132 @@
uFire ISE pH sensor
===================
.. seo::
:description: Instructions for setting up uFire ISE pH sensor in esphome
:image: ufire_ise.png
:keywords: ufire ph sensor temperature esphome
The ``ufire_ise`` sensor platform allows you to use your uFire ISE pH sensor with
ESPHome. The :ref:`I²C Bus <i2c>` is
required to be set up in your configuration for this sensor to work.
It required also to have an temperature sensor in the liquit tank; this can
be on the same board or external sensor linked to the uFire ISE pH configuration.
.. figure:: images/ufire_ise.png
:align: center
:width: 100.0%
.. code-block:: yaml
# Example configuration entry
sensor:
- platform: ufire_ise
id: ufire_ise_board
temperature:
id: temperature_liquit
name: Temperature
ph:
name: pH
Configuration variables:
------------------------
- **address** (**Optional**, int): Specify the I²C address of the sensor. Defaults to ``0x3f``.
- **update_interval** (*Optional*, :ref:`config-time`): The interval to check the
sensor. Defaults to ``60s``.
- **id** (*Optional*, :ref:`config-id`): Set the ID of this sensor for use in lambdas.
- **temperature_sensor** (*Optional*, :ref:`config-id`): Set the ID of the temperature
sensor. Only needed if the onboard temperature sensor is not used.
- **ph** (*Optional*, :ref:`Sensor <config-sensor>`): Set the pH sensor configuration. All options from :ref:`Sensor <config-sensor>`.
- **temperature** (*Optional*, :ref:`Sensor <config-sensor>`): Set the onboard temperature sensor configuration. All options from :ref:`Sensor <config-sensor>`.
Can't be used together with ``temperature_sensor``.
.. _sensor-ufire_ise-calibrate_probe_high_action:
``sensor.ufire_ise.calibrate_probe_high`` Action
------------------------------------------------
The pH probe have to be calibrated. For this you need know the pH reference value and temperature
of the calibration high solution.
.. code-block:: yaml
# Example configuration entry
sensor:
- platform: ufire_ise
id: ufire_ise_board
# ...
# in some trigger
on_...:
- sensor.ufire_ise_board.calibrate_probe_high:
id: ufire_ise_board
solution: 7.0
temperature: !lambda "return id(temperature_liquit).state;"
Configuration options:
- **id** (**Required**, :ref:`config-id`): The ID of the ufire pH sensor.
- **solution** (**Required**, float): Solution reference pH value.
- **temperature** (**Required**, float): Solution current temperature.
.. _sensor-ufire_ise-calibrate_probe_low_action:
``sensor.ufire_ise.calibrate_probe_low`` Action
-----------------------------------------------
The pH probe have to be calibrated. For this you need know the pH reference value and temperature
of the calibration low solution.
.. code-block:: yaml
# Example configuration entry
sensor:
- platform: ufire_ise
id: ufire_ise_board
# ...
# in some trigger
on_...:
- sensor.ufire_ise_board.calibrate_probe_low:
id: ufire_ise_board
solution: 4.0
temperature: !lambda "return id(temperature_liquit).state;"
Configuration options:
- **id** (**Required**, :ref:`config-id`): The ID of the ufire pH sensor.
- **solution** (**Required**, float): Solution reference pH value.
- **temperature** (**Required**, float): Solution current temperature.
.. _sensor-ufire_ise-reset_action:
``sensor.ufire_ise.reset`` Action
---------------------------------
Reset the current calibration on the sensor.
.. code-block:: yaml
# Example configuration entry
sensor:
- platform: ufire_ise
id: ufire_ise_board
# ...
# in some trigger
on_...:
- sensor.ufire_ise_board.reset:
id: ufire_ise_board
Configuration options:
- **id** (**Required**, :ref:`config-id`): The ID of the ufire pH sensor.
See Also
--------
- :ref:`sensor-filters`
- :apiref:`ufire_ise/ufire_ise.h`
- :ghedit:`Edit`

View File

@ -6,7 +6,7 @@ Xiaomi Mijia BLE Sensors
:image: xiaomi_mijia_logo.jpg
:keywords: Xiaomi, Mi Home, Mijia, BLE, Bluetooth, HHCCJCY01, GCLS002, HHCCPOT002, LYWSDCGQ, LYWSD02, CGG1, LYWSD03MMC, CGD1, JQJCY01YM, MUE4094RT, WX08ZM, MHO, C401, MHOC401
The ``xiaomi_ble`` sensor platform lets you track the output of Xiaomi Bluetooth Low Energy devices using the :doc:`/components/esp32_ble_tracker`. This component will track, for example, the temperature, humidity, moisture, conductivity, illuminance, formaldehyde, mosquito tablet and battery level of the device every time the sensor sends out a BLE broadcast. Contrary to other implementations, ``xiaomi_ble`` listens passively to advertisement packets and does not pair with the device. Hence ESPHome has no impact on battery life.
The ``xiaomi_ble`` sensor platform lets you track the output of Xiaomi Bluetooth Low Energy devices using the :doc:`/components/esp32_ble_tracker`. This component will track, for example, the temperature, humidity, moisture, conductivity, illuminance, formaldehyde, mosquito tablet and battery level of the device every time the sensor sends out a BLE broadcast. Contrary to other implementations, ``xiaomi_ble`` listens passively to advertisement packets and does not pair with the device. Hence ESPHome has no impact on battery life. Thus, if you only use such sensors, you can safely set ``active: false`` in ``esp32_ble_tracker`` configuration, to save from spamming your RF environment with useless scan requests.
Supported Devices
-----------------
@ -567,7 +567,7 @@ It can sometimes take some time for the first BLE broadcast to be received. Once
Obtaining The Bindkey
---------------------
To set up an encrypted device such as the LYWSD03MMC (with Xiaomi stock firmware) and CGD1, you first need to obtain the bind key. The ``xiaomi_ble`` sensor component is not able to automatically generate a bind key so other workarounds are necessary.
To set up an encrypted device such as the LYWSD03MMC (with Xiaomi stock firmware) and CGD1, you first need to obtain the bind key. The ``xiaomi_ble`` sensor component is not able to automatically generate a bindkey so other workarounds are necessary.
LYWSD03MMC/MHO-C401
*******************
@ -635,7 +635,11 @@ Avoid placing the ESP node in racks, close to routers/switches or other network
Security considerations
-----------------------
You should at least protect your sensors with a custom pairing PIN code.
You should at least protect your sensors with a custom pairing PIN code. Choose a method employing bindkey in order to use encrypted communication over the air.
.. note::
Devices flashed with `PVVX MiThermometer <https://github.com/pvvx/ATC_MiThermometer>`__ custom firmware also support the `BTHome protocol <https://bthome.io/>`__ which can be used in conjunction with ESPHome's :doc:`/components/bluetooth_proxy` component to forward sensor data to Home Assistant.
See Also
@ -643,8 +647,10 @@ See Also
- :doc:`/components/esp32_ble_tracker`
- :doc:`/components/sensor/index`
- :doc:`/components/display/pvvx_mithermometer`
- :apiref:`xiaomi_lywsd03mmc/xiaomi_ble.h`
- :doc:`/components/ethernet`
- :doc:`/components/bluetooth_proxy`
- Passive BLE monitor integration for Home Assistant (ble_monitor custom component) `<https://github.com/custom-components/ble_monitor>`__
by `@Magalex2x14 <https://github.com/Magalex2x14>`__ and `@Ernst79 <https://github.com/Ernst79>`__
- Custom firmware (PVVX) for the Xiaomi Thermometer LYWSD03MMC `<https://github.com/pvvx/ATC_MiThermometer>`__

View File

@ -91,7 +91,7 @@ You have to replace the numbers in the lambdas to determine your weight which is
- platform: template
name: Impedance Aurélien
id: impedance_user1
unit_of_measurement: 'ohm'
unit_of_measurement: 'Ω'
icon: mdi:omega
accuracy_decimals: 0
- platform: template
@ -103,7 +103,7 @@ You have to replace the numbers in the lambdas to determine your weight which is
- platform: template
name: Impedance Siham
id: impedance_user2
unit_of_measurement: 'ohm'
unit_of_measurement: 'Ω'
icon: mdi:omega
accuracy_decimals: 0

View File

@ -9,10 +9,11 @@ Sim800L Component
Component/Hub
-------------
The ``SIM800L`` Component provides the ability to dial, send and receive SMS text messages. The device must be
connected via a :doc:`UART bus </components/uart>` supporting both receiving and transmitting line.
The UART bus must be configured at the same speed of the module which is by default 9600bps.
The required connection wires are ``+VCC``, ``GND``, ``RX`` and ``TX``.
The ``SIM800L`` Component provides the ability to dial, answer calls, send/receive SMS text messages and
send/receive USSD codes. The device must be connected via a :doc:`UART bus </components/uart>`
supporting both receiving and transmitting line. The UART bus must be configured at the same speed
of the module which is by default 9600bps. The required connection wires are ``+VCC``, ``GND``,
``RX`` and ``TX``.
.. warning::
@ -43,16 +44,6 @@ The required connection wires are ``+VCC``, ``GND``, ``RX`` and ``TX``.
format: "Received '%s' from %s"
args: [ 'message.c_str()', 'sender.c_str()' ]
sensor:
- platform: sim800l
rssi:
name: "Sim800L RSSI"
binary_sensor:
- platform: sim800l
registered:
name: "Sim800L Registered"
logger:
baud_rate: 0 # disable uart logger on esp 8266
@ -62,10 +53,25 @@ Configuration variables:
- **id** (*Optional*, :ref:`config-id`): Manually specify the ID used for code generation.
- **on_sms_received** (*Optional*, :ref:`Automation <automation>`): An action to be
performed when an SMS is received. See :ref:`sim800l-on_sms_received`.
- **on_incoming_call** (*Optional*, :ref:`Automation <automation>`): An action to be
performed when a call is received. See :ref:`sim800l-on_incoming_call`.
- **on_call_connected** (*Optional*, :ref:`Automation <automation>`): An action to be
performed when a call is connected, either because an outgoing call accepted is
accepted or an incoming call answered.
- **on_call_disconnected** (*Optional*, :ref:`Automation <automation>`): An action to be
performed when a call is disconnected.
Sensor
------
.. code-block:: yaml
sensor:
- platform: sim800l
rssi:
name: "Sim800L RSSI"
Configuration variables:
- **rssi** (*Optional*): The informed Received signal strength indication (RSSI) in dBm.
@ -78,6 +84,13 @@ Configuration variables:
Binary Sensor
-------------
.. code-block:: yaml
binary_sensor:
- platform: sim800l
registered:
name: "Sim800L Registered"
Configuration variables:
- **registered** (*Optional*): Indicates if the SIM800L has successfully registered in the cellular network.
@ -103,6 +116,42 @@ under the variables named ``message`` and ``sender`` respectively.
id(sms_sender).publish_state(sender);
id(sms_message).publish_state(message);
.. _sim800l-on_incoming_call:
``on_incoming_call`` Trigger
----------------------------
This automation triggers every time the SIM800L sends a RING / Caller ID message, this message
is sent several times per call, presumably every time the phone "RINGs". The automation provides
a ``caller_id`` string parameter which received information. The phone call is neither accepted
or rejected.
.. code-block:: yaml
on_incoming_call:
- logger.log:
format: "Incoming call from '%s'"
args: ["caller_id.c_str()"]
- lambda: |-
id(caller_id_text_sensor).publish_state(caller_id);
- sim800l.disconnect
- homeassistant.event:
event: esphome.incoming_call_event
data:
payload: !lambda 'return id(caller_id_text_sensor).state;'
``on_ussd_received`` Trigger
----------------------------
With this configuration option you can write complex automations whenever the ussd code from network
has been received.
.. code-block:: yaml
on_ussd_received:
.. _sim800l-send_sms_action:
@ -134,18 +183,11 @@ Configuration options:
- **message** (**Required**, string, :ref:`templatable <config-templatable>`): The message content.
- **id** (*Optional*, :ref:`config-id`): Manually specify the ID of the SIM800L if you have multiple components.
.. note::
This action can also be written in :ref:`lambdas <config-lambda>`:
.. code-block:: cpp
id(sim800l1).send_sms("+15551234567", "The message content");
.. _sim800l-dial_action:
``sim800l.dial`` Action
---------------------------
-----------------------
Dial to a phone recipient using this action in automations.
@ -161,13 +203,41 @@ Configuration options:
- **recipient** (**Required**, string, :ref:`templatable <config-templatable>`): The number to dial.
- **id** (*Optional*, :ref:`config-id`): Manually specify the ID of the SIM800L if you have multiple components.
.. note::
This action can also be written in :ref:`lambdas <config-lambda>`:
``sim800l.connect`` Action
--------------------------
.. code-block:: cpp
Answers an incoming call.
id(sim800l1).dial("+15551234567");
.. code-block:: yaml
on_...:
then:
- sim800l.connect
``sim800l.disconnect`` Action
-----------------------------
Disconnects a call, either dialed in or received.
.. code-block:: yaml
on_...:
then:
- sim800l.disconnect
``sim800l.send_ussd`` Action
----------------------------
Sends a ussd code to the network.
.. code-block:: yaml
on_...:
then:
- sim800l.send_ussd
Getting started with Home Assistant
@ -180,28 +250,46 @@ on Home Assistant and will also setup a service so you can send messages and dia
api:
services:
- service: send_sms
variables:
recipient: string
message: string
then:
- sim800l.send_sms:
recipient: !lambda 'return recipient;'
message: !lambda 'return message;'
- service: dial
variables:
recipient: string
then:
- sim800l.dial:
recipient: !lambda 'return recipient;'
- service: send_sms
variables:
recipient: string
message: string
then:
- sim800l.send_sms:
recipient: !lambda 'return recipient;'
message: !lambda 'return message;'
- service: dial
variables:
recipient: string
then:
- sim800l.dial:
recipient: !lambda 'return recipient;'
- service: connect
then:
- sim800l.connect
- service: disconnect
then:
- sim800l.disconnect
- service: send_ussd
variables:
ussdCode: string
then:
- sim800l.send_ussd:
ussd: !lambda 'return ussdCode;'
text_sensor:
- platform: template
id: sms_sender
name: "Sms Sender"
- platform: template
id: sms_message
name: "Sms Message"
- platform: template
id: sms_sender
name: "Sms Sender"
- platform: template
id: sms_message
name: "Sms Message"
- platform: template
id: caller_id_text_sensor
name: "Caller ID"
- platform: template
id: ussd_message
name: "Ussd Code"
uart:
baud_rate: 9600
@ -210,9 +298,22 @@ on Home Assistant and will also setup a service so you can send messages and dia
sim800l:
on_sms_received:
- lambda: |-
id(sms_sender).publish_state(sender);
id(sms_message).publish_state(message);
- lambda: |-
id(sms_sender).publish_state(sender);
id(sms_message).publish_state(message);
on_incoming_call:
- lambda: |-
id(caller_id_text_sensor).publish_state(caller_id);
on_call_connected:
- logger.log:
format: Call connected
on_call_disconnected:
- logger.log:
format: Call disconnected
on_ussd_received:
- lambda: |-
id(ussd_message).publish_state(ussd);
Now your latest received SMS and sender number will be displayed by the text sensors.
@ -238,10 +339,10 @@ Relay management commands received from an authorized sender:
sim800l:
on_sms_received:
- lambda: |-
if ( (id(sms_sender).state == "+79991234567") && ( (id(sms_message).state == "relay_1_on") OR (id(sms_message).state == "Relay_1_on") ) ) {
id(relay_1).turn_on();
}
- lambda: |-
if ( (id(sms_sender).state == "+79991234567") && ( (id(sms_message).state == "relay_1_on") OR (id(sms_message).state == "Relay_1_on") ) ) {
id(relay_1).turn_on();
}
switch:
- platform: gpio
id: relay_1

View File

@ -0,0 +1,51 @@
Factory Reset Switch
====================
.. seo::
:description: Instructions for setting up switches that can remotely invalidate all ESPHome preferences stored in flash and reboot ESP.
:image: restart.svg
The ``factory_reset`` switch allows you to remotely invalidate (reset) all ESPHome :ref:`preferences <preferences-flash_write_interval>` stored in flash memory and reboot your node.
After reboot all states, parameters and variables will be reinitialized with their default values. This is useful:
- for devices preflashed with ESPHome to reset behavior back to factory state
- in case of moving a device to a new environment or starting a new use-case (e.g. reset counters or state)
- for privacy concerns when giving away a device
.. note::
**USE WITH GREAT CAUTION!** All credentials, global variables, counters and saved states stored in non-volatile memory will be lost with no chance of recovering them.
Even raw reading of flash memory with ``esptool`` will not help, since data is physically erased from flash memory.
For devices configured using :doc:`captive portal </components/captive_portal>`, this will reset WiFi settings as well, thus making such devices offline.
You'll need to be in close proximity to your device to configure it again using a built-in WiFi access point and captive portal.
.. figure:: images/factory-rst-ui.png
:align: center
:width: 80.0%
.. code-block:: yaml
# Example configuration entry
switch:
- platform: factory_reset
name: Restart with Factory Default Settings
Configuration variables:
------------------------
- **name** (**Required**, string): The name of the switch.
- **id** (*Optional*, :ref:`config-id`): Manually specify the ID used for code generation.
- All other options from :ref:`Switch <config-switch>`.
See Also
--------
- :doc:`shutdown`
- :doc:`restart`
- :doc:`safe_mode`
- :doc:`/components/button/factory_reset`
- :doc:`template`
- :apiref:`factory_reset/factory_reset_switch.h`
- :ghedit:`Edit`

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.4 KiB

View File

@ -29,9 +29,10 @@ Configuration variables:
See Also
--------
- :doc:`/components/button/restart`
- :doc:`shutdown`
- :doc:`safe_mode`
- :doc:`factory_reset`
- :doc:`/components/button/restart`
- :doc:`template`
- :apiref:`restart/switch/restart_switch.h`
- :ghedit:`Edit`

View File

@ -33,6 +33,8 @@ See Also
- :doc:`shutdown`
- :doc:`restart`
- :doc:`factory_reset`
- :doc:`/components/button/safe_mode`
- :doc:`template`
- :apiref:`safe_mode/safe_mode_switch.h`
- :ghedit:`Edit`

View File

@ -32,6 +32,9 @@ See Also
--------
- :doc:`restart`
- :doc:`safe_mode`
- :doc:`factory_reset`
- :doc:`/components/button/shutdown`
- :doc:`template`
- :apiref:`shutdown/shutdown_switch.h`
- :ghedit:`Edit`

View File

@ -85,6 +85,9 @@ Configuration variables:
The downside is that this option connects to the first network the ESP sees, even if that network is very far away and
better ones are available.
- **enable_btm** (*Optional*, bool): Only on ``esp32`` with ``esp-idf``. Enable 802.11v BSS Transition Management support.
- **enable_rrm** (*Optional*, bool): Only on ``esp32`` with ``esp-idf``. Enable 802.11k Radio Resource Management support.
- **id** (*Optional*, :ref:`config-id`): Manually specify the ID used for code generation.
Access Point Mode

View File

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

View File

@ -730,6 +730,12 @@ script was already running.
then:
- script.execute: my_script
or as lambda
.. code-block:: yaml
lambda: 'id(my_script).execute();
.. _script-stop_action:
``script.stop`` Action
@ -757,6 +763,12 @@ will not be executed.
then:
- script.stop: my_script
or as lambda
.. code-block:: yaml
lambda: 'id(my_script).stop();'
.. _script-wait_action:
``script.wait`` Action
@ -783,6 +795,14 @@ of the script are running in parallel, this will block until all of them have te
- script.execute: my_script
- script.wait: my_script
or as lambda
.. code-block:: yaml
lambda: |-
id(my_script).execute();
id(my_script).wait();
.. _script-is_running_condition:
``script.is_running`` Condition
@ -801,6 +821,15 @@ of the given id is running, not how many.
then:
- logger.log: Script is running!
or as lambda
.. code-block:: yaml
lambda: -|
if(id(my_script).is_running() {
ESP_LOGI("main", "Script is running!");
}
.. _for_condition:
``for`` Condition

View File

@ -272,6 +272,10 @@ config in the main yaml file. All definitions from packages will be merged with
config in non-destructive way so you could always override some bits and pieces of package
configuration.
Dictionaries are merged key-by-key. Lists of components are merged by component
ID if specified. Other lists are merged by concatenation. All other config
values are replaced with the later value.
Local packages
**************

View File

@ -40,6 +40,21 @@ If you want to use `docker-compose` instead, here's a sample file:
privileged: true
network_mode: host
The project provides multiple docker tags; please pick the one that suits you
better:
- ``latest`` and ``stable`` point to the latest stable release available. It's
not recommended to automatically update the container based on those tags
because of the possible breaking changes between releases.
- Release-tracking tag ``YEAR.MONTH`` (e.g. ``2022.8``) points to the latest
stable patch release available within the required version. There should
never be a breaking change when upgrading the containers based on tags like
that.
- ``beta`` points to the latest released beta version, and to the latest stable
release when there is no fresh beta release.
- ``dev`` is the bleeding edge release; built daily based on the latest changes
in the ``dev`` branch.
Connecting the ESP Device
-------------------------

View File

@ -101,6 +101,7 @@ Contributors
- `Paulus Schoutsen (@balloob) <https://github.com/balloob>`__
- `Andrew Zaborowski (@balrog-kun) <https://github.com/balrog-kun>`__
- `BarryMar (@BarryMar) <https://github.com/BarryMar>`__
- `Bascht74 (@Bascht74) <https://github.com/Bascht74>`__
- `bazuchan (@bazuchan) <https://github.com/bazuchan>`__
- `Viktr (@BbIKTOP) <https://github.com/BbIKTOP>`__
- `J. Nick Koston (@bdraco) <https://github.com/bdraco>`__
@ -118,6 +119,7 @@ Contributors
- `Bill Church (@billchurch) <https://github.com/billchurch>`__
- `Brian Kaufman (@bkaufx) <https://github.com/bkaufx>`__
- `JDavid (@blackhack) <https://github.com/blackhack>`__
- `blakadder (@blakadder) <https://github.com/blakadder>`__
- `Branimir Lambov (@blambov) <https://github.com/blambov>`__
- `Jim Ekman (@blejdfist) <https://github.com/blejdfist>`__
- `Scott Smith (@blurfl) <https://github.com/blurfl>`__
@ -127,7 +129,6 @@ Contributors
- `Mauricio Bonani (@bonanitech) <https://github.com/bonanitech>`__
- `Casey Olson (@bookcasey) <https://github.com/bookcasey>`__
- `BoukeHaarsma23 (@BoukeHaarsma23) <https://github.com/BoukeHaarsma23>`__
- `Patrik Hermansson (@bphermansson) <https://github.com/bphermansson>`__
- `brambo123 (@brambo123) <https://github.com/brambo123>`__
- `Bram Kragten (@bramkragten) <https://github.com/bramkragten>`__
- `Brad Davidson (@brandond) <https://github.com/brandond>`__
@ -182,6 +183,7 @@ Contributors
- `cwitting (@cwitting) <https://github.com/cwitting>`__
- `Alex Solomaha (@CyanoFresh) <https://github.com/CyanoFresh>`__
- `Luar Roji (@cyberplant) <https://github.com/cyberplant>`__
- `Aleš Komárek (@cznewt) <https://github.com/cznewt>`__
- `d-two (@d-two) <https://github.com/d-two>`__
- `dab0g (@dab0g) <https://github.com/dab0g>`__
- `Dale Higgs (@dale3h) <https://github.com/dale3h>`__
@ -350,6 +352,7 @@ Contributors
- `guillempages (@guillempages) <https://github.com/guillempages>`__
- `Guyohms (@Guyohms) <https://github.com/Guyohms>`__
- `Gilles van den Hoven (@gvdhoven) <https://github.com/gvdhoven>`__
- `h3ndrik (@h3ndrik) <https://github.com/h3ndrik>`__
- `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>`__
@ -372,7 +375,6 @@ Contributors
- `hreintke (@hreintke) <https://github.com/hreintke>`__
- `Jan Hubík (@hubikj) <https://github.com/hubikj>`__
- `Huub Eikens (@huubeikens) <https://github.com/huubeikens>`__
- `Petr Urbánek (@HyperReap) <https://github.com/HyperReap>`__
- `Arjan Filius (@iafilius) <https://github.com/iafilius>`__
- `Adrián Panella (@ianchi) <https://github.com/ianchi>`__
- `Ian Leeder (@ianleeder) <https://github.com/ianleeder>`__
@ -442,6 +444,7 @@ Contributors
- `Jonathan Adams (@jonathanadams) <https://github.com/jonathanadams>`__
- `Jonathan Treffler (@JonathanTreffler) <https://github.com/JonathanTreffler>`__
- `JonnyaiR (@jonnyair) <https://github.com/jonnyair>`__
- `Jonathan V (@jonofmac) <https://github.com/jonofmac>`__
- `Joppy (@JoppyFurr) <https://github.com/JoppyFurr>`__
- `joseph douce (@josephdouce) <https://github.com/josephdouce>`__
- `Joshua Spence (@joshuaspence) <https://github.com/joshuaspence>`__
@ -495,7 +498,6 @@ Contributors
- `Kyle Hendricks (@kylehendricks) <https://github.com/kylehendricks>`__
- `Kyle Manna (@kylemanna) <https://github.com/kylemanna>`__
- `Kalashnikov Ilya (@l1bbcsg) <https://github.com/l1bbcsg>`__
- `la7dja (@la7dja) <https://github.com/la7dja>`__
- `Limor "Ladyada" Fried (@ladyada) <https://github.com/ladyada>`__
- `Luca Adrian L (@lal12) <https://github.com/lal12>`__
- `Fredrik Lindqvist (@Landrash) <https://github.com/Landrash>`__
@ -510,8 +512,8 @@ Contributors
- `Lubos Horacek (@lhoracek) <https://github.com/lhoracek>`__
- `Juraj Liso (@LiJu09) <https://github.com/LiJu09>`__
- `lingex (@lingex) <https://github.com/lingex>`__
- `lkomurcu (@lkomurcu) <https://github.com/lkomurcu>`__
- `Lazar Obradovic (@lobradov) <https://github.com/lobradov>`__
- `Lode Vermeiren (@lodev) <https://github.com/lodev>`__
- `Barry Loong (@loongyh) <https://github.com/loongyh>`__
- `LuBeDa (@lubeda) <https://github.com/lubeda>`__
- `Joakim Sørensen (@ludeeus) <https://github.com/ludeeus>`__
@ -545,7 +547,6 @@ Contributors
- `Mario (@mario-tux) <https://github.com/mario-tux>`__
- `Marek Marczykowski-Górecki (@marmarek) <https://github.com/marmarek>`__
- `Matthew Harrold (@marrold) <https://github.com/marrold>`__
- `marshn (@marshn) <https://github.com/marshn>`__
- `marsjan155 (@marsjan155) <https://github.com/marsjan155>`__
- `Martin (@martgras) <https://github.com/martgras>`__
- `Martin Hjelmare (@MartinHjelmare) <https://github.com/MartinHjelmare>`__
@ -559,10 +560,10 @@ Contributors
- `Matteo Franceschini (@matteofranceschini) <https://github.com/matteofranceschini>`__
- `Matthew Mazzanti (@matthewmazzanti) <https://github.com/matthewmazzanti>`__
- `matthias882 (@matthias882) <https://github.com/matthias882>`__
- `Matus Ivanecky (@maty535) <https://github.com/maty535>`__
- `Maurice Schleußinger (@maurice-schleussinger) <https://github.com/maurice-schleussinger>`__
- `Maximilian Gerhardt (@maxgerhardt) <https://github.com/maxgerhardt>`__
- `mbo18 (@mbo18) <https://github.com/mbo18>`__
- `mckaymatthew (@mckaymatthew) <https://github.com/mckaymatthew>`__
- `Me No Dev (@me-no-dev) <https://github.com/me-no-dev>`__
- `Alexandr Zarubkin (@me21) <https://github.com/me21>`__
- `Joseph Mearman (@Mearman) <https://github.com/Mearman>`__
@ -576,18 +577,20 @@ Contributors
- `Marco Lusini (@met67) <https://github.com/met67>`__
- `Martin Flasskamp (@MFlasskamp) <https://github.com/MFlasskamp>`__
- `Michael Gorven (@mgorven) <https://github.com/mgorven>`__
- `mhentschke (@mhentschke) <https://github.com/mhentschke>`__
- `Michael Haas (@mhaas) <https://github.com/mhaas>`__
- `Michaël Arnauts (@michaelarnauts) <https://github.com/michaelarnauts>`__
- `Micha Nordmann (@Michanord) <https://github.com/Michanord>`__
- `micronen (@micronen) <https://github.com/micronen>`__
- `Midbin (@Midbin) <https://github.com/Midbin>`__
- `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>`__
- `Tomasz (@Misiu) <https://github.com/Misiu>`__
- `Matthew Edwards (@mje-nz) <https://github.com/mje-nz>`__
- `Matthew Garrett (@mjg59) <https://github.com/mjg59>`__
- `Maarten (@mjkl-gh) <https://github.com/mjkl-gh>`__
- `Morton Jonuschat (@mjonuschat) <https://github.com/mjonuschat>`__
- `mjoshd (@mjoshd) <https://github.com/mjoshd>`__
- `mknjc (@mknjc) <https://github.com/mknjc>`__
- `Maurice Makaay (@mmakaay) <https://github.com/mmakaay>`__
@ -614,6 +617,7 @@ Contributors
- `H. Árkosi Róbert (@nagyrobi) <https://github.com/nagyrobi>`__
- `Viktor Nagy (@nagyv) <https://github.com/nagyv>`__
- `Oskar Napieraj (@napieraj) <https://github.com/napieraj>`__
- `Patrick ZAJDA (@Nardol) <https://github.com/Nardol>`__
- `Nate Lust (@natelust) <https://github.com/natelust>`__
- `ueno (@nayuta-ueno) <https://github.com/nayuta-ueno>`__
- `Nazar Mokrynskyi (@nazar-pc) <https://github.com/nazar-pc>`__
@ -673,10 +677,8 @@ Contributors
- `Paul Doidge (@pdoidge) <https://github.com/pdoidge>`__
- `per1234 (@per1234) <https://github.com/per1234>`__
- `Peter Valkov (@peter-valkov) <https://github.com/peter-valkov>`__
- `Peter Foreman (@peterforeman) <https://github.com/peterforeman>`__
- `Peter Galantha (@peterg79) <https://github.com/peterg79>`__
- `Peter Remøy Paulsen (@petrepa) <https://github.com/petrepa>`__
- `Philip Rosenberg-Watt (@PhilRW) <https://github.com/PhilRW>`__
- `Philippe FOUQUET (@Philippe12) <https://github.com/Philippe12>`__
- `pieterbrink123 (@pieterbrink123) <https://github.com/pieterbrink123>`__
- `Tommy van der Vorst (@pixelspark) <https://github.com/pixelspark>`__
- `Peter Kuehne (@pkuehne) <https://github.com/pkuehne>`__
@ -688,11 +690,11 @@ Contributors
- `Iván Povedano (@pove) <https://github.com/pove>`__
- `probonopd (@probonopd) <https://github.com/probonopd>`__
- `Mike Lynch (@Prow7) <https://github.com/Prow7>`__
- `Peter Stuifzand (@pstuifzand) <https://github.com/pstuifzand>`__
- `Peter Tatrai (@ptatrai) <https://github.com/ptatrai>`__
- `Patrick Toal (@ptoal) <https://github.com/ptoal>`__
- `Leandro Puerari (@puerari) <https://github.com/puerari>`__
- `puuu (@puuu) <https://github.com/puuu>`__
- `Pascal Vizeli (@pvizeli) <https://github.com/pvizeli>`__
- `[pʲɵs] (@pyos) <https://github.com/pyos>`__
- `Qc (@qc24) <https://github.com/qc24>`__
- `Karol Zlot (@qqgg231) <https://github.com/qqgg231>`__
@ -701,7 +703,6 @@ Contributors
- `Johannes Rebling (@r0oland) <https://github.com/r0oland>`__
- `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>`__
- `RadekHvizdos (@RadekHvizdos) <https://github.com/RadekHvizdos>`__
- `Florian Ragwitz (@rafl) <https://github.com/rafl>`__
@ -712,7 +713,6 @@ Contributors
- `Rebbe Pod (@RebbePod) <https://github.com/RebbePod>`__
- `Alex (@redwngsrul) <https://github.com/redwngsrul>`__
- `Alex Reid (@reidprojects) <https://github.com/reidprojects>`__
- `Pavels Veretennikovs (@rfvermut) <https://github.com/rfvermut>`__
- `Richard Klingler (@richardklingler) <https://github.com/richardklingler>`__
- `Richard Lewis (@richrd) <https://github.com/richrd>`__
- `rjlexx (@rjlexx) <https://github.com/rjlexx>`__
@ -761,6 +761,7 @@ Contributors
- `Niklas Wagner (@Skaronator) <https://github.com/Skaronator>`__
- `Rafael Treviño (@skasi7) <https://github.com/skasi7>`__
- `Brian Slesinsky (@skybrian) <https://github.com/skybrian>`__
- `Jordan W. Cobb (@skykingjwc) <https://github.com/skykingjwc>`__
- `Sebastian Lövdahl (@slovdahl) <https://github.com/slovdahl>`__
- `smischny (@smischny) <https://github.com/smischny>`__
- `Luca Zimmermann (@soundstorm) <https://github.com/soundstorm>`__
@ -771,7 +772,6 @@ Contributors
- `Spegs21 (@Spegs21) <https://github.com/Spegs21>`__
- `Stephan Peijnik-Steinwender (@speijnik) <https://github.com/speijnik>`__
- `Eric Lind (@sperly) <https://github.com/sperly>`__
- `Paul Krischer (@SqyD) <https://github.com/SqyD>`__
- `Samuel Sieb (@ssieb) <https://github.com/ssieb>`__
- `Stefan Staub (@sstaub) <https://github.com/sstaub>`__
- `St4n (@St4n) <https://github.com/St4n>`__
@ -840,6 +840,7 @@ Contributors
- `Gediminas Šaltenis (@trylika) <https://github.com/trylika>`__
- `Tuan (@tuanpmt) <https://github.com/tuanpmt>`__
- `tubalainen (@tubalainen) <https://github.com/tubalainen>`__
- `tube0013 (@tube0013) <https://github.com/tube0013>`__
- `Alexey Vlasov (@turbulator) <https://github.com/turbulator>`__
- `Seppel Hardt (@tuxBurner) <https://github.com/tuxBurner>`__
- `TVDLoewe (@TVDLoewe) <https://github.com/TVDLoewe>`__
@ -891,9 +892,10 @@ Contributors
- `Zebble (@Zebble) <https://github.com/Zebble>`__
- `ZJY (@zhangjingye03) <https://github.com/zhangjingye03>`__
- `San (@zhujunsan) <https://github.com/zhujunsan>`__
- `Geek_cat (@zhzhzhy) <https://github.com/zhzhzhy>`__
- `I. Tomita (@ziceva) <https://github.com/ziceva>`__
- `Michael Labuschke (@zigman79) <https://github.com/zigman79>`__
- `Zack Barett (@zsarnett) <https://github.com/zsarnett>`__
- `Christian Zufferey (@zuzu59) <https://github.com/zuzu59>`__
*This page was last updated September 6, 2022.*
*This page was last updated October 6, 2022.*

BIN
images/bl0942.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

BIN
images/dps310.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

BIN
images/mcp9600.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

BIN
images/mpl3115a2.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

BIN
images/tm1621.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.2 KiB

BIN
images/tm1638.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

BIN
images/ufire_ec.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

BIN
images/ufire_ise.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.6 KiB

View File

@ -255,6 +255,7 @@ Electricity
ATM90E32, components/sensor/atm90e32, atm90e32.jpg, Voltage & Current & Power
BL0939, components/sensor/bl0939, bl0939.png, Voltage & Current & Power & Energy
BL0940, components/sensor/bl0940, bl0940.png, Voltage & Current & Power
BL0942, components/sensor/bl0942, bl0942.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
@ -294,6 +295,7 @@ Environmental
Dallas DS18B20, components/sensor/dallas, dallas.jpg, Temperature
DHT, components/sensor/dht, dht.jpg, Temperature & Humidity
DHT12, components/sensor/dht12, dht12.jpg, Temperature & Humidity
DPS310, components/sensor/dps310, dps310.jpg, Temperature & Pressure
ENS210, components/sensor/ens210, ens210.jpg, Temperature & Humidity
HDC1080, components/sensor/hdc1080, hdc1080.jpg, Temperature & Humidity
Honeywell ABP, components/sensor/honeywellabp, honeywellabp.jpg, Pressure & Temperature
@ -302,6 +304,7 @@ Environmental
Inkbird IBS-TH1 Mini, components/sensor/inkbird_ibsth1_mini, inkbird_isbth1_mini.jpg, Temperature & Humidity
MCP9808, components/sensor/mcp9808, mcp9808.jpg, Temperature
MH-Z19, components/sensor/mhz19, mhz19.jpg, CO2 & Temperature
MPL3115A2, components/sensor/mpl3115a2, mpl3115a2.jpg, Temperature & Pressure
MS5611, components/sensor/ms5611, ms5611.jpg, Pressure
NTC Thermistor, components/sensor/ntc, ntc.jpg, Temperature
QMP6988, components/sensor/qmp6988, qmp6988_env3.png, Temperature & Pressure
@ -360,6 +363,8 @@ Miscellaneous
SMT100, components/sensor/smt100, smt100.jpg, Moisture & Temperature
Tuya Sensor, components/sensor/tuya, tuya.png
TX20, components/sensor/tx20, tx20.jpg, Wind speed & Wind direction
uFire EC sensor, components/sensor/ufire_ec, ufire_ec.png, EC & Temperature
uFire ISE sensor, components/sensor/ufire_ise, ufire_ise.png, pH & Temperature
Motion
@ -379,7 +384,8 @@ Thermocouple
MAX31855, components/sensor/max31855, max31855.jpg, K-Type
MAX31856, components/sensor/max31856, max31856.jpg, All types
MAX31865, components/sensor/max31865, max31865.jpg, Platinum RTD
MAX6675, components/sensor/max6675, max6675.jpg, K-Type
MAX6675, components/sensor/max6675, max6675.jpg, K-Type,
MCP9600, components/sensor/mcp9600, mcp9600.jpg, All types
Weight
@ -490,6 +496,7 @@ Switch Components
Restart Switch, components/switch/restart, restart.svg
Safe Mode Switch, components/switch/safe_mode, restart-alert.svg
Shutdown Switch, components/switch/shutdown, power_settings.svg
Factory Reset Switch, components/switch/factory_reset, restart-alert.svg
Generic Output Switch, components/switch/output, upload.svg
Template Switch, components/switch/template, description.svg
UART Switch, components/switch/uart, uart.svg
@ -510,6 +517,7 @@ Button Components
Restart Button, components/button/restart, restart.svg
Safe Mode Button, components/button/safe_mode, restart-alert.svg
Shutdown Button, components/button/shutdown, power_settings.svg
Factory Reset Button, components/button/factory_reset, restart-alert.svg
Wake-on-LAN, components/button/wake_on_lan, power_settings.svg
Fan Components
@ -533,8 +541,11 @@ Display Components
LCD Display, components/display/lcd_display, lcd.jpg
MAX7219, components/display/max7219, max7219.jpg
MAX7219 Dot Matrix, components/display/max7219digit, max7219digit.jpg
TM1621, components/display/tm1621, tm1621.jpg
TM1637, components/display/tm1637, tm1637.jpg
TM1638, components/display/tm1638, tm1638.jpg
Nextion, components/display/nextion, nextion.jpg
PVVX MiThermometer, components/display/pvvx_mithermometer, ../components/sensor/images/xiaomi_lywsd03mmc.jpg
SSD1306, components/display/ssd1306, ssd1306.jpg
SSD1322, components/display/ssd1322, ssd1322.jpg
SSD1325, components/display/ssd1325, ssd1325.jpg

View File

@ -1,7 +1,6 @@
#!/usr/bin/env python
# reStructuredText (RST) to GitHub-flavored Markdown converter
import re
import sys
from docutils import core, nodes, writers
from urllib import parse
@ -32,8 +31,7 @@ class Translator(nodes.NodeVisitor):
raise nodes.StopTraversal
def visit_title(self, node):
self.version = re.match(r"(\d+\.\d+\.\d+).*", node.children[0]).group(1)
raise nodes.SkipChildren
pass
def visit_title_reference(self, node):
raise Exception(

View File

@ -834,7 +834,14 @@ class SchemaGeneratorVisitor(nodes.NodeVisitor):
self.app.config.html_baseurl,
self.docname + ".html#" + title.parent["ids"][0],
)
markdown += f"\n\n*See also: [{self.props_section_title}]({url})*"
if (
self.props_section_title is not None
and self.props_section_title.endswith(title.astext())
):
markdown += f"\n\n*See also: [{self.props_section_title}]({url})*"
else:
markdown += f"\n\n*See also: [{self.getMarkdown(title)}]({url})*"
return markdown
def update_prop(self, node, props):