From 14fbfe3b647125bc27e87c03b04a149ba03e4078 Mon Sep 17 00:00:00 2001 From: Jesse Hills <3060199+jesserockz@users.noreply.github.com> Date: Sat, 9 Jan 2021 07:52:26 +1300 Subject: [PATCH 01/47] Bump version to v1.17.0-dev --- Doxygen | 2 +- _static/version | 2 +- components/remote_transmitter.rst | 3 +++ components/sensor/apds9960.rst | 5 +++++ conf.py | 4 ++-- devices/sonoff_basic.rst | 3 +-- guides/diy.rst | 1 + 7 files changed, 14 insertions(+), 6 deletions(-) diff --git a/Doxygen b/Doxygen index 1ba35f94e..ae4d37139 100644 --- a/Doxygen +++ b/Doxygen @@ -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 = 1.16.0-dev +PROJECT_NUMBER = 1.17.0-dev # 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 diff --git a/_static/version b/_static/version index 1f0d2f335..2b36e169a 100644 --- a/_static/version +++ b/_static/version @@ -1 +1 @@ -1.16.0-dev +1.17.0-dev \ No newline at end of file diff --git a/components/remote_transmitter.rst b/components/remote_transmitter.rst index 6561e1958..a2334fcb9 100644 --- a/components/remote_transmitter.rst +++ b/components/remote_transmitter.rst @@ -74,6 +74,9 @@ Configuration variables: - **transmitter_id** (*Optional*, :ref:`config-id`): The remote transmitter to send the remote code with. Defaults to the first one defined in the configuration. + +If you're looking for the same functionality as is default in the ``rpi_rf`` integration in +Home Assistant, you'll want to set the **times** to 10 and the **wait_time** to 0s. .. _remote_transmitter-transmit_raw: diff --git a/components/sensor/apds9960.rst b/components/sensor/apds9960.rst index ba0909054..dd0885858 100644 --- a/components/sensor/apds9960.rst +++ b/components/sensor/apds9960.rst @@ -76,6 +76,11 @@ Binary Sensor Configuration: - **id** (*Optional*, :ref:`config-id`): Manually specify the ID used for code generation. - All other options from :ref:`Binary Sensor `. +Troubleshooting: +---------------- + +With some APDS9960 modules the VL pin needs to be supplied with 3.3V for gesture sensing to work. The VL pin provides power for the infrared LED that is used to detect gestures. There may be two pads on the module which, if shorted with a solder joint, cause the main VCC power pin to supply power for the infrared LED as well. However, providing a separate power supply via the VL pin may help to isolate the rest of the circuit from noise created by pulsing the infrared LED at relatively high power. + See Also -------- diff --git a/conf.py b/conf.py index 8a22ea208..247a657cc 100644 --- a/conf.py +++ b/conf.py @@ -70,9 +70,9 @@ author = 'Otto Winter' # built documents. # # The short X.Y version. -version = '1.16' +version = '1.17' # The full version, including alpha/beta/rc tags. -release = '1.16.0-dev' +release = '1.17.0-dev' # The language for content autogenerated by Sphinx. Refer to documentation # for a list of supported languages. diff --git a/devices/sonoff_basic.rst b/devices/sonoff_basic.rst index 590d76ce0..463faa92e 100644 --- a/devices/sonoff_basic.rst +++ b/devices/sonoff_basic.rst @@ -54,8 +54,7 @@ exposes all of the basic functions. esphome: name: platform: ESP8266 - board: esp8285 - arduino_version: 2.4.2 + board: esp01_1m wifi: ssid: diff --git a/guides/diy.rst b/guides/diy.rst index 6d6855307..6b492f24f 100644 --- a/guides/diy.rst +++ b/guides/diy.rst @@ -98,3 +98,4 @@ Sample Configurations - `Control LG UD79-B monitor via UART `__ by :ghuser:`kquinsland` - `ESPHome AXA Remote 2 control `__ by :ghuser:`galagaking` - `ESPHome WF-DS01 TuyaMCU based dimmable bedside touch lamp `__ by :ghuser:`davet2001` +- `Universal menu system for devices with rotary encoder with push and SSD1306 I2C display `__ by :ghuser:`mikosoft83` From f848da87b9dbeb70276018c3fdd80673cffc35aa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Florian=20M=C3=B6sch?= Date: Fri, 8 Jan 2021 23:42:58 +0100 Subject: [PATCH 02/47] DS1307 real time clock component (#910) * add DS1307 documentation * add sync to/from rtc actions * changed action names * reformat action documentation * cleanup lint * link actions --- components/time.rst | 74 +++++++++++++++++++++++++++++++++++++++++- guides/automations.rst | 2 ++ 2 files changed, 75 insertions(+), 1 deletion(-) diff --git a/components/time.rst b/components/time.rst index 643ebfe4a..6dbb927da 100644 --- a/components/time.rst +++ b/components/time.rst @@ -88,6 +88,78 @@ Configuration variables: - **on_time** (*Optional*, :ref:`Automation `): Automation to run at specific intervals using a cron-like syntax. See :ref:`time-on_time`. +DS1307 Time Source +------------------ + +You first need to set up the :doc:`I2C ` component. + +.. code-block:: yaml + + # Example configuration entry + time: + - platform: ds1307 + id: ds1307_time + +Configuration variables: + +- **id** (*Optional*, :ref:`config-id`): Specify the ID of the time for use in lambdas. +- **address** (*Optional*, int): Manually specify the I²C address of the RTC. Defaults to ``0x68``. +- **timezone** (*Optional*, string): Manually tell ESPHome what time zone to use with `this format + `__ (warning: the format is quite complicated) + or the simpler `TZ database name `__ in the form + /. ESPHome tries to automatically infer the time zone string based on the time zone of the computer + that is running ESPHome, but this might not always be accurate. +- **on_time** (*Optional*, :ref:`Automation `): Automation to run at specific intervals using + a cron-like syntax. See :ref:`time-on_time`. + +DS1307 Actions +-------------- + +The DS1307 component supports :ref:`actions ` that can be used to synchronize the RTC hardware and +the system clock. + +.. _ds1307-write_action: + +``ds1307.write`` Action +*********************** + +This :ref:`Action ` triggers a synchronization of the current system time to the RTC hardware. + +.. note:: + + The DS1307 component will *not* write the RTC clock if not triggered *explicitely* by this action. + +.. code-block:: yaml + + on_...: + - ds1307.write + + # in case you need to specify the DS1307 id + - ds1307.write: + id: ds1307_time + +.. _ds1307-read_action: + +``ds1307.read`` Action +********************** + +This :ref:`Action ` triggers a synchronization of the current system time from the RTC hardware. + +.. note:: + + The DS1307 component will automatically read the RTC clock every 15 minutes by default and synchronize the + system clock when a valid timestamp was read from the RTC. (The ``update_interval`` can be changed.) + This action can be used to trigger *additional* synchronizations. + +.. code-block:: yaml + + on_...: + - ds1307.read + + # in case you need to specify the DS1307 id + - ds1307.read: + id: ds1307_time + Use In Lambdas -------------- @@ -142,7 +214,7 @@ created based on a given format. If you want to get the current time attributes, .. _strftime: strftime -^^^^^^^^ +******** The second way to use the time object is to directly transform it into a string like ``2018-08-16 16:31``. This is directly done using C's `strftime `__ function which diff --git a/guides/automations.rst b/guides/automations.rst index 589c5b8b7..66c8c298a 100644 --- a/guides/automations.rst +++ b/guides/automations.rst @@ -374,6 +374,8 @@ All Actions - :ref:`http_request.get ` / :ref:`http_request.post ` / :ref:`http_request.send ` - :ref:`rf_bridge.send_code ` - :ref:`rf_bridge.learn ` +- :ref:`ds1307.read ` +- :ref:`ds1307.write ` .. _config-condition: From 51175fb634046b90d88fde82a13c79678dfb8a5e Mon Sep 17 00:00:00 2001 From: Guillermo Ruffino Date: Tue, 12 Jan 2021 10:14:11 -0300 Subject: [PATCH 03/47] add rc522 i2c config variant (#933) * add i2c config variant * add i2c address --- components/binary_sensor/rc522.rst | 70 +++++++++++++++++++++--------- 1 file changed, 50 insertions(+), 20 deletions(-) diff --git a/components/binary_sensor/rc522.rst b/components/binary_sensor/rc522.rst index 0fb6438af..5c4602887 100644 --- a/components/binary_sensor/rc522.rst +++ b/components/binary_sensor/rc522.rst @@ -13,8 +13,8 @@ Component/Hub The ``rc522`` component allows you to use RC522 RFID controllers (`datasheet `__, `Ali Express `__) -with ESPHome. This component is a global hub that establishes the connection to the RC522 via :ref:`SPI ` and -outputs its data. Using the :ref:`RC522 binary sensors ` you can then +with ESPHome. This component is a global hub that establishes the connection to the RC522 via either :ref:`SPI ` or +:ref:`I²C ` and outputs its data. Using the :ref:`RC522 binary sensors ` you can then create individual binary sensors that track if an RFID tag is currently detected by the RC522. .. figure:: images/rc522-full.jpg @@ -23,20 +23,37 @@ create individual binary sensors that track if an RFID tag is currently detected See :ref:`rc522-setting_up_tags` for information on how to setup individual binary sensors for this component. -As the communication with the RC522 is done using SPI you need to have an :ref:`SPI bus ` in your configuration with both -the **miso_pin** and **mosi_pin** set. +The RC522 supports SPI, I²C and UART communication protocols, ESPHome can use either SPI or I²C. + +* If you have a module like the image above, it can only be used in SPI mode (`unless hacked `__) + and you need to have an :ref:`SPI bus ` in your configuration with both the **miso_pin** and **mosi_pin** set. + +* If you have a RC522 which communicates via I²C like in the M5 Stack then you need to have an :ref:`I²C ` bus configured. + +SPI Option +********** .. code-block:: yaml - # Example configuration entry spi: - clk_pin: D0 - miso_pin: D1 - mosi_pin: D2 rc522_spi: - cs_pin: D3 - update_interval: 1s + cs_pin: GPIO15 + + binary_sensor: + - platform: rc522 + uid: 74-10-37-94 + name: "RC522 RFID Tag" + +I²C Option +********** + +.. code-block:: yaml + + i2c: + + rc522_i2c: + cs_pin: GPIO2 binary_sensor: - platform: rc522 @@ -46,18 +63,31 @@ the **miso_pin** and **mosi_pin** set. Configuration variables: ************************ -- **cs_pin** (**Required**, :ref:`Pin Schema `): The pin on the ESP that the chip select line - is connected to. - **reset_pin** (*Optional*, :ref:`Pin Schema `): The pin connected to the RST line. Some tests shows the RC522 working okay without this. - **update_interval** (*Optional*, :ref:`config-time`): The duration of each scan on the RC522. This affects the duration that the individual binary sensors stay active when they're found. - If a device is not found within this time window, it will be marked as not present. Defaults to 1s. -- **on_tag** (*Optional*, :ref:`Automation `): An automation to perform - when a tag is read. See :ref:`rc522-on_tag`. + If a device is not found within this time window, it will be marked as not present. Defaults to ``1s``. +- **on_tag** (*Optional*, :ref:`Automation `): An automation to perform when a tag is read. See + :ref:`rc522-on_tag`. +- **id** (*Optional*, :ref:`config-id`): Manually specify the ID for this component. + +SPI Only: +^^^^^^^^^ + +- **cs_pin** (**Required**, :ref:`Pin Schema `): The pin on the ESP that the chip select line + is connected to. - **spi_id** (*Optional*, :ref:`config-id`): Manually specify the ID of the :ref:`SPI Component ` if you want to use multiple SPI buses. -- **id** (*Optional*, :ref:`config-id`): Manually specify the ID for this component. + + +I²C Only: +^^^^^^^^^ + +- **address** (*Optional*, int): Manually specify the I²C address of the sensor. Defaults to ``0x28``. +- **i2c_id** (*Optional*, :ref:`config-id`): Manually specify the ID of the :ref:`I²C Component ` if you want + to use multiple I²C buses. + .. _rc522-on_tag: @@ -73,7 +103,7 @@ The parameter ``x`` this trigger provides is of type ``std::string`` and is the .. code-block:: yaml - rc522: + rc522_spi: # or rc522_i2c # ... on_tag: then: @@ -86,7 +116,7 @@ using :ref:`api-homeassistant_tag_scanned_action`. .. code-block:: yaml - rc522: + rc522_spi: # or rc522_i2c # ... on_tag: then: @@ -108,7 +138,7 @@ unique id (``uid``) is currently being detected by the RC522 or not. miso_pin: D1 mosi_pin: D2 - rc522_spi: + rc522_spi: # or rc522_i2c cs_pin: D3 update_interval: 1s @@ -149,5 +179,5 @@ See Also - :doc:`index` - :doc:`rdm6300` - :doc:`pn532` -- :apiref:`rc522_spi/rc522_spi.h` +- :apiref:`rc522/rc522.h` - :ghedit:`Edit` From da4a791eb1e43e046f1d2621e162edbd4774413f Mon Sep 17 00:00:00 2001 From: SenexCrenshaw <35600301+SenexCrenshaw@users.noreply.github.com> Date: Wed, 13 Jan 2021 13:33:24 -0500 Subject: [PATCH 04/47] Updated Mcp3008 to support reference_voltage and voltage_sampler::VoltageSampler (#874) Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com> --- changelog/v1.15.0.rst | 2 +- components/sensor/images/mcp3008.jpg | Bin 0 -> 11235 bytes components/{ => sensor}/mcp3008.rst | 42 +++++++++++++++++---------- images/mcp3008.jpg | Bin 0 -> 11235 bytes images/mcp3008.png | Bin 71364 -> 0 bytes index.rst | 2 +- 6 files changed, 29 insertions(+), 17 deletions(-) create mode 100644 components/sensor/images/mcp3008.jpg rename components/{ => sensor}/mcp3008.rst (62%) create mode 100644 images/mcp3008.jpg delete mode 100644 images/mcp3008.png diff --git a/changelog/v1.15.0.rst b/changelog/v1.15.0.rst index 261c6fca3..983619682 100644 --- a/changelog/v1.15.0.rst +++ b/changelog/v1.15.0.rst @@ -41,7 +41,7 @@ Changelog - Version 1.15.0 - September 13, 2020 PID Controller, components/climate/pid, function.svg IR Remote Climate, components/climate/ir_climate, air-conditioner-ir.svg HTTP Request, components/http_request, connection.svg - MCP3008 8-Channel 10-Bit A/D Converter, components/mcp3008, mcp3008.png + MCP3008 8-Channel 10-Bit A/D Converter, components/mcp3008, mcp3008.jpg SN74HC595 I/O Expander, components/sn74hc595, sn74hc595.jpg TM1651 Battery Display, components/tm1651, tm1651_battery_display.jpg RF Bridge, components/rf_bridge, rf_bridge.jpg diff --git a/components/sensor/images/mcp3008.jpg b/components/sensor/images/mcp3008.jpg new file mode 100644 index 0000000000000000000000000000000000000000..0aa0670b838d7717b262e7242410438973ec4323 GIT binary patch literal 11235 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 O|Bc31Y5iY~)&B+joXU6r literal 0 HcmV?d00001 diff --git a/components/mcp3008.rst b/components/sensor/mcp3008.rst similarity index 62% rename from components/mcp3008.rst rename to components/sensor/mcp3008.rst index 33929be67..173f878e6 100644 --- a/components/mcp3008.rst +++ b/components/sensor/mcp3008.rst @@ -3,20 +3,17 @@ MCP3008 I/O Expander .. seo:: :description: Instructions for setting up MCP3008 10 Bit Analog to Digital Converter in ESPHome. - :image: mcp3008.png - -.. note:: - - This page is incomplete and could some work. If you want to contribute, please read the - :doc:`contributing guide `. This page is missing: - - - An image for the front page. - - Formal documentation of the mcp3008 sensor entry (parent, update_interval, number, etc.) - - See Dallas sensor for reference model + :keywords: MCP3008 + :image: images/mcp3008.jpg The Microchip Technology Inc. MCP3008 devices are successive approximation 10-bit Analogto-Digital (A/D) converters with on-board sample and -hold circuitry. Each pin will respond with a 0-1023 result depending on the voltage it is reading +hold circuitry. + +.. figure:: images/mcp3008.jpg + :align: center + :width: 50.0% + MCP3008 ------- @@ -29,6 +26,14 @@ It uses the :ref:`SPI Bus ` for communication. Once configured, you can use any of the 8 pins as sensors for your projects. +Each pin will respond with a voltage calculated off of the reference_voltage (default is 3.3v). +It calculates the voltage by multplying the reference_voltage * value on the pin (basically the percentage of VREF) + +Most configurations will set the reference_voltage = VREF (pin 13 on the chip) + +If you want just the scaled value you can use the read_data function + ``float MCP3008::read_data(uint8_t pin)`` + .. code-block:: yaml # Example configuration entry @@ -41,10 +46,10 @@ sensors for your projects. # See `resistance` and `ntc` platorms for other options sensor: - platform: mcp3008 # Attached to pin 0 of the MCP3008. - # The result will be a reading from 0-1023 + reference_voltage: 3.19 update_interval: 1s id: freezer_temp_source - number: 0 # pin number + number: 0 # MCP3008 pin number - platform: resistance id: freezer_resistance_sensor sensor: freezer_temp_source @@ -61,14 +66,21 @@ sensors for your projects. Configuration variables: ~~~~~~~~~~~~~~~~~~~~~~~~ - +MCP3008 Component +***************** - **id** (**Required**, :ref:`config-id`): The id to use for this MCP3008 component. - **cs_pin** (**Required**, int): The SPI cable select pin to use +MCP3008 Sensor Component +************************ +- **id** (**Required**, :ref:`config-id`): The id of the parent MCP3008 component. +- **number** (**Required**, int): The pin number of the MCP3008 +- **reference_voltage** (*Optional*, float): The reference voltage. Defaults to ``3.3V``. +- **update_interval** (*Optional*, :ref:`config-time`): The interval to check the sensor. Defaults to ``1s``. + See Also -------- - :ref:`spi` - :apiref:`mcp3008/mcp3008.h` - :ghedit:`Edit` - diff --git a/images/mcp3008.jpg b/images/mcp3008.jpg new file mode 100644 index 0000000000000000000000000000000000000000..0aa0670b838d7717b262e7242410438973ec4323 GIT binary patch literal 11235 zcmbWdb95(N^Dp|1t%)Yq#J25ZV%xTD+txR>Z6_0BVrQa>ZJj*N@4fH3_n&jmI@P^a zcURS}-n)C(`c&=OpDUj`0AwjKNihHj2mk=`bpSp;00hEzHujDtPEIDqgoYl3mi8uQ zw2mf5|6zWv1A+nI|0PIB2uMh1s4s$shxv!#QQ;BczfM#XG-M=XG!%SHbaYI7Vmur? zVk%NnDi$Ud5fN>W|F#GJzccVT06>8TEQ1Jufe-^gQ9!^@Kt6{6cwd762m5C%|0Pf` zNGK3+2xyqkH30PgNFJ~LBV|=vV7V71eMyV|9|oi5f(xsl`bjy0(dlsXzr62(3n}Ql zs+RfKue1jAg{vQ@|FBWf%PnDD>*9)Ya&)p!O!}-W%JWuCz61_bRIvqRB&Kx+8|k?Y z_d_((GsrerB%ORrF`{AH zk7{2zkvP<8zl*$^33-bdTpK|q%E@tU9nE#(Q1XmCaW#IOUj=VbqtEzBCD3(yqz9|2 zu_Be>?X%46za+MhRK0mQUfPY-Dzz3a3S-<;JZiW>%+FCC%GhwSVJ*wLd3m?*lac4@ zw-Il%=`1v%NshjfJxPpA-GzGFJH1w6!?8H3E8R_;`bcAY7IAze)_~VVQT0G`12~U$ zu$*W@B7TZWsBLEdp=e>}IkS0ecwO#6nd54?__GR+%JugJ`kpIie-+&p#twkh6q9P+@B~OyA~jj+&yhiD-cI;G z3uz@%suPzfy9VhNJ7AiLjP}BRYF8D(6)^dKR%06DMg~5>T27pUDgyvyNlWQ7o1voT zztLDnm#L?$7#52!aU zUlyRe^LL|AZEN5EJON-&D;fTC3-;w!X#XFN`d9F;H-RGmN9q6P^1m?w_J3}I6Bz&k z1_A*A2>}KU3ii({K>(m&DB$0S7?~iDQ5^!%2pI$w42YQpgoGUv@=1QkE27US1=jz^ z@j>{(UTz-PmHZF$>>8MFmQyKTbr}noJW9{41ZS}qUUf=jlsMJT=_5@S505$C9SBX$ z^K2SMvjeEjak^?EIo%K z;ivT=KMx-Xk2uV0u11{y`n)E^FC~uEUhO+*UUc){gD)C4ItGaVYdDSM)ooG(5AM zE9jWhU?ic!^UbOVdM>JXABy5oZUHO!bE|yP(4L6cz!7OJ^Io4KuFHg*pUpf>s$4bQ zQr{ejq^(kQ$prY)!st*EJTKH_xQ0-kHc71R76Z?Yll=<%3F$)C*z+4U*1 z7(N>%LDo?D9S=^n`D^oY;D4(eH+NL+KiW@DI$22R^c%fy>!Wqj{Y?zd zxUkJkp<*xG!>ihii1pstLT7ajuc8!}yISY*;hU)Dj|3~W53n40q_)wGG7TKRmbl?o zar?C?w3n}PPwI48@ul{am~_#cOQL;A<~Z*&5(pAVM4^gR2u4FyS=z7}?;iR>{2)hh zCkx?%YM&!N0oRgl;UD;syKPU-R2ZKCh3v&TKL_%T+DP5K0EbNw{fulu)n&AmHnyH0 zp1yp+@X66VWX2v{Ev9h_e>2C3?eG?DM&W?ZDVFJ5P9*lbxW32*sTkT0;oElkeYY~r z65BsdsF?O^yL1a<`9AQ_w+`}-#9sniTN1-OLkJ6JW?e^>+d!_FPAgAS)KG>P)MO>6 zo$4LP^MXW$%C{;i&^f6|bLJ=K4i2l&y3sH1sT`8Jq}<&rsN6w{^5L@0F-^^%6YKn_ zQcXVrou7cGX~ZKJFcwCX2qz9@82*>_dyP#-1h`=M^2SBm50 z#sS?s5g5TvxB#<|3g6E)3t)0$IFS40Kzabzr z0X=d8Z{=vdi5SAxleN1%Cj-2McevTMFnQADDu+;4Kx4U3>Q#wE;n@=w9fW3@+?4zA z0thO6bG7^^f~Y$-*MC5hsh1-f-pON9(}yQma5*U%#&Oi&V8&ZR58rL*^Jlzww(@5!Nm0@7NgP_!^r#g`{&Vtz|x&g?))bp zgI;7R^Rh>9&ec8L!nNsE8H{$;XWWM*&!@_%L80Z;T){}PT+tsIcq4y$++za)Kk8=A z6o+&VeOOU{Cs;$FQC$3IP}H7~=9~c8!>vSuJ^+wUk^@*9vhu1A!=cr>3Dv>kS5)bESfs?}JZksKb8E@T*URdv*Vq|SU z$mlhov;i^hdbRQ;{ycUb463f+%#j<*RN-tX9%ZuwdPUD}Ny(+3 zPg%H1MzDDrf>J0LoZ%GPMO^3I{!3#!HpjQxJ1I|Lvypb}lqy^)I*W z{Ef~8b66YU)WfJD@RcALtIl5+al&p>U#;|HZr)nmbgDNNxY*+nE&biii2ccl+7ooq zE6h76*ySF|?pr%C0(yLe6T@_$q52N;9D{!UjWx>*l0541&YEIZ@_6J`=3<{_Nr7gs zyq8WOVm`cfz>z1=?jZG zO#;nyH@3!EadCujHJQ)o_#}>p!jt$tWww0`=%s&4myKbQ(lA>0NUy9K zywG+bhFXA?T)Lvul-Qf~%fFL-?NH9?9>e)n+v+C0jRaAG#zZlrzsT4DQwEbZC^6kE z4wG#3UAs5zcbO&rDna-{F;ABqYF;mkXubsrRXz&rp4 zt1p5h3vDun{RxPfS9O@AyGnXYv zr-k*RY=e<0$Z8ur?@>??Z9~A%G;73*!6o>u^=B>zXqk(w0!xJGsHoTA52wc_l^)pH z*|3ZrG;%}7#ORtp81$x+clqC-sK&^~@;@il@I?`ZBm?K_8BfyfT?1jbxsIODx6O-{ zcg723O@*z#>lcfwJLD@YQw|Ip809F$bZ$_BH;NAQa}oq`8Hh)-qoG;~1Xo8}b@&;S zQe6q(^p4Sy5IeHr5B&5tU{XU|A!eru&WM1nQ1A}2o~>`uj#i>O9-*14Gp|?F_@*jx zA}$?@4h$mua{(Rj2>@fVsS5;G4hpCm%g>H-L{-GHMjl3DTvVSx96}V~GINylG_aaU zyK<*yx}y2brhq*;Ilr=hF4FXEn-P`WMK7R`coQ`QTFl*6m~?kV!jX{TI5{S8jZ9m( zTF=;wMDE)oH1;`MbAz-=Ao>IHs!X*x|{s6_Z<{eX)FK9VUU5m^%Mu zJd_X@octZTtjlNgp{^ESIjTcL_X#x!e*Xczk8;usjGMk3RaYm0o|0b==dM37!6miH*DzZ$@ zSvw4vx)19-R*(D)SKVsw7>>^Q(PGNJm~|BwQHRe8Aj%OM6Ew@IyHSNBux}lOWJvrq zhK7;^k3cPzM(62D+C;3wr3-r&YX3NpF#i`y@R<|#SQ`D!E@bDKy!RlZhaKU^{O*rQ z1d$eWP|}diu=#a#ml+{RDflf2V^u;e0p3aPA`d)%>r6ap#(Y`>A&FMRh6NZ8Xl0f7 zpqAIdM|8;H7noaxRz;VRCS$EqILzw0o9n9y9*2TNbrZB3@%sCw&T*cQ-)+Wc%E6~n zY1vbDmF$1@g8I^k9uop~mym4_PRjQ#V0Qmri&vgPRSRUVr+_mgvItakXVk=%Ep*TF zJK?+)*z$T>N5+rDd;;9V41%k^4Sx_{!uxb_J*YFvmNQ$z-jOTK)7I06ZOg4&>J7VM zv_=%gRE^)uHviRqte5z$Ca;!xt=E5hnES3d~(I$p04?h&};)`L!fBX+T@d-SDFc-Wt9hCAeGUP1<$6P{*!D=#O^$FMiht~f>ZaBeuL5gA9ZVeBxYB%f zMN#u>ZeN)&&p)sOtVHlSIVwIP{E}Vef_1p4da=`nQ3D?@I4zcJ{A*f~Ju)orNksP; z8ucEG=|wXk;36bA70vt6RxY`a8@}C&L#bE!{z^2FeGAW8)havs1Q={n!=+DWen?5% zoob7pNFj}L6kh&VjP>5Jt&~R_*Rm+vM%+FVhGrf%uGts;uS}TW!DJfvl&%*2>;ew}!IOs#B=OP)n` zxt$v~q;XC4Y^Xi@>4n}cZMFrWbV_0m7y?06`uru#n}>j zJ|sK0i)&_Ck|a{?(9V(9SLjM0(*msjiYqK5=0UF~XpzQ@ve^ukoE(6;U_jc9#g zo{!PaFydwUcME!7-9~70YwF;)?P==t<#rP}@ZJ&(GNb+Asq!2R-Ah{!Y`?1A91)bznMhkzp$BlwwrD%BcTtX(#PMEhnNnP+W0|OzFNb zwc2jmhinN;&Y;{mgRGf;V=rZIX?o|bsAqD@tFB*ZTfB3OWB)EKoWL}l0-z~yW~ZmC zYk84&8HCq!Dqee$x{N*XIQJBUQrF_3y~-#?>|DKEBN(q_vKDPXp)KB>*TTU$x%O46 zr)ZH)^e-vc{GGEzc-P;;U0geb@o_TZsEo)}kBsPqJHob&72wvk8Dy-tN}FUhMCm%P zQM^PZx~RQP%53ddHR7V1_;G!cQkpWp7?(z4kFlVYWo`}9OgmOuyL}iYt!%D4YH?Az{v1T7cV;ltM%OZ?|%16nqb6o`* zcoPGa^r4}lmbMgek2>jg#jWh|`OpTKGJ!SdPCDymdMXHx&Hc-DTb)P=J6Jo){GdHT zuM?guIfp-P7&2Cf8!1Grso1wu&h$vX)x5O0CFK~fUEC~c?%12!ate;G1oaaTn*?Re z|3^n#fErcTLWXl#P(Y6>{g1JQp%rr#Hd?ItsKm0ykw(;AkTNWeX3Bc*n1{2H)$_=S zF3*k3C|yd1P(eh2;mu9EiNdz1Iq_aoTen*#Tct!yw^Q_O=7x+_uZF9^t$#%^mtYAx zCEoKyA1hVjJu(ja8hbp69ECVg7+EDOghoer-niRA->D?`?>bS+6jR7%hW~+5z`WBD z^U>6>eU2K9K-KdQH5#3oI5?=TEvE+BPPL40D7;ohk-pc{uBewB5y>OuMsKN!Y1)A#=A^qR(j@kA z^YbC>6{pF9HiwMBdwsHIG^NN;=LKN?k>ZLJ8ue=$?{86MXQa1Wn`tgXrILc$$1P8Y z4NVZHN*8Q#++)9m8^`xOH|9;CP4RQzbP0lUpz8P5NqZyhR+@Q(C50oJq-)b$C%*=Q zlWfj)e#ce)LC6}HHluJNIVC<6ho7QEvuoCbOgENYukZyb{C%1!gX6)69&k zJ@pLi8B40zUV|iY656@5c39z++C&X0(fww@+%NtedEcg?-Ll$;Of?yJMUCQ`TG~bD zKQe;vB-eJf#>&Bem|Je{!7<82UI9}Owob^}m#y^S0q%Ft_JO<8r9#2a7U*Nyv03( zstutPYkTs0p-A6%((`}=&g~;|4)_Dy#2dqc5she9t5j9p`sN@jwQr1-lczVx+1!IH za>7hy+WIYNRy-4ouc8KR%<&VJe@)o4Z*!eYz&nrnd)=FD94MSJ2CP*R^wdF9-U{;E z<2CAf31vE)y4OwF>!sgFMY0Sy2Ei-!EZiQVHGg{;g5ztt7mEL;Kg!@Ua2uV8g@1Il z&*W0zHyLNT1w&`pgFd_p9B+Xa%UD9(HZRR{Pc&)2AtL+OOA|Z-VYXAR6{WS*CGzcA z1qxWOZ*NFfz*gpXi|h~@f=_L{hZ(>2fd&?q^uD_5W9~H&2rgbV*#7pYbCR3+TA3>PvcB; zG@oa8yP|A-qlK;8OLgxdNmtsPiO^(+-M##d5cRscd^!hfvv$QiRH|A)S4Z8C=f*~M zuzBP-8_$zQPdsPz-z)|(dW#>@ND%7~N7S1l&+eFp>P8k=Jf@4irhe~TWH(~YXZt}T z6$-LySMm-vLFh>WhL0(cBzbIKBhv}CkT75TnC*`903Dn$YDCL@`_!FIw+u+#A9(j( zQ@MUgqXexPk2-!hHwK<7MwlmUj_dt;*<}2OSwaX>JtI4yyo)^wsv;0nudN8Q0F22C zD^Yi5*81o3ojg%JP4!79HTBqD_ zNj!=6u^!tIa=Z5$H!=i#lnWYaQ*Xb-+Kt*C8mlWI5^tY)4$;{T>RB^vIq}I5w`n#O zU5SFn*mqM%RCD;-ixdN!RYkwdL)oe3x$_Rr{j*l2cCni#5MVACdx zcBTFVFmGm1_#j`A0h@rww3TYE<8-IYEA`8ZwS$tEzPhBXDc)1QOqeZq!m`WYXk6%f z1~v70SDoNKNBR6gL&h(IjCR!@-_zFqG&s}a3>f&fGLr~1W%Uk9;EO*Eq&dA#>XyAf zMdRn4L^ZGtz7OIe$@n={u3}3kFYX}9x++G znbEPKA~d$3fe{asl;5}5FEWv;>@rAA8OtAno%{sA+lOO78lBb^63o#=Il|#%kuOA-#`muUjm)F4mwC&bQBa6qw?%UEJ1Yr($NBv$7lb3 zrQxeW#{A(MFckBCVOTHJ{FZvrZO_B=uZv$DYu7i@*Uqrafv;~VHcz&go4$sd7#Pcu zashR9Ju&??l!(T}NC$gtmZ04Hmp zv_O$#)k%9`AIpRl&KV)$V5)rzI1Wm@6@B!exbk(_w?it@15%vEwXVFYOe3S6DE_5K z4`p1Ac;6~+DBQfsVrRT8xoYFZ=E>ICo|H*(1&Zyoc|{mIL8>wVmM{>wr2$ClsLD#h z4aop_j7?fH;1>s& zAEHm(uWoy0|4?62@Ie)NHDJQ8i={vZE?;jKDKf6wFK6cP4#_mlQaM!O813wUM206s zmSPgBRk!X}$ryCF2^DwGX87S+5DdhdQaX}WZ2%zyV z@mY5F?ELN#fthr>uwVw=!fxmdj9j4d-CiBKT@z6kaRSRBSTb)4>6>)H?5NF;C?JFZ z4G5_w<-t|vULq|T3?0Uc)2c5ktHDy-F+QPsDISsV*6*YOA{wlV>qf&CR5W^#qD8H~ zDbdui;hf+pRsC`&W?IvUC6+GvS)4aufjwm=hnytAvbYZTQNDjz2so7I9)iFHk%ssQ z`3h`j&XDbxiZL7d4%@%($hY@xxV2_+2!Igk4K~>ghc8BjGI>zH!!wfh9fP7e(2r?= zWrbUQK}x*?z3~u2(_I+6EBTj-<|A#2MoS~T{BXU#;z_?g_m*Hz16U>aMu)=&sA4)F zt1Bqz0#NZ3%SgYXy?z#}O+0$L6I4|jW2opEG+M<)fID^jRJ~-QP7t4`ng^r9p*)PK z6m}~CN93?cE`X-Y*2uee?`mg-F|=_R&qr^g5IJ_WvUn&?@+CD{f z36tPL)%8eBDsp`|a$8}XO{v$N>3Oo_N}ENZxXQdEOUQ*l1kUhJ8cN;?LUSl8_bnAT zTmC?|;ci+rJef)xJu+;0WRD1j8rkM#>ec3^hZk`P1hdX~9VOi-AW%^ht%jscD8R$W zM47V0t4;f=i!1U@b_x5KRD>!Iib{YDmzvZKL1w;iRV`&g>{L&0Tl`QgigT70p;yU4 z3wHzB5OR`)d2T8&@G$r$p~YdEcH_IgMhJ6}l}F^IDw*q~@#F~YP6wlb`aw$#2pdL} zmw$)mkl5u{sLH@tF$h9iOot+GpC+iLI3d%7Hfm%QrRSuLKoZJPNx8q9Op8BKYD+=O2K zvWz$VkDTtef^6dBm=Qnl~&2)Z)z>^GYOi14GdlUMO_;-2V6d}|=^(?ExIL1%cjSB*?aW1V}3n zqNiBp-;8q>;Ag#}gGr+qbaj0nF(*!78a}dBPFf^{iwCR?B|s-P#N;4Eo=&d*b6k1}2V7Z?`<+1oyr}6f^g3L2AQ}Gf znW^%hi(O^Vsb)}vC5yv@;v_H;7LijLDdHuKFuDm1FG{CPs6JjpF2!xPOmX%>p~2d{ zWI@e=T%wmkB)(&i)1R4)rX?g&b4bgT;sql+!wD695s(H#YA^yiQD0_+ME zVOEtncVaN5$*KiE`Dk3+8igLi*8EGL_mbjON3Gew99!KkWL2Jo!Ui?48tz0r9_O zC4m9nSLzh)%2taMHY3|}f@i}YBRrUck1r0%&Ya;L1E&GF`rZx4_{p_xB$WBS`BBYH zJJn*X1XZ-<1{L-cHp8YUd+#aPlqT(yo&tmeNK#ak^A&w!(|aMmy|2-E7Dbn&5Fq1k{bG2t3y%4PKWPQ^%>U#MW8P@YC5(&hAi%jtxX{G<+)Rht(6g~c-#2!$G_49-{Lf}J>(JB`Unp1%CWK`f#GIA&+7v{53+KtZ@I_D* zDzAwV&R(EK@%uQnd&j0WLqu@{TKaH=029nn8%%&iDhVuvYzQK8uM8?RsoF1JADQb! zbDs}`Dr`R1*hFqWr~~%z;uU!$um}*(vmgAd+Y0>^Q3P$&exot;8&#p|*lQExq$0qK zoHT3PoO7ENb>tFA6>&cbrX%l}WM9RhK>xo~W_iMoZ$a3x@1$yZw`3}1YZ*}oq)-ml zwo#r0iN?bUf*+{Z)WtX3S)NtTNyzTLy+C)slf0O;)8Qu|Z#u+PmI7JpsgDNm z4wC;4^1)pCu6ICRSQ}Zpck5%se7K|2fA0Sgpp#B^34;=oL`ehi<)`50pWupYoq`qC z{mY-~B^RF$uEOpN$8_`&?F=LC)Z*QT(ejmo=Kr&44(0#7ll7k+Z~p%#t)L(v`~Y~r O|Bc31Y5iY~)&B+joXU6r literal 0 HcmV?d00001 diff --git a/images/mcp3008.png b/images/mcp3008.png deleted file mode 100644 index 170a5c9380be7df72c047fa6d773457548341a8a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 71364 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 Date: Fri, 15 Jan 2021 09:30:01 +1300 Subject: [PATCH 05/47] Add docs for pn532 NDEF functionality (#936) --- components/binary_sensor/pn532.rst | 80 ++++++++++++++++++++++++++++-- 1 file changed, 77 insertions(+), 3 deletions(-) diff --git a/components/binary_sensor/pn532.rst b/components/binary_sensor/pn532.rst index 549083b1e..bab9ca903 100644 --- a/components/binary_sensor/pn532.rst +++ b/components/binary_sensor/pn532.rst @@ -77,9 +77,11 @@ if the tag is changed or goes away for one cycle of ``update_interval``. The parameter ``x`` this trigger provides is of type ``std::string`` and is the tag UID in the format ``74-10-37-94``. The configuration below will for example publish the tag ID on the MQTT topic ``pn532/tag``. +See :ref:`pn532-ndef_reading` below for how to use the second ``tag`` parameter that is provided to this trigger. + .. code-block:: yaml - pn532: + pn532_...: # ... on_tag: then: @@ -92,7 +94,7 @@ using :ref:`api-homeassistant_tag_scanned_action`. .. code-block:: yaml - pn532: + pn532_...: # ... on_tag: then: @@ -103,7 +105,7 @@ Alternatively you could also send the value directly to Home Assistant via a .. code-block:: yaml - pn532: + pn532_...: # ... on_tag: then: @@ -167,10 +169,82 @@ When your code is running and you approach the PN532 with an NFC Tag, you should Then copy this id and create a ``binary_sensor`` entry as in the configuration example. Repeat this process for each tag. +.. _pn532-ndef: + +NDEF +==== + +The PN532 supports reading and writing NDEF formatted data into the cards. + +.. _pn532-ndef_reading: + +NDEF reading +------------ + +The following example will read an NFC tag that has been formatted and written using the Home Assistant Companion +App and send it to Home Assistant using the :ref:`api-homeassistant_tag_scanned_action`. The ``tag`` variable is +supplied to the ``on_tag`` trigger and any actions that run and can be used as below. + +.. code-block:: yaml + + pn532_...: + # ... + on_tag: + then: + - homeassistant.tag_scanned: !lambda | + if (!tag.has_ndef_message()) { + return x; + } + auto message = tag.get_ndef_message(); + auto records = message->get_records(); + for (auto &record : records) { + std::string payload = record->get_payload(); + size_t pos = payload.find("https://www.home-assistant.io/tag/"); + if (pos != std::string::npos) { + return payload.substr(pos + 34); + } + } + return x; + +.. _pn532-ndef_writing: + +NDEF Writing +------------ + +The following example can be used to write a (pseudo) random UUID to the tag in the same format as the +Home Assistant Companion App does. + +.. code-block:: yaml + + on_... + then: + - lambda: |- + static const char alphanum[] = "0123456789abcdef"; + std::string uri = "https://www.home-assistant.io/tag/"; + for (int i = 0; i < 8; i++) + uri += alphanum[random_uint32() % (sizeof(alphanum) - 1)]; + uri += "-"; + for (int j = 0; j < 3; j++) { + for (int i = 0; i < 4; i++) + uri += alphanum[random_uint32() % (sizeof(alphanum) - 1)]; + uri += "-"; + } + for (int i = 0; i < 12; i++) + uri += alphanum[random_uint32() % (sizeof(alphanum) - 1)]; + auto message = new nfc::NdefMessage(); + message->add_uri_record(uri); + ESP_LOGD("ndef", "Writing payload: %s", uri.c_str()); + id(pn532_board).write_mode(message); + - wait_until: + not: + pn532.is_writing: + - logger.log: "Finished writing tag" + See Also -------- - :doc:`index` - :doc:`rdm6300` +- :doc:`rc522` - :apiref:`pn532/pn532.h` - :ghedit:`Edit` From b6eeb6e3c3befaa6ff3a1c74a57dbd00f5e8a1fb Mon Sep 17 00:00:00 2001 From: Zvonimir Haramustek Date: Sat, 16 Jan 2021 01:20:08 +0100 Subject: [PATCH 06/47] Adding Inkplate 6 docs (#778) * Added Inkplate. * Fixing Inkplate docs. * Added Configuration variables for Inkplate. * Update components/display/Inkplate.rst Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com> * Added another warning. * Fixed indents. * Done requested change * Add pin configurations to docs * Apply suggestions from code review Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com> --- components/display/Inkplate.rst | 277 +++++++++++++++++++++++++ components/display/images/Inkplate.jpg | Bin 0 -> 33233 bytes images/Inkplate.jpg | Bin 0 -> 33233 bytes index.rst | 1 + 4 files changed, 278 insertions(+) create mode 100644 components/display/Inkplate.rst create mode 100644 components/display/images/Inkplate.jpg create mode 100644 images/Inkplate.jpg diff --git a/components/display/Inkplate.rst b/components/display/Inkplate.rst new file mode 100644 index 000000000..8158629c1 --- /dev/null +++ b/components/display/Inkplate.rst @@ -0,0 +1,277 @@ +Inkplate 6 +========== + +.. seo:: + :description: Instructions for setting up Inkplate E-Paper displays in ESPHome. + :image: Inkplate.jpg + +All-in-one e-paper display ``Inkplate 6`` +Inkplate 6 is a powerful, Wi-Fi enabled ESP32 based six-inch e-paper display – recycled from a Kindle e-reader. Its main feature is simplicity. +Learn more at `Inkplate's website `__ + +.. figure:: images/Inkplate.jpg + :align: center + :width: 75.0% + + Inkplate 6 + + +.. code-block:: yaml + + # Example minimal configuration entry + + mcp23017: + - id: mcp23017_hub + address: 0x20 + + display: + - platform: inkplate + id: inkplate_display + greyscale: false + partial_updating: false + update_interval: 60s + + ckv_pin: 32 + sph_pin: 33 + gmod_pin: + mcp23017: mcp23017_hub + number: 1 + gpio0_enable_pin: + mcp23017: mcp23017_hub + number: 8 + oe_pin: + mcp23017: mcp23017_hub + number: 0 + spv_pin: + mcp23017: mcp23017_hub + number: 2 + powerup_pin: + mcp23017: mcp23017_hub + number: 4 + wakeup_pin: + mcp23017: mcp23017_hub + number: 3 + vcom_pin: + mcp23017: mcp23017_hub + number: 5 + +.. warning:: + + When using the Inkplate epaper module, the GPIO pin numbers above *cannot be changed* as they are + hardwired within the module/PCB. + +.. warning:: + + Inkplate module cannot perform partial update if 3 bit mode is on. + It just ignores the function call in that case. + + +Configuration variables +*********************** + +- **id** (*Optional*, :ref:`config-id`): Manually specify the ID used for code generation. +- **greyscale** (*Optional*, boolean): Makes the screen display 3 bit colors. Defaults to ``False`` +- **partial_updating** (*Optional*, boolean): Makes the screen update partially, which is faster, but leaves burnin. Defaults to ``False`` +- **full_update_every** (*Optional*, int): When partial updating is enabled, forces a full screen update after chosen number of updates. Defaults to ``10`` +- **lambda** (*Optional*, :ref:`lambda `): The lambda to use for rendering the content on the display. + See :ref:`display-engine` for more information. +- **update_interval** (*Optional*, :ref:`config-time`): The interval to re-draw the screen. Defaults to ``5s``. +- **pages** (*Optional*, list): Show pages instead of a single lambda. See :ref:`display-pages`. + +- **ckv_pin** (**Required**, :ref:`config-pin`): The CKV pin for the Inkplate display. +- **gmod_pin** (**Required**, :ref:`config-pin`): The GMOD pin for the Inkplate display. +- **gpio0_enable_pin** (**Required**, :ref:`config-pin`): The GPIO0 Enable pin for the Inkplate display. +- **oe_pin** (**Required**, :ref:`config-pin`): The OE pin for the Inkplate display. +- **powerup_pin** (**Required**, :ref:`config-pin`): The Powerup pin for the Inkplate display. +- **sph_pin** (**Required**, :ref:`config-pin`): The SPH pin for the Inkplate display. +- **spv_pin** (**Required**, :ref:`config-pin`): The SPV pin for the Inkplate display. +- **vcom_pin** (**Required**, :ref:`config-pin`): The VCOM pin for the Inkplate display. +- **cl_pin** (*Optional*, :ref:`config-pin`): The CL pin for the Inkplate display. + Defaults to GPIO0. +- **le_pin** (*Optional*, :ref:`config-pin`): The LE pin for the Inkplate display. + Defaults to GPIO2. + +- **display_data_0_pin** (*Optional*, :ref:`config-pin`): The Data 0 pin for the Inkplate display. + Defaults to GPIO4. +- **display_data_1_pin** (*Optional*, :ref:`config-pin`): The Data 1 pin for the Inkplate display. + Defaults to GPIO5. +- **display_data_2_pin** (*Optional*, :ref:`config-pin`): The Data 2 pin for the Inkplate display. + Defaults to GPIO18. +- **display_data_3_pin** (*Optional*, :ref:`config-pin`): The Data 3 pin for the Inkplate display. + Defaults to GPIO19. +- **display_data_4_pin** (*Optional*, :ref:`config-pin`): The Data 4 pin for the Inkplate display. + Defaults to GPIO23. +- **display_data_5_pin** (*Optional*, :ref:`config-pin`): The Data 5 pin for the Inkplate display. + Defaults to GPIO25. +- **display_data_6_pin** (*Optional*, :ref:`config-pin`): The Data 6 pin for the Inkplate display. + Defaults to GPIO26. +- **display_data_7_pin** (*Optional*, :ref:`config-pin`): The Data 7 pin for the Inkplate display. + Defaults to GPIO27. + + +Complete example +**************** + +The following is a complete example YAML configuration that does a few things beyond the usual +Wi-Fi, API, and OTA configuration. + +.. code-block:: yaml + + # Example configuration entry + esphome: + name: inkplate + platform: ESP32 + board: esp-wrover-kit + + logger: + + wifi: + ssid: + password: + ap: + ssid: Inkplate-AP + password: '12345678' + + captive_portal: + + ota: + + api: + + switch: + - platform: restart + name: "Inkplate Reboot" + id: reboot + + - platform: gpio + id: battery_read_mosfet + pin: + mcp23017: mcp23017_hub + number: 9 + inverted: true + + - platform: template + name: "Inkplate Greyscale mode" + lambda: return id(inkplate_display).get_greyscale(); + turn_on_action: + - lambda: id(inkplate_display).set_greyscale(true); + turn_off_action: + - lambda: id(inkplate_display).set_greyscale(false); + + - platform: template + name: "Inkplate Partial Updating" + lambda: return id(inkplate_display).get_partial_updating(); + turn_on_action: + - lambda: id(inkplate_display).set_partial_updating(true); + turn_off_action: + - lambda: id(inkplate_display).set_partial_updating(false); + + sensor: + - platform: adc + id: battery_voltage + update_interval: never + attenuation: 11db + pin: 35 + - platform: template + name: "Inkplate Battery Voltage" + lambda: |- + id(battery_read_mosfet).turn_on(); + delay(1); + float adc = id(battery_voltage).sample(); + id(battery_read_mosfet).turn_off(); + return adc; + filters: + - multiply: 2 + + i2c: + + mcp23017: + - id: mcp23017_hub + address: 0x20 + + binary_sensor: + - platform: status + name: "Inkplate Status" + id: system_status + + - platform: gpio + name: "Inkplate Touch Pad 1" + pin: + mcp23017: mcp23017_hub + number: 10 + - platform: gpio + name: "Inkplate Touch Pad 2" + pin: + mcp23017: mcp23017_hub + number: 11 + - platform: gpio + name: "Inkplate Touch Pad 3" + pin: + mcp23017: mcp23017_hub + number: 12 + + time: + - platform: sntp + id: esptime + + font: + - file: "Helvetica.ttf" + id: helvetica_96 + size: 96 + - file: "Helvetica.ttf" + id: helvetica_48 + size: 48 + + + display: + - platform: inkplate + id: inkplate_display + greyscale: false + partial_updating: false + update_interval: 60s + + ckv_pin: 32 + sph_pin: 33 + gmod_pin: + mcp23017: mcp23017_hub + number: 1 + gpio0_enable_pin: + mcp23017: mcp23017_hub + number: 8 + oe_pin: + mcp23017: mcp23017_hub + number: 0 + spv_pin: + mcp23017: mcp23017_hub + number: 2 + powerup_pin: + mcp23017: mcp23017_hub + number: 4 + wakeup_pin: + mcp23017: mcp23017_hub + number: 3 + vcom_pin: + mcp23017: mcp23017_hub + number: 5 + + lambda: |- + it.fill(COLOR_ON); + + it.print(100, 100, id(helvetica_48), COLOR_OFF, TextAlign::TOP_LEFT, "ESPHome"); + + it.strftime(400, 300, id(helvetica_48), COLOR_OFF, TextAlign::CENTER, "%Y-%m-%d", id(esptime).now()); + it.strftime(400, 400, id(helvetica_96), COLOR_OFF, TextAlign::CENTER, "%H:%M", id(esptime).now()); + + if (id(system_status).state) { + it.print(700, 100, id(helvetica_48), COLOR_OFF, TextAlign::TOP_RIGHT, "Online"); + } else { + it.print(700, 100, id(helvetica_48), COLOR_OFF, TextAlign::TOP_RIGHT, "Offline"); + } + + +See Also +-------- + +- :doc:`index` +- `Arduino Inkplate 6 library `__ by `E-radionica.com `__ +- :ghedit:`Edit` diff --git a/components/display/images/Inkplate.jpg b/components/display/images/Inkplate.jpg new file mode 100644 index 0000000000000000000000000000000000000000..a373c8082cb9688984eb329fe6418df658792c3b GIT binary patch literal 33233 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 E08z>P0{{R3 literal 0 HcmV?d00001 diff --git a/images/Inkplate.jpg b/images/Inkplate.jpg new file mode 100644 index 0000000000000000000000000000000000000000..a373c8082cb9688984eb329fe6418df658792c3b GIT binary patch literal 33233 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 E08z>P0{{R3 literal 0 HcmV?d00001 diff --git a/index.rst b/index.rst index 4baffe963..bffba46ef 100644 --- a/index.rst +++ b/index.rst @@ -291,6 +291,7 @@ Display Components ST7789V, components/display/st7789v, st7789v.jpg ILI9341, components/display/ili9341, ili9341.jpg Waveshare E-Paper, components/display/waveshare_epaper, waveshare_epaper.jpg + Inkplate 6, components/display/Inkplate, Inkplate.jpg PCD8544 (Nokia 5110/ 3310), components/display/pcd8544, pcd8544.jpg Cover Components From ec56d2db7798449b2fce3cf00c53e351d8b9fbb7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Florian=20M=C3=B6sch?= Date: Mon, 18 Jan 2021 13:35:20 +0100 Subject: [PATCH 07/47] update time (sync) documentation (#924) * update time documentation * Heading * Update components/time.rst Co-authored-by: Guillermo Ruffino * rename read/write to read/time/write_time * clarify SNTP limitation * typo Co-authored-by: Guillermo Ruffino --- components/time.rst | 432 +++++++++++++++++++++++------------------ guides/automations.rst | 5 +- 2 files changed, 241 insertions(+), 196 deletions(-) diff --git a/components/time.rst b/components/time.rst index 6dbb927da..263787efc 100644 --- a/components/time.rst +++ b/components/time.rst @@ -10,7 +10,192 @@ Time The ``time`` component allows you to set up real time clock time sources for ESPHome. You can then get the current time in :ref:`lambdas `. -Currently only SNTP (internet-based), Home Assistant and GPS time sources are supported. + +.. _base_time_config: + +Base Time Configuration +----------------------- + +All time configuration schemas inherit these options. + +Configuration variables: +************************ + +- **id** (*Optional*, :ref:`config-id`): Specify the ID of the time for use in lambdas. +- **timezone** (*Optional*, string): Manually tell ESPHome what time zone to use with `this format + `__ (warning: the format is quite complicated) + or the simpler `TZ database name `__ in the form + /. ESPHome tries to automatically infer the time zone string based on the time zone of the computer + that is running ESPHome, but this might not always be accurate. +- **on_time** (*Optional*, :ref:`Automation `): Automation to run at specific intervals using + a cron-like syntax. See :ref:`time-on_time`. +- **on_time_sync** (*Optional*, :ref:`Automation `): Automation to run when the time source + could be (re-)synchronized.. See :ref:`time-on_time_sync`. + +.. _time-has_time_condition: + +``time.has_time`` Condition +*************************** + +This :ref:`Condition ` checks if time has been set and is valid. + +.. code-block:: yaml + + on_...: + if: + condition: + time.has_time: + then: + - logger.log: Time has been set and is valid! + +.. _time-on_time: + +``on_time`` Trigger +******************* + +This powerful automation can be used to run automations at specific intervals at +specific times of day. The syntax is a subset of the `crontab `__ syntax. + +There are two ways to specify time intervals: Either with using the ``seconds:``, ``minutes:``, ... +keys as seen below or using a cron expression like ``* /5 * * * *``. + +Basically, the automation engine looks at your configured time schedule every second and +evaluates if the automation should run. + +.. code-block:: yaml + + time: + - platform: sntp + # ... + on_time: + # Every 5 minutes + - seconds: 0 + minutes: /5 + then: + - switch.toggle: my_switch + + # Every morning on weekdays + - seconds: 0 + minutes: 30 + hours: 7 + days_of_week: MON-FRI + then: + - light.turn_on: my_light + + # Cron syntax, trigger every 5 minutes + - cron: '* /5 * * * *' + then: + - switch.toggle: my_switch + +Configuration variables: + +- **seconds** (*Optional*, string): Specify for which seconds of the minute the automation will trigger. + Defaults to ``*`` (all seconds). Range is from 0 to 59. +- **minutes** (*Optional*, string): Specify for which minutes of the hour the automation will trigger. + Defaults to ``*`` (all minutes). Range is from 0 to 59. +- **hours** (*Optional*, string): Specify for which hours of the day the automation will trigger. + Defaults to ``*`` (all hours). Range is from 0 to 23. +- **days_of_month** (*Optional*, string): Specify for which days of the month the automation will trigger. + Defaults to ``*`` (all days). Range is from 1 to 31. +- **months** (*Optional*, string): Specify for which months of the year to trigger. + Defaults to ``*`` (all months). The month names JAN to DEC are automatically substituted. + Range is from 1 (January) to 12 (December). +- **days_of_week** (*Optional*, string): Specify for which days of the week to trigger. + Defaults to ``*`` (all days). The names SUN to SAT are automatically substituted. + Range is from 1 (Sunday) to 7 (Saturday). +- **cron** (*Optional*, string): Alternatively, you can specify a whole cron expression like + ``* /5 * * * *``. Please note years and some special characters like ``L``, ``#`` are currently not supported. + +- See :ref:`Automation `. + +In the ``seconds:``, ``minutes:``, ... fields you can use the following operators: + +- .. code-block:: yaml + + seconds: 0 + + An integer like ``0`` or ``30`` will make the automation only trigger if the current + second is **exactly** 0 or 30, respectively. +- .. code-block:: yaml + + seconds: 0,30,45 + + You can combine multiple expressions with the ``,`` operator. This operator makes it so that + if either one of the expressions separated by a comma holds true, the automation will trigger. + For example ``0,30,45`` will trigger if the current second is either ``0`` or ``30`` or ``45``. +- .. code-block:: yaml + + days_of_week: 2-6 + # same as + days_of_week: MON-FRI + # same as + days_of_week: 2,3,4,5,6 + # same as + days_of_week: MON,TUE,WED,THU,FRI + + The ``-`` (hyphen) operator can be used to create a range of values and is shorthand for listing all + values with the ``,`` operator. +- .. code-block:: yaml + + # every 5 minutes + seconds: 0 + minutes: /5 + + # every timestamp where the minute is 5,15,25,... + seconds: 0 + minutes: 5/10 + + The ``/`` operator can be used to create a step value. For example ``/5`` for ``minutes:`` makes an + automation trigger only when the minute of the hour is 0, or 5, 10, 15, ... The value in front of the + ``/`` specifies the offset with which the step is applied. + +- .. code-block:: yaml + + # Every minute + seconds: 0 + minutes: '*' + + Lastly, the ``*`` operator matches every number. In the example above, ``*`` could for example be substituted + with ``0-59``. + +.. warning:: + + Please note the following automation would trigger for each second in the minutes 0,5,10,15 and not + once per 5 minutes as the seconds variable is not set: + + .. code-block:: yaml + + time: + - platform: sntp + # ... + on_time: + - minutes: /5 + then: + - switch.toggle: my_switch + +.. _time-on_time_sync: + +``on_time_sync`` Trigger +************************ + +This automation is triggered after a time source successfully retrieves the current time. +See the :ref:`DS1307 configuration example ` for a scenario +where a network time synchronization from a home assistant server trigger a write +to an external hardware real time clock chip. + + .. code-block:: yaml + + on_time_sync: + then: + - logger.log: "Synchronized system clock" + +.. note:: + + Components should trigger ``on_time_sync`` when they update the system clock. However, not all real time components + behave exactly the same. Components could e.g. decide to trigger only when a significant time change has been + observed, others could trigger whenever their time sync mechanism runs - even if that didn't effectively change + the system time. Some (such as SNTP) could even trigger when another real time component is responsible for the + change in time. Home Assistant Time Source -------------------------- @@ -28,14 +213,7 @@ to Home Assistant will be used to periodically synchronize the current time. Configuration variables: -- **id** (*Optional*, :ref:`config-id`): Specify the ID of the time for use in lambdas. -- **timezone** (*Optional*, string): Manually tell ESPHome what time zone to use with `this format - `__ (warning: the format is quite complicated) - or the simpler `TZ database name `__ in the form - /. ESPHome tries to automatically infer the time zone string based on the time zone of the computer - that is running ESPHome, but this might not always be accurate. -- **on_time** (*Optional*, :ref:`Automation `): Automation to run at specific intervals using - a cron-like syntax. See :ref:`time-on_time`. +- All other from :ref:`base_time_config`. SNTP Configuration ------------------ @@ -49,22 +227,21 @@ SNTP Configuration Configuration variables: -- **id** (*Optional*, :ref:`config-id`): Specify the ID of the time for use in lambdas. -- **timezone** (*Optional*, string): Manually tell ESPHome what time zone to use with `this format - `__ (warning: the - format is quite complicated) or the simpler `TZ database name `__ - in the form /. - ESPHome tries to automatically infer the time zone string based on the time zone of the computer that is running - ESPHome, but this might not always be accurate. - **servers** (*Optional*, list of strings): Choose up to 3 NTP servers that are used for the clock source. Defaults to ``0.pool.ntp.org``, ``1.pool.ntp.org`` and ``2.pool.ntp.org`` -- **on_time** (*Optional*, :ref:`Automation `): Automation to run at specific intervals using - a cron-like syntax. See :ref:`time-on_time`. +- All other options from :ref:`base_time_config`. .. note:: If your are using :ref:`wifi-manual_ip` make sure to configure a DNS Server (dns1, dns2) or use only IP addresses for the NTP servers. +.. warning:: + + Due to limitations of the SNTP implementation, this component will trigger ``on_time_sync`` only once when it detects that the + system clock has been set, even if the update was not done by the SNTP implementation! + This must be taken into consideration when SNTP is used together with other real time componnents, where another time source could + update the time before SNTP synchronizes. + GPS Time Source --------------- @@ -79,14 +256,7 @@ You first need to set up the :doc:`GPS ` component. Configuration variables: -- **id** (*Optional*, :ref:`config-id`): Specify the ID of the time for use in lambdas. -- **timezone** (*Optional*, string): Manually tell ESPHome what time zone to use with `this format - `__ (warning: the format is quite complicated) - or the simpler `TZ database name `__ in the form - /. ESPHome tries to automatically infer the time zone string based on the time zone of the computer - that is running ESPHome, but this might not always be accurate. -- **on_time** (*Optional*, :ref:`Automation `): Automation to run at specific intervals using - a cron-like syntax. See :ref:`time-on_time`. +- All other from :ref:`base_time_config`. DS1307 Time Source ------------------ @@ -102,46 +272,33 @@ You first need to set up the :doc:`I2C ` component. Configuration variables: -- **id** (*Optional*, :ref:`config-id`): Specify the ID of the time for use in lambdas. - **address** (*Optional*, int): Manually specify the I²C address of the RTC. Defaults to ``0x68``. -- **timezone** (*Optional*, string): Manually tell ESPHome what time zone to use with `this format - `__ (warning: the format is quite complicated) - or the simpler `TZ database name `__ in the form - /. ESPHome tries to automatically infer the time zone string based on the time zone of the computer - that is running ESPHome, but this might not always be accurate. -- **on_time** (*Optional*, :ref:`Automation `): Automation to run at specific intervals using - a cron-like syntax. See :ref:`time-on_time`. +- All other options from :ref:`base_time_config`. -DS1307 Actions --------------- +.. _ds1307-write_time_action: -The DS1307 component supports :ref:`actions ` that can be used to synchronize the RTC hardware and -the system clock. - -.. _ds1307-write_action: - -``ds1307.write`` Action -*********************** +``ds1307.write_time`` Action +**************************** This :ref:`Action ` triggers a synchronization of the current system time to the RTC hardware. .. note:: - The DS1307 component will *not* write the RTC clock if not triggered *explicitely* by this action. + The DS1307 component will *not* write the RTC clock if not triggered *explicitly* by this action. .. code-block:: yaml on_...: - - ds1307.write + - ds1307.write_time # in case you need to specify the DS1307 id - - ds1307.write: + - ds1307.write_time: id: ds1307_time -.. _ds1307-read_action: +.. _ds1307-read_time_action: -``ds1307.read`` Action -********************** +``ds1307.read_time`` Action +*************************** This :ref:`Action ` triggers a synchronization of the current system time from the RTC hardware. @@ -154,12 +311,43 @@ This :ref:`Action ` triggers a synchronization of the current sys .. code-block:: yaml on_...: - - ds1307.read + - ds1307.read_time # in case you need to specify the DS1307 id - - ds1307.read: + - ds1307.read_time: id: ds1307_time +.. _ds1307-config_example: + +Configuration Example +********************* + +In a typical setup, you will have at least one additional time source to synchronize the RTC with. Such an +external time source might not always be available e.g. due to a limited network connection. +In order to have a valid, reliable system time, the system should read the RTC once at start and then try to +synchronize with an external reliable time source. +When a synchronization to another time source was successfull, the RTC can be resynchronized. + +.. code-block:: yaml + + esphome: + on_boot: + then: + # read the RTC time once when the system boots + ds1307.read_time: + + time: + - platform: ds1307 + # repeated synchronization is not necessary unless the external RTC + # is much more accurate than the internal clock + update_interval: never + - platform: homeassistant + # instead try to synchronize via network repeatedly ... + on_time_sync: + then: + # ... and update the RTC when the synchronization was successful + ds1307.write_time: + Use In Lambdas -------------- @@ -280,148 +468,6 @@ with the current time representation of that format option. ``%%`` A literal ``%`` character % ============= ============================================================== ========================= -.. _time-on_time: - -``on_time`` ------------ - -This powerful automation can be used to run automations at specific intervals at -specific times of day. The syntax is a subset of the `crontab `__ syntax. - -There are two ways to specify time intervals: Either with using the ``seconds:``, ``minutes:``, ... -keys as seen below or using a cron expression like ``* /5 * * * *``. - -Basically, the automation engine looks at your configured time schedule every second and -evaluates if the automation should run. - -.. code-block:: yaml - - time: - - platform: sntp - # ... - on_time: - # Every 5 minutes - - seconds: 0 - minutes: /5 - then: - - switch.toggle: my_switch - - # Every morning on weekdays - - seconds: 0 - minutes: 30 - hours: 7 - days_of_week: MON-FRI - then: - - light.turn_on: my_light - - # Cron syntax, trigger every 5 minutes - - cron: '* /5 * * * *' - then: - - switch.toggle: my_switch - -Configuration variables: - -- **seconds** (*Optional*, string): Specify for which seconds of the minute the automation will trigger. - Defaults to ``*`` (all seconds). Range is from 0 to 59. -- **minutes** (*Optional*, string): Specify for which minutes of the hour the automation will trigger. - Defaults to ``*`` (all minutes). Range is from 0 to 59. -- **hours** (*Optional*, string): Specify for which hours of the day the automation will trigger. - Defaults to ``*`` (all hours). Range is from 0 to 23. -- **days_of_month** (*Optional*, string): Specify for which days of the month the automation will trigger. - Defaults to ``*`` (all days). Range is from 1 to 31. -- **months** (*Optional*, string): Specify for which months of the year to trigger. - Defaults to ``*`` (all months). The month names JAN to DEC are automatically substituted. - Range is from 1 (January) to 12 (December). -- **days_of_week** (*Optional*, string): Specify for which days of the week to trigger. - Defaults to ``*`` (all days). The names SUN to SAT are automatically substituted. - Range is from 1 (Sunday) to 7 (Saturday). -- **cron** (*Optional*, string): Alternatively, you can specify a whole cron expression like - ``* /5 * * * *``. Please note years and some special characters like ``L``, ``#`` are currently not supported. - -- See :ref:`Automation `. - -In the ``seconds:``, ``minutes:``, ... fields you can use the following operators: - -- .. code-block:: yaml - - seconds: 0 - - An integer like ``0`` or ``30`` will make the automation only trigger if the current - second is **exactly** 0 or 30, respectively. -- .. code-block:: yaml - - seconds: 0,30,45 - - You can combine multiple expressions with the ``,`` operator. This operator makes it so that - if either one of the expressions separated by a comma holds true, the automation will trigger. - For example ``0,30,45`` will trigger if the current second is either ``0`` or ``30`` or ``45``. -- .. code-block:: yaml - - days_of_week: 2-6 - # same as - days_of_week: MON-FRI - # same as - days_of_week: 2,3,4,5,6 - # same as - days_of_week: MON,TUE,WED,THU,FRI - - The ``-`` (hyphen) operator can be used to create a range of values and is shorthand for listing all - values with the ``,`` operator. -- .. code-block:: yaml - - # every 5 minutes - seconds: 0 - minutes: /5 - - # every timestamp where the minute is 5,15,25,... - seconds: 0 - minutes: 5/10 - - The ``/`` operator can be used to create a step value. For example ``/5`` for ``minutes:`` makes an - automation trigger only when the minute of the hour is 0, or 5, 10, 15, ... The value in front of the - ``/`` specifies the offset with which the step is applied. - -- .. code-block:: yaml - - # Every minute - seconds: 0 - minutes: '*' - - Lastly, the ``*`` operator matches every number. In the example above, ``*`` could for example be substituted - with ``0-59``. - - -.. warning:: - - Please note the following automation would trigger for each second in the minutes 0,5,10,15 and not - once per 5 minutes as the seconds variable is not set: - - .. code-block:: yaml - - time: - - platform: sntp - # ... - on_time: - - minutes: /5 - then: - - switch.toggle: my_switch - -.. _time-has_time_condition: - -``time.has_time`` Condition ----------------------------- - -This :ref:`Condition ` checks if time has been set and is valid. - -.. code-block:: yaml - - on_...: - if: - condition: - time.has_time: - then: - - logger.log: Time has been set and is valid! - See Also -------- diff --git a/guides/automations.rst b/guides/automations.rst index 66c8c298a..31c6a649f 100644 --- a/guides/automations.rst +++ b/guides/automations.rst @@ -324,7 +324,7 @@ All Triggers - :ref:`esphome.on_boot ` / :ref:`esphome.on_shutdown ` / :ref:`esphome.on_loop ` - :ref:`light.on_turn_on / light.on_turn_off ` - :ref:`logger.on_message ` -- :ref:`time.on_time ` +- :ref:`time.on_time ` / - :ref:`time.on_time_sync ` - :ref:`mqtt.on_message ` / :ref:`mqtt.on_json_message ` - :ref:`pn532.on_tag ` / :ref:`rdm6300.on_tag ` - :ref:`interval.interval ` @@ -374,8 +374,7 @@ All Actions - :ref:`http_request.get ` / :ref:`http_request.post ` / :ref:`http_request.send ` - :ref:`rf_bridge.send_code ` - :ref:`rf_bridge.learn ` -- :ref:`ds1307.read ` -- :ref:`ds1307.write ` +- :ref:`ds1307.read_time ` / :ref:`ds1307.write_time ` .. _config-condition: From ea65adb222ed07522b2348a746de28a873d335ee Mon Sep 17 00:00:00 2001 From: mhentschke Date: Tue, 26 Jan 2021 15:49:01 -0300 Subject: [PATCH 08/47] Added docs for pr147 (#963) --- components/climate/ir_climate.rst | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/components/climate/ir_climate.rst b/components/climate/ir_climate.rst index a5c7dad61..2de34ef79 100755 --- a/components/climate/ir_climate.rst +++ b/components/climate/ir_climate.rst @@ -122,6 +122,26 @@ Additional configuration is available for this model * ``MODEL_DG11J1_3A``: Temperature range is from 18 to 32 (default) * ``MODEL_DG11J1_91``: Temperature range is from 16 to 30 +LG +--------- + +Additional configuration is available for this platform + +- **header_high** (*Optional*, :ref:`config-time`): time for the high part of the header for the LG protocol. Defaults to ``8000us`` +- **header_low** (*Optional*, :ref:`config-time`): time for the low part of the header for the LG protocol. Defaults to ``4000us`` +- **bit_high** (*Optional*, :ref:`config-time`): time for the high part of any bit in the LG protocol. Defaults to ``600us`` +- **bit_one_low** (*Optional*, :ref:`config-time`): time for the low part of a '1' bit in the LG protocol. Defaults to ``1600us`` +- **bit_zero_low** (*Optional*, :ref:`config-time`): time for the low part of a '0' bit in the LG protocol. Defaults to ``550us`` + +.. code-block:: yaml + + # Example configuration entry + climate: + - platform: climate_ir_lg + name: "AC" + sensor: room_temperature + header_high: 3265us # AC Units from LG in Brazil, for example use these timings + header_low: 9856us See Also -------- From ce72498c5c474ae4e47716cf5b32df0c80b44151 Mon Sep 17 00:00:00 2001 From: nikito7 <45373783+nikito7@users.noreply.github.com> Date: Wed, 27 Jan 2021 07:18:37 +0000 Subject: [PATCH 09/47] Add docs for MHO-C401 (#957) --- components/sensor/images/xiaomi_mhoc401.jpg | Bin 0 -> 36296 bytes components/sensor/xiaomi_ble.rst | 30 +++++++++++++++++++- 2 files changed, 29 insertions(+), 1 deletion(-) create mode 100644 components/sensor/images/xiaomi_mhoc401.jpg diff --git a/components/sensor/images/xiaomi_mhoc401.jpg b/components/sensor/images/xiaomi_mhoc401.jpg new file mode 100644 index 0000000000000000000000000000000000000000..c78f0c4c7a454a1b709707244720b18cde37a298 GIT binary patch literal 36296 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 Ojw@#jfoTeXZiZtZ+(1U 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 ZDln4sr+bNuYyq!71+76HD9rx Date: Sat, 30 Jan 2021 16:50:13 +1300 Subject: [PATCH 10/47] Update scd30 docs to show sensors are optional (#970) --- components/sensor/scd30.rst | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/components/sensor/scd30.rst b/components/sensor/scd30.rst index acf05e75c..b1234c2ff 100644 --- a/components/sensor/scd30.rst +++ b/components/sensor/scd30.rst @@ -35,20 +35,20 @@ The :ref:`I²C Bus ` is required to be set up in your configuration for thi Configuration variables: ------------------------ -- **co2** (**Required**): The information for the CO₂ sensor. +- **co2** (*Optional*): The information for the CO₂ sensor. - **name** (**Required**, string): The name for the CO₂eq sensor. - **id** (*Optional*, :ref:`config-id`): Set the ID of this sensor for use in lambdas. - All other options from :ref:`Sensor `. -- **temperature** (**Required**): The information for the Temperature 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 `. -- **humidity** (**Required**): The information for the Humidity sensor. +- **humidity** (*Optional*): The information for the Humidity sensor. - **name** (**Required**, string): The name for the humidity sensor. - **id** (*Optional*, :ref:`config-id`): Set the ID of this sensor for use in lambdas. From 63998c7d38710ef33b101139b353b295dcbb5b4f Mon Sep 17 00:00:00 2001 From: fkirill Date: Sat, 6 Feb 2021 15:04:51 +1100 Subject: [PATCH 11/47] Adding documentation for Inkbird IBS-TH1 Mini sensor (#657) --- .../images/inkbird_isbth1_mini-full.jpg | Bin 0 -> 51176 bytes .../sensor/images/inkbird_isbth1_mini-ui.png | Bin 0 -> 26823 bytes .../sensor/images/inkbird_isbth1_mini.png | Bin 0 -> 151815 bytes components/sensor/inkbird_ibsth1_mini.rst | 103 ++++++++++++++++++ images/inkbird_isbth1_mini.jpg | Bin 0 -> 8203 bytes index.rst | 1 + 6 files changed, 104 insertions(+) create mode 100644 components/sensor/images/inkbird_isbth1_mini-full.jpg create mode 100644 components/sensor/images/inkbird_isbth1_mini-ui.png create mode 100644 components/sensor/images/inkbird_isbth1_mini.png create mode 100644 components/sensor/inkbird_ibsth1_mini.rst create mode 100644 images/inkbird_isbth1_mini.jpg diff --git a/components/sensor/images/inkbird_isbth1_mini-full.jpg b/components/sensor/images/inkbird_isbth1_mini-full.jpg new file mode 100644 index 0000000000000000000000000000000000000000..e34559a407e1dce41216766ed4a3f854fdb0f3aa GIT binary patch literal 51176 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 RBK>Q={(soN*+%^={wKAva$Nub literal 0 HcmV?d00001 diff --git a/components/sensor/images/inkbird_isbth1_mini-ui.png b/components/sensor/images/inkbird_isbth1_mini-ui.png new file mode 100644 index 0000000000000000000000000000000000000000..e12eb949668631a56409dcd4cf5890a937570a59 GIT binary patch literal 26823 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 Be@y@Y literal 0 HcmV?d00001 diff --git a/components/sensor/images/inkbird_isbth1_mini.png b/components/sensor/images/inkbird_isbth1_mini.png new file mode 100644 index 0000000000000000000000000000000000000000..1e21a6f6394e68a6988fdc4197ad9432cd10b354 GIT binary patch literal 151815 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 literal 0 HcmV?d00001 diff --git a/components/sensor/inkbird_ibsth1_mini.rst b/components/sensor/inkbird_ibsth1_mini.rst new file mode 100644 index 000000000..03cc6bfb2 --- /dev/null +++ b/components/sensor/inkbird_ibsth1_mini.rst @@ -0,0 +1,103 @@ +Inkbird IBS-TH1 Mini BLE Sensor +=============================== + +.. seo:: + :description: Instructions for setting up Inkbird IBS-TH1 Mini Bluetooth-based temperature and humidity sensors in ESPHome. + :image: inkbird_isbth1_mini.jpg + :keywords: Inkbird, BLE, Bluetooth, IBS-TH1 + +The ``inkbird_ibsth1_mini`` sensor platform lets you track the output of Inkbird IBS-TH1 Mini Bluetooth +Low Energy devices using the :doc:`/components/esp32_ble_tracker`. This component will track the +temperature, humidity and the battery level of the IBS-TH1 Mini device every time the +sensor sends out a BLE broadcast. Note that contrary to other implementations, ESPHome can track as +many IBS-TH1 Mini devices at once as you want. + +.. figure:: images/inkbird_isbth1_mini-full.jpg + :align: center + :width: 80.0% + + Inkbird IBS-TH1 Mini Temperature and Humidity Sensor over BLE. + +.. figure:: images/inkbird_isbth1_mini-ui.png + :align: center + :width: 80.0% + +.. code-block:: yaml + + # Example configuration entry + esp32_ble_tracker: + + sensor: + - platform: inkbird_ibsth1_mini + mac_address: 38:81:D7:0A:9C:11 + temperature: + name: "Inkbird IBS-TH1 Mini Temperature" + humidity: + name: "Inkbird IBS-TH1 Mini Humidity" + battery_level: + name: "Inkbird IBS-TH1 Mini Battery Level" + +Configuration variables: +------------------------ + +- **mac_address** (**Required**, MAC Address): The MAC address of the Inkbird IBS-TH1 Mini device. +- **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 `. + +- **humidity** (*Optional*): The information for the humidity sensor + + - **name** (**Required**, string): The name for the humidity sensor. + - **id** (*Optional*, :ref:`config-id`): Set the ID of this sensor for use in lambdas. + - All other options from :ref:`Sensor `. + +- **battery_level** (*Optional*): The information for the battery level sensor + + - **name** (**Required**, string): The name for the battery level sensor. + - **id** (*Optional*, :ref:`config-id`): Set the ID of this sensor for use in lambdas. + - All other options from :ref:`Sensor `. + + +Setting Up Devices +------------------ + +To set up Inkbird IBS-TH1 Mini devices you first need to find their MAC Address so that ESPHome can +identify them. So first, create a simple configuration without any ``inkbird_ibsth1_mini`` entries +like so: + +.. code-block:: yaml + + esp32_ble_tracker: + +After uploading the ESP32 will immediately try to scan for BLE devices such as the Inkbird IBS-TH1 Mini. +When it detects these sensors, it will automatically parse the BLE message print a +message like this one: + +.. code:: + + [13:36:43][D][esp32_ble_tracker:544]: Found device 38:81:D7:0A:9C:11 RSSI=-53 + [13:36:43][D][esp32_ble_tracker:565]: Address Type: PUBLIC + [13:36:43][D][esp32_ble_tracker:567]: Name: 'sps' + +Note that it can sometimes take some time for the first BLE broadcast to be received. Please note that address type +should say 'PUBLIC' and the device name should be 'sps', this is how you find the Inkbird IBS-TH1 Mini among all the +other devices. + +Then just copy the address (``38:81:D7:0A:9C:11``) into a new ``sensor.inkbird_ibsth1_mini`` platform +entry like in the configuration example at the top. + +.. note:: + + The ESPHome Inkbird IBS-TH1 Mini integration listens passively to packets the device sends by itself. + ESPHome therefore has no impact on the battery life of the device. + +See Also +-------- + +- :doc:`/components/esp32_ble_tracker` +- :doc:`/components/sensor/index` +- :apiref:`inkbird_ibsth1_mini/inkbird_ibsth1_mini.h` +- `OpenMQTTGateway `__ by `@1technophile `__ +- :ghedit:`Edit` diff --git a/images/inkbird_isbth1_mini.jpg b/images/inkbird_isbth1_mini.jpg new file mode 100644 index 0000000000000000000000000000000000000000..b7aa22837e5f5a00bbc67d10c11a525fad736cb8 GIT binary patch literal 8203 zcmb7pcT^MI*Y1Q~M2a*)kfMerL5fI6l$Iz+=)Fk^NDD=}fS@3~Bq&v+h7M9f??@48 zp?3%<5s==bT;BJ0zwh3=?qADI@niafA1Px>NvK(C@!9Hq%>5~^9z>Y`6AsE5>p&H zj3cqTRqkL6JQL1^_3$7`R)eLeY+~?3%41ntdbO#c6ETas4ZdC#8o!SuT3#D^Z9=jh z)OilWk9gGyL^@5aHV`f~fFT!8_J3Fq)gLiBVd_zN*^CUcu8@PiiJSRODXx2S$*hef z$Rig_OPw3tc?e4Z6AiwABHZOwk{}w8ZUFe@7d6eXL>AD%C8slJau6632K51b-C`ub zf|y+i4qDzx-u6kJRRg+XUDe+!v|KNNaI~b9^oN)BeTt&VK{wUN;JYM2z~X;VvBF76 zGe77E(7jD>PB5|E{gztSQ0Avy+PJsm^*H@pyUmSmeo^ohkJuzojOq<4RpgC(k?9|* zf+WeGq$I!uu?)Ez#9gaMk~|W;@F&?YQEw{m{#nwZYs;?Q2|mw0{6^HjU$)#PD9k^} zeB*u}Rze6|%Ekm+#a+uG&Lc(=2mOZ#==+$2_cU1PExh>T65w}B?I*~ts{e3z$AJ0O zS8HdBnHo{_-;kijEgeC>EyYsfBo%);)n}O&;KhNm0--0hj_7MovhP;%sVlirE=gyy z5?K+e7zge61@$(!LVvur5dG$wr^(U!@`%b~m&w?@wy+59?Y2O$@%P%?vNlU|=-TL+ ztsiC!*6X$~ya}?3qe&ud{SP%{b%3E!zKio{;rO3pSQK(~e{U)&73oylVDqvhm}W!g ziT7g)ykbK$P$O=0e<$RVo=TMU77I-%x`*F*CMfI`#bXJEj;WCN(a4Q!UE2A4+czlC z3J=xuZmJ&|GeW($h`SxRpdYV)WJskEiV8v~L#1BY*XS#Rm2Br`MC@$zu6M6gP-Wmf zOeupsY)LE7iWMT_|H=mXF;*>M16vwFjHk?;HLu2J=yTd?XgebVo^Q=;>CyFtyU6u0 z)zm!WX1CO)faYMi*|=3i=C%fet-3FQMkKLv8zrHFfd-Ovbd}y@sFrI)qH`Y-t5#vQ z%!L?|C+lXev?|66ckRA*HQIrmW%Sb?fD(6GJr4V*>}!}j{JBQu<`j|zlb%)-X*TO3 z3ZUlVUZ)A&Smb;TtXIaGen z*+ukxvZ0$N^40GpQNIL4voKmnpAD64Xp}{Hyxx8UjEgsLv6pJn7S+Q2Vquo&#)1WT zi)&bW2Z>;x3vEI^LbHzLY5CBB;aY|_h0YNk?06%fJyq5v=;rfXV*a}=ah&&ks9TCK zKkqnD^n5ez5qY>v2bY6K{c1*AnUNk(c@35R{c=5Z zeqt>g(bmoFvRO#@Ppo_gT83meqxH#3pkjn1s+B6!i=*=iX|@^ zX82^5*cM&M33<39-`AY4mdNoQ-^`wO3rGrNH@zEu8cZgPW~q{55KX~m8jl#cb2!6J z!BRG9%dU0*_@zKig}Eez?3EK--^F$9PIhZ7lvoUVy2JgVjn|aBJxCM;$##7K;O-b83#6Vu@?%h1qMND0d+26}q%7GGs(CW+@ZvetZpI0VRtO(F59h2aRp|JG1Y9`! z!4|iAdPTg2ZVYRFwqU?69hh^&l&D*-{oTAI=D#eG@iosreN4G|%a+Zxy}M7ty&!`YIBWQ=f}9WVNv}O-(Vqkw)&u=_TR_LWw7&r)O(kyzTQ%cqXo9koJ zNJ7(S8O+)vr=obHgK-GomYdWVvgDhLv&~y(|FPz9%05#rsa0w5UCf@p;Z;b=Bm8?9 z&*385ux5pxu(uz5E!&}C@%CTz11<6z>WImr>-Fw2Vo7#vo*up}4C6F=(ckOqD_j6y zI)FK61SWCN}W}0x(MS-Lllc z(Q5wr*{M_Cxi#&Cw1nNm2*llkRf%MylGCcu**Q7kgpjMp4R!2VGC}#&mj*WRT0ih( zbyaog(i^Qafsx3Q@`kd4(OYw>`nY1pDa3=Z-=k-u8p~f&2Tf|f-0UgnYKR?+hK8_4>U!UHf1YsmU*-LP0fXWE z;t@h>dmkbYdoRyu|3OOf087%bO;ZlWctg3fsXQF*CFvN{glhr4k~W9PkhWIVQPi^+ zhuOb7o|Rx$FGU{{zt@9$=IqUeSF&!Kb;aJCiVtuYz8n4{bGtWNIPsh9{gt>fHGmv~ zV^JXcwgleO3s7)gjoRH=dk{nQ(_gUHP!&tJfTf!E=2<>&RA#($;q)=Wy3^d3^P&ag z_#0Qo{~Vg?VJ(}__Obmh&!mgN8&zL{=IG<;l+JbiB9D48jtSV$%sY{#q>!mCj5UGW zjM3VtFDX|q<4)yHqtyfs(r+9f^$Yg*llk0fLZ~I2AR5J+hOM~-L||`dex=BN-rp)R zS8b^%-6&Mw*M&WRo5&tpc_cT_yW^5sq-zTuObJG2S#t7G>5sZm4^uzv99X`-wW-vS zKUQrttt^L(USM4BmCtN=qA^^csxuNGW|O5`lO#x}PPeVtd$hya(!7{Km_)c3PIz1b zYDQo|CpoY?UrE|Y>YJe(rE}&6r>Qv3)QLA0uL_5vi+m;kz>EJM@{(AJ?!>E;@Bz6@TpDATdI`YT($`o$7RiBWl6?k<#;LM zCfTCl{W6`?b%S4r;`Rmxjbo@smYTVLPMgBV@d3VRIy{&z%e!G4k;Q5?)D27Ym~)un z+-J-Wks#&`b_}eXmMNpPt9-@x9fF}l0RCj2KI{64$7G{E;M~{1*((A9& zvM?o|M3{OXZz?y^n|%amB?tlw45#AS(@AeqC2pPg;`?p&_}SICjZK1Lx#(SFg8k4u zai;BcvLd0#1#9&Jg5m5((tBYq)-J;0#p@Qhgi-=R1U>9q{)$`zV*3MKims@FC9tyxT(-VC487W^Km8*{RguCgAzsp5Pe zQXw+yesBp)9VQY4aE@lCrjU*i9Za{_)ZL3LJ4pWBi$4Cs1XK&=Kw8U>@4$}2>MY~! zNJe7$er`4NVIoE^*U(d^NPAB`;$~wRIFP^gfM@wvDeC>A(A$8I_OJ0=OK&^wAA`^@ zn3cV_SCsFZ7&BRO7U}0@LRaHTZG;2!;`2D$zxR% zO}#d)INrFo^7tIVfKGv1Xt8+lX7Zms8j+|reejUWWJU&eB{kw(!xN*(fL)cyLrN7Y z@HN&1{^hSNuBcZp^m3B8(_FT++HsBosCxHSXdXv=&Xf^ir&pjWGV`9!>7Dwm(mM^$ zznGgoI{qU}F**uV-yPL}Z>N%a`ybf4G`t#(*}vM8KB?PLaI?2&Y46glFVg*q@uChx z8ct$#>u9UCF;zO-Qu1o{1PcxrdyprossSBdR_TEDG47+0SuP$t;`_Bn&KOG5*i3jMeshm z9U^>NPOz+dqwgF%a)N<+E*uk}umdquyI5t$6srBtS^>hT(j%syFM-by{of*uA49C2 z1@ew4@-zXko&gL_vQ$d6RG%SjOnz$UO}TVuB4I^52G%3q6zDC;TQr;LL@pBCBOrY= zo9}iVCbdn^Vc5&oO!haFz`Mb+>B)vnmLZ-VW!*1*R(tO*IBiQ8Ht6+K@kUf56TB(z zY0e2nC1nlzc2Gq(K!G4y`-gMX9AunC;{HLK@zZEr(wz>7=v2?t+e zKFS6d?ASRc=WWi>NJkkhWZ4lcr)HwefPD*F+?!*T+ZV`-u#9{Nr$pe>g-}FaLBVdP zEe7q@)7g|rXp2zXo|@q!mTD)@TDkR>NnL&wS7Ge48lFMlPkckwh?Td9l>9~8^{3-4 zxC1*|ohByrp9$Vr``-Rn)bE|dop$$lBzU2*&_xMpXlLzG9PCJd8z1>LGwbO_0||SJ z1*gnL9NQ+wW#Vou$j(zQ|1}$9ntKDKnL|z*eqMj}Yxb|<843)6;O7eU9_H8ys(5eW zTv$E2(ts`edI?0mwsmre`eRnvm)xFB;jLoI{v`w0=hF40jd0TAw3yhXhs55X-I^F0 zO-P9lhJLskG@$=JF5*v|@5}9Swxr1!3#L3QCAQSik3?4@21YPEE;&}p&t37LQSpDH zHQkztZVJD4=$G7iz~4LdizMVk`nw2z5vQ86~$7%ht29$aNYTQViNizNrNF~Hng%!`>p0X zbHnct*iP`f?5swMCk>0oNWVK2-b3-s%KMumbBhjVMm$+el{A($0d31K%nu$JaG^qi zcOUbk!~=ujiGGW0HPKSAS0t~Ztf7xg>#QI#4=en0E*Lqx#vNm7ef(0|tPCeV9onAS zcfCqHR|+Wku;6wfNoZ2~v;9!JxJAZP#O&p<7+%a-IuJejhSZu=VGxqy((m{6`k*qD z3-MvbRYvj2A}xQ(@G)E3`~$XOxVhO{b~40dy2!c9CdH|g)lOG36DvW@iYJfkQ{QGb zH9QN?_Q&UFFa#PQ<` z#0WL*8Vsz{$B5OHMvrz;>yO3Rqb1(OO8I>%D%M%=HyF285fm4iw^t;nEI zkhqAc;yW}8B=B8k3W-VYi9lHY(q(Pc2!T7sW!+};saVv^_K;C3J7cdQptX1 z@wq%&$(l2(Kxta|0b=m<8gA9hx5*c^w)${)%1*fV&9enj&xxZCf41GTAA&%4x0@DPvX^+nG`0597 ziXf+uEZr%3=aXH@ECt>23@Tq~+$Ct>;)(g{fADv)OS%~8L}cO*Sky>v4bm*X*eJ~! zd-^oDO~N+MaPaP_;bf?u=y$J~j1@WG1B0Q#CBFWn5fcsbj(xGd3u)Jt^oiQ?s<3Ll z(NK7Mceg3~dMl02GFkXjYPdJC!Bwg1ks^&jYt>E)+q$L$d>3mjYp^rOc{KE=T~~CM zx-B0!hwS0v)35X+$(BXwh3V&cSba~CexF`}x`|pzmRdoz(VWxy zu|mjSx19r9AM<>TTb{qgFoPi*rS;1*vQFe9k|=PiKIn{ur75kJa)s$pC6O13%oC9R+?+>(wOFUVJ$hb zz9zFC@;&8)@^@2Vy-#_ONowHj@ zYeuN=fmhS!-+vC33;H)*;40h6(pG6R01J?SjPO)>q)a?1h~hkQ=H0&BsyRP{wOf6e zu^tXyU1)D37RI8Il)-mTO}BNh)|9S+9DBh@IDeKiS<>6I^-sxF{1|W3w)bpGtG2n6 zOW%Hv_7-9&dAR_3@XASV%0^@-i*+kbM<-nxCYEB>&P&r>0!?s8AOsp@c1{Q^pH}-w z^0#Ca7cY#fr1~}WM@$*@`f3szJJY3>8XP7dY@+ZrD_SOBk3>EcN%1XH9>~ju86LN} z6_}We8<{24mvW9d?6H~eLLjlvHJInmd|fnsk?)dKAwMw+DemYk&3-AF<9+d^sry%% zXO^>Z1CS`i8bQDy?m8N91?YE4)TnZT^6al2@R0KyX$Cki&tdx;^=W4-E4Vx{ooVvsS1EX)k<5?~e;qj?qWAl9KB`8R5$7)skFvZHVv5*!(EthLQ@V>^3^ zq;>33$tu$kU+L?IL&i9B%k2B6@KA+2z8{C*)s&d|Xm#qBAFvjVVdPft_4Dv2nfar^ zIc`6#=0^_oIltE@z^k$9Q|vIT(56Z5RLn(egwKXjr#fFgzdUNLxuag{`s%MUgUjj(vDp+guJ+)t%an@4y1M{cf1%384@oOE0ALvWEf`zyeU`i4E z%8E1sSht`AwE~97t9mb0qsj~V;zlf?796rRrGC(5Wsa*{k;VRT>r2n!21~mk6b6`P z=Gf<~#bta}3Q?UC&Cj3Nr0o8AQIWr6ZB(2+*DmF_0Rs=$ZuVUQMZz=d`2-nX&6pG% z+Z)^`7DPr9K{`TOK6@l5v-T`1GjE~G`R~|41`9^~SJ`fkXkh6jz`-u3u|^k7-DDIt z=6ON_BQ25U8+=(<{Uo?867Sgsp{8N6fVI><6d)O;sFHqtVXECbPG*5b}oN zXFvM*_qR(xcB?5cJ$J@HD_Vdto3-mzg2=C5N*Rj7RDrGL6d(^P(u#2AJH)wj!Cab} zajXDEGQdZDhZL@;D^BLqdF_CUTzV^XFY1+ zjV7uuY6HPaYM&IC9mT57)8WaTMgzX?#(9`t@o#5ceFvxD!gIL-ov@hng1T`nEiDXl z`m+GPWVjroiG!+O#_xLS;G9q3C8`md^*8P6hyFCm$UstMq~T1GX?RgqSELifLAaF9 z`0*IFh|0~RPL?*JRN=6Ct4MqMlqRQ8n8T;|ae!>(VAPJ?g;#^GLJqISmnIycp(s;y zS>Y+NX2I0%=C^MJxk} zx^o&LXK17kF{z=@m|vB=$NA+`+n?R43BC^{UHHLBnLB7HTl6KM+sA+Jukh+-s#|~a z0a^E(;>d0J^zvoCgiULv1Vg@Yij+-#fxJa>dtmF8Jh= z&w_Fd35PAS^8)={_Nx~K4e%Y*OUQw=j9vxdC|~>hW}t57hsocjG8$pu<*P<7!cM@Q z3p0nq)7pj2RR$-w88mTvf^7>)FjbHh@G+|X}5#}o3tYuQ@W zj#(zKj7eVcX9FI10>qVY=haMd0te!r_781FMea ztiKT#2_xcX(hrkx4ZX#+M?4MUo9k^>bTH0VQ?_T+mas``>u3L-fKZfT#Zz)EP(mvM z$$$U&0~xi__fQN`3{mn0>wG4K=aC}wH%Q?*q{tj1X_r=tb>SUF!7TC%640@)ONu@5 z_WmVsI>b=WQAKwhjx$$z!iNGLx&a7FYb&r^4mb{{j{+JF5Ty literal 0 HcmV?d00001 diff --git a/index.rst b/index.rst index bffba46ef..8a79031b8 100644 --- a/index.rst +++ b/index.rst @@ -126,6 +126,7 @@ Sensor Components INA219, components/sensor/ina219, ina219.jpg INA226, components/sensor/ina226, ina226.jpg INA3221, components/sensor/ina3221, ina3221.jpg + Inkbird IBS-TH1 Mini, components/sensor/inkbird_ibsth1_mini, inkbird_isbth1_mini.jpg Integration, components/sensor/integration, sigma.svg HTU21D, components/sensor/htu21d, htu21d.jpg HM3301, components/sensor/hm3301, hm3301.jpg From 5bfeb3e7fceb0a7661b15c6dbec3c774fa40bbf6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=A9my=20JOURDIN?= <2821990+JJK801@users.noreply.github.com> Date: Sat, 6 Feb 2021 16:23:23 +0100 Subject: [PATCH 12/47] Add MCP4725 docs (#889) * Add MCP4725 Doc * add alterative address info Co-authored-by: Guillermo Ruffino --- components/output/mcp4725.rst | 86 ++++++++++++++++++++++++++++++++++ images/mcp4725.jpg | Bin 0 -> 72547 bytes index.rst | 1 + 3 files changed, 87 insertions(+) create mode 100644 components/output/mcp4725.rst create mode 100644 images/mcp4725.jpg diff --git a/components/output/mcp4725.rst b/components/output/mcp4725.rst new file mode 100644 index 000000000..bd316c84e --- /dev/null +++ b/components/output/mcp4725.rst @@ -0,0 +1,86 @@ +MCP4725 Output +============== + +.. seo:: + :description: Instructions for setting up MCP4725 outputs on the ESP. + :image: mcp4725.png + +The MCP4725 output component allows to use `12bit external DAC +`__ +in order to have analog output(s) on any board by using I2C. Devices default address is ``0x60`` +and configurable alternative is ``0x61``. + +Example Usage with defaults +*************************** + +.. code-block:: yaml + + # Set a global i2c connection + i2c: + sda: 21 + scl: 22 + scan: True + + # Set the output with default (address: 0x60 / global i2c) + output: + - platform: mcp4725 + id: dac_output + + on_...: + then: + - output.set_level: + id: dac_output + level: 100% + +Example Usage with a custom configuration +***************************************** + +.. code-block:: yaml + + # Set a custom i2c connection + i2c: + - id: bus_a + sda: 21 + scl: 22 + scan: True + - id: bus_b + sda: 23 + scl: 25 + scan: True + + # Set the output + output: + - platform: mcp4725 + id: dac_output + address: 0x61 + i2c_id: bus_b + + on_...: + then: + - output.set_level: + id: dac_output + level: 100% + +Configuration variables: +------------------------ + +- **id** (**Required**, :ref:`config-id`): The id to use for this output component. +- **address** (*Optional*, int): Manually specify the I2C address of + the DAC. Defaults to ``0x60``. +- All other options from :ref:`Output `. + +Usage with voltages higher than 3.3v +------------------------------------ + +In order to drive analog modules with voltages higher than 3.3v, use a `TTL bi-directionnal level +converter `__ + +Be careful about what converter you use, some of of them have channels labeled with `RX` and `TX`, +in this case only `TX` channels are bi-directional (so you must use 2 `TX` channels for I2C to work). + +See Also +-------- + +- :doc:`/components/output/esp32_dac` +- :doc:`/components/output/esp8266_pwm` +- :ghedit:`Edit` diff --git a/images/mcp4725.jpg b/images/mcp4725.jpg new file mode 100644 index 0000000000000000000000000000000000000000..edcfb36545e0b2611f475af95edde366c7568391 GIT binary patch literal 72547 zcmc$_2V7H2+b_BR0Vxs@kScMD2+|RdPEZ5{q)RVR0cp}idI=UpY1wq81w=qZKzfm0 zMWjfTPJ$3RiL?MAoE6=Bzwf!<_nvd_x%c|kLQ5X+8SCK z00jjFa0mPYj!A%`nvwdo+xkWd=N;`uT|6Be&-+S>Nt_q-@pg81Jg=p#d0yKe>IInzOUWWd75>Nvu!DmrWkdKt)-w7)6k^005suMKSG&H~dY3WYV z(9+S;(41sANk>oqfjLG7dPedE`60h=rKF~!qNb;%q5ak5|Iy*N8DKt1u}!f}MZpYE zGE-17QyjMgPynEy{?$DS;IAJACDjRP8d|U$3}A!G(_r_hsK8EBgFOaYhk*6K31;du ze@I@VVKKZ*d%=tK%Hz1~lYG}pTiA@g;Vw$ud-#No{wzBOCl~)E0l~{c(lS?N<>VFA zZm4T$-qg}IzHMS^W^Q3=XYX*|(aG7x`;m{YpMOB$(`Vt&BVN3Wj88~RN=|w8I`vJ? z+uXeTcLndu$}1|Xs%vWNTHD$?I=eo1e;FJa9vL0`K0blQ%>P(e#4atb;D2sy@9gdo z_7BM8q5!CV4+}j09@zh7T;L>7P?BjtOCA>mr62fD#e9PL4@sIc*9>Xzda+!%^7tg{ z^|_3Dh;4;TmX!ooD92{RcV!-fG*gP3m^fW;e%m}z8wJ1P8JoiXCjOq z5CrDQb;?V?{LkGiO0Yz({}`|gg9HL{#D;eOSVR>G+@c30lm&qffP*&?xD#kV@mQ6H zHW%Q?qM`yH2+;;41cB!5EGpLDmCLF$)W4eE`&|j%+WfmIcqdp%zLgbds0&R5LZOxb z43f_Z1maa`<@;dTfa0SgL4c@I0aob=0y~(n)6qMuKrPRm%ya`v9=j(_6aoF)StqdP zoB-@-7?b~E7^@F96_D)G29)(C0LgV#8o9#?zz+2Z%z(p3|DDKhWBph1`}aDuDn-8w zaLa&lZh+z`i4}MSn^$Fcs!A6LSaSgqh}JL`TA~w$rxS%FxtIn*Frd7148#Cpr+`a> zU^&oo4A29&p!h86maG#U2S}s5idjAEN8NP*}B zt3ej`S_01l1AxjuZ#uU`?hK@roPGfSxRQRQEGpc;Rs7Xu`M*0(mHPK6{zDOy6NUUd zI3+F1stkQ#p3KfHnQ~cF=^!4|FNRTUs-Eh~bD~fMaRlUUa7{~ufNNqWi<)!ipO-X% zli)}0MdzWg5@2VkKtfAMfq=#M2wXBW`XE|)foG5< z?l|TGf}P-74^jczQjqAp6(C(ev@oC`7*LQx{~{zSfIt-i0{;LB2!xZlz`288t-yvL zqPQml{{RaBR)F>3vwq_axdN<@Ze~dZ46Xr>L8`ZgF@c=74l*LRR(?@T5gc7L2xU%x zQEn3){WOS!WD1f~6B!}1sDHr-6FAA6Acul4kOn|r0W*GCfB_}=ItWOqf7ZgUX$G5s z{Uq}+r5|~L{+-;xoBlV~fm?q!24})|RrTaj{ADfH(;6q0Pi9e@+%|Xt0Cy-R$b@A& zast-DaoK|1|CKgDc$szrb{5IC|G5E05D4iYe=~J~^xOtA>in{(!I85JMFNVvf)qgm z0LTG5y#N(77vKprpafy{*I@n~9lTQkJ#cdXIgAC|DYpLGE8zaGN)V2E0Rd?;>yq34 zzquTsSOyKjB8^eb9s+O83NMHD zA*vjkHz)3Wt_~yW^7!GgUk8h)F3tr$M!gCVR;pHLUUV5=aP|$#;IU}t(P|lSL%!YT z9kT4&TncPHAA2eg+d-ZXGSGk>{M9p%_o;u8Yxvj1f=J9T6UI{cYoUUCMIP0zO@OD*#{5Sxj`7cs|MA-+K=`XG%<3`4R z0tZkAB2#iU_b*~m{Q?JybJNq6G4&~a32zN=guji~pnp$mq_wQot!}e++wO9=hR`~S zjWmhEnWCtPm!51k!zt|}EXJxT9T4<%_E z89go6;A}%r%`=Ex6;3vcFW2i@YFhI<2B_~O?vO_v%D7Okf^}}=HF5f7+dT=N1&w-ZhjUymz3kWen1t2H%j&;J(SI$R z{~mpDZBVFN;ZFK4P5?SF#&`dz&drKw(}zxJw@#6};&B zoV0TO$1xx@*LC0gR$Yp+vsKy35hN&r;3$s?c4=MMPG1<=wsk|LH&xKC7aiUpO_BIh z(D^OO3Wr*_uVrheC*sSji~X;B>^g@ZY*P9vl^*JCJZ`M3R<^o=F!r3K@JxALBl8L? z6?5yl*_cz~HydJK%3KNYOlseV-Ds%LY{1ZGH6@{kn!~9}Ex4)mUW>_YsC;{-qMcCp zw=eTOY{Pr~r$RfSl)*C9YoW}Kt3V#SCbQagu?JHb)BgqEcmZ##KqN%`99VKBKyazj zKXY(4e^PjT`pj0cd!IVwng8tS)xc>|sdz*BZuQ}%VD8cRyRZn+5u|P@g+;$Wv;Nxm zZO?kY_V1ehV~7A~TYva0^D*FT1$&8{SO3HF?_*RB|bV6L$UOW<{!e%m3>6IcV+} zIK9WVO$fd%+*Q7U?DH}=i+DHahtzm<4B&)T<<&^kscV5`M0GPCt1yA+I zHMt=PLVK;K@lM5l>R^S`*>+pO8-h0;x>r>qc3*{HlxgST0%=~#jNFetlC}@G;ftXo z=wsli{McD-jt}=9d2U)w&cy$;QMTB}qLqW@Q;4iA^F{T%l6bZe;uy<9V(HKI`F=&S zH(|nPv(fSg@W%bO#{kuVt5kkl=2_3-%rmJmDSi6AJ21mg%Fte3N&+p~$_?5UsLk1~ zwl4c1t3D<+pronUp~6!-K60!O7VV!Bxutih^Gl?8zO{& z1a&*t-2$IjsY|_z9e=i8uj%J~h&*BpA2K?Afn!OIGdhp&wsSh}KG*t? z(xKI0Mu0E%zu(q%)yDIt(9~wTNZ49TYh0|Zt@=~xVZl;M#0j&Z>z)N{f}iq29V}xW zC|ej6vU7@Z1xoh>ADFz3fKC6B_)z*JaFaO(e8ZSRKyBr)g1i@dFCPP=pxU@GK+zA1 zMC4ks01yH@7zVtLCIESml}J>ow6JODyeeJ)o+b!Y$3QbEyOWl(sE>g#@IJ6`fYSTu z8;KQY0!;?Abs)d_{4Jnc0@|R=1?oefVE*q3ECoOTIqE69_{X$H<~bMJm)6d%Q0({Hd~1Vye8X{uR}XkVKd6dlV>rPb&0 z<|v5oXVdN;IN#m=`Iv!vf*bCFP7I`N?Upy(ebU>%LH;~3GK8X}Z!46q1gV$A-3g6? zeXN(o3D73U*=;4hH=Wj8>mU{Rsn9pzm1pup$7KEVg+K2*`gUJxbkNj+ehcl(i>7ZIiD<>rUs|17S(T?#fmzAaQN(z(vn%Fv&_Hxt! zHW}Lq#aT3+a2|uwNgo5y4z8l!%FXyb8ivb8nhTNp#eBK!dQz)F(2xF#uS~L0O0eauQw#V!s&mtgZ=Dn=%TGDLG_eBFtvb9f9m>R zJ1f?;4dwK|8;_6W97zlip42KLmP|uSn#xkvt8oImpKxDRj)7Cb8hpci(cJ6wJ5Q!2 zGl`B^_-+JL`v@Z1i+i0Yt~+64JVjE$G@k6QQDa-fR~&U!jJ1+Npb5%P`HFP|^FRN# z1IX=w<`-JtJkUr%N(8(>Ict9G7$^dZ@loO12NscyF+72w zs=Nnk_x1>Xut@>gB=hT0G@5(AYp=lS$@d=v;b3DFxI6P5c80MsgGLluy+i<#?*i`N z6l8USk}P{uf(rv&YX6=<5fI$=?S7*%dn%w0?%!MhT?^?pkk*Ch3{!DBszl7?9Rnv2 z_Ma|q3kMN=Hd)`JrK98@n{$&=KOW{EWmaz0mN4IacsP{5*x#e?H-3VGpi_xm@5Y0`gMUln$2YxLI8?!iRD4FAw#@T4G3=Tj9>e-i`3gvu ztP3md+OTII)wZbc+NX1;bUr_ux_D?*-5@aCG=Q^FGs)E4V!$d3pFj@Wi8tkRey4>k zUL=WCNXPZQjLGUBK@l#{cJyA_YEIp3li!GQU*9;hC^+8eXms)- z5vNSZx9!`rJd_s5nM`-{BSnhslIs~9Py@zlIfo*{SJG+u}$kvDo#21;-1^wqxVe&%Ft*H@Ia&%qcE?q~i7AI;k? zoq0&_tvwRMQ+(Tv0TQ>XXkovmv-q6tu_jDc=OFBzPp6rA|>dpM} z;S)D`xeK)-75+rPbLIMSxgrgHUGGN|${%08=UJ8$_4d87tBqJ_DXFCiX9b}P){JdK zkFBeDd*rTsC}dT+c$>~c@e$1(xoFfTlX7@Sl}Y>5Xnyp!V?cKQ7k0KFPy07$K?0?VqvF1Wvd)(B9$2SsOa2Vlqly>a}q z_knsLC0QpVZw_P=*+q&}pa+kPQ4*hnGEMuJbXqP{rR7^{*kU#|3|>Sk_aj_78v@M( z^>Vc=#PUrUsG`1lNw%T0u=0u*lO|zT5FSkgQIpX^Hf$SoJl3qd{Es(vcy1nD*n=Ce z#~}wO7Xstt%hh{Ux#4?uqc-q-yMv}S4~o0m23^?IR7)BCHz4Y+5UXHUgEcWRh|Y~vFu*YjzmrJq4Ysvg9?wN@@vWRF!KRlpk#pG}l#ZCGf?1*?d% zu5~HQ?06H#2N_FL7KUCh5Odp`(`ANTfxauumjCwtz1pMDfX;N;=a^e%{w{?f^(gPX z$z83Z0umi*7{Mq~Z-PVGz8rTOSmC-A52+ZxsXA3AZrm4ox20s{;Zz#~vMpb0rP{`9 zXNp9P3FYjqag)XWXk?2YRBWon@SPk)^EstQw*-5ow^2xSQE zm^oQ98thou7F43;Zl#U;!2(f1<9{Z1`d$hwh28=c`uqOD)Qa6RHq6^oGOe%kS?kq*WqR=jO$Rwh(^<=fD&w1lN5iNea-%}VFs0@?5?@l9s>0{J0pSUBlwtW+kG%*t)qOR+Y5VJ$J zW1!_~qX21uovwIAGDBD`=Bc$ywHKQ~Lo1dWxoksFDrbJxlZK8kJqFb9o2`po;H9|Px>dNbc^nwj(iFWbJm z@#v+wMBH-s(H<<_U!cRf?L|#|F}K{0oU>_Wdq&lo-cd*KO>=Kh71%X_LMwlrE-smk zY;;P(l_iDF?TOkSt!s2@+b4p|P*1*=GrrN1o`R1f^6kE3W|{o$V)=w>EIMUUCc{yr z6UiVh9DF+z4;@EQAzVEe#XjMx+h2@1pLU(*T5g@T%sfmXJV(5+H=AAVB8O>-`)@8hBJ7n2GJO(riR+^s@WtLHw#6hdA7r2l8Z%(hE)6&2l#G?U< z$45h;TZMK{7vT8!GIEiA?!Gp5q!Jr1_E&H z?3Jp&WWk^{6LO)+wrd8bA7Op1lTgVcBJV67nL{wk_xsW4IN!Bi2nsiRgx*67*Pmjw zMcsDU?OkhuY>6K}YABl{xPwxOSm!B*+-yk?fuc&6Jqp$O0;7q=+RL}=+rLR;>45&Pu{ zNg!h^9lfaMcAszcn;3h6HSo>NeH>1A3^?I3gqxGm-oH?m;6~;HVmdFh0{dl#G58) z{gEOcPDlLBywZbd%}Iwn_h4$g0A?(vQPBT6wxj8Ey;aEj6*KOt^(VA)GWS(ANSD_c&^5r74O_f+P`K-pfRSA*z}@T9pD@FS7{9kV zF-TPU^QEJi`;9x%eU z4l>6W@$Q<+QvAlRA|&vH7nFQL8$FeIIA~9uCF3A{yMmy@eLh z;ug$@Klz;~dG!8Lgyv|*v#TWj7)dwJ@#d|tW8iidGHv4k(_mfx(oWc@W9b-3BOV5# zQoY8We4nb-=Z?=e%G`iDi*M|0&ki5a4EYG3vi+j0bE`3OamF6Ph`Y&oPXGGJxyS>; z7pWM`2C{j@xIo*TMOUUSC;`;m-@hO`P{@X-f3rG)VEW7O^pDjE(EutaTcDX>Ez|=v zGmp@RjyEALY4gr)*Un{SqGP7hFh84;Gv zUcG~3{?L$j!TKZoCG9I)&RHhue##6rt3Ndv4JGSFHti+bb2#@yxIfxz z$*d2f*Qj}$vo*nv#G`|4^ReWl_99B~g!@~sT8LQ5u4+~GuM4(cbT5L~5)kc{YRfwb*;F_PJ3Tle>jMJGB4_3Xl34@p4XEP4AnUAd#_Q82O1ehehPtPr7(E*Gu^cnmMnPd_t5v| zwwu~6^HJVt|9Ul)QN}Ye{8bt)MM#j@^%lFFV?ZpUf$^h?Ai?8#YHmb_v5j=R62knO z&pDa{U0I`Qr@WV6>Lh+JTNgp!qrDz^JxbEn!w0cx$&q|Ae#Evl9AzS$;O9uawklB= z@wVE#NW+)fZxh;isLwx<@ZYpFE-+0}H%c$!AKn*}oFnGPl%=FB($#sq@r7x^=2Ds} zD2_gmgjQ|E2O4ETN4-V?66B|E=vXm7V$C~2qHI}~8Sv9IJ+L+yjMb-z- z_3zL|EZx1LpqI(neW=OXP@B0c42o>K#M!T|$|M`EVPVoa=W7vwf?~pL;Gu z7(eb-78d#W+~Y;NPNry!o7;z=8M+Z%j!4gCy$t`O`@Tk4SJdlmt?hNY*rOPjYe~%6 zV}NO=WW4YOj&Vi+ahk8iZt+uTrN}4q`MB!z-DPV|Qy6!|Vw(X{7B&~6A8C8eGvn4^ z1T&^onCabkk4NA{?uuU*>EsB88%bYu7;G}MUT>pBgMM^DL)jNAPxOl1eTUl)L5XS? z+zx?sc|*BzNs=4p4_F)DXVmVD^-YS`cM(_)y-8zGoGye{ymd2D!J)GN{p~!9lVxEQ zrQ?x91*#b#quk-3$^P1&ts%Yg>C*0wes)0rNgOg#9x>*5>U#B-X3%cx>i$0JJ)&%O zJr1Y1TZen%pMr)(^2IO8B~_l{LO+?dNEjbdipJO2a~(dQaSZ=@H&EZU@I5SrfO;m? z$kI_Kx8f$e%#Z8&MoP>4P|F93_G2YC_QSA4zpP1Q`zlHskSDE^eQ-Pn2+)#5Hm`bv zqA`&sj0sT(>kMN-Z6I;KEv95!sVc)UKtZ;~0C*FB9+ih%c(Rq4*E+ zmqqLZGySjI9^*Q@7jgGdb3G7VqIwz9aCj4ALF$$G(i}};jkM<4F8i9ASRhnc>5(6| z&;GJe?0(_Z!sG>`-ABufX8fOAgLv1Ps8!C`ESD`S^oMYLu$RZm^=o6Ee?koh9H#XY$W$AOxaAF33c9^{&C>g) z*xm!`?iE-6T<@(ZTk&yYkJ7!Swa147P7^*KRK&`@rL@adjk-HF{(L(A_8GwJ2YH=% z6_FI8K_zOPIp$5+YlpIU5k8pQV&dJN5At;!NLX#8CHUYrjd3U>5yG3@aH|_}nz`3a zkY~Ni1Ug+}b8q2!uBaHYn=dRNJ#i}I5Os+JTA&Ew7(9EVJzl|u#2xK;%SMT{x{8)y z37bP0O`(k8bg^GcIa2F~lIHh=ku}ZsgkXLZ^UlGo)h(qbS8Jab-aSEcKjAT8GuiNB zyV%8FHYVP{%&|aCwj|!vWO>-rYb7JP!Ex7SB-oB;Ec9%t#Oz$X@5%6FjSbevdku9# zW1mPR_mHsT%VH8t&CS;s6WTyYQ|G8%30$bgD+^V*rj`8v`=B}uF&@r%PbI3$g zJNi(sS7pmveR^DVetoPQQTW(<_yBdy5-njK9pbKSDOOUt@AooO)P4qfM}AesC7y7v z+Jji%U)%`Vs#{L`Kp+G?Wqq`5V`|3KP2JwgFZ&*syKuay$0c^`Z89b*E-asHI0>{2 zAwqw={CZAlA}XI|JAOpmunBkT82J8l9@aWLai*=S@e1x-M_$Gq0Skc|1Dd1g9N=ew zOssyA-SYgr(Fc*F-g+;*U3g8z)Ax5IdK#BMsk=h^Lq_8F0Mn{ zO4Fi?k=-Q|W+XZU{;(a!y`#7Z@t0cnRmd#3m^>yS_x)Y(r$y4H?auzL>>po~ujs|s zd8i%H&B37rMXJ^cXH4PG+xaI_T}=n8GWyL4-k>Ex09Q%~-tyn;$n{yy7Ul6Rb&ovT zMX$Bc_@+UdN1`EVRe$E^cThQ3Jg~U$ArBwlhK&!6y`IqZGyMjo3>`fN${~@*fCKVn z8G)fgviPRB#|3EejebVunBY-aS}SUc!L+e$&=+!beyXXRCsK|mo@0Zudy0d#L)nN5 zqi8(jnat}o_c>3z?ul><^GEV**s8QKpVD3VJpB|$ISYf1A>$}h=R(v?e{K@J#i35{ z_2CDNoWz@iaX-6k7rm;~q{FaIIjiRaR02<2OYKVg=*22(0}r5)SYA3$JwuH=hhztQ z<^}ddz8M{pA0Zt$?%h|Q(DyL3r`i|B6ikKr!zZNR`q{k>W~&Gj?<1_-dB=e}X5Y}> z50IiRtOM$jz`8ppdo=%j=oudiS?VmdO4RM5~U04l1qLUD+Oz_zKRAwWJ zwW@APF@`$5R9L^oW5>fdzijyO3$EsaQHR=@4?D9aOSTr6OMJrU0DF$~SiSdpmjw@t z_5y9O5r`I(#w-3h^P4XoK^cN2buv6i%-=6Q-?WH?#5;3)O!JjYuMVXy^h|4q!OyX2uBv|Eo3ZYX1ktS4{KCwjFn` z9yO89fLp>4ksq($&g>L8n&DE_R{Z^o4<# z{h@6be;WbOY5tz{MecHmiNhWWls#Hhn;t+QMBm|ixQMnF)7wEjPamyTOi8X>-{qm- z5B9z4e?aWE6m}=&@6d*4LPzHg^x2{ijVbD7pcP}?8JEy`koou+pra?a&rO7R{So~n z#1nGSlqqpPARgw`im!r4w2LrZ`d}5pZ6>d*)>ijCwRL6Y(nL{akReyYMPIw0>0$~| zg-_!BmPwj}sE-gLt70dt%`aY)|uomYqM(dp~3>=G;SuZ45(ZN>0w z2sy%IbTQ( z1bf4+)<2FvXU~k|(eb0S<|(b$Cf%L{Z8jN09gP6f1dk$p&vzd;9&9s^ z*cNX;iig>?3}FIVHyTn3b|Q!@hr3yz_g2~;BUo`x8onI(b}9AwYY}tttvjr8=#QaE zRq$8(R91VgnspnYK^XCf5&x1CEAztq3eJ^cZWXIPLVNu^+Rbdw4~Y6$6^ZHiWwOO( zrEvclm(F9hl=x%e1c*yfZ6YccZVxAvyR6=~cK!U|j_aq~*pqffgExN&8crqLo{0Pu z$ay`y`zGUV){Zwy`$UGhR)Bkhg=+^on?t^7Uk$osdD#%ZN;_nFg)*Rt^=s<14q zF+a8&hmwY89G_9~P{310OCmc=6IW+IBao?*Y>OxAr2WU{J3{K3LDMdWO~$Qaq8p+P zu0bzeUo?KM$#H&+|7K13&MQ5s2x*%kE}mFgY-+fo@+pNgxxK9t{`sEGKTda6?#7fk zXrD24nkXlr=0BOMzagaJ+6LMk<+^g2!(|74y4VMpXn6;5%r?Xw(HC%NYFXFLOh#FT5S##D+ze-QB@JOR{CJ(T8{)Ts;}Y0q(n|w z>z4YZnJBw0D80WLY`*wXjDT&foN>k5P0^CFChslHU5}&0#tWfijpxV2NL=t`-;}Gj z?kj}!4#d1=)H<3tfDASYQ#{Xfev!x;pL{@y*eQ7#P^F7rJoBuu^4PUY4c)8n%eD4@ihuxgi4utGJynR5`8)P2r?ihD_*M|)~ zPKqXqtITCG;{|B&`?rUMRZ3SEhX)ooB717qNZS%`=yD8%-Ig<-@%7Q%GC93<) z*a=XPBS*$GECJ-a6R=+nhAOAUg8ocdrAW}vxeGcxy9_};XXY>vJoQiz*smo!LLDms zDwSb?35*Ny&?X0GgCW^qlojaBBuB-NBVB>NKXGur!*nv&Qyv+G;0!$%dakCSr>A@G1UMlVY!b6#FY#dfOk0 zKA|Psu*zTs97OQ59gnS>%g$b9!{-CBlHQ}P7ScsL+wR*z>zOIVif0*LwJv7vY^_{{ zy}=P&ZX3nO*vCG^tY`>)O}Hq|yYpVV%Ps!KY1>ZL8}iuAFHIO*?qFz3rFL&VQTqSx3s^*s0N zh7S%wCi_!Ktnt#&Bb)o3W7cEh_gG#zCM8dF>wnE{{fXs}n=cBnHA}e6FH~1efPUt^ z=-(@kS$Ni+(|vMjA*g!!`%X!8HJASLig6+z=A1^4?#J@*##wLvcs17twD>>nX3V6M ze6}I9*V>ZSj~;~5l&^K%BUP-(8m@k7>P1OUP5CSCqHumMDj?$?szV;<2VRMeR=&H@ zulxi1rsD)c!t^{+{ z>(61)Czibaz^wB{qUh_H0DgictTQDwu4ZkN-~%d2EyZr z+g@~r9X?SjL=;?YB=j^P&4l2MPRr0~B?$*P^IzAw-eLdpP)zDzl(mq*yj&^v!sqnW zpJQ)xc~i`8ZKFUBO{L~b62Geg*_{zfscfZFUt{jJqbYoDBu-$#{?8rIirc`bB4%>2 zz|=45khHZGdtq+soRZ9~`*aWWE`Jh5B_Z?c^$(Q^sFrf)K-jZN%88iVvf4kPX-2!oGnIr9(D_oMLnnY&tiLEI79JqfmU9jZ#!@|*=%w=QxumDM}Lgr~dEBUD8b!PSPg72J#~4xK-^kNgO-sy@Y< zl`Z&Xn&XUI3H@^>j^Iakje4c_tS4i=8CRbP-;*%m=ZdRbN3@`dY|kF0lW6??TfES- z6i!}R6w?gqZoCUBIZc)a=EiL$;o{9ic9sk;e*a3#293UsCKWc*G zgE)hi21RRy9o=M6Q(kCqXiKORA%7k+K6|r?(9PDhTlV~#@*rCP2I|!pqKSp)+3&cH zG#BUUTg_(0GQ73zgzEOxn(B%9$HNC^tmjv{JC$V{Uj~0AbhXzoM#Ac92TP0`B9vv_9>==9w6rS zh-~8X5iLz&rNLAnD>yKzE6KH|HfYVBsM4~Fp)}uV!eVnMjI1fzGMN{ujs9p8* z?q?eb@A)~7P72n$(7SDw^OJG4-BzNzCces~t(I*>wx@5%tlGrE)pvN75P}omJxeey zY{7U$90S#CqiOG&CzBUPPvtL%x!yz*LeCh-UeGG8Qi`6942JjPezw^WLS-&D#!T%X zC%os));#b*bF7)C@g?nrFb+bj;#J)X2Yvkx!_{)FcLe7J-YvOK7Nt8Fw*+18pHOtp ztA<@hhf?5K#4x#0+0Xnfnaon%anXUBwRqXbMCL=s&@XjF*x6uqw8t4I_`SOq{cw{C z1$s4J(O2SznIrdC%&q&GjvC~?Tph)(y`B+&T=N7X+J5h{X=8HTY)|<%Obd1wMi4m$ z+L~f6jG?>M*?D+5@sg7~3I%ReX1zm;{Rb(#^2RF)W}^$iT6)zRrM7FIwnH0`i^Z}y zZ^`a}(g596!`YN|&0`=Q{&MdI`_(-I{@#khiw^~zerSBY6L5lgnCqZo$V?M+B|7I) zYWa<)=e%xR`&UrPrGF1cI0Qc|JsSFNLKOZATM+EZW+iXsh;Tq0jE7aF1wYL&px7pV z$M&yqedd?v1gRGFCy^w22VBsu#)mKTHtC{EgH8b&j7i8{dh{#%0eyD#_cd!g+UYUE?i(S1cO8;r>ET$B^GM2 zsA4DIn|?kQvrkN(k(LaP?3H@DrQO}H?4>?AwLKzo$qM59(hqgRn)D?j$uV~PPlb4@ zC$b?@qlIWQ$KFNGN^9%X#0ndBH7oR9qz{6c5PuG#mEI;I{DJ~rWWQ8B18v#w3*3Bvs#VFZM*X8Gz;q?T_~nHlvP@8LM&#UH*U z4PVNwuU-+#(Dy~WCSLBcg)XK`#%2U+4QB`Cj|9NB*mu`K1Jd1PXhm0>8gAAUuTDw| zaT@H-weEU!OX|r(+2T<5=|Hnj^wRV8-}ZkL*2QA6dIg6nE2xiSt%XhDa1NzwDsgVE zeo7OhxCaq>$H23y=`?1Mz(k?1U+Sf@)_%w#m)Wp@LuF;ca7pQdIABSEJH zMz5qZf9?vlvb*&3X;#6-@ph_H1cVw$T`uZIl$J`@M=EYc)xsx+^u^J0%QPKF`an z3p$HULzdi6;NMsArb}?H>?Uq&2XzPTDHV@ysaH1o`v|u=dOcXnU$~e;ORb?05>mLp zQ)v7x=irLGib?8qnU5o9qU&sYRJx9yG`Y>54CcX~t2hQYD$`J>ot;kHX~d>}3p%Yo zV|X;Q+!6TtzMnCJp+<#u_I@BV$v+CM!U7FTy4Cphu8Hg5;7@0tEtP&eq6<1cW-wYY z%R>~$+a~zsx+L&TX`P5fvRu_VbGgMxxg*45)Kji0G%*1l2}>*;zvPoJ_DC|(fz$2B z5!Co|lPiKC7}17$9>`Ni+uC5JHzt15=jOZ({yE>DL_iap`qP{7XYv`P3K_%`m_F{X zWoszvD5SP`A<<%cGrUr^6GpRQI??zV&tMvR)868|{qV)P zClIBvGchJA4wq1cF!&dL<7fUULY}c)r>v6l*+`mI{!t_b`9o9xh&F>IEetwe$tyg5 z@ym#j#mRFzkmbm2m;2-Gb6G3n0q()>3`;}J97+!g>tV_>gMK>Sct3$U&j102fldlz z)WW8#Mqf|m>7l$=R#FhbgLE$`iNEoN^lH3LZK-l zn6m`ouwv$WrNcRx#VdUL<|#v?GfA?n>)zF3C2DlYT+6osIh>cqf~4^5yCvmE*^P{Z z!9Da|`?QB~bz@AFCf|&FEapn+LHbWfQRv-Q3zazY6t2`f#9Llgd;jf}FbF|@Xa zC)qpadz`f|cHM!$LaHimV@C@a*3hGK(Jk`_kg8MSwB4zOf@|_bK4NR!r(4$^IXw!~lWI#=e}>v}uxDCc?ZnxIAoiS2Hr)*QX__|hX$LnoKi zS7DYh8eSaB9Et1D=dLD~DzErIP(&#{X$s;iCs5<8Fdpm7czVe5V}LPRmMizm*&Fc- zb{yyQ%pcoG7w9vaN@EfdzVC-hV4@SAUU9x}k(`**kTg4oEFg-4e3Nlh9V}lsu~HQZ zjh$E=^}5Ke`@a3E+>fh%2V+?TZ|MYr(SFYU;koT-Ts3z@250Y=E2ggTmc^6Md!c={ z+#o{6`Wts#4McP)_6oysU)L@S&kgTzT(pnKxiTN`HQ5j(#|S%(c2ysKmmZimG(d8j zPj72^FezRjlAO4F&t!_{?#1*vfgiywhltQVOS6|vE?O1h<7%KwG&UTrGR3jI$obtp#%Y*W~qXgJo zF05j2O}u0>_%dN1y>50J*Zb+ktky_1L)69PR~J3d&?%UB-sQP+kuH8z`G>R!#{<{^ zzNVyYh80hBO2pStuCr-N4V^-WU&S^RfCgG6(lCq$<^rWrpZ9n=bLFW)gcG}|+fVBW z6?rW?rGmYsAQrgK>_qxc z$bY`r`mZ4||EHf~QOR~>3gc!U6P0~1C1+QCCwwy;IOA7-ZWzRMX8C{-C1N{CF2f(U zGqhta)|KbeKIvHGc!kCdc&BH?Yp<7Y$?k%mZ9W-Y88fmaN*}!fD$2Ou)Z&#;t9k2( zpvzihtmJEe%E&&+qkRW2oBQl{gtG$yHO9+z1a;~#?!wbHh>nOw5p8CZXYv=DqKMwb z{?!&~R%0@k-HYAr#g(>hT4cQJzL=TUXk0Xtzmvxx)^%2@?RKY21=80XjH&QB{83R} zF1F^|!K3;U!IW1xUY#vR?59gK^vXK2@6RSNgm!5N{(*1m_>tsx<8g|57)0gTWT^kO zomJaL2H`@ug)rZK7qb3-i-WtlHDg1r$KtfWt4kiQxl-mc^7amrt(d8be1geo@lH@F1B*Ozl*h^sSV+w>7`QE5uT8<#U-O zx&AgpH=c>PUDfR6@KUG9{c4EQjAE(v*zeqhp4ti~Ww0O?hkt^7g88HE8 zJO<`IBDj4-rEU%=c@?S!olR_&^T>@l;=3#S=XyGfib`e^?ft<)?w!`Ocs)@^9+&b* zp(W@O6P>+rGQnt-W%$T8fg|HB+^zy@{mNqIOZ#Ocf1+)ZWytU3-tjs-2iY=Yb@n=zEwjsFvU)np6NA@9o;?aF(Zs*U!hu2-UHN0Jn#^y zf(78|ciBsvc~}UR44c6wDE=lnsu^>Er*B}FLtay|c(#G<2N7z(7P959lY6<_4%M_~ z84lzKcNw3>7~IecnB0Z#sV4kf!dpSZZwLOPGyE~l#qhrZ#f_-hL1$k^ml=`&c11mXtO2ZK?CGI;Y&~MnBu%jjT@V+yDmhQMu6yqYs(0 zn}n-vVid0{Zp@!zGP_pF6&i*LOgC2(0P7fClM+@;kWP$;%3XG{!o&ZfdhRzNvi^{t zvGx{#pp3=}RI6cbCJYnhS}V%xi{OB*NURIBU@2u0;-9Rl@@07C@ zYFK3@MwS6IKMzNPT*h9EYGuUilk&v(n_6R)m8!8k&S@)~hrbK+o3e)ihnF2akssU* zo=s~9;gMY-9{HOO6m>#k@&@w#W+{ews<+l=ivrPm8V);WWFfhvZo<9Ghil6W9y>Nwmz|^yzpx zVB~Bob?_ZIyC7)+x;t+HGrCMu6MnzGu*tEW2JZV~F0Vn2mtCGH5Haw~Ug1Cej?l8% z23*b`xxfQS0K+{qvj=}q9s=P_F%e6waLz$I`lPYGp(1VPf|o#*F%ZA%D_*rKU$-)D zS|2uSzmrYt?VWHaPIe@0aEEgF#J*RKcWyUH$-c}g89i!+2m}dsApd~{UKXj{BbF_l z1Q0RB(7=Ev0ZB8*x6DS(zV^<_Z6s+juZ^}D4|o}(!jmf|td79yLzQKBmbsFzN!)L1 zSBS2Gq|y{fG|btB+FtO&$G{cx?_dnbn^oD`9@NAZr>+)Mp^Hho7GL852MByK>%gv>klYN~S ztmAHF$ZLn@Dra91`?N)n`<8Oe{Ek=8h2U?~g1AoX9}O9={fyhQCR67}zt5~0dIK{- z24+a=c75N~6m9VZ!L<-8xDaU?ztOYA0`CWNl^qYy%;DT-+iYO{HbrwuXg>ybl};5Y z-r__kx0vRHmtLS*qhKDmh(KZzySR&jsI{Z}MAQBKCx`Q_h9?rH)yX#>;ww)+T7W5F zp041VfdwN5${hmzoEyuYFUgw;r&>L^yHMxP1XVHJB3$!K06-J}B5M+^w!ImPs4ow) z-+r-Gn`N3^YwZf<-JQ-i`>e%@7NspR{Pbua`Z9ZjXsfF%O*%IO=-~g4(N_=A@PDbb zzusRNiYx#&_&XN?khd#)RTOmDe}#>|b}p9xInIF)1b{qd_@tC!dbRsM3RmQu-YxQSL6A9RigNM&IZl;W#9w*O=B8b;7%Bb-dsw*XJ zFWP!iGl<19X9ky0JGdHr7KGRLhyz!rmKb)Lr%n4R%wHxvF8@>_ef|&;+B^t%{o?SY zX%r>vhu^_%-E7h_f##i}Dd3-E5ang$f=SzoU2}+Z#TV8>K@ZpCE(CELO|=sB(9J=!S5|XT!BhL$mkt z8zm2>&mvE@iA?yF<%BLX8B9crTJ_YC+v6Gcs<}+9loL_Vu{YyT!((gYei?B z4CTDz1bX6>8qP9GrSE;7f|{8?Msow^K6pCQ8c!8PpqlOIF{LSJ9vr>t7P@?BGFZ=< zuEf0RGyb~a!PXb2*Gy$qq=a;WD}5(>gu2k0tT=y2&smz?1+th2Ah^N;i6Na!w~hec zaiC-OVczTLGp!(ST;yU^ScRbhR-)FNcti%#5+nV6TK$8if|e?|_$ zyYd%eq!&b=(pxtljeo=Ugh|Tu2;**vG5N?23+_}5bg;NwssQ_JwPEg#?OrK>c`Ecx z&z6;%`RFvN84&i{=|9x8Qpg~0k{%H~3IZhnLkr{6BInuGPVqo%mjF3zE9_H2mKv;I z@=?>fc@x-yq4v4I_QnG@(Qa}h5B-JVBmBj3MboQ@w#ZsI!&i&rcW&l<$n~iJbR5o-0zXHU2XIIGzJzE(}Iw<3yI5 zZqtf7CU_lVQZeD^2&C9V!loDs-0#zLzceBv2@!m(+HvA~Sx7R(TXd(Y365@@xvg8_ zpUr4};xTSqKFXtyMn@C^);@2?CdDuuZA+j_zvd}w0rXcnZgm2^U8=QkcBX6nkK+3G zMpU1@oTSgE{n)EaOou*4YAw~rftLL=UkcbSDy-<&-369QHa@HgcZFy}cKK_I$%#8T z;^QzgEP{4;IgKFOH9wLdLe=oa9sn_m8@KvgR6Y{f%njBZdlA);U19v`a_+PJy#l0R zrPZ$ERngG=l(W=-=iPYUXW?DDdRClXVf#b+zX4~jBefgLu>BY>%kldw+Tc4oJ85a@ zXORRbpboBd1~fER$FeZYTWN`y{ri^hUZ%2UHLO%?s9IBgoLt*m(Z?eB3tE_Ef0uyNVHqK3duVsNv?@VYn zXc8P(njCT6OafUy>itm0?&JZ)U`mxoY;O>F24?YHgYn}{AJ^`-Y2ZUK<^J%)rUjC2 z=R!4}>-{Dur%Cbz4iMp{CP^lr5raHAOElHn`!ut}4)y3;P~Ey%@T_kyY>97U?-@m( z{5V|pfY^j$jhNI?KXs=jpoEgMxo9Vrw44z#zGV8#FDhohOoPUXh}5>Q_z>=WQa-Oy zk<0C$$1uwHr@m(@xVU0@fv{us;9W-V){+tOv6|aBYY8X{sN5Hf#F+ai~ z=(iruK+PZxi(3oPDV`xb#XnEVM2O~9b}RfI4^L>{ck+N%-e9)s_RPjIDnmh^)6_>L z5z7DyUp;vIesc=U?l+*c1KuoAGbA48Z{sH8OIi-6Is%_!$BH<{@iMbZ*eB46{hv`_ zXE3|9OOE)Yz0}+z{`EYOU1zg9vAeWCS@=%x1_;!d7b*39R@I}w-Snscy9b5Phld#i zYn<~1dxWb|kOy1Y#5`0~@rONbwxyj8I;sy%qcn3~B!=}pGw|wuXa$}*)NS!c>g*tt zz&sDrZ6|0$6(;g$n;X@p)Qkx^pISHww5h&Dlh zfQdYrQ*uDWCh&D0VriGmLq`2s!$eep{t0}xxp)&_U0hI5&Qc?#QC{>Dt3l0t{QHA& zN9v7U&>&L}&POE}9bY_`JgHlA99((OaWX?JU)hfZGC}a*1cYO=vd;MEe-v(UyQOHp zKLCDT*ICcKeV8@J8Cz;%gf`Gx(h-M~QRmcHYxPg~Nhn0B|4_^5`%2K$UWMI;sRi)U z|0rJ5|6@r~yi9Kr#m3CB*3`x5YUZ#rxr)jUJOagq=IA_r39HHCsH|yyNNns9!{r3^ zC=3`Y`aB)XpDZfK#e(sM;MuX0*vo8^dj2d)C~aqwRjz9dx${l;fa;>2H(ohpDy=hc z9)7E1T3N8M{Cw#h*OfMyV|dx2-=Kj+ul1zKJgN2aM=P*c;A0@hTtY$uOx_W-m3pG( z;d}ClZLrOfwAY+T4GM>S7iEXCjBk-F{HMtW_@yxK7OLKY5B*zxz6FAOnXTgIg3||5 zJ@vA^97)eEX$pI{La8tQA$@mfe?`-w9EH1yl|z$crcJBB=WZ}M z!MTx%ohe_qI&LZaCH?IK`^Vm%MK|kYN6t>w`Uv#9&cM^LgaD1QAiQ&&hc+HDYQ|mEsT% zT9et?wOtmS$~D-m+=EO@l5Z>#5GS4&pto?r(y1sCFQ>@OptZrl&q4oDq)IIOyA$g* z&1k)6hJ1Z6nJXELbVrYo5;_$Q+i8=d&dOg>72-g~_`gi32_x-19%*myI!g9v*vWJJ#SF!kppR}amX(UZ^i@a^Jb%>zva&mq5d;#By6 zvw}|E0$Aoeucq%miohwaBsH#&n->kG2ak&KV9>4PFE*}rc>72l+VWf z#CqO}I4T&v|D2t)H7IO=wk}3#OBe(Lwtu)5h=RP(ihsGF+~%;2o!Y^un4Yfq2Ec^^ z-*?dbfrazZA?8$q9a=c$aiyED5O~Q0XwjuCw)Jhb51nNIBkH<)k@YBIC8S`rdf)bt z3760X`Pj-#Quo0jKJxIk0$?c8_f+0H%>kUCO{^a;GI#gmp4&q}S7+29iCEsqpQEw& zxRVt3Zx98$)Km%lnD8dy0^N|%P^AtxH%j{)4M7SDkv}6v*56Rq{DmxFKoTv6skY9DQ5@n2>_xSp$K>m}qJfd%^OVxj`wAu_$v2HiHCr@5l_ zz@iwawMIV%&p=OJT>_^Iz-<}*VAchE`;Em<241aTcZ_<67i)#|<(w_GN~o@5>KbvU z_0D{;q+QdIV{Z4nYnzHq$A}T$`<#@aJ>rbos2f{n=pRAPpGfuhR*VH7TSc|h2GPh^2RI*or&vo+_^F3bSKZ}CJ$VpZJKQro zEohmH4d~>4;99CQ2@yDbJl-MsIrIgxA+(3mwlr7~?w8PyZZJ7D*+fcq!nr(=T&w*L z+l{NW+=PxpGsx*D^6lU`=(6Lk8q?zj7MA^zswlar&{_&NE}w%RDhV*t`B#-$5)yqU z9=W6iBrybuKULXM&&YxUn}YZ--z6IS8o};d>bwHn(C&{}{}{0ocg8L}9u=*x@`UX3 zj}2r6HF_5(?HMnmP)zyc(JUG*l)((wW3-*l45t426Tl}2m-)~Y>Mp=8Y)a;__+rCA ze8Y5-`SIK3bk2$4LH8ajpOAj+E2Gg5MG{ss4+}B5N0GaKm4{z=*0!Y?rPIeh@Zq0x z?jOwR%89Zu-mPdqpc-k=eD%+sKwYJn%C=4RvEvv%KGaZXaC11j5W1+f2iGG;>P|E% z7xlV{SBU&0Mq>J2%&z%In5Pxaxp8G8YzRwc`4$EWZMuHFn)JqT!QG^YyFMq3dRe?P12E z=>Bq2NH<(?#YYb&@Q>x^8t-k%15E)t=Zyzxwz2#3LA@)oM^Qqh^gV)#db%~%<5f3f zLgg6Uxc2$t(hlB={-Nf2KUJ!ok zZe_3i?xn1FYIyy!3A^QklloEC$X)lw{<#VUbU@NSX(iq6?*Ub&^(=7(Mt~DQOjQs% zofA7(Zm{(iUMdIW@b6Mw3D50r9J;)S=h0Garfc{TJzcY!=`oH&c!VT`1tYpHhOd!_ z$#*7M7Nytbms~af*@>?dVGK8njp!YOwYWm(#!tM$OHV7$1v_XPf;1Rc2yB@PFyV`G z=wj%wGJazxl2F-`VX?)-gqNMz>Tqy3clvoHdBhv;4@}8m(;I9UfihETnX^%FFo0Zh zd(*NgDf$I(Cuj6F-)?oBURAkA;Oqg>xF6rTb!!4SYZGE|@!DK)_St+(-dEDoAT0%B z!}vd!$k;l`y97@0SXaoN1swrrf8ne~EE-GK_8=A$+ndT{|Ad?N!?BV7= zJpHXB*MbB`Q1{x_89QGS9-!~+_g7!)O`Z5$W{@S|Q&7g%A28+uE$?B8UG*2qYZ3E2 zdmHaa+q4q5%LKlK1H|Rk@ynQ)z~M-k>@VZzIu+4XcdOkOZiB7Bb|9j_>CWkel=BH( zfWX|Hi6*8BrTOOuiQK7u<9**m1<@3QY3Q#Qkbv?y_bQ$ua>?GrM4aPo;=3=pBY7f5 z9{I1cXUT_vqpDQCvxRkhc)F@NxZ6?x^lpO&FP^ITqe+3hQ!hB3cnoWmYAT~r_PdpgBBiY2dyzBZR#%MxC-d=TFP#PjzQCW1t=TOjoJ0MA^aGgDZ zB^jkxlE>Phn@`rr)8Vf8@RZ_850|k^jpEq)_y(D86G1P4A2|PyqO(+4FSSE2c3w*& z@AiYocN_x-6uRt9XF}vfYAU7-r+Qr+>A5-B-+V7Nf)zcgS~z!tQ^RL@=;O%~+-KKoh{abYNaX|T+ z@y{v~@FV^(mc;IrYM*}F0+;N>4TtnHdXcYNrYVgQC39o11OKD&xhj3ss|dzw@+LKc zZ{j56&~cfT^FORuw?a&J4lkHt0hf7xGSztMcNmGgzYZnsK9oqmpRZqr`;Dp7n4qhS zhr1LKI$@2%kc@BMJE4vENb+?rdmC5grLF`H;W~TD*%=AbrFGdI!(I`EMfaYS`n1@Y z6f*^Eo?VDQCh)w>xy(2UfeO3rIe4`>esQQJcNDk{rx)RnjN=IIkJS(&KW2vz#Hhno zCXOsWyh8r0lJh<;`A1=3Zs)k;z?K!;BKKvunh1H=`Yx0QJ`7^Oh`BGjwY^3p{R^^qQL*+pYUHPZQo_RpjKWPj^Y8~xxZDDFJkK7 zT}U9`TuHS(A~TXlaOG%onWiP%TI#o@vB@=w7QH*IgJ-;}h}pxFTB0%5)#S%zt}J-> zo+rXti>&3xv=axq~$+~lsC-?OyULTA5YEO>l4P$qSG73h0c^vlJE? z2+G$Y{C=4A)Fe%%Xb+xSwbsp7UdH$)ylrLnO_=RDu@3{Y1iDi>um8@?VmA;lU~4Ds z-M#%d=Mh`kw0-%{*DMcj?)TK5@rWZBy)1PSC$VMsn{Vv(8o6pr&i5Bwl+sGhf=;a8 zpENe50q238j+O0n**~kG*%r?6z2^aPNp$_mUw-kTAnKOHff~gua%Fg0^MvZiTzi(Y z;X7fmG;jy%5lQwwhFx%}b=?oH(nJX801T2)qmkA(m#)v!I%%AGvDG<`_;GaqNzPPL(XAdK!QEJ)4tU{>wgH6x#EW(QhUwG@Gp3PzUf02d=l0DEUQ?L0=Qy#eq zz8ZUx->OI9+9#AuVWK$UzWkK@nai$tY-~oX&_vvI;Q)Qp*7=~C+(OHR{`xh(jjYLH z;fGJJkHw|-*x>WJwz0QN`YozojG4`g^_A6gro5+LdueQ7XlO-8yDgF$k~q<3=>Iuc z3`luE6Y@GixAO?BkpfR^L*9vZo^rf%@E7FITx_0~5EYLD!B3CCpM5ZNDo;8c=spXD zWQsbK1hd98855LGQV0&|-<{6wyGu(|t5}@GS01Re%XR~UF6dY0jmO!~-IX)4tQ$e! z*Vv8eD6jz#88llTY1rz1=#}LqqQF#-2jymsc|hK&9ELQTpSskTY&q)Doq}b-9>|$~Y;Bm#0;Ee#Afvt8BEngwSA6{+8!7Ns zhJUPz1fMhOd~R^05o`@d ze;vpOK*czWHMxE5z15Yjy!^$DHbhFHgKjzgmgTn{dzQ@mnHC{ONn5(=zv8}BrJm$% z_-yHF-hUq87E{z^>t&Z=6`xu@L=4C=>5Wr%_Zaw{*^=w$oj6vldV9uC*)`=84YN6J zBI;l%iON$dP)5xR{UA@&C6pRpdxA|p{K)}r+m9tv|Co4lw5#RtzDwt3=7n#!N;(@T zN7DW4;gGboF|6hRdY5%RB+zo3Nt5=EhOXd7-m&IFaP7_#{-5C!&#_i#C^gKp!a^oP zbg5!9BXi)eVg;tmSSvvdl42_}PwFt}=p96)e}@9$VO-sJg!Tnd9!*3aTn(xa7EH`7 z+9EUjUiYhON_Cojluj9HtT%GVkXN{R;EF@HD`YG+#$kSwCzki__IOf3^j^-J0((3L z@^t=iP*bmAbbUs}u~lLDQgo>FLyDp-f6?X5b~vAX`lV34mcWTKphWd%z;6?yR=||M z_JNe7CFgGFaoEt>C;2Jrj8(U;tx&S0MBkxPL39B}>g?u2Yed`mia>SxDRf?cO0&m-^Q8hkwlIJAV+oaEBGGVl;O zM+MEu&KEH;2bxRB3VIUD-eJeNoi+1iu1sc}HQTs|%cR}S51`##9Hj8>rR(ManGgL) z=(XvC{c*A+;o+aIkL?qw5AUTl><5B>pI7vdZxmhJaXEhy+(*)t+uKfdmCYy5w46GyBNmWOe~(9@h)TLT!CLlFg-~f+i&9imaqe*8f01&>a{$n2g-+Sf%>-4bsME+DRF5|KSgdSl8u zytfCuwN$q|GRMh3BSoV1r(eCM(iL&8ag6F5Yk!gA5VlhldjIz9(8NUlTGiix0G8}=s;*2PRu0p{Aq7$@$5=9ocgZo)7M|r zWXMkU&FrTmWr#zTo$w=$44p9B#+lBY-;qIA`={8)j2f2<-p3={?fC zxXwl4qq)m^-5Ym7YQv1r84lv7-4I6jz^rp-CrfScQsk%G5%=^M6~clAK$s+=VI~ZWbkr^;Q)1n z@woQI#^(m?$Q~hq9zU#H>5#(%6EN8U_IA5e8=CQWgz+=5Kw^( zX5fnzFGKMjg#`{vK%>dZ9f~aqp??$wo+aj|v=@h&efjHsX7-oK%1&H^G9a8n{3Eu; zezKXYSSQTh+pTitn}lt%jMGU z`7InexX}966t%gQUqr|W;Oh;02X$2wOvZwCnoc>o>x+h07X!a9rzL3$Quhzr4AE2g zGZPde8T9fOXqk^Mtf0A->dim*1w`J zH(zq+;=LvhIYf=NwQOR&3bM(^;#I{BFYB>8XZhy{3nX_JS;m2R|1Ea>2QlzZmT~?l zDIs44j5qz6!&b?%(ve~OP3X)vx=a4b9tFlqtd*|hTgwXJ{459YWgOVEnUX^R_w)c7 z2YyTbhY(lt$-+s=s&|VwFnWBE@n(jo$HeETu&u>eS9);mjxOjYj>9VVlr07$-q|DGY|NVIYrL&~Pl8QhKdZ@(w;fviVi~qRr7aTbn-V z+Y*`Ps7gBhKZ*!qwC|yim>w14)-J!t-XaO}i!^rm-IkcUydM>eeA^;OEIxcO?i&M~ z87(rWGE)?Oi9x6_D^N}|J=wJzWxL8Q2s?bvO^I&1&pyw~qK%55>O9MzxX4f7AGdXl zbd1*DU^=|D6tZbn&@bu>e%|H)7_em3SxRTpBiIxBbvfhJjBmK=+(+9fM2hMsc^%ph zs91u%T=AXn-!$M*V{DC`9qAf*?LKz`~Bue~nE-a_t9vdvTa2p(sN zm7SN>Ufv2cj9zQgx!_d&nj(lFwy*Or9`-aiG^~yjtWJrgMcD0PvrfkEIPmFwu{>J1dju?(-;+j{=l%~ zKa!3X4KwGM@gu}XFy5#&lFWv$?rvUojhK|x)qBwEa^IIlJ%>F3@)e^|7Nn7}{uLwG zd=ARCYq{z8vcw0Ku4P!j+GOr-o!#QthU6kYAP%p5FOrW@F~qUEe@`{65q99~>9H3q zfK>+*qpKIR<4?&gn#cRsJw2{3KL}iw@;vd0o@k!iTQcl(m#GSD%N*PtT5K&f$Jovk zwLS3ACX}azVs~n$7H5`suY$EFnTM57*Q&D7UF@|S{Flw6-2~~l_^Uii<~t}8S^D?G z58hati4Iz;PWEggNQ}xSG?!^jPqDpf62PuuR8G(s&oU>g9-I(dQnVRv)2PIPV zLz>q`+b1dSqUCs}9epw+Hv&rS4twb*x;307)5;cTh-(dh^;=Dn=;aq;`u3Lc%NQ!$ z1mu)&PXWvuf*1WAZjzdjm*M-lDShof3a(cBB?g$<55VOy_VcvD)tV>u)$8%Q&$Xy2 zcT=VNKrq|Ino;vSsw}JgAidlo>xJ%DiIroXiv1wN`HVXToWYztx5qXj^_0SoGVdcr zV$Bf#UU92Te*#O2mHYpF>I2K*E;&)ME|H)ejLNoIxf&aLDr;F3z5}p)JFVYfmiW$c znC=+qU*FIhG}jY7W}349J&k<=*?+hlOK;x67=bdmr3&(Cq>e^MqS-a`j?_koZp-^L zBx_<1cK9Q*()5F56}PBWV%4Sj&A>Hih29;S8Yv2!3L4(4$Wqt|=!%leT*fKp_j%LC zM}lHJ}+Nkb(Y|VbM+@V>??KOzuTo!Z6&#;1B({)n;5ZW;RWk;;Oy(2wkT6}Xpw7T z6()Zm2BkYF6dT4lEGWzlo^D0yACCQ4Z(1*bV`yr6^R(DJBPjxyEtAUoEfo5tCKN>` zqC?9RIi8(S7VS=tp62B#Z%*Vzp$4h)kptzIn8K^|Wma`Pf~C$JMWP^9q^BG-!@86* z*RbDlix+qWTUR}Nc=1vX7F1obWfn#bUefwIcCaDQEB6BZgGpl|mRg?qU)<$sL+6i+ z4YbUkopWhuC2x#d3re^=+^U%x^ku&`+my*3mUvq07@cky6E_kM&2cc}hM-qo&zpvl zA;p4b@=Bjj@e4(dxeEJZ>N4r$+eFw*c8){UH1h!mJKZ|5l914Wpx?E9?dN8`I34Rt zy9^pFMVA>j{w4?FN=9GOa+?o3egE5MAw+asM$nT4@hmCJlC&@LS%Te)AJIBxc}i&= z^Q}((Q4nEhw^_Mfnt&w@b6ZIFKp2e|dTU-zcyLGyrg`>x1`S$ir|R{nD#)EEEI3+4 z+)Sv9s%^9*y)7Tc4r8s~Y%Q9Y=fn!jVahcCK&PQ8yhMe!u2kqH7m;)qFtBDu2QrT zn9prI{{H+x)ZCcEKlq`@=c5KCW%j+t*PM+b>jwiKo4b4IiLAw`KN(elI1w z4QdOQz+zr5Mcf2C35k(z68zVfI&wr{np~q?=1?#sCE>gVykPr&`UF$eODu~JFIK?# zhn|BEz}E@9KVwfn%oFNg`{CziV4l{l#fQ*`J5M}Ug6r3v zG!y<;aoKaU{qIen0)q|-&~I=j3ZPQ*ueJY8lGro*#P;GMF^G-2|FxpCW5ALB;4&ZK zeCu%+Nfb{W(iLqRxNxslrt(l*`Egt7;$tXKoRUcpaQre+ys5cRur@UTq$L18OUbr} zMaLz+DbKB%r?uzH4|UMw#N-S6Ekh?LUeD@=sOa~P!?vjW2mv5)nvct`x2%b5na-~O zXgZRskO*I49LcG(zI#(U&vet#4mJl2BWv(`iDe{*N!dYT=8Z8KAO7zWN6he?QizBwaTNqLPfkolO{7k}pn z9Ety7SU6(XZLRRB(W0c&jqS?6S4q0C8c9y&gZc9}5;U^@u}e3Ji|dnrPitg3@>QP7Ic$!pz_Z<=>t2Ve18C@3`eo^InLsu@{SQVr{+*RGo*OwlldnEu zrnA$ySRjqN`<9EN;(MWcwrQ`t5@uf{#kNvejx;^QY@2^pQjKfE_^1>oK4D1e%mTXE zGCn)(B;s(M3MD)|#*St}T~>{aFE4KXMB=p|T$@YuyJTLH3$gwi@gA2)#FP>t2$7sjVc9(J9b67ak73s^dlGJ` z3V!sbI4z5F0!Yl+F(dX9;`dKP2~d)lBG_T@h6k++TlB4v4psC5-}G%;43Y-(}PyaVgG&_c95g|i}=HkVic z85k|@+C~;}^quk-gFhXAc@}W@%glsHL!i3q5#jyG+o_>if_!&CaMpIGmNJ$XwDa}s-}4&>+c;^qbRXlC;Zbir z*510{$jUZ@7tn;k9DhF==IHu1>cp4%387E#fw8=SH3*YSc+SYYyB1jd7)D>jad?Ad75VEy?=Z($Ty}DB?F^`V=?ApkBOF8p z|7UAfE(WcN`PkVA@2e4P%_){h?7D4c!m2-Y>=nu~parj*cx z?5?g7om}qZ^0T~^gc!A3fR^k8R8|40S-gG<;-Q+jomTiO(tINF3Px{%;=lP{Lf zx7xHeJv(i%8hY7#w#2CucOrt|zUbzN{SBcHe0Sd=S+fCgWYOIw*k?Q79(1PnNU%Df zy~MsH5@`_owX7N%bvX60i3SHi5O0aLowLlVripd>?tdN$)=+yLl`1|TtKSCGAsqjf zzktI)Y@}BSyBx9o>&|3m%~|gt(>mTyQa(R?wxe~Y3%gp?b#Sb)vcn8I9%|)*~qM710D2jgFB|s&kh6E!GKkyD5gSC2Lik<5d&L$YcnKA$4+D)HB^a`SD zp95w?2p^7ZGQ-6*YpicQ4p`6|WoUlOcXT!S?5TlIrq2X&BHe>Z^J-exTCb9qh4`hO z$+&9YtHy0NP6>NsdQce0`BVXXU_%qSvM!PLGU+jK@D5 z0&7nT%B@RAr8!NvpX!0K=GIagL1rCLt&ADoJiTTfzmuJ#W6h-Mt`9kH&P@ug?KV8? zlMqLG*U&wL%6@D!=@{(R9w7H)B^l}hVx^=ymt9Z;Eu34(*8)x(mY|eJhlHQR(tQ|JmaU4v7KoI;frIQpGn-sW?5TiVfPL9=f+Pl zM8Tz4nf+^UK-4AhU@CV;T=6vWJX9N3!4b}ig>}6<8KmL%z$FQEOs}+5#NKUE!k_!w z7U83kd@`96u&PI?-asiI{9~~XUtSSOb7$US{rA*wGD|-?yp>?vBE>V+XU4(inpLgdh^7k=wocSHJsIKK`wo4VVZpXW!wPUVX z=o0hTKSz2PNPWti{*Qt=sM`B%?6jz{tjABqQZRoaU1QYYg;~U;Nyk05p28C0ehbw> z5%r=ofM~lW4`9CG1q7TMsLem(+*y!euJl{#gCCsU(tDzZS%=KpEzX8B+pdxs;98Zd z?K+}ZMCog!m~23>87HCwN@AKI$p_j0wb`=ld%-)k-172Z<;!@>c=E(cuGDI?ZoiZ? z_l-21W^6wr#~0e{GOGf^)+Dg58YS_&mW&ZT0;T9&veJcC><#R}Z`4CqU5~jM+zgD6 z>clD8@a=~FUDZ&;a!!~cx9F%!c@WSjb`|*uD7%gid&^3Fk$3Qw()u$+9!47|L>0O+ zer1THIc`1NvFpZBeqng_{KaxOZ$<~hu5Q_e1`F4O$21{yOcEx~>$@KYo7LQUHONq-!a_qNLiyV8x6qXOlPQGbLVwmb3EwvSrSX7V?N?s0|Gcs(6`1CD2Q;x!Py^2%uEX*OAZfi+e2R5uwU%<^iOCD7rCuaWpkW7s z8Td00Ji97SSDT+N1l>HWQD)Hkl z=b?ZPC2Vibee;~#SE}M@Ygk5?`{fOJ=5Ng1OdQGI*FR)`?K4}Q=i-`nr~sLDJSilG zTu2j@wzgl6-$Qm9%>5YiEu5DLdo0EC2$}L|V=;D0F7I9breQ!%--0TnbXk(lr{&>* z4L>!9@S~a8ng8ZOAz-0k%X90RF(Ry58P4U81{-ttut%@(ffNCi4+|X>1?mvpX;w8z0`_^0pQ(i9|d%buHFb(MCN%Xnk zgAanMo(DsAK^KBO-z~N>?B@dv{xC_V-5H4Vig?*0EnkOg%rSe{eSpK87?>X%9l7SI zdC=p)9G&Wn>7GR0HMnwC%af1)Cl*=Y#xdO>BVs(j ze^+ z1$DMgf3G@PG+)`jhc`YwrdxPcYD;UZ&dfOoq(H>|Dq_RR_*+L@qx@YKl5v*WiM_xUMGZ0@S;Uj;`Btw&kuxl zueF^$>hOIbEN{EN-_PJGj18T;v4H{=$iDK4c^Y&-+jLz$ESTf#DaZ9mb*Y!O?k!&i zjVG!f#`Bcjceyh$rczDr7u@`df`n3Eu%V)#{6_H+|)Y*?*IE^ zGp_xyW`A?<1|P6pg$Jj{+iS#0XnQw?CUn#pcEAo*JC&-P8+^a*%qQ!%^!ll6EYr9B z0g~ET)V$|CahxzhpT@`u-u9flLqY7sM^?X66Hz*eA=-t%mgK9KyO2t;a7%I;y`?V6dqGC$n%D|CH?n zCM@|wvBD;^|M2hOxeYSS%mtX-wN$B^77aCOZEPy9vQtW3wy&$_RnE8lnK1SK-M;nc z<(O9UaMpT}H6+Chl;ufsA~2KDHt61ykTbDef#|+tTeAU+w{0f8g&RESWpzgGN)Py- zD!LVEVo$@#cS(kX=s$3-5eZpc3xmuzQl0F-6fZhYReLx0EhoIRb5JNvNp}%r(693q zoy#QhRdTmAb0snH0P`HcPMI3u~c>BT1@c=r{cVTU=w zC6l*Ren4F;V2wyck`15_U%Vo{%mJ|Cjv2~z)zl1lI*nWT)q_3NA*J$dsH%#trTcw= zk$dtR`=&9Bh?sRy$j{h1Z6 zqQT%7%d+o@5(@Guseok3eP=*mkxW#p$@&Gs71?M7`6GC)HTJCM3 zsbV}rrNA_IN6Io^j5}UQQdo8SCinWf+gkf~dM<}=jYWDAeT%laY(=h^#5E<%P71-I zgZx0r@n@-)%F|G;3b|_g@7$B-u>92cPRn{4AGNkHrn5)$RV@tc*n#F|rL@Yf^FD}lEB<}OQ-?8lJ!>4jNBRN)j*P)N4yl=sVY?3Fw?lT9T zZXw)>Hb-H7m3{hc8%!t04f6Q@jrl+BcN@p{IL2PoIOQ8wr*tb~aHo2>XPIq%O&?93~kUSV{PE`|G~lf1xyw(H`Vq~mjnA=6yD zcm)Gr7OOF7dX%_&A=)N4<;>$-IV*(Lrh3^|rfJ0>DSJ6rC* zKBT4e-jM`S>R_Viy2 z0SC@!y-dO@IZ|q^qm5FY+GW{vT-25u@xYn@Sis6onl#xm6v^fOC6ucGT$5Kzef4POA$vVrSEM?zOTX9D90h!W8pnH_t>^uzUpxf>WV7>8S_vca-Ar=}1#!6hqt2h@enn#@NtTZz$n#-T^8T{+D|9dLZl(*+a(XP}3x8NC!;R&g= zE1m%-Mn9p@NPoS*RZ@n3J!kWbv%wt&+z?#G#8XEv+N7Yh6k3Sl_8_u{Mf_;+ch9=#EY!5Qkzuhcy`qvo&*x5npo=hHHlNk}wl%!I!~}DTfJEh3B+VN0=A#-Q6??-qWEOZ& z>opZ|wiw`zz2Q4@+v^1Vr?X`#=ce&fRaioH6^5(bTfL=(jD9A+{nSk?(h5l z{Qml#!#Tts9L^bgzpmGHJ+H^Z*atvXQmrWpR7X+sy9o<}!DWshB zK`>t>L@i`zPrs2JT->(I0MZ(S76*^akGjN zNr!rW!1Tk4kL4in7QQT&WM_45&6SI{I6VSuKlGl_7pzH;RY~|d5q(_hJ5p5*(ZjCFEi{Sn4dkq_|mu`jW&EB4syZE+yG0l)quu*ZBB2 z>l)(Z^t`OiOwVe{bd{F+O!fu>)~MY^3e7Z687=}j!3xV_zwTq6j!<e~q?6P_a`AWcC1V$EL7PuQN2`V$lnDOn!UB-1u#7yCW%!j+NzwYW?!IJpJQf|hZ zdVAbDxm%BVolb5@8fky*aD8Sxb4Y7_b7BdmupJ7l+~xt~l@x#w%SdpE@&Bjl1-d{t z#6E=_^5ub<8f7Bp^C@QBft!J3DSOJ(9^K0qf~&QYZB!1I^sfxe9X@Mfl>I#_Ftwaa zhZgBrTwP#`sghFclQvH>Gt55mwTaMN40awE>@-b{i^KXS8)utE8^bxBboFE%a@_M#?QSXB5h%N--4l%K!t6(PQRCwy;AMb3`J$T)OvJ$Yp zF@NUkF7l5ZEAnd4b7&m!q3p;mv5JmSia|;lygTW2GsAk@I{gqZwwN}Ksb&w&f#0hl z8{yDg)m36T%QkZ}1I_l&fAB@cdgkT1u9kSMaK*?|5>MjQnwg2mGT5rf&eq|u($Z8n zHpn7?VK0vh1B*}reZpJD%WJ8bVUpkM8_Y|;PpcGUs+IN(#<#~~=P=hA%afj~`w5n? zzU~}bv!8T&Wt@FqZM)tE;rJI+6W0piqD?eknLyBI==2Pa=p}<{x}JhmON~W#|Ikrb zY{ooXM5F$Yd4;rD?`zGNgT5~O_wr_7D&Lfm0yh^8$+kiABP(JB8{VNyPx+Cbv0MV_ z{BM(mTK8s*nq%4J*2VRwf}qG0pA893JY&n?q*Qwik`ZxXdd8Xdz~td+O{9>)o!IBE zlf^^m=wlU6C;Hwf_5Cy$i7i3U@9@&&*i}B=(SLyL>`EBZd^3Uix;M}Sq|D(j$x)Yc zNje=9C47f?iLPAl5~(Ttn^sqUI-gFMv^QFAX%1y{%EP2DhEpwTzj~#v)9K=H!~V9< zf##7RS%H4b11DAlWTEv)9ASqV<|U1OxKS;eAuBr7!;2ZAw|BTM)S}UCMtR8wJ~juS zX=nj8tyAgOYy3U;tX=I&lcf9A2{n5M4OCqSJ^c1rC5@ZvRs~Q*X@Xe7Zp8fU26K0m zNu!p4j+v4-J@L!cnTpV8+X`b@^%#@<(Um+YaD4;>%31gg@3~Do;5-iGZ5kx=2TeLudgxv2oYW2MlAf6hnKSQ0~GM+q`ML zsZ#tCEy3Sv!DUdD^ks@kE(p30DNwya(hhh&Z~4vaoyY7-pwRRd`MSZ7pEVfwqp=d! z1HR%bz&|_DLn%N_Dec%j5<G8kYmo(S@ zab91=N6)l5Vx_iN?#*=B0{j+vj3l<`5$g&Tgg+pukAE$4+W#zpmO$~**7>;fpXA*h zGbmD)H(uPDFv5|e!XI!Au*2ZG@*=&yfZj_@e-b*0rCpyOI^u(4@;+jm#a>eHlzcP} zc4u`Q*#Z4pX^~(E-pd|uo{_=_$}@-GH$S#Swm{-*Yg(gM#R^2HZ2f>%tkks5A$72U z%0!aIO>~q15q{iiY-NUbm%~lA@uYlBCZh*C_1SnN7iVs4nsc+m*w(j!KLp;) zDK)wcbuWVSq}5F+Ckris;a-_&tWt-lqPDyDo-XPdJb>IpK$7p9(9&>j7ux(!>BB4Q zmTik*oPV|+@H@7~iPB$bs8e%Ul$8|hSV=Ou!78WkUq;b`;+7>@T2$Qw%#G4h8ZJ3X zHRSajOHBMpjo97v{yRN{*`XC1ZZB_XqhX z^d>GF`zx){7nIB`OTH{hx|q!$&>#q;XMl3<3Kn{?wUz zf{puBylLXS=FVuhFkbzDLwNMXxddRTSigksBFf+dnAm3oy*M8WnA&19*3P}9!&cFG z+o+J=$*%-MHNI&ERWS0Lb-&*VW^D2q%N{t%uA2()6xE4$-rQ4NIVqKM;>SWOzUg0G z(|F0aq1Ndo-%XOx*Od%*YT`0`@po}-(f@;S#Scl)PET{pj+&ERYHFG9W=|rfgu%m- zXdlww6<28EG;vSn%bZ2JD%_5Xc4x~a)mMt6XF7Oj9p}U7Xs(^ZN(ibvas)Kj5ug60 z^Y92=S?vIGk(&ygr*GNv!(MRRZiT?y{+v!=->?im(CwYB;a@#KUl=ClMY4L5qgn5p zZOz96U=@K8q}^cjzjVya5{NFa5=pZY#BAl9^03>VRn|(R=SQd_VRizYVq1il5v?c^ zYeEX(;s4+o({7UlE`;?uiF&07IJqJ0_6bKWM2#5Ig`-U3V3<5C)M9>fNRR*t_Fsy_ zvXSb774g!EIEggPLo*%%NeObEAnglnx~4Z+QB{g)B63Y8DQ zva;>sat9l5BZ>)`=Sk%m2F&lQ94O-EysuZ=6!FGii?6F?lCLM9TGZcZ7&71_MD0eQ zJ=s;5Yay~R3!>Q&GU$6Zvei$DpU~CJRK0&~YiLC@;%8r|@XU{5SgvqnXmA|nR0S_O z)a&&nsys0pSxa5P45Qs0@6+9Rb}8K_E*D;(AGbx#rcYU}WsB`&SAl2QE6Q*svf|x{%{GmG z5XpmC{0RuCu~^U*;ZV2-i6LMsi}US|^HPej+ci9cVp8)!=wCnK_G*eKJQrGEaId{f$_$_bc1z6WF(&P zGyIP42pMW!SKn*$LPqJUheKPrA&6Z>KIk@PvPeqTm8y zDA{H)s^_q%iEJMA$#a&Ba*}h*zN2JI>uM6Odc~(_u~!lF4sx3$gW@vi$u$$r4!j>U z9CMPrH$5LQhAcDdKtN|0~fR zA*_O`TiPFQc5n8GiGetBU~KXZq!?jRZ7++VN6GiAf4V$5by|A2a09cL%734nM{FJh z?o=J9s6exi2SsGlASVw2nZ~aeQS8c#>-MkgGhJ#feKF}UFxl)^SJUT-QuXOA7as_a z)coj|N8d9&WbGbbUA+@5K$Q9i8Nz?9iU``iKy=ZXfP)+rt4F}MOH)IAK`r|&J?6&D z8dM6(;&`nGCX#QQ*RT6Fm*!IQoy_l}k-~y6wEL}y)#niE7iG{#6v{NAmu$#$6y2IF z^WtgpTU!6LDH!EZTnW#M(%Yc^Z4!pnVk999qEZ zx{en?2OC=kI1TqFZ;@1iwsmep~6m5HoAka9GE=PZ*Td=GX1%^))TW|w|oZgH5S`=eCq0*dYxcEH9ys7Ap0kHHuG$rjE)ut zP{q0>i?@-s3)50ZU;lb6;2<4nhC#x=bd0lYraL2MN%~2ghFV&do_x|}G*Z`<(mtL( z&mrx1={B2%C#X9em1Hrw4&~bWIyViav~qWP$0W=O%1DGG1|TW2@DxK%p>S+`o!mHT zSH_0yUWt7+>+|s+I?eC^MT=z}dg32vBQ4S#_S>->!E4`bAY{sL;GhiF3 zGdBOyg<9*QRIgJk5r0v1Ml{xi&(x>IZ(mF;i1oky^R%sJ>h@(Wy3FjKXf-?ONx`-1 ziLVEo1FX1a!IYyg#jfo5p*+kX8I*&p@aS-fi-lg5P}Oq6^Qd`K{@j;eLAjeTv?tmt zwYIj>hfZ+HAANVftJo+LpENy7v%jhl+Q+lji`Fs==SDW-tj1N{O5nGNH>R;@XDk>8l`} zZ_PvQq<^d*)BP6GxA{hOxum}-QfrpXoF`|KM~K^QAmW2OxMp3N@08UH|MRKak=f!z z68`%Ezijv16xIl(ee!(ssz!{S%hVC1Sd|N(zAM{S%=S#%*RFDA7;Lt=2JaMnY^a;9 zM31sKsiQul;c!5Jq1^#=S;Ew@u3Gla| zYlka~LM}D+4=Ex7?$C=vZmDhl?cM7kukCNMob1L??R#roxWw6+`NxZWgA=xb7z%)s zDz&1F+0uz$E@VahQ+dN9VuV0p`0S)dKHAhujkSaem1IELlqs+vN2^)|@n0uBZH00n z?HSpsuwkm!rA`t&=WT}97n4<2o$kq2jUK(mR>5ATaz-~-CA>YW3G<>#;K5ht6Rna- zPLTSQ-H({XB4~|S*y1gxg-VTT5`o8kNeg3U=<;&aJXgrUBm;)J2$Ny~JH5_ol8jw# zgAfgYTM(v8&5-djEQoLqtvVr5bH>g3B>R_+C{b-KV8_dBHb!G+D_|0H1+MUixYuQy zudboIv2cQV3THh_h6fO!w-|YV(XDJV>0!Zp`-m5f0e7QR322D+JeQ;xmw|DoZubc) zVb$jDa)7SVYnVSH_bsTCU=BcBJf*Z?7%DR^Xg@117N`lkd?!}1O@xzh4U!Rjk3}L^ z1H1uY>G#=kw=*B8oK4%=@#PSmw#g90 z*;1d(PVnFXS}#MyFeWQNzQ`CY)}8vpuIjBlC=4*dbN}b30zRNE|1ZrdvI#WAqhDOe zr~7enTKW+eLYNpEhffo5%YPbi;n*mTAp&^f>m{+|aYy!zCpirz;RC`Oa54TZ!`c&` zR~HlCCpaFv0Z;Lo{Zg(c#x-VYZ;kUl>!fJToUXkBP#MRMW*)%i#k*Yz7i(Nux_n-C ztDNw$4jWAPq>_a4X58+{tc&0Hm#%(4H^LKKAbKFS`_ec<&UO4>y79c9;U%K-#y`d6 zOXK!}2Lv9IbwTYhAVXq!+*@%uKL2g0qM6AV_@80*ia<%vH3kN0l=E^pvtl4~Hrre6 z<2}q;u!)TzI?cAgmL!$gBx!PaenavIfd~SnE!=8mC-)w`CXaz)Ri*sz<^5Vq9W{En zSxr>+(%$&z1H+JC3+*nG1)#}Z^k(4cd1;%fGS3(c1<8TbJ zi+zL;pMck1p70uY!n)AV0>;;uUwGv3W}y6Ak1@`;Z#5d==B!57_K0O0tI=E!qfn{A z*Aa0NFBkebPaWIin9hnh>Z3etW6~!s@pE+S&--ZcC%Fr^X`t#ZPmNk{)I;7ks!s1l z9e#c7?w;M0fuIb&z=}y1=^<%?ZBQ^Z?(u>nES@p!Jd!Xy;#_39{ z4bbm35AhyBuS_LF@>oDVR=Yrp$076H)(2xXk0C<`rdBRHIAI zr5)%&>OLQTPeY#cSdsW4F_iwC&hh* zxb9A~Se$(WLtquHm~u>qu4X$8B>PW|^1GOPtd#)VV7gpB6-0FPB(u9q z?>QdqhRiahcr~l*aCE@lju)}*)a5Kl=^US+#9;gQg$}7m<$_VF13qnAZwK0>wms4V zT+q(j!q9iMdf+2&&AUd2Q?Gv4Di2Ea=65Bslt(k`=p8AjN)UruzmN^}xv83@ufJ;; z%crNW^!ED!rvj_*1p&b?O1oC&9i|0l@$q1>Py5KN!r@$P)xC(0qh~u(5Ig@`vb0p! z!p%XI>FELHy{=QW@+UdCH+0c5_V0tDW2O6j2RKuGm1Zp5;Wam4QAu{NNX{FsV2RYJ zX6$?DbgK(eP{lm5n(G?^c2M*&J^LMEKb53wroS<1(#`fO!i0!jOzH55p6*>k-Du>? zcQNx)Ur}octNWUy?5?;bYt8C;SjJqXI9G~YKAB)z{w^ft7FYZut!n8sqYF)8pp7E< zh8K*-5SL-GJobif($`DheHcw=7#mV;0A1NvcE=99rar-m+uW1;86E0Ar!O-q?l*WH z_DOy+l|5o-N01G09N5@4W{u3!B0Ft=ztm%k8x!Cdh@X<%J<0fbR!Ec7$6Z*QQZ*5M zWVg4J=p{ZBnh|sRByzRdr4CO55U5rQQg%c|PpRuTS*JI~o@FLbOIJ#6IpPg8>;Q8M z{=~<_QH5^r(z7<%#&Z4-k2ZogV{Iv3tAsy(+pQE4jOFLF z_0}i%$Y@7a7D6*o`x@GV$@5SmV?N-SVaGy=yPs4q1yP>9Mcq2Iw!QjlSgu57o@x1B z8%FupBQB*k?w5k~n2RkE`5X+Ik|P%Dn%Q%tjmvzA%xzC@Dm`4<*$w8QGON;?je##C zTNN9x13~2L0$qmWUHqlS8`BSC01uAl*-wZ&053OKfW;m;WyQZpPJU3Q^Oi&L z+&M-5u=>?9d4d)})_Hc&qZI^{3tbYpOtW6r3=PcoN#K#@P%{W9&H~A3TvybO=C8P< z(H##z)+nRe_{ZE9ZM}6f(d_GSHcevlZ4L+dPy47WpUL|V@i(5Xq=>V3yZTonZq|_X z@%<|8rlu8BSOgqZJrncw&h0POi~?S~Oxvl44&h-UKv(6?H?t%gm(7&`5Ed1_P(|Oy z7*kI5B;UcSJvkA0NgEYt>=^n(FOu&m7@ZFiR@)3^3iERoOBpBJNgn0rThy%Fn!)CvTn zUFu54bFh5S4c7pNVe7$PtwRHfKz&~uSb+|o_nj{V7aeM5Iw^y;f!x@|a`Nv?!4Y)n zo4-QooPO60hhI8NJML&_hq(ssDTmHCS^(;Sd+2Q^HI))n!SU!mKMP4g{D>_p$-bE* zCyN5C#Mn6g{g;jdxtOzX0pk)EKK(95F7z3REn8vwAgvs)6vt!1#j&8u3n~e|%<<{> zWPZM>RXG*(le} zYqFYz`c4r!r~QJ{-c|TRyulY?z{P!Dk*to}Wu_|D)g)*I%W(F+D`uP$d^u)upEY>+ zidx{r+_GY-yypYYwc?34fO5+v;Z1-(6aK!P?Pz+=2+~O*`}wxOP*(jt<2!r8(UtW#^HA$qze!5se49gF@gsn)ANoa&D=yWGE96zAx3EQyI&~6Kraww zbcjaCxgO3^BdhNl54p{*XOGcZOn%iWcqiQ!bZT`+rRu5w$R6B@Vjgu z_#wdiWo#B%^O<&Guf6|}pbA&L5m@}*&ror0B6VMS>J5m62ea9Y@@S)arF*X2*ZWwx zb%bykDcjra0!>n|z|6vQUg7MEpPEG*PIDKoc9WzadX7S@ZK;huoatpa+<)2ktLa+v z$i?YkG`hDQ5`-IMmT|w+608%6yNb=#1o;o^Y*j71ff8%BZvt;y9^zTKIgpw~(&j~f zB8KwG?&^uB%p{rB4HpX-O(2&?89ra8nm+OY&e$hfpD5jvbgGe6GdrT}#zB~%vPN}r z7u#?X(OcVjZ*QsqaK*K~u&A@F{b!G;MKFAA0t;B3!Sb-G>AgdNLAico)nJ+wjl^~9$$wt0g_ zg9p}X`qAx1{fY$6y?LItGwAhTi|u*u&9%7nMqPsbG{6SY#2<~g;?mmZ=|f&!YII1J z$ShZ&R>I$bzHHja6~5s*vxLh5y&SUmnb6-w4E=B3kt(>4jTwM6a)W+8WZc@O2*WNc z+Qgip7K3liLVMEO{j~nd?FACzz6M9&b%XC+KNsF&RLS0SihA#5#^sp)I?~T8;n;M@ zLLDBbmxB9MqojG0o%F{@|xhUdx+@qA}0VP-CO?@FdHfC+nfV> z5}swNbpA!7;_)W6D2gQ{28v)z)+spnF2!tHp11X@Ze5MnzO>l89PUhX>?nGMaYW9n zwj_^Rd_+m6;EkVK%>7<`7SDL-v7>l+z8n_mH}Sg*YqL7`+S6ohkfI;%TshIHeOkJX zl-Uc+l%l}MkfXV?6zYA+nniTn=?a=ib9g4Ps`Evt@^d(opr{gGC_|%J+V_#Z-(D** z0If3%hKyd!6z(eI>|?zXW#*wP2pCP!Ur(_3ZNq(&SeJ(0yj1g2g=YgD6$zPoffGIR zhmwOk`V1mQKlQvq%C%npv=ev=UZtaZpv9-Q=8`J>o%i{Jy4k{Rr#=99UI~_^EfB51 zS0|Q}=Oo;lM;rrO&R2-1z1w@%ZRJxVkm>BXe_EomH-`|$dQF6LmWmXqni@qenSe!V z@@D;L*U4A{<7KMM7?|6FJYz5>QT3%L;NFk-7az@3XYD-}yb-Ve+{Cs_iuJ^)J$bc* zxDa|hobh#^ zk5bh-r_RssS+70GLHVXLeBZSBWuOu8P6^AjGiUzJahd<#YOSO^?vrT`s_Mw6F`k@N zGUgsEMKPg`a)5p-guE8Z+RT)#8<)z7SDABm`>S48Zs)}I=mPz<_r7RHPz-ZKZbFY7ytd#o<>wgj50d$t9@OV-J|6rfE5xrQf4ETZXW$u4-Q=_Eg(Mfbq1 z^wv^CGB2|VKVzxOk~FNbfe+-wsc5q4_WjJI4K9R-TpoKV{^pKZZ)&6cLKDZ3(3vE* z(@c_&81eJOQ!LatZYYZo*dFXO7VQ3zMt7hX*T- zJ?m$$wYK79W4z%bGC2Fav3|jf2~_Gvun59#c=*u0wl*9p4t4kjnnn=L$e~b!mS2)wOSDEsvqS!neoV% zj0slgYyv~KwgWrNtMl`9CgZ2(VjJ|~KEq8^6qo*`&nu}zMbNSn;Yhe_H2(Ro>ldUD zX&9+}Wb2kcsCt6RQq*OkRDbpZd>IxF~-{c+YX{2oN$-X;Lna&&4Zpi zF+6}>!lZ#+Lf}u@B&~|%Lw?#QI~S*&aV;QQWgxB#Q|K0^87hRlNyO?_H!EnnHR>L{ zZoeUVQZ)34?q)AJQYL*RmYpBV#HaEv-S-u89B$=xx~=2)9l~d`v9#D z@JB{BUmO$}n7vv+zczd{|ZO)4k9aN2jXI~i}Lmu^=Q{p;m5 z^sB^f6&(vKkGuj^4xn;0;iD`?Y2akei_e44OsY_HduR1+mhyTPSg}S!&4` zU(ME(7v=d{CVwMYp0t3|0WRj@eeN}5l6LX1v55N@KjL3NYA0U>a+B7J-!Lh=gNIR$ z_5Y1|H@&{mxCS<#a)lKgKDRzLTk>eAF2mSF#Lo7Ke+Pe2gIRO0Jo8F%wyBnL&?GhQYFzf#O374dL=K$ktbis> zy*S!`+&;*);FQ*N@1wHf~_rTi^hO+aM3@x%PjphtLKre zW)PQtkLSv|HF0;|%WUtL$kp0?Ax(uW1*`iF%J(hRS?m9y7F}P2o_j4u(F|*_=1qh8 z{XwwO`azsXCn!@l0sZN?Cgkd@j#n^zsrz9doxbW3%_NiK!Y8cWuKSji0k%=4rBmo)R`ffYYREr`i->-93}Yjk6Ap8AUF%mU^BJ0sixK1(hcTLOCR|7!ZX2#-&m$eP zkiuVgaITwmj(X3}HEaGR)3@m2zUyxHAE*C~7L555r}pLDgP`zp6aCLSUQrx<2^h$Hi9c z<44yA5Nkg!0C7vZfdEk@1Z~lk%Q-l@`7DwCB@bV7xiVvurFDx;U2uIQz5<@kp9<==x7T+5adY!6Il zMMvFDH5GscAftMI%h%v&PhWG3Q)uu;r{?WI zvzQ2cbTHV%IkCaFjH2Om5RALgm89gb?_1U2zf!-4S@8v30_q)R+UWEFv=Y6|h<{o* zy^+8rAub`QAkvDLjlF9y;sIT?Rzg@B0c40q<5HCVrX5~!H+iBwf-h1!Z+sObxSed84nNF_pZC|>7huA)3q+vAK91e<5q6y3A4m@ zXg3Aa>FI6P)U7>K{*{75F{&&7Hp@_urkSkRmT70MzTsh5EmsWI$D3somUsGEMYPNe zlFbIj`gjVm!6BLFM-Mg4bIC<|B!vifxijO-9nX#Y1#c-w9?SG0tKjjf&)Y9;O(?6T zU;$YhT#6*7Q%l4|9{?5cLqb;lQrBFDWuf9B+m>;zUZeP+0)1?!13Ap}W9r)z{iD?? z@*oj(6kJQbgCyt#d$gQ3TpH%5CIsgNxbkWs8`EDY;5y+eE{4?{SJr%Nq;?@cRK=4o ze1c_W%H(p1{+%}q$3%N4g0JMq3i$5@n6 zr-yd*=3w%*ZInu?7XynxyAIQ*lC8xWx5-mv%R)H^aF0prRF>MlPSK?DRgE=DfP30F?`Avlw^`q^%pNQPu3e=oSCEN4KdO4FMYsDM1Gv8ie2p^4i$XN zoKr@{64QUDGi4aJda;8nQbl8YH0IISyBKfKWV-=*o1#Tk97C`mrWS74Hxs+QyXs;- zS5>~1%t{KRdwITtPLC8K-K~_DB5o=fl^Yd?uW#z?^7^BQl*x<1O&=8r7Yh_y08`q@ z69s}Wl~or1E@~0OLF?Wwd`YfpgSevfhYsCLArJ9l#)+T4Lm|@V%r5SUb#%P(!|DCv z0>5=lo5ybPs^NAlKVxyS;~CsX(Yc&!X)c!8ODI;Gvc}o`i{2uy=9?;PZpzyu?FkQz z`e2CbjJt|6ry5VsPqhkW(yFSq;sybV{2ZWpA5Tr1ON+bTv(5SEXxk9S#mE@h@mi=~ z&y*Sy1YzBnko>J0RhjO7xBTcqbJy5@pT)0jd+JvJr~vGJm>u0b`$oN#MSXjg+kD%J z_Hg_VW}7_Go~k3!W9iX)k|5yqB4F;rmq(YIQS@OwL^(F+JwuPIQJOJ+{w|3zy25#q zw>mL@B+6;POwV+Sdis)*fZGiRKpvlM7!t7HOT>tfQtBoD+=pDg_FD1k17{tj=fenm zfOSpx@#~^iy;ME^h(*QIDVllAY4yEa_0Q3m?^W&@{@^=j5gr(~!Sm!IE0WX}Wzi)g zs6{JZ52}Uvrs?L#@y%;#7lL$Gf@0(Ifmn!M=P zLkEiP=`A<|>$`g7Y>Ei{{8AHanj^gLBvndNz zQZ2~11%B0=B&l`~)Ar(!o5T{5rDR?p=%Mi&lSG!5xv)QfR!f2b4^8WeoSm|F#YScf zsF(L~EAP{`Z{2^phTfSOB>F`IsoKdD!oqeDVPTqK&m#;-e_MAXD?d1!FCqlAstaUG z)NWw;)6c{#$lWIHa?ShL><_sgBMTxIa*%xl1QTtrnTISU-_^i(Fr8fTj;Eh=u_Wco z!>bHeg-h(SvM-2hh{8S}S=aM1#?iz80^mf%8xphw$*P_=6%f>7$XEIY^iFQG_FuYq zvCQVX$=qofnhqzKv07hN0%#8vt!^sZhtvhs4DoYOu0AHIn34BOXv5=26VvqVb;)aU z8{oT5VE3G8A5N8K;?snNYR{`^7V#L1snE_&?~#oKqa!`3ywEn!CI;Rl{bD;Kt3pv~ z#_%E7@2m)jSV1B&Rma~4Bai%L)6C^QZ4gfO2%W=036@F@pkR8FY`8k1nd0`w|@r{)_yp~?YWc{{tnwMQcd-^ZjrrW zvjN;@!fY;)kR7Woy1cr1>rAy2y&^@GJa?R?2INOc!4tpA*r*~!l2P`@}kozEapyP-B8ah)EASE89G z)A(%uK5H_mmjS&9;{N_b*7Qx{hF&6?Js|EgoTn7V><`-qCwElnR@`~K)lSxL@)}4B zkFy)eGtIo?loRW4@Ojr{$G01sZYHEnjnAA77Grb};`!w(S|~ZJsaE(_xwPn4PYqM~ z-9JYC7mlm3wSy$7iK>5otn%sAoBY(s@>@oTX>< zm;ZSCU(KHRP;1-h{2ff6Y3S87UQHc3HHG3M*l`c!h@;ZHjq#0^W`G#k`V^!}o@x0n zAefmc0ahYw73reM7hcrzJ5;XOM|nUcanh6mx-|m*iP_*-cI+P)ine}g8l?&J2GN_c z!Yf9&_wu(=mApRBrECk8??J!gDga;Q@J8G!LW#HlS&TM1BKl-4G#E(vogN|bvRy33f9AiGC@HQr zIWdOJpPHJ7Lyee96bkmf-3V4@7-NqRspt44DfLW87UOT-a)BnlkDRRgm`9`u1F#;~ zA(wISU>zISKPc~Q_M)D`Ni608ny=|2CpNooC&{&-yKl=WzcDh zUw?hvV9`559k6WsmyQ#;h{Awq^jN8F4$`wY*3Adu6Yi2WCbi)vu3J&giO;$&vuRw} zOfb@9ipP6mwpossn|6c#rTcpDZJv)L91aUH=zg&MdL82>=3O;!ZMie`!Ht+e1FHXD zk8hWeY^sU_@~==-W-&mP4W8c$J}I>rC0l@a(+=tm>rA~4-lrnkZv8@+jIz;=Pgux4 zM^At^x-k{eguFx*AtwdrZB9tr_VA>gFhys0vcHb-FriPQe~(8BwOiW-j`r$)N$#`gBD0oxt=AGm>Khitsrr){v({8P7Fmj@d4^wGN2Zmb1v zLw{zp!Ui;rD)IH@TdLlHH&w^A?zY9BHF8CL(t0CsFv(SyA&fvf(PuBig<>>>hE+tm|1` z%;!Guj*cSu4`%6w%b5?8RN1)|Q>Bl5wolpGCi~3T9IL!l+p;?UR#Z+`=+_68=zoK} z-6e}bwn3!b)}lov$zr+dTy``0H<@L5=Dk9=J_|}w1lX2rD;nR3q6CHl{2)d+%r!+H zfv&SR13AgF)46MLi5|N`bxAq?vmNQ_6JPC)Zm7v$j2C^rvltLl_mJQoi11@92e%6j zmIeGX9NMV->&elMW_R+;Bts%7*f3nTla)`KF&XWS0WZfWXf=#+y$XNm^b%*nA(%ON zm=~nR*uM{#fM;dL_}SMVPzIfbA&V$fRae>K5b3%WnGM~Yr>gN!+SWg^x4C9-WlSD- z2HxuR8gtq&bjL1FqL^#Ju?iaro$V;M)1zkWxkV`^3z!O4`CTr4j?TF{F!)q$CrLGo z-Pg2NqrQuF*^ecDY9r1=I$In8ReZhLeZNGo9$IiZMiHVq5EZt!aY}H3Y|Yn; zyVu@6FS8=EJa4$_lVAGxvG>ET9+?j?u+UlnC)k1qM(QU5Z##pN8vZ*Y?sy^8;}%_^ z)%kPIBNNlz)|w;8p#JT@%c>qE$D?s_6RCrG?d)44lRxpeou9Lj$!deyDT`Gk;@s4C zuivqz@*B$I@|!DcW&G_o`JZ7+Vz)42i(6pfjsPXwgt2Ncf!2$H)EQ=mgR!HlR&6HJslomP0;j-J% zrxxa(ADn{pK8N4lZc++qE76xJW*=qg@1%E zBBRX;ndFsJ-Z*fL^K($C?6iIfx?*qkm~nFVXb+fcW3D@4uF|B<*PFRV-RvxbRB8#g zEc)M{Pd|u>gA?^t-_-QVp89Af`FVg*;65_2X{&m(zx;k9;^kS1lJjE5GXIga8UEcu zrP;PV&f|j*>MGg&H6F?eW#UKWI1SvhwcI&L^Vxo{B)@4_q5M+)ZP0L#Ai}K;!M|el zXkLJglCBEA->X|MHUn+JiG%4&a)953qO$6AMDBdBY{xLZM%a7x2>g>LuGRIzYp{Ra zCa8T{jN`j@Zw_)1^y`(Eyq8P>{Y8VycLkq<>uZF|XicE*h=k z&A{pD)Bny8eU_J^k$D-O5IL@5MLt<(BF@B#+QND-lH^3YYsdWKwHoqDQ}zOnz+UA4 z_;Y=K31l-83jhVFb0~Pros=UvEpc|Z(YeyY^x3=a3@1^^Xf=Tf?GfJE7{%IL6VqHh z1*%e-GC|aF>WxXuUW~K1lX0}|T+(>Tx&y{;|48NJfX@M4sk6s_|CQk-urCjSn8rJS2$kKt!0f$ z@*4cirFnfZt-wG-jpM(ea0{~BEEI9$tt>1Sa$TsabV+2)XQ^Lj5*U58_66-_6UFM31<0IyQhkxePkY8r46AGKe$mMe#vjwy z;9b^~cn?04XT5G^?HtzVZH<0=OXIKP=N`W87d~bz+xGB_=Yt|_pT5uTrltCm$mNaK zl-Z}N!TP#nCEy*qG5&WGb8FkarV1j*?Gi8OH5%|SJ%2YgugTBw=Y7h^Oj&1SS69Mv z&JG1QQn!yDvIja8zf%q__I%8|9V?P}>G2v}>1d+K*ClPkga&{6v(u4V_NTN;K)(}7 zCld@9cn*P?@Zo}WxB^BXlFWrf56~1(nKdg_g@?|jPB0yj|;JiRG@xD ztv;gXS|`6a&&veV(53Hr1f~0Vp2}R-;Pi9&BQTuw!P?c6UzYsOmx@h(W(}(lhw_`z zl)Rrur2#|LWh(2obxqSK{RvKrGs=?DN8iI-;WzmAuk z@Xq8@JB@6sQmi^TQnR|Oz@(SuUt#epBNd^a4R#`LQZB8UL!%(&V_TWLByrF>lo(So z&Tgo*;Bm!tF-KV&M8ideN|I*zZoFnUW7WzHFOj+r&K^dj|r{&+Fhg}XC zLl$aeow-p|QIBayEif-ht>M#;@n0W1S$9WRes;AX8x_H0=7_-Avv6teZs5R|?IS=h zI~lh%E`0ZOH^&*R?fX0Zc)MG=SzpXvZSdrt+v6O5Et{W75jQg@2V8)N zc(!&*WqQ0dfS3eZ#&+5@7ip*YNx56PAi?8c*|Qp8uRl}lgCjYB=%L#%;`WjiWnKRf zt2Su290FE9-Uu!t_^9qOL63bCqJs_{4?V*9uRBzpc%3w68@ib2$`L>$OaCRfilY-A z%18d-RzlruXefYf^!4e&m~<=SM`?*2I+v1P&91&R3OUdc*g{SbXjiREVNp5}9Y{9n zBY^1ov$_3-WnSxgdb;rF62)v}u@;g0?Eb{NJxDUF7n>^Q#nNtHnONdCDAD|k0zL9N zON28KLG8!Nnjvt>5s9r2JML(LxqZR~y7Oks{Oz$WYo1dG#%m>tEf7blZZPaR>DD zz^;l22%aHcZveyp)XBFLUW=6o{aq_yE7usO|m5wx1VB~VA z*@2R;tJWVsZ>$_D#;TgyI#Vn$J@KI7v+KOZlceP(tCgwYWYKxb*%7xzmb%06ZTMSu z`cO4Y3k4ukr|?IK_0||VfR-pAIe8>6zF7Sx>s#>be)%{ZOxXDWM8oANTu$SY$N;^78OK5-jYyNX>9JT$m}1kLldyYESsbLaqWaU%1cU-X^t9)V{A<2YN~Zs=H^`}F{7rRC~!-A9@3j6W6X z8oU1nmD)1tpvc}uh;hCgma`11$cOmNzlF|nL!^|sByVm>zZTRPB5!M4)~IF`N41;k zg*!*ed*2>D1$#MDnu z$b&f8Wyu%zUtIedl$3|irvBu;#>lsv8@KXe9TfR?u55oSF>rG>6iBmlH3Lo@lOi{z zYveDen7;)EdZn(kDPAvguuQp!oJ&j1msS(Dv=NjGly-QpHxT)Xn-RNQZ~eqWxjcIc zKEFT1*d*VmrDw!-x-v&WW_34Ud3xCN)<`45%d|9U)ql1kqZjFsNxnTGBGR^tZ`$Wv z54n8Uc>0AKHJlYX(1Aa!mg-FXl_Qv6xVfpo30NhOiny^VgjV9^^uHjNPnynEUDrxb zRou@(8{;QO!S%LB1_*BQ6;e+IS#HE!&Z&Uj_VJnKThzYX`WB?P$x>EdSBj(cG z9ku6&#grCrz2PAW``(!D;rf_(%WpKBqhlpKvD~C8W&HJVJ2ap`NQB5?P+Mb4GC*8l zlu{|Uc53aFc<(w#)Qy|HTy29oHf4t4T5r=2#}f{C27lPMvAL$i+>NrKq&rc2bykm zFPk!TStO6lPx5g~BPA*OtsbKecFe5oqtZg3`B)0Dei zf#E7rj%c=f)tk#dgyTIkXp|h$dLx^|Nbnv%5l9S%e<5&j^Fe#rR?x!SeVNwRHo5}SRD zcog@?A=RmiBr~vdM?xfHf=N?j(s>bi{@J6Gqi4Q8tQOD_Zg>^?lgoAazNaq(jq+Kg zC^|qjdVwfvmbmb?c}~btilUrLGU*$;nx&lwK)S4xU^$HRLJo7@Q03Wf>m6~vg|cTfoof_SWL!YN zyjieikJA<$7@%|pGY0MQ7EjH>FMe)jVd8ZGZCN$r(iP8Z7vayol89)92*yT7_eZOWvsDkxP`yFub#OJsCN zeA-kQk&Ux}-}Pjwl_2AG_hEvlZgfdOOVURKql76nsq-P=p=o-e_gW$tWzEeYC}aENfZnLDpqWSDC0J?e$gV|FNLA{3P5# zRaR=vqs|X>?`hz#J3~V2)eqH)kuVy*zn8xA=EoO9$V$D-Vm-;M-1zYdlH*yr(sTn= za<%)OLP44(6RuG2q2lAa8baywa!zXZ>bADEu&trbC0kmHPyv0nf81w!cYa-NWax#k zhXNxRHZYQ5c0pBeim13sVIH|S77Ex>LV01!Y;i#?}+uSJ)v&r#umc=M!h;T!eOz){;lw6 zvsSRXIwu?IR+(u~u%4Vm&lf;e6RJzOQABz_mqcw-H8coXbcMZaS>QXfe)3n)avGso za0xID%A8CqlC++=Z!7xgD5*tRiK9vX%`;r>xApkETor4VK{Dm2X!SMIZV2(ab?+G* zs2PgddO_uda39*z+t^!K?*J!lAS?jB!;NyfXbPci?;&sM+ z!6}NiR~SSHnJwVbR!i(Q5f4BJSn-4(Hgk0XXGevU>618u%{?t2zr5RHQqDN(oisID zF2XI#7};ZR5cD;=sG;M6ip~~UQF+VdQ%uAbiYGO&MdRr$ye(X=0HM4By0ERO5E*uR ziNLGCKBe?2ULi8KbmbAO-sKL-o%HiDf6Dso&TP;~w^{DXr`MKVaG;dejd;CggZLN@ zl>~w=It;6MIJ=At9`Klu5)RdXBnhLqT%|0CzZCg;L7CBj8n)}rX&%j($83?e-lo!1 zwVqa1-Qg^9<7HJ*ixpoyfYJCi5Hs-1~G@DeaOlDS^L#(l3 zO9&zfdC|V_9)~(*EKa1VeRbRKcH^EB?rK}82y#Na9J%fxT9>&rc^+G*)lh*CuFf+| z%e00cnA&O0+g8t%JhZrxY8k~VQ*culRw;VDE5gl84(T^$qiHMDb24x6t!#*utrot> zG53r1o7}f{3mzK{JtP7CH3VTs^E<&Lkl18Y-Y=qe)j*`}OJS>KSGlX4L%5f$hwejh z`8Ec6RYz;?r<&9iW|Bc$oNcrx$Lp%3hDVAHZUXq;Wc_!s0HkdO5=PSfY8x&47xXFB zF~`+UCy2v8lQzse^h>e%dMlhea)-_2d9+Yyrn)8FyXS3(^Ol_VO5Q$_8~OQSMVZMzQeVV;9i3uC+YkZQ@+llM*2$4| zP$_edUgZJCH3N}mwK{9k717FmKEEEz^}=ZR;Pr2z-}n#9dfX191W(~qs*uDJcA^ffP%4Y5(9n{^ua(8W z9>7>ao(gm<2^(9X`nFNC=Q@RFW3X^P+K&BsUUq*4m`RzU!7cJ5(nvv?^vFR}k*DzU zC;G7us4K69kJmUKt%#UTqbg%8IT4LtWUgO-t}5&trUH8o_+kssj*|jrn$Z_(L?oMg zoA95~pgW9f)$&^tBjtG>6`YAqv5}tDpeDfyryRl>WU9y^lxYR7ewDW59)`PCmoFaB&loZx6$z%nbyB2H?a5sV zb-}Oy(07vRXs!)tWw`E&hlL1R364ajey7V1p^KJOH$QMv{7mv7)Hfo|mn;+$*5kig zf3mG^V~cX$dAYs2C|s8yFkryVi&QsK+DiBlE@<$WuvZL&#JZ!Vhax=(kDhDhDOz0)IL?U7&~r!n07lgRMl>##)e z>+74(^;E82IcJ8VH{*|_$v=JHOjgxuDK#KcD4J4d8Ai4~3R8q3@7EO)gJiE?jvewD zbP@D;mCUxwiS^5FLy4Q{hzq2A%4RRp33J&&C}A;-j`5iDS|=Cq4;&okJw>ay5nz{n zl&X^?Fnko<4zvw*v6FAaja!Z0%5Pz#Sq}{zujv+a$Yy^H@HTPVu0e(R`8T`rRRqSS z>|D0wdnmNl#LS0;?!0eEdg8gziMo;{$29r85`~Tv=VTPl3c~k{T=Ka&Tkl3%KaMMx zny$s9A1D!g`6W9A@bLS;7N=B1Jlpapngqp#0i;UKl2q}8!Mziz;@8dom~&_-$ZUI# zHwgdjY`J-wu0~MXWWX$Bc;~#y=I@^(3p@x{!4{+r4-H1kx*^HduX)y3Vz3W=n|Qi1 z<$;}f$>(P;uQl-YyrTbF%ULYa+F{-Gwm`i5R}o2|AxrV4Ch;t8J&q8L-OVNHwz&vk zUekub182KrOv88&;yq8>F5lD(aJ?=UkvJ1GZ!W_p{mIel`HjN25lNcA_Pr^zj6}`G){x1D6nm>Oef)Y7_eGxpa*F8A;8VYTH5Phz-l(I_`( zr~MaqK$BV(9$=?a6KondLwE=q`wPNFHwW9cEgkAxU-r`-w5aiT88t;NT-EcMe%8aE zXZNZ7#?XptX1VJ65#ra@ElpbIY;BX5EG(v~p)M2#{HP_eN?$Lxv*E{&#vmkW_E ziKR<~Q~k0@mzFL!IhCZLRyERY1k)~)G3hTi`IQ)L`uF4t23IrZxR4`4;Xj_JUCukK zRA67}ES-t^jlT33^sHwbvHJ({X=W>8%&b-SU>9?R!7kfssY+X;B9cjH(euHbZD!W^ zYPKj9ou>BEDGu{VrzWzS%DmgWK!0{=+G@d+bg{znhyl?L^fJ7$V#-zb2kEpO9r7+g zp;#^56{8lQrvHYG$qgm)7b!;+24;`;+3UoYG9-B*g3#+F&5sqOKa9nS`)kBryaX-88x98h!~^ zncb@HHFT-?Yx;QZ z2XBQ>3G673i88f|PRPd$~2#L6Z_R(+wE~_Hf{KFE0DZ%GW=&v>1J$nLufDPO~~gfXP;FOR38(r z=b3{C1_F-(sjk=vfmv6mkt|!(BtM4$I4Uz7{>?I1JY` z_i$W1=o@Z$TyJ|*p206(|3mf%r)->CWLiY{K$#ySQ3+R$QM}>WxYdSWlw5M+dO}g( z(-n7e-f4RinczNTqwN@1?NNqG3I!aeO);--$T;z8L@)Wh*=v?3o6BLyA z5lfr@=>6;K?<-pe3|cCAl9;p@9>gUW@-DcbX;3FgBe?ux=KR2PwQI@?QAn<=+FRZ*ebm8eKIGC-DqowLPJ1&Lh&w4>gxAvhDB}%tSxvdU>W=lD3NYl>4`tFE?XJi zo$U$TRJWLVXYHwe6u3*wd+=$s}X*&XV88w<>smM>gT`h?CkL4 zRhOQt>Bry5)M6A?+K`3$!cGFp^_wqnOl5n+E*w*U8^+%2GpDGtJPq1d?^8Ad)KQZce zvG{yb`_B>xB>_F6n#qIs6tbxPeT$IzqrTg;7#qk0T_phF0q*$OTypZM2FfBii;5*3 z5?JX6Y|g5H&G{1a2(qF=Fx{ppkboQ#GrZ`htRPStM^=Zp>$|-eRG|k@_DM?x$7wIP z<|hQrYsv59nSQts!Bzt`9aa^^q$xy7zI()_Qe|h@W$b#VnNJWG-{hk10W$FFMJ~5< zeq}Uvd5-WUb7#2@qxLVlWe44n@A^%eH^)UEzKuLuRfe}t2UUDCz2%6YcW8#;PlehV%-tm%!UXq1RZqE}KD=f|SNM4CMem>i z%FpMu_qnK$FCIEiBG_?_4)kJl5yGMtBmi+uq$bQ<7>p7Z$X(?Zc~$C-N>Eg;GDJ71 z{{>kD>vXQMl+}q8eaZU8ujYGa`)73Qu37Ww<@`C`P16OGlIbF`wIt_lV;-9*x!?5A zx}CH^p{pcVHdP@5XVHGL(|Pu%%{+}$KS(0(y?lXSU&w2@G+xSXhX)zZ-S6mBUnhf{ z1Bxgk#>zxGXrM+8;g*=w;J^xTk`5BL#)WlyvQb>XVH32IWZff;w6&l6aiVwpN59#G!?-v} zx3>@5Ug}2Y3ty!d;)JAaQt%Zpul{qR7nStdCioqK5PKan_@Yp&Ce z9aqC9X8JR5I{K>)*%PdG>&N_>W=bs^Ia*1^MAbcYqN#U(Z`=9#DdMfh_6#>b`*KNn4}u*|*Ox4w>l(g$ zh4eYrsjDVLOdjUCB9ha!7h|T=^BJ!|)8Uzw>)V`F^@T2KgKLOf%^mf)nN28L^Lz^& zVM}Yv-a(8k8!GTe36PJDGQd%q3M<>m^eff$p1HJhy8k1wG(Yu~M2oMbR)f);m#4D9 z{^SFPnCiZ))q_R!BUg{v@{{<*4j{adIPKJKIvyyX_M#-oO=0Uc=P>j2_qJtx>B~QEwY4u zd}3pcq;_I+9c?4Jr`3ICb?;DwY)l%la6E1^#{YP*L|sUmJ$>jS$1gf};^Z7Z^Y?U< zZ-(hK!gg=`@J42zu=JO6&xwk&W)Ej2T{G`jKiD2TG9g(Kikm?9NOQwn42l1nfyIXZ z`Kp8moBPTWfnI94r`hzWx(DIRI~DGa(xYVNhn-|+(BdS_&0j)ut_KN67Ln!PjK6aff&?%fvT5l6 znK`fBDc#mNV|`erZR5%*Oou0`v@34D?}yIgpn}W!)e}XBBVLKT3yN0>^D1-LPMyH{ z*RRFI7p}*@#?|On9*)F_bmjYaw^{MPlIK zkq|+5bt;)GO9(FbfZ}w0sAScbV{*Y+Q-(94C*UxM+gO=KGb-NGBdKxnPRo80w4Rr`~2eS7w1ixcOGy`|&k z?6f4{bRC~29^0TLJ4l!RKSo>9z`+F-laAaWnQZ{ZWYDmJ)+nyYRPQCI{Bb=etm;I( zBqvRbJ5Kyj{ptC@#H0s%_dCE6A&I}gRBqOZRK{*xa@EpSQ+GR8W>Lg7X(qH1;-|n+ z`gZVRRM=sUYW$M654QeAUS0I5wY2^_!mIp$+#CoQimZ-W7z_AtqEj&o?)8AtAOOak#4?2x>f4b?_pdo*TZ_b1&jkmKo!KX^ z{E9O4@v*bY&YVJr?&&GY^vu6Mh$ssGP*pNu-8MXt+DN%V8A24nnqI#|)04_~Zyj>2 zeG7(#E5^`ydygijP6PaAqM9o5d(&9KHB?@tD;lTa=o`XAo3PcWx~CN`C9jo(YJhRo zn@@SP9KgKf<&tegGAHwbBXT))Lnp6>`KWHSQ`4j@8B6kp;l8(Pf4pRz5Y>&3^X?=+ z#U{!&VTE4^4S$GmOUs|d?bVX&EEhn>2?pOPOp9i~xTaT08u!ao)aMi)=!6@>s~|9y z_Gvb|!&EhFL|!?z_vbD4F(2dXmdc6ZEp~$8q^oQP9QRbO^O;=&vGXQZ z4?kD#c8wHw6b*gKsd5}TmW|@^g(zjK#Ss+uHr%dVw6mRi%q5u!;m?}QG|(z6#RuT0k`&@(m!Ij1tZL$>c+^YE z)Ls5;ObeoZKz}!UX>HA9P^k5rD2DIdJgt7xSesla9F&g1fBK?e@oe`Jf=(Zk&xyC$TSqzgpLL0P%Wu(PHvxlWWjvS=y>c5y=NF zEhbC5>t!+pB(d_3B^MGIiRUvCF1ZXS+lLzodG!lL3Nhs0vckFEWzJR+0T+06aAg5r z|2m{eReiuHPt?D9x^02~7yU5vX1E4^FHP?m{ZKS-K&7QxpXBQ|^B__$Ya3&PeZty# z5lxqVipAOSg@fxWUTN8Z$7;FGilIlo^=31^FjmTyDOcfL3^91dd))Ps)pw)2jG}z} z>z9$I6l3H^oKN_|m`umIk^VbdYuO}BKpn4Tja+yWN0YW$;5@oUWvW$SjiY$`EEcvZ zf}0uDAl7JswyE*`+iTowLw47Z%5>@J_^(AGUZdTtZ-tkvELh|7Q}fg=gn7)oL~}d9 z0`F4Ic- z=IB!Ne+Ah8*q#as8u5I^o@YbS&l=iv(QHpT8%bm~%DL46_ojVPcB)#;`f`p|{rJb& zzPvRLm^|_+h^~d9x)aaV*8mGTX{_THQkSq*o7!w`%4=NUwRHu08q;(KN#>VM_!?zR8rWo)sPT*%62M&6(4%n_ z+TQWR6x%siU=;`@JyWMoT>0h2*ruRz&1qJ*Hrjlvxm32JZxwx+lsfmWK(iJQ85;LU6mq0akd8M`|x*6Yf>vc}o>@3$&<3chFFmG}yLDnxjZzRxS8dHH)2 z@l~~k3V?m=odJvA)q3K+Y|hoVU1>JZ!!)F6yxMx8#!kFBThS)!eGkdy0WrF*hpF9i zcJPMva5;yVQ?%yP2idt|DL5URd&&l;c-5$I%t=l}jao&uY{P1YQqz+{VIji^=*GMo z7L!fVu|a=95+moAHJ>l0zBeAUx*PEQu!n^yFfSmwX4_Eo({erg=mPal@~I7g zvTyZbA|_K4lc6JUMgYVW|H$#v|3y5_iO>4aga0KPHGo}_1*jNmAx?)jkTC=ab6E)9 zquJ<1f0N>tOpVzZ_o9c-5t2b}kbW)zl6!aH(MvUX{3!(h**d{-q}Zul8rJ!!T>ts! z=b^24()w+FIYfM2$4C)f8f%sA#~rFQ{n|2U+d89lWNwlQYpu`P%eU@xa8XXxWM&WO z?*kl84oyaR`I%Ym=ki7Jjb04nc(&#$6mb=ko_MofP@M((MLoecy?JdOu=*#K_4+Tv z`S3o!JxvAA`OlcyG=oX@+c($n}4H`sNp2v$Se_kb=TBJ#F{^^04BKy z6GC-NE0mDr4)2j%TDh;4gK`aR&C=YUOLv`%4!l&z!VQf>Autw=v@&&AF>zf@>k~&3K;R)L#9&%v+JxZzLc9o)?jh%ZCb-E@L1jcl)MGH)*^sqi<>)Fd~??T80$F>{nP3gFoW+dFrM(GH~k?9`8yvAG)ZfL_ahikuW z2p7cMr4Luh$75zk0$9;!iK8*NtZtjHYEz2?%Q2gB=!O#%zAnBubwaMFEAF4o;jlv}m~B~HG|l^*^7Huz z&tiShFsR!{TGHB$XZ)vPl)QM%0%Ow)!d7znZu-mUyfTG)3a#a#m@5K{Z{R}Dol9a! z8L4qdo76m27V7f;8hv2n+Vf3u&dmo7{Z*UixTNo9@I7A0ic@he+BXG}h!{(xrf)~8 z|GPrTONQ~z*0sjNOU|-fwpt_y;^7bBIoN~?PAW2)HzWJXcY?3qn?mDpIInWNy}8+% z*Uc^?Kp}Hyu&wJ3f11w9NcQjNR(K?T?2+z!LUBRQsVe+dKIpBCVkCXP8f#v@e64EW_M;9edDS=#WhH~*?4!stt+~4;{G~g#JK!KrfMxlNghyL3oy4bNbLiI)!Lb~3nCxrV_ZykIYpm)Bv1xm(go-1kCp1a<4 zDRlmh1*^=D7q@p?kV973lur?bYgyZiJ!{=(utsf6jSLsb1jYbjr7Ehc<|xPSKtMCxy9>008AEO3{pc^fp+Z2~TsxEF8N1KLC%Bn!bz3Dd&f z>UX*n$HpS4@az89^0_Nn8#@JA9h>kcvAKr&s56v{L|7|lkAM1g(Tf_9FtGrW%>Km7 z1a-2#ifG>T&>z?IGb$rK-Tv_#I_)q@ckoHeAPvQAP%lSGntta%RwX3)Z7+$Pyo-Z7 z&dUefE%7eo>R~S7S7oo&u=H(y8Wzxxe>@BGP820I&Na_m6tyhw=Y2-hKP4#gV{P3Z zW1?AZP%)7G2|3W`d^O!&PwZ`MO?BcDc7uK~k-7g$FH$B$$GVs#QovBxzUJ#Rj9B(13ZXJ&@w2DPlmwjokxerqCr$Aq-|jnheXPTJ1n0cF9$HELY!qV+|RhXG;RWq7Zn<8^R_RX)qm`$No; ztx#{U0Ww_o;rb7p?K~;+Q%e@OMk@OHbbuz-Q(|qOGii0;(2X=Q zdp;g-9uN=Fj4o%{U5h6`PP+V}v zmVCz7^iNR*`xeX5rV^eOv-RWnT@6zBv+xO|;lL{khp4jQuO9l^hhb7l4Y^C!cs3nA z*)B0bVbIDWR^0Rq`EI)~yyjX)^mxW#^z6po*Y#TB#I8P}tJ+33vvuSA7ve8_6Snq) z>o%=^!5soCJ+ROQU&2;1C-NxXUJ?a*ms#!q1?_qPy`4-JBbbCcd?nMA#Ayv0)7{UW z9N)j8H1ReS*{%F))qWr_;Ia`$H>apP>iiddVvZCJYO`Goz-g}&@_Gv5Za)%r7Sq7NQMb;W)epXaBo6^6f%fFbe znr^t#sUb4cHM%o_Ch`9Tt=T%AMO%?yR6b}Ec2J+&e56*3XgMD#{}wws zcri$BRXdp z;^uceN4i+5>@-O<-9%|N0uB2!(_wo`Yl+r;{MCZR)yR?TZM=UShXJYSsVO&EY!HoQ zBz}2V(koykd1`~R<3@2oB}a4t^ZH;4`@n95DX(V3!5%`c({aSR$y1BHuGHHT*1`ZU z{|1}wiLbX23xXBz`5={FgRWVJeA7vc2H0qwe&?g;M-#pKULTgxRg)o+*q3_o=WNnL zn(9z1mRks$S#D0;WDhNz;OoSE*Fe^>US4cIFDZ7Cq(z}Sf9PggUuu$RhV>M?6Zn8I z96-0ku1yC8JCyTtX+WIzr`+I^t@_?NnCm>>5qV@zLO3mUhwe*GDVLGDX^35c>974p z28QK+37g%pR*N9{JD=x!x39RI)Q#(o`gY{amGG?a-Nb@=o(LX4x`!Dv+Z83cv|=t8 zD6FML#hU#}`5p24R!AoI^iJQ$hLJYSsXiA(JW`eDcj~iN1n2(pidEi|9fT(8G^)#l zfn=IK3aFtIFO&vc5*F#2eSa^USz+w`70!2Dwrln>7Uwucn4R}53H8jx47(P1`-_{A z9IFLi_qn&Qhpu_o2NNzePn5MX-v+_vcnpZcRQJ0!eJp z!!ZKNT)KSwY-L()P z&7+h;FwD}h7Yks?;{w#zCgfhKZrR=wl;gAmsTV|gWR8t%ZjfP65P;SOK+vWDW&j-z zf=?e0k!!Pn`lgQk=RK8F(7WVw00l_0{F5k>QaZS{X@Bo6V9Fi@rL?yUqBYW%s#AX= zJqUAp1fNye$TaVET{+PqIAXP8jhq{h$4}!p*7V}JF}%K-9JGeeRLe3C4R23Ka+~vo zv$dsL+Oh~mIWImL^;iCt1vR*rJ#aCm9iDYuuIHp}i3AyzW|$0inB| z4~jxHhspuSn|2C$o#GlrjO^Xc-*?*Dui~!|e=gJ*jG54-74W8#L2YM-`Seu>MO~$_ zN8biQx|Zh(=2(s~gXl2^3T^akX9G)M-PM)Yhk1L?s%tIU3Keze6@uNI-sW?s3v1^L zY@rDZecv}OkgdBGw`L2sms^~IKn|$xg@WbNK4RceyyoJn9m#})tP-` z=6$&L{QLfV-=|GO%Q^3sr4CIgRBR($q^YoH+~OR*AY$P16O^{K#}GHjmuz?KKpEr^ zaoFwziFXx%C-ReK*o9m<6SmYh6xNpT z3!Wo{9;{AWTDKTd0lT~$K`IuyxC_qck~6Ai{u1r>t5)b%20G;{ZEv?BMuhmUJ|89 z<#V;fYyYijq@s~hQ1EnJQ*58=Q{(K_huKQ!xosxu{Bp?>B+1zsUp3z8@R$69`Pyf@ zo?!1pnLb1NpvPc&?*>xn-mIYTd^~K17a|NxbbhWB$_}?(sRb4rP(ZL?po3gi{#Hf* zzoahZ(1}*i#%-GYmj98={MQKMq+yd2V|j&-iS$WX+24%o=lSv_#$A*XNgG&&P2WLz z!L7SgxAZPIG3+sHlWT<&)A>q6rZ7qj0lq`h8x+g4%s$7CP?diej`6$FAAbz_p*)2n zo8ru>6Sa31e^rvXJI@s^JM0HtJ6g%!=YyP{uNbXIKXAJKG}a!KsLVtRoMma63Fc;g zeYQDP{>i+ml5`Yx+fqpgu7X&Jf^n%uSskF*aO63kq7}xEStCw;2dQ|5vAA6^qVDR> zp}rMLEMP}W0-c4tZ^rNhKJr2?r;6lj?{o0q^wpgc^?@I0EYGNP_vk zC2NORRcZZcOy)Z@djri!p2Cn4t9$=fdfgjg zywKBZ9m_tg)HAKE8@^d`qx zYOdRzzLDmuY^+p0l_%-~nRRY9skbk^blrc+ori3V5X>#-wW}f4llXN*YDBPrdIxbq z(pXbZ?`mB0Ydf1-1KrC%ldo_Vb-7N8>o7JB$2n`5rW{%ZvgwHWnngZx7{2sketttb z+xt+K(o}bW^zyswK&$MdL8s0oHL=(VL-poF_pSa!f1xQvi{}rI&4F7Y+zoFu&mG0*ahccs_Sp5t9>E$99?EjR&s4UxJ+T(R z8VxZJ_X_Ube5|7!_#|z)tK-dTHRf$Eh@b&CjQaN3ne=1iJwI^Hj@w|L z+5m6?i~$5srVfDM;6Oiq4gLdf{(h}!0MQJT0#pGYG|T%x3C-exU)FOBr9-91R!>8#DA0Ip|0NsF+#Ex)ftdDxy^|WqHtO#3c}u$ zJ-0=r(!TTFV0ggQwxX{QmRPG13y*oSXHvB4mS1F@OEP;b>s)CwZJRwl3Zx)8k)gkm z|8i1o<ZyuuqEO3aPg)7vR-=B0c<2+I7(GjW5!`dd-Lh@oR~X0zLZvUI>LJfGde z(o~V;W^(Z`si*RYE%q77ur1!lL&k&Ci7TA+^-yy6>tT`}S)9~B0F*Ev4SJd|pQKpQ zdzsQY?F*-ymf3H;MWtS?D`&v`SkOKikR{lLa{Jd+x)UNAbP7`RN>+wG4spY~Zq?y2@HkxR+{a zgiP;}-Rj!Jhu0qm_e&4bdpTVroO&l4z`e>m*2aD-7N4~mJ?Vm`M_2|5E2zku5jitb zv-8i_rWRSf_M~T+v2*;fX85E@^o>ny{m;fSnJf=kcF}@d1@+sHAbI*P`NdrzBn}?` zv-mhLyN{7LRuIAfGC4Y~QvUntxJVMM7;x16q7+H^?2W9x@c|Hl2|7L@=g7PNs$~Xyx&rLVDaFKX$OU|eLF3qvw}RHe zJ}=kItcAFGwvwp_FhEThKyo1hCo&4YE>+EkejgHv((9S}`TLj_Cz_cz`%!#$bxY#o zIgC#g#-||Mc;FA)i9bm{;jR(8@MVRSkkYeq>lj0Zz~DbCq%BEo7p%*Q?<=e{7wu=J zO5I_d<00mwOti;(7bYIBT1=*C%2_@CMNhvyJ#)>wj-$N4Fsg1@Hia*BON@`wzjdDDG!J9p+V&H1^JUJ#eips~yfOYZ?P+-vuH3tn%9)4!ircm(Wc6TYR(VV5V`^B#ky z^9O$phg_7{dRRSPjeP8m2sdzNzkqI#KwAe({hH9HjI3Nzt;wp67uY={)79_TNj?5v zKq`(x!RYFeaQudqk9j=Ej= zy1TnHTvvVSV~USYGG?I$FZoOSm0I4XxNwj1;du#S@W-mW*5K#Q`NzZ8AGC)lzkFrS zGLh$$-4^?6Hj3RQHqM<1DMh-EvtuE(YF^NP5bYkG5;CU~hp;RRN_=v2s@9=>H#bu? z-KJ&=eG;&HMRLk|_bXI&foyH=kZH_%K(+`pp}zz);Xtpo(l;25djuoX<~v?{J-m98gjuL+*?M zPwdd2Q+^vFtVj%HV^4EQPdl}XkWk`aRHeBA=fE&bXqfkvswvsZ3*GfUO^@!u8a+v8 z$@sPX+{C_Qpi0Ql_0{#$9Qbp6NmIY#&D}Yj^6f0s)8184cINijOvDK+J~f)ym0)qb z?^L{ZtF=QXV1isUoB2o$_DGvIw-n?v;cXUQMn_Uaba!&(4Y3=maagevq#XR?3Zhi1 z3s1*G=aG?+l@m!1>K;G+1S*5)9vY6B12~0yXS;A2DL1> zZX=VIDI(Wr-UO0+oO-v7ocpbp1W%Zb%hz~a@dCvNv&j5yalCC-c zfTR{xUrzxO;UXaI5}*Pr2nbWDz~cQ2`Ty^J@Lz>5fFRJ4D6D@=1kD^EfCUD|(LZsF z<7o5Q86b#l29RkhxG;kKnE6ZI0f++#Cgal~t}0IfXlD*++v7oC5P_lk=u(KgS31aWb(&YN>5qYdy8l2%jN z-_>K5zAhD(#0D=~h0XltMmsMvqiby8y@79@jB(M|stG9T`~?++ekwb_1W5k5YBu29 z$j`@NHS(^UrtpeA4Z8Jvb*|{W60-j2ki3GlsBN`fA9wAnruU5o3BXwy%=ohMKKK2w z_!gQBY~L4@(oTVa@5SjI^+T9UK-)ASwOkiK$U_%ZQ*^DUxj$6*T>E<-<#zsNQ3KN{ z0D;`^F~u!7$UuzV;5eoalE5dt=s_Cz=GyJEJ$v_oZAb?_lzCwfQ=foBLM;GHk!HHG&n10 zhw|pO?f_xU0szsw0f&<*iR zAf;lB#wF^<4`|(zl_#J5t}&~CO~dl+2b(H9`X-8&`&x5y!`v0|ib$Ru(%d6Gi7yQ6 zt(Ogh_MP{a+XfGv@~yS9KSidN|8^cI(4^t$I-02G=|jPg;(hW|FLnAJ?!BeLPj@J~ z?82r@pBr!A7$mHyn>u#1&MnVb=7$>cq&2&Xs?k>oump@aC^aveg+SMe}6&1aey7~od3qAhkB1u%E0~S z2kUdvDfzUL-Knb3bE+{f^aNTp^R9h6UtY~DLfLhA(R*e=cmRg*L<1RdyiMB!`k+Wa@nB|-U&$n&+}O*aQc$!5zlG^KhG~Ge za-QqkP%UK#;?L{?zF5(IUCBRh?P{mNEKet&+}^K?fSeK1!(NvTDb$A^r8xYG^W5ZW!3`>`Y~|u zCh#6J!6o-_K$_&wQL7t3*~5{%7(Dcn;A8*f+M4BQlWfIyaGVl9|8 zI!J5UiymyT8E`Lnz!;>_2)+w2sDbGW#9n4)+>5CYe0^Y9fXF!MST=W)Pp*Ok4J0i8 z%L`2bwMy%cGpXo8BD% zFHRW(YM=y)H~V|%0V-D@%QUgajs#UDY#M<5m(gI36g0t|gdTw# z56p#v5A*R-i91vAvlm55Uu$~jU|>G z4?Sd9kA-d^s;r`7sP#fz&*<>fys#nP9~KG5MXd?cp$v-fNPbu8v*k9nesppfd%?oQ#*sL zcC2i*fJ+LF78$U$@d|Q}PB>z=x*$RDX-8m@%>jvw2ipRe`fxCEY`Gn8E-*+3(cAyM zz9+fBE|&w+!g{>!Gm#MIA-I`RAPqotYZky>H-Jn)?h4$=@hhMeXEq+4a7WI7--5-h z0DBO;bv~S0r1CgghBP(fj(vkIAUnrzHD)|&Au)9AZQ7+RPXTBZWd~H;p3Jez0*AwC z0V;qs>phW3K2E%0Z$m8*{~Pc}v}OX14IlxCHTmS)z{+hpkN+jD`M0c#PXjkx08(H8 zv2&nGG{AZSX?J%3I>9v=nw$2b0)Pm}a}lKQz~-f_{i6sKfD|0o`#@Y^C;SJ*1=vLB zA7E||Q^D~mLje?@psOuVeL&{{uL`(Xe~+<48t5tnz-0U%wVY2#6j2<+S22x7e~ zI8xh69o(bKF0`Aw?R2m|QXm~W2-0NnG}6dZb*Qv zs{dN{c@CZMzhMO%uX6MkZbPW%H_*Ik2yQD17A^!!OiQ?Kvg?bspk z){_s(z}yme8+im5@jC0zlz)9M;i7vPK=yCnP&vX4#da|nx96=wcmLWdzClBacYHjZ z_#bV6oq-_Ehqb22d4@5MeU&a112h{Z7wmLZ&fr@76R!&X-*sQSJmhvrS7m;oaG>uV z_Tj{`TpH`NYExo|a3|~*A9ez5RqIMqIVvwc)SifKr>~d%xi>K<5IBz5yenhEAaaHU z?1QIz?@DWocx+uIlV7;8Asm(FVDX{OI5x8H3X+d>$hjXIboSXrs*@bEw#gElZ;^(0 zWu0iWJkVKWqz2&3efCPY5rPvcvf~bAj;@sC@M+R1Jw)&> Date: Sun, 7 Feb 2021 13:35:39 -0300 Subject: [PATCH 13/47] Fix format consistency (#989) --- components/binary_sensor/mpr121.rst | 4 ++-- components/canbus.rst | 14 +++++++------- components/climate/tuya.rst | 6 +++--- components/ethernet.rst | 14 +++++++------- components/fan/speed.rst | 6 +++--- components/fan/tuya.rst | 2 +- components/light/index.rst | 4 ++-- components/mcp23Sxx.rst | 4 ++-- components/mqtt.rst | 8 ++++---- components/output/template.rst | 6 +++--- components/remote_transmitter.rst | 4 ++-- components/sensor/as3935.rst | 2 +- components/sx1509.rst | 4 ++-- components/wifi.rst | 10 +++++----- 14 files changed, 44 insertions(+), 44 deletions(-) diff --git a/components/binary_sensor/mpr121.rst b/components/binary_sensor/mpr121.rst index aadcf5ae3..62c584c17 100644 --- a/components/binary_sensor/mpr121.rst +++ b/components/binary_sensor/mpr121.rst @@ -57,9 +57,9 @@ Base Configuration: Binary Sensor Configuration: -- **name** (**Optional**, string): The name for the binary sensor. +- **name** (*Optional*, string): The name for the binary sensor. - **id** (*Optional*, :ref:`config-id`): Manually specify the ID used for code generation. -- **channel** (*Required*, integer): The channel number at the MPR121 the touchkey is connected to. +- **channel** (**Required**, integer): The channel number at the MPR121 the touchkey is connected to. - **touch_threshold** (*Optional*, integer): A per-channel override of the global touch_threshold value. If not specified, uses the global value. - **release_threshold** (*Optional*, integer): A per-channel override of the global release_threshold value. If not specified, uses the global value. - All other options from :ref:`Binary Sensor `. diff --git a/components/canbus.rst b/components/canbus.rst index 641c63722..cced53cb0 100644 --- a/components/canbus.rst +++ b/components/canbus.rst @@ -56,7 +56,7 @@ Configuration variables: - **id** (*Optional*, :ref:`config-id`): Manually specify the ID used for code generation. - **can_id** (**Required**, integer): default *can id* used for transmitting frames. -- **use_extended_id** (*Optional*, boolean): default *False* identifies the type of *can_id*: +- **use_extended_id** (*Optional*, boolean): default *False* identifies the type of *can_id*: *False*: Standard 11 bits IDs, *True*: Extended 29 bits ID - **bit_rate** (*Optional*, one of the supported bitrates= defaults to ``125KBPS``. @@ -132,13 +132,13 @@ There are several forms to use it: Configuration variables: -- **data** (*Required*, binary data): Data to transmit, up to 8 bytes or +- **data** (**Required**, binary data): Data to transmit, up to 8 bytes or characters are supported by can bus per frame. - **canbus_id** (*Optional*): Optionally set the can bus id to use for transmitting the frame. Not needed if you are using only 1 can bus. - **can_id** (*Optional*, int): Allows to override the can id configured in the can bus device. -- **use_extended_id** (*Optional*, boolean): default *False* identifies the type of *can_id*: +- **use_extended_id** (*Optional*, boolean): default *False* identifies the type of *can_id*: *False*: Standard 11 Bit IDs, *True*: Extended 29Bit ID MCP2515 @@ -217,7 +217,7 @@ Standard IDs and Extended IDs can coexist on the same segment. - seconds: /1 then: - canbus.send: - # Extended ID explicit + # Extended ID explicit use_extended_id: True can_id: 0x100 data: [0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08] @@ -290,11 +290,11 @@ Buttons are connected on the CAN-Node and also the motor is connected via CAN. .. epigraph:: - | **Button 1:** ID 0x50B - 1 byte payload + | **Button 1:** ID 0x50B - 1 byte payload | (0: Button release, 1: Button down, 2: long down, 3: long release, 4 double click) - | **Button 2:** ID 0x50C - 1 byte payload + | **Button 2:** ID 0x50C - 1 byte payload | (0: Button release, 1: Button down, 2: long down, 3: long release, 4 double click) - | **Motor:** ID 0x51A - 1 byte payload + | **Motor:** ID 0x51A - 1 byte payload | (0: off, 1: open, 2: close) .. code-block:: yaml diff --git a/components/climate/tuya.rst b/components/climate/tuya.rst index 169606b9b..d14f906e2 100644 --- a/components/climate/tuya.rst +++ b/components/climate/tuya.rst @@ -48,11 +48,11 @@ Configuration variables: - **switch_datapoint** (**Required**, int): The datapoint id number of the climate switch. - **target_temperature_datapoint** (**Required**, int): The datapoint id number of the target temperature. - **current_temperature_datapoint** (**Required**, int): The datapoint id number of the current temperature. -- **temperature_multiplier** (**Optional**, float): A multiplier to modify the incoming and outgoing temperature values - :ref:`see below `. +- **temperature_multiplier** (*Optional*, float): A multiplier to modify the incoming and outgoing temperature values - :ref:`see below `. If the device has different multipliers for current and target temperatures, **temperature_multiplier** can be replaced with both of: - - **current_temperature_multiplier** (**Optional**, float): A multiplier to modify the current temperature value. - - **target_temperature_multiplier** (**Optional**, float): A multiplier to modify the target temperature value. + - **current_temperature_multiplier** (*Optional*, float): A multiplier to modify the current temperature value. + - **target_temperature_multiplier** (*Optional*, float): A multiplier to modify the target temperature value. - All other options from :ref:`Climate `. .. _temperature-multiplier: diff --git a/components/ethernet.rst b/components/ethernet.rst index 4ba201415..0d6b68bdf 100644 --- a/components/ethernet.rst +++ b/components/ethernet.rst @@ -48,9 +48,9 @@ Configuration variables: - **manual_ip** (*Optional*): Manually configure the static IP of the node. - - **static_ip** (*Required*, IPv4 address): The static IP of your node. - - **gateway** (*Required*, IPv4 address): The gateway of the local network. - - **subnet** (*Required*, IPv4 address): The subnet of the local network. + - **static_ip** (**Required**, IPv4 address): The static IP of your node. + - **gateway** (**Required**, IPv4 address): The gateway of the local network. + - **subnet** (**Required**, IPv4 address): The subnet of the local network. - **dns1** (*Optional*, IPv4 address): The main DNS server to use. - **dns2** (*Optional*, IPv4 address): The backup DNS server to use. @@ -63,10 +63,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 + 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 information and wiring details refer to the the link in the *See also* section. - + Configuration for wESP32 board ------------------------------ @@ -114,7 +114,7 @@ Configuration for OpenHacks LAN8720 mdc_pin: GPIO23 mdio_pin: GPIO18 phy_addr: 1 - + Note: This board has an issue that might cause the ESP32 to boot in program mode. When testing, make sure you are monitoring the serial output and reboot the device several times to see if it boots into the program properly. diff --git a/components/fan/speed.rst b/components/fan/speed.rst index 03c4c790c..59716e4b7 100644 --- a/components/fan/speed.rst +++ b/components/fan/speed.rst @@ -32,11 +32,11 @@ Configuration variables: :ref:`output ` to use for the direction state of the fan. Default is empty. - **speed** (*Optional*): Set the float values for each speed setting: - - **low** (*Required*, float): Set the value for the low speed + - **low** (**Required**, float): Set the value for the low speed setting. Must be in range 0 to 1. Defaults to 0.33. - - **medium** (*Required*, float): Set the value for the medium speed + - **medium** (**Required**, float): Set the value for the medium speed setting. Must be in range 0 to 1. Defaults to 0.66. - - **high** (*Required*, float): Set the value for the high speed + - **high** (**Required**, float): Set the value for the high speed setting. Must be in range 0 to 1. Defaults to 1. - **id** (*Optional*, :ref:`config-id`): Manually specify the ID used for code generation. diff --git a/components/fan/tuya.rst b/components/fan/tuya.rst index 65bb611ae..8fb4e8299 100644 --- a/components/fan/tuya.rst +++ b/components/fan/tuya.rst @@ -53,7 +53,7 @@ Configuration variables: - **name** (**Required**, string): The name of the fan. - **speed_datapoint** (**Required**, int): The datapoint id number of the fan speed. - **switch_datapoint** (**Required**, int): The datapoint id number of the fan switch. -- **oscillation_datapoint** (**Optional**, int): The datapoint id number of the oscillation +- **oscillation_datapoint** (*Optional*, int): The datapoint id number of the oscillation switch. Probably not supported on any Tuya controllers currently, but it's there if need be. - All other options from :ref:`Fan `. diff --git a/components/light/index.rst b/components/light/index.rst index da9c43e04..90c5e0f4f 100644 --- a/components/light/index.rst +++ b/components/light/index.rst @@ -741,7 +741,7 @@ Available variables in the lambda: for (int i = it.size() - 1; i > 0; i--) { it[i] = it[i - 1].get(); } - it[0] = ESPColor::random_color(); + it[0] = ESPColor::random_color(); // Bonus: use .range() and .all() to set many LEDs without having to write a loop. it.range(0, 50) = ESPColor::BLACK; @@ -841,7 +841,7 @@ JINX_ can be used to control E1.31_ enabled ESPHome. Configuration variables: - **method** (*Optional*): Listening method, one of ``multicast`` or ``unicast``. Defaults to ``multicast``. -- **universe** (*Required*, integer): The value of universe, between 1 to 512. +- **universe** (**Required**, integer): The value of universe, between 1 to 512. - **channels** (*Optional*): The type of data. This is used to specify if it is a ``MONO``, ``RGB`` or ``RGBW`` light and in which order the colors are. Defaults to ``RGB``. diff --git a/components/mcp23Sxx.rst b/components/mcp23Sxx.rst index 71f4f35d4..2a8f9f8d5 100644 --- a/components/mcp23Sxx.rst +++ b/components/mcp23Sxx.rst @@ -57,7 +57,7 @@ Configuration variables: ~~~~~~~~~~~~~~~~~~~~~~~~ - **id** (**Required**, :ref:`config-id`): The id to use for this MCP23S08 component. -- **cs_pin** (*Required*, int): The SPI chip select pin to use +- **cs_pin** (**Required**, int): The SPI chip select pin to use - **deviceaddress** (*Optional*, int): The address of the chip. Defaults to ``0``. @@ -112,7 +112,7 @@ Configuration variables: ~~~~~~~~~~~~~~~~~~~~~~~~ - **id** (**Required**, :ref:`config-id`): The id to use for this MCP23S17 component. -- **cs_pin** (*Required*, int): The SPI chip select pin to use. +- **cs_pin** (**Required**, int): The SPI chip select pin to use. - **deviceaddress** (*Optional*, int): The address of the chip. Defaults to ``0``. diff --git a/components/mqtt.rst b/components/mqtt.rst index 75d229a06..740c51fb7 100644 --- a/components/mqtt.rst +++ b/components/mqtt.rst @@ -440,9 +440,9 @@ Publish an MQTT message on a topic using this action in automations. Configuration options: -- **topic** (*Required*, string, :ref:`templatable `): +- **topic** (**Required**, string, :ref:`templatable `): The MQTT topic to publish the message. -- **payload** (*Required*, string, :ref:`templatable `): The message content. +- **payload** (**Required**, string, :ref:`templatable `): The message content. - **qos** (*Optional*, int, :ref:`templatable `): The `Quality of Service `__ level of the topic. Defaults to 0. @@ -491,9 +491,9 @@ as seen below. Configuration options: -- **topic** (*Required*, string, :ref:`templatable `): +- **topic** (**Required**, string, :ref:`templatable `): The MQTT topic to publish the message. -- **payload** (*Required*, :ref:`lambda `): The message content. +- **payload** (**Required**, :ref:`lambda `): The message content. - **qos** (*Optional*, int): The `Quality of Service `__ level of the topic. Defaults to 0. diff --git a/components/output/template.rst b/components/output/template.rst index d2905087b..1ba6d20aa 100644 --- a/components/output/template.rst +++ b/components/output/template.rst @@ -38,7 +38,7 @@ Configuration variables: - **id** (**Required**, :ref:`config-id`): The id to use for this output component. - **type** (**Required**, string): The type of output. One of ``binary`` and ``float``. -- **on_write_action** (*Required*, :ref:`Action `): The action that should +- **on_write_action** (**Required**, :ref:`Action `): The action that should be performed when the state of the output is updated. - All other options from :ref:`Output `. @@ -54,10 +54,10 @@ See :apiclass:`output::BinaryOutput` and :apiclass:`output::FloatOutput`. ``output.template.on_write`` Action ----------------------------------- -When the state for this output is updated, the on_write action is executed. +When the state for this output is updated, the on_write action is executed. It is possible to access the state value inside Lambdas: -.. code-block:: yaml +.. code-block:: yaml - platform: template id: my_output diff --git a/components/remote_transmitter.rst b/components/remote_transmitter.rst index a2334fcb9..1d1253d35 100644 --- a/components/remote_transmitter.rst +++ b/components/remote_transmitter.rst @@ -74,7 +74,7 @@ Configuration variables: - **transmitter_id** (*Optional*, :ref:`config-id`): The remote transmitter to send the remote code with. Defaults to the first one defined in the configuration. - + If you're looking for the same functionality as is default in the ``rpi_rf`` integration in Home Assistant, you'll want to set the **times** to 10 and the **wait_time** to 0s. @@ -244,7 +244,7 @@ This :ref:`action ` sends a Pioneer infrared remote code to a rem Configuration variables: - **rc_code_1** (**Required**, int): The remote control code to send, see dumper output for more details. -- **rc_code_2** (**Optional**, int): The secondary remote control code to send; some codes are sent in +- **rc_code_2** (*Optional*, int): The secondary remote control code to send; some codes are sent in two parts. - Note that ``repeat`` is still optional, however **Pioneer devices may require that a given code is received multiple times before they will act on it.** Add this if your device does not respond to diff --git a/components/sensor/as3935.rst b/components/sensor/as3935.rst index 7d7224a1c..f8ccb4fe5 100644 --- a/components/sensor/as3935.rst +++ b/components/sensor/as3935.rst @@ -161,7 +161,7 @@ Use this if you want to use your AS3935 in SPI mode. - platform: as3935 name: "Storm Alert" -- **cs_pin** (*Required*, :ref:`Pin Schema `): The chip select pin. +- **cs_pin** (**Required**, :ref:`Pin Schema `): The chip select pin. See Also -------- diff --git a/components/sx1509.rst b/components/sx1509.rst index 1d213d192..0340af738 100644 --- a/components/sx1509.rst +++ b/components/sx1509.rst @@ -53,9 +53,9 @@ up to 8x8 matrix (i.e. 64 keys). - **keypad** (*Optional*): Add this to enable the keypad. - - **key_row** (*Required*, int): The number of keypad rows to use. This enables any number of the first 7 pins. + - **key_row** (**Required**, int): The number of keypad rows to use. This enables any number of the first 7 pins. So a value of 3 enables pins 0,1,2 to be used as the rows for the keypad matrix. This value must be between 1 and 8. - - **key_columns** (*Required*, int): The number of keypad columns to use. This enables any number of the last 7 pins. + - **key_columns** (**Required**, int): The number of keypad columns to use. This enables any number of the last 7 pins. So a value of 4 enables pins 8,9,10,11 to be used as the columns for the keypad matrix. This value must be between 1 and 8. - **sleep_time** (*Optional*, int): No key press within this time will set keypad engine to sleep. - **scan_time** (*Optional*, int): Scan time per row (must be set above debounce time). diff --git a/components/wifi.rst b/components/wifi.rst index a4738e46c..90c71b5c1 100644 --- a/components/wifi.rst +++ b/components/wifi.rst @@ -38,9 +38,9 @@ Configuration variables: that is reachable will be connected to. See :ref:`wifi-networks`. - **manual_ip** (*Optional*): Manually configure the static IP of the node. - - **static_ip** (*Required*, IPv4 address): The static IP of your node. - - **gateway** (*Required*, IPv4 address): The gateway of the local network. - - **subnet** (*Required*, IPv4 address): The subnet of the local network. + - **static_ip** (**Required***, IPv4 address): The static IP of your node. + - **gateway** (**Required**, IPv4 address): The gateway of the local network. + - **subnet** (**Required**, IPv4 address): The subnet of the local network. - **dns1** (*Optional*, IPv4 address): The main DNS server to use. - **dns2** (*Optional*, IPv4 address): The backup DNS server to use. @@ -49,8 +49,8 @@ Configuration variables: - **ap** (*Optional*): Enable an access point mode on the node. - - **ssid** (*Required*, string): The name of the access point to create. - - **password** (*Optional* string): The password for the access point. Leave empty for + - **ssid** (**Required**, string): The name of the access point to create. + - **password** (*Optional*, string): The password for the access point. Leave empty for no password. - **channel** (*Optional*, int): The channel the AP should operate on from 1 to 14. Defaults to 1. From f9e93f91b99d77a0db02606a044ac0d2b5d2b0ff Mon Sep 17 00:00:00 2001 From: Frank Bakker Date: Sat, 13 Feb 2021 09:57:10 +0100 Subject: [PATCH 14/47] Added energy sensor to hlw8012 (#707) --- components/sensor/hlw8012.rst | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/components/sensor/hlw8012.rst b/components/sensor/hlw8012.rst index fca9e526f..d6b8bd46a 100644 --- a/components/sensor/hlw8012.rst +++ b/components/sensor/hlw8012.rst @@ -31,6 +31,8 @@ be measured at the same exact points in time. name: "HLW8012 Voltage" power: name: "HLW8012 Power" + energy: + name: "HLW8012 Energy" update_interval: 60s .. note:: @@ -49,6 +51,8 @@ Configuration variables: :ref:`Sensor `. - **voltage** (*Optional*): Use the voltage value of the sensor in V (RMS). All options from :ref:`Sensor `. +- **energy** (*Optional*): Use the total energy value of the sensor in Wh. + All options from :ref:`Sensor `. - **update_interval** (*Optional*, :ref:`config-time`): The interval to check the sensor. Defaults to ``60s``. Advanced Options: From 41599332fefb93e2d94cad6dbd01c93d713779d5 Mon Sep 17 00:00:00 2001 From: Keith Burzinski Date: Sat, 13 Feb 2021 03:07:15 -0600 Subject: [PATCH 15/47] MCP230xx open drain interrupt pins (#728) --- components/mcp230xx.rst | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/components/mcp230xx.rst b/components/mcp230xx.rst index ccaefdc46..07a34c44e 100644 --- a/components/mcp230xx.rst +++ b/components/mcp230xx.rst @@ -57,6 +57,9 @@ Configuration variables: - **id** (**Required**, :ref:`config-id`): The id to use for this MCP23008 component. - **address** (*Optional*, int): The I²C address of the driver. Defaults to ``0x20``. +- **open_drain_interrupt** (*Optional*, bool): Configure the interrupt pin to open-drain mode. + Useful when the MCP23008's power supply is greater than 3.3 volts. Note that this pin + will require a pull-up resistor (to 3.3 volts) when this mode is enabled. .. _mcp23016-label: @@ -158,6 +161,9 @@ Configuration variables: - **id** (**Required**, :ref:`config-id`): The id to use for this MCP23017 component. - **address** (*Optional*, int): The I²C address of the driver. Defaults to ``0x20``. +- **open_drain_interrupt** (*Optional*, bool): Configure interrupt pins to open-drain mode. + Useful when the MCP23017's power supply is greater than 3.3 volts. Note that these pins + will require pull-up resistors (to 3.3 volts) when this mode is enabled. See Also From 5c4a645a85c86d3becea6b15b854935b652c57ea Mon Sep 17 00:00:00 2001 From: SenexCrenshaw <35600301+SenexCrenshaw@users.noreply.github.com> Date: Sun, 14 Feb 2021 00:22:12 -0500 Subject: [PATCH 16/47] Changed configuration items to snake_case (#1000) --- components/display/st7735.rst | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/components/display/st7735.rst b/components/display/st7735.rst index ac6b29e2e..1b0f7720f 100644 --- a/components/display/st7735.rst +++ b/components/display/st7735.rst @@ -34,11 +34,11 @@ There are numerous board types out there. Some initialize differently as well. T cs_pin: D1 dc_pin: D2 rotation: 0 - devicewidth: 128 - deviceheight: 160 - colstart: 0 - rowstart: 0 - eightbitcolor: true + device_width: 128 + device_height: 160 + col_start: 0 + row_start: 0 + eight_bit_color: true update_interval: 5s Configuration variables: @@ -48,11 +48,11 @@ Configuration variables: - **reset_pin** (:ref:`Pin Schema `): The RESET pin. - **cs_pin** (:ref:`Pin Schema `): The CS pin. - **dc_pin** (:ref:`Pin Schema `): The DC pin. -- **devicewidth** (**Required**, int): The device width. 128 is default -- **deviceheight** (**Required**, int): The device height. 160 is default -- **colstart** (**Required**, int): The device height. 160 is default -- **rowstart** (**Required**, int): The device height. 160 is default -- **eightbitcolor** (*Optional*, "True/False" ): 8bit mode. Default is False. This saves 50% of the buffer required for the display. +- **device_width** (**Required**, int): The device width. 128 is default +- **device_height** (**Required**, int): The device height. 160 is default +- **col_start** (**Required**, int): The device height. 160 is default +- **row_start** (**Required**, int): The device height. 160 is default +- **eight_bit_color** (*Optional*, "True/False" ): 8bit mode. Default is False. This saves 50% of the buffer required for the display. Memory notes: ~~~~~~~~~~~~~ From 1c678f4993e25232cc30e0a1507beac5d6808b15 Mon Sep 17 00:00:00 2001 From: marecabo <23156476+marecabo@users.noreply.github.com> Date: Mon, 15 Feb 2021 17:01:55 +0100 Subject: [PATCH 17/47] Add doc for device_class attribute of sensor (#996) --- components/sensor/index.rst | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/components/sensor/index.rst b/components/sensor/index.rst index 13fd48881..f24e2e25e 100644 --- a/components/sensor/index.rst +++ b/components/sensor/index.rst @@ -27,6 +27,7 @@ override them if you want to. # Optional variables: unit_of_measurement: "°C" icon: "mdi:water-percent" + device_class: "temperature" accuracy_decimals: 1 expire_after: 30s filters: @@ -40,6 +41,9 @@ Configuration variables: - **unit_of_measurement** (*Optional*, string): Manually set the unit of measurement the sensor should advertise its values with. This does not actually do any maths (conversion between units). +- **device_class** (*Optional*, string): The device class for the + sensor. See https://www.home-assistant.io/integrations/sensor/#device-class + for a list of available options. Set to ``""`` to remove the default device class of a sensor. - **icon** (*Optional*, icon): Manually set the icon to use for the sensor in the frontend. - **accuracy_decimals** (*Optional*, int): Manually set the accuracy of decimals to use when reporting values. - **filters** (*Optional*): Specify filters to use for some basic From 79adb2253f0ceaafe6568a891b8c253b900df72d Mon Sep 17 00:00:00 2001 From: Chris Nussbaum Date: Mon, 15 Feb 2021 11:32:07 -0600 Subject: [PATCH 18/47] Add sleep duration to enter deep sleep action (#995) --- components/deep_sleep.rst | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/components/deep_sleep.rst b/components/deep_sleep.rst index 1dc9d2186..3aa3188e8 100644 --- a/components/deep_sleep.rst +++ b/components/deep_sleep.rst @@ -84,6 +84,11 @@ This action makes the given deep sleep component enter deep sleep immediately. on_...: then: - deep_sleep.enter: deep_sleep_1 + sleep_duration: 20min + +Configuration options: + +- **sleep_duration** (*Optional*, :ref:`config-time`): The time duration to stay in deep sleep mode. .. _deep_sleep-prevent_action: From 5aaf09568a552c93ba5c8b7b18ce26026f1223b5 Mon Sep 17 00:00:00 2001 From: Kris Date: Wed, 17 Feb 2021 19:12:11 +0100 Subject: [PATCH 19/47] Added documentation for Waveshare 2.90inch V2 e-ink display (#1010) --- components/display/waveshare_epaper.rst | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/components/display/waveshare_epaper.rst b/components/display/waveshare_epaper.rst index 119d48717..31873ca61 100644 --- a/components/display/waveshare_epaper.rst +++ b/components/display/waveshare_epaper.rst @@ -77,6 +77,7 @@ Configuration variables: - ``2.13in-ttgo-b73`` (T5_V2.3 with B73 display tested) - ``2.70in`` (currently not working with the HAT Rev 2.1 version) - ``2.90in`` + - ``2.90inv2`` - ``2.90in-b`` (B/W rendering only) - ``4.20in`` - ``5.83in`` @@ -91,9 +92,9 @@ Configuration variables: - **full_update_every** (*Optional*, int): E-Paper displays have two modes of switching to the next image: A partial update that only changes the pixels that have changed and a full update mode that first clears the entire display and then re-draws the image. The former is much quicker and nicer, but every so often a full update needs to happen - because artifacts accumulate. On the ``1.54in``, ``2.13in`` and ``2.90in`` models you have the option to switch only - do a full-redraw every x-th time using this option. Defaults to ``30`` on the described models and a full update for - all other models. + because artifacts accumulate. On the ``1.54in``, ``2.13in``, ``2.90in``, and ``2.90inv2`` models you have the option + to switch only do a full-redraw every x-th time using this option. Defaults to ``30`` on the described models and a + full update for all other models. - **lambda** (*Optional*, :ref:`lambda `): The lambda to use for rendering the content on the display. See :ref:`display-engine` for more information. - **update_interval** (*Optional*, :ref:`config-time`): The interval to re-draw the screen. Defaults to ``10s``. From ea65e467d0e1f5eb8330e396a39c2617a6e056c8 Mon Sep 17 00:00:00 2001 From: Samuel Sieb Date: Wed, 17 Feb 2021 11:26:43 -0800 Subject: [PATCH 20/47] Add reverse_enable for max7219 (#983) --- components/display/max7219.rst | 2 ++ 1 file changed, 2 insertions(+) diff --git a/components/display/max7219.rst b/components/display/max7219.rst index cff49d444..b215fdbc8 100644 --- a/components/display/max7219.rst +++ b/components/display/max7219.rst @@ -53,6 +53,8 @@ Configuration variables: - **spi_id** (*Optional*, :ref:`config-id`): Manually specify the ID of the :ref:`SPI Component ` if you want to use multiple SPI buses. - **id** (*Optional*, :ref:`config-id`): Manually specify the ID used for code generation. +- **reverse_enable** (*Optional*, boolean): For some displays the order of the chips is reversed so you'll see "56781234" instead of "12345678". This option will adjust the output to compensate. Defaults to ``False``. + .. _display-max7219_lambda: From 896afdcfa10bf2432d09d2ab8f82cfd1f3f4540d Mon Sep 17 00:00:00 2001 From: Guillermo Ruffino Date: Sat, 20 Feb 2021 18:02:46 -0300 Subject: [PATCH 21/47] Fix format next (#1023) * Missing colon * update sun * format fix and adaptation * fix format * fix format 2 * fix format 3 * fix format * fix format * fix format * format fix * revert title as heads * rename image case-sensitive * rename again --- components/binary_sensor/ble_presence.rst | 2 +- components/binary_sensor/mpr121.rst | 18 ++- components/binary_sensor/pn532.rst | 71 +++++++--- components/binary_sensor/rc522.rst | 85 ++++++------ components/binary_sensor/rdm6300.rst | 4 +- components/binary_sensor/ttp229.rst | 20 +-- components/canbus.rst | 15 ++- components/climate/bang_bang.rst | 4 +- components/climate/ir_climate.rst | 71 +++++----- components/climate/pid.rst | 10 +- components/climate/thermostat.rst | 3 +- components/debug.rst | 2 +- components/deep_sleep.rst | 7 +- components/dfplayer.rst | 10 +- components/display/ili9341.rst | 8 +- components/display/images/inkplate.jpg | Bin 0 -> 33233 bytes components/display/index.rst | 63 ++++++++- .../display/{Inkplate.rst => inkplate6.rst} | 12 +- components/display/lcd_display.rst | 8 +- components/display/nextion.rst | 3 +- components/display/pcd8544.rst | 6 +- components/display/ssd1306.rst | 5 +- components/display/ssd1322.rst | 10 +- components/display/ssd1325.rst | 14 +- components/display/ssd1327.rst | 13 +- components/display/ssd1331.rst | 8 +- components/display/ssd1351.rst | 15 +-- components/display/st7735.rst | 14 +- components/display/st7789v.rst | 12 +- components/display/waveshare_epaper.rst | 5 +- components/esp32_ble_tracker.rst | 8 +- components/gps.rst | 5 +- components/i2c.rst | 8 +- components/light/index.rst | 43 ++++--- components/logger.rst | 3 + components/mcp230xx.rst | 12 +- components/mcp23Sxx.rst | 8 +- components/mqtt.rst | 2 +- components/output/index.rst | 13 +- components/output/mcp4725.rst | 33 +---- components/output/my9231.rst | 70 +++++----- components/output/sm16716.rst | 8 +- components/output/template.rst | 10 +- components/remote_receiver.rst | 4 +- components/sensor/apds9960.rst | 22 +++- components/sensor/as3935.rst | 121 +++++++++++------- components/sensor/custom.rst | 13 +- components/sensor/dallas.rst | 4 +- components/sensor/mcp3008.rst | 24 ++-- components/sensor/mcp9808.rst | 10 +- components/sensor/ruuvitag.rst | 2 +- components/sensor/tmp117.rst | 4 +- components/stepper/index.rst | 78 ++++++----- components/sun.rst | 8 +- components/sx1509.rst | 13 +- components/time.rst | 6 +- components/wifi.rst | 2 +- .../uart.rst => cookbook/uart_text_sensor.rst | 0 custom/custom_component.rst | 3 + guides/automations.rst | 24 ++-- guides/configuration-types.rst | 19 --- images/inkplate.jpg | Bin 0 -> 33233 bytes index.rst | 4 +- 63 files changed, 626 insertions(+), 476 deletions(-) create mode 100644 components/display/images/inkplate.jpg rename components/display/{Inkplate.rst => inkplate6.rst} (98%) rename components/text_sensor/uart.rst => cookbook/uart_text_sensor.rst (100%) create mode 100644 images/inkplate.jpg diff --git a/components/binary_sensor/ble_presence.rst b/components/binary_sensor/ble_presence.rst index 3a0d6d9ce..d19e05b33 100644 --- a/components/binary_sensor/ble_presence.rst +++ b/components/binary_sensor/ble_presence.rst @@ -40,7 +40,7 @@ Configuration variables: - **name** (**Required**, string): The name of the binary sensor. - **mac_address** (*Optional*, MAC Address): The MAC address to track for this binary sensor. Either this or ``service_uuid`` has to be present. -- **service_uuid** (*Optional*, string) 16 bit, 32 bit, or 128 bit BLE Service UUID +- **service_uuid** (*Optional*, string): 16 bit, 32 bit, or 128 bit BLE Service UUID which can be tracked if the device randomizes the MAC address. Either this or ``mac_address`` has to be present. - **id** (*Optional*, :ref:`config-id`): Manually specify diff --git a/components/binary_sensor/mpr121.rst b/components/binary_sensor/mpr121.rst index 62c584c17..181dc67be 100644 --- a/components/binary_sensor/mpr121.rst +++ b/components/binary_sensor/mpr121.rst @@ -6,6 +6,11 @@ MPR121 Capacitive Touch Sensor :image: mpr121.jpg :keywords: MPR121 +.. _mpr121-component: + +Component/Hub +------------- + The ``mpr121`` sensor platform allows you to use your MPR121 (`datasheet `__, `Adafruit`_) Capacitive Touch Sensor with ESPHome. The :ref:`I²C ` is @@ -43,8 +48,6 @@ Configuration variables: The configuration is made up of two parts: The central component, and individual Binary sensors per channel. -Base Configuration: - - **address** (*Optional*, integer): The I²C address of the sensor. Defaults to ``0x5A``. - **id** (*Optional*, :ref:`config-id`): Set the ID of this sensor. - **touch_debounce** (*Optional*, integer): The minimum length before a touch is recognized. Range is from 0 to 7. @@ -55,7 +58,16 @@ Base Configuration: and should be between 5 and 30 (lower = more sensitive). Defaults to 12. Typically the touch threshold is a little bigger than the release threshold. - **release_threshold** (*Optional*, integer): The release defines the sensitivity for touch detection and should be between 5 and 30. Defaults to 6. -Binary Sensor Configuration: +Binary Sensor +------------- + +The ``mpr121`` binary sensor allows you to use your MPR121 with ESPHome. +First, setup a :ref:`mpr121-component` and then use this binary sensor platform to create individual +binary sensors for each touch sensor. + + +Configuration variables: + - **name** (*Optional*, string): The name for the binary sensor. - **id** (*Optional*, :ref:`config-id`): Manually specify the ID used for code generation. diff --git a/components/binary_sensor/pn532.rst b/components/binary_sensor/pn532.rst index bab9ca903..ce1d5fad2 100644 --- a/components/binary_sensor/pn532.rst +++ b/components/binary_sensor/pn532.rst @@ -28,14 +28,62 @@ You will need to switch the dip switches located on the module according to the SPI is usually switch 1 OFF and switch 2 ON and I²C is usually switch 1 ON and switch 2 OFF. You will need to have the :ref:`SPI Bus ` or the :ref:`I²C Bus ` configured depending on your choice. +Over SPI +-------- + +The ``pn532_spi`` component allows you to use PN532 NFC/RFID controllers +(`datasheet `__, `Adafruit `__) +with ESPHome. This component is a global hub that establishes the connection to the PN532 via :ref:`SPI ` and +outputs its data. Using the :ref:`PN532 binary sensors ` you can then +create individual binary sensors that track if an NFC/RFID tag is currently detected by the PN532. + .. code-block:: yaml - # Example configuration for SPI (choose which one!) pn532_spi: cs_pin: D3 update_interval: 1s - # Example configuration for I²C (choose which one!) + + binary_sensor: + - platform: pn532 + uid: 74-10-37-94 + name: "PN532 NFC Tag" + +Configuration variables: +************************ + +- **cs_pin** (**Required**, :ref:`Pin Schema `): The pin on the ESP that the chip select line + is connected to. +- **update_interval** (*Optional*, :ref:`config-time`): The duration of each scan on the PN532. This affects the + duration that the individual binary sensors stay active when they're found. + If a device is not found within this time window, it will be marked as not present. Defaults to 1s. +- **on_tag** (*Optional*, :ref:`Automation `): An automation to perform + when a tag is read. See :ref:`pn532-on_tag`. +- **spi_id** (*Optional*, :ref:`config-id`): Manually specify the ID of the :ref:`SPI Component ` if you want + to use multiple SPI buses. +- **id** (*Optional*, :ref:`config-id`): Manually specify the ID for this component. + +.. figure:: images/pn532-spi.jpg + :align: center + :width: 80.0% + + Example for hooking up the PN532 via SPI. Notice the position of the two switches on the right. + +.. _pn532-on_tag: + + +Over I²C +-------- + +The ``pn532`` component allows you to use PN532 NFC/RFID controllers +(`datasheet `__, `Adafruit `__) +with ESPHome. This component is a global hub that establishes the connection to the PN532 via :ref:`I²C ` and +outputs its data. Using the :ref:`PN532 binary sensors ` you can then +create individual binary sensors that track if an NFC/RFID tag is currently detected by the PN532. + + +.. code-block:: yaml + pn532_i2c: update_interval: 1s @@ -47,29 +95,18 @@ You will need to have the :ref:`SPI Bus ` or the :ref:`I²C Bus ` conf Configuration variables: ************************ -- **cs_pin** (**Required for SPI**, :ref:`Pin Schema `): The pin on the ESP that the chip select line - is connected to. - **update_interval** (*Optional*, :ref:`config-time`): The duration of each scan on the PN532. This affects the duration that the individual binary sensors stay active when they're found. If a device is not found within this time window, it will be marked as not present. Defaults to 1s. - **on_tag** (*Optional*, :ref:`Automation `): An automation to perform when a tag is read. See :ref:`pn532-on_tag`. -- **spi_id** (*Optional*, :ref:`config-id`): Manually specify the ID of the :ref:`SPI Component ` if you want - to use multiple SPI buses. - **i2c_id** (*Optional*, :ref:`config-id`): Manually specify the ID of the :ref:`I²C Component ` if you want to use multiple I²C buses. - **id** (*Optional*, :ref:`config-id`): Manually specify the ID for this component. -.. figure:: images/pn532-spi.jpg - :align: center - :width: 80.0% - Example for hooking up the PN532 via SPI. Notice the position of the two switches on the right. - -.. _pn532-on_tag: - -``on_tag`` ----------- +``on_tag`` Action +----------------- This automation will be triggered when the PN532 module responds with a tag. This will only be triggered if the tag is changed or goes away for one cycle of ``update_interval``. @@ -120,8 +157,8 @@ Alternatively you could also send the value directly to Home Assistant via a .. _pn532-tag: -NFC/RFID Tag ------------- +``pn532`` Binary Sensor +----------------------- The ``pn532`` binary sensor platform lets you track if an NFC/RFID tag with a given unique id (``uid``) is currently being detected by the PN532 or not. diff --git a/components/binary_sensor/rc522.rst b/components/binary_sensor/rc522.rst index 5c4602887..38f170d4c 100644 --- a/components/binary_sensor/rc522.rst +++ b/components/binary_sensor/rc522.rst @@ -8,30 +8,32 @@ RC522 RFID .. _rc522-component: -Component/Hub -------------- - The ``rc522`` component allows you to use RC522 RFID controllers (`datasheet `__, `Ali Express `__) -with ESPHome. This component is a global hub that establishes the connection to the RC522 via either :ref:`SPI ` or -:ref:`I²C ` and outputs its data. Using the :ref:`RC522 binary sensors ` you can then -create individual binary sensors that track if an RFID tag is currently detected by the RC522. - -.. figure:: images/rc522-full.jpg - :align: center - :width: 60.0% - +with ESPHome. ESPHome can read the tag UID from it, every RFID tag comes with a unique +UID value. Each known tag can be associated to a binary sensor, or you can use the tag information directly. See :ref:`rc522-setting_up_tags` for information on how to setup individual binary sensors for this component. - The RC522 supports SPI, I²C and UART communication protocols, ESPHome can use either SPI or I²C. +Component/Hub +------------- + * If you have a module like the image above, it can only be used in SPI mode (`unless hacked `__) and you need to have an :ref:`SPI bus ` in your configuration with both the **miso_pin** and **mosi_pin** set. * If you have a RC522 which communicates via I²C like in the M5 Stack then you need to have an :ref:`I²C ` bus configured. -SPI Option -********** +.. figure:: images/rc522-full.jpg + :align: center + :width: 60.0% + +Over SPI +-------- + +The ``rc522_spi`` component allows you to use RC522 RFID controllers with ESPHome. This component is a global hub that +establishes the connection to the RC522 via :ref:`SPI ` (also avilable over I²C). Using the +:ref:`RC522 binary sensors ` you can then create individual binary sensors that track if +an RFID tag is currently detected by the RC522. .. code-block:: yaml @@ -45,8 +47,29 @@ SPI Option uid: 74-10-37-94 name: "RC522 RFID Tag" -I²C Option -********** +Configuration variables: +************************ + +- **cs_pin** (**Required**, :ref:`Pin Schema `): The pin on the ESP that the chip select line + is connected to. +- **spi_id** (*Optional*, :ref:`config-id`): Manually specify the ID of the :ref:`SPI Component ` if you want + to use multiple SPI buses. +- **on_tag** (*Optional*, :ref:`Automation `): An automation to perform when a tag is read. See + :ref:`rc522-on_tag`. +- **reset_pin** (*Optional*, :ref:`Pin Schema `): The pin connected to the RST line. Some tests + shows the RC522 working okay without this. +- **update_interval** (*Optional*, :ref:`config-time`): The duration of each scan on the RC522. This affects the + duration that the individual binary sensors stay active when they're found. + If a device is not found within this time window, it will be marked as not present. Defaults to ``1s``. +- **id** (*Optional*, :ref:`config-id`): Manually specify the ID for this component. + +Over I²C +-------- + +The ``rc522_i2c`` component allows you to use RC522 RFID controllers with ESPHome. This component is a global hub that +establishes the connection to the RC522 via :ref:`I²C ` (also avilable over SPI). Using the +:ref:`RC522 binary sensors ` you can then create individual binary sensors that track if +an RFID tag is currently detected by the RC522. .. code-block:: yaml @@ -63,36 +86,24 @@ I²C Option Configuration variables: ************************ +- **address** (*Optional*, int): Manually specify the I²C address of the sensor. Defaults to ``0x28``. +- **i2c_id** (*Optional*, :ref:`config-id`): Manually specify the ID of the :ref:`I²C Component ` if you want + to use multiple I²C buses. +- **on_tag** (*Optional*, :ref:`Automation `): An automation to perform when a tag is read. See + :ref:`rc522-on_tag`. - **reset_pin** (*Optional*, :ref:`Pin Schema `): The pin connected to the RST line. Some tests shows the RC522 working okay without this. - **update_interval** (*Optional*, :ref:`config-time`): The duration of each scan on the RC522. This affects the duration that the individual binary sensors stay active when they're found. If a device is not found within this time window, it will be marked as not present. Defaults to ``1s``. -- **on_tag** (*Optional*, :ref:`Automation `): An automation to perform when a tag is read. See - :ref:`rc522-on_tag`. - **id** (*Optional*, :ref:`config-id`): Manually specify the ID for this component. -SPI Only: -^^^^^^^^^ - -- **cs_pin** (**Required**, :ref:`Pin Schema `): The pin on the ESP that the chip select line - is connected to. -- **spi_id** (*Optional*, :ref:`config-id`): Manually specify the ID of the :ref:`SPI Component ` if you want - to use multiple SPI buses. - - -I²C Only: -^^^^^^^^^ - -- **address** (*Optional*, int): Manually specify the I²C address of the sensor. Defaults to ``0x28``. -- **i2c_id** (*Optional*, :ref:`config-id`): Manually specify the ID of the :ref:`I²C Component ` if you want - to use multiple I²C buses. .. _rc522-on_tag: -``on_tag`` ----------- +``on_tag`` Action +----------------- This automation will be triggered when the RC522 module responds with a tag. Please note that this can be called quite often (with an interval of ``update_interval``) as it's triggered repeatedly @@ -124,8 +135,8 @@ using :ref:`api-homeassistant_tag_scanned_action`. .. _rc522-tag: -RFID Tag --------- +``rc522`` Binary Sensor +----------------------- The ``rc522`` binary sensor platform lets you track if an RFID tag with a given unique id (``uid``) is currently being detected by the RC522 or not. diff --git a/components/binary_sensor/rdm6300.rst b/components/binary_sensor/rdm6300.rst index 2f44bb06d..0026ad3c7 100644 --- a/components/binary_sensor/rdm6300.rst +++ b/components/binary_sensor/rdm6300.rst @@ -83,8 +83,8 @@ using :ref:`api-homeassistant_tag_scanned_action`. .. _rdm6300-tag: -NFC/RFID Tag ------------- +``rdm6300`` Binary Sensor +------------------------- The ``rdm6300`` binary sensor platform lets you track if an NFC/RFID tag with a given unique id (``uid``) is currently being detected by the RDM6300 or not. diff --git a/components/binary_sensor/ttp229.rst b/components/binary_sensor/ttp229.rst index a2f52aa83..4baadf53e 100644 --- a/components/binary_sensor/ttp229.rst +++ b/components/binary_sensor/ttp229.rst @@ -22,8 +22,8 @@ There are two types of this sensor: .. _RobotDyn: https://www.tinytronics.nl/shop/nl/sensoren/touch/robotdyn-touch-module-ttp229-lsf-16-kanaals -``ttp229_lsf`` Type -------------------- +``ttp229_lsf`` Component +------------------------ .. code-block:: yaml @@ -40,19 +40,20 @@ Configuration variables: The configuration is made up of two parts: The central component, and individual Binary sensors per channel. -Base Configuration: - - **id** (*Optional*, :ref:`config-id`): Manually set the ID of this sensor. -Binary Sensor Configuration: +``ttp229_lsf`` Binary Sensor +---------------------------- + +Configuration variables: - **name** (**Required**, string): The name of the binary sensor. - **channel** (**Required**, integer): The channel number at the TTP229 the touchkey is connected to. - **id** (*Optional*, :ref:`config-id`): Manually specify the ID used for code generation. - All other options from :ref:`Binary Sensor `. -``ttp229_bsf`` Type -------------------- +``ttp229_bsf`` Component +------------------------ .. code-block:: yaml @@ -79,7 +80,10 @@ Base Configuration: SCL pin is connected to. - **id** (*Optional*, :ref:`config-id`): Manually set the ID of this component. -Binary Sensor Configuration: +``ttp229_bsf`` Binary Sensor +---------------------------- + +Configuration variables: - **name** (**Required**, string): The name of the binary sensor. - **channel** (**Required**, integer): The channel number at the TTP229 the touchkey is connected to. diff --git a/components/canbus.rst b/components/canbus.rst index cced53cb0..86ac347dd 100644 --- a/components/canbus.rst +++ b/components/canbus.rst @@ -58,7 +58,7 @@ Configuration variables: - **can_id** (**Required**, integer): default *can id* used for transmitting frames. - **use_extended_id** (*Optional*, boolean): default *False* identifies the type of *can_id*: *False*: Standard 11 bits IDs, *True*: Extended 29 bits ID -- **bit_rate** (*Optional*, one of the supported bitrates= defaults to ``125KBPS``. +- **bit_rate** (*Optional*, enum): One of the supported bitrates. Defaults to ``125KBPS``. - 5KBPS - 10KBPS @@ -80,7 +80,7 @@ Configuration variables: Automations: - **on_frame** (*Optional*, :ref:`Automation `): An automation to perform when ability - CAN Frame is received. See below. + CAN Frame is received. See :ref:`canbus-on-frame`. .. _canbus-on-frame: @@ -107,8 +107,8 @@ This automation will be triggered when a can frame is received. A variable ``x` then: light.toggle: light1 -Transmit Frame Action -********************* +``canbus.send`` Action +********************** The can bus can transmit frames by means of the ``canbus.send`` action. There are several forms to use it: @@ -141,14 +141,17 @@ Configuration variables: - **use_extended_id** (*Optional*, boolean): default *False* identifies the type of *can_id*: *False*: Standard 11 Bit IDs, *True*: Extended 29Bit ID -MCP2515 -------- +MCP2515 Component +----------------- The MCP2515 is a spi device and therfore you must first add the configuration for the spi bus to your file. You need to have an :ref:`SPI bus ` in your configuration with both the **mosi_pin** and **miso_pin** set. For wireing up the MSP2515 please refer to the section below. +Configuration variables: +************************ + - **cs_pin** (**Required**, :ref:`Pin Schema `): Is used to tell the receiving SPI device when it should listen for data on the SPI bus. Each device has an individual ``CS`` line. Sometimes also called ``SS``. diff --git a/components/climate/bang_bang.rst b/components/climate/bang_bang.rst index 86d1140da..91555e84b 100644 --- a/components/climate/bang_bang.rst +++ b/components/climate/bang_bang.rst @@ -66,8 +66,8 @@ Do note that the actions are only called when the current temperature leaves the idle_action: - switch.turn_off: heater -Configuration variables ------------------------ +Configuration variables: +------------------------ - **sensor** (**Required**, :ref:`config-id`): The sensor that is used to measure the current temperature. - **default_target_temperature_low** (**Required**, float): The default low target temperature for diff --git a/components/climate/ir_climate.rst b/components/climate/ir_climate.rst index 2de34ef79..fe0a8bbfe 100755 --- a/components/climate/ir_climate.rst +++ b/components/climate/ir_climate.rst @@ -15,30 +15,30 @@ as your remote unit would do. There is a growing list of compatible units. If your unit is not listed below you can fill a feature request so it will be added (see FAQ). -+------------------------+---------------------+----------------------+------------------------------------+ -| Name | Platform name | Supports receiver | | -| | | | | -+========================+=====================+======================+====================================+ -| Coolix | ``coolix`` | yes | | -+------------------------+---------------------+----------------------+------------------------------------+ -| Daikin | ``daikin`` | yes | | -+------------------------+---------------------+----------------------+------------------------------------+ -| Fujitsu General | ``fujitsu_general`` | | | -+------------------------+---------------------+----------------------+------------------------------------+ -| Mitsubishi | ``mitsubishi`` | | | -+------------------------+---------------------+----------------------+------------------------------------+ -| TCL112, Fuego | ``tcl112`` | yes | | -+------------------------+---------------------+----------------------+------------------------------------+ -| Toshiba | ``toshiba`` | yes | | -+------------------------+---------------------+----------------------+------------------------------------+ -| Yashima | ``yashima`` | | | -+------------------------+---------------------+----------------------+------------------------------------+ -| Whirlpool | ``whirlpool`` | yes | :ref:`more info` | -+------------------------+---------------------+----------------------+------------------------------------+ -| LG | ``climate_ir_lg`` | yes | | -+------------------------+---------------------+----------------------+------------------------------------+ -| Hitachi | ``hitachi_ac344`` | yes | | -+------------------------+---------------------+----------------------+------------------------------------+ ++---------------------------------------+---------------------+----------------------+ +| Name | Platform name | Supports receiver | +| | | | ++=======================================+=====================+======================+ +| Coolix | ``coolix`` | yes | ++---------------------------------------+---------------------+----------------------+ +| Daikin | ``daikin`` | yes | ++---------------------------------------+---------------------+----------------------+ +| Fujitsu General | ``fujitsu_general`` | | ++---------------------------------------+---------------------+----------------------+ +| Mitsubishi | ``mitsubishi`` | | ++---------------------------------------+---------------------+----------------------+ +| TCL112, Fuego | ``tcl112`` | yes | ++---------------------------------------+---------------------+----------------------+ +| Toshiba | ``toshiba`` | yes | ++---------------------------------------+---------------------+----------------------+ +| Yashima | ``yashima`` | | ++---------------------------------------+---------------------+----------------------+ +| :ref:`Whirlpool`| ``whirlpool`` | yes | ++---------------------------------------+---------------------+----------------------+ +| :ref:`LG` | ``climate_ir_lg`` | yes | ++---------------------------------------+---------------------+----------------------+ +| Hitachi | ``hitachi_ac344`` | yes | ++---------------------------------------+---------------------+----------------------+ This component requires that you have setup a :doc:`/components/remote_transmitter`. @@ -110,23 +110,32 @@ IR receiver. name: "Living Room AC" receiver_id: rcvr -.. _model_whirlpool: +.. _climate_ir_whirlpool: -Whirlpool ---------- +``whirlpool`` Climate +--------------------- Additional configuration is available for this model + +Configuration variables: + - **model** (*Optional*, string): There are two valid models - * ``MODEL_DG11J1_3A``: Temperature range is from 18 to 32 (default) - * ``MODEL_DG11J1_91``: Temperature range is from 16 to 30 + -* ``DG11J1-3A``: Temperature range is from 18 to 32 (default) + -* ``DG11J1-91``: Temperature range is from 16 to 30 -LG ---------- + +.. _climate_ir_lg: + +``climate_ir_lg`` Climate +------------------------- Additional configuration is available for this platform + +Configuration variables: + - **header_high** (*Optional*, :ref:`config-time`): time for the high part of the header for the LG protocol. Defaults to ``8000us`` - **header_low** (*Optional*, :ref:`config-time`): time for the low part of the header for the LG protocol. Defaults to ``4000us`` - **bit_high** (*Optional*, :ref:`config-time`): time for the high part of any bit in the LG protocol. Defaults to ``600us`` diff --git a/components/climate/pid.rst b/components/climate/pid.rst index 8ec028ea3..7d691bd98 100644 --- a/components/climate/pid.rst +++ b/components/climate/pid.rst @@ -215,8 +215,8 @@ Configuration variables: ``climate.pid.set_control_parameters`` Action --------------------------------------------- -This action sets new values for the control parameters of the PID controller. This can be -used to manually tune the PID controller. Make sure to take update the values you want on +This action sets new values for the control parameters of the PID controller. This can be +used to manually tune the PID controller. Make sure to take update the values you want on the YAML file! They will reset on the next reboot. .. code-block:: yaml @@ -247,14 +247,14 @@ conditions to avoid the control loop to overshoot (or undershoot) a target. on_...: # Basic - - climate.pid.reset_integral_term: pid_climate + - climate.pid.reset_integral_term: pid_climate Configuration variables: - **id** (**Required**, :ref:`config-id`): ID of the PID Climate being reset. -PID Climate Sensor ------------------- +``pid`` Sensor +-------------- Additionally, the PID climate platform provides an optional sensor platform to monitor the calculated PID parameters to help finding good PID values. diff --git a/components/climate/thermostat.rst b/components/climate/thermostat.rst index 47943879e..2d6f52549 100644 --- a/components/climate/thermostat.rst +++ b/components/climate/thermostat.rst @@ -133,8 +133,7 @@ Examples: Got all that? Great. Let's take a closer look at some configuration. -Configuration Variables ------------------------ +Configuration Variables: The thermostat controller uses the sensor to determine whether it should heat or cool. diff --git a/components/debug.rst b/components/debug.rst index e6c592006..182326a03 100644 --- a/components/debug.rst +++ b/components/debug.rst @@ -22,7 +22,7 @@ a bunch of useful information like reset reason, free heap size, ESPHome version logger: level: debug -There are no configuration variables for this component. +No configuration variables. See Also -------- diff --git a/components/deep_sleep.rst b/components/deep_sleep.rst index 3aa3188e8..a261d4101 100644 --- a/components/deep_sleep.rst +++ b/components/deep_sleep.rst @@ -33,9 +33,8 @@ Configuration variables: - **run_duration** (*Optional*, :ref:`config-time`): The time duration the node should be active, i.e. run code. - **sleep_duration** (*Optional*, :ref:`config-time`): The time duration to stay in deep sleep mode. -- **wakeup_pin** (*Optional*, :ref:`Pin Schema `): - Only on ESP32. A pin to wake up to once in deep sleep mode. Use the inverted property to wake up - to LOW signals. +- **wakeup_pin** (*Optional*, :ref:`Pin Schema `): Only on ESP32. A pin to wake up to once + in deep sleep mode. Use the inverted property to wake up to LOW signals. - **wakeup_pin_mode** (*Optional*): Only on ESP32. Specify how to handle waking up from a ``wakeup_pin`` if the wakeup pin is already in the state with which it would wake up when attempting to enter deep sleep. See :ref:`deep_sleep-esp32_wakeup_pin_mode`. Defaults to ``IGNORE`` @@ -116,7 +115,7 @@ Useful for it will no longer enter deep sleep mode and you can upload your OTA update. Remember to turn "OTA mode" off again after the OTA update by sending a MQTT message with the payload - ``OFF``. To enter the the deep sleep again after the OTA update send a message on the topic ``livingroom/sleep_mode`` + ``OFF``. To enter the the deep sleep again after the OTA update send a message on the topic ``livingroom/sleep_mode`` with payload ``ON``. Deep sleep will start immediately. Don't forget to delete the payload before the node wakes up again. diff --git a/components/dfplayer.rst b/components/dfplayer.rst index 115654dab..62ad36a46 100644 --- a/components/dfplayer.rst +++ b/components/dfplayer.rst @@ -21,10 +21,10 @@ Overview -------- The module can be powered by the 3.3V output of an NodeMCU. For communication you can connect only -the ``tx_pin`` of the ``uart`` bus to the module's ``RX`` but if you need feedback of playback active +the ``tx_pin`` of the ``uart`` bus to the module's ``RX`` but if you need feedback of playback active you will also need to connect the ``rx_pin`` to the module's ``TX``. For best quality audio a powered stereo speaker can be connected to the modules ``DAC_R``, -``DAC_I`` and ``GND``, alternatively the module features a built-in 3W audio amplifier, in that case +``DAC_L`` and ``GND``, alternatively the module features a built-in 3W audio amplifier, in that case the pins ``SPK_1`` and ``SPK_2`` should be connected to one passive speaker and a 5V 1A power supply will be required. @@ -115,8 +115,8 @@ Configuration options: ------------------------------- Plays files inside numbered folders, folders must be numbered from 1 and with leading -zeros. Like `01`, `02`, ... etc. Files inside the folders must be numbered with two -leading zeros, like `001.mp3`, `002.mp3`, ... etc. +zeros. Like ``01``, ``02``, ... etc. Files inside the folders must be numbered with two +leading zeros, like ``001.mp3``, ``002.mp3``, ... etc. Folder numbers can range from 1 to 99 and file name from 1 to 255 or folder number from 1 to 10 and file number from 1 to 1000. @@ -178,7 +178,7 @@ Changes volume. Configuration options: - **volume** (**Required**, int, :ref:`templatable `): The volume value. - Valid values goes from 0 to 30. + Valid values goes from ``0`` to ``30``. ``dfplayer.set_eq`` Action -------------------------- diff --git a/components/display/ili9341.rst b/components/display/ili9341.rst index 536d6c96f..612a89b91 100644 --- a/components/display/ili9341.rst +++ b/components/display/ili9341.rst @@ -33,13 +33,13 @@ beyond the typical SPI connections, it is better suited for use with the ESP32. dc_pin: 27 led_pin: 32 ### see note below ### reset_pin: 33 - + lambda: |- it.fill(COLOR_BLACK); it.print(0, 0, id(my_font), id(my_red), TextAlign::TOP_LEFT, "Hello World!"); - -Configuration variables -*********************** + +Configuration variables: +************************ - **model** (**Required**): The model of the display. Options are: diff --git a/components/display/images/inkplate.jpg b/components/display/images/inkplate.jpg new file mode 100644 index 0000000000000000000000000000000000000000..a373c8082cb9688984eb329fe6418df658792c3b GIT binary patch literal 33233 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 E08z>P0{{R3 literal 0 HcmV?d00001 diff --git a/components/display/index.rst b/components/display/index.rst index c8bec3c01..be60356ba 100644 --- a/components/display/index.rst +++ b/components/display/index.rst @@ -312,11 +312,41 @@ use any string you pass it, like ``"ON"`` or ``"OFF"``. Displaying Time *************** -With ESPHome you can also display the current time using the NTP protocol. Please see the example :ref:`here `. +You can display current time using a time component. Please see the example :ref:`here `. + + +.. _config-color: + +Color +***** + +When using RGB-capable displays in ESPHome you may wish to use custom colors. +A ``color`` component exists for just this purpose: + +.. code-block:: yaml + + color: + - id: my_light_red + red: 100% + green: 20% + blue: 25% + white: 0% + + +Configuration variables: + +- **red** (*Optional*, percentage): The percentage of the red component. Defaults to ``100%``. +- **green** (*Optional*, percentage): The percentage of the green component. Defaults to ``100%``. +- **blue** (*Optional*, percentage): The percentage of the blue component. Defaults to ``100%``. +- **white** (*Optional*, percentage): The percentage of the white component. Defaults to ``100%``. + +RGB displays use red, green, and blue, while grayscale displays may use white. Images ****** +Use this component to store graphical images on the device, you can then draw the images on compatible displays. + .. code-block:: yaml image: @@ -329,7 +359,7 @@ Configuration variables: - **file** (**Required**, string): The path (relative to where the .yaml file is) of the image file. - **id** (**Required**, :ref:`config-id`): The ID with which you will be able to reference the image later in your display code. -- **resize** (*Optional*, int): If set, this will resize the image to fit inside the given dimensions ``WIDTHxHEIGHT`` +- **resize** (*Optional*, string): If set, this will resize the image to fit inside the given dimensions ``WIDTHxHEIGHT`` and preserve the aspect ratio. - **type** (*Optional*): Specifies how to encode image internally. Defaults to ``BINARY``. @@ -379,8 +409,8 @@ as the additional parameters. Animation ********* -Animation inherits all options from the image component. -It adds an additional method to change the shown picture of a gif. +Allows to use animated images on displays. Animation inherits all options from the image component. +It adds an additional lambda method: ``next_frame()`` to change the shown picture of a gif. .. code-block:: yaml @@ -417,6 +447,30 @@ This can be combined with all Lambdas: lambda: |- id(my_animation).next_frame(); + +Configuration variables: +^^^^^^^^^^^^^^^^^^^^^^^^ + +- **file** (**Required**, string): The path (relative to where the .yaml file is) of the gif file. +- **id** (**Required**, :ref:`config-id`): The ID with which you will be able to reference the animation later + in your display code. +- **resize** (*Optional*, string): If set, this will resize all the frames to fit inside the given dimensions ``WIDTHxHEIGHT`` + and preserve the aspect ratio. +- **type** (*Optional*): Specifies how to encode each frame internally. Defaults to ``BINARY``. + + - ``BINARY``: Two colors, suitable for 1 color displays or 2 color image in color displays. Uses 1 bit + per pixel, 8 pixels per byte. + - ``GREYSCALE``: Full scale grey. Uses 8 bits per pixel, 1 pixel per byte. + - ``RGB24``: Full RGB color stored. Uses 3 bytes per pixel. + +- **dither** (*Optional*): Specifies which dither method used to process each frame, only used in GREYSCALE and BINARY type image. + Defaults to ``NONE``. You can read more about it `here `__ + and `here `__. + + - ``NONE``: Every pixel convert to its nearest color. + - ``FLOYDSTEINBERG``: Uses Floyd-Steinberg dither to approximate the original image luminosity levels. + + .. _display-pages: Display Pages @@ -486,6 +540,7 @@ You can then switch between these with three different actions: - display.page.show_next: my_display - component.update: my_display + See Also -------- diff --git a/components/display/Inkplate.rst b/components/display/inkplate6.rst similarity index 98% rename from components/display/Inkplate.rst rename to components/display/inkplate6.rst index 8158629c1..9c5f167c7 100644 --- a/components/display/Inkplate.rst +++ b/components/display/inkplate6.rst @@ -3,13 +3,13 @@ Inkplate 6 .. seo:: :description: Instructions for setting up Inkplate E-Paper displays in ESPHome. - :image: Inkplate.jpg + :image: inkplate.jpg All-in-one e-paper display ``Inkplate 6`` Inkplate 6 is a powerful, Wi-Fi enabled ESP32 based six-inch e-paper display – recycled from a Kindle e-reader. Its main feature is simplicity. Learn more at `Inkplate's website `__ -.. figure:: images/Inkplate.jpg +.. figure:: images/inkplate.jpg :align: center :width: 75.0% @@ -25,7 +25,7 @@ Learn more at `Inkplate's website `__ address: 0x20 display: - - platform: inkplate + - platform: inkplate6 id: inkplate_display greyscale: false partial_updating: false @@ -66,8 +66,8 @@ Learn more at `Inkplate's website `__ It just ignores the function call in that case. -Configuration variables -*********************** +Configuration variables: +************************ - **id** (*Optional*, :ref:`config-id`): Manually specify the ID used for code generation. - **greyscale** (*Optional*, boolean): Makes the screen display 3 bit colors. Defaults to ``False`` @@ -224,7 +224,7 @@ Wi-Fi, API, and OTA configuration. display: - - platform: inkplate + - platform: inkplate6 id: inkplate_display greyscale: false partial_updating: false diff --git a/components/display/lcd_display.rst b/components/display/lcd_display.rst index 87be3d261..7ad46b352 100644 --- a/components/display/lcd_display.rst +++ b/components/display/lcd_display.rst @@ -7,8 +7,8 @@ Character-Based LCD Display .. _lcd-pcf8574: -PCF8574 -------- +lcd_pcf8574 Component +--------------------- The ``lcd_pcf8574`` display platform allows you to use standard character-based LCD displays like `this one `__ @@ -56,8 +56,8 @@ Configuration variables: .. _lcd-gpio: -GPIO ----- +lcd_gpio Component +------------------ The ``lcd_gpio`` display platform allows you to use standard character-based LCD displays like `this one `__ with ESPHome. This integration is only for LCD displays that display individual characters on a screen (usually 16-20 columns diff --git a/components/display/nextion.rst b/components/display/nextion.rst index 5db6e15ec..4270e0e29 100644 --- a/components/display/nextion.rst +++ b/components/display/nextion.rst @@ -39,8 +39,7 @@ Configuration variables: - **uart_id** (*Optional*, :ref:`config-id`): The ID of the :ref:`UART bus ` you wish to use for this display. Use this if you want to use multiple UART buses at once. -- **brightness** (*Optional*, percentage): Set the screen brightness. Must be in range - ``0%`` to ``100%`` or ``0.0`` to ``1.0``. Defaults to ``100%``. +- **brightness** (*Optional*, percentage): Set display brightness in %. Defaults to ``100%`` - **lambda** (*Optional*, :ref:`lambda `): The lambda to use for rendering the content on the nextion display. See :ref:`display-nextion_lambda` for more information. - **update_interval** (*Optional*, :ref:`config-time`): The interval to call the lambda to update the display. diff --git a/components/display/pcd8544.rst b/components/display/pcd8544.rst index a8fda0a19..21812e19e 100644 --- a/components/display/pcd8544.rst +++ b/components/display/pcd8544.rst @@ -53,9 +53,9 @@ To use a backlight LIGHT pin needs to be connected to ground. If connected to GP Configuration variables: ************************ -- **reset_pin** (**Required**)(:ref:`Pin Schema `): The RESET pin. -- **cs_pin** (**Required**)(:ref:`Pin Schema `): The CS pin. -- **dc_pin** (**Required**)(:ref:`Pin Schema `): The DC pin. +- **reset_pin** (**Required**, :ref:`Pin Schema `): The RESET pin. +- **cs_pin** (**Required**, :ref:`Pin Schema `): The CS pin. +- **dc_pin** (**Required**, :ref:`Pin Schema `): The DC pin. - **lambda** (*Optional*, :ref:`lambda `): The lambda to use for rendering the content on the display. See :ref:`display-engine` for more information. - **update_interval** (*Optional*, :ref:`config-time`): The interval to re-draw the screen. Defaults to ``5s``. diff --git a/components/display/ssd1306.rst b/components/display/ssd1306.rst index dee36f434..a60b0f170 100644 --- a/components/display/ssd1306.rst +++ b/components/display/ssd1306.rst @@ -61,7 +61,7 @@ Configuration variables: - **address** (*Optional*, int): Manually specify the :ref:`I²C ` address of the display. Defaults to 0x3C. - **rotation** (*Optional*): Set the rotation of the display. Everything you draw in ``lambda:`` will be rotated by this option. One of ``0°`` (default), ``90°``, ``180°``, ``270°``. -- **brightness** (*Optional*): Set the screen brightness in percents 0.0-1.0. Defaults to `1.0` that corresponds to 100%. +- **brightness** (*Optional*, percentage): Set display brightness in %. Defaults to ``100%`` - **external_vcc** (*Optional*, boolean): Set this to true if you have the VCC pin connected to an external power supply. Defaults to ``false``. - **lambda** (*Optional*, :ref:`lambda `): The lambda to use for rendering the content on the display. @@ -69,7 +69,6 @@ Configuration variables: - **update_interval** (*Optional*, :ref:`config-time`): The interval to re-draw the screen. Defaults to ``5s``. - **pages** (*Optional*, list): Show pages instead of a single lambda. See :ref:`display-pages`. - **id** (*Optional*, :ref:`config-id`): Manually specify the ID used for code generation. -- **brightness** (*Optional*, float): Manually override display brightness in %. Defaults to ``100%`` .. note:: @@ -133,6 +132,7 @@ Configuration variables: - **reset_pin** (*Optional*, :ref:`Pin Schema `): The RESET pin. Defaults to not connected. - **rotation** (*Optional*): Set the rotation of the display. Everything you draw in ``lambda:`` will be rotated by this option. One of ``0°`` (default), ``90°``, ``180°``, ``270°``. +- **brightness** (*Optional*, percentage): Set display brightness in %. Defaults to ``100%`` - **external_vcc** (*Optional*, boolean): Set this to true if you have the VCC pin connected to an external power supply. Defaults to ``false``. - **lambda** (*Optional*, :ref:`lambda `): The lambda to use for rendering the content on the display. @@ -142,7 +142,6 @@ Configuration variables: - **spi_id** (*Optional*, :ref:`config-id`): Manually specify the ID of the :ref:`SPI Component ` if you want to use multiple SPI buses. - **id** (*Optional*, :ref:`config-id`): Manually specify the ID used for code generation. -- **brightness** (*Optional*, float): Manually override display brightness in %. Defaults to ``100%`` See Also -------- diff --git a/components/display/ssd1322.rst b/components/display/ssd1322.rst index d2a0dd249..35fcc545e 100644 --- a/components/display/ssd1322.rst +++ b/components/display/ssd1322.rst @@ -7,8 +7,8 @@ SSD1322 OLED Display .. _ssd1322-spi: -Usage ------ +``ssd1322_spi`` Component +------------------------- The ``ssd1322_spi`` display platform allows you to use SSD1322 (`datasheet `__, @@ -47,9 +47,9 @@ Configuration variables: - ``SSD1322 256x64`` -- **reset_pin** (:ref:`Pin Schema `): The RESET pin. -- **cs_pin** (:ref:`Pin Schema `): The CS pin. -- **dc_pin** (:ref:`Pin Schema `): The DC pin. +- **dc_pin** (**Required**, :ref:`Pin Schema `): The DC pin. +- **reset_pin** (*Optional*, :ref:`Pin Schema `): The RESET pin. +- **cs_pin** (*Optional*, :ref:`Pin Schema `): The CS pin. - **lambda** (*Optional*, :ref:`lambda `): The lambda to use for rendering the content on the display. See :ref:`display-engine` for more information. - **update_interval** (*Optional*, :ref:`config-time`): The interval to re-draw the screen. Defaults to ``5s``. diff --git a/components/display/ssd1325.rst b/components/display/ssd1325.rst index 778b7093a..45740b025 100644 --- a/components/display/ssd1325.rst +++ b/components/display/ssd1325.rst @@ -7,8 +7,8 @@ SSD1325/7 OLED Display .. _ssd1325-spi: -Usage ------ +``ssd1325_spi`` Component +------------------------- The ``ssd1325_spi`` display platform allows you to use SSD1325 (`datasheet `__, @@ -44,8 +44,8 @@ that explains how to do this, if necessary. lambda: |- it.print(0, 0, id(font), "Hello World!"); -Configuration Variables -*********************** +Configuration variables: +************************ - **model** (**Required**): The model of the display. Options are: @@ -54,10 +54,10 @@ Configuration Variables - ``SSD1325 96x16`` - ``SSD1325 64x48`` -- **reset_pin** (:ref:`Pin Schema `): The RESET pin. -- **cs_pin** (:ref:`Pin Schema `): The pin on the ESP that that the CS line is connected to. +- **dc_pin** (**Required**, :ref:`Pin Schema `): The DC pin. +- **reset_pin** (*Optional*, :ref:`Pin Schema `): The RESET pin. +- **cs_pin** (*Optional*, :ref:`Pin Schema `): The pin on the ESP that that the CS line is connected to. The CS line can be connected to GND if this is the only device on the SPI bus. -- **dc_pin** (:ref:`Pin Schema `): The DC pin. - **lambda** (*Optional*, :ref:`lambda `): The lambda to use for rendering the content on the display. See :ref:`display-engine` for more information. - **update_interval** (*Optional*, :ref:`config-time`): The interval to re-draw the screen. Defaults to ``5s``. diff --git a/components/display/ssd1327.rst b/components/display/ssd1327.rst index a958e15dc..3ba15b3f8 100644 --- a/components/display/ssd1327.rst +++ b/components/display/ssd1327.rst @@ -41,8 +41,8 @@ ESP; this is recommended as it improves reliability. lambda: |- it.print(0, 0, id(font), "Hello World!"); -Configuration variables -*********************** +Configuration variables: +************************ - **model** (**Required**): The model of the display. At present, only one option is available: @@ -52,13 +52,12 @@ Configuration variables - **address** (*Optional*, int): Manually specify the :ref:`I²C ` address of the display. Defaults to 0x3D. - **rotation** (*Optional*): Set the rotation of the display. Everything you draw in ``lambda:`` will be rotated by this option. One of ``0°`` (default), ``90°``, ``180°``, ``270°``. -- **brightness** (*Optional*): Set the screen brightness in percents 0.0-1.0. Defaults to `1.0` that corresponds to 100%. +- **brightness** (*Optional*, percentage): Set display brightness in %. Defaults to ``100%`` - **lambda** (*Optional*, :ref:`lambda `): The lambda to use for rendering the content on the display. See :ref:`display-engine` for more information. - **update_interval** (*Optional*, :ref:`config-time`): The interval to re-draw the screen. Defaults to ``5s``. - **pages** (*Optional*, list): Show pages instead of a single lambda. See :ref:`display-pages`. - **id** (*Optional*, :ref:`config-id`): Manually specify the ID used for code generation. -- **brightness** (*Optional*, float): Manually override display brightness in %. Defaults to ``100%`` .. note:: @@ -101,8 +100,8 @@ available pin on the ESP; this is recommended as it improves reliability. lambda: |- it.print(0, 0, id(font), "Hello World!"); -Configuration variables -*********************** +Configuration variables: +************************ - **model** (**Required**): The model of the display. At present, only one option is available: @@ -113,6 +112,7 @@ Configuration variables - **reset_pin** (*Optional*, :ref:`Pin Schema `): The RESET pin. Defaults to not connected. - **rotation** (*Optional*): Set the rotation of the display. Everything you draw in ``lambda:`` will be rotated by this option. One of ``0°`` (default), ``90°``, ``180°``, ``270°``. +- **brightness** (*Optional*, percentage): Set display brightness in %. Defaults to ``100%`` - **lambda** (*Optional*, :ref:`lambda `): The lambda to use for rendering the content on the display. See :ref:`display-engine` for more information. - **update_interval** (*Optional*, :ref:`config-time`): The interval to re-draw the screen. Defaults to ``5s``. @@ -120,7 +120,6 @@ Configuration variables - **spi_id** (*Optional*, :ref:`config-id`): Manually specify the ID of the :ref:`SPI Component ` if you want to use multiple SPI buses. - **id** (*Optional*, :ref:`config-id`): Manually specify the ID used for code generation. -- **brightness** (*Optional*, float): Manually override display brightness in %. Defaults to ``100%`` Configuration examples ********************** diff --git a/components/display/ssd1331.rst b/components/display/ssd1331.rst index effe29fb2..525571b04 100644 --- a/components/display/ssd1331.rst +++ b/components/display/ssd1331.rst @@ -39,13 +39,13 @@ require 5 volts connected to their ``+`` pin. Connect the GND or G pin to ground lambda: |- it.print(0, 0, id(font), "Hello World!"); -Configuration variables -*********************** +Configuration variables: +************************ -- **reset_pin** (:ref:`Pin Schema `): The RESET pin. +- **dc_pin** (**Required**, :ref:`Pin Schema `): The DC pin. +- **reset_pin** (*Optional*, :ref:`Pin Schema `): The RESET pin. - **cs_pin** (*Optional*, :ref:`Pin Schema `): The pin on the ESP that that the CS line is connected to. The CS line can be connected to GND if this is the only device on the SPI bus. -- **dc_pin** (:ref:`Pin Schema `): The DC pin. - **lambda** (*Optional*, :ref:`lambda `): The lambda to use for rendering the content on the display. See :ref:`display-engine` for more information. - **update_interval** (*Optional*, :ref:`config-time`): The interval to re-draw the screen. Defaults to ``5s``. diff --git a/components/display/ssd1351.rst b/components/display/ssd1351.rst index 728275a31..64d46c112 100644 --- a/components/display/ssd1351.rst +++ b/components/display/ssd1351.rst @@ -7,8 +7,8 @@ SSD1351 OLED Display .. _ssd1351-spi: -Usage ------ +``ssd1351_spi`` Component +------------------------- The ``ssd1351_spi`` display platform allows you to use SSD1351 (`datasheet `__, @@ -43,18 +43,17 @@ which should be connected to 3.3 volts only. Connect the GND or G pin to GND. lambda: |- it.print(0, 0, id(font), "Hello World!"); -Configuration variables -*********************** +Configuration variables: +************************ - **model** (**Required**): The model of the display. Options are: - ``SSD1351 128x128`` (SSD1351 with 128 columns and 128 rows) - ``SSD1351 128x96`` (SSD1351 with 128 columns and 96 rows) -- **reset_pin** (:ref:`Pin Schema `): The RESET pin. -- **cs_pin** (*Optional*, :ref:`Pin Schema `): The pin on the ESP that that the CS line is connected to. - The CS line can be connected to GND if this is the only device on the SPI bus. -- **dc_pin** (:ref:`Pin Schema `): The DC pin. +- **dc_pin** (**Required**, :ref:`Pin Schema `): The DC pin. +- **cs_pin** (**Required**, :ref:`Pin Schema `): The pin on the ESP that that the CS line is connected to. +- **reset_pin** (*Optional*, :ref:`Pin Schema `): The RESET pin. - **lambda** (*Optional*, :ref:`lambda `): The lambda to use for rendering the content on the display. See :ref:`display-engine` for more information. - **update_interval** (*Optional*, :ref:`config-time`): The interval to re-draw the screen. Defaults to ``5s``. diff --git a/components/display/st7735.rst b/components/display/st7735.rst index 1b0f7720f..c01dc0e12 100644 --- a/components/display/st7735.rst +++ b/components/display/st7735.rst @@ -6,7 +6,7 @@ ST7735 Display :keywords: ST7735 :image: ST7735.png -ST7735 Display Driver. +ST7735 Display Driver. Usage ----- @@ -32,7 +32,7 @@ There are numerous board types out there. Some initialize differently as well. T model: "INITR_18BLACKTAB" reset_pin: D4 cs_pin: D1 - dc_pin: D2 + dc_pin: D2 rotation: 0 device_width: 128 device_height: 160 @@ -45,21 +45,21 @@ Configuration variables: ~~~~~~~~~~~~~~~~~~~~~~~~ - **model** (**Required**, "See Models Below"): This the model to use. INITR_BLACKTAB is the default -- **reset_pin** (:ref:`Pin Schema `): The RESET pin. -- **cs_pin** (:ref:`Pin Schema `): The CS pin. -- **dc_pin** (:ref:`Pin Schema `): The DC pin. +- **cs_pin** (**Required**, :ref:`Pin Schema `): The CS pin. +- **dc_pin** (**Required**, :ref:`Pin Schema `): The DC pin. - **device_width** (**Required**, int): The device width. 128 is default - **device_height** (**Required**, int): The device height. 160 is default - **col_start** (**Required**, int): The device height. 160 is default - **row_start** (**Required**, int): The device height. 160 is default -- **eight_bit_color** (*Optional*, "True/False" ): 8bit mode. Default is False. This saves 50% of the buffer required for the display. +- **eight_bit_color** (*Optional*, "True/False" ): 8bit mode. Default is False. This saves 50% of the buffer required for the display. +- **reset_pin** (*Optional*, :ref:`Pin Schema `): The RESET pin. Memory notes: ~~~~~~~~~~~~~ - 8Bit color saves 50% of the buffer required. - eightbitcolor: True 160x128 = 20480 *Important for memory constrained devices* -- eightbitcolor: False 160x128x2 = 40960 +- eightbitcolor: False 160x128x2 = 40960 Models: diff --git a/components/display/st7789v.rst b/components/display/st7789v.rst index d595f5f3f..8bd55f2a0 100644 --- a/components/display/st7789v.rst +++ b/components/display/st7789v.rst @@ -50,13 +50,13 @@ hardwired programming. (OTA updates are of course possible after ESPHome is init When using the TTGO T-Display module, the GPIO pin numbers above *cannot be changed* as they are hardwired within the module/PCB. -Configuration variables -*********************** +Configuration variables: +************************ -- **backlight_pin** (:ref:`Pin Schema `): The display's backlight pin. -- **cs_pin** (:ref:`Pin Schema `): The CS pin. -- **dc_pin** (:ref:`Pin Schema `): The DC pin. -- **reset_pin** (:ref:`Pin Schema `): The RESET pin. +- **backlight_pin** (**Required**, :ref:`Pin Schema `): The display's backlight pin. +- **cs_pin** (**Required**, :ref:`Pin Schema `): The CS pin. +- **dc_pin** (**Required**, :ref:`Pin Schema `): The DC pin. +- **reset_pin** (**Required**, :ref:`Pin Schema `): The RESET pin. - **lambda** (*Optional*, :ref:`lambda `): The lambda to use for rendering the content on the display. See :ref:`display-engine` for more information. - **update_interval** (*Optional*, :ref:`config-time`): The interval to re-draw the screen. Defaults to ``5s``. diff --git a/components/display/waveshare_epaper.rst b/components/display/waveshare_epaper.rst index 31873ca61..695569b60 100644 --- a/components/display/waveshare_epaper.rst +++ b/components/display/waveshare_epaper.rst @@ -8,9 +8,8 @@ Waveshare E-Paper Display The ``waveshare_epaper`` display platform allows you to use some E-Paper displays sold by `Waveshare `__ with ESPHome. The 2.13" `TTGO module `__ with an ESP32 on the board is supported as well. -Depending on your specific revision of the board you might need to try out the `-b73` version (see below). -Similar modules sold by other vendors might also work but not have been tested yet. Currently only -single-color E-Ink displays are implemented and of those only a few modules. +Depending on your specific revision of the board you might need to try out the ``-b73`` version (see below). +Similar modules sold by other vendors might also work but not have been tested yet. .. figure:: images/waveshare_epaper-full.jpg :align: center diff --git a/components/esp32_ble_tracker.rst b/components/esp32_ble_tracker.rst index 7ae1f0323..c238c552b 100644 --- a/components/esp32_ble_tracker.rst +++ b/components/esp32_ble_tracker.rst @@ -154,13 +154,13 @@ variable ``x`` of type ``std::vector`` is passed to the automation for Configuration variables: - **mac_address** (*Optional*, MAC Address): The MAC address to filter for this automation. -- **manufacturer_id** (**Required**, string) 16 bit, 32 bit, or 128 bit BLE Manufacturer ID. +- **manufacturer_id** (**Required**, string): 16 bit, 32 bit, or 128 bit BLE Manufacturer ID. - See :ref:`Automation `. .. _esp32_ble_tracker-on_ble_service_data_advertise: -``on_ble_on_ble_service_data_advertise`` -**************************************** +``on_ble_service_data_advertise`` +********************************* This automation will be triggered when a Bluetooth advertising with service data is received. A variable ``x`` of type ``std::vector`` is passed to the automation for use in lambdas. @@ -182,7 +182,7 @@ variable ``x`` of type ``std::vector`` is passed to the automation for Configuration variables: - **mac_address** (*Optional*, MAC Address): The MAC address to filter for this automation. -- **service_uuid** (**Required**, string) 16 bit, 32 bit, or 128 bit BLE Service UUID. +- **service_uuid** (**Required**, string): 16 bit, 32 bit, or 128 bit BLE Service UUID. - See :ref:`Automation `. See Also diff --git a/components/gps.rst b/components/gps.rst index 4aeda2ee4..6207e3ac5 100644 --- a/components/gps.rst +++ b/components/gps.rst @@ -33,10 +33,7 @@ in your configuration - only the RX pin should be necessary. time: - platform: gps -Configuration variables: ------------------------- - -The component is split up in platforms. +The component is split up in platforms. No configuration variables. First you need to define a global GPS module hub (as seen above). diff --git a/components/i2c.rst b/components/i2c.rst index a8634ec33..05d4f510f 100644 --- a/components/i2c.rst +++ b/components/i2c.rst @@ -11,9 +11,9 @@ I²C Bus This component sets up the I²C bus for your ESP32 or ESP8266. In order for these components to work correctly, you need to define the I²C bus in your configuration. Please note the ESP will enable its internal 10kΩ pullup resistors for these pins, so you usually don't need to -put on external ones. You can use multiple devices on one I²C bus as each device is given a -unique address for communicating between between it and the ESP. You can do this by hopping -wires from the two lines (SDA and SCL) from each device board to the next device board or by +put on external ones. You can use multiple devices on one I²C bus as each device is given a +unique address for communicating between between it and the ESP. You can do this by hopping +wires from the two lines (SDA and SCL) from each device board to the next device board or by connecting the wires from each device back to the two I²C pins on the ESP. .. code-block:: yaml @@ -37,7 +37,7 @@ Configuration variables: Defaults to ``True``. - **frequency** (*Optional*, float): Set the frequency the I²C bus should operate on. Defaults to ``50kHz``. Values are ``50kHz``, ``100kHz``, ``200kHz``, ... ``800kHz`` -- **id** (*Optional*, :ref:`config-id`) Manually specify the ID for this I²C bus if you need multiple I²C buses. +- **id** (*Optional*, :ref:`config-id`): Manually specify the ID for this I²C bus if you need multiple I²C buses. .. note:: diff --git a/components/light/index.rst b/components/light/index.rst index 90c5e0f4f..9358ed4c4 100644 --- a/components/light/index.rst +++ b/components/light/index.rst @@ -77,7 +77,7 @@ This action toggles a light with the given ID when executed. # Shorthand: - light.toggle: light_1 -Configuration options: +Configuration variables: - **id** (**Required**, :ref:`config-id`): The ID of the light. - **transition_length** (*Optional*, :ref:`config-time`, :ref:`templatable `): The length of the transition @@ -121,7 +121,7 @@ This action turns a light with the given ID on when executed. # Shorthand - light.turn_on: light_1 -Configuration options: +Configuration variables: - **id** (**Required**, :ref:`config-id`): The ID of the light. - **transition_length** (*Optional*, :ref:`config-time`, :ref:`templatable `): The length of the transition @@ -180,7 +180,7 @@ This action turns a light with the given ID off when executed. # Shorthand - light.turn_off: light_1 -Configuration options: +Configuration variables: - **id** (**Required**, :ref:`config-id`): The ID of the light. - **transition_length** (*Optional*, :ref:`config-time`, :ref:`templatable `): The length of the transition @@ -214,7 +214,7 @@ is essentially just a combination of the turn_on and turn_off calls. id: light_1 state: on -Configuration options: +Configuration variables: - **id** (**Required**, :ref:`config-id`): The ID of the light. - **state** (*Optional*, :ref:`templatable `, boolean): Change the ON/OFF @@ -238,10 +238,10 @@ by a relative amount. id: light_1 relative_brightness: 5% -Configuration options: +Configuration variables: - **id** (**Required**, :ref:`config-id`): The ID of the light. -- **relative_brightness** (**Required***, :ref:`templatable `, percentage): +- **relative_brightness** (**Required**, :ref:`templatable `, percentage): The relative brightness to dim the light by. - **transition_length** (*Optional*, :ref:`config-time`, :ref:`templatable `): The length of the transition. @@ -817,8 +817,10 @@ Configuration variables: - **sequence** (*Optional*, :ref:`Action `): The actions to perform in sequence until the effect is stopped. -E1.31 -***** +.. _e131-light-effect: + +E1.31 Effect +************ This effect enables controlling addressable lights using UDP-based E1.31_ protocol. @@ -840,16 +842,15 @@ JINX_ can be used to control E1.31_ enabled ESPHome. Configuration variables: -- **method** (*Optional*): Listening method, one of ``multicast`` or ``unicast``. Defaults to ``multicast``. - **universe** (**Required**, integer): The value of universe, between 1 to 512. - **channels** (*Optional*): The type of data. This is used to specify if it is a ``MONO``, ``RGB`` or ``RGBW`` light and in which order the colors are. Defaults to ``RGB``. There are three modes of operation: -- `MONO`: this supports 1 channel per LED (luminance), up-to 512 LEDs per universe -- `RGB`: this supports 3 channels per LED (RGB), up-to 170 LEDs (3*170 = 510 bytes) per universe -- `RGBW`: this supports 4 channels per LED (RGBW), up-to 128 LEDs (4*128 = 512 bytes) per universe +- ``MONO``: this supports 1 channel per LED (luminance), up-to 512 LEDs per universe +- ``RGB``: this supports 3 channels per LED (RGB), up-to 170 LEDs (3*170 = 510 bytes) per universe +- ``RGBW``: this supports 4 channels per LED (RGBW), up-to 128 LEDs (4*128 = 512 bytes) per universe If there's more LEDs than allowed per-universe, additional universe will be used. In the above example of 189 LEDs, first 170 LEDs will be assigned to 1 universe, @@ -858,11 +859,21 @@ the rest of 19 LEDs will be automatically assigned to 2 universe. It is possible to enable multiple light platforms to listen to the same universe concurrently, allowing to replicate the behaviour on multiple strips. +E1.31 Component +^^^^^^^^^^^^^^^ + +The :ref:`e131-light-effect` requires a component hub for the ``e131`` light effect. + +Configuration variables: + +- **method** (*Optional*): Listening method, one of ``multicast`` or ``unicast``. Defaults to ``multicast``. + + .. _E1.31: https://www.doityourselfchristmas.com/wiki/index.php?title=E1.31_(Streaming-ACN)_Protocol .. _JINX: http://www.live-leds.de/jinx-v1-3-with-resizable-mainwindow-real-dmx-and-sacne1-31/ -Adalight -******** +Adalight Effect +*************** This effect enables controlling addressable lights using UART-based Adalight_ protocol, allowing to create realtime ambient lighting effects. @@ -899,8 +910,8 @@ Configuration variables: .. _Adalight: https://learn.adafruit.com/adalight-diy-ambient-tv-lighting .. _Prismatik: https://github.com/psieg/Lightpack -WLED -**** +WLED Effect +*********** This effect enables controlling addressable lights using UDP-based `UDP Realtime Control`_ protocol used by WLED_, allowing to create realtime ambient diff --git a/components/logger.rst b/components/logger.rst index 1f8691001..22bf5a956 100644 --- a/components/logger.rst +++ b/components/logger.rst @@ -37,6 +37,9 @@ Advanced settings: Defaults to ``UART0``. - **esp8266_store_log_strings_in_flash** (*Optional*, boolean): If set to false, disables storing log strings in the flash section of the device (uses more memory). Defaults to true. +- **on_message** (*Optional*, :ref:`Automation `): An action to be + performed when a message is to be looged. The vairables ``int level``, ``const char* tag`` and + ``const char* message`` are available for lambda processing. .. _logger-hardware_uarts: diff --git a/components/mcp230xx.rst b/components/mcp230xx.rst index 07a34c44e..15ff449a4 100644 --- a/components/mcp230xx.rst +++ b/components/mcp230xx.rst @@ -15,8 +15,8 @@ The Microchip MCP230xx series of general purpose, parallel I/O expansion for I² .. _mcp23008-label: -MCP23008 --------- +MCP23008 Component +------------------ The MCP23008 component (`datasheet `__, `Adafruit `__) has 8 GPIOs that can be configured independently. @@ -63,8 +63,8 @@ Configuration variables: .. _mcp23016-label: -MCP23016 --------- +MCP23016 Component +------------------ The MCP23016 component (`datasheet `__) has 16 GPIOs and can be configured the same way than the other variants. @@ -112,8 +112,8 @@ Configuration variables: .. _mcp23017-label: -MCP23017 --------- +MCP23017 Component +------------------ The MCP23017 component allows you to use MCP23017 I/O expanders (`datasheet `__, diff --git a/components/mcp23Sxx.rst b/components/mcp23Sxx.rst index 2a8f9f8d5..1d1f19188 100644 --- a/components/mcp23Sxx.rst +++ b/components/mcp23Sxx.rst @@ -15,8 +15,8 @@ This is exactly the same API as the MCP23SXX I/O Expander except talks on the SP .. _mcp23S08-label: -MCP23S08 --------- +MCP23S08 Component +------------------ The MCP23S08 component (`datasheet `__, `Digi-Key `__) has 8 GPIOs that can be configured independently. @@ -64,8 +64,8 @@ Configuration variables: .. _mcp23S17-label: -MCP23S17 --------- +MCP23S17 Component +------------------ The MCP23S17 component allows you to use MCP23S17 I/O expanders (`datasheet `__, diff --git a/components/mqtt.rst b/components/mqtt.rst index 740c51fb7..3f00b66e4 100644 --- a/components/mqtt.rst +++ b/components/mqtt.rst @@ -48,7 +48,7 @@ Configuration variables: - **topic_prefix** (*Optional*, string): The prefix used for all MQTT messages. Should not contain trailing slash. Defaults to ````. -- **log_topic** (*Optional*, :ref:`mqtt-message`) The topic to send MQTT log +- **log_topic** (*Optional*, :ref:`mqtt-message`): The topic to send MQTT log messages to. - **birth_message** (*Optional*, :ref:`mqtt-message`): The message to send when a connection to the broker is established. See :ref:`mqtt-last_will_birth` for more information. diff --git a/components/output/index.rst b/components/output/index.rst index 60c05b8db..5eb6e272a 100644 --- a/components/output/index.rst +++ b/components/output/index.rst @@ -39,12 +39,13 @@ Configuration variables: automatically be switched on too. - **inverted** (*Optional*, boolean): If the output should be treated as inverted. Defaults to ``False``. -- **min_power** (*Optional*, float): Only for float outputs. Sets the - minimum output value of this output platform. - Must be in range from 0 to max_power. Defaults to 0. -- **max_power** (*Optional*, float): Only for float outputs. Sets the - maximum output value of this output platform. - Must be in range from min_power to 1. Defaults to 1. + +Float outputs only: + +- **min_power** (*Optional*, float): Sets the minimum output value of this output platform. + Must be in range from 0 to max_power. Defaults to ``0``. +- **max_power** (*Optional*, float): Sets the maximum output value of this output platform. + Must be in range from min_power to 1. Defaults to ``1``. .. _output-turn_on_action: diff --git a/components/output/mcp4725.rst b/components/output/mcp4725.rst index bd316c84e..ea4ff9d48 100644 --- a/components/output/mcp4725.rst +++ b/components/output/mcp4725.rst @@ -10,11 +10,10 @@ The MCP4725 output component allows to use `12bit external DAC in order to have analog output(s) on any board by using I2C. Devices default address is ``0x60`` and configurable alternative is ``0x61``. -Example Usage with defaults -*************************** - .. code-block:: yaml + # Example configuration entry + # Set a global i2c connection i2c: sda: 21 @@ -32,34 +31,6 @@ Example Usage with defaults id: dac_output level: 100% -Example Usage with a custom configuration -***************************************** - -.. code-block:: yaml - - # Set a custom i2c connection - i2c: - - id: bus_a - sda: 21 - scl: 22 - scan: True - - id: bus_b - sda: 23 - scl: 25 - scan: True - - # Set the output - output: - - platform: mcp4725 - id: dac_output - address: 0x61 - i2c_id: bus_b - - on_...: - then: - - output.set_level: - id: dac_output - level: 100% Configuration variables: ------------------------ diff --git a/components/output/my9231.rst b/components/output/my9231.rst index e15b1b91e..568d572e4 100644 --- a/components/output/my9231.rst +++ b/components/output/my9231.rst @@ -8,8 +8,8 @@ MY9231/MY9291 LED driver .. _my9231-component: -Component ---------- +Component/Hub +------------- The MY9231/MY9291 component represents a MY9231/MY9291 LED diver chain (`MY9231 description `__, @@ -57,6 +57,40 @@ Configuration variables: this ``my9231`` component. Use this if you have multiple MY9231/MY9291 chains connected at the same time. + +.. _my9231-output: + +Output +------ + +The MY931/MY9291 output component exposes a MY931/MY9291 channel of a global +:ref:`my9231-component` as a float output. + +.. code-block:: yaml + + # Example configuration entry + my9231: + - data_pin: GPIO12 + clock_pin: GPIO14 + + # Individual outputs + output: + - platform: my9231 + id: 'my9231_output1' + channel: 0 + +Configuration variables: +************************ + +- **id** (**Required**, :ref:`config-id`): The id to use for this output component. +- **channel** (**Required**, int): Chose the channel of the MY9231/MY9291 chain of + this output component. Channel 0 is the most close channel. +- **my9231_id** (*Optional*, :ref:`config-id`): Manually specify the ID of the + :ref:`my9231-component`. + Use this if you have multiple MY9231/MY9291 chains you want to use at the same time. +- All other options from :ref:`Output `. + + Sonoff B1 configuration example ------------------------------- @@ -172,38 +206,6 @@ And here is a complete configuration for the AiThinker AiLight: white: output_cold_white -.. _my9231-output: - -Driver Output -------------- - -The MY931/MY9291 output component exposes a MY931/MY9291 channel of a global -:ref:`my9231-component` as a float output. - -.. code-block:: yaml - - # Example configuration entry - my9231: - - data_pin: GPIO12 - clock_pin: GPIO14 - - # Individual outputs - output: - - platform: my9231 - id: 'my9231_output1' - channel: 0 - -Configuration variables: -************************ - -- **id** (**Required**, :ref:`config-id`): The id to use for this output component. -- **channel** (**Required**, int): Chose the channel of the MY9231/MY9291 chain of - this output component. Channel 0 is the most close channel. -- **my9231_id** (*Optional*, :ref:`config-id`): Manually specify the ID of the - :ref:`my9231-component`. - Use this if you have multiple MY9231/MY9291 chains you want to use at the same time. -- All other options from :ref:`Output `. - See Also -------- diff --git a/components/output/sm16716.rst b/components/output/sm16716.rst index 4b2a2df22..88b2d22ff 100644 --- a/components/output/sm16716.rst +++ b/components/output/sm16716.rst @@ -8,8 +8,8 @@ SM16716 LED driver .. _sm16716-component: -Component ---------- +Component/Hub +------------- The SM16716 component represents a SM16716 LED diver chain (`SM16716 description `__, @@ -61,8 +61,8 @@ Configuration variables: .. _sm16716-output: -Driver Output -------------- +Output +------ The SM16716 output component exposes a SM16716 channel of a global :ref:`sm16716-component` as a float output. diff --git a/components/output/template.rst b/components/output/template.rst index 1ba6d20aa..5edda1d9c 100644 --- a/components/output/template.rst +++ b/components/output/template.rst @@ -38,8 +38,8 @@ Configuration variables: - **id** (**Required**, :ref:`config-id`): The id to use for this output component. - **type** (**Required**, string): The type of output. One of ``binary`` and ``float``. -- **on_write_action** (**Required**, :ref:`Action `): The action that should - be performed when the state of the output is updated. +- **write_action** (**Required**, :ref:`Automation `): An automation to perform + when the state of the output is updated. - All other options from :ref:`Output `. See :apiclass:`output::BinaryOutput` and :apiclass:`output::FloatOutput`. @@ -51,10 +51,10 @@ See :apiclass:`output::BinaryOutput` and :apiclass:`output::FloatOutput`. .. _output-template-on_write_action: -``output.template.on_write`` Action ------------------------------------ +``write_action`` Trigger +------------------------ -When the state for this output is updated, the on_write action is executed. +When the state for this output is updated, the ``write_action`` is triggered. It is possible to access the state value inside Lambdas: .. code-block:: yaml diff --git a/components/remote_receiver.rst b/components/remote_receiver.rst index fb77427ce..4fb6b93f1 100644 --- a/components/remote_receiver.rst +++ b/components/remote_receiver.rst @@ -211,10 +211,10 @@ Remote code selection (exactly one of these has to be included): remote_transmitter: pin: 5 carrier_duty_percent: 100% - + .. note:: - To caputure the codes more effectively with directly connected receiver like tsop38238 you can try to use `INPUT_PULLUP`: + To caputure the codes more effectively with directly connected receiver like tsop38238 you can try to use ``INPUT_PULLUP``: .. code-block:: yaml diff --git a/components/sensor/apds9960.rst b/components/sensor/apds9960.rst index dd0885858..0a2004a2a 100644 --- a/components/sensor/apds9960.rst +++ b/components/sensor/apds9960.rst @@ -5,6 +5,12 @@ APDS9960 Sensor :description: Instructions for setting up APDS9960 sensors. :image: apds9960.jpg + +.. _apds9960-component: + +Component/Hub +------------- + The ``apds9960`` sensor platform allows you to use your APDS9960 RGB and gesture sensors (`datasheet `__, `SparkFun`_) with ESPHome. @@ -49,7 +55,13 @@ Base Configuration: - **update_interval** (*Optional*, :ref:`config-time`): The interval to check the sensor. Defaults to ``60s``. -Sensor Configuration: +Sensor +------ + +The ``apds9960`` sensor allows you to use your :doc:`apds9960` to perform different +measurements. + +Configuration variables: - **name** (**Required**, string): The name for the sensor. - **type** (**Required**, string): The type of sensor measurement. One of @@ -63,7 +75,13 @@ Sensor Configuration: - **id** (*Optional*, :ref:`config-id`): Set the ID of this sensor for use in lambdas. - All other options from :ref:`Sensor `. -Binary Sensor Configuration: +Binary Sensor +------------- + +The ``apds9960`` binary sensor allows you to use your :doc:`apds9960` to perform different +measurements. + +Configuration variables: - **name** (**Required**, string): The name for the binary sensor. - **direction** (**Required**, string): The direction to measure. One of: diff --git a/components/sensor/as3935.rst b/components/sensor/as3935.rst index f8ccb4fe5..0c1a7fc87 100644 --- a/components/sensor/as3935.rst +++ b/components/sensor/as3935.rst @@ -6,7 +6,7 @@ AMS AS3935 Franklin Lightning Sensor :image: images/as3935.jpg :keywords: as3935 -The ``as3935`` sensor platform allows you to use your AS3935 sensor +The **AS3935** sensor platform allows you to use your AS3935 sensor (`AliExpress`_, `AMS_AS3935`_) in order to get notified when a thunderstorm is getting close. @@ -14,6 +14,9 @@ The AS3935 can detect the presence of lightning activity and provide an estimati on the distance to the head of the storm. The chip issues a notification through an interrupt pin. +Component/Hub +------------- + The AS3935 can be configured to use either the SPI **or** I²C protocol for data communication. First choose which communication method you want to use for the sensor, set the SI pin for the appropriate level and set up the ESPhome integration for the chosen communication method. @@ -46,17 +49,20 @@ A1 I²C address selection MSB .. _AliExpress: https://de.aliexpress.com/af/as3935.html?SearchText=as3935 .. _AMS_AS3935: https://ams.com/as3935 +Over SPI +-------- + +The ``as3935_spi`` sensor platform allows you to use your AS3935 sensor +(`AliExpress`_, `AMS_AS3935`_) in order to get notified when a thunderstorm is getting close. + + .. code-block:: yaml # Example configuration for SPI (decide for one!) as3935_spi: cs_pin: GPIO12 irq_pin: GPIO13 - # Example configuration for I²C (decide for one!) - as3935_i2c: - irq_pin: GPIO12 - - # Example configuration for creating sensors + # Example lightning and energy sensor sensor: - platform: as3935 lightning_energy: @@ -68,9 +74,10 @@ A1 I²C address selection MSB name: "Storm Alert" -Configuration variables (shared): ---------------------------------- +Configuration variables: +************************ +- **cs_pin** (**Required**, :ref:`Pin Schema `): The chip select pin. - **irq_pin** (**Required**, :ref:`config-pin`): The IRQ pin, which indicates if a lightning strike has been detected. - **indoor** (*Optional*, boolean): Indicates if the sensor is used indoor. Defaults to ``true``. - **noise_level** (*Optional*, integer): Noise floor level is compared to known reference voltage. @@ -90,34 +97,16 @@ Configuration variables (shared): - **capacitance** (*Optional*, integer): This setting will add capacitance to the series RLC antenna on the product to help tune its resonance. The datasheet specifies being within 3.5 percent of 500kHz to get optimal lightning detection and distance sensing. It's possible to add up to 120pF in steps of 8pF to the antenna. Defaults to ``0``. - - **watchdog_threshold** (*Optional*, integer): Determines the threshold for events that trigger the IRQ pin. Defaults to ``2``. -Sensor entries: -- **lightning_energy** (*Optional*): Lightning energy value. According to the datasheet this is only a pure value that doesn't have any physical meaning. +Over I²C +-------- - - **name** (**Required**, string): The name for the lightning energy sensor. - - **id** (*Optional*, :ref:`config-id`): Set the ID of this sensor for use in lambdas. - - All other options from :ref:`Sensor `. -- **distance** (*Optional*): Distance in km to the front of the storm and not the distance to a lightning strike. +The ``as3935_i2c`` sensor platform allows you to use your AS3935 sensor +(`AliExpress`_, `AMS_AS3935`_) in order to get notified when a thunderstorm is getting close. - - **name** (**Required**, string): The name for the distance sensor. - - **id** (*Optional*, :ref:`config-id`): Set the ID of this sensor for use in lambdas. - - All other options from :ref:`Sensor `. -- **binary sensor** (*Optional*): Binary sensor that indicates if a lightning strike was detected. - - - **name** (**Required**, string): The name of the binary sensor. - - **id** (*Optional*, - :ref:`config-id`): Manually specify - the ID used for code generation. - - All other options from :ref:`Binary Sensor `. - -Configuration variables (I²C): -------------------------------- - -Use this if you want to use your AS3935 in I²C mode. .. code-block:: yaml @@ -135,33 +124,67 @@ Use this if you want to use your AS3935 in I²C mode. - platform: as3935 name: "Storm Alert" +Configuration variables: +************************ + + - **address** (*Optional*, int): Manually specify the I²C address of the sensor. Defaults to ``0x03`` (``A0` and ``A1`` pins pulled low). Another address can be ``0x02``. +- **irq_pin** (**Required**, :ref:`config-pin`): The IRQ pin, which indicates if a lightning strike has been detected. +- **indoor** (*Optional*, boolean): Indicates if the sensor is used indoor. Defaults to ``true``. +- **noise_level** (*Optional*, integer): Noise floor level is compared to known reference voltage. + If this level is exceeded the chip will issue an interrupt to the IRQ pin, broadcasting that it can not + operate properly due to noise (INT_NH). Defaults to ``2``. +- **spike_rejection** (*Optional*, integer): Helps to differentiate between real events and actual lightning. + Increasing this value increases robustness at the cost of sensitivity to distant events. Defaults to ``2``. +- **lightning_threshold** (*Optional*, integer): The number of lightnings that must appear in a 15-minute time + window before a lightning storm is detected. + 15 minutes is the window of time before the number of detected lightning events is reset. + The number of lightning strikes can be set to 1,5,9, or 16. Defaults to ``1``. +- **mask_disturber** (*Optional*, boolean): This setting will return whether or not disturbers trigger + the IRQ Pin. Defaults to ``false``. +- **div_ratio** (*Optional*, integer): The antenna is designed to resonate at 500kHz and so can be tuned + with the following setting. The accuracy of the antenna must be within 3.5 percent of that value for + proper signal validation and distance estimation. Defaults to ``0``. +- **capacitance** (*Optional*, integer): This setting will add capacitance to the series RLC antenna on the product + to help tune its resonance. The datasheet specifies being within 3.5 percent of 500kHz to get optimal lightning + detection and distance sensing. It's possible to add up to 120pF in steps of 8pF to the antenna. Defaults to ``0``. +- **watchdog_threshold** (*Optional*, integer): Determines the threshold for events that trigger the IRQ pin. + Defaults to ``2``. -Configuration variables (SPI): ------------------------------- -Use this if you want to use your AS3935 in SPI mode. +Sensor +------ -.. code-block:: yaml +A sensor platform to read lightning data - # Example configuration for SPI (decide for one!) - as3935_spi: - cs_pin: GPIO12 - irq_pin: GPIO13 - # Example lightning and energy sensor - sensor: - - platform: as3935 - lightning_energy: - name: "Lightning Energy" - distance: - name: "Distance Storm" - binary_sensor: - - platform: as3935 - name: "Storm Alert" +Configuration variables: + +- **lightning_energy** (*Optional*): Lightning energy value. According to the datasheet this is only a pure value that doesn't have any physical meaning. + + - **name** (**Required**, string): The name for the lightning energy sensor. + - **id** (*Optional*, :ref:`config-id`): Set the ID of this sensor for use in lambdas. + - All other options from :ref:`Sensor `. + +- **distance** (*Optional*): Distance in km to the front of the storm and not the distance to a lightning strike. + + - **name** (**Required**, string): The name for the distance sensor. + - **id** (*Optional*, :ref:`config-id`): Set the ID of this sensor for use in lambdas. + - All other options from :ref:`Sensor `. + + +Binary Sensor +------------- + +Binary sensor that indicates if a lightning strike was detected. + +Configuration variables: + +- **name** (**Required**, string): The name of the binary sensor. +- **id** (*Optional*, :ref:`config-id`): Manually specify the ID used for code generation. +- All other options from :ref:`Binary Sensor `. -- **cs_pin** (**Required**, :ref:`Pin Schema `): The chip select pin. See Also -------- diff --git a/components/sensor/custom.rst b/components/sensor/custom.rst index c22899205..1f9dd6990 100644 --- a/components/sensor/custom.rst +++ b/components/sensor/custom.rst @@ -76,7 +76,7 @@ Let's now also take a closer look at this line, which you might not be too used .. code-block:: cpp - class MyCustomSensor : public Component, public Sensor { + class MyCustomSensor : public Component, public Sensor { What this line is essentially saying is that we're defining our own class that's called ``MyCustomSensor`` which is also a subclass of :apiclass:`Component` and :apiclass:`Sensor `. @@ -137,7 +137,7 @@ One last thing. Some sensors, such as the BMP180 were are going to explain later .. code-block:: cpp float get_setup_priority() const override { return esphome::setup_priority::HARDWARE; } - + Where HARDWARE can be any of: .. code-block:: cpp @@ -161,7 +161,7 @@ Where HARDWARE can be any of: extern const float AFTER_CONNECTION; /// For components that should be initialized at the very end of the setup process. extern const float LATE; - + Now don't let the wording confuse you. The ``get_setup_priority()`` method is an override. Instead of fetching the setup priority setup for us, it instead fetches the setup priority for esphome, while being defined by us. The BMP180 would for instance need to be setup with a priority of IO or lower. A serial streaming (TCP) server would require a working WIFI setup and therefore get AFTER_WIFI. This finalizes our example as: @@ -172,9 +172,9 @@ This finalizes our example as: public: // constructor MyCustomSensor() : PollingComponent(15000) {} - + float get_setup_priority() const override { return esphome::setup_priority::XXXX; } - + void setup() override { // This will be called by App.setup() } @@ -182,7 +182,7 @@ This finalizes our example as: // This will be called every "update_interval" milliseconds. } }; - + Step 2: Registering the custom sensor ------------------------------------- @@ -403,6 +403,7 @@ Note that the number of arguments you put in the curly braces *must* match the n ``sensors:`` block - *and* they must be in the same order. Configuration variables: +************************ - **lambda** (**Required**, :ref:`lambda `): The lambda to run for instantiating the sensor(s). diff --git a/components/sensor/dallas.rst b/components/sensor/dallas.rst index b3225bb3c..312948201 100644 --- a/components/sensor/dallas.rst +++ b/components/sensor/dallas.rst @@ -45,8 +45,8 @@ Configuration variables: .. _dallas-sensor: -Sensors -------- +Sensor +------ The ``dallas`` sensor allows you to use DS18B20 and similar sensors. First, you need to define a :ref:`dallas sensor component `. diff --git a/components/sensor/mcp3008.rst b/components/sensor/mcp3008.rst index 173f878e6..771b3a25f 100644 --- a/components/sensor/mcp3008.rst +++ b/components/sensor/mcp3008.rst @@ -8,15 +8,17 @@ MCP3008 I/O Expander The Microchip Technology Inc. MCP3008 devices are successive approximation 10-bit Analogto-Digital (A/D) converters with on-board sample and -hold circuitry. +hold circuitry. .. figure:: images/mcp3008.jpg :align: center :width: 50.0% -MCP3008 -------- +.. _mcp3008-component: + +Component/Hub +------------- The MCP3008 component allows you to use MCP3008 8-Channel 10-Bit A/D Converter (`datasheet `__, @@ -65,14 +67,20 @@ If you want just the scaled value you can use the read_data function name: Freezer Temperature Configuration variables: -~~~~~~~~~~~~~~~~~~~~~~~~ -MCP3008 Component -***************** + - **id** (**Required**, :ref:`config-id`): The id to use for this MCP3008 component. - **cs_pin** (**Required**, int): The SPI cable select pin to use -MCP3008 Sensor Component -************************ + +Sensor +------ + +The ``mcp3008`` sensor allows you to use your MCP3008 10-Bit A/D Converter sensors with ESPHome. +First, setup a :ref:`MCP3008 Hub ` for your MCP3008 sensor and then use this +sensor platform to create individual sensors that will report the voltage to Home Assistant. + +Configuration variables: + - **id** (**Required**, :ref:`config-id`): The id of the parent MCP3008 component. - **number** (**Required**, int): The pin number of the MCP3008 - **reference_voltage** (*Optional*, float): The reference voltage. Defaults to ``3.3V``. diff --git a/components/sensor/mcp9808.rst b/components/sensor/mcp9808.rst index d04ee776c..6bd23f940 100644 --- a/components/sensor/mcp9808.rst +++ b/components/sensor/mcp9808.rst @@ -32,15 +32,11 @@ required to be set up in your configuration for this sensor to work. Configuration variables: ------------------------ -- **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 `. - +- **name** (**Required**, string): The name for the temperature sensor. +- **id** (*Optional*, :ref:`config-id`): Set the ID of this sensor for use in lambdas. - **address** (*Optional*, int): Manually specify the I²C address of the sensor. Defaults to ``0x18``. - **update_interval** (*Optional*, :ref:`config-time`): The interval to check the sensor. Defaults to ``60s``. - +- All other options from :ref:`Sensor `. See Also -------- diff --git a/components/sensor/ruuvitag.rst b/components/sensor/ruuvitag.rst index 792d38f61..9b98a9462 100644 --- a/components/sensor/ruuvitag.rst +++ b/components/sensor/ruuvitag.rst @@ -129,7 +129,7 @@ Configuration variables: - All other options from :ref:`Sensor `. - Only available if RAWv2 protocol is used. -- **movement_count** (*Optional*): The information for the movement count +- **movement_counter** (*Optional*): The information for the movement count sensor - **name** (**Required**, string): The name for the movement count sensor. diff --git a/components/sensor/tmp117.rst b/components/sensor/tmp117.rst index 52adc9ee6..c4ec98d18 100644 --- a/components/sensor/tmp117.rst +++ b/components/sensor/tmp117.rst @@ -34,8 +34,8 @@ If accuracy is a must, see section 8.2.2.2 of the `datasheet `__) are This component will not show up in the Home Assistant front-end automatically because Home Assistant doesn't have support for steppers. Please see :ref:`stepper-ha-config`. -A4988 Configuration -------------------- +.. _base_stepper_config: + +Base Stepper Configuration +-------------------------- + +All stepper configuration schemas inherit these options. + +Configuration variables: + +- **max_speed** (**Required**, float): The maximum speed in ``steps/s`` (steps per seconds) to drive the + stepper at. Note most steppers can't step properly with speeds higher than 250 steps/s. +- **acceleration** (*Optional*, float): The acceleration in ``steps/s^2`` (steps per seconds squared) + to use when starting to move. The default is ``inf`` which means infinite acceleration, so the + stepper will try to drive with the full speed immediately. This value is helpful if that first motion of + the motor is too jerky for what it's moving. If you make this a small number, it will take the motor a + moment to get up to speed. +- **deceleration** (*Optional*, float): The same as ``acceleration``, but for when the motor is decelerating + shortly before reaching the set position. Defaults to ``inf`` (immediate deceleration). + +A4988 Component +--------------- Put this code into the configuration file on ESPhome for this device. @@ -43,16 +62,11 @@ Configuration variables: stepper driver. - **dir_pin** (**Required**, :ref:`Pin Schema `): The ``DIRECTION`` pin of the A4988 stepper driver. -- **max_speed** (**Required**, float): The maximum speed in ``steps/s`` (steps per seconds) to drive the - stepper at. Note most steppers can't step properly with speeds higher than 250 steps/s. - **sleep_pin** (*Optional*, :ref:`Pin Schema `): Optionally also use the ``SLEEP`` pin of the A4988 stepper driver. If specified, the driver will be put into sleep mode as soon as the stepper reaches the target steps. -- **acceleration** (*Optional*, float): The acceleration in ``steps/s^2`` (steps per seconds squared) - to use when starting to move. The default is ``inf`` which means infinite acceleration, so the - stepper will try to drive with the full speed immediately. -- **deceleration** (*Optional*, float): The same as ``acceleration``, but for when the motor is decelerating - shortly before reaching the set position. Defaults to ``inf`` (immediate deceleration). + +- All other from :ref:`base_stepper_config`. .. note:: @@ -67,8 +81,8 @@ Configuration variables: number: D1 inverted: True -ULN2003 Configuration ---------------------- +ULN2003 Component +----------------- Put this code into the configuration file on ESPHome for this device. @@ -92,8 +106,10 @@ Put this code into the configuration file on ESPHome for this device. Configuration variables: - **id** (**Required**, :ref:`config-id`): Specify the ID of the stepper so that you can control it. -- **pin_a**, **pin_b**, **pin_c**, **pin_d** (**Required**, :ref:`Pin Schema `): - The four pins of the stepper control board. +- **pin_a** (**Required**, :ref:`Pin Schema `): The pin **a** of the stepper control board. +- **pin_b** (**Required**, :ref:`Pin Schema `): The pin **b** of the stepper control board. +- **pin_c** (**Required**, :ref:`Pin Schema `): The pin **c** of the stepper control board. +- **pin_d** (**Required**, :ref:`Pin Schema `): The pin **d** of the stepper control board. - **sleep_when_done** (*Optional*, boolean): Whether to turn off all coils when the stepper has reached the target position - **step_mode** (*Optional*, string): The step mode to operate the motor with. One of: @@ -102,15 +118,7 @@ Configuration variables: - ``HALF_STEP`` - ``WAVE_DRIVE`` -- **max_speed** (**Required**, float): The maximum speed in ``steps/s`` (steps per seconds) to drive the - stepper at. Note most steppers can't step properly with speeds higher than 250 steps/s. -- **acceleration** (*Optional*, float): The acceleration in ``steps/s^2`` (steps per seconds squared) - to use when starting to move. The default is ``inf`` which means infinite acceleration, so the - stepper will try to drive with the full speed immediately. This value is helpful if that first motion of - the motor is too jerky for what it's moving. If you make this a small number, it will take the motor a - moment to get up to speed. -- **deceleration** (*Optional*, float): The same as ``acceleration``, but for when the motor is decelerating - shortly before reaching the set position. Defaults to ``inf`` (immediate deceleration). +- All other from :ref:`base_stepper_config`. .. _stepper-set_target_action: @@ -141,7 +149,7 @@ position (in steps). The stepper will always run towards the target position and Configuration options: - **id** (**Required**, :ref:`config-id`): The ID of the stepper. -- **target** (*Optional*, int, :ref:`templatable `): The target position in steps. +- **target** (**Required**, int, :ref:`templatable `): The target position in steps. .. warning:: @@ -195,10 +203,10 @@ the target again. return -1000; } -Configuration options: +Configuration variables: - **id** (**Required**, :ref:`config-id`): The ID of the stepper. -- **target** (*Optional*, int, :ref:`templatable `): The target position in steps. +- **position** (**Required**, int, :ref:`templatable `): The position to report in steps. .. _stepper-set_speed_action: @@ -225,11 +233,11 @@ Configuration variables: Home Assistant Configuration ---------------------------- -This component will not show up in the Home Assistant front-end (Overview) automatically because +This component will not show up in the Home Assistant front-end (Overview) automatically because Home Assistant does not support steppers natively. You can add the stepper component code below to your Home Assistant configuration (``configuration.yaml``) to -be able to control the stepper from the front-end. +be able to control the stepper from the front-end. .. code-block:: yaml @@ -242,7 +250,7 @@ be able to control the stepper from the front-end. max: 1000 step: 1 mode: slider - + # Do something when the slider changes automation: - alias: Write Stepper Value to ESP @@ -255,18 +263,18 @@ be able to control the stepper from the front-end. data_template: target: '{{ trigger.to_state.state | int }}' -In the above code, "stepper_control" is the ID of a numeric input field. It must be unique and it is -used in the automation section as a reference name. The display name for this field is in -stepper_control's ``name`` key. +In the above code, "stepper_control" is the ID of a numeric input field. It must be unique and it is +used in the automation section as a reference name. The display name for this field is in +stepper_control's ``name`` key. -If you want your user interface to give you more control over your stepper controller, such as +If you want your user interface to give you more control over your stepper controller, such as setting the acceleration, deceleration, etc, then you can add more input fields after ``stepper_control`` but before ``automation``. They can be a simple number-entry field (mode: box) or a slider like this. Each of these extra input fields needs an associated input parameter defined on the ESPHome device's API service. The automation section tells Home Assistant what to do when the slider changes. It needs a trigger -(state of the ``stepper_control`` slider) and an action. In the trigger section, ``entity_id`` must refer +(state of the ``stepper_control`` slider) and an action. In the trigger section, ``entity_id`` must refer back to the configuration ID that triggers the automation. For us, that is the ``stepper_control`` field in the ``input_number`` item. That's why the value is ``input_number.stepper_control``. @@ -276,7 +284,7 @@ the correct syntax is to join the device ID to the API service ID with an unders as in ``esphome.livingroom_control_stepper`` where "Livingroom" is a device in ESPHome and "control_stepper" is an API service for that device. -The template string is used to get the "state" value from the ``target`` field (defined in the target section) on the +The template string is used to get the "state" value from the ``target`` field (defined in the target section) on the ``input_number`` component of the Home Assistant front-end. This value is then passed to the API service as defined in the ESPHome device's configuration. The ``data_template`` section lists one value for each of the input parameters on the service being called by the automation. In our case, the ESPHome device has an API service with a single parameter, @@ -285,7 +293,7 @@ Getting this linkage right is very important. The following code needs to go in the ESPHome configuration file for this device. Above, we mention "API service" a lot. This code is where that is defined. You may have already added it (or something similar). Note -that the input variable for the ``control_stepper`` service is called ``target``. That's what matches with the +that the input variable for the ``control_stepper`` service is called ``target``. That's what matches with the automation configuration above. Also note that the variable ``target`` is defined as an integer. That means it must be an integer number, not a string. diff --git a/components/sun.rst b/components/sun.rst index 345063255..dda62a5a3 100644 --- a/components/sun.rst +++ b/components/sun.rst @@ -57,8 +57,8 @@ Automation: - **elevation** (*Optional*, float): The elevation to cross. Defaults to 0° (horizon). -Sensor Platform ---------------- +``sun`` Sensor +-------------- Additionally, the sun component exposes its values over a sensor platform. @@ -85,8 +85,8 @@ Configuration variables: - **id** (*Optional*, :ref:`config-id`): Manually specify the ID used for code generation. - All other options from :ref:`Sensor `. -Text Sensor Platform --------------------- +``sun`` Text Sensor +------------------- Other properties like the next sunset time can be read out with the sun text_sensor platform. diff --git a/components/sx1509.rst b/components/sx1509.rst index 0340af738..32b563376 100644 --- a/components/sx1509.rst +++ b/components/sx1509.rst @@ -41,8 +41,8 @@ complicated components that use the pin schema will not work. For example the I scan_time: 2 debounce_time: 1 -Configuration variables for the SX1509 device: ----------------------------------------------- +Configuration variables: +------------------------ - **id** (**Required**, :ref:`config-id`): The id to use for this SX1509 component. - **address** (*Optional*, int): The I²C address of the driver. @@ -53,7 +53,7 @@ up to 8x8 matrix (i.e. 64 keys). - **keypad** (*Optional*): Add this to enable the keypad. - - **key_row** (**Required**, int): The number of keypad rows to use. This enables any number of the first 7 pins. + - **key_rows** (**Required**, int): The number of keypad rows to use. This enables any number of the first 7 pins. So a value of 3 enables pins 0,1,2 to be used as the rows for the keypad matrix. This value must be between 1 and 8. - **key_columns** (**Required**, int): The number of keypad columns to use. This enables any number of the last 7 pins. So a value of 4 enables pins 8,9,10,11 to be used as the columns for the keypad matrix. This value must be between 1 and 8. @@ -108,6 +108,9 @@ Attention should be paid to the capabilities of the I/O pins. | 15 | ✓ | | ✓ | +-----+------------------+-----+--------+ +Binary Sensor +------------- + To use the individual keys on the keypad you need to add individual binary_sensor entries in the config. .. code-block:: yaml @@ -125,8 +128,8 @@ To use the individual keys on the keypad you need to add individual binary_senso row: 0 col: 1 -Configuration variables for the SX1509 keypad keys: ---------------------------------------------------- +Configuration variables: +------------------------ - **row** (**Required**, int): The row number for this key on the keypad. - **col** (**Required**, int): The column number for this key on the keypad. diff --git a/components/time.rst b/components/time.rst index 263787efc..9d61eb48a 100644 --- a/components/time.rst +++ b/components/time.rst @@ -215,8 +215,8 @@ Configuration variables: - All other from :ref:`base_time_config`. -SNTP Configuration ------------------- +SNTP Time Source +---------------- .. code-block:: yaml @@ -234,7 +234,7 @@ Configuration variables: .. note:: If your are using :ref:`wifi-manual_ip` make sure to configure a DNS Server (dns1, dns2) or use only IP addresses for the NTP servers. - + .. warning:: Due to limitations of the SNTP implementation, this component will trigger ``on_time_sync`` only once when it detects that the diff --git a/components/wifi.rst b/components/wifi.rst index 90c71b5c1..4a3a9b083 100644 --- a/components/wifi.rst +++ b/components/wifi.rst @@ -38,7 +38,7 @@ Configuration variables: that is reachable will be connected to. See :ref:`wifi-networks`. - **manual_ip** (*Optional*): Manually configure the static IP of the node. - - **static_ip** (**Required***, IPv4 address): The static IP of your node. + - **static_ip** (**Required**, IPv4 address): The static IP of your node. - **gateway** (**Required**, IPv4 address): The gateway of the local network. - **subnet** (**Required**, IPv4 address): The subnet of the local network. - **dns1** (*Optional*, IPv4 address): The main DNS server to use. diff --git a/components/text_sensor/uart.rst b/cookbook/uart_text_sensor.rst similarity index 100% rename from components/text_sensor/uart.rst rename to cookbook/uart_text_sensor.rst diff --git a/custom/custom_component.rst b/custom/custom_component.rst index 3c83c50c0..926e54c34 100644 --- a/custom/custom_component.rst +++ b/custom/custom_component.rst @@ -54,6 +54,9 @@ Configuration variables: - **lambda** (**Required**, :ref:`lambda `): The lambda to run for instantiating the binary sensor(s). +- **components** (*Optional*, list): A list of components to initialize. The length here + must equal the number of items in the ``return`` statement of the ``lambda``. This is useful + if you need to give an ``id`` to the component you created. See also :apiclass:`Component`. diff --git a/guides/automations.rst b/guides/automations.rst index 31c6a649f..ac6159624 100644 --- a/guides/automations.rst +++ b/guides/automations.rst @@ -256,8 +256,8 @@ all of the usual lambda syntax. .. _config-globals: -Bonus 2: Global Variables -************************* +Global Variables +---------------- In some cases you might require to share a global variable across multiple lambdas. For example, global variables can be used to store the state of a garage door. @@ -284,7 +284,7 @@ global variables can be used to store the state of a garage door. ESP_LOGD(TAG, "Global value is: %d", id(my_global_int)); -Configuration options: +Configuration variables: - **id** (**Required**, :ref:`config-id`): Give the global variable an ID so that you can refer to it later in :ref:`lambdas `. @@ -300,7 +300,7 @@ Configuration options: .. _automation-networkless: Do Automations Work Without a Network Connection -************************************************ +------------------------------------------------ YES! All automations you define in ESPHome are execute on the ESP itself and will continue to work even if the WiFi network is down or the MQTT server is not reachable. @@ -517,7 +517,7 @@ turns on a light for 5 seconds. Otherwise, the light is turned off immediately. - light.turn_off: my_light -Configuration options: +Configuration variables: - **condition** (**Required**, :ref:`config-condition`): The condition to check which branch to take. See :ref:`Conditions `. - **then** (*Optional*, :ref:`config-action`): The action to perform if the condition evaluates to true. @@ -545,7 +545,7 @@ a block until a given condition evaluates to false. - light.toggle: some_light - delay: 5s -Configuration options: +Configuration variables: - **condition** (**Required**): The condition to check whether to execute. See :ref:`Conditions `. - **then** (**Required**, :ref:`config-action`): The action to perform until the condition evaluates to false. @@ -610,8 +610,8 @@ Configuration variables: variable to. -``script`` ----------- +``script`` Component +-------------------- With the ``script:`` component you can define a list of steps in a central place, and then execute the script with a single call. @@ -627,7 +627,7 @@ execute the script with a single call. - switch.turn_off: my_switch -Configuration options: +Configuration variables: - **id** (**Required**, :ref:`config-id`): The :ref:`config-id` of the script. Use this to interact with the script using the script actions. @@ -759,8 +759,8 @@ Configuration variables: .. _interval: -``interval`` ------------- +``interval`` Component +---------------------- This component allows you to run actions at fixed time intervals. For example if you want to toggle a switch every minute, you can use this component. @@ -775,7 +775,7 @@ trigger, but this technique is more light-weight and user-friendly. then: - switch.toggle: relay_1 -Configuration options: +Configuration variables: - **interval** (**Required**, :ref:`config-time`): The interval to execute the action with. - **then** (**Required**, :ref:`config-action`): The action to perform. diff --git a/guides/configuration-types.rst b/guides/configuration-types.rst index 8a87494bd..4c4f0e21c 100644 --- a/guides/configuration-types.rst +++ b/guides/configuration-types.rst @@ -108,25 +108,6 @@ More exotic Pin Modes are also supported, but rarely used: - ``FUNCTION_5`` (only on ESP32) - ``FUNCTION_6`` (only on ESP32) -.. _config-color: - -Color ------ - -When using RGB-capable displays or LEDs/lighting in ESPHome you may wish to use custom colors. -A ``color`` component exists for just this purpose: - -.. code-block:: yaml - - color: - - id: my_light_red - red: 100% - green: 20% - blue: 25% - white: 0% - -RGB displays use red, green, and blue, while grayscale displays may use white. LEDs or LED-based light bulbs -may use all four color elements depending on their capabilities. .. _config-time: diff --git a/images/inkplate.jpg b/images/inkplate.jpg new file mode 100644 index 0000000000000000000000000000000000000000..a373c8082cb9688984eb329fe6418df658792c3b GIT binary patch literal 33233 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 E08z>P0{{R3 literal 0 HcmV?d00001 diff --git a/index.rst b/index.rst index 68e6f7097..8b7fd52bb 100644 --- a/index.rst +++ b/index.rst @@ -293,7 +293,7 @@ Display Components ST7789V, components/display/st7789v, st7789v.jpg ILI9341, components/display/ili9341, ili9341.jpg Waveshare E-Paper, components/display/waveshare_epaper, waveshare_epaper.jpg - Inkplate 6, components/display/Inkplate, Inkplate.jpg + Inkplate 6, components/display/inkplate, inkplate.jpg PCD8544 (Nokia 5110/ 3310), components/display/pcd8544, pcd8544.jpg Cover Components @@ -320,7 +320,6 @@ Text Sensor Components BLE Scanner, components/text_sensor/ble_scanner, bluetooth.svg Template Text Sensor, components/text_sensor/template, description.svg Custom Text Sensor, components/text_sensor/custom, language-cpp.svg - Custom UART Text Sensor, components/text_sensor/uart, language-cpp.svg Climate Components ------------------ @@ -412,6 +411,7 @@ Cookbook Sonoff light switch options, cookbook/sonoff-light-switch, light_switch.png ESP32 Water Leak Detector, cookbook/leak-detector-m5stickC, leak-detector-m5stickC_main_index.jpg IAQ (Indoor Air Quality) Board, cookbook/iaq_board, iaq_board2.jpg + Custom UART Text Sensor, cookbook/uart_text_sensor, language-cpp.svg Do you have other awesome automations or cool setups? Please feel free to add them to the documentation for others to copy. See :doc:`Contributing `. From 28abbe9529b0275d9d29a9e0454294a13a20d37a Mon Sep 17 00:00:00 2001 From: marecabo <23156476+marecabo@users.noreply.github.com> Date: Sat, 20 Feb 2021 22:10:33 +0100 Subject: [PATCH 22/47] Icon is ignored by HA when device class is set (#1011) --- components/sensor/index.rst | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/components/sensor/index.rst b/components/sensor/index.rst index f24e2e25e..2dd80663a 100644 --- a/components/sensor/index.rst +++ b/components/sensor/index.rst @@ -44,7 +44,8 @@ Configuration variables: - **device_class** (*Optional*, string): The device class for the sensor. See https://www.home-assistant.io/integrations/sensor/#device-class for a list of available options. Set to ``""`` to remove the default device class of a sensor. -- **icon** (*Optional*, icon): Manually set the icon to use for the sensor in the frontend. +- **icon** (*Optional*, icon): Manually set the icon to use for the sensor in the frontend. The icon set here + is ignored by Home Assistant, if a device class is already set. - **accuracy_decimals** (*Optional*, int): Manually set the accuracy of decimals to use when reporting values. - **filters** (*Optional*): Specify filters to use for some basic transforming of values. See :ref:`Sensor Filters ` for more information. From 3cb84bbc483df3d34138ec7ee16f98e7798023a6 Mon Sep 17 00:00:00 2001 From: dckiller51 <53062806+dckiller51@users.noreply.github.com> Date: Mon, 22 Feb 2021 10:24:27 +0100 Subject: [PATCH 23/47] Add docs for Xiaomi Miscale v1 and v2 (#1021) --- components/sensor/images/xiaomi_miscale.jpg | Bin 0 -> 6914 bytes components/sensor/images/xiaomi_miscale2.jpg | Bin 0 -> 17434 bytes components/sensor/xiaomi_miscale.rst | 100 +++++++++++++ components/sensor/xiaomi_miscale2.rst | 149 +++++++++++++++++++ images/xiaomi_miscale.jpg | Bin 0 -> 8338 bytes images/xiaomi_miscale2.jpg | Bin 0 -> 8225 bytes index.rst | 2 + 7 files changed, 251 insertions(+) create mode 100644 components/sensor/images/xiaomi_miscale.jpg create mode 100644 components/sensor/images/xiaomi_miscale2.jpg create mode 100644 components/sensor/xiaomi_miscale.rst create mode 100644 components/sensor/xiaomi_miscale2.rst create mode 100644 images/xiaomi_miscale.jpg create mode 100644 images/xiaomi_miscale2.jpg diff --git a/components/sensor/images/xiaomi_miscale.jpg b/components/sensor/images/xiaomi_miscale.jpg new file mode 100644 index 0000000000000000000000000000000000000000..1173ff0ea40613330c044d3f574afe87eff168cb GIT binary patch literal 6914 zcmZ`-2_RJ6`@S=V?6Y7r6oZkyWY0Q->}7^*DOn~|mXN*dvL%cqOG3(C7<-a^8D*(t zNm7xWEG2~g*SGz?|Ms3c=RWs6&pGqH=brnVx$}GU_a^{hprfw?Kp+4B0SoYZ9Ebpz zn3x%v8Ch7ESeRK@SlAJ)%q(mi+*}AwI2wgwN2B1Ja5yK5^DqaR6NBa9!yJ|nID+Fi za#Ti8R$Nh7P#VGjc4T8`VP$1!XJtdMALV3Y73AdNX6Iw%W<{V8NNyGc2PX>>gXCkv zurdlBKFSF{ieO`fqY*5eTteu>zuN#LBV+^eoem-hK#>qSB;Kqkmv+^UGW+!6ZPUBOUXRzd(5b5*_4ct$6_>yPanNJ3 z1B!K3gTT69LLrX~b@gie- zeUFc5S=7Uxp1AmG@zghfPRCPzeS1Ir(YE@s<8k?H40GhXA8(fDM{)5)R?!@~l|8=T z6APZ<$L>V4D0`~dZ+L$lL5b$ca0PKUu6V58;v@FJpf+RE7e^$9Jz1D9Xh!vK1QpWS zM^bvASa1Tk0n?Z3&DPW1`Lb9f03!l)r&tVUw)m6L@1n@dkKLi+P-HXb}aX~=<7yulZOJPulFZp>cM}&mL5^RA( z(rDuBYO_Okf(s6TJqKWb5v*ulLijH})j)d!tbz%EiXZ8v7oA=G4LG$&xsV9}4gnle zVhA-Gmf(JM#k5lLwf_&$Gep!w{F~ZOQ$9;eZ_0u3Fz=QCYApim?4L}I0 z{6#q$wMZls5Cmou8K{HI193kv+Y@W7xgkghq8|^)vE+!%Dc@Y#eU%%TWRIF=oe=|= zc}~vkNp4S63Nq5+@S3&&AZn~JFVer5M#Ss&g(O&LsN(_PP}cYQRi7?mNDKlSsLG$R zM+B#BV?S9#rA`iulfepZue3lofd|2FHdcLRqM29|5nhi>u=JuFw4J*_>>nanDG035 zG{A(1eBIMM0kdD3}A%DO)u`;y~I0qpQo-_kSHt^NQ6q9Zq``b^Z2yBshxq))`sD+0Ov^5+%10MKpgG;qZpU~1(X@c zmCu{E;C`~7*1k1SbhH^@05+u7{P{;?_t!gEk>u9d`SC!#UMeCKkYPJK)jrVdJMtq0 z^ZCpA_SZpbZwVru;vkDgbUC?OG|mO$0nCim=+tvd3vY8v#R2zGNU{LYU z2XY6ltbZ94@`u<#5ulGA2UbtoPNM+8JjsMPkqcWdsaeAf6tvjrSw<#Z7jqZth76Jb zIG8ur|4JM9Gi|zqwEr2Ni?h_Hx@}Gu>j11y{Hf%1!h^4 z$92%*kKn}+02BgcfYJd_y1#B71d2RKhZ2w>5D|E+G>O9lCMc`<*QNzwgzkvn=`^60 zm5TRPnVOnj;@KMd%SO5iKx^h{j<~Jnacw`yCDC(pTDry&(UTvhK6NhHA3t5fQDXcm(%t6qzW3(S$Vbth z&t-Ei-&Er2{_1D*{5#pEc#G`5bY)}kZU2KVZ0!~~uwhxqQ9>Yb!ozG_M4En(F@%4qazZvLOuwhAOhOc#9 zb7K7c0XSeLHbhmEr6!slDI(q<^mxOY!Rr^38BCYDKXe6m=X zIc?qkUS*`QQK<2y=E}wB<9gfo=6+?rD%=k;UmkxNBUu#tbvL-l;_Ac=eOz?O!v5{p z&EtB*I?<$=ONPNm>N;h=K8M~KCkT%&!Z4&3{|Em%tamIjcF?uNnN1CvpiLl`1n6zV-8TQ~w!yOa= zek1?|pB@N6ckoml7z7DOBd~a)z)6Dbp9%z5`uxM#$LO{ieUow3U7x*T_v&+4LLMIXkBQm3j1ng%2yw!$q; z6X@90`1ob=PInj+#{v?JCvA&%W?R%=!rN{=g@4je;;EktP&3nz-wv%C&;SGEME(z5 z26F$13XB=t9{E9rB;r82>F604{>}mXVRDiPMG8oV;t3?%q*bh@-F1)Lyw_`gDFKrP z^y|uNU+W5~y{O3UY9-k?r7ET8IWwPM{dlMJfDiv0@LoyxUS~La{%7q#4}W&>+Ro#8 zRj-Nin=8x7i{)V%((Yct&2MGfmnVIiClfAS8w*tD%N%xV8XReopR`u@Ter%{$jG|- zzV=CRZGq#T=7fy7+k+s$5Zd5}fJB1Te>;v$g1LwvNE+l23_}0Ub_7A5LAO>^cEv z^);zc$VX=>e(dW5!ylJ-sC;Enr6=Ac{vf;cd;r}YZl`1vodkM3osM}Pi8|SLf9#c) zlY*y6i9+IAGozGSlLYzv?B>CjF)w}tNrJD=vfQ*kfJunVd$7^sgJIVWS@6ZKvo zK|p6dVJF7b?DM;8J(*h1vz2)x)TRlWv3GWMnJ()H?)8>0-w->8d9}6=&%e3sSFQ$! z8s)eY?c}1<&SDL|+7|_z;;X-Wv1aQ@8BJ-<{!t^y z-=l1N{@Y3~^UvmQc4pNo;@deb>G=$e>vQF`x*1|7O&r%Ju=hdGd+G*oUi(ESO#HFL2j=u~#O=7ev{UvTavClK= zvIRtmADj=Qyyvt|Z+tTx`~$}gWe zz-e-$Hr~WC6Va;Y3&q5I=jRJ~7Yd!9&yT!W_J2pZq4Rv9=ot@4H?x$eP+cf0WBv`K zTY?}`u#u&|B=+eY?rbw|Jk#veBF$ZBQiAeTdqUxmIG?vBdd4OK zVKy>q&H0>pMs;sarHRVqH$q&`jp|IEw(|a&NP6~+oKIJrj2Cybtjl@Mz;%BN+576% z>>0e3*11RB*WSW8^ic zmb==ug_^jV+sWK|rhdq#W@uk0b0+!d_f|PJ4Qj}k^jwi)Zo;xoXJM#rW;J`DC`ZSSJk*%^;p=0IfHCML%?l)Cda+MgieNe7WDd z3)C?43EBbn=(y>Bw1@uCf20T83r-@i0)$FwJSabTuS1hQudcNc|Ir@Ai}z+nP3qb? zmXzanbn;)Cy*re0Z}`Tk!mQ;}4~9jYmN=?5k4$?d=J4PeqA82!eBpz}hrffhE)VrP z|An)mgQub?4~~C!toot9PV4`szI{-5G{}r+h?(DTvo>YH6ZDzoj%wk&nc-Dh+0-k3 znX+6ojOv*=Vd}k;6`Pu`=4=N|?8jb32{Phw0v%DPQ%TOSGMIE!2mVXf^&{+BNv|$% zBs<8-RIOuJp9YPxvZHlar`Fg|?bRN(s_lg|9W9sR9oIEUWj1pO?akEA50>Vai91D` zE?rD!&d)r^NofuipBYOH&qZn;>sWG}@jO#c(Z?k>=;LZ_4Nm2C$Mmk94x~>mxupx! z9#b{-$1lH-UR(6i+?`sIPiyDwIq$#DN@@9Yj{-!rd{{Z0KG8wZZ&XR?bQXVbz4V@d zX2s>qnFr1$TFReF3$(&S*h|E-=N=D!u@3v%7ac2Vl&1N{lC4fY?#@J<=EV~tV&=t$ zk=E$P$7wATm+XAMR-A38w?)fWp_HOfu>#TgHcxmgjM@;dy?UWbNxUx3syU21t`uXr zc|40}X^XNIli8S9*(GZ&Tq2v^X~=ws4We|;J|3x~{Gu`3L(3YG{-yY1Lh?zYQpMz5 zCeu@J|GA;3$D)k5FGZ-O#}Hl14tcs5vryFTkQ`ckh3)!XAF;peu|3nH^~ibhVgyBB zkW5ib9h%S=xcRO%r;M$&RVa~WJVcPSTve9;=5RgBA1)>N@kD7yv`yKyF_#MI`mPko z5Px0>4OJGUYy{=0MCJ9OgomQHQFzG`$B{$6baX6B4gr_@3>J#?j#YHrlT&R_`=C;` zQhht`!gtlpdyOW9-E_>|D*8sP&X0xdswNnncZ&tMC=ghn+zBzcYWxc1V9GhjSPanfk^d|*# zl3PsX`HeLTt>L`M-i_3=J6j5}UOHDJJfN9-?vJe$Z9dgn!M<< zL^Y$v*lGDy4kPS+V5w zCN`Jo3tklgTmg-TNGnQ9smU%B{g}i$CUUZ4I0-j#yh;UqZsDA|LQ_g|fG=xXg z^ayqO&4SF`dwJHyq?|3+wuvmNaMaSrNVohiiZP0o%f2%^wfeqU5qGWcRa5jwoxRoX zK1MyrMw>OR*PYUSNL)jTkKNG~QP7ugRXEefWVZR3qsqR{q|isdNpWUMn6fFQaJJL+ zhTvz<{gk_Xcg~($QLHDr?IwFXuM=x7RN*SdFO8O|D?VsHIb@n0Pg$`8CrI%;$qKiU zOwM#Y`|c`9MM0cvls4MewW5z(I?w6uw^?_TSdFe*wN3F+Q%M^Dza?6y3iLHN} z#R8gWKV$kS7TetQj46gJyZ07*T8i!*U@9sQAWg$j1c+?S=!nEMPEDu0u> z*j=4etAlI$r73r#xu9q{IL(Z`ZhY*_&$wd@vmO+mXB;*AnM=W!=P#RW``Wy2tg4{+ zn1GTOi1)elCdb_8o1u7FRx-EK)is{@J7c`HA+s2 zMTBUn1iOOMGv!Zn~;WrQ+54o^1y8jzk@68+WbiWxcm6l8j zw9G7rCTz|BXij@@kOTPIpr0p-#~1!Yfyo-VfI>%PvG?X zydrV&(dLcUQN=M*MFn<_1zX_)&aN+cmPGQEB2flP-=g0R$}8qOq42|Pih4qJ z;oPSaD&lqHvL2RKYB0q=z2Q?s(@^9iweI{4LQZXpLcYds-X^uv5-BWp4Akqc1vRPuC2 zKnzabHjU~0P?1Ai&MA+gQ>peZdO7s6*{942+z&^|R@@nM)@4>OM*V4RJCTV`!JT}n zTSp=jP*q{H6NZ(A;U)fs9bPT-FOy!mR>hQT?cU9BD~dZ`vy^|C(K(D!=nA?`utzH* z%MJD94z~5(%(kbF&s0peo)agsmqh${=7b~5s4ZMxC{hq0* z8P8=n=ZAh?=W)FaPh+)$EOqogT9M*hWL0*PA)Pein?fFL6_i8YK7 z8(j>OVZ?&5CcU4&TLcdnhbclUSX4+*Q|!qtwFD&(e0TcpDFveTVlvH5~fi* zNNX-1EP_^>J=Z=9uWbtNJ6Lqx(g=N{kbHG@7d{mPryXPWeD&+np^>dy8lro*6}EH2 z+?tkBUv1$eQa+>yM#-&>`bei;@%YJBpiBDsA%lhcozNN|yu(ie`DwQ<9E4qd8gjdD z|MBS_`1%f98^(XL)<42u`e{gg+Wi^6VFT~`1J;4?&|3cAO~E|;T?rk2VAbh|Dqf0s dCiL+A!Jni5-zzv2!ld!%EBOD%p!T! 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 V9XP+0g8>zeuJrF-aya4p{{aLq!k_>E literal 0 HcmV?d00001 diff --git a/components/sensor/xiaomi_miscale.rst b/components/sensor/xiaomi_miscale.rst new file mode 100644 index 000000000..a4f7087db --- /dev/null +++ b/components/sensor/xiaomi_miscale.rst @@ -0,0 +1,100 @@ +Xiaomi Miscale Sensors +======================== + +.. seo:: + :description: Instructions for setting up Xiaomi Miscale bluetooth-based sensors in ESPHome. + :image: xiaomi_miscale.jpg + :keywords: Xiaomi, BLE, Bluetooth, XMTZC01HM, XMTZC04HM + +The ``xiaomi_miscale`` 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 weight of the device every time the sensor sends out a BLE broadcast. Contrary to other implementations, ``xiaomi_miscale`` listens passively to advertisement packets and does not pair with the device. Hence ESPHome has no impact on battery life. + +To get the body scores using your weight, height, age and gender see the custom_components ``__ + +Supported Devices +----------------- + +XMTZC01HM, XMTZC04HM +******************** + +Miscale measures weight. + +.. figure:: images/xiaomi_miscale.jpg + :align: center + :width: 60.0% + +Configuration example: + +.. code-block:: yaml + + sensor: + - platform: xiaomi_miscale + mac_address: 'C8:47:8C:9F:7B:0A' + weight: + name: "Xiaomi Mi Scale Weight" + +Configuration example with multiple users : + +You have to replace the numbers in the lambdas to determine your weight which is between X weight and X weight. + +.. code-block:: yaml + + sensor: + - platform: xiaomi_miscale + mac_address: 'C8:47:8C:9F:7B:0A' + weight: + name: "Xiaomi Mi Scale Weight" + id: weight_miscale + on_value: + then: + - lambda: |- + if (id(weight_miscale).state >= 69 && id(weight_miscale).state <= 74.49) { + return id(weight_user1).publish_state(x);} + else if (id(weight_miscale).state >= 74.50 && id(weight_miscale).state <= 83) { + return id(weight_user2).publish_state(x);} + else if (id(weight_miscale).state >= 46 && id(weight_miscale).state <= 65) { + return id(weight_user3).publish_state(x);} + else if (id(weight_miscale).state >= 28 && id(weight_miscale).state <= 45) { + return id(weight_user4).publish_state(x);} + else if (id(weight_miscale).state >= 5 && id(weight_miscale).state <= 20) { + return id(weight_user5).publish_state(x);} + + - platform: template + name: Weight Aurélien + id: weight_user1 + unit_of_measurement: 'kg' + icon: mdi:weight-kilogram + accuracy_decimals: 2 + - platform: template + name: Weight Siham + id: weight_user2 + unit_of_measurement: 'kg' + icon: mdi:weight-kilogram + accuracy_decimals: 2 + - platform: template + name: Weight Théo + id: weight_user3 + unit_of_measurement: 'kg' + icon: mdi:weight-kilogram + accuracy_decimals: 2 + - platform: template + name: Weight Sacha + id: weight_user4 + unit_of_measurement: 'kg' + icon: mdi:weight-kilogram + accuracy_decimals: 2 + - platform: template + name: Weight Noham + id: weight_user5 + unit_of_measurement: 'kg' + icon: mdi:weight-kilogram + accuracy_decimals: 2 + + +See Also +-------- + +- :doc:`/components/esp32_ble_tracker` +- :doc:`/components/sensor/index` +- bodymiscale score integration for Home Assistant (bodymiscale custom component) ``__ + +- :ghedit:`Edit` diff --git a/components/sensor/xiaomi_miscale2.rst b/components/sensor/xiaomi_miscale2.rst new file mode 100644 index 000000000..ad1f40c1b --- /dev/null +++ b/components/sensor/xiaomi_miscale2.rst @@ -0,0 +1,149 @@ +Xiaomi Miscale2 Sensors +======================== + +.. seo:: + :description: Instructions for setting up Xiaomi Miscale2 bluetooth-based sensors in ESPHome. + :image: xiaomi_miscale2.jpg + :keywords: Xiaomi, BLE, Bluetooth, XMTZC02HM, XMTZC05HM + +The ``xiaomi_miscale2`` 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 weight and the impedance of the device every time the sensor sends out a BLE broadcast. Contrary to other implementations, ``xiaomi_miscale2`` listens passively to advertisement packets and does not pair with the device. Hence ESPHome has no impact on battery life. + +To get the body scores using your weight, height, age and gender see the custom_components ``__ + +Supported Devices +----------------- + +XMTZC02HM, XMTZC05HM +******************** + +Miscale2 measures weight and impedance. + +.. figure:: images/xiaomi_miscale2.jpg + :align: center + :width: 60.0% + +Configuration example: + +.. code-block:: yaml + + sensor: + - platform: xiaomi_miscale2 + mac_address: '5C:CA:D3:70:D4:A2' + weight: + name: "Xiaomi Mi Scale Weight" + impedance: + name: "Xiaomi Mi Scale Impedance" + +Configuration example with multiple users : + +You have to replace the numbers in the lambdas to determine your weight which is between X weight and X weight. + +.. code-block:: yaml + + sensor: + - platform: xiaomi_miscale2 + mac_address: '5C:CA:D3:70:D4:A2' + weight: + name: "Xiaomi Mi Scale Weight" + id: weight_miscale + on_value: + then: + - lambda: |- + if (id(weight_miscale).state >= 69 && id(weight_miscale).state <= 74.49) { + return id(weight_user1).publish_state(x);} + else if (id(weight_miscale).state >= 74.50 && id(weight_miscale).state <= 83) { + return id(weight_user2).publish_state(x);} + else if (id(weight_miscale).state >= 46 && id(weight_miscale).state <= 65) { + return id(weight_user3).publish_state(x);} + else if (id(weight_miscale).state >= 28 && id(weight_miscale).state <= 45) { + return id(weight_user4).publish_state(x);} + else if (id(weight_miscale).state >= 5 && id(weight_miscale).state <= 20) { + return id(weight_user5).publish_state(x);} + + impedance: + name: "Xiaomi Mi Scale Impedance" + id: impedance_xiaomi + on_value: + then: + - lambda: |- + if (id(weight_miscale).state >= 69 && id(weight_miscale).state <= 74.49) { + return id(impedance_user1).publish_state(x);} + else if (id(weight_miscale).state >= 74.50 && id(weight_miscale).state <= 83) { + return id(impedance_user2).publish_state(x);} + else if (id(weight_miscale).state >= 46 && id(weight_miscale).state <= 65) { + return id(impedance_user3).publish_state(x);} + else if (id(weight_miscale).state >= 28 && id(weight_miscale).state <= 45) { + return id(impedance_user4).publish_state(x);} + else if (id(weight_miscale).state >= 5 && id(weight_miscale).state <= 20) { + return id(impedance_user5).publish_state(x);} + + - platform: template + name: Weight Aurélien + id: weight_user1 + unit_of_measurement: 'kg' + icon: mdi:weight-kilogram + accuracy_decimals: 2 + - platform: template + name: Impedance Aurélien + id: impedance_user1 + unit_of_measurement: 'ohm' + icon: mdi:omega + accuracy_decimals: 0 + - platform: template + name: Weight Siham + id: weight_user2 + unit_of_measurement: 'kg' + icon: mdi:weight-kilogram + accuracy_decimals: 2 + - platform: template + name: Impedance Siham + id: impedance_user2 + unit_of_measurement: 'ohm' + icon: mdi:omega + accuracy_decimals: 0 + - platform: template + name: Weight Théo + id: weight_user3 + unit_of_measurement: 'kg' + icon: mdi:weight-kilogram + accuracy_decimals: 2 + - platform: template + name: Impedance Théo + id: impedance_user3 + unit_of_measurement: 'ohm' + icon: mdi:omega + accuracy_decimals: 0 + - platform: template + name: Weight Sacha + id: weight_user4 + unit_of_measurement: 'kg' + icon: mdi:weight-kilogram + accuracy_decimals: 2 + - platform: template + name: Impedance Sacha + id: impedance_user4 + unit_of_measurement: 'ohm' + icon: mdi:omega + accuracy_decimals: 0 + - platform: template + name: Weight Noham + id: weight_user5 + unit_of_measurement: 'kg' + icon: mdi:weight-kilogram + accuracy_decimals: 2 + - platform: template + name: Impedance Noham + id: impedance_user5 + unit_of_measurement: 'ohm' + icon: mdi:omega + accuracy_decimals: 0 + + +See Also +-------- + +- :doc:`/components/esp32_ble_tracker` +- :doc:`/components/sensor/index` +- bodymiscale score integration for Home Assistant (bodymiscale custom component) ``__ + +- :ghedit:`Edit` diff --git a/images/xiaomi_miscale.jpg b/images/xiaomi_miscale.jpg new file mode 100644 index 0000000000000000000000000000000000000000..6f6547db9e859df52f349be6e2aeb38491f26521 GIT binary patch literal 8338 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 Date: Thu, 25 Feb 2021 23:10:48 +0200 Subject: [PATCH 24/47] Sim800l dial (#1027) * Dial support for sim800l component * fix Co-authored-by: Guillermo Ruffino --- components/sim800l.rst | 36 +++++++++++++++++++++++++++++------- 1 file changed, 29 insertions(+), 7 deletions(-) diff --git a/components/sim800l.rst b/components/sim800l.rst index ed208dab0..d1ce18afb 100644 --- a/components/sim800l.rst +++ b/components/sim800l.rst @@ -2,11 +2,11 @@ Sim800L Component ================= .. seo:: - :description: Instructions for setting up the SIM800L GSM module to send and receive SMS in ESPHome. + :description: Instructions for setting up the SIM800L GSM module to dial, send and receive SMS in ESPHome. :image: sim800l.jpg :keywords: SMS SIM800L GSM -The ``SIM800L`` Component provides the ability to send and receive SMS text messages. The device must be +The ``SIM800L`` Component provides the ability to dial, send and receive SMS text messages. The device must be connected via a :doc:`UART bus ` 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``. @@ -92,11 +92,24 @@ Send a SMS message to a phone recipient using this action in automations. message: !lambda |- return id(reed_switch).state ? "Door is now OPEN" : "Hey door just CLOSED"; + +.. _sim800l-dial_action: + +``sim800l.dial`` Action +--------------------------- + +Dial to a phone recipient using this action in automations. + +.. code-block:: yaml + + on_...: + then: + - sim800l.dial: + recipient: '+15551234567' + Configuration options: -- **recipient** (***Required**, string, :ref:`templatable `): The message recipient. - number. -- **message** (**Required**, string, :ref:`templatable `): The message content. +- **recipient** (***Required**, string, :ref:`templatable `): The number to dial. - **id** (*Optional*, :ref:`config-id`): Manually specify the ID of the SIM800L if you have multiple components. .. note:: @@ -105,14 +118,14 @@ Configuration options: .. code-block:: cpp - id(sim800l1).send_sms("+15551234567", "The message content"); + id(sim800l1).dial("+15551234567"); Getting started with Home Assistant ----------------------------------- The following code will get you up and running with a configuration updating received messages -on Home Assistant and will also setup a service so you can send messages with your SIM800L. +on Home Assistant and will also setup a service so you can send messages and dial with your SIM800L. .. code-block:: yaml @@ -126,6 +139,12 @@ on Home Assistant and will also setup a service so you can send messages with yo - sim800l.send_sms: recipient: !lambda 'return recipient;' message: !lambda 'return message;' + - service: dial + variables: + recipient: string + then: + - sim800l.dial: + recipient: !lambda 'return recipient;' text_sensor: - platform: template @@ -159,6 +178,9 @@ To trigger the automation from Home Assistant you can invoke the service with th data: recipient: "+15551234567" message: "Hello World!" + - service: esphome.livingroom_dial + data: + recipient: "+15551234567" Relay management commands received from an authorized sender: From 06d923c2db83f3db561ee7cbc18f7a6c92e92046 Mon Sep 17 00:00:00 2001 From: Kurt Kellner Date: Thu, 25 Feb 2021 15:28:00 -0700 Subject: [PATCH 25/47] Update vl53l0x docs (#679) * Update vl53l0x docs * Updated docs to reflect default timeout of 10ms * just some formats and clarifications Co-authored-by: Guillermo Ruffino --- changelog/v1.14.0.rst | 2 +- components/sensor/images/vl53l0x.png | Bin 0 -> 48620 bytes components/sensor/vl53l0x.rst | 62 +++++++++++++++++++++++---- images/vl53l0x.png | Bin 0 -> 48620 bytes images/vl53l0x.svg | 1 - index.rst | 2 +- 6 files changed, 56 insertions(+), 11 deletions(-) create mode 100644 components/sensor/images/vl53l0x.png create mode 100644 images/vl53l0x.png delete mode 100644 images/vl53l0x.svg diff --git a/changelog/v1.14.0.rst b/changelog/v1.14.0.rst index 23d48bb4c..fc5ed3df0 100644 --- a/changelog/v1.14.0.rst +++ b/changelog/v1.14.0.rst @@ -29,7 +29,7 @@ Changelog - Version 1.14.0 - November 1 SGP30, components/sensor/sgp30, sgp30.jpg Tx20, components/sensor/tx20, tx20.jpg - VL53L0x, components/sensor/vl53l0x, vl53l0x.svg + VL53L0x, components/sensor/vl53l0x, vl53l0x.png Xiaomi CGG1, components/sensor/xiaomi_cgg1, xiaomi_cgg1.jpg Xiaomi LYWSD02, components/sensor/xiaomi_lywsd02, xiaomi_lywsd02.jpg ZyAura, components/sensor/zyaura, zgm053.jpg diff --git a/components/sensor/images/vl53l0x.png b/components/sensor/images/vl53l0x.png new file mode 100644 index 0000000000000000000000000000000000000000..41dde9a263060c464f757f9322f50a2012c17907 GIT binary patch literal 48620 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, -`ST `__) with ESPHome +`ST `__) with ESPHome to measure distances. The sensor works optically by emitting short infrared pulses and measuring the time it takes the light to be reflected back @@ -17,8 +17,21 @@ on several conditions like surface reflectance, field of view, temperature etc. you can expect surfaces up to 60cm to work, after that you need to make sure the surface is reflecting well enough (see also section 5 of datasheet). -The :ref:`I²C Bus ` is -required to be set up in your configuration for this sensor to work. +.. figure:: images/vl53l0x.png + :align: center + :width: 100.0% + +The :ref:`I²C Bus ` is required to be set up in your configuration for this sensor to work. + +- ``VCC`` connects to 3V3 (``3V3`` will output 3.3V), or directly connect ``VCC`` to 3.3V +- ``GND`` connects to ground +- ``SCL`` connects I2C SCL (clock) +- ``SDA`` connects I2C SDA (data) +- ``GPIO1`` is not used by ESPHome +- ``XSHUT`` connects to free GPIO pin. Enable/disable device. This is optional if there is only one + VL53L0X sensor on the I²C bus and the default ``0x29`` address is used. Otherwise this is required. + + .. figure:: images/vl53l0x-full.jpg :align: center @@ -32,7 +45,7 @@ required to be set up in your configuration for this sensor to work. .. code-block:: yaml - # Example configuration entry + # Simple configuration entry example sensor: - platform: vl53l0x name: "VL53L0x Distance" @@ -50,11 +63,44 @@ Configuration variables: (mega counts per second). This is the minimum signal amplitude detected by the sensor necessary for it to report a valid reading. Setting a lower value may increase the range of the sensor but also increases the chance of getting inaccurate readings. Defaults to ``0.25``. -- All other options from :ref:`Sensor `. - **long_range** (*Optional*, bool): Set the sensor in long range mode. The signal_rate_limit is overruled - to ``0.1``. Defaults to false. -- **address** (*Optional*, int): Manually specify the I²C address of the sensor. Defaults to ``0x29``. + to ``0.1``. Defaults to ``false``. +- **address** (*Optional*, int): Manually specify the i2c address of the sensor. Defaults to ``0x29``. + If an address other the ``0x29`` is specified, the sensor will be dynamically re-addressed at startup. + A dynamic re-address of sensor requires the ``enable_pin`` configuration variable to be assigned. + If more then one VL53L0X sensor is used on the same i2c bus, a unique address must be specified per sensor. +- **enable_pin** (*Optional*, :ref:`Pin Schema `): The pin connected to XSHUT + on vl53l0x to enable/disable sensor. **Required** if not using address ``0x29`` which is the cause if you + have multiple VL53L0X on the same i2c bus. In this case you have to assign a different pin to each VL53L0X. +- **timeout** (*Optional*, :ref:`config-time`): Sensor setup timeout. Default to ``10ms``. - **id** (*Optional*, :ref:`config-id`): Manually specify the ID used for code generation. +- All other options from :ref:`Sensor `. + + +.. code-block:: yaml + + # Muliple VL53L0X sensors on same i2c bus + # Example configuration entry + sensor: + - platform: vl53l0x + name: "distance1" + id: distance1 + address: 0x41 + enable_pin: GPIO16 + timeout: 200us + update_interval: 500ms + unit_of_measurement: "m" + + - platform: vl53l0x + name: "distance2" + id: distance2 + address: 0x42 + enable_pin: GPIO17 + timeout: 200us + update_interval: 500ms + unit_of_measurement: "m" + + See Also -------- diff --git a/images/vl53l0x.png b/images/vl53l0x.png new file mode 100644 index 0000000000000000000000000000000000000000..41dde9a263060c464f757f9322f50a2012c17907 GIT binary patch literal 48620 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 \ No newline at end of file diff --git a/index.rst b/index.rst index d03b97954..349be4a75 100644 --- a/index.rst +++ b/index.rst @@ -169,7 +169,7 @@ Sensor Components TX20, components/sensor/tx20, tx20.jpg Ultrasonic Sensor, components/sensor/ultrasonic, ultrasonic.jpg Uptime Sensor, components/sensor/uptime, timer.svg - VL53L0x, components/sensor/vl53l0x, vl53l0x.jpg + VL53L0x, components/sensor/vl53l0x, vl53l0x.png WiFi Signal Strength, components/sensor/wifi_signal, network-wifi.svg Xiaomi BLE, components/sensor/xiaomi_ble, xiaomi_mijia_logo.jpg Xiaomi Miscale, components/sensor/xiaomi_miscale, xiaomi_miscale.jpg From 0bcaea67a9224dad0815c25c4f01476153c7b910 Mon Sep 17 00:00:00 2001 From: Gabe Cook Date: Sat, 27 Feb 2021 16:53:29 -0600 Subject: [PATCH 26/47] Document uart switch send_every (#986) --- components/switch/uart.rst | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/components/switch/uart.rst b/components/switch/uart.rst index 3a875751b..4aefa9344 100644 --- a/components/switch/uart.rst +++ b/components/switch/uart.rst @@ -22,6 +22,10 @@ The ``uart`` switch platform allows you to send a pre-defined sequence of bytes - platform: uart name: "UART Bytes Output" data: [0xDE, 0xAD, 0xBE, 0xEF] + - platform: uart + name: "UART Recurring Output" + data: [0xDE, 0xAD, 0xBE, 0xEF] + send_every: 1s Configuration variables: ------------------------ @@ -31,6 +35,7 @@ Configuration variables: - **name** (**Required**, string): The name for the switch. - **uart_id** (*Optional*, :ref:`config-id`): Manually specify the ID of the UART hub. - **id** (*Optional*, :ref:`config-id`): Manually specify the ID used for code generation. +- **send_every** (*Optional*, :ref:`config-time`): Sends recurring data instead of sending once. - All other options from :ref:`Switch `. See Also From f2b2bd475f1009b5ec740a790ef7bb9e73447e05 Mon Sep 17 00:00:00 2001 From: Seppel Hardt Date: Sun, 28 Feb 2021 00:16:31 +0100 Subject: [PATCH 27/47] Added remote samsung36 protocol docs (#904) * Added remote samsung36 protocol docs * Make linter happy Co-authored-by: tuxBurner --- components/remote_receiver.rst | 9 +++++++++ components/remote_transmitter.rst | 18 ++++++++++++++++++ 2 files changed, 27 insertions(+) diff --git a/components/remote_receiver.rst b/components/remote_receiver.rst index 4fb6b93f1..0ac440002 100644 --- a/components/remote_receiver.rst +++ b/components/remote_receiver.rst @@ -36,6 +36,7 @@ Configuration variables: - **pioneer**: Decode and dump Pioneer infrared codes. - **jvc**: Decode and dump JVC infrared codes. - **samsung**: Decode and dump Samsung infrared codes. + - **samsung36**: Decode and dump Samsung36 infrared codes. - **sony**: Decode and dump Sony infrared codes. - **rc_switch**: Decode and dump RCSwitch RF codes. - **rc5**: Decode and dump RC5 IR codes. @@ -80,6 +81,9 @@ Automations: - **on_samsung** (*Optional*, :ref:`Automation `): An automation to perform when a Samsung remote code has been decoded. A variable ``x`` of type :apiclass:`remote_base::SamsungData` is passed to the automation for use in lambdas. +- **on_samsung36** (*Optional*, :ref:`Automation `): An automation to perform when a + Samsung36 remote code has been decoded. A variable ``x`` of type :apiclass:`remote_base::Samsung36Data` + is passed to the automation for use in lambdas. - **on_panasonic** (*Optional*, :ref:`Automation `): An automation to perform when a Panasonic remote code has been decoded. A variable ``x`` of type :apiclass:`remote_base::PanasonicData` is passed to the automation for use in lambdas. @@ -153,6 +157,11 @@ Remote code selection (exactly one of these has to be included): - **data** (**Required**, int): The data to trigger on, see dumper output for more info. +- **samsung36**: Trigger on a decoded Samsung36 remote code with the given data. + + - **address** (**Required**, int): The address to trigger on, see dumper output for more info. + - **command** (**Required**, int): The command. + - **panasonic**: Trigger on a decoded Panasonic remote code with the given data. - **address** (**Required**, int): The address to trigger on, see dumper output for more info. diff --git a/components/remote_transmitter.rst b/components/remote_transmitter.rst index 1d1253d35..f3792c321 100644 --- a/components/remote_transmitter.rst +++ b/components/remote_transmitter.rst @@ -209,6 +209,24 @@ Configuration variables: - **data** (**Required**, int): The data to send, see dumper output for more details. - All other options from :ref:`remote_transmitter-transmit_action`. +``remote_transmitter.transmit_samsung36`` Action +************************************************ + +This :ref:`action ` sends a Samsung36 infrared remote code to a remote transmitter. + +.. code-block:: yaml + + on_...: + - remote_transmitter.transmit_samsung36: + address: 0x0400 + command: 0x000E00FF + +Configuration variables: + +- **address** (**Required**, int): The address to send, see dumper output for more details. +- **command** (**Required**, int): The Samsung36 command to send, see dumper output for more details. +- All other options from :ref:`remote_transmitter-transmit_action`. + ``remote_transmitter.transmit_panasonic`` Action ************************************************ From bf3e251e2e8bf9de6ca1a6f930e5a35250e938a7 Mon Sep 17 00:00:00 2001 From: SenexCrenshaw <35600301+SenexCrenshaw@users.noreply.github.com> Date: Tue, 2 Mar 2021 09:09:13 -0500 Subject: [PATCH 28/47] Migrate ESPColor to Color (#1036) * Migrate ESPColor to Color * Fixed note indentation --- components/light/index.rst | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/components/light/index.rst b/components/light/index.rst index 9358ed4c4..ffb8f2382 100644 --- a/components/light/index.rst +++ b/components/light/index.rst @@ -718,9 +718,13 @@ This effect allows you to access each LED individually in a custom light effect. Available variables in the lambda: - **it** - :apiclass:`AddressableLight ` instance (see API reference for more info). -- **current_color** - :apistruct:`ESPColor ` instance (see API reference for more info). +- **current_color** - :apistruct:`Color ` instance (see API reference for more info). - **initial_run** - A bool which is true on the first execution of the lambda. Useful to reset static variables when restarting a effect. + .. note:: + + ESPColor has been migrated to Color. See :apistruct:`Color ` for more information. + .. code-block:: yaml light: @@ -733,18 +737,18 @@ Available variables in the lambda: // it.size() - Number of LEDs // it[num] - Access the LED at index num. // Set the LED at num to the given r, g, b values - // it[num] = ESPColor(r, g, b); - // Get the color at index num (ESPColor instance) + // it[num] = Color(r, g, b); + // Get the color at index num (Color instance) // it[num].get(); // Example: Simple color wipe for (int i = it.size() - 1; i > 0; i--) { it[i] = it[i - 1].get(); } - it[0] = ESPColor::random_color(); + it[0] = Color::random_color(); // Bonus: use .range() and .all() to set many LEDs without having to write a loop. - it.range(0, 50) = ESPColor::BLACK; + it.range(0, 50) = Color::BLACK; it.all().fade_to_black(10); .. code-block:: yaml @@ -768,7 +772,7 @@ Available variables in the lambda: // again you can use the initial_run variables if (initial_run) { progress = 0; - it.all() = ESPColor::BLACK; + it.all() = Color::BLACK; // optionally do a return so nothing happens until the next update_interval return; } From 8e01f3393bbda802f2a27f09ff029c70f15dfa0e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Moritz=20Gl=C3=B6ckl?= Date: Wed, 3 Mar 2021 01:55:19 +0100 Subject: [PATCH 29/47] Added documentation for the SM300D2 sensor (#993) * Added documentation for the SM300D2 sensor * otimize images * small fixes Co-authored-by: Guillermo Ruffino --- components/sensor/images/sm300d2-full.jpg | Bin 0 -> 89077 bytes components/sensor/images/sm300d2-pins.jpg | Bin 0 -> 100797 bytes components/sensor/images/sm300d2-ui.png | Bin 0 -> 5098 bytes components/sensor/sm300d2.rst | 123 ++++++++++++++++++++++ images/sm300d2.jpg | Bin 0 -> 52622 bytes index.rst | 1 + 6 files changed, 124 insertions(+) create mode 100644 components/sensor/images/sm300d2-full.jpg create mode 100644 components/sensor/images/sm300d2-pins.jpg create mode 100644 components/sensor/images/sm300d2-ui.png create mode 100644 components/sensor/sm300d2.rst create mode 100644 images/sm300d2.jpg diff --git a/components/sensor/images/sm300d2-full.jpg b/components/sensor/images/sm300d2-full.jpg new file mode 100644 index 0000000000000000000000000000000000000000..47e1714ca7f29bd7a4ed3a8ee1fe687638c164f0 GIT binary patch literal 89077 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 WvKCNO6$PbI(x`vtb^ie71^?MEf_zZ` literal 0 HcmV?d00001 diff --git a/components/sensor/images/sm300d2-pins.jpg b/components/sensor/images/sm300d2-pins.jpg new file mode 100644 index 0000000000000000000000000000000000000000..d0bfa93618869fbc70445e920c6af420813994b4 GIT binary patch literal 100797 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

lKr(KKXE=`6eF*dbr2M29vQjyt&i` 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 in your configuration with the ``rx_pin`` connected to the +TX pin of the sensor. The sensor does not support receiving data, so the ``tx_pin`` does not need to be +connected. The sensor expects the baud rate to be set at 9600. + +.. code-block:: yaml + + # Example configuration entry + uart: + rx_pin: D0 + tx_pin: D1 + baud_rate: 9600 + + sensor: + - platform: sm300d2 + co2: + name: "SM300D2 CO2 Value" + formaldehyde: + name: "SM300D2 Formaldehyde Value" + tvoc: + name: "SM300D2 TVOC Value" + pm_2_5: + name: "SM300D2 PM2.5 Value" + pm_10_0: + name: "SM300D2 PM10 Value" + temperature: + name: "SM300D2 Temperature Value" + humidity: + name: "SM300D2 Humidity Value" + update_interval: 60s + +Configuration variables: +------------------------ + + +- **co2** (**Required**): The CO₂ data from the sensor in parts per million (ppm). + + - **name** (**Required**, string): The name of the CO₂ sensor. + - **id** (*Optional*, :ref:`config-id`): Set the ID of this sensor for use in lambdas. + - All other options from :ref:`Sensor `. + +- **formaldehyde** (**Required**): The formaldehyde data of the sensor in micrograms per cubic meter air (µg/m³). + + - **name** (**Required**, string): The name of the formaldehyde sensor. + - **id** (*Optional*, :ref:`config-id`): Set the ID of this sensor for use in lambdas. + - All other options from :ref:`Sensor `. + +- **tvoc** (**Required**): The total volatile organic compounds (TVOC) data of the sensor in micrograms per cubic meter air (µg/m³). + + - **name** (**Required**, string): The name of the TVOC sensor. + - **id** (*Optional*, :ref:`config-id`): Set the ID of this sensor for use in lambdas. + - All other options from :ref:`Sensor `. + +- **pm_2_5** (**Required**): The PM2.5 data of the sensor in micrograms per cubic meter air (µg/m³). + + - **name** (**Required**, string): The name of the PM2.5 sensor. + - **id** (*Optional*, :ref:`config-id`): Set the ID of this sensor for use in lambdas. + - All other options from :ref:`Sensor `. + +- **pm_10_0** (**Required**): The PM10 data of the sensor in micrograms per cubic meter air (µg/m³). + + - **name** (**Required**, string): The name of the PM10 sensor. + - **id** (*Optional*, :ref:`config-id`): Set the ID of this sensor for use in lambdas. + - All other options from :ref:`Sensor `. + +- **temperature** (**Required**): The temperature data of the sensor in degrees celsius (°C). + + - **name** (**Required**, string): The name of the temperature sensor. + - **id** (*Optional*, :ref:`config-id`): Set the ID of this sensor for use in lambdas. + - All other options from :ref:`Sensor `. + +- **humidity** (**Required**): The humidity data of the sensor in percent relative humidity (%). + + - **name** (**Required**, string): The name of the humidity sensor. + - **id** (*Optional*, :ref:`config-id`): Set the ID of this sensor for use in lambdas. + - All other options from :ref:`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 ` if you want + to use multiple UART buses. + +- **id** (*Optional*, :ref:`config-id`): Manually specify the ID used for actions. + +.. figure:: images/sm300d2-pins.jpg + :align: center + :width: 80.0% + + Pins on the SM300D2. UART RX is not in use. + +.. note:: + + ``5V`` should be connected to power supply (supported voltage is 4.8 V to 5.2 V), ``GD`` to ``GND`` pin + + +See Also +-------- + +- :ref:`sensor-filters` +- :apiref:`sm300d2/sm300d2.h` +- :ghedit:`Edit` diff --git a/images/sm300d2.jpg b/images/sm300d2.jpg new file mode 100644 index 0000000000000000000000000000000000000000..38ab6f951feb73fe313251413f77f0a8ff7858d4 GIT binary patch literal 52622 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¥zx|GnJ}XbxrG!Exnd1*)+kRmxn%~ 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 H`abm!X5I+B literal 0 HcmV?d00001 diff --git a/index.rst b/index.rst index 349be4a75..2eedda572 100644 --- a/index.rst +++ b/index.rst @@ -155,6 +155,7 @@ Sensor Components SCD30, components/sensor/scd30, scd30.jpg SHTCx, components/sensor/shtcx, shtc3.jpg SHT3X-D, components/sensor/sht3xd, sht3xd.jpg + SM300D2, components/sensor/sm300d2, sm300d2.jpg SPS30, components/sensor/sps30, sps30.jpg STS3X, components/sensor/sts3x, sts3x.jpg SGP30, components/sensor/sgp30, sgp30.jpg From 2f81ac49b57305c1ebb52ad10d48e0188526d0b5 Mon Sep 17 00:00:00 2001 From: Gabe Cook Date: Fri, 5 Mar 2021 07:10:31 -0600 Subject: [PATCH 30/47] Document new min/max filters (#1032) --- components/sensor/index.rst | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) diff --git a/components/sensor/index.rst b/components/sensor/index.rst index 2dd80663a..eca9127cc 100644 --- a/components/sensor/index.rst +++ b/components/sensor/index.rst @@ -249,6 +249,41 @@ sensor data. A large window size will make the filter slow to react to input cha Must be smaller than or equal to ``send_every`` Defaults to ``1``. +``min`` / ``max`` +***************** + +Calculate min/max over the data. A large window size will make the filter slow to +react to input changes. + +.. code-block:: yaml + + # Example configuration entry + - platform: wifi_signal + # ... + filters: + - min: + window_size: 7 + send_every: 4 + send_first_at: 3 + +- **min**: A moving minimum over the last few values. + +- **max**: A moving maximum over the last few values. + +- Both accept the following parameters: + + - **window_size**: The number of values over which to calculate the min/max + when pushing out a value. + Defaults to ``5``. + - **send_every**: How often a sensor value should be pushed out. For + example, in above configuration the min is calculated after every 4th + received sensor value, over the last 7 received values. + Defaults to ``5``. + - **send_first_at**: By default, the very first raw value on boot is immediately + published. With this parameter you can specify when the very first value is to be sent. + Must be smaller than or equal to ``send_every`` + Defaults to ``1``. + ``sliding_window_moving_average`` / ``exponential_moving_average`` ****************************************************************** From d8862928c52e93f2c387eb37c13136aafcb6a82d Mon Sep 17 00:00:00 2001 From: Mynasru <30989850+Mynasru@users.noreply.github.com> Date: Sat, 6 Mar 2021 14:25:25 +0100 Subject: [PATCH 31/47] Uart invert option for ESP32 (#1039) --- components/uart.rst | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/components/uart.rst b/components/uart.rst index 064c3c882..50bc100dc 100644 --- a/components/uart.rst +++ b/components/uart.rst @@ -52,6 +52,10 @@ Configuration variables: - **stop_bits** (*Optional*, int): The number of stop bits to send. Options: 1, 2. Defaults to 1. - **id** (*Optional*, :ref:`config-id`): Manually specify the ID for this UART hub if you need multiple UART hubs. +ESP32 options: + +- **invert** (*Optional*, boolean): Invert the logic levels of the RX and TX pins. Options: ``True`` or ``False``. Defaults to ``False``. + .. _uart-hardware_uarts: Hardware UARTs From 0915aba828b0750440fe6bb0b9a76c25b1b7274f Mon Sep 17 00:00:00 2001 From: Guillermo Ruffino Date: Sun, 7 Mar 2021 15:29:02 -0300 Subject: [PATCH 32/47] add-black (#1044) * Setup pre-commit and black update pre-commit add setup * format with black format and flake --- .pre-commit-config.yaml | 25 ++++++ conf.py | 95 +++++++++++------------ github.py | 165 ++++++++++++++++++---------------------- script/bump-version.py | 42 ++++------ seo.py | 80 +++++++++++-------- setup.cfg | 41 ++++++++++ sitemap.py | 47 ++++++------ svg2png.py | 31 +++++--- travis.py | 64 ++++++++++------ 9 files changed, 333 insertions(+), 257 deletions(-) create mode 100644 .pre-commit-config.yaml create mode 100644 setup.cfg diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml new file mode 100644 index 000000000..c56ce094a --- /dev/null +++ b/.pre-commit-config.yaml @@ -0,0 +1,25 @@ +# See https://pre-commit.com for more information +# See https://pre-commit.com/hooks.html for more hooks +repos: + - repo: https://github.com/ambv/black + rev: 20.8b1 + hooks: + - id: black + args: + - --safe + - --quiet + - repo: https://gitlab.com/pycqa/flake8 + rev: 3.8.4 + hooks: + - id: flake8 + additional_dependencies: + - flake8-docstrings==1.5.0 + - pydocstyle==5.1.1 + - repo: https://github.com/pre-commit/pre-commit-hooks + rev: v3.4.0 + hooks: + - id: no-commit-to-branch + args: + - --branch=current + - --branch=next + - --branch=beta diff --git a/conf.py b/conf.py index 247a657cc..4b02a1e8e 100644 --- a/conf.py +++ b/conf.py @@ -22,14 +22,10 @@ # sys.path.insert(0, os.path.abspath('.')) import hashlib import os -import subprocess -from sphinx import addnodes -from sphinx.util.docfields import Field, GroupedField -import re import sys -sys.path.append(os.path.abspath('.')) +sys.path.append(os.path.abspath(".")) # -- General configuration ------------------------------------------------ @@ -41,58 +37,58 @@ sys.path.append(os.path.abspath('.')) # extensions coming with Sphinx (named 'sphinx.ext.*') or your custom # ones. extensions = [ - 'github', - 'seo', - 'sitemap', + "github", + "seo", + "sitemap", ] # Add any paths that contain templates here, relative to this directory. -templates_path = ['_templates'] +templates_path = ["_templates"] # The suffix(es) of source filenames. # You can specify multiple suffix as a list of string: # # source_suffix = ['.rst', '.md'] -source_suffix = '.rst' +source_suffix = ".rst" # The master toctree document. -master_doc = 'index' +master_doc = "index" # General information about the project. -project = 'ESPHome' -copyright = '2019, Otto Winter' +project = "ESPHome" +copyright = "2019, Otto Winter" html_show_copyright = False html_show_sphinx = False -author = 'Otto Winter' +author = "Otto Winter" # The version info for the project you're documenting, acts as replacement for # |version| and |release|, also used in various other places throughout the # built documents. # # The short X.Y version. -version = '1.17' +version = "1.17" # The full version, including alpha/beta/rc tags. -release = '1.17.0-dev' +release = "1.17.0-dev" # The language for content autogenerated by Sphinx. Refer to documentation # for a list of supported languages. # # This is also used if you do content translation via gettext catalogs. # Usually you set "language" from the command line for these cases. -language = 'en' +language = "en" # List of patterns, relative to source directory, that match files and # directories to ignore when looking for source files. # This patterns also effect to html_static_path and html_extra_path -exclude_patterns = ['_build', 'Thumbs.db', '.DS_Store'] +exclude_patterns = ["_build", "Thumbs.db", ".DS_Store"] # The reST default role (used for this markup: `text`) to use for all documents. # default_role = 'cpp:any' # The name of the Pygments (syntax highlighting) style to use. -pygments_style = 'xcode' +pygments_style = "xcode" -highlight_language = 'yaml' +highlight_language = "yaml" primary_domain = None @@ -105,40 +101,40 @@ todo_include_todos = False # The theme to use for HTML and HTML Help pages. See the documentation for # a list of builtin themes. # -html_theme = 'alabaster' +html_theme = "alabaster" # Theme options are theme-specific and customize the look and feel of a theme # further. For a list of options available for each theme, see the # documentation. # -html_baseurl = os.getenv('BASE_URL', 'https://esphome.io') -with open('_static/custom.css', 'rb') as f: +html_baseurl = os.getenv("BASE_URL", "https://esphome.io") +with open("_static/custom.css", "rb") as f: custom_css_hash = hashlib.md5(f.read()).hexdigest()[:8] html_theme_options = { # 'logo': 'logo-full.png', - 'logo_name': False, - 'show_related': False, - 'sidebar_collapse': True, - 'fixed_sidebar': True, - 'show_powered_by': False, + "logo_name": False, + "show_related": False, + "sidebar_collapse": True, + "fixed_sidebar": True, + "show_powered_by": False, } html_context = { - 'custom_css_hash': custom_css_hash, + "custom_css_hash": custom_css_hash, } -html_logo = 'images/logo-text.svg' +html_logo = "images/logo-text.svg" html_copy_source = True html_show_sourcelink = False html_last_updated_fmt = None html_use_smartypants = False -html_title = 'ESPHome' +html_title = "ESPHome" # Add any paths that contain custom static files (such as style sheets) here, # relative to this directory. They are copied after the builtin static files, # so a file named "default.css" will overwrite the builtin "default.css". -html_static_path = ['_static'] +html_static_path = ["_static"] # Custom sidebar templates, must be a dictionary that maps document names # to template names. @@ -146,10 +142,10 @@ html_static_path = ['_static'] # This is required for the alabaster theme # refs: http://alabaster.readthedocs.io/en/latest/installation.html#sidebars html_sidebars = { - '**': [ + "**": [ # 'about.html', - 'searchbox.html', - 'localtoc.html', + "searchbox.html", + "localtoc.html", ] } @@ -157,7 +153,7 @@ html_sidebars = { # -- Options for HTMLHelp output ------------------------------------------ # Output file base name for HTML help builder. -htmlhelp_basename = 'esphomedoc' +htmlhelp_basename = "esphomedoc" # -- Options for LaTeX output --------------------------------------------- @@ -166,15 +162,12 @@ latex_elements = { # The paper size ('letterpaper' or 'a4paper'). # # 'papersize': 'letterpaper', - # The font size ('10pt', '11pt' or '12pt'). # # 'pointsize': '10pt', - # Additional stuff for the LaTeX preamble. # # 'preamble': '', - # Latex figure (float) alignment # # 'figure_align': 'htbp', @@ -184,21 +177,17 @@ latex_elements = { # (source start file, target name, title, # author, documentclass [howto, manual, or own class]). latex_documents = [ - (master_doc, 'esphome.tex', 'ESPHome Documentation', - 'Otto Winter', 'manual'), + (master_doc, "esphome.tex", "ESPHome Documentation", "Otto Winter", "manual"), ] -latex_engine = 'xelatex' +latex_engine = "xelatex" # -- Options for manual page output --------------------------------------- # One entry per manual page. List of tuples # (source start file, name, description, authors, manual section). -man_pages = [ - (master_doc, 'esphome', 'ESPHome Documentation', - [author], 1) -] +man_pages = [(master_doc, "esphome", "ESPHome Documentation", [author], 1)] # -- Options for Texinfo output ------------------------------------------- @@ -207,8 +196,14 @@ man_pages = [ # (source start file, target name, title, author, # dir menu entry, description, category) texinfo_documents = [ - (master_doc, 'esphome', 'ESPHome Documentation', - author, 'esphome', 'One line description of project.', - 'Miscellaneous'), + ( + master_doc, + "esphome", + "ESPHome Documentation", + author, + "esphome", + "One line description of project.", + "Miscellaneous", + ), ] -linkcheck_ignore = [r'https://github.com/.*', r'https://discord.gg/.*'] +linkcheck_ignore = [r"https://github.com/.*", r"https://discord.gg/.*"] diff --git a/github.py b/github.py index b0e986710..a9e3f14d0 100644 --- a/github.py +++ b/github.py @@ -9,39 +9,35 @@ from docutils.parsers.rst import directives from docutils.parsers.rst.directives.tables import Table -def libpr_role(name, rawtext, text, lineno, inliner, options=None, - content=None): - ref = 'https://github.com/esphome/esphome-core/pull/{}'.format(text) - return [make_link_node(rawtext, 'core#{}'.format(text), ref, options)], [] +def libpr_role(name, rawtext, text, lineno, inliner, options=None, content=None): + ref = "https://github.com/esphome/esphome-core/pull/{}".format(text) + return [make_link_node(rawtext, "core#{}".format(text), ref, options)], [] -def yamlpr_role(name, rawtext, text, lineno, inliner, options=None, - content=None): - ref = 'https://github.com/esphome/esphome/pull/{}'.format(text) - return [make_link_node(rawtext, 'esphome#{}'.format(text), ref, options)], [] +def yamlpr_role(name, rawtext, text, lineno, inliner, options=None, content=None): + ref = "https://github.com/esphome/esphome/pull/{}".format(text) + return [make_link_node(rawtext, "esphome#{}".format(text), ref, options)], [] -def docspr_role(name, rawtext, text, lineno, inliner, options=None, - content=None): - ref = 'https://github.com/esphome/esphome-docs/pull/{}'.format(text) - return [make_link_node(rawtext, 'docs#{}'.format(text), ref, options)], [] +def docspr_role(name, rawtext, text, lineno, inliner, options=None, content=None): + ref = "https://github.com/esphome/esphome-docs/pull/{}".format(text) + return [make_link_node(rawtext, "docs#{}".format(text), ref, options)], [] -def ghuser_role(name, rawtext, text, lineno, inliner, options=None, - content=None): - ref = 'https://github.com/{}'.format(text) - return [make_link_node(rawtext, '@{}'.format(text), ref, options)], [] +def ghuser_role(name, rawtext, text, lineno, inliner, options=None, content=None): + ref = "https://github.com/{}".format(text) + return [make_link_node(rawtext, "@{}".format(text), ref, options)], [] -value_re = re.compile(r'^(.*)\s*<(.*)>$') +value_re = re.compile(r"^(.*)\s*<(.*)>$") DOXYGEN_LOOKUP = {} for s in string.ascii_lowercase + string.digits: DOXYGEN_LOOKUP[s] = s for s in string.ascii_uppercase: - DOXYGEN_LOOKUP[s] = '_{}'.format(s.lower()) -DOXYGEN_LOOKUP[':'] = '_1' -DOXYGEN_LOOKUP['_'] = '__' -DOXYGEN_LOOKUP['.'] = '_8' + DOXYGEN_LOOKUP[s] = "_{}".format(s.lower()) +DOXYGEN_LOOKUP[":"] = "_1" +DOXYGEN_LOOKUP["_"] = "__" +DOXYGEN_LOOKUP["."] = "_8" def split_text_value(value): @@ -52,60 +48,57 @@ def split_text_value(value): def encode_doxygen(value): - value = value.split('/')[-1] + value = value.split("/")[-1] try: - return ''.join(DOXYGEN_LOOKUP[s] for s in value) + return "".join(DOXYGEN_LOOKUP[s] for s in value) except KeyError: raise ValueError("Unknown character in doxygen string! '{}'".format(value)) -def apiref_role(name, rawtext, text, lineno, inliner, options=None, - content=None): +def apiref_role(name, rawtext, text, lineno, inliner, options=None, content=None): text, value = split_text_value(text) if text is None: - text = 'API Reference' - ref = '/api/{}.html'.format(encode_doxygen(value)) + text = "API Reference" + ref = "/api/{}.html".format(encode_doxygen(value)) return [make_link_node(rawtext, text, ref, options)], [] -def apiclass_role(name, rawtext, text, lineno, inliner, options=None, - content=None): +def apiclass_role(name, rawtext, text, lineno, inliner, options=None, content=None): text, value = split_text_value(text) if text is None: text = value - ref = '/api/classesphome_1_1{}.html'.format(encode_doxygen(value)) + ref = "/api/classesphome_1_1{}.html".format(encode_doxygen(value)) return [make_link_node(rawtext, text, ref, options)], [] -def apistruct_role(name, rawtext, text, lineno, inliner, options=None, - content=None): +def apistruct_role(name, rawtext, text, lineno, inliner, options=None, content=None): text, value = split_text_value(text) if text is None: text = value - ref = '/api/structesphome_1_1{}.html'.format(encode_doxygen(value)) + ref = "/api/structesphome_1_1{}.html".format(encode_doxygen(value)) return [make_link_node(rawtext, text, ref, options)], [] -def ghedit_role(name, rawtext, text, lineno, inliner, options=None, - content=None): - path = os.path.relpath(inliner.document.current_source, - inliner.document.settings.env.app.srcdir) - ref = 'https://github.com/esphome/esphome-docs/blob/current/{}'.format(path) - return [make_link_node(rawtext, 'Edit this page on GitHub', ref, options)], [] +def ghedit_role(name, rawtext, text, lineno, inliner, options=None, content=None): + path = os.path.relpath( + inliner.document.current_source, inliner.document.settings.env.app.srcdir + ) + ref = "https://github.com/esphome/esphome-docs/blob/current/{}".format(path) + return [make_link_node(rawtext, "Edit this page on GitHub", ref, options)], [] def make_link_node(rawtext, text, ref, options=None): options = options or {} - node = nodes.reference(rawtext, - utils.unescape(text), - refuri=ref, - **options) + node = nodes.reference(rawtext, utils.unescape(text), refuri=ref, **options) return node # https://stackoverflow.com/a/3415150/8924614 def grouper(n, iterable, fillvalue=None): - """grouper(3, 'ABCDEFG', 'x') --> ABC DEF Gxx""" + """Pythonic way to iterate over sequence, 4 items at a time. + + grouper(3, 'ABCDEFG', 'x') --> ABC DEF Gxx + """ args = [iter(iterable)] * n return zip_longest(fillvalue=fillvalue, *args) @@ -114,12 +107,11 @@ def grouper(n, iterable, fillvalue=None): class ImageTableDirective(Table): option_spec = { - 'columns': directives.positive_int, + "columns": directives.positive_int, } def run(self): - env = self.state.document.settings.env - cols = self.options.get('columns', 3) + cols = self.options.get("columns", 3) items = [] @@ -129,31 +121,30 @@ class ImageTableDirective(Table): continue name, page, image = row link = page.strip() - if link.startswith('http'): + if link.startswith("http"): pass else: - if not link.startswith('/'): - link = '/{}'.format(link) - if '.html' not in link: - link += '.html' - items.append({ - 'name': name.strip(), - 'link': link, - 'image': '/images/{}'.format(image.strip()), - }) + if not link.startswith("/"): + link = "/{}".format(link) + if ".html" not in link: + link += ".html" + items.append( + { + "name": name.strip(), + "link": link, + "image": "/images/{}".format(image.strip()), + } + ) col_widths = self.get_column_widths(cols) title, messages = self.make_title() table = nodes.table() - table['classes'].append('table-center') + table["classes"].append("table-center") # Set up column specifications based on widths tgroup = nodes.tgroup(cols=cols) table += tgroup - tgroup.extend( - nodes.colspec(colwidth=col_width) - for col_width in col_widths - ) + tgroup.extend(nodes.colspec(colwidth=col_width) for col_width in col_widths) tbody = nodes.tbody() tgroup += tbody @@ -166,12 +157,12 @@ class ImageTableDirective(Table): entry += nodes.paragraph() trow += entry continue - name = cell['name'] - link = cell['link'] - image = cell['image'] + name = cell["name"] + link = cell["link"] + image = cell["image"] reference_node = nodes.reference(refuri=link) img = nodes.image(uri=directives.uri(image), alt=name) - img['classes'].append('component-image') + img["classes"].append("component-image") reference_node += img para = nodes.paragraph() para += reference_node @@ -186,8 +177,8 @@ class ImageTableDirective(Table): entry += nodes.paragraph() trow += entry continue - name = cell['name'] - link = cell['link'] + name = cell["name"] + link = cell["link"] ref = nodes.reference(name, name, refuri=link) para = nodes.paragraph() para += ref @@ -207,8 +198,6 @@ class PinTableDirective(Table): option_spec = {} def run(self): - env = self.state.document.settings.env - items = [] data = list(csv.reader(self.content)) @@ -227,18 +216,14 @@ class PinTableDirective(Table): # Set up column specifications based on widths tgroup = nodes.tgroup(cols=2) table += tgroup - tgroup.extend( - nodes.colspec(colwidth=col_width) - for col_width in col_widths - ) + tgroup.extend(nodes.colspec(colwidth=col_width) for col_width in col_widths) thead = nodes.thead() tgroup += thead trow = nodes.row() thead += trow trow.extend( - nodes.entry(h, nodes.paragraph(text=h)) - for h in ('Pin', 'Function') + nodes.entry(h, nodes.paragraph(text=h)) for h in ("Pin", "Function") ) tbody = nodes.tbody() @@ -269,18 +254,16 @@ class PinTableDirective(Table): def setup(app): - app.add_role('libpr', libpr_role) - app.add_role('corepr', libpr_role) - app.add_role('yamlpr', yamlpr_role) - app.add_role('esphomepr', yamlpr_role) - app.add_role('docspr', docspr_role) - app.add_role('ghuser', ghuser_role) - app.add_role('apiref', apiref_role) - app.add_role('apiclass', apiclass_role) - app.add_role('apistruct', apistruct_role) - app.add_role('ghedit', ghedit_role) - app.add_directive('imgtable', ImageTableDirective) - app.add_directive('pintable', PinTableDirective) - return {"version": "1.0.0", - "parallel_read_safe": True, - "parallel_write_safe": True} + app.add_role("libpr", libpr_role) + app.add_role("corepr", libpr_role) + app.add_role("yamlpr", yamlpr_role) + app.add_role("esphomepr", yamlpr_role) + app.add_role("docspr", docspr_role) + app.add_role("ghuser", ghuser_role) + app.add_role("apiref", apiref_role) + app.add_role("apiclass", apiclass_role) + app.add_role("apistruct", apistruct_role) + app.add_role("ghedit", ghedit_role) + app.add_directive("imgtable", ImageTableDirective) + app.add_directive("pintable", PinTableDirective) + return {"version": "1.0.0", "parallel_read_safe": True, "parallel_write_safe": True} diff --git a/script/bump-version.py b/script/bump-version.py index 3517d110b..83ffa4b4d 100755 --- a/script/bump-version.py +++ b/script/bump-version.py @@ -2,7 +2,6 @@ import argparse import re -import subprocess from dataclasses import dataclass import sys @@ -16,30 +15,27 @@ class Version: dev: bool = False def __str__(self): - return f'{self.major}.{self.minor}.{self.full_patch}' + return f"{self.major}.{self.minor}.{self.full_patch}" @property def full_patch(self): - res = f'{self.patch}' + res = f"{self.patch}" if self.beta > 0: - res += f'b{self.beta}' + res += f"b{self.beta}" if self.dev: - res += '-dev' + res += "-dev" return res @classmethod def parse(cls, value): - match = re.match(r'(\d+).(\d+).(\d+)(b\d+)?(-dev)?', value) + match = re.match(r"(\d+).(\d+).(\d+)(b\d+)?(-dev)?", value) assert match is not None major = int(match[1]) minor = int(match[2]) patch = int(match[3]) beta = int(match[4][1:]) if match[4] else 0 dev = bool(match[5]) - return Version( - major=major, minor=minor, patch=patch, - beta=beta, dev=dev - ) + return Version(major=major, minor=minor, patch=patch, beta=beta, dev=dev) def sub(path, pattern, repl, expected_count=1): @@ -55,35 +51,25 @@ def sub(path, pattern, repl, expected_count=1): def write_version(version: Version): # ESPHOME_REF = v1.14.4 sub( - 'Makefile', - r'ESPHOME_REF = .*', - f'ESPHOME_REF = v{version}' if not version.dev else f'ESPHOME_REF = dev' + "Makefile", + r"ESPHOME_REF = .*", + f"ESPHOME_REF = v{version}" if not version.dev else "ESPHOME_REF = dev", ) # PROJECT_NUMBER = 1.14.4 sub( - 'Doxygen', - r'PROJECT_NUMBER = .*', - f'PROJECT_NUMBER = {version}' + "Doxygen", r"PROJECT_NUMBER = .*", f"PROJECT_NUMBER = {version}" ) # version = '1.14' - sub( - 'conf.py', - r"version = '.*'", - f"version = '{version.major}.{version.minor}'" - ) + sub("conf.py", r"version = '.*'", f"version = '{version.major}.{version.minor}'") # release = '1.14.4' - sub( - 'conf.py', - r"release = '.*'", - f"release = '{version}'" - ) - with open('_static/version', 'wt') as fh: + sub("conf.py", r"release = '.*'", f"release = '{version}'") + with open("_static/version", "wt") as fh: fh.write(str(version)) def main(): parser = argparse.ArgumentParser() - parser.add_argument('new_version', type=str) + parser.add_argument("new_version", type=str) args = parser.parse_args() version = Version.parse(args.new_version) diff --git a/seo.py b/seo.py index 819b0206b..1255a66cf 100644 --- a/seo.py +++ b/seo.py @@ -6,11 +6,18 @@ from docutils.writers._html_base import HTMLTranslator class SEONode(nodes.General, nodes.Element): - def __init__(self, title=None, description=None, image=None, - author=None, author_twitter=None, keywords=None): + def __init__( + self, + title=None, + description=None, + image=None, + author=None, + author_twitter=None, + keywords=None, + ): super(SEONode, self).__init__() self.title = title - self.description = description.replace('\n', ' ') + self.description = description.replace("\n", " ") self.image = image self.author = author self.author_twitter = author_twitter @@ -25,26 +32,34 @@ class RedirectNode(nodes.General, nodes.Element): def seo_visit(self: HTMLTranslator, node: SEONode): def encode_text(text): - special_characters = {ord('&'): '&', - ord('<'): '<', - ord('"'): '"', - ord('>'): '>'} + special_characters = { + ord("&"): "&", + ord("<"): "<", + ord('"'): """, + ord(">"): ">", + } return text.translate(special_characters) def create_content_meta(name, content): if content is None: return - self.meta.append('\n'.format(name, encode_text(content))) + self.meta.append( + '\n'.format(name, encode_text(content)) + ) def create_itemprop_meta(name, content): if content is None: return - self.meta.append('\n'.format(name, encode_text(content))) + self.meta.append( + '\n'.format(name, encode_text(content)) + ) def create_property_meta(name, content): if content is None: return - self.meta.append('\n'.format(name, encode_text(content))) + self.meta.append( + '\n'.format(name, encode_text(content)) + ) # Base create_content_meta("description", node.description) @@ -76,8 +91,11 @@ def seo_visit(self: HTMLTranslator, node: SEONode): def redirect_visit(self: HTMLTranslator, node: RedirectNode): self.meta.append(''.format(node.url)) - self.body.append(self.starttag(node, 'p', - 'Redirecting to {0}'.format(node.url))) + self.body.append( + self.starttag( + node, "p", 'Redirecting to {0}'.format(node.url) + ) + ) def seo_depart(self, _): @@ -85,36 +103,36 @@ def seo_depart(self, _): def redirect_depart(self, _): - self.body.append('

') + self.body.append("

") class SEODirective(Directive): option_spec = { - 'title': directives.unchanged, - 'description': directives.unchanged, - 'image': directives.path, - 'author': directives.unchanged, - 'author_twitter': directives.unchanged, - 'keywords': directives.unchanged, + "title": directives.unchanged, + "description": directives.unchanged, + "image": directives.path, + "author": directives.unchanged, + "author_twitter": directives.unchanged, + "keywords": directives.unchanged, } def run(self): env = self.state.document.settings.env - title_match = re.match(r'.+(.+).+', str(self.state.document)) - if title_match is not None and 'title' not in self.options: - self.options['title'] = title_match.group(1) + title_match = re.match(r".+(.+).+", str(self.state.document)) + if title_match is not None and "title" not in self.options: + self.options["title"] = title_match.group(1) - image = self.options.get('image') + image = self.options.get("image") if image is not None: - if not image.startswith('/'): - image = '/_images/' + image - self.options['image'] = env.config.html_baseurl + image + if not image.startswith("/"): + image = "/_images/" + image + self.options["image"] = env.config.html_baseurl + image return [SEONode(**self.options)] class RedirectDirective(Directive): option_spec = { - 'url': directives.unchanged, + "url": directives.unchanged, } def run(self): @@ -122,10 +140,8 @@ class RedirectDirective(Directive): def setup(app): - app.add_directive('seo', SEODirective) + app.add_directive("seo", SEODirective) app.add_node(SEONode, html=(seo_visit, seo_depart)) - app.add_directive('redirect', RedirectDirective) + app.add_directive("redirect", RedirectDirective) app.add_node(RedirectNode, html=(redirect_visit, redirect_depart)) - return {"version": "1.0.0", - "parallel_read_safe": True, - "parallel_write_safe": True} + return {"version": "1.0.0", "parallel_read_safe": True, "parallel_write_safe": True} diff --git a/setup.cfg b/setup.cfg new file mode 100644 index 000000000..d8e6856d8 --- /dev/null +++ b/setup.cfg @@ -0,0 +1,41 @@ +[flake8] +max-line-length = 120 +# Following 4 for black compatibility +# E501: line too long +# W503: Line break occurred before a binary operator +# E203: Whitespace before ':' +# D202 No blank lines allowed after function docstring + +# TODO fix flake8 +# D100 Missing docstring in public module +# D101 Missing docstring in public class +# D102 Missing docstring in public method +# D103 Missing docstring in public function +# D104 Missing docstring in public package +# D105 Missing docstring in magic method +# D107 Missing docstring in __init__ +# D200 One-line docstring should fit on one line with quotes +# D205 1 blank line required between summary line and description +# D209 Multi-line docstring closing quotes should be on a separate line +# D400 First line should end with a period +# D401 First line should be in imperative mood + +ignore = + E501, + W503, + E203, + D202, + + D100, + D101, + D102, + D103, + D104, + D105, + D107, + D200, + D205, + D209, + D400, + D401, + diff --git a/sitemap.py b/sitemap.py index 6878b12b5..3f50ff322 100644 --- a/sitemap.py +++ b/sitemap.py @@ -4,15 +4,17 @@ import xml.etree.ElementTree as ET def setup(app): """Setup connects events to the sitemap builder""" - app.connect('html-page-context', add_html_link) - app.connect('build-finished', create_sitemap) + app.connect("html-page-context", add_html_link) + app.connect("build-finished", create_sitemap) app.sitemap_links = [] - is_production = os.getenv('PRODUCTION') == 'YES' + is_production = os.getenv("PRODUCTION") == "YES" - return {"version": "1.0.0", - "parallel_read_safe": True, - "parallel_write_safe": not is_production} + return { + "version": "1.0.0", + "parallel_read_safe": True, + "parallel_write_safe": not is_production, + } def add_html_link(app, pagename, templatename, context, doctree): @@ -29,26 +31,27 @@ def create_sitemap(app, exception): for link in app.sitemap_links: url = ET.SubElement(root, "url") priority = 0.5 - if link == 'index.html': + if link == "index.html": priority = 1.0 - link = '' - elif link.endswith('index.html'): + link = "" + elif link.endswith("index.html"): priority += 0.25 - link = link[:-len('index.html')] - if link.endswith('.html'): - link = link[:-len('.html')] - ET.SubElement(url, "loc").text = app.builder.config.html_baseurl + '/' + link + link = link[: -len("index.html")] + if link.endswith(".html"): + link = link[: -len(".html")] + ET.SubElement(url, "loc").text = app.builder.config.html_baseurl + "/" + link ET.SubElement(url, "priority").text = str(priority) filename = os.path.join(app.outdir, "sitemap.xml") - ET.ElementTree(root).write(filename, - xml_declaration=True, - encoding='utf-8', - method="xml") + ET.ElementTree(root).write( + filename, xml_declaration=True, encoding="utf-8", method="xml" + ) - with open(os.path.join(app.builder.outdir, 'robots.txt'), 'wt') as f: - if os.getenv('PRODUCTION') != 'YES': - f.write('User-agent: *\nDisallow: /\n') + with open(os.path.join(app.builder.outdir, "robots.txt"), "wt") as f: + if os.getenv("PRODUCTION") != "YES": + f.write("User-agent: *\nDisallow: /\n") else: - f.write('User-agent: *\nDisallow: \n\n' - 'Sitemap: https://esphome.io/sitemap.xml\n') + f.write( + "User-agent: *\nDisallow: \n\n" + "Sitemap: https://esphome.io/sitemap.xml\n" + ) diff --git a/svg2png.py b/svg2png.py index 02b3dc4c1..fe5165aeb 100644 --- a/svg2png.py +++ b/svg2png.py @@ -7,13 +7,16 @@ import queue import sys -to_p = Path('svg2png') +to_p = Path("svg2png") to_p.mkdir(exist_ok=True) -for f in to_p.glob('*.png'): +for f in to_p.glob("*.png"): f.unlink() -images = [f for f in Path('_build/html/_images/').glob('*.svg') - if not re.match(r'^seg[0-9A-F]{2}$', f.stem)] +images = [ + f + for f in Path("_build/html/_images/").glob("*.svg") + if not re.match(r"^seg[0-9A-F]{2}$", f.stem) +] q = queue.Queue() @@ -23,18 +26,28 @@ def worker(): if item is None: break - to = to_p / item.with_suffix('.png').name - args = ['inkscape', '-z', '-e', str(to.absolute()), '-w', '800', - '-background', 'white', str(item.absolute())] - print("Running: {}".format(' '.join(shlex.quote(x) for x in args))) + to = to_p / item.with_suffix(".png").name + args = [ + "inkscape", + "-z", + "-e", + str(to.absolute()), + "-w", + "800", + "-background", + "white", + str(item.absolute()), + ] + print("Running: {}".format(" ".join(shlex.quote(x) for x in args))) proc = subprocess.run(args, stdout=subprocess.PIPE, stderr=subprocess.STDOUT) - if b'Bitmap saved as' not in proc.stdout: + if b"Bitmap saved as" not in proc.stdout: print("Error!") print(proc.stdout) sys.exit(1) q.task_done() + NUM_THREADS = 8 threads = [] for i in range(NUM_THREADS): diff --git a/travis.py b/travis.py index c3ca38e31..fd5b96c15 100644 --- a/travis.py +++ b/travis.py @@ -16,32 +16,40 @@ def find_all(a_str, sub): column += len(sub) -section_regex = re.compile(r'^(=+|-+|\*+|~+)$') -directive_regex = re.compile(r'^(\s*)\.\. (.*)::.*$') -directive_arg_regex = re.compile(r'^(\s+):.*:\s*.*$') -esphome_io_regex = re.compile(r'https://esphome.io/') +section_regex = re.compile(r"^(=+|-+|\*+|~+)$") +directive_regex = re.compile(r"^(\s*)\.\. (.*)::.*$") +directive_arg_regex = re.compile(r"^(\s+):.*:\s*.*$") +esphome_io_regex = re.compile(r"https://esphome.io/") -for f in sorted(Path('.').glob('**/*.rst')): +for f in sorted(Path(".").glob("**/*.rst")): try: - content = f.read_text('utf-8') + content = f.read_text("utf-8") except UnicodeDecodeError: - errors.append("File {} is not readable as UTF-8. Please set your editor to UTF-8 mode." - "".format(f)) + errors.append( + "File {} is not readable as UTF-8. Please set your editor to UTF-8 mode." + "".format(f) + ) continue - if not content.endswith('\n'): - errors.append("Newline at end of file missing. Please insert an empty line at end " - "of file {}".format(f)) + if not content.endswith("\n"): + errors.append( + "Newline at end of file missing. Please insert an empty line at end " + "of file {}".format(f) + ) # Check tab character - for line, col in find_all(content, '\t'): - errors.append("File {} contains tab character on line {}:{}. " - "Please convert tabs to spaces.".format(f, line + 1, col)) + for line, col in find_all(content, "\t"): + errors.append( + "File {} contains tab character on line {}:{}. " + "Please convert tabs to spaces.".format(f, line + 1, col) + ) # Check windows newline - for line, col in find_all(content, '\r'): - errors.append("File {} contains windows newline on line {}:{}. " - "Please set your editor to unix newline mode.".format(f, line + 1, col)) + for line, col in find_all(content, "\r"): + errors.append( + "File {} contains windows newline on line {}:{}. " + "Please set your editor to unix newline mode.".format(f, line + 1, col) + ) lines = content.splitlines(keepends=False) @@ -65,7 +73,7 @@ for f in sorted(Path('.').glob('**/*.rst')): continue base_indentation = len(m.group(1)) directive_name = m.group(2) - if directive_name.startswith('|') or directive_name == 'seo': + if directive_name.startswith("|") or directive_name == "seo": continue # Match directive args for j in range(i + 1, len(lines)): @@ -77,8 +85,10 @@ for f in sorted(Path('.').glob('**/*.rst')): # Empty line must follow if lines[j]: - errors.append("Directive '{}' is not followed by an empty line. Please insert an " - "empty line after {}:{}".format(directive_name, f, j)) + errors.append( + "Directive '{}' is not followed by an empty line. Please insert an " + "empty line after {}:{}".format(directive_name, f, j) + ) continue k = j + 1 @@ -93,16 +103,20 @@ for f in sorted(Path('.').glob('**/*.rst')): break num_indent = num_spaces - base_indentation if j == k and num_indent != 4: - errors.append("Directive '{}' must be indented with 4 spaces, not {}. See " - "{}:{}".format(directive_name, num_indent, f, j+1)) + errors.append( + "Directive '{}' must be indented with 4 spaces, not {}. See " + "{}:{}".format(directive_name, num_indent, f, j + 1) + ) break for i, line in enumerate(lines): if esphome_io_regex.search(line): - if 'privacy.rst' in str(f) or 'web_server.rst' in str(f): + if "privacy.rst" in str(f) or "web_server.rst" in str(f): continue - errors.append("All links to esphome.io should be relative, please remove esphome.io " - "from URL. See {}:{}".format(f, i+1)) + errors.append( + "All links to esphome.io should be relative, please remove esphome.io " + "from URL. See {}:{}".format(f, i + 1) + ) for error in errors: From 122e7e7fd68756313036f8c48e2ac54a35d2d1af Mon Sep 17 00:00:00 2001 From: Jesse Hills <3060199+jesserockz@users.noreply.github.com> Date: Mon, 8 Mar 2021 08:24:08 +1300 Subject: [PATCH 33/47] Update MCP23XXX docs with interrupts and pin schemas (#1028) --- components/mcp230xx.rst | 30 ++++++++++++++++++++++++++---- components/mcp23Sxx.rst | 28 ++++++++++++++++++++++++---- 2 files changed, 50 insertions(+), 8 deletions(-) diff --git a/components/mcp230xx.rst b/components/mcp230xx.rst index 15ff449a4..27564f6e0 100644 --- a/components/mcp230xx.rst +++ b/components/mcp230xx.rst @@ -33,7 +33,7 @@ The MCP23008 component (`datasheet ` + + .. _mcp23016-label: MCP23016 Component @@ -110,6 +118,13 @@ Configuration variables: - **address** (*Optional*, int): The I²C address of the driver. Defaults to ``0x20``. +Pin Configuration Variables: +~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +- **mcp23016** (**Required**, :ref:`config-id`): The id of the MCP23016 component. +- All other options from :ref:`Pin Schema ` + + .. _mcp23017-label: MCP23017 Component @@ -137,7 +152,7 @@ binary sensor or GPIO switch. - platform: gpio name: "MCP23017 Pin #0" pin: - mcp23017: mcp23017_hub + mcp23xxx: mcp23017_hub # Use pin number 0 number: 0 mode: OUTPUT @@ -148,7 +163,7 @@ binary sensor or GPIO switch. - platform: gpio name: "MCP23017 Pin #1" pin: - mcp23017: mcp23017_hub + mcp23xxx: mcp23017_hub # Use pin number 1 number: 1 # One of INPUT or INPUT_PULLUP @@ -165,6 +180,13 @@ Configuration variables: Useful when the MCP23017's power supply is greater than 3.3 volts. Note that these pins will require pull-up resistors (to 3.3 volts) when this mode is enabled. +Pin Configuration Variables: +~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +- **mcp23xxx** (**Required**, :ref:`config-id`): The id of the MCP23017 component. +- **interrupt** (*Optional*): Set this pin to trigger the port INT pin on the component. Can be one of ``CHANGE``, ``RISING``, ``FALLING``. +- All other options from :ref:`Pin Schema ` + See Also -------- diff --git a/components/mcp23Sxx.rst b/components/mcp23Sxx.rst index 1d1f19188..861c78364 100644 --- a/components/mcp23Sxx.rst +++ b/components/mcp23Sxx.rst @@ -34,7 +34,7 @@ The MCP23S08 component (`datasheet ` .. _mcp23S17-label: @@ -90,7 +100,7 @@ binary sensor or GPIO switch. - platform: gpio name: "MCP23S17 Pin #0" pin: - mcp23s17_id: mcp23s17_hub + mcp23xxx: mcp23s17_hub # Use pin number 0 number: 0 mode: OUTPUT @@ -101,7 +111,7 @@ binary sensor or GPIO switch. - platform: gpio name: "MCP23S17 Pin #1" pin: - mcp23s17_id: mcp23s17_hub + mcp23xxx: mcp23s17_hub # Use pin number 1 number: 1 # One of INPUT or INPUT_PULLUP @@ -115,6 +125,16 @@ Configuration variables: - **cs_pin** (**Required**, int): The SPI chip select pin to use. - **deviceaddress** (*Optional*, int): The address of the chip. Defaults to ``0``. +- **open_drain_interrupt** (*Optional*, bool): Configure interrupt pins to open-drain mode. + Useful when the MCP23S17's power supply is greater than 3.3 volts. Note that these pins + will require pull-up resistors (to 3.3 volts) when this mode is enabled. + +Pin Configuration Variables: +~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +- **mcp23xxx** (**Required**, :ref:`config-id`): The id of the MCP23S17 component. +- **interrupt** (*Optional*): Set this pin to trigger the port INT pin on the component. Can be one of ``CHANGE``, ``RISING``, ``FALLING``. +- All other options from :ref:`Pin Schema ` See Also From 234810e6f5e13cb525c9b549b0cd8a12d64b4996 Mon Sep 17 00:00:00 2001 From: Guillermo Ruffino Date: Sun, 7 Mar 2021 21:25:11 -0300 Subject: [PATCH 34/47] Dump schema (#1030) * updates * updates * add verify missing descriptions * updates * schema handling updates * add action and condition * add more checks for missing props * updates * support typed schema * better inner props handling and mqtt * updates * clean up * add links to titles on markdown * remove spelling not used * format black * format black * Better titles --- conf.py | 1 + markdown.py | 194 +++++++++++ schema_doc.py | 943 ++++++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 1138 insertions(+) create mode 100644 markdown.py create mode 100644 schema_doc.py diff --git a/conf.py b/conf.py index 4b02a1e8e..3f2f786b7 100644 --- a/conf.py +++ b/conf.py @@ -40,6 +40,7 @@ extensions = [ "github", "seo", "sitemap", + "schema_doc", ] # Add any paths that contain templates here, relative to this directory. diff --git a/markdown.py b/markdown.py new file mode 100644 index 000000000..1043117e8 --- /dev/null +++ b/markdown.py @@ -0,0 +1,194 @@ +#!/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 + + +class Translator(nodes.NodeVisitor): + def __init__(self, base_url, document): + nodes.NodeVisitor.__init__(self, document) + self.output = "" + self.indent = 0 + self.preserve_newlines = False + self.base_url = base_url + + def write(self, text): + self.output += text.replace("\n", "\n" + " " * self.indent) + + def visit_document(self, node): + pass + + def depart_document(self, node): + pass + + def visit_section(self, node): + pass + + def depart_section(self, node): + # Skip all sections except the first one. + raise nodes.StopTraversal + + def visit_title(self, node): + self.version = re.match(r"(\d+\.\d+\.\d+).*", node.children[0]).group(1) + raise nodes.SkipChildren + + def visit_title_reference(self, node): + raise Exception( + f'Markdown conversion: Improper format or not supported feature in "{node.parent.rawsource}". Check "`"' + ) + + def depart_title(self, node): + pass + + def visit_Text(self, node): + if not self.preserve_newlines: + node = node.replace("\n", " ") + self.write(node) + + def depart_Text(self, node): + pass + + def visit_bullet_list(self, node): + self.write("\n") + pass + + def depart_bullet_list(self, node): + pass + + def visit_list_item(self, node): + self.write("* ") + self.indent += 2 + + def depart_list_item(self, node): + self.indent -= 2 + self.write("\n\n") + + def visit_paragraph(self, node): + pass + + def depart_paragraph(self, node): + pass + + def visit_reference(self, node): + # if not is_github_ref(node): + self.write("[") + + def depart_reference(self, node): + # if not is_github_ref(node): + # self.write('](' + node['refuri'] + ')') + refid = node.get("refid") + if refid: + self.write("](" + parse.urljoin(self.base_url, "#" + refid) + ")") + else: + refuri = node.get("refuri") + if refuri: + # if refuri.startswith('../'): + # refuri = parse.urljoin(self.base_url, refuri) + # self.write('](' + refuri + ')') + self.write("](" + parse.urljoin(self.base_url, refuri) + ")") + + def visit_emphasis(self, node): + self.write("*") + pass + + def depart_emphasis(self, node): + self.write("*") + pass + + def visit_target(self, node): + pass + + def depart_target(self, node): + pass + + def visit_literal(self, node): + self.write("`") + + def depart_literal(self, node): + self.write("`") + + def visit_literal_block(self, node): + self.write("\n\n```") + if "c++" in node["classes"]: + self.write("c++") + self.write("\n") + self.preserve_newlines = True + + def depart_literal_block(self, node): + self.write("\n```\n") + self.preserve_newlines = False + + def visit_inline(self, node): + pass + + def depart_inline(self, node): + pass + + def visit_image(self, node): + self.write("![](" + node["uri"] + ")") + + def depart_image(self, node): + pass + + def write_row(self, row, widths): + for i, entry in enumerate(row): + text = entry[0][0] if len(entry) > 0 else "" + if i != 0: + self.write("|") + self.write("{:{}}".format(text, widths[i])) + self.write("\n") + + def visit_table(self, node): + table = node.children[0] + colspecs = table[:-2] + thead = table[-2] + tbody = table[-1] + widths = [int(cs["colwidth"]) for cs in colspecs] + sep = "|".join(["-" * w for w in widths]) + "\n" + self.write("\n\n") + self.write_row(thead[0], widths) + self.write(sep) + for row in tbody: + self.write_row(row, widths) + raise nodes.SkipChildren + + def depart_table(self, node): + pass + + def visit_strong(self, node): + self.write("**") + pass + + def depart_strong(self, node): + self.write("**") + pass + + def visit_block_quote(self, node): + pass + + def depart_block_quote(self, node): + pass + + +class MDWriter(writers.Writer): + """GitHub-flavored markdown writer""" + + supported = ("md",) + """Formats this writer supports.""" + + def translate(self): + translator = Translator(self.document) + self.document.walkabout(translator) + self.output = (translator.output, translator.version) + + +def convert(rst_path): + """Converts RST file to Markdown.""" + return core.publish_file(source_path=rst_path, writer=MDWriter()) + + +if __name__ == "__main__": + convert(sys.argv[1]) diff --git a/schema_doc.py b/schema_doc.py new file mode 100644 index 000000000..fc3f9c54f --- /dev/null +++ b/schema_doc.py @@ -0,0 +1,943 @@ +import re +import json +import urllib + +from typing import MutableMapping +from sphinx.util import logging +from docutils import nodes + +SCHEMA_PATH = "../esphome_devices/schema.json" +CONFIGURATION_VARIABLES = "Configuration variables:" +COMPONENT_HUB = "Component/Hub" + +props_missing = 0 +props_verified = 0 +props_documented = 0 + + +def setup(app): + """Setup connects events to the sitemap builder""" + + import os + + if not os.path.isfile(SCHEMA_PATH): + logger = logging.getLogger(__name__) + logger.info(f"{SCHEMA_PATH} not found. Not documenting schema.") + else: + app.connect("doctree-resolved", doctree_resolved) + app.connect("build-finished", build_finished) + + f = open(SCHEMA_PATH, "r", encoding="utf-8-sig") + str = f.read() + app.jschema = json.loads(str) + + return {"version": "1.0.0", "parallel_read_safe": True, "parallel_write_safe": True} + + +def find_component(jschema, component): + return jschema["properties"].get(component) + + +def find_platform_component(jschema, platform, component): + platform_items = jschema["properties"][platform].get("items") + if not platform_items: + return None + ar = platform_items["allOf"] + for p in ar: + if "if" in p: + if p["if"]["properties"]["platform"]["const"] == component: + return p + + +def doctree_resolved(app, doctree, docname): + if docname == "components/index": + # nothing useful here + return + try: + handle_component(app, doctree, docname) + + except Exception as e: + err_str = f"In {docname}: {str(e)}" + logger = logging.getLogger(__name__) + logger.warning(err_str) + + +PLATFORMS_TITLES = { + "Sensor": "sensor", + "Binary Sensor": "binary_sensor", + "Text Sensor": "text_sensor", + "Output": "output", + "Cover": "cover", + "Climate": "climate", + "CAN Bus": "canbus", + "Stepper": "stepper", +} + +CUSTOM_DOCS = { + "guides/automations": {"Global Variables": "properties/globals"}, + "guides/configuration-types": { + "Color": "properties/color", + "Pin Schema": "definitions/PIN.GPIO_FULL_INPUT_PIN_SCHEMA", + }, + "components/climate/ir_climate": { + "IR Remote Climate": [ + "properties/climate/coolix", + "properties/climate/daikin", + "properties/climate/fujitsu_general", + "properties/climate/mitsubishi", + "properties/climate/tcl112", + "properties/climate/toshiba", + "properties/climate/yashima", + "properties/climate/whirlpool", + "properties/climate/climate_ir_lg", + "properties/climate/hitachi_ac344", + ] + }, + "components/display/index": { + "Images": "properties/image", + "Drawing Static Text": "properties/font", + "Color": "properties/color", + "Animation": "properties/animation", + }, + "components/light/index": { + "Base Light Configuration": [ + "definitions/light.ADDRESSABLE_LIGHT_SCHEMA", + "definitions/light.BINARY_LIGHT_SCHEMA", + "definitions/light.BRIGHTNESS_ONLY_LIGHT_SCHEMA", + "definitions/light.LIGHT_SCHEMA", + ] + }, + "components/light/fastled": { + "Clockless": "properties/light/fastled_clockless", + "SPI": "properties/light/fastled_spi", + }, + "components/mqtt": { + "MQTT Component Base Configuration": "definitions/CONFIG.MQTT_COMMAND_COMPONENT_SCHEMA", + }, + "components/output/index": { + "Base Output Configuration": "definitions/output.FLOAT_OUTPUT_SCHEMA" + }, + "components/remote_transmitter": { + "Remote Transmitter Actions": "definitions/REMOTE_BASE.BASE_REMOTE_TRANSMITTER_SCHEMA" + }, + "components/time": { + "Home Assistant Time Source": "properties/time/homeassistant", + "SNTP Time Source": "properties/time/sntp", + "GPS Time Source": "properties/time/gps", + "DS1307 Time Source": "properties/time/ds1307", + }, + "components/wifi": { + "Connecting to Multiple Networks": "definitions/wifi-networks", + "Enterprise Authentication": "definitions/wifi-networks/eap", + }, + "custom/custom_component": { + "Generic Custom Component": "properties/custom_component" + }, +} + + +class SchemaGeneratorVisitor(nodes.NodeVisitor): + def __init__(self, app, doctree, docname): + nodes.NodeVisitor.__init__(self, doctree) + self.app = app + self.doctree = doctree + self.docname = docname + self.path = docname.split("/") + self.json_component = None + self.props = None + self.platform = None + self.json_platform_component = None + self.json_base_config = None + self.title_id = None + self.props_section_title = None + if self.path[0] == "components": + if len(self.path) == 2: # root component, e.g. dfplayer, logger + component = docname[11:] + self.json_component = app.jschema["properties"].get(component) + else: # sub component, e.g. output/esp8266_pwm + + # components here might have a core / hub, eg. dallas, ads1115 + # and then they can be a binary_sensor, sensor, etc. + + component = self.path[2] + + if component == "ssd1331": + component = "ssd1331_spi" + + self.platform = self.path[1] + if component == "index": + # these are e.g. sensor, binary sensor etc. + p = self.platform.replace(" ", "_").lower() + self.json_component = find_component( + self.app.jschema, self.platform + ) + self.json_base_config = self.app.jschema["definitions"].get( + p + "." + p.upper() + "_SCHEMA" + ) + + else: + self.json_component = find_component(self.app.jschema, component) + + self.json_platform_component = find_platform_component( + self.app.jschema, self.platform, component + ) + + self.custom_doc = CUSTOM_DOCS.get(docname) + + self.previous_title_text = "No title" + + self.is_component_hub = False + + # used in custom_docs when titles are mapped to array of components, this + # allows for same configuration text be applied to different json schemas + self.multi_component = None + + # a stack for props, used when there are nested props to save high level props. + self.prop_stack = [] + + # The prop just filled in, used when there are nested props and need to know which + # want to dig + self.current_prop = None + + # self.filled_props used to know when any prop is added to props, + # we dont invalidate props on exiting bullet lists but just when entering a new title + self.filled_props = False + + # Found a Configuration variables: heading, this is to increase docs consistency + self.accept_props = False + + self.props_level = 0 + + def visit_document(self, node): + # ESPHome page docs follows strict formating guidelines which allows + # for docs to be parsed directly into yaml schema + + if self.docname in ["components/sensor/binary_sensor_map"]: + # temporarly not supported + raise nodes.SkipChildren + + if len(list(node.traverse(nodes.paragraph))) == 0: + # this is empty, not much to do + raise nodes.SkipChildren + + # Document first paragraph is description of this thing + description = self.getMarkdownParagraph(node) + + if self.json_platform_component: + self.json_platform_component["markdownDescription"] = description + elif self.json_component: + self.json_component["markdownDescription"] = description + + if self.json_base_config: + self.json_component = self.json_base_config + + # for most components / platforms get the props, this allows for a less restrictive + # first title on the page + if self.json_component or self.json_platform_component: + self.props = self.find_props( + self.json_platform_component + if self.json_platform_component + else self.json_component + ) + + if not self.props: + # get props for base components, Sensor, Binary Sensor, Light, etc. + + if len(self.path) == 2: + # "#/definitions/schema_canbus.CONFIG_SCHEMA" + self.json_base_config = self.app.jschema["definitions"].get( + f"{self.path[1]}.{self.path[1].upper()}_SCHEMA" + ) + if self.json_base_config: + self.props = self.find_props(self.json_base_config) + + def depart_document(self, node): + pass + + def visit_SEONode(self, node): + pass + + def depart_SEONode(self, node): + pass + + def visit_literal_block(self, node): + pass + + def depart_literal_block(self, node): + pass + + def visit_section(self, node): + pass + + def depart_section(self, node): + pass + + def unknown_visit(self, node): + pass + + def unknown_departure(self, node): + pass + + def visit_title(self, node): + title_text = node.astext() + if self.props_section_title is None: + self.props_section_title = title_text + + if "interval" in title_text: + title_text = title_text + if self.custom_doc is not None and title_text in self.custom_doc: + if isinstance(self.custom_doc[title_text], list): + self.multi_component = self.custom_doc[title_text] + + # TODO: add same markdown description to each? + + return + json_component = self.find_component(self.custom_doc[title_text]) + json_component["markdownDescription"] = self.getMarkdownParagraph( + node.parent + ) + self.props_section_title = title_text + self.props = self.find_props(json_component) + + return + + if title_text == COMPONENT_HUB: + # here comes docs for the component, make sure we have props of the component + # Needed for e.g. ads1115 + self.props_section_title = f"{self.path[-1]} {title_text}" + json_component = find_component(self.app.jschema, self.path[-1]) + if json_component: + self.props = self.find_props(json_component) + + json_component["markdownDescription"] = self.getMarkdownParagraph( + node.parent + ) + + # mark this to retrieve components instead of platforms + self.is_component_hub = True + + if title_text == CONFIGURATION_VARIABLES: + if not self.props and self.multi_component is None: + raise ValueError( + f"Found a Configuration variables: title after {self.previous_title_text}. Unkown object." + ) + + if title_text == "Over SPI" or title_text == "Over I²C": + suffix = "_spi" if "SPI" in title_text else "_i2c" + + # these could be platform components, like the display's ssd1306 + # but also there are components which are component/hub + # and there are non platform components with the SPI/I2C versions, + # like pn532, those need to be marked with the 'Component/Hub' title + component = self.path[-1] + suffix + + self.props_section_title = self.path[-1] + " " + title_text + + if self.platform is not None and not self.is_component_hub: + json_platform_component = find_platform_component( + self.app.jschema, self.platform, component + ) + if not json_platform_component: + raise ValueError( + f"Cannot find platform {self.platform} component '{component}' after found title: '{title_text}'." + ) + self.props = self.find_props(json_platform_component) + + # Document first paragraph is description of this thing + json_platform_component[ + "markdownDescription" + ] = self.getMarkdownParagraph(node.parent) + + else: + json_component = find_component(self.app.jschema, component) + if not json_component: + raise ValueError( + f"Cannot find component '{component}' after found title: '{title_text}'." + ) + self.props = self.find_props(json_component) + + # Document first paragraph is description of this thing + json_component["markdownDescription"] = self.getMarkdownParagraph( + node.parent + ) + + # Title is description of platform component, those ends with Sensor, Binary Sensor, Cover, etc. + if ( + len( + list( + filter( + lambda x: title_text.endswith(x), list(PLATFORMS_TITLES.keys()) + ) + ) + ) + > 0 + ): + if title_text in PLATFORMS_TITLES: + # this omits the name of the component, but we know the platform + platform_name = PLATFORMS_TITLES[title_text] + component_name = self.path[-1] + self.props_section_title = self.path[-1] + " " + title_text + else: + # title first word is the component name + component_name = title_text.split(" ")[0] + # and the rest is the platform + platform_name = PLATFORMS_TITLES.get( + title_text[len(component_name) + 1 :] + ) + if not platform_name: + # Some general title which does not locate a component directly + return + self.props_section_title = title_text + c = find_platform_component( + self.app.jschema, platform_name, component_name.lower() + ) + if c: + self.json_platform_component = c + + c["markdownDescription"] = self.getMarkdownParagraph(node.parent) + + # Now fill props for the platform element + try: + self.props = self.find_props(self.json_platform_component) + except KeyError: + raise ValueError("Cannot find platform props") + + if title_text.endswith("Component") or title_text.endswith("Bus"): + # if len(path) == 3 and path[2] == 'index': + # # skip platforms index, e.g. sensors/index + # continue + split_text = title_text.split(" ") + self.props_section_title = title_text + if len(split_text) == 2: + # some components are several components in a single platform doc + # e.g. ttp229 binary_sensor has two different named components. + component_name = split_text[0].lower().replace(".", "") + if component_name.lower() == self.platform: + return + c = find_component(self.app.jschema, component_name) + if c: + self.json_component = c + try: + self.props = self.find_props(self.json_component) + except KeyError: + raise ValueError( + "Cannot find props for component " + component_name + ) + return + c = find_platform_component( + self.app.jschema, self.path[1], component_name + ) + if c: + self.json_platform_component = c + try: + self.props = self.find_props(self.json_platform_component) + + except KeyError: + raise ValueError( + f"Cannot find props for platform {self.path[1]} component {self.component_name}" + ) + return + + if title_text.endswith("Action") or title_text.endswith("Condition"): + # Document first paragraph is description of this thing + description = self.getMarkdownParagraph(node.parent) + split_text = title_text.split(" ") + if len(split_text) != 2: + return + key = split_text[0] + registry_name = f"automation.{split_text[1].upper()}_REGISTRY" + registry = self.app.jschema["definitions"][registry_name]["anyOf"] + for action in registry: + if key in action["properties"]: + action["properties"][key]["markdownDescription"] = description + self.props = self.find_props(action["properties"][key]) + break + self.props_section_title = title_text + + if title_text.endswith("Trigger"): + # Document first paragraph is description of this thing + description = self.getMarkdownParagraph(node.parent) + split_text = title_text.split(" ") + if len(split_text) != 2: + return + key = split_text[0] + + # handles Time / on_time + c = self.json_base_config or self.json_component + if c: + trigger_schema = self.find_props(c).get(key) + self.props = self.find_props(trigger_schema) + self.props_section_title = title_text + + if self.docname == "components/light/index" and title_text.endswith("Effect"): + # Document first paragraph is description of this thing + + description = self.getMarkdownParagraph(node.parent) + name = title_text[: -len(" Effect")] + # accept Light Effect as ending (Automation Light Effect) + if name.endswith(" Light"): + name = name[: -len(" Light")] + + key = name.replace(" ", "_").replace(".", "").lower() + registry = self.app.jschema["definitions"]["light.EFFECTS_REGISTRY"][ + "anyOf" + ] + self.props_section_title = title_text + + for effect in registry: + if key in effect["properties"]: + effect["properties"][key]["markdownDescription"] = description + self.props = self.find_props(effect["properties"][key]) + return + raise ValueError("Cannot find Effect " + title_text) + + def depart_title(self, node): + if self.filled_props: + self.filled_props = False + self.props = None + self.current_prop = None + self.accept_props = False + self.multi_component = None + self.previous_title_text = node.astext() + self.title_id = node.parent["ids"][0] + + def find_props_previous_title(self): + comp = self.json_component or self.json_platform_component + if comp: + props = self.find_props(comp) + + if self.previous_title_text in props: + prop = props[self.previous_title_text] + if prop: + self.props = self.find_props(prop) + else: + # return fake dict so better errors are printed + self.props = {"__": "none"} + + def visit_Text(self, node): + if self.multi_component: + return + if node.astext() == "Configuration variables:": + if not self.props: + self.find_props_previous_title() + if not self.props: + raise ValueError( + f'Found a "Configuration variables:" entry for unknown object after {self.previous_title_text}' + ) + self.accept_props = True + raise nodes.SkipChildren + + def depart_Text(self, node): + pass + + def visit_paragraph(self, node): + if node.astext() == "Configuration variables:": + if not self.props: + self.find_props_previous_title() + if not self.props: + raise ValueError( + f'Found a "Configuration variables:" entry for unknown object after {self.previous_title_text}' + ) + self.accept_props = True + raise nodes.SkipChildren + + def depart_paragraph(self, node): + pass + + def visit_bullet_list(self, node): + self.props_level = self.props_level + 1 + if self.current_prop and self.props and self.props_level > 1: + + # if '$ref' in self.props[self.current_prop]: + # if self.props[self.current_prop]['$ref'].endswith('_SCHEMA'): + # nowhere put this props info... + # raise nodes.SkipChildren + + # this can be list of values, list of subproperties + + # deep configs + # e.g. wifi manual_ip, could also be a enum list + + # if this prop has a reference + prop = self.props[self.current_prop] + if isinstance(prop, dict): + if "$ref" in prop: + ref = self.get_ref(prop) + self.prop_stack.append(self.props) + self.props = self.find_props(ref) + self.accept_props = True + elif "properties" in prop: + self.prop_stack.append(self.props) + self.props = prop["properties"] + elif ( + "anyOf" in prop + and len(prop["anyOf"]) > 0 + and isinstance(self.get_ref(prop["anyOf"][0]), dict) + and "$ref" in self.get_ref(prop["anyOf"][0]) + ): + ref = self.get_ref(prop["anyOf"][0]) + self.prop_stack.append(self.props) + self.props = self.find_props(ref) + # nowhere put this props info... + # otherwise inner bullet list will be interpreted as property list + if self.props_level > 1: + raise nodes.SkipChildren + else: + # nowhere put this props info... + # otherwise inner bullet list will be interpreted as property list + if self.props_level > 1: + raise nodes.SkipChildren + + if not self.props and self.multi_component is None: + raise nodes.SkipChildren + + def depart_bullet_list(self, node): + self.props_level = self.props_level - 1 + if len(self.prop_stack) > 0: + self.props = self.prop_stack.pop() + self.filled_props = True + + def visit_list_item(self, node): + if self.accept_props and self.props: + self.filled_props = True + try: + self.current_prop = self.update_prop(node, self.props) + # print( + # f'{self.current_prop} updated from {node.rawsource[:40]}') + except Exception as e: + raise ValueError(f"In '{self.previous_title_text}' {str(e)}") + + elif self.multi_component: + # update prop for each component + for c in self.multi_component: + props = self.find_props(self.find_component(c)) + self.current_prop = self.update_prop(node, props) + self.filled_props = True + + def depart_list_item(self, node): + pass + + def visit_literal(self, node): + raise nodes.SkipChildren + + def depart_literal(self, node): + pass + + def getMarkdown(self, node): + from markdown import Translator + + t = Translator( + urllib.parse.urljoin(self.app.config.html_baseurl, self.docname + ".html"), + self.doctree, + ) + node.walkabout(t) + return t.output + + def getMarkdownParagraph(self, node): + paragraph = list(node.traverse(nodes.paragraph))[0] + markdown = self.getMarkdown(paragraph) + + title = list(node.traverse(nodes.title))[0] + if len(title) > 0: + url = urllib.parse.urljoin( + self.app.config.html_baseurl, + self.docname + ".html#" + title.parent["ids"][0], + ) + markdown += f"\n\n*See also: [{self.props_section_title}]({url})*" + return markdown + + def update_prop(self, node, props): + prop_name = None + + raw = node.rawsource # this has the full raw rst code for this property + + if not raw.startswith("**"): + # not bolded, most likely not a property definition, + # usually texts like 'All properties from...' etc + return None + + markdown = self.getMarkdown(node) + + markdown += f"\n\n*See also: [{self.props_section_title}]({urllib.parse.urljoin(self.app.config.html_baseurl, self.docname +'.html#'+self.title_id)})*" + + try: + name_type = markdown[: markdown.index(": ") + 2] + except ValueError: + raise ValueError(f'Property format error. Missing ": " in {raw}') + + # Example properties formats are: + # **name** (**Required**, string): Long Description... + # **name** (*Optional*, string): Long Description... Defaults to ``value``. + # **name** (*Optional*): Long Description... Defaults to ``value``. + + if "ads111" in self.docname: + self.docname = self.docname + + ntr = re.search( + r"\* \*\*(\w*)\*\*\s(\(((\*\*Required\*\*)|(\*Optional\*))(,\s(.*))*)\):\s", + name_type, + re.IGNORECASE, + ) + + if ntr: + prop_name = ntr.group(1) + param_type = ntr.group(7) + else: + s2 = re.search( + r"\* \*\*(\w*)\*\*\s(\(((\*\*Required\*\*)|(\*Optional\*))(,\s(.*))*)\):\s", + markdown, + re.IGNORECASE, + ) + if s2: + # this is e.g. when a property has a list inside, and the list inside are the options. + # just validate **prop_name** + s3 = re.search(r"\* \*\*(\w*)\*\*:\s", name_type) + prop_name = s3.group(1) + param_type = None + else: + raise ValueError(f"Invalid property format: {node.rawsource}") + + k = str(prop_name) + jprop = props.get(k) + if not jprop: + + # do not fail for common properties, + # however this should check prop is valid upstream + + if k in [ + "id", + "name", + "internal", + # i2c + "address", + "i2c_id", + # polling component + "update_interval", + # uart + "uart_id", + # ligth + "effects", + "gamma_correct", + "default_transition_length", + "color_correct", + # display + "lambda", + "dither", + "pages", + "rotation", + # spi + "spi_id", + "cs_pin", + # output (binary/float output) + "inverted", + "power_supply", + # climate + "receiver_id", + ]: + return + else: + raise ValueError(f"Cannot find property {k}") + + desc = markdown[markdown.index(": ") + 2 :].strip() + if param_type: + desc = param_type + ": " + desc + + # if '$ref' in jprop: + # self.get_ref(jprop)["markdownDescription"] = desc + # else: + jprop["markdownDescription"] = desc + global props_documented + props_documented = props_documented + 1 + + return prop_name + + def get_ref(self, node): + ref = node.get("$ref") + if ref and ref.startswith("#/definitions/"): + return self.app.jschema["definitions"][ref[14:]] + + def find_component(self, component_path): + path = component_path.split("/") + json_component = self.app.jschema[path[0]][path[1]] + + if len(path) > 2: + # a property path + props = self.find_props(json_component) + if props: + json_component = props.get(path[2]) + else: + # a platform sub element + json_component = find_platform_component( + self.app.jschema, path[1], path[2] + ) + return json_component + + class Props(MutableMapping): + """Smarter props dict. + + Props are mostly a dict, however some constructs have two issues: + - An update is intended on an element which does not own a property, but it is based + on an schema that does have the property, those cases can be handled + - An update is done in a typed schema + """ + + def __init__(self, visitor, component): + self.visitor = visitor + self.component = component + self.store = self._get_props(component) + self.parent = None + + def _get_props(self, component): + # find properties + if "then" in component: + component = component["then"] + props = component.get("properties") + ref = None + if not props: + arr = component.get("anyOf", component.get("allOf")) + if not arr: + if "$ref" in component: + return self._get_props(self.visitor.get_ref(component)) + return None + for x in arr: + props = x.get("properties") + if not ref: + ref = self.visitor.get_ref(x) + if props: + break + if not props and ref: + props = self._get_props(ref) + return props + + def __getitem__(self, key): + if self.store and key in self.store: + return self.store[key] + + if "then" in self.component: + # check if it's typed + schemas = self.component["then"].get("allOf") + if ( + isinstance(schemas, list) + and "properties" in schemas[0] + and "type" in schemas[0]["properties"] + ): + for s in schemas: + if "then" in s: + props = self._get_props(s.get("then")) + if key in props: + return SetObservable( + props[key], + setitem_callback=self._update_typed, + inner_key=key, + ) + return # key not found + + # check if it's a registry and need to reset store + # e.g. remote_receiver binary sensor + if "$ref" in self.component["then"]: + ref = self.visitor.get_ref(self.component["then"]) + prop_set = ref.get("anyOf") + if isinstance(prop_set, list): + for k in prop_set: + if key in k["properties"]: + self.store = k["properties"] + return self.store[key] + + def _update_typed(self, inner_key, key, value): + # Make sure we update all types + if "then" in self.component: + schemas = self.component["then"].get("allOf") + assert "type" in schemas[0].get("properties") + for s in schemas: + if "then" in s: + props = self._get_props(s.get("then")) + if inner_key in props: + props[inner_key][key] = value + + def __setitem__(self, key, value): + self.store[key] = value + + def __delitem__(self, key): + self.store.pop(key) + + def __iter__(self): + return iter(self.store) + + def __len__(self): + return len(self.store) if self.store else 0 + + def find_props(self, component): + props = self.Props(self, component) + + if props: + self.filled_props = False + self.accept_props = False + self.current_prop = None + + return props + return + # find properties + if "then" in component: + component = component["then"] + props = component.get("properties") + ref = None + if not props: + arr = component.get("anyOf", component.get("allOf")) + if not arr: + if "$ref" in component: + return self.find_props(self.get_ref(component)) + return None + for x in arr: + props = x.get("properties") + if not ref: + ref = self.get_ref(x) + if props: + break + if not props and ref: + props = self.find_props(ref) + + if props: + self.filled_props = False + self.accept_props = False + self.current_prop = None + return props + + +def handle_component(app, doctree, docname): + path = docname.split("/") + if path[0] == "components": + pass + elif docname not in CUSTOM_DOCS: + return + + v = SchemaGeneratorVisitor(app, doctree, docname) + doctree.walkabout(v) + + +def build_finished(app, exception): + # TODO: create report of missing descriptions + + f = open(SCHEMA_PATH, "w") + f.write(json.dumps(app.jschema)) + + str = f"Documented: {props_documented}" + logger = logging.getLogger(__name__) + logger.info(str) + + +class SetObservable(dict): + """ + a MyDict is like a dict except that when you set an item, before + doing so it will call a callback function that was passed in when the + MyDict instance was created + """ + + def __init__(self, value, setitem_callback=None, inner_key=None, *args, **kwargs): + super(SetObservable, self).__init__(value, *args, **kwargs) + self._setitem_callback = setitem_callback + self.inner_key = inner_key + + def __setitem__(self, key, value): + if self._setitem_callback: + self._setitem_callback(self.inner_key, key, value) + super(SetObservable, self).__setitem__(key, value) From 979e0a2d577880012e14348afdb12a8786cc6a68 Mon Sep 17 00:00:00 2001 From: Guillermo Ruffino Date: Mon, 8 Mar 2021 22:53:04 -0300 Subject: [PATCH 35/47] pin schema and other fixes (#1047) --- components/mcp230xx.rst | 14 +++++---- components/pcf8574.rst | 13 ++++++++- components/sn74hc595.rst | 12 +++++++- components/sx1509.rst | 15 ++++++++-- schema_doc.py | 62 +++++++++++++++++++++++++++------------- 5 files changed, 86 insertions(+), 30 deletions(-) diff --git a/components/mcp230xx.rst b/components/mcp230xx.rst index 27564f6e0..23e80cb21 100644 --- a/components/mcp230xx.rst +++ b/components/mcp230xx.rst @@ -61,13 +61,15 @@ Configuration variables: Useful when the MCP23008's power supply is greater than 3.3 volts. Note that this pin will require a pull-up resistor (to 3.3 volts) when this mode is enabled. -Pin Configuration Variables: +Pin configuration variables: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - **mcp23xxx** (**Required**, :ref:`config-id`): The id of the MCP23008 component. - **interrupt** (*Optional*): Set this pin to trigger the INT pin on the component. Can be one of ``CHANGE``, ``RISING``, ``FALLING``. -- All other options from :ref:`Pin Schema ` - +- **number** (**Required**, integer): The pin number. +- **inverted** (*Optional*, boolean): If all read and written values + should be treated as inverted. Defaults to ``False``. +- **mode** (*Optional*, string): A pin mode to set for the pin at. One of ``INPUT`` or ``OUTPUT``. .. _mcp23016-label: @@ -118,10 +120,10 @@ Configuration variables: - **address** (*Optional*, int): The I²C address of the driver. Defaults to ``0x20``. -Pin Configuration Variables: +Pin configuration variables: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -- **mcp23016** (**Required**, :ref:`config-id`): The id of the MCP23016 component. +- **mcp23xxx** (**Required**, :ref:`config-id`): The id of the MCP23016 component. - All other options from :ref:`Pin Schema ` @@ -180,7 +182,7 @@ Configuration variables: Useful when the MCP23017's power supply is greater than 3.3 volts. Note that these pins will require pull-up resistors (to 3.3 volts) when this mode is enabled. -Pin Configuration Variables: +Pin configuration variables: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - **mcp23xxx** (**Required**, :ref:`config-id`): The id of the MCP23017 component. diff --git a/components/pcf8574.rst b/components/pcf8574.rst index 199455c22..f4a94b42b 100644 --- a/components/pcf8574.rst +++ b/components/pcf8574.rst @@ -47,13 +47,24 @@ not work. inverted: False Configuration variables: -~~~~~~~~~~~~~~~~~~~~~~~~ +************************ - **id** (**Required**, :ref:`config-id`): The id to use for this PCF8574 component. - **address** (*Optional*, int): The I²C address of the driver. Defaults to ``0x21``. - **pcf8575** (*Optional*, boolean): Whether this is a 16-pin PCF8575. Defaults to ``False``. + +Pin configuration variables: +**************************** + +- **pcf8574** (**Required**, :ref:`config-id`): The id of the PCF8574 component of the pin. +- **number** (**Required**, integer): The pin number. +- **inverted** (*Optional*, boolean): If all read and written values + should be treated as inverted. Defaults to ``False``. +- **mode** (*Optional*, string): A pin mode to set for the pin at. One of ``INPUT`` or ``OUTPUT``. + + See Also -------- diff --git a/components/sn74hc595.rst b/components/sn74hc595.rst index 0bae6b13c..787c9aa5b 100644 --- a/components/sn74hc595.rst +++ b/components/sn74hc595.rst @@ -52,11 +52,21 @@ Configuration variables: - **oe_pin** (*Optional*, :ref:`Pin Schema `): Pin connected to SN74HC595 OE pin - **sr_count** (*Optional*, int): Number of daisy-chained shift registers, up-to 4. Defaults to ``1``. + +Pin configuration variables: +~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +- **sn74hc595** (**Required**, :ref:`config-id`): The id of the SN74HC595 component of the pin. +- **number** (**Required**, integer): The pin number. +- **inverted** (*Optional*, boolean): If all written values should be treated as inverted. + Defaults to ``False``. + + See Also -------- - :doc:`switch/gpio` - :doc:`binary_sensor/gpio` -- `Serial to Parallel Shifting-Out with a 74HC595 ` +- `Serial to Parallel Shifting-Out with a 74HC595 `__ - :apiref:`sn74hc595/sn74hc595.h` - :ghedit:`Edit` diff --git a/components/sx1509.rst b/components/sx1509.rst index 32b563376..0da937534 100644 --- a/components/sx1509.rst +++ b/components/sx1509.rst @@ -109,7 +109,7 @@ Attention should be paid to the capabilities of the I/O pins. +-----+------------------+-----+--------+ Binary Sensor -------------- +============= To use the individual keys on the keypad you need to add individual binary_sensor entries in the config. @@ -134,6 +134,10 @@ Configuration variables: - **row** (**Required**, int): The row number for this key on the keypad. - **col** (**Required**, int): The column number for this key on the keypad. + +Pin configuration variables: +---------------------------- + With the following configuration items you may use the individual pins of the SX1509 as the pins for binary_sensor, switch, or output. The outputs can in turn be used to add PWM-enabled lights like the monochromatic light. @@ -177,7 +181,14 @@ The outputs can in turn be used to add PWM-enabled lights like the monochromatic name: "light0" output: sx1509_output -- All other options from :ref:`Output `. + +- **sx1509** (**Required**, :ref:`config-id`): The id of the SX1509 component of the pin. +- **number** (**Required**, integer): The pin number. +- **inverted** (*Optional*, boolean): If all read and written values + should be treated as inverted. Defaults to ``False``. +- **mode** (*Optional*, string): A pin mode to set for the pin at. One of ``INPUT``, + ``INPUT_PULLUP`` or ``OUTPUT``. + And naturally you may use all automation functions with these SX1509 binary_sensors, switches and output (lights). diff --git a/schema_doc.py b/schema_doc.py index fc3f9c54f..2a1322e39 100644 --- a/schema_doc.py +++ b/schema_doc.py @@ -8,6 +8,7 @@ from docutils import nodes SCHEMA_PATH = "../esphome_devices/schema.json" CONFIGURATION_VARIABLES = "Configuration variables:" +PIN_CONFIGURATION_VARIABLES = "Pin configuration variables:" COMPONENT_HUB = "Component/Hub" props_missing = 0 @@ -77,7 +78,10 @@ CUSTOM_DOCS = { "guides/automations": {"Global Variables": "properties/globals"}, "guides/configuration-types": { "Color": "properties/color", - "Pin Schema": "definitions/PIN.GPIO_FULL_INPUT_PIN_SCHEMA", + "Pin Schema": [ + "definitions/PIN.INPUT_INTERNAL", + "definitions/PIN.OUTPUT_INTERNAL", + ], }, "components/climate/ir_climate": { "IR Remote Climate": [ @@ -111,6 +115,12 @@ CUSTOM_DOCS = { "Clockless": "properties/light/fastled_clockless", "SPI": "properties/light/fastled_spi", }, + "components/mcp230xx": { + PIN_CONFIGURATION_VARIABLES: [ + "definitions/PIN.INPUT_mcp23xxx", + "definitions/PIN.OUTPUT_mcp23xxx", + ] + }, "components/mqtt": { "MQTT Component Base Configuration": "definitions/CONFIG.MQTT_COMMAND_COMPONENT_SCHEMA", }, @@ -220,6 +230,8 @@ class SchemaGeneratorVisitor(nodes.NodeVisitor): # this is empty, not much to do raise nodes.SkipChildren + self.props_section_title = list(node.traverse(nodes.title))[0].astext() + # Document first paragraph is description of this thing description = self.getMarkdownParagraph(node) @@ -280,15 +292,14 @@ class SchemaGeneratorVisitor(nodes.NodeVisitor): def visit_title(self, node): title_text = node.astext() - if self.props_section_title is None: - self.props_section_title = title_text if "interval" in title_text: title_text = title_text if self.custom_doc is not None and title_text in self.custom_doc: if isinstance(self.custom_doc[title_text], list): self.multi_component = self.custom_doc[title_text] - + self.filled_props = False + self.props = None # TODO: add same markdown description to each? return @@ -319,7 +330,7 @@ class SchemaGeneratorVisitor(nodes.NodeVisitor): if title_text == CONFIGURATION_VARIABLES: if not self.props and self.multi_component is None: raise ValueError( - f"Found a Configuration variables: title after {self.previous_title_text}. Unkown object." + f'Found a "{CONFIGURATION_VARIABLES}": title after {self.previous_title_text}. Unkown object.' ) if title_text == "Over SPI" or title_text == "Over I²C": @@ -419,6 +430,7 @@ class SchemaGeneratorVisitor(nodes.NodeVisitor): self.json_component = c try: self.props = self.find_props(self.json_component) + self.multi_component = None except KeyError: raise ValueError( "Cannot find props for component " + component_name @@ -491,6 +503,20 @@ class SchemaGeneratorVisitor(nodes.NodeVisitor): return raise ValueError("Cannot find Effect " + title_text) + if title_text == PIN_CONFIGURATION_VARIABLES: + self.multi_component = [] + if self.app.jschema["definitions"].get(f"PIN.INPUT_{self.path[-1]}"): + self.multi_component.append(f"definitions/PIN.INPUT_{self.path[-1]}") + if self.app.jschema["definitions"].get(f"PIN.OUTPUT_{self.path[-1]}"): + self.multi_component.append(f"definitions/PIN.OUTPUT_{self.path[-1]}") + self.accept_props = True + self.filled_props = False + self.props = None + if len(self.multi_component) == 0: + raise ValueError( + f'Found a "{PIN_CONFIGURATION_VARIABLES}" entry but could not find pin schema' + ) + def depart_title(self, node): if self.filled_props: self.filled_props = False @@ -517,28 +543,30 @@ class SchemaGeneratorVisitor(nodes.NodeVisitor): def visit_Text(self, node): if self.multi_component: return - if node.astext() == "Configuration variables:": + if node.astext() == CONFIGURATION_VARIABLES: if not self.props: self.find_props_previous_title() if not self.props: raise ValueError( - f'Found a "Configuration variables:" entry for unknown object after {self.previous_title_text}' + f'Found a "{CONFIGURATION_VARIABLES}" entry for unknown object after {self.previous_title_text}' ) self.accept_props = True + raise nodes.SkipChildren def depart_Text(self, node): pass def visit_paragraph(self, node): - if node.astext() == "Configuration variables:": - if not self.props: + if node.astext() == CONFIGURATION_VARIABLES: + if not self.props and not self.multi_component: self.find_props_previous_title() - if not self.props: + if not self.props and not self.multi_component: raise ValueError( - f'Found a "Configuration variables:" entry for unknown object after {self.previous_title_text}' + f'Found a "{CONFIGURATION_VARIABLES}" entry for unknown object after {self.previous_title_text}' ) self.accept_props = True + raise nodes.SkipChildren def depart_paragraph(self, node): @@ -602,8 +630,6 @@ class SchemaGeneratorVisitor(nodes.NodeVisitor): self.filled_props = True try: self.current_prop = self.update_prop(node, self.props) - # print( - # f'{self.current_prop} updated from {node.rawsource[:40]}') except Exception as e: raise ValueError(f"In '{self.previous_title_text}' {str(e)}") @@ -700,9 +726,8 @@ class SchemaGeneratorVisitor(nodes.NodeVisitor): k = str(prop_name) jprop = props.get(k) if not jprop: - - # do not fail for common properties, - # however this should check prop is valid upstream + # Create docs for common properties when descriptions are overriden + # in the most specific component. if k in [ "id", @@ -734,7 +759,7 @@ class SchemaGeneratorVisitor(nodes.NodeVisitor): # climate "receiver_id", ]: - return + jprop = props[k] = {} else: raise ValueError(f"Cannot find property {k}") @@ -742,9 +767,6 @@ class SchemaGeneratorVisitor(nodes.NodeVisitor): if param_type: desc = param_type + ": " + desc - # if '$ref' in jprop: - # self.get_ref(jprop)["markdownDescription"] = desc - # else: jprop["markdownDescription"] = desc global props_documented props_documented = props_documented + 1 From f6c277c4f9e82f93814074595859c485d239f4c8 Mon Sep 17 00:00:00 2001 From: Guillermo Ruffino Date: Thu, 11 Mar 2021 15:31:31 -0300 Subject: [PATCH 36/47] schema-filters (#1052) * pin schema and other fixes * schema filters and registries --- components/binary_sensor/index.rst | 49 ++++--- components/display/st7735.rst | 6 +- components/mcp230xx.rst | 12 +- components/mcp23Sxx.rst | 8 +- components/sensor/index.rst | 210 +++++++++++++++++------------ components/sn74hc595.rst | 4 +- guides/contributing.rst | 11 +- schema_doc.py | 189 +++++++++++++++----------- 8 files changed, 284 insertions(+), 205 deletions(-) diff --git a/components/binary_sensor/index.rst b/components/binary_sensor/index.rst index 4683ad514..f0d99c21c 100644 --- a/components/binary_sensor/index.rst +++ b/components/binary_sensor/index.rst @@ -85,23 +85,40 @@ of these entries matters!) return {}; } -Supported filters: +``invert`` +********** -- **invert**: Simple filter that just inverts every value from the binary sensor. -- **delayed_on**: When a signal ON is received, wait for the specified time period until publishing - an ON state. If an OFF value is received while waiting, the ON action is discarded. Or in other words: - Only send an ON value if the binary sensor has stayed ON for at least the specified time period. - **Useful for debouncing push buttons**. -- **delayed_off**: When a signal OFF is received, wait for the specified time period until publishing - an OFF state. If an ON value is received while waiting, the OFF action is discarded. Or in other words: - Only send an OFF value if the binary sensor has stayed OFF for at least the specified time period. - **Useful for debouncing push buttons**. -- **delayed_on_off**: Only send an ON or OFF value if the binary sensor has stayed in the same state - for at least the specified time period. - **Useful for debouncing binary switches**. -- **lambda**: Specify any :ref:`lambda ` for more complex filters. The input value from - the binary sensor is ``x`` and you can return ``true`` for ON, ``false`` for OFF, and ``{}`` to stop - the filter chain. +Simple filter that just inverts every value from the binary sensor. + +``delayed_on`` +************** + +(**Required**, :ref:`config-time`): When a signal ON is received, wait for the specified time period until publishing +an ON state. If an OFF value is received while waiting, the ON action is discarded. Or in other words: +Only send an ON value if the binary sensor has stayed ON for at least the specified time period. +**Useful for debouncing push buttons**. + +``delayed_off`` +*************** + +(**Required**, :ref:`config-time`): When a signal OFF is received, wait for the specified time period until publishing +an OFF state. If an ON value is received while waiting, the OFF action is discarded. Or in other words: +Only send an OFF value if the binary sensor has stayed OFF for at least the specified time period. +**Useful for debouncing push buttons**. + +``delayed_on_off`` +****************** + +(**Required**, :ref:`config-time`): Only send an ON or OFF value if the binary sensor has stayed in the same state +for at least the specified time period. +**Useful for debouncing binary switches**. + +``lambda`` +********** + +Specify any :ref:`lambda ` for more complex filters. The input value from +the binary sensor is ``x`` and you can return ``true`` for ON, ``false`` for OFF, and ``{}`` to stop +the filter chain. Binary Sensor Automation ------------------------ diff --git a/components/display/st7735.rst b/components/display/st7735.rst index c01dc0e12..7bd7bb301 100644 --- a/components/display/st7735.rst +++ b/components/display/st7735.rst @@ -42,7 +42,7 @@ There are numerous board types out there. Some initialize differently as well. T update_interval: 5s Configuration variables: -~~~~~~~~~~~~~~~~~~~~~~~~ +************************ - **model** (**Required**, "See Models Below"): This the model to use. INITR_BLACKTAB is the default - **cs_pin** (**Required**, :ref:`Pin Schema `): The CS pin. @@ -55,7 +55,7 @@ Configuration variables: - **reset_pin** (*Optional*, :ref:`Pin Schema `): The RESET pin. Memory notes: -~~~~~~~~~~~~~ +************* - 8Bit color saves 50% of the buffer required. - eightbitcolor: True 160x128 = 20480 *Important for memory constrained devices* @@ -63,7 +63,7 @@ Memory notes: Models: -~~~~~~~ +******* - INITR_GREENTAB - INITR_REDTAB diff --git a/components/mcp230xx.rst b/components/mcp230xx.rst index 23e80cb21..6bff7d85c 100644 --- a/components/mcp230xx.rst +++ b/components/mcp230xx.rst @@ -52,7 +52,7 @@ The MCP23008 component (`datasheet ` @@ -173,7 +173,7 @@ binary sensor or GPIO switch. inverted: False Configuration variables: -~~~~~~~~~~~~~~~~~~~~~~~~ +************************ - **id** (**Required**, :ref:`config-id`): The id to use for this MCP23017 component. - **address** (*Optional*, int): The I²C address of the driver. @@ -183,7 +183,7 @@ Configuration variables: will require pull-up resistors (to 3.3 volts) when this mode is enabled. Pin configuration variables: -~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +**************************** - **mcp23xxx** (**Required**, :ref:`config-id`): The id of the MCP23017 component. - **interrupt** (*Optional*): Set this pin to trigger the port INT pin on the component. Can be one of ``CHANGE``, ``RISING``, ``FALLING``. diff --git a/components/mcp23Sxx.rst b/components/mcp23Sxx.rst index 861c78364..2b6f26a92 100644 --- a/components/mcp23Sxx.rst +++ b/components/mcp23Sxx.rst @@ -54,7 +54,7 @@ The MCP23S08 component (`datasheet `__ +over the last few values. This can be used to filter outliers from the received sensor data. A large +window size will make the filter slow to react to input changes. .. code-block:: yaml @@ -232,27 +237,25 @@ sensor data. A large window size will make the filter slow to react to input cha send_every: 4 send_first_at: 3 -- **median**: A `simple moving median - `__ - over the last few values. +Configuration variables: - - **window_size**: The number of values over which to calculate the median - when pushing out a value. This number should - be odd if you want an actual received value pushed out. - Defaults to ``5``. - - **send_every**: How often a sensor value should be pushed out. For - example, in above configuration the median is calculated after every 4th - received sensor value, over the last 7 received values. - Defaults to ``5``. - - **send_first_at**: By default, the very first raw value on boot is immediately - published. With this parameter you can specify when the very first value is to be sent. - Must be smaller than or equal to ``send_every`` - Defaults to ``1``. +- **window_size** (*Optional*, integer): The number of values over which to calculate the median + when pushing out a value. This number should + be odd if you want an actual received value pushed out. + Defaults to ``5``. +- **send_every** (*Optional*, integer): How often a sensor value should be pushed out. For + example, in above configuration the median is calculated after every 4th + received sensor value, over the last 7 received values. + Defaults to ``5``. +- **send_first_at** (*Optional*, integer): By default, the very first raw value on boot is immediately + published. With this parameter you can specify when the very first value is to be sent. + Must be smaller than or equal to ``send_every`` + Defaults to ``1``. -``min`` / ``max`` -***************** +``min`` +******* -Calculate min/max over the data. A large window size will make the filter slow to +A moving minimum over the last few values. A large window size will make the filter slow to react to input changes. .. code-block:: yaml @@ -266,29 +269,46 @@ react to input changes. send_every: 4 send_first_at: 3 -- **min**: A moving minimum over the last few values. +Configuration variables: -- **max**: A moving maximum over the last few values. +- **window_size** (*Optional*, integer): The number of values over which to calculate the min/max when pushing out a + value. Defaults to ``5``. +- **send_every** (*Optional*, integer): How often a sensor value should be pushed out. For + example, in above configuration the min is calculated after every 4th + received sensor value, over the last 7 received values. + Defaults to ``5``. +- **send_first_at** (*Optional*, integer): By default, the very first raw value on boot is immediately + published. With this parameter you can specify when the very first value is to be sent. + Must be smaller than or equal to ``send_every`` + Defaults to ``1``. -- Both accept the following parameters: +``max`` +******* - - **window_size**: The number of values over which to calculate the min/max - when pushing out a value. - Defaults to ``5``. - - **send_every**: How often a sensor value should be pushed out. For - example, in above configuration the min is calculated after every 4th - received sensor value, over the last 7 received values. - Defaults to ``5``. - - **send_first_at**: By default, the very first raw value on boot is immediately - published. With this parameter you can specify when the very first value is to be sent. - Must be smaller than or equal to ``send_every`` - Defaults to ``1``. +A moving maximum over the last few values. A large window size will make the filter slow to +react to input changes. -``sliding_window_moving_average`` / ``exponential_moving_average`` -****************************************************************** +Configuration variables: -Two simple moving averages over the data. These can be used to have a short update interval -on the sensor but only push out an average on a specific interval (thus increasing resolution). +- **window_size** (*Optional*, integer): The number of values over which to calculate the min/max + when pushing out a value. + Defaults to ``5``. +- **send_every** (*Optional*, integer): How often a sensor value should be pushed out. For + example, in above configuration the min is calculated after every 4th + received sensor value, over the last 7 received values. + Defaults to ``5``. +- **send_first_at** (*Optional*, integer): By default, the very first raw value on boot is immediately + published. With this parameter you can specify when the very first value is to be sent. + Must be smaller than or equal to ``send_every`` + Defaults to ``1``. + + +``sliding_window_moving_average`` +********************************* + +A `simple moving average `__ +over the last few values. It can be used to have a short update interval on the sensor but only push +out an average on a specific interval (thus increasing resolution). .. code-block:: yaml @@ -300,28 +320,36 @@ on the sensor but only push out an average on a specific interval (thus increasi window_size: 15 send_every: 15 -- **sliding_window_moving_average**: A `simple moving - average `__ - over the last few values. +Configuration variables: - - **window_size**: The number of values over which to perform an - average when pushing out a value. - - **send_every**: How often a sensor value should be pushed out. For - example, in above configuration the weighted average is only - pushed out on every 15th received sensor value. - - **send_first_at**: By default, the very first raw value on boot is immediately - published. With this parameter you can specify when the very first value is to be sent. - Defaults to ``1``. +- **window_size** (*Optional*, integer): The number of values over which to perform an + average when pushing out a value. +- **send_every** (*Optional*, integer): How often a sensor value should be pushed out. For + example, in above configuration the weighted average is only + pushed out on every 15th received sensor value. +- **send_first_at** (*Optional*, integer): By default, the very first raw value on boot is immediately + published. With this parameter you can specify when the very first value is to be sent. + Defaults to ``1``. -- **exponential_moving_average**: A simple `exponential moving - average `__ - over the last few values. +``exponential_moving_average`` +****************************** - - **alpha**: The forget factor/alpha value of the filter. - - **send_every**: How often a sensor value should be pushed out. +A simple `exponential moving average +`__ over the last few +values. It can be used to have a short update interval on the sensor but only push +out an average on a specific interval (thus increasing resolution). -``throttle`` / ``heartbeat`` / ``debounce`` / ``delta`` -******************************************************* +Configuration variables: + +- **alpha** (*Optional*, float): The forget factor/alpha value of the filter. Defaults to ``0.1``. +- **send_every** (*Optional*, integer): How often a sensor value should be pushed out. Defaults to ``15``. + +``throttle`` +************ + +Throttle the incoming values. When this filter gets an incoming value, +it checks if the last incoming value is at least ``specified time period`` old. +If it is not older than the configured value, the value is not passed forward. .. code-block:: yaml @@ -333,28 +361,38 @@ on the sensor but only push out an average on a specific interval (thus increasi - delta: 5.0 - lambda: return x * (9.0/5.0) + 32.0; -- **throttle**: Throttle the incoming values. When this filter gets an incoming value, - it checks if the last incoming value is at least ``specified time period`` old. - If it is not older than the configured value, the value is not passed forward. -- **heartbeat**: Send the last value that this sensor in the specified time interval. - So a value of ``10s`` will cause the filter to output values every 10s regardless - of the input values. - -- **debounce**: Only send values if the last incoming value is at least ``specified time period`` - old. For example if two values come in at almost the same time, this filter will only output - the last value and only after the specified time period has passed without any new incoming - values. - -- **delta**: This filter stores the last value passed through this filter and only - passes incoming values through if the absolute difference is greater than the configured - value. For example if a value of 1.0 first comes in, it's passed on. If the delta filter - is configured with a value of 5, it will now not pass on an incoming value of 2.0, only values - that are at least 6.0 big or -4.0. - -``or`` Filter +``heartbeat`` ************* +Send the last value that this sensor in the specified time interval. +So a value of ``10s`` will cause the filter to output values every 10s regardless +of the input values. + +``debounce`` +************ + +Only send values if the last incoming value is at least ``specified time period`` +old. For example if two values come in at almost the same time, this filter will only output +the last value and only after the specified time period has passed without any new incoming +values. + +``delta`` +********* + +This filter stores the last value passed through this filter and only +passes incoming values through if the absolute difference is greater than the configured +value. For example if a value of 1.0 first comes in, it's passed on. If the delta filter +is configured with a value of 5, it will now not pass on an incoming value of 2.0, only values +that are at least 6.0 big or -4.0. + +``or`` +****** + +Pass forward a value with the first child filter that returns. Above example +will only pass forward values that are *either* at least 1s old or are if the absolute +difference is at least 5.0. + .. code-block:: yaml # Example filters: @@ -363,22 +401,18 @@ on the sensor but only push out an average on a specific interval (thus increasi - throttle: 1s - delta: 5.0 -- **or**: Pass forward a value with the first child filter that returns. Above example - will only pass forward values that are *either* at least 1s old or are if the absolute - difference is at least 5.0. +``lambda`` +********** -``lambda`` Filter -***************** +Perform a simple mathematical operation over the sensor values. The input value is ``x`` and +the result of the lambda is used as the output (use ``return``). .. code-block:: yaml filters: - lambda: return x * (9.0/5.0) + 32.0; -**lambda**: Perform a simple mathematical operation over the sensor -values. The input value is ``x`` and the result of the lambda is used -as the output (use ``return``). Make sure to add ``.0`` to all values in the lambda, otherwise divisions of integers will result in integers (not floating point values). diff --git a/components/sn74hc595.rst b/components/sn74hc595.rst index 787c9aa5b..21ce5b213 100644 --- a/components/sn74hc595.rst +++ b/components/sn74hc595.rst @@ -43,7 +43,7 @@ Use of the OE pin is optional. If used, the pin should be pulled up externally. inverted: False Configuration variables: -~~~~~~~~~~~~~~~~~~~~~~~~ +************************ - **id** (**Required**, :ref:`config-id`): The id to use for this SN74HC595 component. - **data_pin** (**Required**, :ref:`Pin Schema `): Pin connected to SN74HC595 SER input. @@ -54,7 +54,7 @@ Configuration variables: Pin configuration variables: -~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +**************************** - **sn74hc595** (**Required**, :ref:`config-id`): The id of the SN74HC595 component of the pin. - **number** (**Required**, integer): The pin number. diff --git a/guides/contributing.rst b/guides/contributing.rst index 0e6fd2924..fd285671b 100644 --- a/guides/contributing.rst +++ b/guides/contributing.rst @@ -31,9 +31,10 @@ The ESPHome documentation is built using `sphinx `__ Syntax ****** -In my opinion, Markdown would have been the much better choice in hindsight, but at the time -I was setting up the documentation good Doxygen integration was key to me. Anyway, here's a quick -RST primer: +Here's a quick RST primer: + +Title hierarchy is based on order of occurence, not on type of character used to underline it. This +documents establish the following character order for better consistency. - **Headers**: You can write titles like this: @@ -547,8 +548,8 @@ loader. These are: has one of them in the config, a validation error will be generated. - ``ESP_PLATFORMS``: Provide a list of allowed ESP types this integration works with. -- ``CODEOWNERS``: GitHub usernames or team names of people that are responsible for this integration. - You should add at least your GitHub username here, as well as anyone who helped you to write code +- ``CODEOWNERS``: GitHub usernames or team names of people that are responsible for this integration. + You should add at least your GitHub username here, as well as anyone who helped you to write code that is being included. Codebase Standards diff --git a/schema_doc.py b/schema_doc.py index 2a1322e39..4eff4d99f 100644 --- a/schema_doc.py +++ b/schema_doc.py @@ -6,7 +6,7 @@ from typing import MutableMapping from sphinx.util import logging from docutils import nodes -SCHEMA_PATH = "../esphome_devices/schema.json" +SCHEMA_PATH = "schema.json" CONFIGURATION_VARIABLES = "Configuration variables:" PIN_CONFIGURATION_VARIABLES = "Pin configuration variables:" COMPONENT_HUB = "Component/Hub" @@ -75,7 +75,9 @@ PLATFORMS_TITLES = { } CUSTOM_DOCS = { - "guides/automations": {"Global Variables": "properties/globals"}, + "guides/automations": { + "Global Variables": "properties/globals", + }, "guides/configuration-types": { "Color": "properties/color", "Pin Schema": [ @@ -83,6 +85,9 @@ CUSTOM_DOCS = { "definitions/PIN.OUTPUT_INTERNAL", ], }, + "components/binary_sensor/index": { + "Binary Sensor Filters": "binary_sensor.FILTER_REGISTRY", + }, "components/climate/ir_climate": { "IR Remote Climate": [ "properties/climate/coolix", @@ -109,7 +114,8 @@ CUSTOM_DOCS = { "definitions/light.BINARY_LIGHT_SCHEMA", "definitions/light.BRIGHTNESS_ONLY_LIGHT_SCHEMA", "definitions/light.LIGHT_SCHEMA", - ] + ], + "Light Effects": "light.EFFECTS_REGISTRY", }, "components/light/fastled": { "Clockless": "properties/light/fastled_clockless", @@ -125,10 +131,13 @@ CUSTOM_DOCS = { "MQTT Component Base Configuration": "definitions/CONFIG.MQTT_COMMAND_COMPONENT_SCHEMA", }, "components/output/index": { - "Base Output Configuration": "definitions/output.FLOAT_OUTPUT_SCHEMA" + "Base Output Configuration": "definitions/output.FLOAT_OUTPUT_SCHEMA", }, "components/remote_transmitter": { - "Remote Transmitter Actions": "definitions/REMOTE_BASE.BASE_REMOTE_TRANSMITTER_SCHEMA" + "Remote Transmitter Actions": "definitions/REMOTE_BASE.BASE_REMOTE_TRANSMITTER_SCHEMA", + }, + "components/sensor/index": { + "Sensor Filters": "sensor.FILTER_REGISTRY", }, "components/time": { "Home Assistant Time Source": "properties/time/homeassistant", @@ -146,6 +155,10 @@ CUSTOM_DOCS = { } +def get_node_title(node): + return list(node.traverse(nodes.title))[0].astext() + + class SchemaGeneratorVisitor(nodes.NodeVisitor): def __init__(self, app, doctree, docname): nodes.NodeVisitor.__init__(self, doctree) @@ -160,6 +173,8 @@ class SchemaGeneratorVisitor(nodes.NodeVisitor): self.json_base_config = None self.title_id = None self.props_section_title = None + self.find_registry = None + self.section_level = 0 if self.path[0] == "components": if len(self.path) == 2: # root component, e.g. dfplayer, logger component = docname[11:] @@ -230,7 +245,7 @@ class SchemaGeneratorVisitor(nodes.NodeVisitor): # this is empty, not much to do raise nodes.SkipChildren - self.props_section_title = list(node.traverse(nodes.title))[0].astext() + self.props_section_title = get_node_title(node) # Document first paragraph is description of this thing description = self.getMarkdownParagraph(node) @@ -266,23 +281,23 @@ class SchemaGeneratorVisitor(nodes.NodeVisitor): def depart_document(self, node): pass - def visit_SEONode(self, node): - pass - - def depart_SEONode(self, node): - pass - - def visit_literal_block(self, node): - pass - - def depart_literal_block(self, node): - pass - def visit_section(self, node): - pass + self.section_level += 1 + section_title = get_node_title(node) + if self.custom_doc and section_title in self.custom_doc: + r = self.custom_doc[section_title] + if ( + isinstance(r, list) + or r.startswith("properties") + or r.startswith("definitions") + ): + return + self.find_registry = r def depart_section(self, node): - pass + self.section_level -= 1 + if self.section_level == 1: + self.find_registry = None def unknown_visit(self, node): pass @@ -303,7 +318,11 @@ class SchemaGeneratorVisitor(nodes.NodeVisitor): # TODO: add same markdown description to each? return + json_component = self.find_component(self.custom_doc[title_text]) + if not json_component: + return + json_component["markdownDescription"] = self.getMarkdownParagraph( node.parent ) @@ -450,22 +469,6 @@ class SchemaGeneratorVisitor(nodes.NodeVisitor): ) return - if title_text.endswith("Action") or title_text.endswith("Condition"): - # Document first paragraph is description of this thing - description = self.getMarkdownParagraph(node.parent) - split_text = title_text.split(" ") - if len(split_text) != 2: - return - key = split_text[0] - registry_name = f"automation.{split_text[1].upper()}_REGISTRY" - registry = self.app.jschema["definitions"][registry_name]["anyOf"] - for action in registry: - if key in action["properties"]: - action["properties"][key]["markdownDescription"] = description - self.props = self.find_props(action["properties"][key]) - break - self.props_section_title = title_text - if title_text.endswith("Trigger"): # Document first paragraph is description of this thing description = self.getMarkdownParagraph(node.parent) @@ -481,28 +484,50 @@ class SchemaGeneratorVisitor(nodes.NodeVisitor): self.props = self.find_props(trigger_schema) self.props_section_title = title_text - if self.docname == "components/light/index" and title_text.endswith("Effect"): - # Document first paragraph is description of this thing + if title_text == PIN_CONFIGURATION_VARIABLES: + self.multi_component = [] + if self.app.jschema["definitions"].get(f"PIN.INPUT_{self.path[-1]}"): + self.multi_component.append(f"definitions/PIN.INPUT_{self.path[-1]}") + if self.app.jschema["definitions"].get(f"PIN.OUTPUT_{self.path[-1]}"): + self.multi_component.append(f"definitions/PIN.OUTPUT_{self.path[-1]}") + self.accept_props = True + self.filled_props = False + self.props = None + if len(self.multi_component) == 0: + raise ValueError( + f'Found a "{PIN_CONFIGURATION_VARIABLES}" entry but could not find pin schema' + ) + if title_text.endswith("Action") or title_text.endswith("Condition"): + # Document first paragraph is description of this thing description = self.getMarkdownParagraph(node.parent) - name = title_text[: -len(" Effect")] - # accept Light Effect as ending (Automation Light Effect) + split_text = title_text.split(" ") + if len(split_text) != 2: + return + key = split_text[0] + + if self.props: + ref = self.props.get(key) + if ref: + ref = self.get_ref(ref) + if ref: + self.props = self.find_props(ref) + return + + registry_name = f"automation.{split_text[1].upper()}_REGISTRY" + self.find_registry_prop(registry_name, key, description) + + if self.section_level == 3 and self.find_registry: + name = title_text + if name.endswith(" Effect"): + name = title_text[: -len(" Effect")] if name.endswith(" Light"): name = name[: -len(" Light")] - key = name.replace(" ", "_").replace(".", "").lower() - registry = self.app.jschema["definitions"]["light.EFFECTS_REGISTRY"][ - "anyOf" - ] + description = self.getMarkdownParagraph(node.parent) + self.find_registry_prop(self.find_registry, key, description) self.props_section_title = title_text - for effect in registry: - if key in effect["properties"]: - effect["properties"][key]["markdownDescription"] = description - self.props = self.find_props(effect["properties"][key]) - return - raise ValueError("Cannot find Effect " + title_text) - if title_text == PIN_CONFIGURATION_VARIABLES: self.multi_component = [] if self.app.jschema["definitions"].get(f"PIN.INPUT_{self.path[-1]}"): @@ -517,6 +542,16 @@ class SchemaGeneratorVisitor(nodes.NodeVisitor): f'Found a "{PIN_CONFIGURATION_VARIABLES}" entry but could not find pin schema' ) + def find_registry_prop(self, registry_name, key, description): + registry = self.app.jschema["definitions"][registry_name]["anyOf"] + for item in registry: + if key in item["properties"]: + item["properties"][key]["markdownDescription"] = description + self.props = self.find_props(item["properties"][key]) + + return + raise ValueError(f"Cannot find {registry_name} {key}") + def depart_title(self, node): if self.filled_props: self.filled_props = False @@ -663,6 +698,25 @@ class SchemaGeneratorVisitor(nodes.NodeVisitor): paragraph = list(node.traverse(nodes.paragraph))[0] markdown = self.getMarkdown(paragraph) + param_type = None + # Check if there is type information for this item + try: + name_type = markdown[: markdown.index(": ") + 2] + ntr = re.search( + r"(\(((\*\*Required\*\*)|(\*Optional\*))(,\s(.*))*)\):\s", + name_type, + re.IGNORECASE, + ) + if ntr: + param_type = ntr.group(6) + if param_type: + markdown = ( + f"**{param_type}**: {markdown[markdown.index(': ') + 2 :]}" + ) + except ValueError: + # ': ' not found + pass + title = list(node.traverse(nodes.title))[0] if len(title) > 0: url = urllib.parse.urljoin( @@ -696,9 +750,6 @@ class SchemaGeneratorVisitor(nodes.NodeVisitor): # **name** (*Optional*, string): Long Description... Defaults to ``value``. # **name** (*Optional*): Long Description... Defaults to ``value``. - if "ads111" in self.docname: - self.docname = self.docname - ntr = re.search( r"\* \*\*(\w*)\*\*\s(\(((\*\*Required\*\*)|(\*Optional\*))(,\s(.*))*)\):\s", name_type, @@ -765,7 +816,7 @@ class SchemaGeneratorVisitor(nodes.NodeVisitor): desc = markdown[markdown.index(": ") + 2 :].strip() if param_type: - desc = param_type + ": " + desc + desc = "**" + param_type + "**: " + desc jprop["markdownDescription"] = desc global props_documented @@ -780,6 +831,8 @@ class SchemaGeneratorVisitor(nodes.NodeVisitor): def find_component(self, component_path): path = component_path.split("/") + if path[0] not in ("properties", "definitions"): + return None json_component = self.app.jschema[path[0]][path[1]] if len(path) > 2: @@ -897,32 +950,6 @@ class SchemaGeneratorVisitor(nodes.NodeVisitor): self.current_prop = None return props - return - # find properties - if "then" in component: - component = component["then"] - props = component.get("properties") - ref = None - if not props: - arr = component.get("anyOf", component.get("allOf")) - if not arr: - if "$ref" in component: - return self.find_props(self.get_ref(component)) - return None - for x in arr: - props = x.get("properties") - if not ref: - ref = self.get_ref(x) - if props: - break - if not props and ref: - props = self.find_props(ref) - - if props: - self.filled_props = False - self.accept_props = False - self.current_prop = None - return props def handle_component(app, doctree, docname): From 62f08028a27150c29d572abedeb2628cdf978795 Mon Sep 17 00:00:00 2001 From: Jim Ekman Date: Wed, 17 Mar 2021 14:40:33 +0100 Subject: [PATCH 37/47] Documentation for fan speed levels (#1056) * Update speed fan and REST API docs with speed_level * Update fan docs * Add configurable speed_levels to speed fan * Update components/fan/index.rst Co-authored-by: Guillermo Ruffino * Changed speed_levels to speed_count to match HA and updated descriptions Co-authored-by: Guillermo Ruffino --- components/fan/images/fan-ui.png | Bin 12849 -> 16379 bytes components/fan/index.rst | 10 ++++------ components/fan/speed.rst | 12 +++--------- web-api/index.rst | 6 +++--- 4 files changed, 10 insertions(+), 18 deletions(-) diff --git a/components/fan/images/fan-ui.png b/components/fan/images/fan-ui.png index 01621d4d2dff17361c5091416f2b70a35fc0bf04..b25feffd85a805d80ffe0ba1799bfdd98d895253 100644 GIT binary patch literal 16379 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 literal 12849 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 diff --git a/components/fan/index.rst b/components/fan/index.rst index 42435ea03..478e9d616 100644 --- a/components/fan/index.rst +++ b/components/fan/index.rst @@ -7,14 +7,13 @@ Fan Component With the ``fan`` domain you can create components that appear as fans in the Home Assistant frontend. A fan can be switched ON or OFF, optionally -has a speed setting (``LOW``, ``MEDIUM``, ``HIGH``) and can have an -oscillate output. +has a speed level between 1 and the maximum supported speed level of the fan, and can have an +oscillate and direction output. This component restores its state on reboot/reset. .. figure:: images/fan-ui.png :align: center - :width: 70.0% .. _config-fan: @@ -93,9 +92,8 @@ Configuration options: - **id** (**Required**, :ref:`config-id`): The ID of the fan. - **oscillating** (*Optional*, boolean, :ref:`templatable `): Set the oscillation state of the fan. Defaults to not affecting oscillation. -- **speed** (*Optional*, string, :ref:`templatable `): - Set the speed setting of the fan. One of ``OFF``, ``LOW``, ``MEDIUM``, ``HIGH``. - If you template this value, return ``FAN_SPEED_...``, for example ``FAN_SPEED_HIGH``. +- **speed** (*Optional*, int, :ref:`templatable `): + Set the speed level of the fan. Can be a number between 1 and the maximum speed level of the fan. Full Fan Index -------------- diff --git a/components/fan/speed.rst b/components/fan/speed.rst index 59716e4b7..b9080022d 100644 --- a/components/fan/speed.rst +++ b/components/fan/speed.rst @@ -30,15 +30,9 @@ Configuration variables: :ref:`output ` to use for the oscillation state of this fan. Default is empty. - **direction_output** (*Optional*, :ref:`config-id`): The id of the :ref:`output ` to use for the direction state of the fan. Default is empty. -- **speed** (*Optional*): Set the float values for each speed setting: - - - **low** (**Required**, float): Set the value for the low speed - setting. Must be in range 0 to 1. Defaults to 0.33. - - **medium** (**Required**, float): Set the value for the medium speed - setting. Must be in range 0 to 1. Defaults to 0.66. - - **high** (**Required**, float): Set the value for the high speed - setting. Must be in range 0 to 1. Defaults to 1. - +- **speed_count** (*Optional*, int): Set the number of supported discrete speed levels. The value is used + to calculate the percentages for each speed. E.g. ``2`` means that you have 50% and 100% while ``100`` + will allow 1% increments in the output. Defaults to ``100``. - **id** (*Optional*, :ref:`config-id`): Manually specify the ID used for code generation. - All other options from :ref:`Fan Component `. diff --git a/web-api/index.rst b/web-api/index.rst index acf8f8bf5..555158699 100644 --- a/web-api/index.rst +++ b/web-api/index.rst @@ -192,7 +192,7 @@ GET request to ``/fan/``. "id": "fan-living_room_fan", "state": "ON", "value": true, - "speed": "high", + "speed_level": 2, "oscillation": false } @@ -200,11 +200,11 @@ GET request to ``/fan/``. - **id**: The id of the fan. Prefixed by ``fan-``. - **state**: The text-based state of the fan as a string. - **value**: The binary (``true``/``false``) state of the fan. -- **speed**: The speed setting of the fan if it's supported. Either "off", "low", "medium" or "high". +- **speed_level**: The speed level of the fan if it's supported. Value is between 1 and the maximum supported by the fan. - **oscillation**: Whether the oscillation setting of the fan is on. Only sent if the fan supports it. To control the state of the fan, send POST requests to ``/fan//turn_on``, ``/fan//turn_off`` and ``/fan//toggle``. Turn on additionally supports these optional parameters: -- **speed**: The new speed setting of the fan. Values as above. +- **speed_level**: The new speed level of the fan. Values as above. - **oscillation**: The new oscillation setting of the fan. Values as above. From d5d917db3a786923bd2a43f48f2fc2455d41dbc3 Mon Sep 17 00:00:00 2001 From: "Sergey V. DUDANOV" Date: Thu, 18 Mar 2021 00:28:09 +0400 Subject: [PATCH 38/47] Midea Climate support (#804) * Midea Climate support * Update Midea documentation * Midea Docs: add links to open hardware implementation of UART-dongle * Midea docs: add vendors information * Midea docs: fixed lint errors * Midea Docs: added words of thanks * Midea Docs: updated * Midea Docs: fix option name * Added new option info * Added example of using outdoor sensor option * Update: new options added * Added new power usage option * Major changes of settings * Fix link * Remove midea-dongle from index.rst * Fix option name --- components/climate/midea_ac.rst | 115 ++++++++++++++++++++++++++++++++ images/midea.svg | 43 ++++++++++++ index.rst | 1 + 3 files changed, 159 insertions(+) create mode 100644 components/climate/midea_ac.rst create mode 100644 images/midea.svg diff --git a/components/climate/midea_ac.rst b/components/climate/midea_ac.rst new file mode 100644 index 000000000..9d45779a7 --- /dev/null +++ b/components/climate/midea_ac.rst @@ -0,0 +1,115 @@ +Midea Air Conditioner +===================== + +.. seo:: + :description: Instructions for setting up a Midea climate device + :image: air-conditioner.png + +The ``midea_ac`` component creates a Midea air conditioner climate device. + +This component requires a auto-loaded ``midea-dongle`` component, that use hardware UART. + +.. note:: + + This protocol also used by some vendors: + + - `Electrolux `_ + - `Qlima `_ + - `Artel `_ + - `Carrier `_ + - `Comfee `_ + - `Inventor `_ + - and maybe others + + Example of hardware implementation is `Midea Open Dongle `_ in free `KiCad `_ format. + +.. code-block:: yaml + + # Example configuration entry + + # Disable logging over UART (required) + logger: + baud_rate: 0 + + # UART settings for Midea dongle (required) + uart: + tx_pin: 1 + rx_pin: 3 + baud_rate: 9600 + + # Optional (if you want modify settings) + midea_dongle: + strength_icon: true + + # Main settings + climate: + - platform: midea_ac + name: "My Midea AC" + visual: + min_temperature: 18 °C + max_temperature: 25 °C + temperature_step: 0.1 °C + beeper: true + swing_horizontal: true + swing_both: true + outdoor_temperature: + name: "Temp" + power_usage: + name: "Power" + humidity_setpoint: + name: "Hum" + +Configuration variables: +------------------------ + +- **id** (*Optional*, :ref:`config-id`): Manually specify the ID used for code generation. +- **midea_dongle_id** (*Optional*, :ref:`config-id`): Manually specify the ID of the ``midea_dongle`` if you want to use multiple devices. +- **name** (**Required**, string): The name of the climate device. +- **outdoor_temperature** (*Optional*): The information for the outdoor temperature + sensor. + + - **name** (**Required**, string): The name of the sensor. + - **id** (*Optional*, :ref:`config-id`): Set the ID of this sensor for use in lambdas. + - All other options from :ref:`Sensor `. +- **power_usage** (*Optional*): The information for the current power consumption + sensor. + + - **name** (**Required**, string): The name of the sensor. + - **id** (*Optional*, :ref:`config-id`): Set the ID of this sensor for use in lambdas. + - All other options from :ref:`Sensor `. +- **humidity_setpoint** (*Optional*): The information for the humidity indoor + sensor (experimental). + + - **name** (**Required**, string): The name of the sensor. + - **id** (*Optional*, :ref:`config-id`): Set the ID of this sensor for use in lambdas. + - All other options from :ref:`Sensor `. +- **beeper** (*Optional*, boolean): Beeper feedback on command. Defaults to ``False``. +- **swing_horizontal** (*Optional*, boolean): Enable **swing horizontal** option. Defaults to ``False``. +- **swing_both** (*Optional*, boolean): Enable **swing both** option. Defaults to ``False``. +- All other options from :ref:`Climate `. + +Configuration variables of midea-dongle component: +************************************************** + +- **id** (*Optional*, :ref:`config-id`): Manually specify the ID used for code generation. +- **uart_id** (*Optional*, :ref:`config-id`): Manually specify the ID of the :doc:`../uart` if you want + to use multiple UART buses. +- **strength_icon** (*Optional*, boolean): Set if your device have signal strength icon + and you want to use this feature. By default, on connected state, icon show maximum signal quality. Defaults to ``False``. + + +Acknowledgments: +---------------- + +Thanks to the following people for their contributions to reverse engineering the UART protocol and source code in the following repositories: + +* `Mac Zhou `_ +* `NeoAcheron `_ +* `Rene Klootwijk `_ + +See Also +-------- + +- :doc:`/components/climate/index` +- :apiref:`climate/midea_ac.h` +- :ghedit:`Edit` diff --git a/images/midea.svg b/images/midea.svg new file mode 100644 index 000000000..a152068c1 --- /dev/null +++ b/images/midea.svg @@ -0,0 +1,43 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/index.rst b/index.rst index 2eedda572..9ae005d4f 100644 --- a/index.rst +++ b/index.rst @@ -336,6 +336,7 @@ Climate Components PID Controller, components/climate/pid, function.svg IR Remote Climate, components/climate/ir_climate, air-conditioner-ir.svg Tuya Climate, components/climate/tuya, tuya.png + Midea Air Conditioner, components/climate/midea_ac, midea.svg Misc Components --------------- From e7c82f4c5be1d5b0b7c60a49c651c2a72680702c Mon Sep 17 00:00:00 2001 From: Jesse Hills <3060199+jesserockz@users.noreply.github.com> Date: Thu, 18 Mar 2021 09:45:31 +1300 Subject: [PATCH 39/47] Add docs for `name_add_mac_suffix` config (#1058) * Add docs for `name_add_mac_suffix` config * Spelling and a bit more info * Update components/esphome.rst Co-authored-by: Guillermo Ruffino Co-authored-by: Guillermo Ruffino --- components/esphome.rst | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/components/esphome.rst b/components/esphome.rst index ca9f465c8..0247c7e3f 100644 --- a/components/esphome.rst +++ b/components/esphome.rst @@ -49,6 +49,9 @@ Advanced options: - **libraries** (*Optional*, list of libraries): A list of `platformio libraries `__ to include in the project. See `platformio lib install `__. - **comment** (*Optional*, string): Additional text information about this node. Only for display in UI. +- **name_add_mac_suffix** (*Optional*, boolean): Appends the last 6 bytes of the mac address of the device to + the name in the form `_aabbcc`. Defaults to ``False``. + See :ref:`esphome-mac_suffix`. ESP8266 Options: @@ -297,6 +300,17 @@ Now upload the updated config to the device. As a second step, you now need to r The same procedure can be done for changing the static IP of a device. + +.. _esphome-mac_suffix: + +Adding the MAC address as a suffix to the device name +----------------------------------------------------- + +Using ``name_add_mac_suffix`` allows the user to compile a single binary file to flash +many of the same device and they will all have unique names/hostnames. +Note that you will still need to create an individual YAML config file if you want to +OTA update the devices in the future. + See Also -------- From ced6164e59b655858e914abee6651e1302781ac7 Mon Sep 17 00:00:00 2001 From: Mike Ryan Date: Thu, 18 Mar 2021 01:09:17 -0500 Subject: [PATCH 40/47] Add docs for addressable_light display (#755) --- components/display/addressable_light.rst | 146 ++++++++++++++++++ .../display/images/addressable_light.jpg | Bin 0 -> 94320 bytes .../addressable_light_pixel_map_8x32.png | Bin 0 -> 61227 bytes .../addressable_light_pixel_map_default.png | Bin 0 -> 20487 bytes images/addressable_light.jpg | Bin 0 -> 27050 bytes index.rst | 1 + 6 files changed, 147 insertions(+) create mode 100644 components/display/addressable_light.rst create mode 100644 components/display/images/addressable_light.jpg create mode 100644 components/display/images/addressable_light_pixel_map_8x32.png create mode 100644 components/display/images/addressable_light_pixel_map_default.png create mode 100644 images/addressable_light.jpg diff --git a/components/display/addressable_light.rst b/components/display/addressable_light.rst new file mode 100644 index 000000000..3bf6bba7f --- /dev/null +++ b/components/display/addressable_light.rst @@ -0,0 +1,146 @@ +Addressable Light +================= + +.. seo:: + :description: Instructions for setting up displays using addressable lights and LED matrix + :image: addressable_light.jpg + +The ``addressable_light`` display platform allows to display text and graphics on an addressable +light that has been arranged in a display matrix. + +The display requires that an :apiclass:`AddressableLight ` component, such as +:doc:`/components/light/fastled` or :doc:`/components/light/neopixelbus`, be defined. + +.. figure:: images/addressable_light.jpg + :align: center + :width: 75.0% + + WS2812B Addressable Light Display + +.. code-block:: yaml + + light: + - platform: fastled_clockless + chipset: WS2812B + pin: GPIO4 + num_leds: 64 + rgb_order: GRB + name: "led_matrix" + id: led_matrix_light + default_transition_length: 0s + color_correct: [50%, 50%, 50%] + restore_mode: ALWAYS_ON + + display: + - platform: addressable_light + id: led_matrix_display + addressable_light_id: led_matrix_light + width: 8 + height: 8 + rotation: 180° + update_interval: 16ms + lambda: |- + // Draw a bulls-eye pattern + Color red = Color(0xFF0000); + Color green = Color(0x00FF00); + Color blue = Color(0x0000FF); + it.rectangle(0, 0, 8, 8, red); + it.rectangle(1, 1, 6, 6, green); + it.rectangle(2, 2, 4, 4, blue); + it.rectangle(3, 3, 2, 2, red); + +Configuration variables: +------------------------ + +- **addressable_light_id** (**Required**, :ref:`config-id`): The id of the addressable light component to use + as a display. +- **width** (**Required**, int): The width of the LED matrix in pixels. +- **height** (**Required**, int): The height of the LED matrix in pixels. +- **rotation** (*Optional*): Set the rotation of the display. Everything you draw in ``lambda:`` will be rotated + by this option. One of ``0°`` (default), ``90°``, ``180°``, ``270°``. +- **update_interval** (*Optional*, :ref:`config-time`): The interval to call the lambda to update the display. + Defaults to ``16ms``. +- **pixel_mapper** (*Optional*, :ref:`lambda `): A lambda that returns the integer address of the LED + given the supplied the ``x`` and ``y`` pixel coordinate. By default, a left-to-right direct pixel mapper is used. +- **lambda** (*Optional*, :ref:`lambda `): The lambda to use for rendering the content on the display. + ``it`` will be an instance of :apiclass:`DisplayBuffer `. + See :ref:`display-engine` for more information. +- **id** (*Optional*, :ref:`config-id`): Manually specify the ID used for code generation. + + +.. note:: + + When enabled (the default, but also via ``it.set_enabled(true)``), any effect currently running on the + addressable light will be disabled. When disabled (``it.set_enabled(false)``), the last configured effect will + be restored. + + While the display is enabled, it is still possible to control the parent addressable light component in some + limited capacity. Changing the brightness will still work, but changing the color will have no affect. It is not + adivsable to enable any effects (ex: rainbow, color wipe, etc) while the display is enabled, as this will cause a + great deal of flickering while the effect competes with the display for rendering. + + +pixel_mapper +------------ + +An addressable LED matrix is just an addressable LED strip laid out in a matrix -- the path often snaking +down-up-down, left-right-left, or whichever way the manufacturer has chosen. Like an addressable LED strip, +each pixel on a matrix is addressed as an offset from the first pixel (0). The job of the pixel mapper is +to translate a logical x-y pixel coordinate to the address of the expected physical LED. + +Determining the correct algorithm for the pixel mapper for your matrix will hopefully only require some graph paper and a little bit of math. + + +Default +******* + +The default pixel mapper assumes that the led matrix is addressed starting with the top left LED, moving to the right, and +then starting with the left-most row of the next row. + +.. figure:: images/addressable_light_pixel_map_default.png + :align: center + :width: 75.0% + + Default pixel_mapper as used with a 4x4 led matrix + + +BTF-Lighting 8x32 WS2812B Flexible LED Matrix +********************************************* + +The following image illustrates the path the addressable strip takes through the common the BTF-Lighting 8x32 matrix. + +.. figure:: images/addressable_light_pixel_map_8x32.png + :align: center + :width: 75.0% + + LED layout for BTF-Lighting 8x32 WS2812B Flexible LED Matrix + + +Below is a definition that includes a pixel_mapper suitable for these 8x32 matrices. + +.. code-block:: yaml + + display: + - platform: addressable_light + id: led_matrix_32x8_display + addressable_light_id: led_matrix_32x8 + width: 32 + height: 8 + pixel_mapper: |- + if (x % 2 == 0) { + return (x * 8) + y; + } + return (x * 8) + (7 - y); + rotation: 0° + update_interval: 16ms + + +See Also +-------- + +- :apiref:`addressable_light/addressable_light_display.h` +- :doc:`/components/light/index` +- :doc:`/components/light/fastled` +- :doc:`/components/light/neopixelbus` +- :doc:`/components/light/partition` +- :ghedit:`Edit` diff --git a/components/display/images/addressable_light.jpg b/components/display/images/addressable_light.jpg new file mode 100644 index 0000000000000000000000000000000000000000..bb0de7cd6cd633d53e28737ca58c43922556c3de GIT binary patch literal 94320 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 literal 0 HcmV?d00001 diff --git a/components/display/images/addressable_light_pixel_map_default.png b/components/display/images/addressable_light_pixel_map_default.png new file mode 100644 index 0000000000000000000000000000000000000000..f39ab8893c54a49ddacd306575f09f3fb6ffa6a7 GIT binary patch literal 20487 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 Date: Fri, 19 Mar 2021 08:20:09 +0000 Subject: [PATCH 41/47] Add documentation for pulse_meter (#900) --- components/sensor/pulse_meter.rst | 82 +++++++++++++++++++++++++++++++ index.rst | 1 + 2 files changed, 83 insertions(+) create mode 100644 components/sensor/pulse_meter.rst diff --git a/components/sensor/pulse_meter.rst b/components/sensor/pulse_meter.rst new file mode 100644 index 000000000..6de3c4df4 --- /dev/null +++ b/components/sensor/pulse_meter.rst @@ -0,0 +1,82 @@ +Pulse Meter Sensor +================== + +.. seo:: + :description: Instructions for setting up pulse meter sensors. + :image: pulse.png + +The pulse meter sensor allows you to count the number and frequency of pulses on any pin. It is intended to be a drop-in replacement +for :doc:`integration sensor `, but offering better resolution. +It measures the time between rising edges on a pin, for each pulse it outputs the frequency in pulses/min. + +.. code-block:: yaml + + # Example configuration entry + sensor: + - platform: pulse_meter + pin: 12 + name: "Pulse Meter" + +Configuration variables: +------------------------ + +- **pin** (**Required**, :ref:`config-pin`): The pin to count pulses on. +- **name** (**Required**, string): The name of the sensor. + +- **internal_filter** (*Optional*, :ref:`config-time`): If a pulse shorter than this + time is detected, it’s discarded and no pulse is counted. Defaults to ``13us``. For S0 pulse meters that are used to meter power consumption 50-100 ms is a reasonable value. + +- **timeout** (*Optional*, :ref:`config-time`): If we don't see a pulse for this length of time, we assume 0 pulses/sec. Defaults to ``5 min``. +- **total** (*Optional*, :ref:`Sensor `): An additional sensor that outputs the total number of pulses counted. +- All other options from :ref:`Sensor `. + +Converting units +---------------- + +The sensor defaults to units of “pulses/min”. You can change this by using :ref:`sensor-filters`. +For example, if you’re using the pulse meter with a photodiode to +count the light pulses on a power meter that outputs 1000 pulses per kWh, +you can use the following to output instantaneous usage in kW: + +.. code-block:: yaml + + # Example configuration entry + sensor: + - platform: pulse_meter + pin: 12 + unit_of_measurement: 'kW' + name: 'Electricity Usage' + filters: + - multiply: 0.06 + +Counting total pulses +--------------------- + +When the total sensor is configured, pulse_meter also reports the total +number of pulses measured. When used on a power meter, this can be used to +measure the total consumed energy in kWh. + +.. code-block:: yaml + + # Example configuration entry + sensor: + - platform: pulse_meter + pin: 12 + unit_of_measurement: 'kW' + name: 'Electricity Usage' + filters: + - multiply: 0.06 + total: + name: "Electricity Total" + unit_of_measurement: "kWh" + accuracy_decimals: 0 + filters: + - multiply: 0.001 + +See Also +-------- + +- :ref:`sensor-filters` +- :doc:`/components/sensor/pulse_counter` +- :apiref:`pulse_meter/pulse_meter_sensor.h` +- :ghedit:`Edit` diff --git a/index.rst b/index.rst index f474ec9da..98af20f53 100644 --- a/index.rst +++ b/index.rst @@ -143,6 +143,7 @@ Sensor Components NTC Thermistor, components/sensor/ntc, ntc.jpg PMSX003, components/sensor/pmsx003, pmsx003.svg Pulse Counter, components/sensor/pulse_counter, pulse.svg + Pulse Meter, components/sensor/pulse_meter, pulse.svg Pulse Width, components/sensor/pulse_width, pulse.svg PZEM004T, components/sensor/pzem004t, pzem004t.svg PZEM AC, components/sensor/pzemac, pzemac.svg From 9b266ecf099029162b0b9ac97a3bea94a65250d2 Mon Sep 17 00:00:00 2001 From: matikij Date: Sat, 20 Mar 2021 08:32:51 +0100 Subject: [PATCH 42/47] Add docs for ttgo-b1 version (#808) --- components/display/waveshare_epaper.rst | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/components/display/waveshare_epaper.rst b/components/display/waveshare_epaper.rst index 695569b60..7f7f93f7a 100644 --- a/components/display/waveshare_epaper.rst +++ b/components/display/waveshare_epaper.rst @@ -8,8 +8,9 @@ Waveshare E-Paper Display The ``waveshare_epaper`` display platform allows you to use some E-Paper displays sold by `Waveshare `__ with ESPHome. The 2.13" `TTGO module `__ with an ESP32 on the board is supported as well. -Depending on your specific revision of the board you might need to try out the ``-b73`` version (see below). -Similar modules sold by other vendors might also work but not have been tested yet. +Depending on your specific revision of the board you might need to try out the `-b73` or `-b1` version (see below). +Similar modules sold by other vendors might also work but not have been tested yet. Currently only +single-color E-Ink displays are implemented and of those only a few modules. .. figure:: images/waveshare_epaper-full.jpg :align: center @@ -74,6 +75,7 @@ Configuration variables: - ``2.13in`` (not tested) - ``2.13in-ttgo`` (T5_V2.3 tested) - ``2.13in-ttgo-b73`` (T5_V2.3 with B73 display tested) + - ``2.13in-ttgo-b1`` (T5_V2.3 with B1 display tested) - ``2.70in`` (currently not working with the HAT Rev 2.1 version) - ``2.90in`` - ``2.90inv2`` From dc6154e81a5ee3d35705ba5bfcdbde4a3b4fc1b8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niccol=C3=B2=20Maggioni?= Date: Mon, 22 Mar 2021 00:59:48 +0100 Subject: [PATCH 43/47] SenseAir: background calibration & ABC commands (#1066) --- components/sensor/senseair.rst | 71 ++++++++++++++++++++++++++++++++++ 1 file changed, 71 insertions(+) diff --git a/components/sensor/senseair.rst b/components/sensor/senseair.rst index a173b6c1c..67db919bb 100644 --- a/components/sensor/senseair.rst +++ b/components/sensor/senseair.rst @@ -64,6 +64,77 @@ Configuration variables: ``G+`` should be connected to power supply (supported voltage is 4.5 V to 5.25 V), ``G0`` to ``GND`` pin +.. _senseair-background_calibration_action: + +``senseair.background_calibration`` Action +------------------------------------------ + +This :ref:`action ` initiates a background calibration on the sensor with the given ID: the current +CO2 level will be used as a reference for the 400ppm threshold. Ensure that the sensor is in a stable environment with +fresh ambient air, preferably near a window that has already been opened for a sufficient time. + +.. code-block:: yaml + + on_...: + then: + - senseair.background_calibration: my_senseair_id + +.. _senseair-background_calibration_result_action: + +``senseair.background_calibration_result`` Action +------------------------------------------------- + +This :ref:`action ` requests the result of the background calibration procedure from the sensor +with the given ID. The value will be printed in ESPHome logs. + +Wait at least one sensor lamp cycle after having triggered the background calibration before requesting its result. + +.. code-block:: yaml + + on_...: + then: + - senseair.background_calibration_result: my_senseair_id + +.. _senseair-abc_get_period_action: + +``senseair.abc_get_period`` Action +---------------------------------- + +This :ref:`action ` requests the currently configured ABC interval from the sensor with the given ID. +The value will be printed in ESPHome logs. + +.. code-block:: yaml + + on_...: + then: + - senseair.abc_get_period: my_senseair_id + +.. _senseair-abc_enable_action: + +``senseair.abc_enable`` Action +------------------------------ + +This :ref:`action ` enables Automatic Baseline Calibration on the sensor with the given ID. +ABC will be activated with the default interval of 180 hours. + +.. code-block:: yaml + + on_...: + then: + - senseair.abc_enable: my_senseair_id + +.. _senseair-abc_disable_action: + +``senseair.abc_disable`` Action +------------------------------- + +This :ref:`action ` disables Automatic Baseline Calibration on the sensor with the given ID. + +.. code-block:: yaml + + on_...: + then: + - senseair.abc_disable: my_senseair_id See Also -------- From 9265b6cc8b3d71a99029c581abdb2a8d84530f4f Mon Sep 17 00:00:00 2001 From: Jesse Hills <3060199+jesserockz@users.noreply.github.com> Date: Mon, 22 Mar 2021 16:26:19 +1300 Subject: [PATCH 44/47] Add docs for http_request on_response trigger (#1049) --- components/http_request.rst | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/components/http_request.rst b/components/http_request.rst index a11d384d8..b9da808c1 100644 --- a/components/http_request.rst +++ b/components/http_request.rst @@ -49,6 +49,12 @@ This :ref:`action ` sends a GET request. headers: Content-Type: application/json verify_ssl: false + on_response: + then: + - logger.log: + format: 'Response status: %d' + args: + - status_code # Short form - http_request.get: https://esphome.io @@ -57,6 +63,7 @@ Configuration variables: - **url** (**Required**, string, :ref:`templatable `): URL to send request. - **headers** (*Optional*, mapping): Map of HTTP headers. Values are :ref:`templatable `. - **verify_ssl** (*Optional*, boolean): Verify the SSL certificate of the endpoint. Defaults to ``true``. +- **on_response** (*Optional*, :ref:`Automation `): An automation to perform when the request is finished. .. note:: @@ -112,6 +119,29 @@ Configuration variables: - **method** (**Required**, string): HTTP method to use (``GET``, ``POST``, ``PUT``, ``DELETE``, ``PATCH``). - All other options from :ref:`http_request-post_action`. +.. _http_request-on_response: + +``on_response`` Trigger +----------------------- + +This automation will be triggered when the HTTP request is finished and will supply the +http response code in parameter ``status_code`` as an ``int``. + +.. code-block:: yaml + + on_... + then: + - http_request.get: + url: https://esphome.io + verify_ssl: false + on_response: + then: + - logger.log: + format: "Response status: %d" + args: + - status_code + + .. _http_request-examples: Examples From 093b442459ea6cd8879cccf7285142dad97214f4 Mon Sep 17 00:00:00 2001 From: Jesse Hills <3060199+jesserockz@users.noreply.github.com> Date: Mon, 22 Mar 2021 17:29:09 +1300 Subject: [PATCH 45/47] Bump version to v1.17.0b1 --- Doxygen | 2 +- Makefile | 2 +- _static/version | 2 +- conf.py | 2 +- script/bump-version.py | 4 ++-- 5 files changed, 6 insertions(+), 6 deletions(-) diff --git a/Doxygen b/Doxygen index ae4d37139..36c0c07d6 100644 --- a/Doxygen +++ b/Doxygen @@ -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 = 1.17.0-dev +PROJECT_NUMBER = 1.17.0b1 # Using the PROJECT_BRIEF tag one can provide an optional one line description # for a project that appears at the top of each page and should give viewer a diff --git a/Makefile b/Makefile index 1a15daf6c..e3ce13443 100644 --- a/Makefile +++ b/Makefile @@ -1,5 +1,5 @@ ESPHOME_PATH = ../esphome -ESPHOME_REF = v1.16.2 +ESPHOME_REF = v1.17.0b1 .PHONY: html html-strict cleanhtml deploy help webserver Makefile netlify netlify-api api netlify-dependencies svg2png copy-svg2png diff --git a/_static/version b/_static/version index ee8855caa..c4c22c58f 100644 --- a/_static/version +++ b/_static/version @@ -1 +1 @@ -1.17.0-dev +1.17.0b1 \ No newline at end of file diff --git a/conf.py b/conf.py index 3f2f786b7..357202291 100644 --- a/conf.py +++ b/conf.py @@ -69,7 +69,7 @@ author = "Otto Winter" # The short X.Y version. version = "1.17" # The full version, including alpha/beta/rc tags. -release = "1.17.0-dev" +release = "1.17.0b1" # The language for content autogenerated by Sphinx. Refer to documentation # for a list of supported languages. diff --git a/script/bump-version.py b/script/bump-version.py index 83ffa4b4d..0a38889f9 100755 --- a/script/bump-version.py +++ b/script/bump-version.py @@ -60,9 +60,9 @@ def write_version(version: Version): "Doxygen", r"PROJECT_NUMBER = .*", f"PROJECT_NUMBER = {version}" ) # version = '1.14' - sub("conf.py", r"version = '.*'", f"version = '{version.major}.{version.minor}'") + sub("conf.py", r'version = ".*"', f'version = "{version.major}.{version.minor}"') # release = '1.14.4' - sub("conf.py", r"release = '.*'", f"release = '{version}'") + sub("conf.py", r'release = ".*"', f'release = "{version}"') with open("_static/version", "wt") as fh: fh.write(str(version)) From 35330c419a8e328d6ffef38aa661bf333e93736f Mon Sep 17 00:00:00 2001 From: Jesse Hills <3060199+jesserockz@users.noreply.github.com> Date: Mon, 22 Mar 2021 17:36:22 +1300 Subject: [PATCH 46/47] Update changelog for 1.17.0b1 --- changelog/index.rst | 2 +- changelog/v1.17.0.rst | 176 ++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 177 insertions(+), 1 deletion(-) create mode 100644 changelog/v1.17.0.rst diff --git a/changelog/index.rst b/changelog/index.rst index 58680e625..8dd643894 100644 --- a/changelog/index.rst +++ b/changelog/index.rst @@ -2,7 +2,7 @@ Changelog ========= .. redirect:: - :url: /changelog/v1.16.0.html + :url: /changelog/v1.17.0.html .. toctree:: :glob: diff --git a/changelog/v1.17.0.rst b/changelog/v1.17.0.rst new file mode 100644 index 000000000..68f009bed --- /dev/null +++ b/changelog/v1.17.0.rst @@ -0,0 +1,176 @@ +Changelog - Version 1.17.0 - TBD 2021 +=============================================== + +.. seo:: + :description: Changelog for ESPHome version 1.17.0. + :image: /_static/changelog-1.17.0.png + :author_twitter: @esphome_ + +.. imgtable:: + :columns: 4 + + Inkbird IBS-TH1 Mini, components/sensor/inkbird_ibsth1_mini, inkbird_isbth1_mini.jpg + MCP4725, components/output/mcp4725, mcp4725.jpg + Xiaomi Miscale, components/sensor/xiaomi_miscale, xiaomi_miscale.jpg + Xiaomi Miscale2, components/sensor/xiaomi_miscale2, xiaomi_miscale2.jpg + Midea Air Conditioner, components/climate/midea_ac, midea.svg + Addressable Light Display, components/display/addressable_light, addressable_light.jpg + Pulse Meter, components/sensor/pulse_meter, pulse.svg + +RELEASE NOTES TO GO HERE + +New Features +------------ + +- esphome: Vl53l0x change address :esphomepr:`1126` by :ghuser:`kkellner` (new-feature) +- esphome: Background calibration & ABC commands for SenseAir S8 :esphomepr:`1623` by :ghuser:`nmaggioni` (new-feature) +- esphome: Add trigger for http actions to receive the status code :esphomepr:`1599` by :ghuser:`jesserockz` (new-feature) + +New Integrations +---------------- + +- esphome: Adding support for the Inkbird IBS-TH1 Mini sensor :esphomepr:`1099` by :ghuser:`fkirill` (new-integration) +- esphome: Add MCP4725 DAC Component :esphomepr:`1418` by :ghuser:`JJK801` (new-integration) +- esphome: Add Xiaomi Miscale v1 and v2 :esphomepr:`1368` by :ghuser:`dckiller51` (new-integration) +- esphome: Add support for the SM300D2 7-in-1 sensor module :esphomepr:`1524` by :ghuser:`moritzgloeckl` (new-integration) +- esphome: Midea climate support :esphomepr:`1328` by :ghuser:`dudanov` (new-integration) +- esphome: Add addressable_light display platform :esphomepr:`1272` by :ghuser:`justfalter` (new-integration) (notable-change) +- esphome: Implement pulse_meter as an improvement on pulse_counter and pulse_width for meters :esphomepr:`1434` by :ghuser:`stevebaxter` (new-integration) + +Breaking Changes +---------------- + +- esphome: MCP23XXX Refactor :esphomepr:`1560` by :ghuser:`jesserockz` (breaking-change) + +Notable Changes +--------------- + +- esphome: Device class attribute for sensor component :esphomepr:`1525` by :ghuser:`marecabo` (notable-change) +- esphome: Add default device classes to sensor components :esphomepr:`1533` by :ghuser:`marecabo` (notable-change) +- esphome: Add addressable_light display platform :esphomepr:`1272` by :ghuser:`justfalter` (new-integration) (notable-change) + +All changes +----------- + +- esphome: Bump voluptuous from 0.12.0 to 0.12.1 :esphomepr:`1411` by :ghuser:`dependabot[bot]` +- esphome: add http request tests :esphomepr:`1448` by :ghuser:`glmnet` +- esphome: codegen: Lambda improvements :esphomepr:`1476` by :ghuser:`balrog-kun` +- docs: Add options to control pulse duration on Climate_IR_LG Component :docspr:`963` by :ghuser:`mhentschke` +- esphome: Add options to control pulse duration on Climate_IR_LG Component :esphomepr:`1470` by :ghuser:`mhentschke` +- esphome: Adding support for the Inkbird IBS-TH1 Mini sensor :esphomepr:`1099` by :ghuser:`fkirill` (new-integration) +- docs: Adding documentation for Inkbird IBS-TH1 Mini sensor :docspr:`657` by :ghuser:`fkirill` +- esphome: Add config validator location :esphomepr:`1490` by :ghuser:`glmnet` +- esphome: Add MCP4725 DAC Component :esphomepr:`1418` by :ghuser:`JJK801` (new-integration) +- docs: Add MCP4725 docs :docspr:`889` by :ghuser:`JJK801` +- docs: Fix format consistency :docspr:`989` by :ghuser:`glmnet` +- esphome: Added codeowners to max7219digit :esphomepr:`1487` by :ghuser:`rspaargaren` +- esphome: Correct Native API Wire Format Documentation :esphomepr:`1528` by :ghuser:`justin-gerhardt` +- esphome: st7735_conf_fixes :esphomepr:`1530` by :ghuser:`SenexCrenshaw` +- docs: ST7735 Changed configuration items to snake_case :docspr:`1000` by :ghuser:`SenexCrenshaw` +- esphome: Device class attribute for sensor component :esphomepr:`1525` by :ghuser:`marecabo` (notable-change) +- docs: Add doc for device_class attribute of sensor :docspr:`996` by :ghuser:`marecabo` +- docs: Add sleep duration to enter deep sleep action :docspr:`995` by :ghuser:`nuttytree` +- esphome: Add duration option to action start deep sleep :esphomepr:`1526` by :ghuser:`nuttytree` +- esphome: fix substitution losing track of document range :esphomepr:`1547` by :ghuser:`glmnet` +- docs: Update esp32_camera.rst :docspr:`1020` by :ghuser:`lukaszrud` +- docs: Fix format next :docspr:`1023` by :ghuser:`glmnet` +- docs: Add another project to diy.rst :docspr:`1019` by :ghuser:`shish` +- docs: Update esphome-configs URL :docspr:`1018` by :ghuser:`shish` +- docs: Icon is ignored by HA when device class is set :docspr:`1011` by :ghuser:`marecabo` +- docs: Update pid.rst :docspr:`1006` by :ghuser:`boradwell` +- docs: Mention that Hyperion.NG works with E1.31 :docspr:`975` by :ghuser:`rradar` +- esphome: Add Xiaomi Miscale v1 and v2 :esphomepr:`1368` by :ghuser:`dckiller51` (new-integration) +- docs: Add docs for Xiaomi Miscale v1 and v2 :docspr:`1021` by :ghuser:`dckiller51` +- docs: Add missing closing parenthesis in example :docspr:`1029` by :ghuser:`lepinkainen` +- docs: Update Inkplate.rst :docspr:`1026` by :ghuser:`jakommo` +- docs: typo in st7735 model number :docspr:`1025` by :ghuser:`wjcarpenter` +- docs: Fix mcp23sXX id config :docspr:`1017` by :ghuser:`jesserockz` +- docs: Update bme680.rst :docspr:`1007` by :ghuser:`wifwucite` +- docs: Sim800l dial :docspr:`1027` by :ghuser:`spilin` +- esphome: Add dial support for sim800l component :esphomepr:`1558` by :ghuser:`spilin` +- esphome: Climate IR LG -keep previous temp and fan if swing :esphomepr:`1556` by :ghuser:`Otamay` +- esphome: Vl53l0x change address :esphomepr:`1126` by :ghuser:`kkellner` (new-feature) +- docs: Update vl53l0x docs :docspr:`679` by :ghuser:`kkellner` +- esphome: tuya: Use queue for sending command messages :esphomepr:`1404` by :ghuser:`stubs12` +- esphome: Replace substitutions in substitutions first :esphomepr:`1567` by :ghuser:`edenhaus` +- esphome: Added heater to climate_ir_lg :esphomepr:`1555` by :ghuser:`Otamay` +- esphome: More yaml validation :esphomepr:`1568` by :ghuser:`glmnet` +- esphome: Add default device classes to sensor components :esphomepr:`1533` by :ghuser:`marecabo` (notable-change) +- docs: Document recurring data in uart switch :docspr:`986` by :ghuser:`gabe565` +- esphome: Add support for recurring data in uart switch :esphomepr:`1514` by :ghuser:`gabe565` +- esphome: Added samsung36 ir protocol :esphomepr:`1438` by :ghuser:`tuxBurner` +- docs: Added remote samsung36 protocol docs :docspr:`904` by :ghuser:`tuxBurner` +- docs: Add IWOOLE Table Lamp cookbook entry :docspr:`947` by :ghuser:`Deinara` +- docs: Update uart.rst example to read all available characters :docspr:`1031` by :ghuser:`RoganDawes` +- esphome: ADC fix: GPIO0 not usable as output if ADC_VCC is used :esphomepr:`1557` by :ghuser:`ferbar` +- esphome: Add constants for device classes of binary_sensor :esphomepr:`1549` by :ghuser:`marecabo` +- esphome: fix path on windows escape :esphomepr:`1573` by :ghuser:`glmnet` +- esphome: Migrate ESPColor to Color :esphomepr:`1551` by :ghuser:`SenexCrenshaw` +- docs: Migrate ESPColor to Color :docspr:`1036` by :ghuser:`SenexCrenshaw` +- esphome: Add support for the SM300D2 7-in-1 sensor module :esphomepr:`1524` by :ghuser:`moritzgloeckl` (new-integration) +- docs: Added documentation for the SM300D2 sensor :docspr:`993` by :ghuser:`moritzgloeckl` +- esphome: changed color temp from float to int :esphomepr:`1522` by :ghuser:`codyjamestechnical` +- esphome: Bump pytest-cov from 2.10.1 to 2.11.1 :esphomepr:`1483` by :ghuser:`dependabot[bot]` +- esphome: Bump colorlog from 4.6.2 to 4.7.2 :esphomepr:`1473` by :ghuser:`dependabot[bot]` +- esphome: pins: Add three new boards :esphomepr:`1576` by :ghuser:`balrog-kun` +- esphome: Bump pytest from 6.2.1 to 6.2.2 :esphomepr:`1574` by :ghuser:`dependabot[bot]` +- esphome: Bump pytz from 2020.5 to 2021.1 :esphomepr:`1575` by :ghuser:`dependabot[bot]` +- esphome: Fix for waveshare 2.13in-ttgo-b73 :esphomepr:`1543` by :ghuser:`nikito7` +- docs: Added new blogpost :docspr:`1038` by :ghuser:`pieterbrink123` +- esphome: Add min/max filters :esphomepr:`1569` by :ghuser:`gabe565` +- docs: Document new min/max filters :docspr:`1032` by :ghuser:`gabe565` +- esphome: Bump pylint from 2.6.0 to 2.7.2 :esphomepr:`1582` by :ghuser:`dependabot[bot]` +- esphome: Extend 'uart:' with 'invert:' for esp32 :esphomepr:`1586` by :ghuser:`needspeed` +- docs: Uart invert option for ESP32 :docspr:`1039` by :ghuser:`Mynasru` +- esphome: Bump platformio from 5.0.4 to 5.1.0 :esphomepr:`1581` by :ghuser:`dependabot[bot]` +- esphome: fix servo warning :esphomepr:`1591` by :ghuser:`glmnet` +- docs: add-black :docspr:`1044` by :ghuser:`glmnet` +- esphome: add-black :esphomepr:`1593` by :ghuser:`glmnet` +- esphome: MCP23XXX Refactor :esphomepr:`1560` by :ghuser:`jesserockz` (breaking-change) +- docs: Update MCP23XXX docs with interrupts and pin schemas :docspr:`1028` by :ghuser:`jesserockz` +- esphome: Improve error checking: too many component id candidates :esphomepr:`1570` by :ghuser:`glmnet` +- esphome: Schema dump :esphomepr:`1564` by :ghuser:`glmnet` +- docs: Dump schema :docspr:`1030` by :ghuser:`glmnet` +- docs: Update i2c.rst :docspr:`1043` by :ghuser:`webeling67` +- docs: Update rf_bridge.rst :docspr:`1042` by :ghuser:`samnewman86` +- esphome: Inkplate 6 Optimizations :esphomepr:`1592` by :ghuser:`Sizurka` +- docs: Fix RF Bridge link to Portisch Repo :docspr:`1045` by :ghuser:`jesserockz` +- docs: pin schema and other fixes :docspr:`1047` by :ghuser:`glmnet` +- esphome: schema-dump-pins :esphomepr:`1596` by :ghuser:`glmnet` +- docs: Adding that mpr121_id is a valid option for binary_sensor :docspr:`966` by :ghuser:`minideezel` +- esphome: change lcd clear() to clear the buffer :esphomepr:`1600` by :ghuser:`ssieb` +- esphome: PN532 - don't read extra page and fix size :esphomepr:`1565` by :ghuser:`ssieb` +- docs: schema-filters :docspr:`1052` by :ghuser:`glmnet` +- esphome: Fix component_tests config :esphomepr:`1608` by :ghuser:`madron` +- esphome: Added receive for Fujitsu ACs :esphomepr:`1577` by :ghuser:`alex-richards` +- esphome: Change COLOR_ON to be 255 values instead of 1 :esphomepr:`1594` by :ghuser:`jesserockz` +- esphome: a4988 wait 1ms when coming out of sleep :esphomepr:`1597` by :ghuser:`WeekendWarrior1` +- docs: Remove cs_pin from rc522 i2c example :docspr:`1059` by :ghuser:`jesserockz` +- esphome: Support fan speed levels :esphomepr:`1541` by :ghuser:`blejdfist` +- docs: Documentation for fan speed levels :docspr:`1056` by :ghuser:`blejdfist` +- docs: Add CLI logs section :docspr:`1060` by :ghuser:`Tmin10` +- esphome: Add option to suffix name with mac address :esphomepr:`1615` by :ghuser:`jesserockz` +- esphome: Midea climate support :esphomepr:`1328` by :ghuser:`dudanov` (new-integration) +- docs: Midea Climate support :docspr:`804` by :ghuser:`dudanov` +- docs: Add docs for `name_add_mac_suffix` config :docspr:`1058` by :ghuser:`jesserockz` +- esphome: SPI transfer fix. Use write when no miso pin is set :esphomepr:`1563` by :ghuser:`SenexCrenshaw` +- esphome: SPI Improvements :esphomepr:`1617` by :ghuser:`SenexCrenshaw` +- esphome: Add addressable_light display platform :esphomepr:`1272` by :ghuser:`justfalter` (new-integration) (notable-change) +- docs: Add docs for addressable_light display :docspr:`755` by :ghuser:`justfalter` +- esphome: Implement pulse_meter as an improvement on pulse_counter and pulse_width for meters :esphomepr:`1434` by :ghuser:`stevebaxter` (new-integration) +- esphome: e131: fix issue 1579: limitation of maximum light count :esphomepr:`1619` by :ghuser:`docteurzoidberg` +- docs: Add documentation for pulse_meter :docspr:`900` by :ghuser:`stevebaxter` +- esphome: Bump platformio from 5.1.0 to 5.1.1 :esphomepr:`1618` by :ghuser:`dependabot[bot]` +- esphome: Fix pulse-meter with device_class and black :esphomepr:`1621` by :ghuser:`jesserockz` +- esphome: Declare Color objects in main.cpp :esphomepr:`1395` by :ghuser:`kbx81` +- esphome: Add 2.13in-ttgo-b1 waveshare epaper module. :esphomepr:`1326` by :ghuser:`matikij` +- docs: Add docs for ttgo-b1 version (next branch) :docspr:`808` by :ghuser:`matikij` +- esphome: Bump flake8 from 3.8.4 to 3.9.0 :esphomepr:`1612` by :ghuser:`dependabot[bot]` +- esphome: Bundle platformio lib_deps in docker images :esphomepr:`1625` +- esphome: Bump protobuf from 3.13.0 to 3.15.6 :esphomepr:`1607` by :ghuser:`dependabot[bot]` +- esphome: Bump pyyaml from 5.3.1 to 5.4.1 :esphomepr:`1482` by :ghuser:`dependabot[bot]` +- esphome: Switch docker images to debian :esphomepr:`1626` +- esphome: Background calibration & ABC commands for SenseAir S8 :esphomepr:`1623` by :ghuser:`nmaggioni` (new-feature) +- docs: SenseAir: background calibration & ABC commands :docspr:`1066` by :ghuser:`nmaggioni` +- esphome: Add trigger for http actions to receive the status code :esphomepr:`1599` by :ghuser:`jesserockz` (new-feature) +- docs: Add docs for http_request on_response trigger :docspr:`1049` by :ghuser:`jesserockz` From a7bf56b21dd34739b26a179d534e60956892dc55 Mon Sep 17 00:00:00 2001 From: Jesse Hills <3060199+jesserockz@users.noreply.github.com> Date: Mon, 22 Mar 2021 17:36:47 +1300 Subject: [PATCH 47/47] Update supporters for 1.17.0b1 --- guides/supporters.rst | 74 ++++++++++++++++++++++++++++++------------- 1 file changed, 52 insertions(+), 22 deletions(-) diff --git a/guides/supporters.rst b/guides/supporters.rst index 99dd38928..690ac643f 100644 --- a/guides/supporters.rst +++ b/guides/supporters.rst @@ -94,7 +94,7 @@ that have made it into the `ESPHome organization's ` Author & Main Developer *********************** -- `Otto Winter (@OttoWinter) `__ - 2356 contributions +- `Otto Winter (@OttoWinter) `__ - 2361 contributions Contributors ************ @@ -113,7 +113,6 @@ Contributors - `Attila Darazs (@adarazs) `__ - 2 contributions - `adezerega (@adezerega) `__ - 1 contribution - `Andrea Donno (@adonno) `__ - 1 contribution -- `Adrian Cuzman (@adriancuzman) `__ - 2 contributions - `Johan Bloemberg (@aequitas) `__ - 6 contributions - `Anders (@ahd71) `__ - 1 contribution - `Alexander Pohl (@ahpohl) `__ - 4 contributions @@ -121,6 +120,7 @@ Contributors - `akoivist (@akoivist) `__ - 1 contribution - `Andrej Komelj (@akomelj) `__ - 3 contributions - `Alone (@al-one) `__ - 2 contributions +- `Alex (@alex-richards) `__ - 1 contribution - `Alexander Leisentritt (@Alex9779) `__ - 10 contributions - `Alexandre Danault (@AlexDanault) `__ - 1 contribution - `Alex Mekkering (@AlexMekkering) `__ - 3 contributions @@ -143,13 +143,14 @@ Contributors - `Florian Mösch (@badbadc0ffee) `__ - 10 contributions - `balk77 (@balk77) `__ - 2 contributions - `Paulus Schoutsen (@balloob) `__ - 41 contributions -- `Andrew Zaborowski (@balrog-kun) `__ - 8 contributions +- `Andrew Zaborowski (@balrog-kun) `__ - 9 contributions - `Rutger Nijhuis (@BananaPukeh) `__ - 1 contribution - `J. Nick Koston (@bdraco) `__ - 2 contributions - `Ben Suffolk (@bensuffolk) `__ - 1 contribution - `Bierchermuesli (@Bierchermuesli) `__ - 1 contribution -- `Jim Ekman (@blejdfist) `__ - 4 contributions +- `Jim Ekman (@blejdfist) `__ - 6 contributions - `Mauricio Bonani (@bonanitech) `__ - 1 contribution +- `boradwell (@boradwell) `__ - 1 contribution - `Patrik Hermansson (@bphermansson) `__ - 1 contribution - `Bram Kragten (@bramkragten) `__ - 2 contributions - `Brad Davidson (@brandond) `__ - 19 contributions @@ -165,6 +166,7 @@ Contributors - `chris-jennings (@chris-jennings) `__ - 1 contribution - `John (@CircuitSetup) `__ - 5 contributions - `Chris Debenham (@cjd) `__ - 1 contribution +- `Cody James (@codyjamestechnical) `__ - 1 contribution - `James Crook (@cooljimy84) `__ - 1 contribution - `Corban Mailloux (@corbanmailloux) `__ - 5 contributions - `Dmitry Berezovsky (@corvis) `__ - 2 contributions @@ -187,12 +189,14 @@ Contributors - `David De Sloovere (@DavidDeSloovere) `__ - 3 contributions - `David Beitey (@davidjb) `__ - 1 contribution - `David Zovko (@davidzovko) `__ - 1 contribution +- `dckiller51 (@dckiller51) `__ - 1 contribution - `Debashish Sahu (@debsahu) `__ - 1 contribution - `declanshanaghy (@declanshanaghy) `__ - 3 contributions - `deftdawg (@deftdawg) `__ - 1 contribution +- `Christiaan Blom (@Deinara) `__ - 1 contribution - `Rsan (@deltazerorsan) `__ - 1 contribution - `Mickaël Le Baillif (@demikl) `__ - 3 contributions -- `dependabot[bot] (@dependabot[bot]) `__ - 43 contributions +- `dependabot[bot] (@dependabot[bot]) `__ - 53 contributions - `Destix (@Destix) `__ - 1 contribution - `Alain Turbide (@Dilbert66) `__ - 2 contributions - `Mark (@Diramu) `__ - 1 contribution @@ -202,6 +206,7 @@ Contributors - `Marcos Pérez Ferro (@djwmarcx) `__ - 2 contributions - `Dan Mannock (@dmannock) `__ - 1 contribution - `dmkif (@dmkif) `__ - 1 contribution +- `DrZoid (@docteurzoidberg) `__ - 1 contribution - `Jiang Sheng (@doskoi) `__ - 1 contribution - `Robert Schütz (@dotlambda) `__ - 3 contributions - `Daniel Hyles (@DotNetDann) `__ - 4 contributions @@ -209,10 +214,12 @@ Contributors - `Drew Perttula (@drewp) `__ - 2 contributions - `DrRob (@DrRob) `__ - 1 contribution - `dubit0 (@dubit0) `__ - 1 contribution +- `Sergey V. DUDANOV (@dudanov) `__ - 1 contribution - `Dimitris Zervas (@dzervas) `__ - 2 contributions - `dziobson (@dziobson) `__ - 1 contribution - `Dan Jackson (@e28eta) `__ - 1 contribution - `Ermanno Baschiera (@ebaschiera) `__ - 1 contribution +- `Robert Resch (@edenhaus) `__ - 1 contribution - `Niclas Larsson (@edge90) `__ - 1 contribution - `Eenoo (@Eenoo) `__ - 1 contribution - `Erwin Kooi (@egeltje) `__ - 2 contributions @@ -230,12 +237,12 @@ Contributors - `Eric Hiller (@erichiller) `__ - 1 contribution - `Ernst Klamer (@Ernst79) `__ - 1 contribution - `escoand (@escoand) `__ - 7 contributions -- `esphomebot (@esphomebot) `__ - 15 contributions +- `esphomebot (@esphomebot) `__ - 16 contributions - `Evan Coleman (@evandcoleman) `__ - 3 contributions - `Malte Franken (@exxamalte) `__ - 2 contributions - `Fabian Affolter (@fabaff) `__ - 29 contributions - `C W (@fake-name) `__ - 2 contributions -- `Christian Ferbar (@ferbar) `__ - 2 contributions +- `Christian Ferbar (@ferbar) `__ - 3 contributions - `fkirill (@fkirill) `__ - 1 contribution - `foxsam21 (@foxsam21) `__ - 2 contributions - `Fractal147 (@Fractal147) `__ - 1 contribution @@ -249,13 +256,14 @@ Contributors - `Fritz Mueller (@fritzm) `__ - 1 contribution - `Marc Egli (@frog32) `__ - 1 contribution - `mr G1K (@G1K) `__ - 2 contributions +- `Gabe Cook (@gabe565) `__ - 2 contributions - `galagaking (@galagaking) `__ - 1 contribution - `Geoff Davis (@geoffdavis) `__ - 2 contributions - `Gerard (@gerard33) `__ - 2 contributions - `Giovanni (@Gio-dot) `__ - 2 contributions - `gitolicious (@gitolicious) `__ - 16 contributions - `The Gitter Badger (@gitter-badger) `__ - 1 contribution -- `Guillermo Ruffino (@glmnet) `__ - 202 contributions +- `Guillermo Ruffino (@glmnet) `__ - 240 contributions - `Giorgos Logiotatidis (@glogiotatidis) `__ - 1 contribution - `Germain Masse (@gmasse) `__ - 2 contributions - `Jelle Raaijmakers (@GMTA) `__ - 1 contribution @@ -283,6 +291,7 @@ Contributors - `Ivan Shvedunov (@ivan4th) `__ - 1 contribution - `Ivan Kravets (@ivankravets) `__ - 1 contribution - `Ivo-tje (@Ivo-tje) `__ - 1 contribution +- `Jakob Reiter (@jakommo) `__ - 1 contribution - `James Gao (@jamesgao) `__ - 1 contribution - `Jan Pieper (@janpieper) `__ - 2 contributions - `Jason-nz (@Jason-nz) `__ - 1 contribution @@ -291,7 +300,7 @@ Contributors - `Joshua Dadswell (@jdads1) `__ - 1 contribution - `jeff-h (@jeff-h) `__ - 2 contributions - `Jeff Rescignano (@JeffResc) `__ - 11 contributions -- `Jesse Hills (@jesserockz) `__ - 119 contributions +- `Jesse Hills (@jesserockz) `__ - 133 contributions - `Jérémy JOURDIN (@JJK801) `__ - 1 contribution - `Jonathan Jefferies (@jjok) `__ - 1 contribution - `Justin Maxwell (@jkmaxwell) `__ - 1 contribution @@ -306,20 +315,22 @@ Contributors - `Joppy (@JoppyFurr) `__ - 2 contributions - `junnikokuki (@junnikokuki) `__ - 1 contribution - `Justahobby01 (@Justahobby01) `__ - 1 contribution +- `Mike Ryan (@justfalter) `__ - 1 contribution - `Justin Gerhardt (@justin-gerhardt) `__ - 1 contribution - `Justyn Shull (@justyns) `__ - 1 contribution - `Jasper van der Neut - Stulen (@jvanderneutstulen) `__ - 2 contributions - `João Vitor M. Roma (@jvmr1) `__ - 1 contribution - `Jack Wozny (@jwozny) `__ - 1 contribution -- `Kris (@K-r-i-s-t-i-a-n) `__ - 1 contribution +- `Kris (@K-r-i-s-t-i-a-n) `__ - 2 contributions - `Harald Nagel (@k7hpn) `__ - 2 contributions - `kalebzettl (@kalebzettl) `__ - 1 contribution - `Krasimir Nedelchev (@kaykayehnn) `__ - 1 contribution - `kbouchard111 (@kbouchard111) `__ - 1 contribution -- `Keith Burzinski (@kbx81) `__ - 26 contributions +- `Keith Burzinski (@kbx81) `__ - 27 contributions - `Robert Kiss (@kepten) `__ - 2 contributions - `Kevin O'Rourke (@kevinior) `__ - 1 contribution - `kimonm (@kimonm) `__ - 1 contribution +- `Kurt Kellner (@kkellner) `__ - 1 contribution - `Klaas Schoute (@klaasnicolaas) `__ - 1 contribution - `Klarstein (@Klarstein) `__ - 3 contributions - `Kevin Lewis (@kll) `__ - 1 contribution @@ -339,20 +350,23 @@ Contributors - `Steffen Weinreich (@lairsdragon) `__ - 1 contribution - `Fredrik Lindqvist (@Landrash) `__ - 1 contribution - `lein1013 (@lein1013) `__ - 1 contribution +- `Riku Lindblad (@lepinkainen) `__ - 1 contribution - `Lazar Obradovic (@lobradov) `__ - 4 contributions -- `Joakim Sørensen (@ludeeus) `__ - 11 contributions +- `Joakim Sørensen (@ludeeus) `__ - 12 contributions - `Lukas Klass (@LukasK13) `__ - 1 contribution +- `lukaszrud (@lukaszrud) `__ - 1 contribution - `Lumpusz (@Lumpusz) `__ - 2 contributions - `Luke Fitzgerald (@lwfitzgerald) `__ - 1 contribution - `Lewis Juggins (@lwis) `__ - 1 contribution - `Michael Klamminger (@m1ch) `__ - 1 contribution - `M95D (@M95D) `__ - 1 contribution - `Marc-Antoine Courteau (@macourteau) `__ - 1 contribution +- `Massimiliano Ravelli (@madron) `__ - 1 contribution - `magnus (@magnusja) `__ - 1 contribution - `Magnus Øverli (@magnusoverli) `__ - 1 contribution - `Major Péter (@majorpeter) `__ - 2 contributions - `Marcel van der Veldt (@marcelveldt) `__ - 2 contributions -- `marecabo (@marecabo) `__ - 2 contributions +- `marecabo (@marecabo) `__ - 4 contributions - `Marvin Gaube (@margau) `__ - 4 contributions - `Martynas Griškonis (@Margriko) `__ - 1 contribution - `Mario (@mario-tux) `__ - 3 contributions @@ -361,7 +375,7 @@ Contributors - `Martin Hjelmare (@MartinHjelmare) `__ - 1 contribution - `MartinWelsch (@MartinWelsch) `__ - 1 contribution - `MasterTim17 (@MasterTim17) `__ - 1 contribution -- `matikij (@matikij) `__ - 1 contribution +- `matikij (@matikij) `__ - 2 contributions - `Michel Marti (@matoxp) `__ - 4 contributions - `Maurice Schleußinger (@maurice-schleussinger) `__ - 1 contribution - `mbo18 (@mbo18) `__ - 1 contribution @@ -374,6 +388,7 @@ Contributors - `micw (@micw) `__ - 1 contribution - `Pauline Middelink (@middelink) `__ - 2 contributions - `mikosoft83 (@mikosoft83) `__ - 1 contribution +- `Minideezel (@minideezel) `__ - 1 contribution - `Matthew Edwards (@mje-nz) `__ - 1 contribution - `Maarten (@mjkl-gh) `__ - 1 contribution - `mjoshd (@mjoshd) `__ - 2 contributions @@ -382,6 +397,7 @@ Contributors - `mnaz (@mnaz) `__ - 1 contribution - `Michael Nieß (@mniess) `__ - 1 contribution - `Matt N. (@mnoorenberghe) `__ - 1 contribution +- `Moritz Glöckl (@moritzgloeckl) `__ - 1 contribution - `morph027 (@morph027) `__ - 1 contribution - `Matthew Pettitt (@mpettitt) `__ - 1 contribution - `Ryan Matthews (@mrrsm) `__ - 1 contribution @@ -395,14 +411,16 @@ Contributors - `Oskar Napieraj (@napieraj) `__ - 7 contributions - `Bergont Nicolas (@nbergont) `__ - 1 contribution - `Nebula (@nebula-it) `__ - 1 contribution +- `needspeed (@needspeed) `__ - 1 contribution - `nepozs (@nepozs) `__ - 1 contribution - `nickrout (@nickrout) `__ - 1 contribution - `Nick Whyte (@nickw444) `__ - 3 contributions - `nicuh (@nicuh) `__ - 1 contribution -- `nikito7 (@nikito7) `__ - 2 contributions +- `nikito7 (@nikito7) `__ - 3 contributions - `Zvonimir Haramustek (@nitko12) `__ - 1 contribution - `Nikolay Kitanov (@nkitanov) `__ - 1 contribution - `nldroid (@nldroid) `__ - 2 contributions +- `Niccolò Maggioni (@nmaggioni) `__ - 1 contribution - `Alex (@nnmalex) `__ - 1 contribution - `ffabi (@norges) `__ - 2 contributions - `Greg Johnson (@notgwj) `__ - 1 contribution @@ -413,6 +431,7 @@ Contributors - `Omar Ghader (@omarghader) `__ - 1 contribution - `Oncleben31 (@oncleben31) `__ - 1 contribution - `Oscar Bolmsten (@oscar-b) `__ - 4 contributions +- `Otamay (@Otamay) `__ - 2 contributions - `Pack3tL0ss (@Pack3tL0ss) `__ - 1 contribution - `Panuruj Khambanonda (PK) (@panuruj) `__ - 2 contributions - `Paul Deen (@PaulAntonDeen) `__ - 2 contributions @@ -423,7 +442,7 @@ Contributors - `perjury (@perjury) `__ - 1 contribution - `Philip Rosenberg-Watt (@PhilRW) `__ - 1 contribution - `phjr (@phjr) `__ - 2 contributions -- `pieterbrink123 (@pieterbrink123) `__ - 1 contribution +- `pieterbrink123 (@pieterbrink123) `__ - 2 contributions - `pille (@pille) `__ - 2 contributions - `pixiandreas (@pixiandreas) `__ - 1 contribution - `Peter Kuehne (@pkuehne) `__ - 5 contributions @@ -457,19 +476,21 @@ Contributors - `Rob de Jonge (@robdejonge) `__ - 1 contribution - `Robin Smidsrød (@robinsmidsrod) `__ - 2 contributions - `RockBomber (@RockBomber) `__ - 1 contribution +- `RoganDawes (@RoganDawes) `__ - 1 contribution - `Jérôme W. (@RomRider) `__ - 1 contribution - `Robbie Page (@rorpage) `__ - 1 contribution -- `rradar (@rradar) `__ - 7 contributions +- `rradar (@rradar) `__ - 8 contributions - `rspaargaren (@rspaargaren) `__ - 7 contributions - `Rubén G. (@rubengargar) `__ - 1 contribution - `rudgr (@rudgr) `__ - 1 contribution - `ryanalden (@ryanalden) `__ - 2 contributions - `Ryan Nazaretian (@ryannazaretian) `__ - 1 contribution +- `samnewman86 (@samnewman86) `__ - 1 contribution - `Sascha (@Scarbous) `__ - 1 contribution - `Nils Schulte (@Schnilz) `__ - 1 contribution - `Ville Skyttä (@scop) `__ - 5 contributions - `sekkr1 (@sekkr1) `__ - 1 contribution -- `SenexCrenshaw (@SenexCrenshaw) `__ - 14 contributions +- `SenexCrenshaw (@SenexCrenshaw) `__ - 17 contributions - `Sergio (@sergio303) `__ - 2 contributions - `Sergio Mayoral Martínez (@sermayoral) `__ - 3 contributions - `sethcohn (@sethcohn) `__ - 1 contribution @@ -478,18 +499,21 @@ Contributors - `shaeed (@shaeed) `__ - 1 contribution - `shbatm (@shbatm) `__ - 1 contribution - `sherbang (@sherbang) `__ - 4 contributions +- `Shish (@shish) `__ - 2 contributions - `SiliconAvatar (@SiliconAvatar) `__ - 1 contribution - `sillyfrog (@sillyfrog) `__ - 1 contribution -- `Derek Hageman (@Sizurka) `__ - 2 contributions +- `Derek Hageman (@Sizurka) `__ - 3 contributions - `Stephen Tierney (@sjtrny) `__ - 1 contribution - `Niklas Wagner (@Skaronator) `__ - 9 contributions - `spattinson (@spattinson) `__ - 1 contribution +- `spilin (@spilin) `__ - 1 contribution - `square99 (@square99) `__ - 2 contributions - `Paul Krischer (@SqyD) `__ - 1 contribution - `sredfern (@sredfern) `__ - 2 contributions - `srg74 (@srg74) `__ - 1 contribution -- `Samuel Sieb (@ssieb) `__ - 15 contributions -- `stubs12 (@stubs12) `__ - 2 contributions +- `Samuel Sieb (@ssieb) `__ - 18 contributions +- `Steve Baxter (@stevebaxter) `__ - 1 contribution +- `stubs12 (@stubs12) `__ - 3 contributions - `Jordan Vohwinkel (@sublime93) `__ - 1 contribution - `Marcel Feix (@Syndlex) `__ - 2 contributions - `Teemu Mikkonen (@T3m3z) `__ - 2 contributions @@ -516,6 +540,7 @@ Contributors - `Tijs-B (@Tijs-B) `__ - 1 contribution - `Tim P (@timpur) `__ - 2 contributions - `Tim Savage (@timsavage) `__ - 7 contributions +- `Max Efremov (@Tmin10) `__ - 1 contribution - `Philipp Tölke (@toelke) `__ - 1 contribution - `Tom Brien (@TomBrien) `__ - 1 contribution - `TomFahey (@TomFahey) `__ - 2 contributions @@ -531,6 +556,7 @@ Contributors - `tubalainen (@tubalainen) `__ - 3 contributions - `Tuckie (@Tuckie) `__ - 1 contribution - `Alexey Vlasov (@turbulator) `__ - 1 contribution +- `Seppel Hardt (@tuxBurner) `__ - 1 contribution - `tyomikh (@tyomikh) `__ - 1 contribution - `ukewea (@ukewea) `__ - 1 contribution - `Vc (@Valcob) `__ - 4 contributions @@ -541,10 +567,14 @@ Contributors - `vxider (@Vxider) `__ - 7 contributions - `warpzone (@warpzone) `__ - 1 contribution - `Wauter (@Wauter) `__ - 3 contributions +- `webeling67 (@webeling67) `__ - 1 contribution +- `WeekendWarrior1 (@WeekendWarrior1) `__ - 1 contribution - `Ian Wells (@wellsi) `__ - 1 contribution - `Werner Beroux (@wernight) `__ - 1 contribution +- `wifwucite (@wifwucite) `__ - 1 contribution - `Wilmar den Ouden (@wilmardo) `__ - 1 contribution - `Emil Hesslow (@WizKid) `__ - 1 contribution +- `WJCarpenter (@wjcarpenter) `__ - 1 contribution - `Artur 'Wodor' Wielogorski (@wodor) `__ - 1 contribution - `Rick van Hattem (@WoLpH) `__ - 2 contributions - `wutr (@wutr) `__ - 1 contribution @@ -559,4 +589,4 @@ Contributors - `San (@zhujunsan) `__ - 2 contributions - `Christian Zufferey (@zuzu59) `__ - 1 contribution -*This page was last updated February 20, 2021.* +*This page was last updated March 22, 2021.*