2
Doxygen
@ -38,7 +38,7 @@ PROJECT_NAME = "ESPHome"
|
|||||||
# could be handy for archiving the generated documentation or if some version
|
# could be handy for archiving the generated documentation or if some version
|
||||||
# control system is used.
|
# control system is used.
|
||||||
|
|
||||||
PROJECT_NUMBER = 2022.6.3
|
PROJECT_NUMBER = 2022.8.0b1
|
||||||
|
|
||||||
# Using the PROJECT_BRIEF tag one can provide an optional one line description
|
# 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
|
# for a project that appears at the top of each page and should give viewer a
|
||||||
|
2
Makefile
@ -1,5 +1,5 @@
|
|||||||
ESPHOME_PATH = ../esphome
|
ESPHOME_PATH = ../esphome
|
||||||
ESPHOME_REF = 2022.6.3
|
ESPHOME_REF = 2022.8.0b1
|
||||||
|
|
||||||
.PHONY: html html-strict cleanhtml deploy help live-html Makefile netlify netlify-api api netlify-dependencies svg2png copy-svg2png minify
|
.PHONY: html html-strict cleanhtml deploy help live-html Makefile netlify netlify-api api netlify-dependencies svg2png copy-svg2png minify
|
||||||
|
|
||||||
|
BIN
_static/changelog-2022.8.0.png
Normal file
After Width: | Height: | Size: 39 KiB |
@ -1 +1 @@
|
|||||||
2022.6.3
|
2022.8.0b1
|
137
changelog/2022.8.0.rst
Normal file
@ -0,0 +1,137 @@
|
|||||||
|
ESPHome 2022.8.0 - 17th August 2022
|
||||||
|
===================================
|
||||||
|
|
||||||
|
.. seo::
|
||||||
|
:description: Changelog for ESPHome 2022.8.0.
|
||||||
|
:image: /_static/changelog-2022.8.0.png
|
||||||
|
:author: Jesse Hills
|
||||||
|
:author_twitter: @jesserockz
|
||||||
|
|
||||||
|
.. imgtable::
|
||||||
|
:columns: 3
|
||||||
|
|
||||||
|
DAC7678, components/output/dac7678, dac7678.svg
|
||||||
|
Sprinkler, components/sprinkler, sprinkler-variant.svg
|
||||||
|
Feedback Cover, components/cover/feedback, feedback_cover.svg
|
||||||
|
SMT100, components/sensor/smt100, smt100.jpg, Moisture & Temperature
|
||||||
|
Whynter IR Climate, components/climate/climate_ir, air-conditioner-ir.svg
|
||||||
|
|
||||||
|
|
||||||
|
Full list of changes
|
||||||
|
--------------------
|
||||||
|
|
||||||
|
New Components
|
||||||
|
^^^^^^^^^^^^^^
|
||||||
|
|
||||||
|
- DAC7678 support :esphomepr:`3441` by :ghuser:`NickB1` (new-integration)
|
||||||
|
- Add support for SMT100 Soil Moisture Sensor :esphomepr:`3654` by :ghuser:`piechade` (new-integration)
|
||||||
|
- Adding support for Whynter ARC-14S/SH Air Conditioners :esphomepr:`3641` by :ghuser:`aeonsablaze` (new-integration)
|
||||||
|
- Sprinkler controller component :esphomepr:`2249` by :ghuser:`kbx81` (new-integration)
|
||||||
|
- Create feedback cover component :esphomepr:`3253` by :ghuser:`ianchi` (new-integration)
|
||||||
|
|
||||||
|
Breaking Changes
|
||||||
|
^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
|
- Remove min_save_interval from intergration and total_daily_energy :esphomepr:`3498` by :ghuser:`jesserockz` (breaking-change)
|
||||||
|
- Rework NaN handling in sensor filters :esphomepr:`3610` by :ghuser:`DAVe3283` (breaking-change)
|
||||||
|
- Extend ST7789V component to support additional displays :esphomepr:`3651` by :ghuser:`kbx81` (breaking-change)
|
||||||
|
- Refactor BedJet climate into Hub component :esphomepr:`3522` by :ghuser:`jhansche` (breaking-change)
|
||||||
|
|
||||||
|
All changes
|
||||||
|
^^^^^^^^^^^
|
||||||
|
|
||||||
|
- Refactor vl53l0x to remove code from header. :esphomepr:`3536` by :ghuser:`RoboMagus`
|
||||||
|
- Fix modbus user-defined function handling :esphomepr:`3527` by :ghuser:`gazoodle`
|
||||||
|
- Language schema 202204 :esphomepr:`3492` by :ghuser:`glmnet`
|
||||||
|
- Fix / Reverse order shutdown :esphomepr:`3585` by :ghuser:`RoboMagus`
|
||||||
|
- RestoringGlobalsComponent: Store value on shutdown :esphomepr:`3586` by :ghuser:`RoboMagus`
|
||||||
|
- Map LOLIN C3 mini board pins :esphomepr:`3587` by :ghuser:`mateusdemboski`
|
||||||
|
- Bump platformio to 6.0.2 :esphomepr:`3566` by :ghuser:`jesserockz`
|
||||||
|
- Bump pylint from 2.13.9 to 2.14.3 :esphomepr:`3589` by :ghuser:`dependabot[bot]`
|
||||||
|
- DAC7678 support :esphomepr:`3441` by :ghuser:`NickB1` (new-integration)
|
||||||
|
- Correcting ESP32 flash save/load key calculation algorithm :esphomepr:`3416` by :ghuser:`cinadr`
|
||||||
|
- Bump aioesphomeapi from 10.8.2 to 10.10.0 :esphomepr:`3590` by :ghuser:`dependabot[bot]`
|
||||||
|
- Do two substitutions passes to allow substitutions inside substitutions :esphomepr:`3583` by :ghuser:`jesserockz`
|
||||||
|
- Update actions :esphomepr:`3592` by :ghuser:`wrt54g`
|
||||||
|
- Add github-actions to dependabot :esphomepr:`3595` by :ghuser:`jesserockz`
|
||||||
|
- Fix some typos found by codespell :esphomepr:`3598` by :ghuser:`misery`
|
||||||
|
- #3358 Correct temperature validity detection issue in some conditions of pu… :esphomepr:`3545` by :ghuser:`Benoit3`
|
||||||
|
- Remove min_save_interval from intergration and total_daily_energy :esphomepr:`3498` by :ghuser:`jesserockz` (breaking-change)
|
||||||
|
- Bump zeroconf from 0.38.4 to 0.38.7 :esphomepr:`3562` by :ghuser:`dependabot[bot]`
|
||||||
|
- fix EDict to dict mapping in helpers.py :esphomepr:`3599` by :ghuser:`jpeletier`
|
||||||
|
- Fix slow_pwm output glitch :esphomepr:`3601` by :ghuser:`marshn`
|
||||||
|
- Bump pyupgrade from 2.32.1 to 2.34.0 :esphomepr:`3591` by :ghuser:`dependabot[bot]`
|
||||||
|
- Bump black from 22.3.0 to 22.6.0 :esphomepr:`3613` by :ghuser:`dependabot[bot]`
|
||||||
|
- Bump colorama from 0.4.4 to 0.4.5 :esphomepr:`3614` by :ghuser:`dependabot[bot]`
|
||||||
|
- Bump pylint from 2.14.3 to 2.14.4 :esphomepr:`3617` by :ghuser:`dependabot[bot]`
|
||||||
|
- Bump pytest-mock from 3.7.0 to 3.8.1 :esphomepr:`3616` by :ghuser:`dependabot[bot]`
|
||||||
|
- Update dfplayer condition function name :esphomepr:`3619` by :ghuser:`dab0g`
|
||||||
|
- Added more sensor device classes :esphomepr:`3624` by :ghuser:`lal12`
|
||||||
|
- Improvement pipsolar crc :esphomepr:`3316` by :ghuser:`andreashergert1984`
|
||||||
|
- Fix configuration constants in core. :esphomepr:`3652` by :ghuser:`RoboMagus`
|
||||||
|
- FIX: NVS preferences being written even if unchanged :esphomepr:`3647` by :ghuser:`jpeletier`
|
||||||
|
- Add 'set_total_pulses' action to 'pulse_counter' sensor. :esphomepr:`3640` by :ghuser:`RoboMagus`
|
||||||
|
- add option to publish initial state of binary sensors :esphomepr:`3636` by :ghuser:`ssieb`
|
||||||
|
- update packages: nginx-light-1.18.0-6.1+deb11u2 nano-5.4-2+deb11u1 :esphomepr:`3631` by :ghuser:`peterg79`
|
||||||
|
- Add support for SMT100 Soil Moisture Sensor :esphomepr:`3654` by :ghuser:`piechade` (new-integration)
|
||||||
|
- Rework NaN handling in sensor filters :esphomepr:`3610` by :ghuser:`DAVe3283` (breaking-change)
|
||||||
|
- Remove deprecated adc init call. :esphomepr:`3667` by :ghuser:`ssieb`
|
||||||
|
- List webserver service on MDNS if enabled. :esphomepr:`3662` by :ghuser:`RoboMagus`
|
||||||
|
- Show changes from python linting :esphomepr:`3677` by :ghuser:`jesserockz`
|
||||||
|
- dalybms: support changing the address :esphomepr:`3676` by :ghuser:`ssieb`
|
||||||
|
- Upgrade rweather/Crypto from 0.2.0 to 0.4.0 :esphomepr:`3593` by :ghuser:`sybrenstuvel`
|
||||||
|
- Allow GPIO20 for ESP32 :esphomepr:`3680` by :ghuser:`ashald`
|
||||||
|
- Remove old unused code in mcp23xxx_base :esphomepr:`3685` by :ghuser:`jesserockz`
|
||||||
|
- Adding option to report signal strength on pvvx_mithermometer :esphomepr:`3688` by :ghuser:`doolbneerg`
|
||||||
|
- Pass optional args to 'new_Pvariable' when creating new entities :esphomepr:`3690` by :ghuser:`RoboMagus`
|
||||||
|
- fix sx1509 use of pullup and pulldown :esphomepr:`3689` by :ghuser:`ssieb`
|
||||||
|
- Add a soft reset in setup() for bme280. :esphomepr:`3615` by :ghuser:`dbaarda`
|
||||||
|
- Add get_ap() method to WiFi :esphomepr:`3684` by :ghuser:`anatoly-savchenkov`
|
||||||
|
- Extend ST7789V component to support additional displays :esphomepr:`3651` by :ghuser:`kbx81` (breaking-change)
|
||||||
|
- Fix panic abort when BLEClient reconnects :esphomepr:`3594` by :ghuser:`dentra`
|
||||||
|
- Introduces ble_client.ble_write Action :esphomepr:`3398` by :ghuser:`rbaron`
|
||||||
|
- Add helpers to switch python for schema and codegen :esphomepr:`3693` by :ghuser:`jesserockz`
|
||||||
|
- Refactor BedJet climate into Hub component :esphomepr:`3522` by :ghuser:`jhansche` (breaking-change)
|
||||||
|
- Added support for setting the current animation frame :esphomepr:`3681` by :ghuser:`davestubbs`
|
||||||
|
- Adding support for Whynter ARC-14S/SH Air Conditioners :esphomepr:`3641` by :ghuser:`aeonsablaze` (new-integration)
|
||||||
|
- Sprinkler controller component :esphomepr:`2249` by :ghuser:`kbx81` (new-integration)
|
||||||
|
- add gradient color :esphomepr:`3687` by :ghuser:`nielsnl68`
|
||||||
|
- [Nextion] Add on_page trigger :esphomepr:`3673` by :ghuser:`anatoly-savchenkov`
|
||||||
|
- Bump pyupgrade from 2.34.0 to 2.37.3 :esphomepr:`3670` by :ghuser:`dependabot[bot]`
|
||||||
|
- Bump aioesphomeapi from 10.10.0 to 10.11.0 :esphomepr:`3669` by :ghuser:`dependabot[bot]`
|
||||||
|
- Create feedback cover component :esphomepr:`3253` by :ghuser:`ianchi` (new-integration)
|
||||||
|
- Bump pytest-asyncio from 0.18.3 to 0.19.0 :esphomepr:`3695` by :ghuser:`dependabot[bot]`
|
||||||
|
- Bump zeroconf from 0.38.7 to 0.39.0 :esphomepr:`3694` by :ghuser:`dependabot[bot]`
|
||||||
|
- Bump pytest-mock from 3.8.1 to 3.8.2 :esphomepr:`3622` by :ghuser:`dependabot[bot]`
|
||||||
|
- Bump flake8 from 4.0.1 to 5.0.4 :esphomepr:`3703` by :ghuser:`dependabot[bot]`
|
||||||
|
- Bump pylint from 2.14.4 to 2.14.5 :esphomepr:`3697` by :ghuser:`dependabot[bot]`
|
||||||
|
- Add priority to on_shutdown trigger :esphomepr:`3644` by :ghuser:`RoboMagus`
|
||||||
|
|
||||||
|
Past Changelogs
|
||||||
|
---------------
|
||||||
|
|
||||||
|
- :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`
|
@ -2,7 +2,7 @@ Changelog
|
|||||||
=========
|
=========
|
||||||
|
|
||||||
.. redirect::
|
.. redirect::
|
||||||
:url: /changelog/2022.6.0.html
|
:url: /changelog/2022.8.0.html
|
||||||
|
|
||||||
.. toctree::
|
.. toctree::
|
||||||
:glob:
|
:glob:
|
||||||
|
@ -60,6 +60,8 @@ Advanced options:
|
|||||||
- **disabled_by_default** (*Optional*, boolean): If true, then this entity should not be added to any client's frontend,
|
- **disabled_by_default** (*Optional*, boolean): If true, then this entity should not be added to any client's frontend,
|
||||||
(usually Home Assistant) without the user manually enabling it (via the Home Assistant UI).
|
(usually Home Assistant) without the user manually enabling it (via the Home Assistant UI).
|
||||||
Requires Home Assistant 2021.9 or newer. Defaults to ``false``.
|
Requires Home Assistant 2021.9 or newer. Defaults to ``false``.
|
||||||
|
- **publish_initial_state** (*Optional*, boolean): If true, then the sensor will publish its initial state at boot or when
|
||||||
|
HA first connects, depending on the platform. This means that any applicable triggers will be run. Defaults to ``false``.
|
||||||
- **entity_category** (*Optional*, string): The category of the entity.
|
- **entity_category** (*Optional*, string): The category of the entity.
|
||||||
See https://developers.home-assistant.io/docs/core/entity/#generic-properties
|
See https://developers.home-assistant.io/docs/core/entity/#generic-properties
|
||||||
for a list of available options. Requires Home Assistant 2021.11 or newer.
|
for a list of available options. Requires Home Assistant 2021.11 or newer.
|
||||||
|
@ -91,6 +91,34 @@ This automation is triggered when the client disconnects from a BLE device.
|
|||||||
- lambda: |-
|
- lambda: |-
|
||||||
ESP_LOGD("ble_client_lambda", "Disconnected from BLE device");
|
ESP_LOGD("ble_client_lambda", "Disconnected from BLE device");
|
||||||
|
|
||||||
|
.. _ble_client-ble_write_action:
|
||||||
|
|
||||||
|
``ble_client.ble_write`` Action
|
||||||
|
-------------------------------
|
||||||
|
|
||||||
|
This action triggers a write to a specified BLE characteristic. The write is attempted in
|
||||||
|
a best-effort fashion and will only succeed if the `ble_client`'s connection has been
|
||||||
|
established and the peripheral exposes the expected BLE service and characteristic.
|
||||||
|
|
||||||
|
Example usage:
|
||||||
|
|
||||||
|
.. code-block:: yaml
|
||||||
|
|
||||||
|
ble_client:
|
||||||
|
- mac_address: 11:22:33:44:55:66
|
||||||
|
id: my_ble_client
|
||||||
|
|
||||||
|
switch:
|
||||||
|
- platform: template
|
||||||
|
name: "My Switch"
|
||||||
|
turn_on_action:
|
||||||
|
- ble_client.ble_write:
|
||||||
|
id: my_ble_client
|
||||||
|
service_uuid: F61E3BE9-2826-A81B-970A-4D4DECFABBAE
|
||||||
|
characteristic_uuid: 6490FAFE-0734-732C-8705-91B653A081FC
|
||||||
|
# List of bytes to write.
|
||||||
|
value: [0x01, 0xab, 0xff]
|
||||||
|
|
||||||
BLE Overview
|
BLE Overview
|
||||||
------------
|
------------
|
||||||
This section gives a brief overview of the Bluetooth LE architecture
|
This section gives a brief overview of the Bluetooth LE architecture
|
||||||
|
@ -5,8 +5,8 @@ BedJet
|
|||||||
:description: Instructions for setting up a BedJet climate device.
|
:description: Instructions for setting up a BedJet climate device.
|
||||||
:image: bedjet.png
|
:image: bedjet.png
|
||||||
|
|
||||||
The ``bedjet`` climate platform creates a climate device which can be used to control
|
The ``bedjet`` component allows you to communicate with a BedJet V3 Climate Comfort
|
||||||
a BedJet V3 Climate Comfort Sleep System.
|
Sleep System.
|
||||||
|
|
||||||
This component supports the following functionality:
|
This component supports the following functionality:
|
||||||
|
|
||||||
@ -16,36 +16,40 @@ This component supports the following functionality:
|
|||||||
- Start one of the saved memory presets, including "Biorhythm" programs
|
- Start one of the saved memory presets, including "Biorhythm" programs
|
||||||
- Show the current status of the BedJet
|
- Show the current status of the BedJet
|
||||||
|
|
||||||
This platform uses the BLE peripheral on an ESP32, so you also need to enable
|
This component uses the BLE peripheral on an ESP32, so you also need to enable
|
||||||
this component. Please see the :doc:`/components/ble_client` docs for how to discover the MAC
|
this component. Please see the :doc:`/components/ble_client` docs for how to discover the MAC
|
||||||
address of your BedJet device, or you can find the list of paired MAC addresses in
|
address of your BedJet device, or you can find the list of paired MAC addresses in
|
||||||
the "DEVICE LIST" section of the BedJet mobile application.
|
the "DEVICE LIST" section of the BedJet mobile application.
|
||||||
|
|
||||||
|
Component/Hub
|
||||||
|
-------------
|
||||||
|
|
||||||
|
This component is a global hub that maintains the connection to the BedJet device
|
||||||
|
and delegates status updates to individual platform components.
|
||||||
|
|
||||||
.. code-block:: yaml
|
.. code-block:: yaml
|
||||||
|
|
||||||
ble_client:
|
esp32_ble_tracker:
|
||||||
- mac_address: 11:22:33:aa:bb:cc
|
|
||||||
id: ble_bedjet
|
|
||||||
|
|
||||||
climate:
|
ble_client:
|
||||||
- platform: bedjet
|
- mac_address: C4:4F:33:00:00:01
|
||||||
id: my_bedjet_fan
|
id: bedjet_ble_id1
|
||||||
name: "My BedJet Fan"
|
|
||||||
ble_client_id: ble_bedjet
|
bedjet:
|
||||||
|
- id: bedjet_1
|
||||||
|
ble_client_id: bedjet_ble_id1
|
||||||
|
|
||||||
Configuration variables:
|
Configuration variables:
|
||||||
------------------------
|
************************
|
||||||
|
|
||||||
- **id** (*Optional*, :ref:`config-id`): Manually specify the ID used for code generation.
|
- **id** (*Optional*, :ref:`config-id`): Manually specify the ID used for code generation.
|
||||||
- **name** (**Required**, string): The name of the climate device.
|
|
||||||
- **ble_client_id** (**Required**, :ref:`config-id`): The ID of the BLE Client.
|
- **ble_client_id** (**Required**, :ref:`config-id`): The ID of the BLE Client.
|
||||||
- **time_id** (*Optional*, :ref:`config-id`): The ID of a :ref:`Time Component <time>` which
|
- **time_id** (*Optional*, :ref:`config-id`): The ID of a :ref:`Time Component <time>` which
|
||||||
can be used to set the time on the BedJet device.
|
can be used to set the time on the BedJet device.
|
||||||
- **heat_mode** (*Optional*, string): The primary heating mode to use for `HVACMode.HEAT`:
|
- **update_interval** (*Optional*, :ref:`config-time`): The interval to dispatch status
|
||||||
- ``"heat"`` (Default) - Setting ``hvac_mode=heat`` uses the BedJet "HEAT" mode.
|
changes to child components. Defaults to ``5s``. Each child component can decide whether to
|
||||||
- ``"extended"`` - Setting ``hvac_mode=heat`` uses BedJet "EXT HEAT" mode.
|
publish its own updated state on this interval, or use another (longer) update interval to
|
||||||
- Whichever is not selected will be made available as a custom preset.
|
throttle its own updates.
|
||||||
- All other options from :ref:`Climate <config-climate>`.
|
|
||||||
|
|
||||||
lambda calls
|
lambda calls
|
||||||
************
|
************
|
||||||
@ -58,11 +62,37 @@ From :ref:`lambdas <config-lambda>`, you can call methods to do some advanced st
|
|||||||
|
|
||||||
button:
|
button:
|
||||||
- platform: template
|
- platform: template
|
||||||
name: "Check Bedjet Firmware"
|
name: "Check Bedjet(1) Firmware"
|
||||||
on_press:
|
on_press:
|
||||||
then:
|
then:
|
||||||
- lambda: |-
|
- lambda: |-
|
||||||
id(my_bedjet_fan).upgrade_firmware();
|
id(bedjet_1).upgrade_firmware();
|
||||||
|
|
||||||
|
``bedjet`` Climate Platform
|
||||||
|
---------------------------
|
||||||
|
|
||||||
|
The `climate` platform exposes the BedJet's climate-related functionality, including
|
||||||
|
setting the mode and target temperature.
|
||||||
|
|
||||||
|
.. code-block:: yaml
|
||||||
|
|
||||||
|
climate:
|
||||||
|
- platform: bedjet
|
||||||
|
id: my_bedjet_climate_entity
|
||||||
|
name: "My BedJet"
|
||||||
|
bedjet_id: bedjet_1
|
||||||
|
|
||||||
|
Configuration variables:
|
||||||
|
************************
|
||||||
|
|
||||||
|
- **id** (*Optional*, :ref:`config-id`): Manually specify the ID used for code generation.
|
||||||
|
- **name** (**Required**, string): The name of the climate device.
|
||||||
|
- **bedjet_id** (**Required**, :ref:`config-id`): The ID of the Bedjet component.
|
||||||
|
- **heat_mode** (*Optional*, string): The primary heating mode to use for ``HVACMode.HEAT``:
|
||||||
|
- ``"heat"`` (Default) - Setting ``hvac_mode=heat`` uses the BedJet "HEAT" mode.
|
||||||
|
- ``"extended"`` - Setting ``hvac_mode=heat`` uses BedJet "EXT HEAT" mode.
|
||||||
|
- Whichever is not selected will be made available as a custom preset.
|
||||||
|
- All other options from :ref:`Climate <config-climate>`.
|
||||||
|
|
||||||
- ``.send_local_time``: If `time_id` is set, attempt to sync the clock now.
|
- ``.send_local_time``: If `time_id` is set, attempt to sync the clock now.
|
||||||
|
|
||||||
|
@ -48,6 +48,8 @@ submit a feature request (see FAQ).
|
|||||||
+---------------------------------------+---------------------+----------------------+
|
+---------------------------------------+---------------------+----------------------+
|
||||||
| Yashima | ``yashima`` | |
|
| Yashima | ``yashima`` | |
|
||||||
+---------------------------------------+---------------------+----------------------+
|
+---------------------------------------+---------------------+----------------------+
|
||||||
|
| :ref:`Whynter<whynter>` | ``whynter`` | yes |
|
||||||
|
+---------------------------------------+---------------------+----------------------+
|
||||||
|
|
||||||
This component requires that you have configured a :doc:`/components/remote_transmitter`.
|
This component requires that you have configured a :doc:`/components/remote_transmitter`.
|
||||||
|
|
||||||
@ -270,6 +272,29 @@ Configuration variables:
|
|||||||
- ``DG11J1-3A``: Temperature range is from 18 to 32 (default)
|
- ``DG11J1-3A``: Temperature range is from 18 to 32 (default)
|
||||||
- ``DG11J1-91``: Temperature range is from 16 to 30
|
- ``DG11J1-91``: Temperature range is from 16 to 30
|
||||||
|
|
||||||
|
.. _whynter:
|
||||||
|
|
||||||
|
``whynter`` Climate
|
||||||
|
-------------------------
|
||||||
|
|
||||||
|
Additional configuration is available for this platform
|
||||||
|
|
||||||
|
|
||||||
|
Configuration variables:
|
||||||
|
|
||||||
|
- **use_fahrenheit** (*Optional*, boolean): Allows you to transfer the temperature to the air conditioner in degrees Fahrenheit. The air conditioner display also shows the temperature in Fahrenheit. Defaults to ``false``.
|
||||||
|
|
||||||
|
.. code-block:: yaml
|
||||||
|
|
||||||
|
# Example configuration entry
|
||||||
|
climate:
|
||||||
|
- platform: whynter
|
||||||
|
name: "AC"
|
||||||
|
sensor: room_temperature
|
||||||
|
use_fahrenheit: true
|
||||||
|
supports_heat: true
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
See Also
|
See Also
|
||||||
--------
|
--------
|
||||||
|
267
components/cover/feedback.rst
Normal file
@ -0,0 +1,267 @@
|
|||||||
|
Feedback Cover
|
||||||
|
==============
|
||||||
|
|
||||||
|
.. seo::
|
||||||
|
:description: Instructions for setting up feedback covers in ESPHome.
|
||||||
|
|
||||||
|
The ``feedback`` cover platform allows you to create covers with position control that
|
||||||
|
can optionally have feedback from sensors to detect the fully-open and fully-closed states (endstops),
|
||||||
|
and from sensors to detect actual movement (opening/closing). In all the cases the current
|
||||||
|
position is approximated with the time the cover has been moving in a direction.
|
||||||
|
|
||||||
|
It supports *open*, *close*, *stop* and *toggle* actions. Tilt control is not supported.
|
||||||
|
|
||||||
|
.. figure:: images/more-info-ui.png
|
||||||
|
:align: center
|
||||||
|
:width: 50.0%
|
||||||
|
|
||||||
|
.. code-block:: yaml
|
||||||
|
|
||||||
|
# Example configuration entry
|
||||||
|
cover:
|
||||||
|
- platform: feedback
|
||||||
|
name: "Gate"
|
||||||
|
|
||||||
|
open_action:
|
||||||
|
- switch.turn_on: open_cover_switch
|
||||||
|
open_duration: 2.1min
|
||||||
|
open_endstop: open_endstop_binary_sensor
|
||||||
|
open_sensor: open_movement_binary_sensor
|
||||||
|
|
||||||
|
close_action:
|
||||||
|
- switch.turn_on: close_cover_switch
|
||||||
|
close_duration: 2min
|
||||||
|
close_endstop: close_endstop_binary_sensor
|
||||||
|
close_sensor: close_movement_binary_sensor
|
||||||
|
|
||||||
|
stop_action:
|
||||||
|
- switch.turn_off: open_cover_switch
|
||||||
|
- switch.turn_off: close_cover_switch
|
||||||
|
|
||||||
|
Use Cases
|
||||||
|
---------
|
||||||
|
|
||||||
|
It is a versatile cover that can accommodate for a number of DIY setups, or monitoring an externally controlled cover:
|
||||||
|
|
||||||
|
Time-Based
|
||||||
|
**********
|
||||||
|
|
||||||
|
Simplest case, when no sensors are available. The state is thus assumed.
|
||||||
|
|
||||||
|
It is a drop-in replacement of :doc:`/components/cover/time_based`
|
||||||
|
|
||||||
|
Endstop Sensors
|
||||||
|
***************
|
||||||
|
|
||||||
|
For cases where there are endstops at one or both ends of the cover to detect the fully-open and fully-closed states.
|
||||||
|
When any of these endstops are reached, an actual state is read and updated and the cover optionally
|
||||||
|
stopped (via ``stop_action``). The state is not assumed.
|
||||||
|
|
||||||
|
The extension also handles the case where the cover has builtin endstops, which stops the movement, independently to
|
||||||
|
the component's logic. In this case, when the cover is fully closed (either if timed based or sensor based) the
|
||||||
|
``stop_action`` is not triggered.
|
||||||
|
|
||||||
|
It is a drop-in replacement of :doc:`/components/cover/endstop`.
|
||||||
|
|
||||||
|
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).
|
||||||
|
|
||||||
|
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.
|
||||||
|
When the movement stops (with no stop action being requested) it is assumed that it was caused by
|
||||||
|
the builtin endstops, and so the close/open state (according to current direction) was reached.
|
||||||
|
This function is activated setting ``infer_endstop`` to True.
|
||||||
|
|
||||||
|
It can be used to replace a :doc:`/components/cover/current_based`, with some modifications in the yaml. See :ref:`migrating_current_based`
|
||||||
|
|
||||||
|
Safety Features
|
||||||
|
---------------
|
||||||
|
|
||||||
|
To protect the cover hardware from damage, some safety options are available:
|
||||||
|
|
||||||
|
- *Max duration*, to protect from faulty endstops
|
||||||
|
- *Direction change wait time*, like an interlock wait time, to protect motors from sudden direction changes
|
||||||
|
- *Obstacle sensors* and *rollback*, possibility to stop and optionally rollback the cover when some external sensors detects an obstacle
|
||||||
|
(it might be a sensor for high current consumption or an infrared light detecting an obstruction in the path).
|
||||||
|
|
||||||
|
|
||||||
|
Configuration variables
|
||||||
|
-----------------------
|
||||||
|
|
||||||
|
- **name** (**Required**, string): The name of the cover.
|
||||||
|
- **id** (*Optional*, :ref:`config-id`): Manually specify the ID used for code generation.
|
||||||
|
|
||||||
|
- **stop_action** (**Required**, :ref:`Action <config-action>`): The action that should
|
||||||
|
be performed when the remote requests the cover to be closed or an endstop is reached.
|
||||||
|
|
||||||
|
Open options:
|
||||||
|
|
||||||
|
- **open_action** (**Required**, :ref:`Action <config-action>`): The action that should
|
||||||
|
be performed when the remote requests the cover to be opened.
|
||||||
|
- **open_duration** (**Required**, :ref:`config-time`): The amount of time it takes the cover
|
||||||
|
to open up from the fully-closed state.
|
||||||
|
- **open_endstop** (**Optional**, :ref:`config-id`): The ID of the
|
||||||
|
:ref:`Binary Sensor <config-binary_sensor>` that turns on when the open position is reached.
|
||||||
|
- **open_sensor** (**Optional**, :ref:`config-id`): The ID of the
|
||||||
|
:ref:`Binary Sensor <config-binary_sensor>` that turns on when the cover is moving in the open direction.
|
||||||
|
- **open_obstacle_sensor** (**Optional**, :ref:`config-id`): The ID of the
|
||||||
|
:ref:`Binary Sensor <config-binary_sensor>` that turns on when an obstacle that blocks the
|
||||||
|
open direction is detected.
|
||||||
|
|
||||||
|
Close options:
|
||||||
|
|
||||||
|
- **close_action** (**Required**, :ref:`Action <config-action>`): The action that should
|
||||||
|
be performed when the remote requests the cover to be closed.
|
||||||
|
- **close_duration** (**Required**, :ref:`config-time`): The amount of time it takes the cover
|
||||||
|
to close from the fully-open state.
|
||||||
|
- **close_endstop** (**Optional**, :ref:`config-id`): The ID of the
|
||||||
|
:ref:`Binary Sensor <config-binary_sensor>` that turns on when the closed position is reached.
|
||||||
|
- **close_sensor** (**Optional**, :ref:`config-id`): The ID of the
|
||||||
|
:ref:`Binary Sensor <config-binary_sensor>` that turns on when the cover is moving in the close direction.
|
||||||
|
- **close_obstacle_sensor** (**Optional**, :ref:`config-id`): The ID of the
|
||||||
|
:ref:`Binary Sensor <config-binary_sensor>` that turns on when an obstacle that blocks the
|
||||||
|
close direction is detected.
|
||||||
|
|
||||||
|
Additional options:
|
||||||
|
|
||||||
|
- **has_built_in_endstop** (*Optional*, boolean): Indicates that the cover has built in end stop
|
||||||
|
detectors. In this configuration the ``stop_action`` is not performed when the open or close
|
||||||
|
time is completed and if the cover is commanded to open or close the corresponding actions
|
||||||
|
will be performed without checking current state. Defaults to ``false``.
|
||||||
|
- **infer_endstop_from_movement** (*Optional*, boolean): Whether to infer endstop state from the movement sensor.
|
||||||
|
Requires movement sensors to be set, no endstop sensors and to have builtin endstops. Defaults to ``false``.
|
||||||
|
- **assumed_state** (*Optional*, boolean): Whether the true state of the cover is not known.
|
||||||
|
This will make the Home Assistant frontend show buttons for both OPEN and CLOSE actions, instead
|
||||||
|
of hiding or disabling one of them. Defaults to ``true`` if no sensor is available to known
|
||||||
|
the actual state of the cover.
|
||||||
|
- **max_duration** (*Optional*, :ref:`config-time`): The maximum duration the cover should be opening
|
||||||
|
or closing. Useful for protecting from dysfunctional endstops.
|
||||||
|
Requires internal, builtin or inferred endstops.
|
||||||
|
- **direction_change_wait_time** (*Optional*, :ref:`config-time`): Stops cover and forces a wait time between changes in direction,
|
||||||
|
and takes it into account when computing cover position (useful to protect motors).
|
||||||
|
When this option is set (even at 0s) if an open/close action is invoked while the cover is moving in the opposite direction,
|
||||||
|
then and intermediate stop action will be invoked to generate the delay.
|
||||||
|
- **acceleration_wait_time** (*Optional*, :ref:`config-time`): Considers a wait time needed by the cover to actually
|
||||||
|
start moving after command is issued and takes it into account when computing cover position
|
||||||
|
(useful for heavy covers with large inertia).
|
||||||
|
Intended to not accumulate error when doing multiple partial open/close actions).
|
||||||
|
The open/close duration includes one instance of this delay, as it is the total amount of time from
|
||||||
|
issuing a command to reaching endstop.
|
||||||
|
Defaults to ``0s``.
|
||||||
|
- **update_interval** (*Optional*, :ref:`config-time`): The interval
|
||||||
|
to publish updated position information to the UI while the cover is moving.
|
||||||
|
Defaults to ``1s``.
|
||||||
|
- **obstacle_rollback** (*Optional*, percentage): The percentage of rollback the cover will perform in case of
|
||||||
|
obstacle detection while moving. Defaults to ``10%``.
|
||||||
|
- All other options from :ref:`Cover <config-cover>`.
|
||||||
|
|
||||||
|
Example Configurations
|
||||||
|
----------------------
|
||||||
|
|
||||||
|
.. _migrating_current_based:
|
||||||
|
|
||||||
|
Migrating Current-Based Cover
|
||||||
|
*****************************
|
||||||
|
|
||||||
|
Most options can be left untouched, but some modifications are needed:
|
||||||
|
|
||||||
|
|
||||||
|
1. All current sensing related options must be moved to auxiliary :doc:`/components/binary_sensor/analog_threshold`,
|
||||||
|
to convert current readings to binary sensors, using the corresponding thresholds and delays.
|
||||||
|
|
||||||
|
If there where any open/close obstacle current threshold defined, a separate binary sensor with that threshold should be defined.
|
||||||
|
The option ``start_sensing_delay`` should be directly replaced by a ``delayed_off`` filter in the movement sensors, or alternatively
|
||||||
|
hysteresis options could be used to reduce the noise.
|
||||||
|
2. To have the very same behavior implicit in current based cover, you must always set ``has_built_in_endstop`` and ``infer_endstop_from_movement``
|
||||||
|
to True.
|
||||||
|
|
||||||
|
.. code-block:: yaml
|
||||||
|
|
||||||
|
# Example original sensor configuration
|
||||||
|
cover:
|
||||||
|
- platform: current_based
|
||||||
|
name: "Current Based Cover"
|
||||||
|
|
||||||
|
open_sensor: open_current_sensor
|
||||||
|
open_moving_current_threshold: 0.5
|
||||||
|
open_obstacle_current_threshold: 0.8
|
||||||
|
start_sensing_delay: 0.8s
|
||||||
|
# ...rest of options
|
||||||
|
|
||||||
|
# Example converted sensor configuration
|
||||||
|
binary_sensor:
|
||||||
|
- platform: analog_threshold
|
||||||
|
id: open_binary_sensor
|
||||||
|
sensor_id: open_current_sensor
|
||||||
|
threshold: 0.5
|
||||||
|
filter:
|
||||||
|
- delayed_off: 0.8s
|
||||||
|
- platform: analog_threshold
|
||||||
|
id: open_obstacle_binary_sensor
|
||||||
|
sensor_id: open_current_sensor
|
||||||
|
threshold: 0.8
|
||||||
|
# ... repeat for close sensors
|
||||||
|
|
||||||
|
cover:
|
||||||
|
- platform: feedback
|
||||||
|
name: "Feedback Based Cover"
|
||||||
|
has_built_in_endstop: true
|
||||||
|
infer_endstop_from_movement: true
|
||||||
|
|
||||||
|
open_sensor: open_binary_sensor
|
||||||
|
open_obstacle_sensor: open_obstacle_binary_sensor
|
||||||
|
#... rest of options
|
||||||
|
|
||||||
|
3. Malfunction detection is not directly supported by Feedback Cover, as the malfunction was very narrowly defined to a specif use case
|
||||||
|
(while in other hardware configurations, the same situation is perfectly valid).
|
||||||
|
|
||||||
|
The malfunction alerted specifically when there was current in the opposite direction of the requested operation (possibly due to a relay welded).
|
||||||
|
This detection can still be achieved by putting the logic directly in the switch, (or whatever needed according to your specific use case).
|
||||||
|
|
||||||
|
.. code-block:: yaml
|
||||||
|
|
||||||
|
# Example original malfunction configuration
|
||||||
|
cover:
|
||||||
|
- platform: current_based
|
||||||
|
close_sensor: close_current
|
||||||
|
close_action:
|
||||||
|
- switch.turn_on: open_relay
|
||||||
|
open_sensor: open_current
|
||||||
|
open_action:
|
||||||
|
- switch.turn_on: open_relay
|
||||||
|
|
||||||
|
malfunction_detection: true
|
||||||
|
malfunction_action:
|
||||||
|
- logger.log: "Malfunction detected. Relay welded."
|
||||||
|
#... rest of options
|
||||||
|
|
||||||
|
# Example converted malfunction configuration
|
||||||
|
switch:
|
||||||
|
- platform: gpio
|
||||||
|
id: open_relay
|
||||||
|
#... rest of options
|
||||||
|
on_turn_off:
|
||||||
|
- delay: 200ms #allow for switching time and any discharge
|
||||||
|
- if:
|
||||||
|
condition:
|
||||||
|
binary_sensor.is_on: open_binary_sensor
|
||||||
|
# alternative can check directly
|
||||||
|
# on sensor.in_range open_current
|
||||||
|
then:
|
||||||
|
- logger.log: "Malfunction detected. Relay welded."
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
See Also
|
||||||
|
--------
|
||||||
|
|
||||||
|
- :doc:`index`
|
||||||
|
- :ref:`automation`
|
||||||
|
- :apiref:`feedback/feedback_cover.h`
|
||||||
|
- :ghedit:`Edit`
|
@ -625,7 +625,7 @@ Animation
|
|||||||
*********
|
*********
|
||||||
|
|
||||||
Allows to use animated images on displays. Animation inherits all options from the image component.
|
Allows to use animated images on displays. Animation inherits all options from the image component.
|
||||||
It adds additional lambda methods: ``next_frame()`` and ``prev_frame()`` to change the shown picture of a gif.
|
It adds additional lambda methods: ``next_frame()``, ``prev_frame()`` and ``set_frame()`` to change the shown picture of a gif.
|
||||||
|
|
||||||
.. code-block:: yaml
|
.. code-block:: yaml
|
||||||
|
|
||||||
@ -636,7 +636,7 @@ It adds additional lambda methods: ``next_frame()`` and ``prev_frame()`` to chan
|
|||||||
|
|
||||||
The animation can be rendered just like the image component with the ``image()`` function of the display component.
|
The animation can be rendered just like the image component with the ``image()`` function of the display component.
|
||||||
|
|
||||||
To show the next frame of the animation call ``id(my_animation).next_frame()``, to show the previous picture use ``id(my_animation).prev_frame()``.
|
To show the next frame of the animation call ``id(my_animation).next_frame()``, to show the previous picture use ``id(my_animation).prev_frame()``. To show a specific picture use ``id(my_animation).set_frame(int frame)``.
|
||||||
This can be combined with all Lambdas:
|
This can be combined with all Lambdas:
|
||||||
|
|
||||||
.. code-block:: yaml
|
.. code-block:: yaml
|
||||||
|
@ -63,12 +63,13 @@ Configuration variables:
|
|||||||
Defaults to ``5s``.
|
Defaults to ``5s``.
|
||||||
- **id** (*Optional*, :ref:`config-id`): Manually specify the ID used for code generation.
|
- **id** (*Optional*, :ref:`config-id`): Manually specify the ID used for code generation.
|
||||||
- **tft_url** (*Optional*, string): The URL to download the TFT file from for updates. See :ref:`Nextion Upload <nextion_upload_tft>`.
|
- **tft_url** (*Optional*, string): The URL to download the TFT file from for updates. See :ref:`Nextion Upload <nextion_upload_tft>`.
|
||||||
- **on_sleep** (*Optional*, :ref:`Action <config-action>`): An automation to perform when the Nextion goes to sleep.
|
|
||||||
- **on_wake** (*Optional*, :ref:`Action <config-action>`): An automation to perform when the Nextion wakes up.
|
|
||||||
- **touch_sleep_timeout** (*Optional*, int): Sets internal No-touch-then-sleep timer in seconds.
|
- **touch_sleep_timeout** (*Optional*, int): Sets internal No-touch-then-sleep timer in seconds.
|
||||||
- **wake_up_page** (*Optional*, int): Sets the page to display after waking up
|
- **wake_up_page** (*Optional*, int): Sets the page to display after waking up
|
||||||
- **auto_wake_on_touch** (*Optional*, boolean): Sets if Nextion should auto-wake from sleep when touch press occurs.
|
- **auto_wake_on_touch** (*Optional*, boolean): Sets if Nextion should auto-wake from sleep when touch press occurs.
|
||||||
|
- **on_setup** (*Optional*, :ref:`Action <config-action>`): An action to be performed after ESPHome connects to the Nextion. See :ref:`Nextion Automation <nextion-on_setup>`.
|
||||||
|
- **on_sleep** (*Optional*, :ref:`Action <config-action>`): An action to be performed when the Nextion goes to sleep. See :ref:`Nextion Automation <nextion-on_sleep>`.
|
||||||
|
- **on_wake** (*Optional*, :ref:`Action <config-action>`): An action to be performed when the Nextion wakes up. See :ref:`Nextion Automation <nextion-on_sleep>`.
|
||||||
|
- **on_page** (*Optional*, :ref:`Action <config-action>`): An action to be performed after a page change. See :ref:`Nextion Automation <nextion-on_page>`.
|
||||||
|
|
||||||
.. _display-nextion_lambda:
|
.. _display-nextion_lambda:
|
||||||
|
|
||||||
@ -108,7 +109,7 @@ Please see :ref:`display-printf` for a quick introduction into the ``printf`` fo
|
|||||||
Lambda Calls
|
Lambda Calls
|
||||||
************
|
************
|
||||||
|
|
||||||
Several methods are available for use within :ref:`lambdas <config-lambda>` ; these permit advanced functionality beyond simple
|
Several methods are available for use within :ref:`lambdas <config-lambda>`; these permit advanced functionality beyond simple
|
||||||
display updates. See the full :apiref:`nextion/nextion.h` for more info.
|
display updates. See the full :apiref:`nextion/nextion.h` for more info.
|
||||||
|
|
||||||
.. _nextion_upload_tft:
|
.. _nextion_upload_tft:
|
||||||
@ -182,6 +183,80 @@ The developer tools in Home Assistant can be used to trigger the update. The bel
|
|||||||
- WAVEFORM_SENSOR 4
|
- WAVEFORM_SENSOR 4
|
||||||
- NO_RESULT 5
|
- NO_RESULT 5
|
||||||
|
|
||||||
|
.. _display-nextion_automation:
|
||||||
|
|
||||||
|
Nextion Automation
|
||||||
|
------------------
|
||||||
|
|
||||||
|
With Nextion displays, it's possible to define several automation actions. Depending on your setup, you may or may not need to use some of them.
|
||||||
|
|
||||||
|
.. _nextion-on_setup:
|
||||||
|
|
||||||
|
``on_setup``
|
||||||
|
************
|
||||||
|
|
||||||
|
This automation will be triggered once ESP establishes a connection with Nextion. This happens after a boot up and may take some
|
||||||
|
noticeable time (e.g. hundreds of milliseconds) to establish a connection over UART. Typical use scenario for this automation is choosing of the initial
|
||||||
|
page to display depending on some runtime conditions or simply showing a page with a non-zero index (Nextion shows page 0 by default).
|
||||||
|
|
||||||
|
.. code-block:: yaml
|
||||||
|
|
||||||
|
wifi:
|
||||||
|
ap: {} # This spawns an AP with the device name and mac address with no password.
|
||||||
|
|
||||||
|
captive_portal:
|
||||||
|
|
||||||
|
display:
|
||||||
|
- platform: nextion
|
||||||
|
id: disp
|
||||||
|
on_setup:
|
||||||
|
then:
|
||||||
|
lambda: |-
|
||||||
|
// Check if WiFi hot-spot is configured
|
||||||
|
if (wifi::global_wifi_component->has_sta()) {
|
||||||
|
// Show the main page
|
||||||
|
id(disp).goto_page("main_page");
|
||||||
|
} else {
|
||||||
|
// Show WiFi Access Point QR code for captive portal, see https://qifi.org/
|
||||||
|
id(disp).goto_page("wifi_qr_page");
|
||||||
|
}
|
||||||
|
|
||||||
|
.. _nextion-on_sleep:
|
||||||
|
|
||||||
|
``on_sleep / on_wake``
|
||||||
|
**********************
|
||||||
|
|
||||||
|
The action is called before and after Nextion goes to sleep mode. Nextion is not responsive while in sleep mode. Use these triggers to prepare your code
|
||||||
|
for that and :ref:`force-update <nextion_update_all_components>` the on-screen content once it's back.
|
||||||
|
|
||||||
|
.. _nextion-on_page:
|
||||||
|
|
||||||
|
``on_page``
|
||||||
|
***********
|
||||||
|
|
||||||
|
This automation is triggered when a page is changed on the Nextion display. This includes both ESP and Nextion initiated page changes.
|
||||||
|
ESP initiates a page change by calling ``goto_page("page_name")`` function. Nextion can change pages as a reaction to user's activity (e.g. clicks) or using a timer.
|
||||||
|
In either case, this automation can be helpful to update on-screen controls for the newly displayed page.
|
||||||
|
|
||||||
|
If you fully own your Nextoin HMI design and follow the best practice of setting the components' vscope to global in the Nextion Editor, you'll probably never need this trigger.
|
||||||
|
However, if this is not the case and all / some of your UI components have local visibility scope, ``on_page`` will be your remedy. Here you can initiate updates of the relevant components.
|
||||||
|
|
||||||
|
Before actually updating components, you need to understand which page Nextion was switched to. ``x`` argument will contain a page id integer.
|
||||||
|
Once you know the page id, it's time to update the components. Two strategies would be possible. The first one is to use :ref:`Nextion Sensors <nextion_sensor>` for every UI field and use one of the
|
||||||
|
:ref:`update functions <nextion_update_all_components>`. The second is to manually set component text or value for each field:
|
||||||
|
|
||||||
|
.. code-block:: yaml
|
||||||
|
|
||||||
|
on_page:
|
||||||
|
then:
|
||||||
|
lambda: |-
|
||||||
|
switch (x) {
|
||||||
|
case 0x02: // wifi_qr_page
|
||||||
|
// Manually trigger update for controls on page 0x02 here
|
||||||
|
id(disp).set_component_text_printf("qr_wifi", "WIFI:T:nopass;S:%s;P:;;", wifi::global_wifi_component->get_ap().get_ssid().c_str());
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
.. _nextion_upload_tft_file:
|
.. _nextion_upload_tft_file:
|
||||||
|
|
||||||
Uploading A TFT File
|
Uploading A TFT File
|
||||||
|
@ -13,12 +13,7 @@ Usage
|
|||||||
The ``st7789v`` display platform allows you to use
|
The ``st7789v`` display platform allows you to use
|
||||||
ST7789V (`datasheet <https://github.com/Xinyuan-LilyGO/TTGO-T-Display>`__,
|
ST7789V (`datasheet <https://github.com/Xinyuan-LilyGO/TTGO-T-Display>`__,
|
||||||
`Tindie <https://www.tindie.com/products/ttgo/lilygor-ttgo-t-display/>`__)
|
`Tindie <https://www.tindie.com/products/ttgo/lilygor-ttgo-t-display/>`__)
|
||||||
displays with ESPHome. Note that this component utilizes the 4-Wire :ref:`SPI bus <spi>`; the physical
|
displays with ESPHome. Note that this component utilizes the 4-Wire :ref:`SPI bus <spi>`.
|
||||||
connection is already in place on the TTGO T-Display module as shown below.
|
|
||||||
|
|
||||||
.. note::
|
|
||||||
|
|
||||||
Currently this only supports 135x240 pixel ST7789V displays. Other sizes (e.g. 240x320, 240x240) are not supported.
|
|
||||||
|
|
||||||
.. figure:: images/st7789v-full.jpg
|
.. figure:: images/st7789v-full.jpg
|
||||||
:align: center
|
:align: center
|
||||||
@ -26,12 +21,15 @@ connection is already in place on the TTGO T-Display module as shown below.
|
|||||||
|
|
||||||
ST7789V TFT LCD on TTGO T-Display module
|
ST7789V TFT LCD on TTGO T-Display module
|
||||||
|
|
||||||
This module has a USB-C connector with an on-board serial adapter for programming. Simply connect to a
|
The TTGO T-Display module shown has the display attached to the module's board and its connections to the ESP32
|
||||||
USB-C port to get started! (Depending on your operating system of choice, you might need to install an
|
cannot be changed. Other display modules have pin headers or other connectors which must be connected appropriately
|
||||||
appropriate driver.) It is also possible to power the module via the 5V and G (ground) pins along
|
to an ESP module.
|
||||||
the edges of the module, or via a battery attached to the connector on the bottom of the board. The
|
|
||||||
ESP32's UART pins are not brought out to the headers, so the on-board serial adapter must be used for
|
.. note::
|
||||||
hardwired programming. (OTA updates are of course possible after ESPHome is initially installed.)
|
|
||||||
|
Displays larger than the 135x240 pixel display on the TTGO T-Display shown require a significant amount of RAM
|
||||||
|
to operate correctly. Some ESP devices, such as the ESP8266, do not have sufficient memory to support this display.
|
||||||
|
If you attempt to use this component and experience repeated crashes, this is likely the cause of the issue.
|
||||||
|
|
||||||
.. code-block:: yaml
|
.. code-block:: yaml
|
||||||
|
|
||||||
@ -42,6 +40,7 @@ hardwired programming. (OTA updates are of course possible after ESPHome is init
|
|||||||
|
|
||||||
display:
|
display:
|
||||||
- platform: st7789v
|
- platform: st7789v
|
||||||
|
model: TTGO TDisplay 135x240
|
||||||
backlight_pin: GPIO4
|
backlight_pin: GPIO4
|
||||||
cs_pin: GPIO5
|
cs_pin: GPIO5
|
||||||
dc_pin: GPIO16
|
dc_pin: GPIO16
|
||||||
@ -57,9 +56,26 @@ hardwired programming. (OTA updates are of course possible after ESPHome is init
|
|||||||
Configuration variables:
|
Configuration variables:
|
||||||
************************
|
************************
|
||||||
|
|
||||||
|
- **model** (**Required**, string): The display model to use. One of the following options:
|
||||||
|
|
||||||
|
- ``TTGO TDisplay 135x240``
|
||||||
|
- ``Adafruit Funhouse 240x240``
|
||||||
|
- ``Adafruit RR 280x240`` (round-rectangular display -- some pixels are "deleted" from corners to form rounded shape)
|
||||||
|
- ``Custom`` (see details below)
|
||||||
|
|
||||||
- **cs_pin** (**Required**, :ref:`Pin Schema <config-pin_schema>`): The CS pin.
|
- **cs_pin** (**Required**, :ref:`Pin Schema <config-pin_schema>`): The CS pin.
|
||||||
- **dc_pin** (**Required**, :ref:`Pin Schema <config-pin_schema>`): The DC pin.
|
- **dc_pin** (**Required**, :ref:`Pin Schema <config-pin_schema>`): The DC pin.
|
||||||
- **reset_pin** (**Required**, :ref:`Pin Schema <config-pin_schema>`): The RESET pin.
|
- **reset_pin** (**Required**, :ref:`Pin Schema <config-pin_schema>`): The RESET pin.
|
||||||
|
- **height** (*Optional*, int): When ``model`` is set to "Custom", use this to specify the ``height`` of the display
|
||||||
|
in pixels. This option may not be specified when the ``model`` is not set to "Custom".
|
||||||
|
- **width** (*Optional*, int): When ``model`` is set to "Custom", use this to specify the ``width`` of the display
|
||||||
|
in pixels. This option may not be specified when the ``model`` is not set to "Custom".
|
||||||
|
- **offset_height** (*Optional*, int): When ``model`` is set to "Custom", use this to specify the display's vertical
|
||||||
|
offset in pixels. This option may not be specified when the ``model`` is not set to "Custom".
|
||||||
|
- **offset_width** (*Optional*, int): When ``model`` is set to "Custom", use this to specify the display's horizontal
|
||||||
|
offset in pixels. This option may not be specified when the ``model`` is not set to "Custom".
|
||||||
|
- **eightbitcolor** (*Optional*, boolean): Limits the supported color depth to eight bits. May be useful on
|
||||||
|
memory-constrained devices.
|
||||||
- **backlight_pin** (*Optional*, :ref:`Pin Schema <config-pin_schema>`): The display's backlight pin.
|
- **backlight_pin** (*Optional*, :ref:`Pin Schema <config-pin_schema>`): The display's backlight pin.
|
||||||
- **lambda** (*Optional*, :ref:`lambda <config-lambda>`): The lambda to use for rendering the content on the display.
|
- **lambda** (*Optional*, :ref:`lambda <config-lambda>`): The lambda to use for rendering the content on the display.
|
||||||
See :ref:`display-engine` for more information.
|
See :ref:`display-engine` for more information.
|
||||||
@ -67,13 +83,15 @@ Configuration variables:
|
|||||||
- **pages** (*Optional*, list): Show pages instead of a single lambda. See :ref:`display-pages`.
|
- **pages** (*Optional*, list): Show pages instead of a single lambda. See :ref:`display-pages`.
|
||||||
- **id** (*Optional*, :ref:`config-id`): Manually specify the ID used for code generation.
|
- **id** (*Optional*, :ref:`config-id`): Manually specify the ID used for code generation.
|
||||||
|
|
||||||
|
.. note::
|
||||||
|
|
||||||
|
On memory-constrained devices, it may be possible to use *part* of the display area by setting the model to "custom"
|
||||||
|
and specifying a smaller ``height`` and/or ``width`` than that of the actual display.
|
||||||
|
|
||||||
|
|
||||||
Configuration examples
|
Configuration examples
|
||||||
**********************
|
**********************
|
||||||
|
|
||||||
As of version 1.15, ESPHome supports color displays. To utilize the color capabilities of this display
|
|
||||||
module, you'll likely want to add a ``color:`` section to your YAML configuration; please see
|
|
||||||
:ref:`color <config-color>` for more detail on this configuration section.
|
|
||||||
|
|
||||||
To use colors in your lambda:
|
To use colors in your lambda:
|
||||||
|
|
||||||
.. code-block:: yaml
|
.. code-block:: yaml
|
||||||
|
@ -115,17 +115,26 @@ too many WiFi/MQTT connection attempts, Over-The-Air updates being applied or th
|
|||||||
.. note::
|
.. note::
|
||||||
|
|
||||||
It's not guaranteed that all components are in a connected state when this automation is triggered. For
|
It's not guaranteed that all components are in a connected state when this automation is triggered. For
|
||||||
example, the MQTT client may have already disconnected.
|
example, the MQTT client may have already disconnected. For use-cases that require specific shutdown ordering, look at the ``priority`` parameter.
|
||||||
|
|
||||||
.. code-block:: yaml
|
.. code-block:: yaml
|
||||||
|
|
||||||
esphome:
|
esphome:
|
||||||
# ...
|
# ...
|
||||||
on_shutdown:
|
on_shutdown:
|
||||||
|
priority: 700
|
||||||
then:
|
then:
|
||||||
- switch.turn_off: switch_1
|
- switch.turn_off: switch_1
|
||||||
|
|
||||||
Configuration variables: See :ref:`Automation <automation>`.
|
Configuration variables:
|
||||||
|
|
||||||
|
- **priority** (*Optional*, float): The priority to execute your custom shutdown code. A higher value
|
||||||
|
means a high priority and in case of shutdown triggers that the code is executed **later**.
|
||||||
|
Priority is used primarily for the initialization order of components. Shutdowns for these components are handled in *reverse* order, such that e.g. sensors (600) are shutdown before the hardware components (800) they depend on.
|
||||||
|
Please note this is an ESPHome-internal value and any change will not be marked as a breaking change.
|
||||||
|
Defaults to ``600``. For priority values refer to the list in the :ref:`esphome-on_boot` section.
|
||||||
|
|
||||||
|
- See :ref:`Automation <automation>`.
|
||||||
|
|
||||||
.. _esphome-on_loop:
|
.. _esphome-on_loop:
|
||||||
|
|
||||||
|
BIN
components/images/sprinkler-ui.jpg
Normal file
After Width: | Height: | Size: 148 KiB |
BIN
components/images/sprinkler.png
Normal file
After Width: | Height: | Size: 368 KiB |
114
components/output/dac7678.rst
Normal file
@ -0,0 +1,114 @@
|
|||||||
|
DAC7678
|
||||||
|
=======
|
||||||
|
|
||||||
|
.. seo::
|
||||||
|
:description: Instructions for setting up the DAC7678.
|
||||||
|
:image: dac7678.svg
|
||||||
|
:keywords: DAC7678
|
||||||
|
|
||||||
|
.. _dac7678-component:
|
||||||
|
|
||||||
|
Component/Hub
|
||||||
|
-------------
|
||||||
|
|
||||||
|
The DAC7678 component represents a DAC7678 12-bit 8 channel DAC with internal reference
|
||||||
|
(`datasheet <https://www.ti.com/lit/ds/symlink/dac7678.pdf>`__) in ESPHome. It
|
||||||
|
uses the :ref:`I²C Bus <i2c>` for communication.
|
||||||
|
|
||||||
|
To use the channels of this components, you first need to setup the
|
||||||
|
global ``dac7678`` hub and give it an id, and then define the
|
||||||
|
:ref:`individual output channels <dac7678-output>`.
|
||||||
|
|
||||||
|
.. code-block:: yaml
|
||||||
|
|
||||||
|
# Example configuration entry
|
||||||
|
dac7678:
|
||||||
|
address: 0x4A
|
||||||
|
id: dac7678_hub1
|
||||||
|
internal_reference: true
|
||||||
|
|
||||||
|
# Individual outputs
|
||||||
|
output:
|
||||||
|
- platform: dac7678
|
||||||
|
dac7678_id: 'dac7678_hub1'
|
||||||
|
channel: 0
|
||||||
|
|
||||||
|
Configuration variables:
|
||||||
|
************************
|
||||||
|
|
||||||
|
- **address** (*Optional*, int): The I²C address of the driver.
|
||||||
|
Defaults to ``0x48``.
|
||||||
|
- **id** (*Optional*, :ref:`config-id`): The id to use for
|
||||||
|
this dac7678 component. Use this if you have multiple DAC7678s connected at the same time
|
||||||
|
- **internal_reference** (*Optional*, bool): State of the internal reference.
|
||||||
|
Defaults to ``false``.
|
||||||
|
|
||||||
|
.. _dac7678-output:
|
||||||
|
|
||||||
|
DAC Output
|
||||||
|
----------
|
||||||
|
|
||||||
|
The DAC7678 output component exposes a DAC7678 DAC channel of a global
|
||||||
|
:ref:`DAC7678 hub <dac7678-component>` as a float
|
||||||
|
output.
|
||||||
|
|
||||||
|
.. code-block:: yaml
|
||||||
|
|
||||||
|
# Example configuration entry
|
||||||
|
dac7678:
|
||||||
|
address: 0x4A
|
||||||
|
id: dac7678_hub1
|
||||||
|
internal_reference: true
|
||||||
|
|
||||||
|
# Individual outputs
|
||||||
|
output:
|
||||||
|
- platform: dac7678
|
||||||
|
dac7678_id: 'dac7678_hub1'
|
||||||
|
channel: 0
|
||||||
|
id: 'dac7678_1_ch0'
|
||||||
|
- platform: dac7678
|
||||||
|
dac7678_id: 'dac7678_hub1'
|
||||||
|
channel: 1
|
||||||
|
id: 'dac7678_1_ch1'
|
||||||
|
- platform: dac7678
|
||||||
|
dac7678_id: 'dac7678_hub1'
|
||||||
|
channel: 2
|
||||||
|
id: 'dac7678_1_ch2'
|
||||||
|
- platform: dac7678
|
||||||
|
dac7678_id: 'dac7678_hub1'
|
||||||
|
channel: 3
|
||||||
|
id: 'dac7678_1_ch3'
|
||||||
|
- platform: dac7678
|
||||||
|
dac7678_id: 'dac7678_hub1'
|
||||||
|
channel: 4
|
||||||
|
id: 'dac7678_1_ch4'
|
||||||
|
- platform: dac7678
|
||||||
|
dac7678_id: 'dac7678_hub1'
|
||||||
|
channel: 5
|
||||||
|
id: 'dac7678_1_ch5'
|
||||||
|
- platform: dac7678
|
||||||
|
dac7678_id: 'dac7678_hub1'
|
||||||
|
channel: 6
|
||||||
|
id: 'dac7678_1_ch6'
|
||||||
|
- platform: dac7678
|
||||||
|
dac7678_id: 'dac7678_hub1'
|
||||||
|
channel: 7
|
||||||
|
id: 'dac7678_1_ch7'
|
||||||
|
|
||||||
|
|
||||||
|
Configuration variables:
|
||||||
|
************************
|
||||||
|
|
||||||
|
- **id** (**Required**, :ref:`config-id`): The id to use for this output component.
|
||||||
|
- **channel** (**Required**, int): Chose the channel of the DAC7678 of
|
||||||
|
this output component. Must be in range from 0 to 7.
|
||||||
|
- **dac7678_id** (*Optional*, :ref:`config-id`): Manually specify the ID of the
|
||||||
|
:ref:`DAC7678 hub <dac7678-component>`.
|
||||||
|
Use this if you have multiple DAC7678 devices.
|
||||||
|
- All other options from :ref:`Output <config-output>`.
|
||||||
|
|
||||||
|
See Also
|
||||||
|
--------
|
||||||
|
|
||||||
|
- :doc:`/components/output/index`
|
||||||
|
- :ghedit:`Edit`
|
@ -88,6 +88,7 @@ Configuration variables:
|
|||||||
************************
|
************************
|
||||||
|
|
||||||
- **update_interval** (*Optional*, :ref:`config-time`): Delay between data requests.
|
- **update_interval** (*Optional*, :ref:`config-time`): Delay between data requests.
|
||||||
|
- **address** (*Optional*, int): Address to use, defaults to ``0x80``.
|
||||||
|
|
||||||
Sensor
|
Sensor
|
||||||
------
|
------
|
||||||
|
BIN
components/sensor/images/smt100.jpg
Normal file
After Width: | Height: | Size: 377 KiB |
@ -38,7 +38,6 @@ Configuration variables:
|
|||||||
that the value can be restored upon power cycle or reboot.
|
that the value can be restored upon power cycle or reboot.
|
||||||
Warning: this option can wear out your flash. Defaults to ``false``.
|
Warning: this option can wear out your flash. Defaults to ``false``.
|
||||||
- **id** (*Optional*, :ref:`config-id`): Manually specify the ID used for code generation.
|
- **id** (*Optional*, :ref:`config-id`): Manually specify the ID used for code generation.
|
||||||
- **min_save_interval** (*Optional*, :ref:`config-time`): The minimum time span between saving updated values to storage. This is to keep wearout of memory low. Defaults to ``0s``.
|
|
||||||
- All other options from :ref:`Sensor <config-sensor>`.
|
- All other options from :ref:`Sensor <config-sensor>`.
|
||||||
|
|
||||||
.. _sensor-integration-reset_action:
|
.. _sensor-integration-reset_action:
|
||||||
|
@ -101,10 +101,37 @@ measure the total consumed energy in kWh.
|
|||||||
filters:
|
filters:
|
||||||
- multiply: 0.001 # (1/1000 pulses per kWh)
|
- multiply: 0.001 # (1/1000 pulses per kWh)
|
||||||
|
|
||||||
|
(Re)Setting the total pulse count
|
||||||
|
---------------------------------
|
||||||
|
|
||||||
|
Using this action, you are able to reset/set the total pulse count. This can be useful
|
||||||
|
if you would like the ``total`` sensor to match what you see on your meter you are
|
||||||
|
trying to match.
|
||||||
|
|
||||||
|
.. code-block:: yaml
|
||||||
|
|
||||||
|
# Set pulse counter total from home assistant using this service call:
|
||||||
|
api:
|
||||||
|
services:
|
||||||
|
- service: set_pulse_total
|
||||||
|
variables:
|
||||||
|
new_pulse_total: int
|
||||||
|
then:
|
||||||
|
- pulse_counter.set_total_pulses:
|
||||||
|
id: pulse_counter_id
|
||||||
|
value: !lambda 'return new_pulse_total;'
|
||||||
|
|
||||||
|
.. note::
|
||||||
|
|
||||||
|
This value is the raw count of pulses, and not the value you see after the filters
|
||||||
|
are applied.
|
||||||
|
|
||||||
|
|
||||||
See Also
|
See Also
|
||||||
--------
|
--------
|
||||||
|
|
||||||
- :ref:`sensor-filters`
|
- :ref:`sensor-filters`
|
||||||
|
- :doc:`/components/sensor/pulse_meter`
|
||||||
- :doc:`rotary_encoder`
|
- :doc:`rotary_encoder`
|
||||||
- `esp-idf Pulse Counter API <https://docs.espressif.com/projects/esp-idf/en/latest/api-reference/peripherals/pcnt.html>`__.
|
- `esp-idf Pulse Counter API <https://docs.espressif.com/projects/esp-idf/en/latest/api-reference/peripherals/pcnt.html>`__.
|
||||||
- :apiref:`pulse_counter/pulse_counter_sensor.h`
|
- :apiref:`pulse_counter/pulse_counter_sensor.h`
|
||||||
|
81
components/sensor/smt100.rst
Normal file
@ -0,0 +1,81 @@
|
|||||||
|
SMT100 Soil Moisture Sensor
|
||||||
|
================================
|
||||||
|
|
||||||
|
.. seo::
|
||||||
|
:description: Instructions for setting up SMT100 soil moisture and temperature sensor
|
||||||
|
:image: smt100.jpg
|
||||||
|
:keywords: smt100
|
||||||
|
|
||||||
|
|
||||||
|
The SMT100 sensor platform allows you to use the SMT100 soil moisture and temperature with ESPHome.
|
||||||
|
|
||||||
|
.. figure:: images/smt100.jpg
|
||||||
|
:align: center
|
||||||
|
:width: 50.0%
|
||||||
|
|
||||||
|
|
||||||
|
The communication with this integration is done over a UART bus using a simple ASCII protocol. You must therefore have a ``uart:`` entry in your configuration with both the TX and RX pins set to some pins on your board and the baud rate set to 9600.
|
||||||
|
|
||||||
|
|
||||||
|
.. code-block:: yaml
|
||||||
|
|
||||||
|
# Example configuration entry
|
||||||
|
uart:
|
||||||
|
tx_pin: TX
|
||||||
|
rx_pin: RX
|
||||||
|
baud_rate: 9600
|
||||||
|
|
||||||
|
sensor:
|
||||||
|
- platform: smt100
|
||||||
|
counts:
|
||||||
|
name: "Counts"
|
||||||
|
permittivity:
|
||||||
|
name: "Permittivity"
|
||||||
|
temperature:
|
||||||
|
name: "Temperature"
|
||||||
|
moisture:
|
||||||
|
name: "Moisture"
|
||||||
|
voltage:
|
||||||
|
name: "Voltage"
|
||||||
|
|
||||||
|
|
||||||
|
Configuration variables:
|
||||||
|
------------------------
|
||||||
|
|
||||||
|
- **counts** (*Optional*): Raw measurement data from the sensor electronics (dimensionless quantity). Higher counts mean less moisture. May be used for material specific calibrations.
|
||||||
|
|
||||||
|
- **name** (**Required**): Sensor name.
|
||||||
|
- All other options from :ref:`Sensor <config-sensor>`.
|
||||||
|
|
||||||
|
- **Permittivity** (*Optional*): Permittivity or dielectric coefficient of the material to be measured (dimensionless quantity. Higher permittivity means higher water content. May be used for material specific calibration.
|
||||||
|
|
||||||
|
- **name** (**Required**): Sensor name.
|
||||||
|
- All other options from :ref:`Sensor <config-sensor>`.
|
||||||
|
|
||||||
|
- **temperature** (*Optional*): Soil temperature in degrees Celsius. Please note that the temperature sensor is inside the black sensor enclosure and requires some time to equilibrate with the soil temperature.
|
||||||
|
|
||||||
|
- **name** (**Required**): Sensor name.
|
||||||
|
- All other options from :ref:`Sensor <config-sensor>`.
|
||||||
|
|
||||||
|
- **moisture** (*Optional*): Soil moisture (volumetric water content in %).
|
||||||
|
|
||||||
|
- **name** (**Required**): Sensor name.
|
||||||
|
- All other options from :ref:`Sensor <config-sensor>`.
|
||||||
|
|
||||||
|
- **voltage** (*Optional*): Supply voltage of the sensor in Volt.
|
||||||
|
|
||||||
|
- **name** (**Required**): Sensor name.
|
||||||
|
- All other options from :ref:`Sensor <config-sensor>`.
|
||||||
|
|
||||||
|
- **uart_id** (*Optional*, :ref:`config-id`): Manually specify the ID of the :ref:`UART Component <uart>` if you want
|
||||||
|
to use multiple UART buses.
|
||||||
|
|
||||||
|
- **update_interval** (*Optional*, :ref:`config-time`): The interval to pull the sensor. Defaults is 60s.
|
||||||
|
|
||||||
|
See Also
|
||||||
|
--------
|
||||||
|
|
||||||
|
- :doc:`/components/sensor/smt100`
|
||||||
|
- :ref:`sensor-filters`
|
||||||
|
- :apiref:`smt100/smt100.h`
|
||||||
|
- :ghedit:`Edit`
|
@ -41,7 +41,6 @@ Configuration variables:
|
|||||||
- **restore** (*Optional*, boolean): Whether to store the intermediate result on the device so
|
- **restore** (*Optional*, boolean): Whether to store the intermediate result on the device so
|
||||||
that the value can be restored upon power cycle or reboot.
|
that the value can be restored upon power cycle or reboot.
|
||||||
Defaults to ``true``.
|
Defaults to ``true``.
|
||||||
- **min_save_interval** (*Optional*, :ref:`config-time`): The minimum time span between saving updated values to storage. This is to keep wearout of memory low. Defaults to ``0s``.
|
|
||||||
- **method** (*Optional*, string): The method to use for calculating the total daily energy. One of
|
- **method** (*Optional*, string): The method to use for calculating the total daily energy. One of
|
||||||
``trapezoid``, ``left`` or ``right``. Defaults to ``right``.
|
``trapezoid``, ``left`` or ``right``. Defaults to ``right``.
|
||||||
- All other options from :ref:`Sensor <config-sensor>`.
|
- All other options from :ref:`Sensor <config-sensor>`.
|
||||||
|
@ -218,6 +218,8 @@ Configuration example for PVVX MiThermometer firmware set to "Custom" advertisem
|
|||||||
name: "PVVX Battery-Level"
|
name: "PVVX Battery-Level"
|
||||||
battery_voltage:
|
battery_voltage:
|
||||||
name: "PVVX Battery-Voltage"
|
name: "PVVX Battery-Voltage"
|
||||||
|
signal_strength:
|
||||||
|
name: "PVVX Signal"
|
||||||
|
|
||||||
Configuration example for ATC MiThermometer firmware set to "Custom" advertisement:
|
Configuration example for ATC MiThermometer firmware set to "Custom" advertisement:
|
||||||
|
|
||||||
|
1041
components/sprinkler.rst
Normal file
4
conf.py
@ -66,9 +66,9 @@ author = "ESPHome"
|
|||||||
# built documents.
|
# built documents.
|
||||||
#
|
#
|
||||||
# The short X.Y version.
|
# The short X.Y version.
|
||||||
version = "2022.6"
|
version = "2022.8"
|
||||||
# The full version, including alpha/beta/rc tags.
|
# The full version, including alpha/beta/rc tags.
|
||||||
release = "2022.6.3"
|
release = "2022.8.0b1"
|
||||||
|
|
||||||
# The language for content autogenerated by Sphinx. Refer to documentation
|
# The language for content autogenerated by Sphinx. Refer to documentation
|
||||||
# for a list of supported languages.
|
# for a list of supported languages.
|
||||||
|
@ -374,6 +374,13 @@ All Actions
|
|||||||
- :ref:`stepper.set_target <stepper-set_target_action>` / :ref:`stepper.report_position <stepper-report_position_action>`
|
- :ref:`stepper.set_target <stepper-set_target_action>` / :ref:`stepper.report_position <stepper-report_position_action>`
|
||||||
/ :ref:`stepper.set_speed <stepper-set_speed_action>`
|
/ :ref:`stepper.set_speed <stepper-set_speed_action>`
|
||||||
- :ref:`servo.write <servo-write_action>` / :ref:`servo.detach <servo-detach_action>`
|
- :ref:`servo.write <servo-write_action>` / :ref:`servo.detach <servo-detach_action>`
|
||||||
|
- :ref:`sprinkler.start_full_cycle <sprinkler-controller-action_start_full_cycle>` / :ref:`sprinkler.start_from_queue <sprinkler-controller-action_start_from_queue>` /
|
||||||
|
:ref:`sprinkler.start_single_valve <sprinkler-controller-action_start_single_valve>` / :ref:`sprinkler.shutdown <sprinkler-controller-action_shutdown>` /
|
||||||
|
:ref:`sprinkler.next_valve <sprinkler-controller-action_next_valve>` / :ref:`sprinkler.previous_valve <sprinkler-controller-action_previous_valve>` /
|
||||||
|
:ref:`sprinkler.pause <sprinkler-controller-action_pause>` / :ref:`sprinkler.resume <sprinkler-controller-action_resume>` /
|
||||||
|
:ref:`sprinkler.resume_or_start_full_cycle <sprinkler-controller-action_resume_or_start_full_cycle>` / :ref:`sprinkler.queue_valve <sprinkler-controller-action_queue_valve>` /
|
||||||
|
:ref:`sprinkler.clear_queued_valves <sprinkler-controller-action_clear_queued_valves>` / :ref:`sprinkler.set_multiplier <sprinkler-controller-action_set_multiplier>` /
|
||||||
|
:ref:`sprinkler.set_repeat <sprinkler-controller-action_set_repeat>` / :ref:`sprinkler.set_valve_run_duration <sprinkler-controller-action_set_valve_run_duration>`
|
||||||
- :ref:`globals.set <globals-set_action>`
|
- :ref:`globals.set <globals-set_action>`
|
||||||
- :ref:`remote_transmitter.transmit_* <remote_transmitter-transmit_action>`
|
- :ref:`remote_transmitter.transmit_* <remote_transmitter-transmit_action>`
|
||||||
- :ref:`climate.control <climate-control_action>`
|
- :ref:`climate.control <climate-control_action>`
|
||||||
@ -394,6 +401,7 @@ All Actions
|
|||||||
- :ref:`select.set <select-set_action>` / :ref:`select.set_index <select-set_index_action>` / :ref:`select.first <select-first_action>` / :ref:`select.last <select-last_action>` / :ref:`select.previous <select-previous_action>` / :ref:`select.next <select-next_action>` / :ref:`select.operation <select-operation_action>`
|
- :ref:`select.set <select-set_action>` / :ref:`select.set_index <select-set_index_action>` / :ref:`select.first <select-first_action>` / :ref:`select.last <select-last_action>` / :ref:`select.previous <select-previous_action>` / :ref:`select.next <select-next_action>` / :ref:`select.operation <select-operation_action>`
|
||||||
- :ref:`media_player.play <media_player-play>` / :ref:`media_player.pause <media_player-pause>` / :ref:`media_player.stop <media_player-stop>` / :ref:`media_player.toggle <media_player-toggle>`
|
- :ref:`media_player.play <media_player-play>` / :ref:`media_player.pause <media_player-pause>` / :ref:`media_player.stop <media_player-stop>` / :ref:`media_player.toggle <media_player-toggle>`
|
||||||
/ :ref:`media_player.volume_up <media_player-volume_up>` / :ref:`media_player.volume_down <media_player-volume_down>` / :ref:`media_player.volume_set <media_player-volume_set>`
|
/ :ref:`media_player.volume_up <media_player-volume_up>` / :ref:`media_player.volume_down <media_player-volume_down>` / :ref:`media_player.volume_set <media_player-volume_set>`
|
||||||
|
- :ref:`ble_client.ble_write <ble_client-ble_write_action>`
|
||||||
|
|
||||||
.. _config-condition:
|
.. _config-condition:
|
||||||
|
|
||||||
|
@ -35,6 +35,7 @@ Contributors
|
|||||||
- `ADeadPixel (@ADeadPixel) <https://github.com/ADeadPixel>`__
|
- `ADeadPixel (@ADeadPixel) <https://github.com/ADeadPixel>`__
|
||||||
- `Andrea Donno (@adonno) <https://github.com/adonno>`__
|
- `Andrea Donno (@adonno) <https://github.com/adonno>`__
|
||||||
- `Adrien Brault (@adrienbrault) <https://github.com/adrienbrault>`__
|
- `Adrien Brault (@adrienbrault) <https://github.com/adrienbrault>`__
|
||||||
|
- `Ian Blais (@aeonsablaze) <https://github.com/aeonsablaze>`__
|
||||||
- `Johan Bloemberg (@aequitas) <https://github.com/aequitas>`__
|
- `Johan Bloemberg (@aequitas) <https://github.com/aequitas>`__
|
||||||
- `Stefan Agner (@agners) <https://github.com/agners>`__
|
- `Stefan Agner (@agners) <https://github.com/agners>`__
|
||||||
- `Anders (@ahd71) <https://github.com/ahd71>`__
|
- `Anders (@ahd71) <https://github.com/ahd71>`__
|
||||||
@ -188,6 +189,7 @@ Contributors
|
|||||||
- `Dav-id (@dav-id-org) <https://github.com/dav-id-org>`__
|
- `Dav-id (@dav-id-org) <https://github.com/dav-id-org>`__
|
||||||
- `DAVe3283 (@DAVe3283) <https://github.com/DAVe3283>`__
|
- `DAVe3283 (@DAVe3283) <https://github.com/DAVe3283>`__
|
||||||
- `Dave Richer (@davericher) <https://github.com/davericher>`__
|
- `Dave Richer (@davericher) <https://github.com/davericher>`__
|
||||||
|
- `davestubbs (@davestubbs) <https://github.com/davestubbs>`__
|
||||||
- `Dave T (@davet2001) <https://github.com/davet2001>`__
|
- `Dave T (@davet2001) <https://github.com/davet2001>`__
|
||||||
- `Dave Wongillies (@davewongillies) <https://github.com/davewongillies>`__
|
- `Dave Wongillies (@davewongillies) <https://github.com/davewongillies>`__
|
||||||
- `David De Sloovere (@DavidDeSloovere) <https://github.com/DavidDeSloovere>`__
|
- `David De Sloovere (@DavidDeSloovere) <https://github.com/DavidDeSloovere>`__
|
||||||
@ -196,6 +198,7 @@ Contributors
|
|||||||
- `David Zovko (@davidzovko) <https://github.com/davidzovko>`__
|
- `David Zovko (@davidzovko) <https://github.com/davidzovko>`__
|
||||||
- `Davy Landman (@DavyLandman) <https://github.com/DavyLandman>`__
|
- `Davy Landman (@DavyLandman) <https://github.com/DavyLandman>`__
|
||||||
- `Darren Tucker (@daztucker) <https://github.com/daztucker>`__
|
- `Darren Tucker (@daztucker) <https://github.com/daztucker>`__
|
||||||
|
- `Donovan Baarda (@dbaarda) <https://github.com/dbaarda>`__
|
||||||
- `David Buezas (@dbuezas) <https://github.com/dbuezas>`__
|
- `David Buezas (@dbuezas) <https://github.com/dbuezas>`__
|
||||||
- `dckiller51 (@dckiller51) <https://github.com/dckiller51>`__
|
- `dckiller51 (@dckiller51) <https://github.com/dckiller51>`__
|
||||||
- `Debashish Sahu (@debsahu) <https://github.com/debsahu>`__
|
- `Debashish Sahu (@debsahu) <https://github.com/debsahu>`__
|
||||||
@ -410,6 +413,7 @@ Contributors
|
|||||||
- `Jens-Christian Skibakk (@jenscski) <https://github.com/jenscski>`__
|
- `Jens-Christian Skibakk (@jenscski) <https://github.com/jenscski>`__
|
||||||
- `Jérôme Laban (@jeromelaban) <https://github.com/jeromelaban>`__
|
- `Jérôme Laban (@jeromelaban) <https://github.com/jeromelaban>`__
|
||||||
- `Jesse Hills (@jesserockz) <https://github.com/jesserockz>`__
|
- `Jesse Hills (@jesserockz) <https://github.com/jesserockz>`__
|
||||||
|
- `Yuval Brik (@jhamhader) <https://github.com/jhamhader>`__
|
||||||
- `Joe (@jhansche) <https://github.com/jhansche>`__
|
- `Joe (@jhansche) <https://github.com/jhansche>`__
|
||||||
- `Jim Bauwens (@jimbauwens) <https://github.com/jimbauwens>`__
|
- `Jim Bauwens (@jimbauwens) <https://github.com/jimbauwens>`__
|
||||||
- `jimtng (@jimtng) <https://github.com/jimtng>`__
|
- `jimtng (@jimtng) <https://github.com/jimtng>`__
|
||||||
@ -476,6 +480,7 @@ Contributors
|
|||||||
- `kroimon (@kroimon) <https://github.com/kroimon>`__
|
- `kroimon (@kroimon) <https://github.com/kroimon>`__
|
||||||
- `krunkel (@krunkel) <https://github.com/krunkel>`__
|
- `krunkel (@krunkel) <https://github.com/krunkel>`__
|
||||||
- `Kendell R (@KTibow) <https://github.com/KTibow>`__
|
- `Kendell R (@KTibow) <https://github.com/KTibow>`__
|
||||||
|
- `Kuba Szczodrzyński (@kuba2k2) <https://github.com/kuba2k2>`__
|
||||||
- `Jakub Šimo (@kubik369) <https://github.com/kubik369>`__
|
- `Jakub Šimo (@kubik369) <https://github.com/kubik369>`__
|
||||||
- `Ken Davidson (@kwdavidson) <https://github.com/kwdavidson>`__
|
- `Ken Davidson (@kwdavidson) <https://github.com/kwdavidson>`__
|
||||||
- `Kyle Hendricks (@kylehendricks) <https://github.com/kylehendricks>`__
|
- `Kyle Hendricks (@kylehendricks) <https://github.com/kylehendricks>`__
|
||||||
@ -618,6 +623,7 @@ Contributors
|
|||||||
- `nickrout (@nickrout) <https://github.com/nickrout>`__
|
- `nickrout (@nickrout) <https://github.com/nickrout>`__
|
||||||
- `Nick Whyte (@nickw444) <https://github.com/nickw444>`__
|
- `Nick Whyte (@nickw444) <https://github.com/nickw444>`__
|
||||||
- `nicuh (@nicuh) <https://github.com/nicuh>`__
|
- `nicuh (@nicuh) <https://github.com/nicuh>`__
|
||||||
|
- `NP v/d Spek (@nielsnl68) <https://github.com/nielsnl68>`__
|
||||||
- `Joakim Vindgard (@nigobo) <https://github.com/nigobo>`__
|
- `Joakim Vindgard (@nigobo) <https://github.com/nigobo>`__
|
||||||
- `nikito7 (@nikito7) <https://github.com/nikito7>`__
|
- `nikito7 (@nikito7) <https://github.com/nikito7>`__
|
||||||
- `niklasweber (@niklasweber) <https://github.com/niklasweber>`__
|
- `niklasweber (@niklasweber) <https://github.com/niklasweber>`__
|
||||||
@ -645,7 +651,6 @@ Contributors
|
|||||||
- `Omar Ghader (@omarghader) <https://github.com/omarghader>`__
|
- `Omar Ghader (@omarghader) <https://github.com/omarghader>`__
|
||||||
- `Ömer Şiar Baysal (@omersiar) <https://github.com/omersiar>`__
|
- `Ömer Şiar Baysal (@omersiar) <https://github.com/omersiar>`__
|
||||||
- `Oncleben31 (@oncleben31) <https://github.com/oncleben31>`__
|
- `Oncleben31 (@oncleben31) <https://github.com/oncleben31>`__
|
||||||
- `onde2rock (@onde2rock) <https://github.com/onde2rock>`__
|
|
||||||
- `Oscar Bolmsten (@oscar-b) <https://github.com/oscar-b>`__
|
- `Oscar Bolmsten (@oscar-b) <https://github.com/oscar-b>`__
|
||||||
- `Trammell Hudson (@osresearch) <https://github.com/osresearch>`__
|
- `Trammell Hudson (@osresearch) <https://github.com/osresearch>`__
|
||||||
- `Otamay (@Otamay) <https://github.com/Otamay>`__
|
- `Otamay (@Otamay) <https://github.com/Otamay>`__
|
||||||
@ -656,7 +661,6 @@ Contributors
|
|||||||
- `Pablo Clemente Maseda (@paclema) <https://github.com/paclema>`__
|
- `Pablo Clemente Maseda (@paclema) <https://github.com/paclema>`__
|
||||||
- `Derrick Lyndon Pallas (@pallas) <https://github.com/pallas>`__
|
- `Derrick Lyndon Pallas (@pallas) <https://github.com/pallas>`__
|
||||||
- `Panuruj Khambanonda (PK) (@panuruj) <https://github.com/panuruj>`__
|
- `Panuruj Khambanonda (PK) (@panuruj) <https://github.com/panuruj>`__
|
||||||
- `parats15 (@parats15) <https://github.com/parats15>`__
|
|
||||||
- `Pasi Suominen (@pasiz) <https://github.com/pasiz>`__
|
- `Pasi Suominen (@pasiz) <https://github.com/pasiz>`__
|
||||||
- `Patrick Felstead (@patfelst) <https://github.com/patfelst>`__
|
- `Patrick Felstead (@patfelst) <https://github.com/patfelst>`__
|
||||||
- `Patrick van der Leer (@patvdleer) <https://github.com/patvdleer>`__
|
- `Patrick van der Leer (@patvdleer) <https://github.com/patvdleer>`__
|
||||||
@ -665,7 +669,6 @@ Contributors
|
|||||||
- `Paul Nicholls (@pauln) <https://github.com/pauln>`__
|
- `Paul Nicholls (@pauln) <https://github.com/pauln>`__
|
||||||
- `Bartłomiej Biernacki (@pax0r) <https://github.com/pax0r>`__
|
- `Bartłomiej Biernacki (@pax0r) <https://github.com/pax0r>`__
|
||||||
- `Paul Doidge (@pdoidge) <https://github.com/pdoidge>`__
|
- `Paul Doidge (@pdoidge) <https://github.com/pdoidge>`__
|
||||||
- `peq123 (@peq123) <https://github.com/peq123>`__
|
|
||||||
- `per1234 (@per1234) <https://github.com/per1234>`__
|
- `per1234 (@per1234) <https://github.com/per1234>`__
|
||||||
- `Peter Valkov (@peter-valkov) <https://github.com/peter-valkov>`__
|
- `Peter Valkov (@peter-valkov) <https://github.com/peter-valkov>`__
|
||||||
- `Peter Foreman (@peterforeman) <https://github.com/peterforeman>`__
|
- `Peter Foreman (@peterforeman) <https://github.com/peterforeman>`__
|
||||||
@ -896,4 +899,4 @@ Contributors
|
|||||||
- `Zack Barett (@zsarnett) <https://github.com/zsarnett>`__
|
- `Zack Barett (@zsarnett) <https://github.com/zsarnett>`__
|
||||||
- `Christian Zufferey (@zuzu59) <https://github.com/zuzu59>`__
|
- `Christian Zufferey (@zuzu59) <https://github.com/zuzu59>`__
|
||||||
|
|
||||||
*This page was last updated August 8, 2022.*
|
*This page was last updated August 10, 2022.*
|
||||||
|
1
images/dac7678.svg
Normal file
@ -0,0 +1 @@
|
|||||||
|
<svg width="475.15" height="25mm" viewBox="0 0 125.717 25" xmlns="http://www.w3.org/2000/svg"><path style="fill:#000;fill-opacity:1;stroke-width:.133497;stroke-miterlimit:4;stroke-dasharray:none" d="M5 0h115.717c2.77 0 5 2.23 5 5v15c0 2.77-2.23 5-5 5H5c-2.77 0-5-2.23-5-5V5c0-2.77 2.23-5 5-5Z"/><g aria-label="DAC7678" style="font-size:10.5833px;line-height:1.25;letter-spacing:1.08479px;fill:#fffffc;stroke-width:.264583"><path d="M6.48 20.666V4.86h7.18q2.574 0 4.538.994 1.987.97 3.07 2.754 1.107 1.784 1.107 4.154 0 2.371-1.106 4.155-1.084 1.783-3.07 2.777-1.965.97-4.539.97zm7-3.003q2.37 0 3.77-1.31 1.422-1.332 1.422-3.59 0-2.257-1.422-3.567-1.4-1.332-3.77-1.332h-3.342v9.799zM41.635 20.666h-3.838l-1.4-3.387H29.06l-1.4 3.387h-3.747L30.956 4.86h3.612zM32.74 8.45l-2.506 6.051h5.013zM51.706 20.937q-2.416 0-4.38-1.039-1.942-1.061-3.07-2.912-1.107-1.874-1.107-4.223 0-2.348 1.106-4.199 1.13-1.874 3.07-2.913 1.965-1.06 4.403-1.06 2.055 0 3.703.722 1.671.722 2.8 2.077l-2.348 2.167q-1.603-1.851-3.974-1.851-1.467 0-2.619.655-1.151.632-1.806 1.783-.632 1.152-.632 2.62 0 1.467.632 2.618.655 1.152 1.806 1.807 1.152.632 2.62.632 2.37 0 3.973-1.874l2.348 2.167q-1.129 1.378-2.8 2.1-1.67.723-3.725.723zM60.49 10.415V4.861h12.666v2.37l-5.87 13.435h-3.974l5.667-12.824h-5.238v2.573zM83.023 10.754q1.513 0 2.755.61t1.964 1.738q.723 1.106.723 2.574 0 1.58-.79 2.777t-2.168 1.851q-1.355.633-3.025.633-3.32 0-5.193-2.032-1.874-2.032-1.874-5.803 0-2.687 1.016-4.606t2.822-2.912q1.829-.994 4.222-.994 1.264 0 2.416.294 1.174.27 1.987.79l-1.355 2.687q-1.174-.79-2.958-.79-2.01 0-3.183 1.174-1.174 1.174-1.265 3.409 1.4-1.4 3.906-1.4zm-.745 7.45q1.174 0 1.897-.631.745-.633.745-1.716 0-1.084-.745-1.716-.723-.655-1.942-.655-1.196 0-1.964.677-.768.655-.768 1.694 0 1.038.745 1.693t2.032.655zM90.498 10.415V4.861h12.666v2.37l-5.87 13.435H93.32l5.667-12.824h-5.238v2.573zM116.305 12.357q1.174.587 1.784 1.535.632.949.632 2.19 0 1.468-.835 2.574-.836 1.084-2.348 1.694-1.513.587-3.5.587t-3.5-.587q-1.49-.61-2.325-1.694-.813-1.106-.813-2.574 0-1.241.61-2.19.632-.948 1.783-1.535-.88-.542-1.354-1.355-.474-.835-.474-1.896 0-1.377.767-2.393.768-1.016 2.145-1.558 1.377-.565 3.161-.565 1.806 0 3.183.565 1.4.542 2.168 1.558.768 1.016.768 2.393 0 1.061-.475 1.896-.474.813-1.377 1.355zm-4.267-5.08q-1.106 0-1.784.542-.654.52-.654 1.445 0 .903.654 1.422.655.52 1.784.52t1.806-.52q.678-.519.678-1.422 0-.926-.678-1.445-.677-.542-1.806-.542zm0 10.973q1.377 0 2.167-.61.813-.632.813-1.67 0-1.04-.813-1.649-.79-.61-2.167-.61-1.355 0-2.145.61t-.79 1.649q0 1.06.79 1.67.79.61 2.145.61z" style="font-weight:700;font-size:22.5778px;font-family:Montserrat;-inkscape-font-specification:'Montserrat, Bold'"/></g></svg>
|
After Width: | Height: | Size: 2.6 KiB |
20
images/feedback_cover.svg
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
<svg width="24" height="24" xmlns="http://www.w3.org/2000/svg" xmlns:svg="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1">
|
||||||
|
<g class="layer">
|
||||||
|
<title>Layer 1</title>
|
||||||
|
<path d="m3.859691,11l4,0l0,-2l4,0l0,2l4,0l0,-7l-12,0l0,7m12,2l-12,0l0,7l12,0l0,-7m-12,-11l12,0a2,2 0 0 1 2,2l0,16a2,2 0 0 1 -2,2l-12,0a2,2 0 0 1 -2,-2l0,-16a2,2 0 0 1 2,-2z" id="svg_1" transform="matrix(1 0 0 1 0 0)"/>
|
||||||
|
<ellipse cx="19.177173" cy="20.221166" fill="#ffffff" id="svg_6" rx="2.437574" ry="2.437574" stroke="#000000" stroke-opacity="0"/>
|
||||||
|
<use fill="#000000" id="svg_3" stroke="#000000" stroke-opacity="0" transform="matrix(0.333333 0 0 0.333333 0 0)" x="45.303208" xlink:href="#svg_2" y="47.800236"/>
|
||||||
|
<use fill="#4c4c4c" id="svg_7" transform="matrix(0.232786 0 0 0.232786 62.8523 13.3204)" x="-194.266223" xlink:href="#svg_4" y="-13.118657"/>
|
||||||
|
<use fill="#4c4c4c" id="svg_8" transform="matrix(0.232786 0 0 0.232786 104.588 20.2169)" x="-373.555514" xlink:href="#svg_4" y="-74.414128"/>
|
||||||
|
<use fill="#4c4c4c" id="svg_9" transform="matrix(0.232786 0 0 0.232786 146.443 25.5677)" x="-553.866324" xlink:href="#svg_4" y="-76.45732"/>
|
||||||
|
<use fill="#4c4c4c" id="svg_10" transform="matrix(0.232786 0 0 0.232786 146.205 28.2869)" x="-552.333963" xlink:href="#svg_4" y="-98.421519"/>
|
||||||
|
</g>
|
||||||
|
<defs>
|
||||||
|
<symbol height="24" id="svg_2" version="1.1" viewBox="0 0 24 24" width="24" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
|
||||||
|
<path d="m12,20a7,7 0 0 1 -7,-7a7,7 0 0 1 7,-7a7,7 0 0 1 7,7a7,7 0 0 1 -7,7m7.03,-12.61l1.42,-1.42c-0.45,-0.51 -0.9,-0.97 -1.41,-1.41l-1.42,1.44c-1.55,-1.26 -3.5,-2 -5.62,-2a9,9 0 0 0 -9,9a9,9 0 0 0 9,9c5,0 9,-4.03 9,-9c0,-2.12 -0.74,-4.07 -1.97,-5.61m-8.03,6.61l2,0l0,-6l-2,0m4,-7l-6,0l0,2l6,0l0,-2z"/>
|
||||||
|
</symbol>
|
||||||
|
<symbol height="24" id="svg_4" version="1.1" viewBox="0 0 24 24" width="24" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
|
||||||
|
<path d="m1,11l2.17,0c0.41,-1.17 1.52,-2 2.83,-2c0.65,0 1.25,0.21 1.74,0.56l6.7,-4.69l1.14,1.63l-6.69,4.7c0.07,0.25 0.11,0.52 0.11,0.8a3,3 0 0 1 -3,3c-1.31,0 -2.42,-0.83 -2.83,-2l-2.17,0l0,-2m22,0l0,2l-2.17,0c-0.41,1.17 -1.52,2 -2.83,2a3,3 0 0 1 -3,-3a3,3 0 0 1 3,-3c1.31,0 2.42,0.83 2.83,2l2.17,0m-17,0a1,1 0 0 0 -1,1a1,1 0 0 0 1,1a1,1 0 0 0 1,-1a1,1 0 0 0 -1,-1m12,0a1,1 0 0 0 -1,1a1,1 0 0 0 1,1a1,1 0 0 0 1,-1a1,1 0 0 0 -1,-1z"/>
|
||||||
|
</symbol>
|
||||||
|
</defs>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 2.4 KiB |
BIN
images/smt100.jpg
Normal file
After Width: | Height: | Size: 3.3 KiB |
1
images/sprinkler-variant.svg
Normal file
@ -0,0 +1 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="24" height="24" viewBox="0 0 24 24"><path d="M10 10H14V22H10V10M7 9H9V7H7V9M4 8H6V6H4V8M4 11H6V9H4V11M1 13H3V11H1V13M1 7H3V5H1V7M1 10H3V8H1V10M18 11H20V9H18V11M21 10H23V8H21V10M21 5V7H23V5H21M21 13H23V11H21V13M15 9H17V7H15V9M18 8H20V6H18V8M10 7H10.33L11 9H13L13.67 7H14V6H10V7Z" /></svg>
|
After Width: | Height: | Size: 527 B |
@ -313,6 +313,7 @@ Environmental
|
|||||||
SHT3X-D, components/sensor/sht3xd, sht3xd.jpg, Temperature & Humidity
|
SHT3X-D, components/sensor/sht3xd, sht3xd.jpg, Temperature & Humidity
|
||||||
SHT4X, components/sensor/sht4x, sht4x.jpg, Temperature & Humidity
|
SHT4X, components/sensor/sht4x, sht4x.jpg, Temperature & Humidity
|
||||||
SHTCx, components/sensor/shtcx, shtc3.jpg, Temperature & Humidity
|
SHTCx, components/sensor/shtcx, shtc3.jpg, Temperature & Humidity
|
||||||
|
SMT100, components/sensor/smt100, smt100.jpg, Moisture & Temperature
|
||||||
STS3X, components/sensor/sts3x, sts3x.jpg, Temperature
|
STS3X, components/sensor/sts3x, sts3x.jpg, Temperature
|
||||||
TMP102, components/sensor/tmp102, tmp102.jpg, Temperature
|
TMP102, components/sensor/tmp102, tmp102.jpg, Temperature
|
||||||
TMP117, components/sensor/tmp117, tmp117.jpg, Temperature
|
TMP117, components/sensor/tmp117, tmp117.jpg, Temperature
|
||||||
@ -356,6 +357,7 @@ Miscellaneous
|
|||||||
Modbus Sensor, components/sensor/modbus_controller, modbus.png
|
Modbus Sensor, components/sensor/modbus_controller, modbus.png
|
||||||
Nextion, components/sensor/nextion, nextion.jpg, Sensors from display
|
Nextion, components/sensor/nextion, nextion.jpg, Sensors from display
|
||||||
Rotary Encoder, components/sensor/rotary_encoder, rotary_encoder.jpg
|
Rotary Encoder, components/sensor/rotary_encoder, rotary_encoder.jpg
|
||||||
|
SMT100, components/sensor/smt100, smt100.jpg, Moisture & Temperature
|
||||||
Tuya Sensor, components/sensor/tuya, tuya.png
|
Tuya Sensor, components/sensor/tuya, tuya.png
|
||||||
TX20, components/sensor/tx20, tx20.jpg, Wind speed & Wind direction
|
TX20, components/sensor/tx20, tx20.jpg, Wind speed & Wind direction
|
||||||
|
|
||||||
@ -441,6 +443,7 @@ Output Components
|
|||||||
MCP4725, components/output/mcp4725, mcp4725.jpg
|
MCP4725, components/output/mcp4725, mcp4725.jpg
|
||||||
MCP4728, components/output/mcp4728, mcp4728.jpg
|
MCP4728, components/output/mcp4728, mcp4728.jpg
|
||||||
MCP47A1, components/output/mcp47a1, mcp47a1.svg
|
MCP47A1, components/output/mcp47a1, mcp47a1.svg
|
||||||
|
DAC7678, components/output/dac7678, dac7678.svg
|
||||||
BLE Binary Output, components/output/ble_client, bluetooth.svg
|
BLE Binary Output, components/output/ble_client, bluetooth.svg
|
||||||
Modbus Output, components/output/modbus_controller, modbus.png
|
Modbus Output, components/output/modbus_controller, modbus.png
|
||||||
Custom Output, components/output/custom, language-cpp.svg
|
Custom Output, components/output/custom, language-cpp.svg
|
||||||
@ -562,6 +565,7 @@ Cover Components
|
|||||||
|
|
||||||
Cover Core, components/cover/index, folder-open.svg
|
Cover Core, components/cover/index, folder-open.svg
|
||||||
Template Cover, components/cover/template, description.svg
|
Template Cover, components/cover/template, description.svg
|
||||||
|
Feedback Cover, components/cover/feedback, feedback_cover.svg
|
||||||
Endstop Cover, components/cover/endstop, electric-switch.svg
|
Endstop Cover, components/cover/endstop, electric-switch.svg
|
||||||
Current-Based Cover, components/cover/current_based, flash.svg
|
Current-Based Cover, components/cover/current_based, flash.svg
|
||||||
Time-Based Cover, components/cover/time_based, timer.svg
|
Time-Based Cover, components/cover/time_based, timer.svg
|
||||||
@ -666,6 +670,7 @@ Misc Components
|
|||||||
ESP32 Camera Web Server, components/esp32_camera_web_server, camera.svg
|
ESP32 Camera Web Server, components/esp32_camera_web_server, camera.svg
|
||||||
Stepper, components/stepper/index, stepper.svg
|
Stepper, components/stepper/index, stepper.svg
|
||||||
Servo, components/servo, servo.svg
|
Servo, components/servo, servo.svg
|
||||||
|
Sprinkler, components/sprinkler, sprinkler-variant.svg
|
||||||
|
|
||||||
PCF8574 I/O Expander, components/pcf8574, pcf8574.jpg
|
PCF8574 I/O Expander, components/pcf8574, pcf8574.jpg
|
||||||
MCP230XX I/O Expander - I²C Bus, components/mcp230xx, mcp230xx.svg
|
MCP230XX I/O Expander - I²C Bus, components/mcp230xx, mcp230xx.svg
|
||||||
|