From a89a85a4a50d93ef1723e395aed5de1586eca916 Mon Sep 17 00:00:00 2001 From: Samuel Sieb Date: Tue, 12 Nov 2019 13:23:56 -0800 Subject: [PATCH 001/108] document the new has_position parameter for the template cover (#410) * document the new has_position parameter for the template cover * better description Co-authored-by: Samuel Sieb --- components/cover/template.rst | 3 +++ 1 file changed, 3 insertions(+) diff --git a/components/cover/template.rst b/components/cover/template.rst index c58c29ce2..97dd4a354 100644 --- a/components/cover/template.rst +++ b/components/cover/template.rst @@ -58,6 +58,9 @@ Configuration variables: - **assumed_state** (*Optional*, boolean): Whether the true state of the cover is not known. This will make the Home Assistant frontend show buttons for both OPEN and CLOSE actions, instead of hiding one of them. Defaults to ``false``. +- **has_position** (*Optional*, boolean): Whether this cover will publish its position as a floating point number. + By default (``false``), the cover only publishes OPEN/CLOSED position. + By setting this to true you can also send any position in between using the publish action. - **tilt_action** (*Optional*, :ref:`Action `): The action that should be performed when the remote (like Home Assistant's frontend) requests the cover be set to a specific tilt position. From 6b5d981c53e99b29955a10a84d1fe596db5923f9 Mon Sep 17 00:00:00 2001 From: Otto Winter Date: Sun, 17 Nov 2019 23:37:35 +0100 Subject: [PATCH 002/108] Bump version to v1.14.3 --- Doxygen | 2 +- Makefile | 2 +- _static/version | 2 +- changelog/v1.14.0.rst | 39 +++++++++++++++++++++++++++++++++++++++ conf.py | 2 +- 5 files changed, 43 insertions(+), 4 deletions(-) diff --git a/Doxygen b/Doxygen index c1934065a..86ab46934 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.14.2 +PROJECT_NUMBER = 1.14.3 # Using the PROJECT_BRIEF tag one can provide an optional one line description # for a project that appears at the top of each page and should give viewer a diff --git a/Makefile b/Makefile index 0722e7264..d721b1c43 100644 --- a/Makefile +++ b/Makefile @@ -1,5 +1,5 @@ ESPHOME_PATH = ../esphome -ESPHOME_REF = v1.14.2 +ESPHOME_REF = v1.14.3 .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 a32d5a6ad..282f354f4 100644 --- a/_static/version +++ b/_static/version @@ -1 +1 @@ -1.14.2 \ No newline at end of file +1.14.3 \ No newline at end of file diff --git a/changelog/v1.14.0.rst b/changelog/v1.14.0.rst index 29db75eab..e13899a63 100644 --- a/changelog/v1.14.0.rst +++ b/changelog/v1.14.0.rst @@ -146,6 +146,45 @@ Release 1.14.2 - November 3 - esphome: Fix weird ESP8266 wifi crashes :esphomepr:`831` +Release 1.14.3 - November 17 +---------------------------- + +- docs: Fix typo: as3935 sensor docs :docspr:`401` by :ghuser:`TheJulianJES` +- docs: Remove references to scan_interval :docspr:`400` by :ghuser:`marrold` +- esphome: ESP8266 remove default opmode check :esphomepr:`835` +- esphome: WiFi AP apply manual ip settings :esphomepr:`836` +- esphome: Fix ESP32 rotary encoder :esphomepr:`834` +- esphome: Fix homeassistant.service schema lambda :esphomepr:`833` +- esphome: Update platformio libraries :esphomepr:`837` +- docs: Update brilliant-mirabella-genio-smart-plugs.rst - Added Gosund… :docspr:`402` by :ghuser:`Taigar2015` +- esphome: Update variable in scheduler :esphomepr:`838` +- esphome: Fix sun calculations for negative sun declination :esphomepr:`839` +- docs: Update diy.rst :docspr:`404` by :ghuser:`kvvoff` +- docs: DIY Examples : add Custom ESPHome for Wofea Alarm :docspr:`405` by :ghuser:`nbergont` +- docs: Update Mirabella Genio red LED GPIO :docspr:`406` by :ghuser:`ankycooper` +- esphome: fix missing checks of is_playing condition :esphomepr:`844` by :ghuser:`glmnet` +- docs: Update lcd_display.rst :docspr:`411` by :ghuser:`Destix` +- esphome: Add wifi output_power setting :esphomepr:`853` +- esphome: Add missing state attribute :esphomepr:`851` +- esphome: Fix neopixelbus missing method pins :esphomepr:`848` +- esphome: Fix sensor force_update native API :esphomepr:`847` +- esphome: Web server CORS headers :esphomepr:`840` +- esphome: Check DHT sensor exists before publishing :esphomepr:`850` +- esphome: Adjust some units :esphomepr:`852` +- esphome: Fix PZEM004T v2 :esphomepr:`846` +- esphome: Mark python 3.5 support deprecated :esphomepr:`849` +- docs: document the new has_position parameter for the template cover :docspr:`410` by :ghuser:`ssieb` +- esphome: add position reporting to the template cover :esphomepr:`821` by :ghuser:`ssieb` +- esphome: Atm90e32 pf fix :esphomepr:`841` by :ghuser:`Diramu` +- esphome: Switch to 115200 baud upload if 460800 fails :esphomepr:`856` +- esphome: Fix logger uart conflict check :esphomepr:`858` by :ghuser:`brandond` +- esphome: Tuya: Fix init sequence and handle wifi test command :esphomepr:`820` by :ghuser:`brandond` +- docs: add Topersun smart plug :docspr:`413` by :ghuser:`hmoffatt` +- esphome: Improve WiFi disconnect messages :esphomepr:`857` +- esphome: Fix MQTT python 3 stringify IPAddress Type :esphomepr:`864` +- esphome: Revert ESP32 BLE Tracker defaults :esphomepr:`863` +- esphome: Change ESP8266 default wifi output power :esphomepr:`862` + Notable Changes & New Features ------------------------------ diff --git a/conf.py b/conf.py index ea4d41ad1..c39f2f6d4 100644 --- a/conf.py +++ b/conf.py @@ -72,7 +72,7 @@ author = 'Otto Winter' # The short X.Y version. version = '1.14' # The full version, including alpha/beta/rc tags. -release = '1.14.2' +release = '1.14.3' # The language for content autogenerated by Sphinx. Refer to documentation # for a list of supported languages. From 7533a46dc01f6a18ae64b8725adae996140a454f Mon Sep 17 00:00:00 2001 From: Alexey Vlasov Date: Wed, 20 Nov 2019 19:49:15 +0700 Subject: [PATCH 003/108] Added Android Beacon MQTT app (#417) --- components/esp32_ble_beacon.rst | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/components/esp32_ble_beacon.rst b/components/esp32_ble_beacon.rst index 7e7bea133..d51e82306 100644 --- a/components/esp32_ble_beacon.rst +++ b/components/esp32_ble_beacon.rst @@ -63,7 +63,8 @@ this should already work from the bluetooth screen (not tested), on Android, you For using these beacons to track the location of your phone, you will need to use another app. For example, I used `this guide by the owntracks `__ app to let my Home Automation system -know when I'm home or away. +know when I'm home or away. Another nice Android app is `Beacon MQTT `__. +It can work with multiple beacons simultaneously. .. figure:: images/esp32_ble_beacon-ibeacon.png :align: center From 2e0c149f986d046fe51e37b36d89c7ad906c5e36 Mon Sep 17 00:00:00 2001 From: Otto Winter Date: Wed, 20 Nov 2019 17:20:18 +0100 Subject: [PATCH 004/108] Remove stop_bits 2 reference PZEM004T --- components/sensor/pzem004t.rst | 1 - 1 file changed, 1 deletion(-) diff --git a/components/sensor/pzem004t.rst b/components/sensor/pzem004t.rst index 956d6aa09..e5e663dd9 100644 --- a/components/sensor/pzem004t.rst +++ b/components/sensor/pzem004t.rst @@ -34,7 +34,6 @@ to some pins on your board and the baud rate set to 9600. tx_pin: D1 rx_pin: D2 baud_rate: 9600 - stop_bits: 2 sensor: - platform: pzem004t From d5f3b8b3d60b344979e5a5bc13ac94a6057ab9b7 Mon Sep 17 00:00:00 2001 From: Guillermo Ruffino Date: Fri, 22 Nov 2019 10:45:16 -0300 Subject: [PATCH 005/108] dfplayer updates (#421) --- components/dfplayer.rst | 30 ++++++++++++++++-------------- 1 file changed, 16 insertions(+), 14 deletions(-) diff --git a/components/dfplayer.rst b/components/dfplayer.rst index 4e28a569e..115654dab 100644 --- a/components/dfplayer.rst +++ b/components/dfplayer.rst @@ -6,7 +6,7 @@ DF-Player mini :image: crosshair-gps.png The ``dfplayer`` (`datasheet `__), component -allows you to play sound and music stored in SD card. +allows you to play sound and music stored in an SD card or USB flash drive. .. figure:: images/dfplayer-full.jpg :align: center @@ -20,10 +20,13 @@ in your configuration. Overview -------- -The module can be powered by the 3V output of an NodeMCU and a powered speaker connected to -the modules ``DAC_R``, ``DAC_I`` and ``GND`` . You can connect only 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``. +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 +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 +the pins ``SPK_1`` and ``SPK_2`` should be connected to one passive speaker and a 5V 1A power supply +will be required. .. code-block:: yaml @@ -150,9 +153,7 @@ Configuration options: ``dfplayer.set_device`` Action ------------------------------ -Changes the device in use. Valid values are ``TF_CARD`` and ``USB``. *Note: only* ``TF_CARD`` -*is tested. If you connect a USB stick and found it works please create an issue at ESPHome -GitHub*. +Changes the device in use. Valid values are ``TF_CARD`` and ``USB``. .. code-block:: yaml @@ -340,7 +341,7 @@ Sample code folder: !lambda 'return folder;' file: !lambda 'return file;' - - service: dfplayer_play_loo_folder + - service: dfplayer_play_loop_folder variables: folder: int then: @@ -348,12 +349,13 @@ Sample code folder: !lambda 'return folder;' loop: True - - service: dfplayer_set_device - variables: - device: int + - service: dfplayer_set_device_tf then: - - dfplayer.set_device: - device: TF_CARD + - dfplayer.set_device: TF_CARD + + - service: dfplayer_set_device_usb + then: + - dfplayer.set_device: USB - service: dfplayer_set_volume variables: From ad16db378901d5ae3dc0ed997f93007913edacef Mon Sep 17 00:00:00 2001 From: Guillaume DELVIT Date: Fri, 29 Nov 2019 18:16:51 +0100 Subject: [PATCH 006/108] Fix time id conflict (#418) correct time id as it is not authorized with new version --- cookbook/display_time_temp_oled.rst | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/cookbook/display_time_temp_oled.rst b/cookbook/display_time_temp_oled.rst index 115b66d2c..45d6bd083 100644 --- a/cookbook/display_time_temp_oled.rst +++ b/cookbook/display_time_temp_oled.rst @@ -41,7 +41,7 @@ Get the time from Home Assistant to sync the onboard real-time-clock. time: - platform: homeassistant - id: time + id: esptime Getting Temperature ******************* @@ -114,7 +114,7 @@ Note your ``address`` and ``model`` might be different, use the scan option to f it.printf(64, 0, id(font1), TextAlign::TOP_CENTER, "Mitt Smarta Hus"); // Print time in HH:MM format - it.strftime(0, 60, id(font2), TextAlign::BASELINE_LEFT, "%H:%M", id(time).now()); + it.strftime(0, 60, id(font2), TextAlign::BASELINE_LEFT, "%H:%M", id(esptime).now()); // Print inside temperature (from homeassistant sensor) if (id(inside_temperature).has_state()) { From b3d811d5a31809f634f06b08624004bbdaa7e7e7 Mon Sep 17 00:00:00 2001 From: Ben Suffolk Date: Fri, 29 Nov 2019 17:27:26 +0000 Subject: [PATCH 007/108] Cookbook for Sonoff Light Switches (#407) * Cookbook for Sonoff Light Switches Cookbook for various Sonoff Light Switch options including Basic, Dual and T1-3 * Removed references to myself All references to I have been removed and re worded into a more generic text * Fixed Formatting issues to Pass Travis Checks * Update cookbook/sonoff-basic-light-switch.rst Co-Authored-By: Otto Winter * Update cookbook/sonoff-dual-light-switch.rst Co-Authored-By: Otto Winter * Update cookbook/sonoff-dual-light-switch.rst Co-Authored-By: Otto Winter * Update cookbook/sonoff-dual-light-switch.rst Co-Authored-By: Otto Winter * Update cookbook/sonoff-dual-light-switch.rst Co-Authored-By: Otto Winter * Update cookbook/sonoff-dual-light-switch.rst Co-Authored-By: Otto Winter * Update cookbook/sonoff-dual-light-switch.rst Co-Authored-By: Otto Winter * Update cookbook/sonoff-dual-light-switch.rst Co-Authored-By: Otto Winter * Update cookbook/sonoff-dual-light-switch.rst Co-Authored-By: Otto Winter * YAML updates Removed fast_connect, UART swotches from Dual R1, and reference to an issue that no longer exists --- cookbook/sonoff-basic-light-switch.rst | 170 +++++++++++++++++ cookbook/sonoff-dual-light-switch.rst | 251 +++++++++++++++++++++++++ cookbook/sonoff-light-switch.rst | 24 +++ cookbook/sonoff-t1-3.rst | 244 ++++++++++++++++++++++++ images/light_switch.png | Bin 0 -> 10052 bytes images/sonoff_1t_t3.png | Bin 0 -> 15305 bytes index.rst | 1 + 7 files changed, 690 insertions(+) create mode 100644 cookbook/sonoff-basic-light-switch.rst create mode 100644 cookbook/sonoff-dual-light-switch.rst create mode 100644 cookbook/sonoff-light-switch.rst create mode 100644 cookbook/sonoff-t1-3.rst create mode 100644 images/light_switch.png create mode 100644 images/sonoff_1t_t3.png diff --git a/cookbook/sonoff-basic-light-switch.rst b/cookbook/sonoff-basic-light-switch.rst new file mode 100644 index 000000000..b9b0bdb19 --- /dev/null +++ b/cookbook/sonoff-basic-light-switch.rst @@ -0,0 +1,170 @@ +DIY Light switch using a Sonoff Basic +===================================== + +.. seo:: + :description: An example of how to integrate a light switch into Home Assistant using ESPHome + :image: sonoff_light_switch.png + :keywords: Relay, Sonoff Basic, Sonoff Dual Dual R1, Light, HASS, Home Assistant, ESPHome + +.. note:: + + This is a DIY solution, and you will need to have some knowledge of electrical wiring and enough + capabilities to do this work safely. + + The author, and the ESPHome team, take no responsibility for any actions, injuries or outcomes + from following this guide. + + In some countries you may need specific qualifications before you can carry out such work in + a residentaial property. + +Background +---------- + +Moving your entire house to smart lighting can end up being very expense, for instance if you have a +light fitting with 5 lamps in it thats 5 expensive smart bulbs to buy just for one room! Smart bulbs +clearly have some great advantages, dimmable, colour temperature or even full colour changing. What +if all you're after is a cost effective way to turn them on and off? + +The ideal solution would be to reaplce the light switch with one that can be controlled by home +assistant, whilst retaining the ease of use of a standard light that would also continue to work if +the network went down, or home assistant failed etc. + +It turns out Sonoff do exactly this product, it called a T1-UK (other country options available), +however you soon found the touch aspect of them might not 'feel right' and certainly might not get the +approval of other members of your household. However if this solution apeals to you, check out the +:doc:`Cookbook guide for T1/T2/T3` + +The other option to consider is a standard '2 way' light switch (like you might have on an upstairs +/ downstairs control in your house) but using relays for the second switch. For many this will have +the disadvantage that if you remotely changed the light status the switch is then 'upside down'. + +The Solution +------------ + +Use a 'retractive' style light switch. That is one that is spring loaded and so always returns to the +'off' position. It's effectively a push button, that looks like a light switch. Combining this with a +Sonoff Basic gives you the ideal solution for somewhere around £5. Thats much cheaper than buying lots +of expensive smart bulbs, but of course you only get on / off control. + +You will have several potential hurdles to overcome: + +1. The first is that you do need to have a neutral at the location of the Sonoff. Many houses will not have + this as standard at the light switch. + +2. You need enough space to accomodate your Sonoff Basic at your chosen location. + +If you're lucky most of the locations will have plasterboard walls, and you will be able to simply drop a neutral +wire down the inside of the wall to the lights switch (where you locate the Sonoff). + +Also, if you have plasterboard walls, most of the light switch back boxes are the plastic dry lining style boxes. +This can come in useful because if you remove the PCB from the plastic case it actually fits in the back box nicely. + +.. warning:: + + If you plan to take the pcb out of the plastic case you need to make sure its properly insulated, and that the back + box is deep enough to hold the PCB as well as the switch. You should also insulate the PCB, for instance by dropping it + in a heavy duty glue lined heat shrink sleeve. + + **The PCB has mains electricity flowing through it, if you are in any doubt about your capabilities do not attempt to do + this.** + +If you have a light switch in a brick wall, an option might be to place the Sonoff Basic above the light in the ceiling void, +and use the cable that ran from the light to the switch as a low voltage cable to connect the Sonoff GPIO. + +.. warning:: + + If you are going to reuse existing wiring to connect to the GPIO, you must make sure its connected directly to the switch + and does not have mains voltage on it from another circuit. + +Implementation +-------------- + +So having established the pitfalls that you need to overcome lets crack on with making this work. + +Please make sure you have read up about :doc:`the Sonoff Basic and how to flash it with ESPHome `. +As that won't be covered here.Also make sure you know your way around a soldering iron and can find the relevant information +about the location of the GPIO pins on the Sonoff Basic if you need to. + +If you have a Sonoff Basic V1 devices GPOI14 is alredy presented on a pin header on the PCB next to the programing pins. +On the V2 and V3 PCBs, there is a solder pad underneath the PCB that will let you get at this GPIO. + +You have 2 choices when it comes to picking which GPIO to use. GPIO0 or GPIO14. GPIO0 is used by the push button switch on the +the PCB so you will need to locate the right pin on the switch and solder a wire onto it if you're going to use that one. Whichever +one you pick, you will also need to use the ground or 0v pin for the other side of the switch. Once you have soldered your wires +into palce, a handy tip is to add a drop of glue over the wire, a little way away from the solder joint, so give some strain relief +to the joint. + +Now you have a pair of wires from the GPIO and 0v to your retractive switch lets look at the code. + +.. code-block:: yaml + + esphome: + name: my_ls + platform: ESP8266 + board: esp01_1m + + wifi: + ssid: !secret wifi_ssid + password: !secret wifi_password + + logger: + + api: + + ota: + + binary_sensor: + - platform: gpio + pin: + number: GPIO14 + mode: INPUT_PULLUP + inverted: True + id: button_1 + on_press: + then: + - light.toggle: light_1 + + - platform: status + name: "My LS Status" + + output: + - platform: gpio + pin: GPIO12 + id: relay_1 + + light: + - platform: binary + name: "My Light" + id: light_1 + output: relay_1 + + status_led: + pin: + number: GPIO13 + inverted: yes + +In the above code block, there is a *secrets.yaml* file so that you have just one place to change wifi +details for all your devices. + +Although not visible day to day, there is also the status LED configured so that it can be used when setting +up / debugging. Also a configured binary sensor to give status incase you want to perform an action / alert +if the light switch disconnects for any reason. + +.. note:: + + If you wante to use a pull cord switch (in a bathroom for instance) that works like a standard switch and + changes state each pull (as opposed to a retractive switch that you press and let go) then you can change + a single line *on_press:* to *on_state:* which will trigger the light toggle everytime the state of the + switch changes. + + If you do this its important that you do not use GPIO0, otherwise if the device reboots and the switch happens + to be in the closed state the Sonoff will boot into flash mode and not work. + + + +See Also +-------- + +- :doc:`/cookbook/sonoff-light-switch` +- :doc:`/guides/automations` +- :doc:`/devices/sonoff_basic` diff --git a/cookbook/sonoff-dual-light-switch.rst b/cookbook/sonoff-dual-light-switch.rst new file mode 100644 index 000000000..37c79a30e --- /dev/null +++ b/cookbook/sonoff-dual-light-switch.rst @@ -0,0 +1,251 @@ +DIY Light switch using a Sonoff Dual +==================================== + +.. seo:: + :description: An example of how to integrate a dual light switch into Home Assistant using ESPHome + :image: sonoff_light_switch.png + :keywords: Relay, Sonoff Dual Dual R1, Light, HASS, Home Assistant, ESPHome + +.. note:: + + This is a DIY solution, and you will need to have some knowledge of electrical wiring and enough + capabilities to do this work safely. + + The author, and the ESPHome team, take no responsibility for any actions, injuries or outcomes + from following this guide. + + In some countries you may need specific qualifications before you can carry out such work in + a residentaial property. + +Please read up on :doc:`/cookbook/sonoff-basic-light-switch` to get the background and principals of +the this project. Its all basically the same, but with a double switch. + +So we will be using GPIO4 and GPIO14 for the two retractive switches, again they will both short to 0v +when the switch is clicked. + +R1 +-- + +The R1 version of the Dual controls the relays via the UART, so the code gets a bit complex here. + +.. code-block:: yaml + + esphome: + name: dual_ls + platform: ESP8266 + board: esp01_1m + + wifi: + ssid: !secret wifi_ssid + password: !secret wifi_password + + logger: + baud_rate: 0 + + # Enable Home Assistant API + api: + + ota: + + uart: + tx_pin: GPIO01 + rx_pin: GPIO03 + baud_rate: 19200 + + switch: + - platform: template + id: relay_1 + turn_on_action: + if: + condition: + switch.is_off: relay_2 + then: + - uart.write: [0xA0, 0x04, 0x01, 0xA1] + else: + - uart.write: [0xA0, 0x04, 0x03, 0xA1] + turn_off_action: + if: + condition: + switch.is_off: relay_2 + then: + - uart.write: [0xA0, 0x04, 0x00, 0xA1] + else: + - uart.write: [0xA0, 0x04, 0x02, 0xA1] + optimistic: true + + - platform: template + id: relay_2 + turn_on_action: + if: + condition: + switch.is_off: relay_1 + then: + - uart.write: [0xA0, 0x04, 0x02, 0xA1] + else: + - uart.write: [0xA0, 0x04, 0x03, 0xA1] + turn_off_action: + if: + condition: + switch.is_off: relay_1 + then: + - uart.write: [0xA0, 0x04, 0x00, 0xA1] + else: + - uart.write: [0xA0, 0x04, 0x01, 0xA1] + optimistic: true + + binary_sensor: + - platform: gpio + pin: + number: GPIO4 + mode: INPUT_PULLUP + inverted: True + id: button_1 + on_press: + then: + - light.toggle: light_1 + + - platform: gpio + pin: + number: GPIO14 + mode: INPUT_PULLUP + inverted: True + id: button_2 + on_press: + then: + - light.toggle: light_2 + + - platform: status + name: "Dual LS Status" + + status_led: + pin: + number: GPIO13 + inverted: yes + + output: + - platform: template + type: binary + id: out_1 + write_action: + if: + condition: + light.is_on: light_1 + then: + - switch.turn_on: relay_1 + else: + - switch.turn_off: relay_1 + + - platform: template + type: binary + id: out_2 + write_action: + if: + condition: + light.is_on: light_2 + then: + - switch.turn_on: relay_2 + else: + - switch.turn_off: relay_2 + + light: + - platform: binary + name: "Dual L1" + id: light_1 + output: out_1 + + - platform: binary + name: "Dual L2" + id: light_2 + output: out_2 + + +In the above code block, there is a *secrets.yaml* file so that you have just one place to change wifi +details for all your devices. + +The logger baud_rate: 0 is required to make sure the logged does not send any data over the UART or it would +mess with the relays. + +Although not visible day to day, there is also the status LED configured so that it can be used when setting +up / debugging. Also a configured binary sensor to give status incase you want to perform an action / alert +if the light switch disconnects for any reason. + +R2 +-- + +This one is a lot simpler as it uses real GPIO for its relays. Please note this is untested, but should work! +Its basically the same as the :doc:`T2 ` + +.. code-block:: yaml + + esphome: + name: dual_ls + platform: ESP8266 + board: esp01_1m + + wifi: + ssid: !secret wifi_ssid + password: !secret wifi_password + + logger: + + api: + + ota: + + binary_sensor: + - platform: gpio + pin: + number: GPIO0 + mode: INPUT_PULLUP + inverted: True + id: button + on_press: + then: + - light.toggle: light_1 + + - platform: gpio + pin: + number: GPIO14 + mode: INPUT_PULLUP + inverted: True + id: button + on_press: + then: + - light.toggle: light_2 + + - platform: status + name: "Dual LS Status" + + output: + - platform: gpio + pin: GPIO12 + id: relay_1 + + - platform: gpio + pin: GPIO5 + id: relay_2 + + light: + - platform: binary + name: "Dual L1" + id: light_1 + output: relay_1 + + - platform: binary + name: "Dual L2" + id: light_2 + output: relay_2 + + status_led: + pin: + number: GPIO13 + inverted: yes + + + +See Also +-------- + +- :doc:`/cookbook/sonoff-light-switch` +- :doc:`/guides/automations` +- :doc:`/devices/sonoff_basic` diff --git a/cookbook/sonoff-light-switch.rst b/cookbook/sonoff-light-switch.rst new file mode 100644 index 000000000..c5e72a171 --- /dev/null +++ b/cookbook/sonoff-light-switch.rst @@ -0,0 +1,24 @@ +Sonoff Light switch options +=========================== + +.. seo:: + :description: A series of options on using Sonoff devices as a light switch within ESPHome + :image: sonoff_light_switch.jpg + :keywords: Relay, Sonoff Basic, Sonoff Dual Dual R1, Light, HASS, Home Assistant, ESPHome + +There are a number of options for using Sonoff Devices as light switches, including purpose built ones +like the T1/2/3 Series + +.. imgtable:: + + Sonoff T1/T2/T3, cookbook/sonoff-T1-3, sonoff_1t_t3.png + Sonoff Basic, cookbook/sonoff-basic-light-switch, sonoff_basic.jpg + Sonoff Dual, cookbook/sonoff-dual-light-switch, sonoff_dual_r2.jpg + +See Also +-------- + +- :doc:`/guides/automations` +- :doc:`/devices/sonoff_basic` + + diff --git a/cookbook/sonoff-t1-3.rst b/cookbook/sonoff-t1-3.rst new file mode 100644 index 000000000..bc2f2d72b --- /dev/null +++ b/cookbook/sonoff-t1-3.rst @@ -0,0 +1,244 @@ +Sonoff T1/T2/T3 UK +================== + +.. seo:: + :description: An example of how to integrate a T1 T2 or T3 Sonoff light switch into Home Assistant + using ESPHome + :image: sonoff_1t_t3.png + :keywords: Relay, Sonoff Basic, Sonoff Dual Dual R1, Light, HASS, Home Assistant, ESPHome + +Please make sure you have read up about :doc:`the Sonoff T1 / T2 / T3 and how to flash it with ESPHome `. + +So lets get straight on with the code + +T1 +-- + +.. code-block:: yaml + + esphome: + name: my_t1 + platform: ESP8266 + board: esp01_1m + + wifi: + ssid: !secret wifi_ssid + password: !secret wifi_password + use_address: xxx.xxx.xxx.xxx + + logger: + + api: + + ota: + + binary_sensor: + - platform: gpio + pin: + number: GPIO0 + mode: INPUT_PULLUP + inverted: True + id: button + on_press: + then: + - light.toggle: light_1 + + - platform: status + name: "T1 Status" + + output: + - platform: gpio + pin: GPIO12 + id: relay_1 + + light: + - platform: binary + name: "T1" + id: light_1 + output: relay_1 + + status_led: + pin: + number: GPIO13 + inverted: yes + + +In the above code block, there is a *secrets.yaml* file so that you have just one place to change wifi +details for all your devices. + +The use_address is required because the sonoff T series don't work with mDNS properly. This means that it will +show as off line in the dashboard, and you will need to use the ip address to view the logs or upload new versions +of the firmware. You will also need to manually add the device in integrations by IP address. You will need to +assign a fixed IP in the above configuratino, or use a fixed IP assigned fro your DHCP server. + +See `issue #810 `__ for further details. + + +T2 +-- + +.. code-block:: yaml + + esphome: + name: my_t2 + platform: ESP8266 + board: esp01_1m + + wifi: + ssid: !secret wifi_ssid + password: !secret wifi_password + use_address: xxx.xxx.xxx.xxx + + logger: + + api: + + ota: + + binary_sensor: + - platform: gpio + pin: + number: GPIO0 + mode: INPUT_PULLUP + inverted: True + id: button + on_press: + then: + - light.toggle: light_1 + + - platform: gpio + pin: + number: GPIO9 + mode: INPUT_PULLUP + inverted: True + id: button + on_press: + then: + - light.toggle: light_2 + + - platform: status + name: "T2 Status" + + output: + - platform: gpio + pin: GPIO12 + id: relay_1 + + - platform: gpio + pin: GPIO5 + id: relay_2 + + light: + - platform: binary + name: "T2 L1" + id: light_1 + output: relay_1 + + - platform: binary + name: "T2 L2" + id: light_2 + output: relay_2 + + status_led: + pin: + number: GPIO13 + inverted: yes + + +T3 +-- + +.. code-block:: yaml + + esphome: + name: my_t3 + platform: ESP8266 + board: esp01_1m + + wifi: + ssid: !secret wifi_ssid + password: !secret wifi_password + use_address: xxx.xxx.xxx.xxx + + logger: + + api: + + ota: + + binary_sensor: + - platform: gpio + pin: + number: GPIO0 + mode: INPUT_PULLUP + inverted: True + id: button + on_press: + then: + - light.toggle: light_1 + + - platform: gpio + pin: + number: GPIO9 + mode: INPUT_PULLUP + inverted: True + id: button + on_press: + then: + - light.toggle: light_2 + + - platform: gpio + pin: + number: GPIO10 + mode: INPUT_PULLUP + inverted: True + id: button + on_press: + then: + - light.toggle: light_3 + + - platform: status + name: "T3 Status" + + output: + - platform: gpio + pin: GPIO12 + id: relay_1 + + - platform: gpio + pin: GPIO5 + id: relay_2 + + - platform: gpio + pin: GPIO4 + id: relay_3 + + light: + - platform: binary + name: "T3 L1" + id: light_1 + output: relay_1 + + - platform: binary + name: "T3 L2" + id: light_2 + output: relay_2 + + - platform: binary + name: "T3 L3" + id: light_3 + output: relay_3 + + status_led: + pin: + number: GPIO13 + inverted: yes + + +See Also +-------- + +- :doc:`/cookbook/sonoff-light-switch` +- :doc:`/guides/automations` +- :doc:`/devices/sonoff_t1_uk_3gang_v1.1` + diff --git a/images/light_switch.png b/images/light_switch.png new file mode 100644 index 0000000000000000000000000000000000000000..e46bf82acc575c8d961781aae7b886ac1fbc0f8c GIT binary patch literal 10052 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 Sjy(D&n88(3{lY8vBK{93zCl(1 literal 0 HcmV?d00001 diff --git a/images/sonoff_1t_t3.png b/images/sonoff_1t_t3.png new file mode 100644 index 0000000000000000000000000000000000000000..112c2129b2a16b2a57ddbdf3d8eb028a5e772402 GIT binary patch literal 15305 zcmdUWgEQ%!8N$M zLvddE-21!t`Q7)vf53Z^Jv(Q1zOys4JLlw+vm5kI8AO0biHC-UMxdx5r*>br-Iqih z?E7 zQ)s5>RR5wsptJr{2IIbw7w!Ix_V~U)(fR(ON$%;70oG^_?(09;xcl_VLAI~2`P#6sjGZp>c_M~F`OJ`du=D+B~ zKgw+(eqZh@Tn7amCp5H&#D5Ap+V@2Adyko|-)qCPmEMY(*+aNY%A+zj-8iNI_m7_^n%(aYLH!SsS$0$e-{l6ds= z^gyV&g_xS0{6FFMR}u_XFqnfFH@Az63zrK&mp#;yn^#m+l$(c-n~#t4UV_uf%?@Vb z%4z4s_zxxjqel+xWCpc%fLYty(f`qFVrmbENiZ<{>F8g_KkPI&`&T~>aH#EHy_lPE zgKfbOupP{ao0p51`@iAtz5N%^&gq}gxQ`3BtBJ!si08k8z^>N+cI$tk{KO>)BP|? z@`?%qx&Ld+e?{v24Jjz}cjVt%{u3!{Z)*=#cQ7#nOY;5`@;BDsr2m9nOx7Oa00le! zWgQQY`~Twor@Xcr*vZ}&{%2B33iJIF@OS2a0{$(pVP_4K{2$1Fu>TXK0=2%MxF&yf zbMM7pX8oP_pYl5Y*7t9-{?7a-0Lc9(lm3=j|47@vxc7N0iFZGy|8ozJ#5*>Z8%0AC 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. From ac121643aa9f28b7a80b7f996a4ad86a70dce4b5 Mon Sep 17 00:00:00 2001 From: Otto Winter Date: Sat, 30 Nov 2019 11:21:04 +0100 Subject: [PATCH 008/108] Add note about multiple on_clicks Fixes https://github.com/esphome/feature-requests/issues/510 --- components/binary_sensor/index.rst | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/components/binary_sensor/index.rst b/components/binary_sensor/index.rst index d5be01a8d..4683ad514 100644 --- a/components/binary_sensor/index.rst +++ b/components/binary_sensor/index.rst @@ -196,6 +196,27 @@ Configuration variables: - **max_length** (*Optional*, :ref:`config-time`): The maximum duration the click should last. Defaults to ``350ms``. - See :ref:`Automation `. +.. note:: + + Multiple ``on_click`` entries can be defined like this (see also :ref:`binary_sensor-on_multi_click` + for more complex matching): + + .. code-block:: yaml + + binary_sensor: + - platform: gpio + # ... + on_click: + - min_length: 50ms + max_length: 350ms + then: + - switch.turn_off: relay_1 + - min_length: 500ms + max_length: 1000ms + then: + - switch.turn_on: relay_1 + + .. _binary_sensor-on_double_click: ``on_double_click`` From b5a50b5b6251ed3f3051c63a05561585a1d2de40 Mon Sep 17 00:00:00 2001 From: Otto Winter Date: Wed, 4 Dec 2019 11:45:49 +0100 Subject: [PATCH 009/108] BME280/BME680/BMP280 oversampling none docs Fixes https://github.com/esphome/issues/issues/893 --- components/sensor/bme280.rst | 2 +- components/sensor/bme680.rst | 2 +- components/sensor/bmp280.rst | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/components/sensor/bme280.rst b/components/sensor/bme280.rst index f0f67a1ae..fe37ae973 100644 --- a/components/sensor/bme280.rst +++ b/components/sensor/bme280.rst @@ -78,7 +78,7 @@ Oversampling Options By default, the BME280 sensor measures each value 16 times when requesting a new value. You can, however, configure this amount. Possible oversampling values: -- ``NONE`` +- ``NONE`` (value is skipped) - ``1x`` - ``2x`` - ``4x`` diff --git a/components/sensor/bme680.rst b/components/sensor/bme680.rst index f53f8ad18..37f91e57b 100644 --- a/components/sensor/bme680.rst +++ b/components/sensor/bme680.rst @@ -96,7 +96,7 @@ Oversampling Options By default, the BME680 sensor measures each value 16 times when requesting a new value. You can, however, configure this amount. Possible oversampling values: -- ``NONE`` +- ``NONE`` (value is skipped) - ``1x`` - ``2x`` - ``4x`` diff --git a/components/sensor/bmp280.rst b/components/sensor/bmp280.rst index 76d8fcb4e..80ab1443f 100644 --- a/components/sensor/bmp280.rst +++ b/components/sensor/bmp280.rst @@ -74,7 +74,7 @@ Oversampling Options By default, the BMP280 sensor measures each value 16 times when requesting a new value. You can, however, configure this amount. Possible oversampling values: -- ``NONE`` +- ``NONE`` (value is skipped) - ``1x`` - ``2x`` - ``4x`` From 9382e2f37adf2cf526e6425e75700a8952ad1a8a Mon Sep 17 00:00:00 2001 From: Nick Whyte Date: Sun, 8 Dec 2019 03:15:41 +1100 Subject: [PATCH 010/108] Add doc for color correction of rgb* lights (#431) * Add doc for color correction of rgb* lights * PR changes * . --- components/light/rgb.rst | 26 ++++++++++++++++++++++++++ components/light/rgbw.rst | 25 +++++++++++++++++++++++++ components/light/rgbww.rst | 27 +++++++++++++++++++++++++++ 3 files changed, 78 insertions(+) diff --git a/components/light/rgb.rst b/components/light/rgb.rst index d1d8b9733..692e418fe 100644 --- a/components/light/rgb.rst +++ b/components/light/rgb.rst @@ -35,6 +35,32 @@ The ``rgb`` light platform creates an RGB light from 3 :ref:`float output compon pin: D1 # Repeat for green and blue output +Color Correction +---------------- + +It is often favourable to calibrate/correct the color produced by an LED strip light as the +perceived intensity of different colors will generally vary. This can be done by using +:ref:`max_power ` on individual output channels: + +.. code-block:: yaml + + # Example configuration entry + light: + - platform: rgb + name: "Living Room Lights" + red: output_component1 + green: output_component2 + blue: output_component3 + + # Example output entry + output: + - platform: esp8266_pwm + id: output_component1 + pin: D1 + max_power: 80% + # Repeat for green and blue output + + Configuration variables: ------------------------ diff --git a/components/light/rgbw.rst b/components/light/rgbw.rst index c37a835cd..0af887c24 100644 --- a/components/light/rgbw.rst +++ b/components/light/rgbw.rst @@ -18,6 +18,31 @@ The ``rgbw`` light platform creates an RGBW light from 4 :ref:`float output comp blue: output_component3 white: output_component4 +Color Correction +---------------- + +It is often favourable to calibrate/correct the color produced by an LED strip light as the +perceived intensity of different colors will generally vary. This can be done by using +:ref:`max_power ` on individual output channels: + +.. code-block:: yaml + + # Example configuration entry + light: + - platform: rgbw + name: "Livingroom Lights" + red: output_component1 + green: output_component2 + blue: output_component3 + white: output_component4 + + # Example output entry + output: + - platform: esp8266_pwm + id: output_component1 + pin: D1 + max_power: 80% + Configuration variables: ------------------------ diff --git a/components/light/rgbww.rst b/components/light/rgbww.rst index a58e0eef7..71e8eb03a 100644 --- a/components/light/rgbww.rst +++ b/components/light/rgbww.rst @@ -23,6 +23,33 @@ and warm white channels will be mixed using the color temperature configuration cold_white_color_temperature: 6536 K warm_white_color_temperature: 2000 K +Color Correction +---------------- + +It is often favourable to calibrate/correct the color produced by an LED strip light as the +perceived intensity of different colors will generally vary. This can be done by using +:ref:`max_power ` on individual output channels: + + +.. code-block:: yaml + + # Example configuration entry + light: + - platform: rgbw + name: "Livingroom Lights" + red: output_component1 + green: output_component2 + blue: output_component3 + white: output_component4 + + # Example output entry + output: + - platform: esp8266_pwm + id: output_component1 + pin: D1 + max_power: 80% + + Configuration variables: ------------------------ From c8baae2bc69589a0061ee64b5b43655b6b4384e2 Mon Sep 17 00:00:00 2001 From: David Beitey Date: Sun, 8 Dec 2019 02:16:06 +1000 Subject: [PATCH 011/108] Use .timestamp instead of .time in time docs (#435) `.time` is deprecated since https://github.com/esphome/esphome/pull/531; this updates the reference in the documentation so that warnings like the following can be avoided: ``` src/main.cpp: In lambda function: src/main.cpp:462:20: warning: 'esphome::time::ESPTime::::time' is deprecated (declared at src/esphome/components/time/real_time_clock.h:35): .time is deprecated, use .timestamp instead [-Wdeprecated-declarations] return (time.time); ``` --- components/time.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/components/time.rst b/components/time.rst index 53f57c2e1..fed432c58 100644 --- a/components/time.rst +++ b/components/time.rst @@ -122,7 +122,7 @@ created based on a given format. If you want to get the current time attributes, -------------------- ---------------------------------------- ---------------------------------------- -------------------- ``.is_dst`` Is daylight savings time false, true true -------------------- ---------------------------------------- ---------------------------------------- -------------------- -``.time`` Unix epoch time (seconds since UTC [-2147483648 - 2147483647] (negative 1534606002 +``.timestamp`` Unix epoch time (seconds since UTC [-2147483648 - 2147483647] (negative 1534606002 Midnight January 1, 1970) values for time past January 19th 2038) -------------------- ---------------------------------------- ---------------------------------------- -------------------- ``.is_valid()`` Basic check if the time is valid false, true true From fb3eab463627dca249f8c59973c1b3c21ce20f63 Mon Sep 17 00:00:00 2001 From: Otto Winter Date: Tue, 10 Dec 2019 11:07:16 +0100 Subject: [PATCH 012/108] Update esp32_ble_tracker.rst Fixes https://github.com/esphome/issues/issues/912 --- components/esp32_ble_tracker.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/components/esp32_ble_tracker.rst b/components/esp32_ble_tracker.rst index 26e564adb..29b98332e 100644 --- a/components/esp32_ble_tracker.rst +++ b/components/esp32_ble_tracker.rst @@ -58,7 +58,7 @@ Configuration variables: - **scan_parameters** (*Optional*): Advanced parameters for configuring the scan behavior of the ESP32. - See also `this guide by Texax Instruments `__ + See also `this guide by Texas Instruments `__ for reference. - **interval** (*Optional*, :ref:`config-time`): The interval between each consecutive scan window. From d5cd4c107b0267d4d0ce1f951782ceba9060fe94 Mon Sep 17 00:00:00 2001 From: LMR Date: Tue, 10 Dec 2019 02:09:01 -0800 Subject: [PATCH 013/108] DIY Examples : Added SW420 Vibration Sensor with Remote Notifications (#436) --- guides/diy.rst | 1 + 1 file changed, 1 insertion(+) diff --git a/guides/diy.rst b/guides/diy.rst index f749deedf..0e7e75e25 100644 --- a/guides/diy.rst +++ b/guides/diy.rst @@ -35,6 +35,7 @@ Blog Posts & Videos - `ESPHome MP3 Sound Machine `__ by `Self Hosted Home `__ - `ESP32 Camera+ESP8266 PIR `__ by `Dave Richer `__ - `Detecting Sound with ESP8266 `__ by `Thibault Maekelbergh `__ +- `SW420 Vibration Sensor with Remote Notifications `__ by :ghuser:`rmooreID` Custom Components & Code ------------------------ From 288763065334e6c60169bb4a87fb7da3c1fbfe64 Mon Sep 17 00:00:00 2001 From: Otto Winter Date: Thu, 12 Dec 2019 12:02:59 +0100 Subject: [PATCH 014/108] Update supporters.rst --- guides/supporters.rst | 59 +++++++++++++++++++++++++++++++------------ 1 file changed, 43 insertions(+), 16 deletions(-) diff --git a/guides/supporters.rst b/guides/supporters.rst index 675e01e57..1e7b8ec93 100644 --- a/guides/supporters.rst +++ b/guides/supporters.rst @@ -44,6 +44,7 @@ You guys are awesome! - Andrew Tierney - Book of the Future - Christer Frostmo +- Christoph - Clayton - Daan Damhuis - Dattas Moonchaser @@ -59,6 +60,7 @@ You guys are awesome! - Kenvase - Lazar Obradovic - Magnus Overli +- minsuke - Nick Rout - Nigel Michki - Paul Krischer @@ -71,6 +73,7 @@ You guys are awesome! - Ryan Bahm - Ryan Nazaretian - Sam Absalom +- Sasha Mikhnov - Saulo Onze - Starwolf73 - Thibault Maekelbergh @@ -91,7 +94,7 @@ that have made it into the `ESPHome organization's ` Author & Main Developer *********************** -- `Otto Winter (@OttoWinter) `__ - 2068 contributions +- `Otto Winter (@OttoWinter) `__ - 2141 contributions Contributors ************ @@ -102,14 +105,17 @@ Contributors - `Pavel Golovin (@31337Ghost) `__ - 1 contribution - `Pavel Pletenev (@ASMfreaK) `__ - 1 contribution - `Aalian Khan (@AalianKhan) `__ - 4 contributions -- `Alexander Leisentritt (@Alex9779) `__ - 4 contributions +- `Alexander Leisentritt (@Alex9779) `__ - 6 contributions - `Alexandre Danault (@AlexDanault) `__ - 1 contribution - `Alex Mekkering (@AlexMekkering) `__ - 1 contribution -- `Nikolay Vasilchuk (@Anonym-tsk) `__ - 19 contributions +- `Nikolay Vasilchuk (@Anonym-tsk) `__ - 20 contributions - `Rutger Nijhuis (@BananaPukeh) `__ - 1 contribution - `Bierchermuesli (@Bierchermuesli) `__ - 1 contribution -- `John (@CircuitSetup) `__ - 1 contribution +- `John (@CircuitSetup) `__ - 2 contributions +- `DAVe3283 (@DAVe3283) `__ - 2 contributions - `David De Sloovere (@DavidDeSloovere) `__ - 3 contributions +- `Destix (@Destix) `__ - 1 contribution +- `Mark (@Diramu) `__ - 1 contribution - `Eenoo (@Eenoo) `__ - 1 contribution - `EmmanuelLM (@EmmanuelLM) `__ - 1 contribution - `FrengerH (@FrengerH) `__ - 2 contributions @@ -118,6 +124,7 @@ Contributors - `Lorenzo Ortiz (@Infinitte) `__ - 1 contribution - `Johboh (@Johboh) `__ - 2 contributions - `Justahobby01 (@Justahobby01) `__ - 1 contribution +- `KristopherMackowiak (@KristopherMackowiak) `__ - 1 contribution - `Fredrik Lindqvist (@Landrash) `__ - 1 contribution - `Lumpusz (@Lumpusz) `__ - 1 contribution - `Marco (@Melkor82) `__ - 2 contributions @@ -127,26 +134,31 @@ Contributors - `Nils Schulte (@Schnilz) `__ - 1 contribution - `Paul Krischer (@SqyD) `__ - 1 contribution - `Teemu Mikkonen (@T3m3z) `__ - 2 contributions -- `Taigar2015 (@Taigar2015) `__ - 1 contribution +- `Taigar2015 (@Taigar2015) `__ - 2 contributions - `Thomas Eckerstorfer (@TheEggi) `__ - 4 contributions - `Spencer Hachmeister (@TheHackmeister) `__ - 1 contribution -- `TheJulianJES (@TheJulianJES) `__ - 2 contributions +- `TheJulianJES (@TheJulianJES) `__ - 3 contributions - `Florian Gareis (@TheZoker) `__ - 7 contributions - `TomFahey (@TomFahey) `__ - 2 contributions - `Rick van Hattem (@WoLpH) `__ - 1 contribution - `ZabojnikM (@ZabojnikM) `__ - 1 contribution - `Abílio Costa (@abmantis) `__ - 1 contribution +- `adamgreg (@adamgreg) `__ - 1 contribution - `Attila Darazs (@adarazs) `__ - 2 contributions - `Johan Bloemberg (@aequitas) `__ - 6 contributions - `Anders (@ahd71) `__ - 1 contribution -- `amishv (@amishv) `__ - 3 contributions +- `Airy André (@airy10) `__ - 1 contribution +- `Andrej Komelj (@akomelj) `__ - 1 contribution +- `Amish Vishwakarma (@amishv) `__ - 3 contributions +- `ankycooper (@ankycooper) `__ - 1 contribution - `Adriaan Peeters (@apeeters) `__ - 3 contributions - `Florian Mösch (@badbadc0ffee) `__ - 4 contributions - `balk77 (@balk77) `__ - 2 contributions - `Paulus Schoutsen (@balloob) `__ - 1 contribution +- `Ben Suffolk (@bensuffolk) `__ - 1 contribution - `Mauricio Bonani (@bonanitech) `__ - 1 contribution - `Patrik Hermansson (@bphermansson) `__ - 1 contribution -- `Brandon Davidson (@brandond) `__ - 15 contributions +- `Brandon Davidson (@brandond) `__ - 17 contributions - `brianrjones69 (@brianrjones69) `__ - 1 contribution - `bwente (@bwente) `__ - 1 contribution - `chris-jennings (@chris-jennings) `__ - 1 contribution @@ -155,13 +167,15 @@ Contributors - `Corban Mailloux (@corbanmailloux) `__ - 5 contributions - `cryptelli (@cryptelli) `__ - 3 contributions - `Dale Higgs (@dale3h) `__ - 1 contribution +- `Daniel Kucera (@danielkucera) `__ - 1 contribution - `Danny Sauer (@dannysauer) `__ - 1 contribution - `Dave Richer (@davericher) `__ - 3 contributions -- `Mario Di Raimondo (@diraimondo) `__ - 2 contributions +- `David Beitey (@davidjb) `__ - 1 contribution - `Dirk Jahnke (@dirkj) `__ - 1 contribution - `Jiang Sheng (@doskoi) `__ - 1 contribution - `Robert Schütz (@dotlambda) `__ - 3 contributions - `Drew Perttula (@drewp) `__ - 1 contribution +- `Niclas Larsson (@edge90) `__ - 1 contribution - `Anders Persson (@emwap) `__ - 4 contributions - `Nico Weichbrodt (@envy) `__ - 1 contribution - `Evan Petousis (@epetousis) `__ - 1 contribution @@ -173,23 +187,27 @@ Contributors - `Fabian Affolter (@fabaff) `__ - 15 contributions - `C W (@fake-name) `__ - 1 contribution - `Fredrik Erlandsson (@fredrike) `__ - 1 contribution +- `Evgeny (@freekode) `__ - 1 contribution - `Fritz Mueller (@fritzm) `__ - 1 contribution - `gitolicious (@gitolicious) `__ - 11 contributions - `The Gitter Badger (@gitter-badger) `__ - 1 contribution -- `Guillermo Ruffino (@glmnet) `__ - 41 contributions +- `Guillermo Ruffino (@glmnet) `__ - 49 contributions - `Giorgos Logiotatidis (@glogiotatidis) `__ - 1 contribution - `Antoine GRÉA (@grea09) `__ - 4 contributions +- `Guillaume DELVIT (@guiguid) `__ - 1 contribution - `guptamp (@guptamp) `__ - 1 contribution - `h0-- (@h0--) `__ - 1 contribution - `Boris Hajduk (@hajdbo) `__ - 4 contributions +- `Hamish Moffatt (@hmoffatt) `__ - 1 contribution - `Ivan Kravets (@ivankravets) `__ - 1 contribution - `Jan Pieper (@janpieper) `__ - 2 contributions - `JbLb (@jblb) `__ - 1 contribution - `jcullen86 (@jcullen86) `__ - 1 contribution - `Joshua Dadswell (@jdads1) `__ - 1 contribution - `jeff-h (@jeff-h) `__ - 2 contributions -- `Jesse Hills (@jesserockz) `__ - 8 contributions +- `Jesse Hills (@jesserockz) `__ - 11 contributions - `Jonathan Jefferies (@jjok) `__ - 1 contribution +- `Jeppe Ladefoged (@jladefoged) `__ - 2 contributions - `John Erik Halse (@johnerikhalse) `__ - 1 contribution - `JonnyaiR (@jonnyair) `__ - 2 contributions - `junnikokuki (@junnikokuki) `__ - 1 contribution @@ -199,15 +217,17 @@ Contributors - `Kevin O'Rourke (@kevinior) `__ - 1 contribution - `kimonm (@kimonm) `__ - 1 contribution - `Kevin Lewis (@kll) `__ - 1 contribution +- `kvvoff (@kvvoff) `__ - 1 contribution - `Ken Davidson (@kwdavidson) `__ - 1 contribution -- `Jeppe Ladefoged (@ladefoged81) `__ - 2 contributions - `Lazar Obradovic (@lobradov) `__ - 4 contributions - `Lewis Juggins (@lwis) `__ - 1 contribution - `Marc-Antoine Courteau (@macourteau) `__ - 1 contribution -- `Magnus (@magnusja) `__ - 1 contribution +- `magnus (@magnusja) `__ - 1 contribution - `Magnus Øverli (@magnusoverli) `__ - 1 contribution - `Major Péter (@majorpeter) `__ - 2 contributions - `Marcel van der Veldt (@marcelveldt) `__ - 2 contributions +- `Mario (@mario-tux) `__ - 2 contributions +- `Matthew Harrold (@marrold) `__ - 1 contribution - `mbo18 (@mbo18) `__ - 1 contribution - `MeIchthys (@meichthys) `__ - 1 contribution - `meijerwynand (@meijerwynand) `__ - 2 contributions @@ -219,7 +239,9 @@ Contributors - `Michiel van Turnhout (@mvturnho) `__ - 14 contributions - `Niels Ulrik Andersen (@myplacedk) `__ - 1 contribution - `Kevin Uhlir (@n0bel) `__ - 1 contribution +- `Bergont Nicolas (@nbergont) `__ - 1 contribution - `Nebula (@nebula-it) `__ - 1 contribution +- `Nick Whyte (@nickw444) `__ - 2 contributions - `nicuh (@nicuh) `__ - 1 contribution - `Alex (@nnmalex) `__ - 1 contribution - `ffabi (@norges) `__ - 2 contributions @@ -245,10 +267,12 @@ Contributors - `Robert Cambridge (@rcambrj) `__ - 1 contribution - `Richard Lewis (@richrd) `__ - 2 contributions - `rlowens (@rlowens) `__ - 1 contribution +- `LMR (@rmooreID) `__ - 1 contribution - `rnauber (@rnauber) `__ - 2 contributions - `Robbie Page (@rorpage) `__ - 1 contribution - `Ryan Nazaretian (@ryannazaretian) `__ - 1 contribution - `Ville Skyttä (@scop) `__ - 3 contributions +- `Sergio (@sergio303) `__ - 1 contribution - `Sergio Mayoral Martínez (@sermayoral) `__ - 2 contributions - `sethcohn (@sethcohn) `__ - 1 contribution - `Emanuele Tessore (@setola) `__ - 1 contribution @@ -256,22 +280,25 @@ Contributors - `shbatm (@shbatm) `__ - 1 contribution - `sherbang (@sherbang) `__ - 4 contributions - `srg74 (@srg74) `__ - 1 contribution -- `Samuel Sieb (@ssieb) `__ - 2 contributions +- `Samuel Sieb (@ssieb) `__ - 4 contributions - `Levente Tamas (@tamisoft) `__ - 2 contributions - `Andrew Quested (@thenameiwantedwastaken) `__ - 1 contribution - `Thomas Klingbeil (@thomasklingbeil) `__ - 2 contributions - `Andrew Thompson (@thompsa) `__ - 2 contributions - `thubot (@thubot) `__ - 1 contribution - `tiagofreire-pt (@tiagofreire-pt) `__ - 1 contribution +- `Tim P (@timpur) `__ - 1 contribution - `tomlut (@tomlut) `__ - 1 contribution - `Felix Eckhofer (@tribut) `__ - 1 contribution - `tubalainen (@tubalainen) `__ - 2 contributions -- `Nad (@valordk) `__ - 9 contributions +- `Alexey Vlasov (@turbo-lab) `__ - 1 contribution +- `Nad (@valordk) `__ - 10 contributions - `Xuming Feng (@voicevon) `__ - 2 contributions +- `warpzone (@warpzone) `__ - 1 contribution - `Ian Wells (@wellsi) `__ - 1 contribution - `wutr (@wutr) `__ - 1 contribution - `Marcin Jaworski (@yawor) `__ - 2 contributions - `Vladimir Eremin (@yottatsa) `__ - 1 contribution - `YuanL.Lee (@yuanl) `__ - 1 contribution -*This page was last updated Sat Nov 2 09:35:32 2019 UTC.* +*This page was last updated Thu Dec 12 11:02:59 2019 UTC.* From 66e774b227b7cfcaa3ec2bde118a1a3d4e94436c Mon Sep 17 00:00:00 2001 From: Richard Lewis Date: Mon, 30 Dec 2019 19:13:15 +0200 Subject: [PATCH 015/108] Fix broken link (#437) --- components/sensor/sts3x.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/components/sensor/sts3x.rst b/components/sensor/sts3x.rst index eba1b5f50..48fd07444 100644 --- a/components/sensor/sts3x.rst +++ b/components/sensor/sts3x.rst @@ -7,7 +7,7 @@ STS3X Temperature Sensor The ``sts3x`` sensor platform Temperature sensor allows you to use your Sensiron STS30-DIS, STS31-DIS or STS35-DIS (`datasheet `__, -`Sensirion STS3x `__) sensors with +`Sensirion STS3x `__) sensors with ESPHome. The :ref:`I²C Bus ` is required to be set up in your configuration for this sensor to work. From 98b80e42441a422c524f633db53c96d6bc3dd565 Mon Sep 17 00:00:00 2001 From: Alex Solomaha Date: Wed, 8 Jan 2020 16:17:38 +0200 Subject: [PATCH 016/108] Update getting_started_command_line.rst (#461) Fixed typo --- guides/getting_started_command_line.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/guides/getting_started_command_line.rst b/guides/getting_started_command_line.rst index cb476e32b..daa36f91d 100644 --- a/guides/getting_started_command_line.rst +++ b/guides/getting_started_command_line.rst @@ -13,7 +13,7 @@ Installation ------------ Installing ESPHome is very easy. All you need to do is have `Python -`__ installed and install the console script script through +`__ installed and install the console script through ``pip``. .. code-block:: bash From f93b01590c80a66d24bc00238b3e67747a3d340f Mon Sep 17 00:00:00 2001 From: Luar Roji Date: Sun, 12 Jan 2020 11:18:34 -0300 Subject: [PATCH 017/108] Added degree symbol output on ~ for MAX7219 (#376) --- components/display/images/max7219/seg8E.svg | 1 + components/display/max7219.rst | 4 ++++ 2 files changed, 5 insertions(+) create mode 100644 components/display/images/max7219/seg8E.svg diff --git a/components/display/images/max7219/seg8E.svg b/components/display/images/max7219/seg8E.svg new file mode 100644 index 000000000..6a13e740a --- /dev/null +++ b/components/display/images/max7219/seg8E.svg @@ -0,0 +1 @@ + diff --git a/components/display/max7219.rst b/components/display/max7219.rst index f61cde74c..5d7f0b9a3 100644 --- a/components/display/max7219.rst +++ b/components/display/max7219.rst @@ -216,6 +216,8 @@ All 7-Segment Characters |max72191D| ``o`` ------------------------------ ------------------------------ |max72191C| ``u``, ``v`` +------------------------------ ------------------------------ +|max72198E| ``~`` ============================== ============================== .. |max721900| image:: images/max7219/seg00.svg @@ -318,6 +320,8 @@ All 7-Segment Characters :class: component-image .. |max72191C| image:: images/max7219/seg1C.svg :class: component-image +.. |max72198E| image:: images/max7219/seg8E.svg + :class: component-image .. note:: From eaebd436df2109f1b9a558b0ba8f2e480b5c8524 Mon Sep 17 00:00:00 2001 From: spattinson Date: Sun, 12 Jan 2020 15:00:08 +0000 Subject: [PATCH 018/108] change "tracker" to "presence" (#465) two instances in sample config. to reflect new name. --- components/esp32_ble_tracker.rst | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/components/esp32_ble_tracker.rst b/components/esp32_ble_tracker.rst index 29b98332e..1b8a12382 100644 --- a/components/esp32_ble_tracker.rst +++ b/components/esp32_ble_tracker.rst @@ -17,9 +17,9 @@ for information on how you can find out the MAC address of a device and track it esp32_ble_tracker: binary_sensor: - - platform: esp32_ble_tracker + - platform: ble_presence mac_address: AC:37:43:77:5F:4C - name: "ESP32 BLE Tracker Google Home Mini" + name: "ESP32 BLE Presence Google Home Mini" sensor: - platform: ble_rssi From a468feccb0723f12e47d6a2bc1fd0f075ab1fe57 Mon Sep 17 00:00:00 2001 From: Mechotronic Date: Sun, 12 Jan 2020 10:01:03 -0500 Subject: [PATCH 019/108] On_sunrise was listed twice in description. (#464) Changed the second one to on_sunset --- components/sun.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/components/sun.rst b/components/sun.rst index 575515083..345063255 100644 --- a/components/sun.rst +++ b/components/sun.rst @@ -52,7 +52,7 @@ Automation: - **elevation** (*Optional*, float): The elevation to cross. Defaults to 0° (horizon). -- **on_sunrise** (*Optional*, :ref:`Automation `): An automation to perform at sunset +- **on_sunset** (*Optional*, :ref:`Automation `): An automation to perform at sunset when the sun crosses a specified angle. - **elevation** (*Optional*, float): The elevation to cross. Defaults to 0° (horizon). From c3852cb30d1103fda7e8d5f530cc181f21175764 Mon Sep 17 00:00:00 2001 From: Otto Winter Date: Sun, 12 Jan 2020 16:28:24 +0100 Subject: [PATCH 020/108] Update .gitignore for better macOS support and IntelliJ editing --- .gitignore | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.gitignore b/.gitignore index 940ea4400..18ace7f42 100644 --- a/.gitignore +++ b/.gitignore @@ -4,3 +4,5 @@ _build __pycache__/ *.py[cod] *$py.class +*.DS_Store +/.idea/ From 428d9e23a8e484c9656eefac1604ebba07b72d9a Mon Sep 17 00:00:00 2001 From: Otto Winter Date: Sun, 12 Jan 2020 16:28:41 +0100 Subject: [PATCH 021/108] Remove permission bits for images --- components/images/sim800l-full.jpg | Bin devices/images/sonoff_t1_uk_3g_back_plate_v1.1.jpg | Bin devices/images/sonoff_t1_uk_3g_back_v1.1.jpg | Bin devices/images/sonoff_t1_uk_3g_plate_off_v1.1.jpg | Bin devices/images/sonoff_t1_uk_3g_touch_pads_v1.1.jpg | Bin devices/images/sonoff_t1_uk_3g_v1.1.jpg | Bin images/sim800l.jpg | Bin images/sonoff_t1_uk_3g_v1.1.jpg | Bin 8 files changed, 0 insertions(+), 0 deletions(-) mode change 100755 => 100644 components/images/sim800l-full.jpg mode change 100755 => 100644 devices/images/sonoff_t1_uk_3g_back_plate_v1.1.jpg mode change 100755 => 100644 devices/images/sonoff_t1_uk_3g_back_v1.1.jpg mode change 100755 => 100644 devices/images/sonoff_t1_uk_3g_plate_off_v1.1.jpg mode change 100755 => 100644 devices/images/sonoff_t1_uk_3g_touch_pads_v1.1.jpg mode change 100755 => 100644 devices/images/sonoff_t1_uk_3g_v1.1.jpg mode change 100755 => 100644 images/sim800l.jpg mode change 100755 => 100644 images/sonoff_t1_uk_3g_v1.1.jpg diff --git a/components/images/sim800l-full.jpg b/components/images/sim800l-full.jpg old mode 100755 new mode 100644 diff --git a/devices/images/sonoff_t1_uk_3g_back_plate_v1.1.jpg b/devices/images/sonoff_t1_uk_3g_back_plate_v1.1.jpg old mode 100755 new mode 100644 diff --git a/devices/images/sonoff_t1_uk_3g_back_v1.1.jpg b/devices/images/sonoff_t1_uk_3g_back_v1.1.jpg old mode 100755 new mode 100644 diff --git a/devices/images/sonoff_t1_uk_3g_plate_off_v1.1.jpg b/devices/images/sonoff_t1_uk_3g_plate_off_v1.1.jpg old mode 100755 new mode 100644 diff --git a/devices/images/sonoff_t1_uk_3g_touch_pads_v1.1.jpg b/devices/images/sonoff_t1_uk_3g_touch_pads_v1.1.jpg old mode 100755 new mode 100644 diff --git a/devices/images/sonoff_t1_uk_3g_v1.1.jpg b/devices/images/sonoff_t1_uk_3g_v1.1.jpg old mode 100755 new mode 100644 diff --git a/images/sim800l.jpg b/images/sim800l.jpg old mode 100755 new mode 100644 diff --git a/images/sonoff_t1_uk_3g_v1.1.jpg b/images/sonoff_t1_uk_3g_v1.1.jpg old mode 100755 new mode 100644 From 4037e507d73e1d129f1021e42f6701806e4e19ef Mon Sep 17 00:00:00 2001 From: Otto Winter Date: Sun, 12 Jan 2020 16:36:02 +0100 Subject: [PATCH 022/108] Remove requirement for titlebars matching length --- travis.py | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/travis.py b/travis.py index 666d53232..c3ca38e31 100644 --- a/travis.py +++ b/travis.py @@ -45,19 +45,19 @@ for f in sorted(Path('.').glob('**/*.rst')): lines = content.splitlines(keepends=False) - for i, line in enumerate(lines): - if i == 0: - continue - - if not section_regex.match(line): - continue - line_above = lines[i - 1] - if len(line_above) != len(line): - errors.append("The title length must match the bar length below it. See {}:{}" - "".format(f, i+1)) - if i + 1 < len(lines) and lines[i + 1]: - errors.append("Empty line after heading is missing. Please insert an " - "empty line. See {}:{}".format(f, i+1)) + # for i, line in enumerate(lines): + # if i == 0: + # continue + # + # if not section_regex.match(line): + # continue + # line_above = lines[i - 1] + # if len(line_above) != len(line): + # errors.append("The title length must match the bar length below it. See {}:{}" + # "".format(f, i+1)) + # if i + 1 < len(lines) and lines[i + 1]: + # errors.append("Empty line after heading is missing. Please insert an " + # "empty line. See {}:{}".format(f, i+1)) for i, line in enumerate(lines): m = directive_regex.match(line) From fa8129057924e182dd85fc95e3f67d20ab24f833 Mon Sep 17 00:00:00 2001 From: Vc <37367415+Valcob@users.noreply.github.com> Date: Sun, 12 Jan 2020 17:36:20 +0200 Subject: [PATCH 023/108] Patch 3 (#460) * Update sonoff.rst Added Sonoff dual board version 1.4 * Update devices/sonoff.rst fixed, thanks! Co-Authored-By: Otto Winter Co-authored-by: Otto Winter --- devices/sonoff.rst | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/devices/sonoff.rst b/devices/sonoff.rst index 2bc8a36d4..966d0a7a2 100644 --- a/devices/sonoff.rst +++ b/devices/sonoff.rst @@ -85,6 +85,18 @@ Sonoff Dual R2 GPIO4, Optional sensor GPIO14, Optional sensor +Sonoff Dual R2 v1.4 +------------------- + +.. pintable:: + + GPIO00, Button #0(inside header board v1.4), + GPIO09, Button #1(inside header board v1.4), + GPIO12, Relay #1, + GPIO5, Relay #2, + GPIO10, Button on the case, + GPIO13, Blue LED (inverted) + Sonoff Pow R1 ------------- From 03ca209105856625bb2a900e274856a1b10f64a3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Bj=C3=B8rnbakk?= Date: Sun, 12 Jan 2020 16:42:44 +0100 Subject: [PATCH 024/108] fixed non working example (#381) * fixed non working example small fix to get the color swipe working * Apply suggestions from code review Co-Authored-By: Otto Winter Co-authored-by: Otto Winter --- components/light/index.rst | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/components/light/index.rst b/components/light/index.rst index dbd3cb2bb..1e867b4d5 100644 --- a/components/light/index.rst +++ b/components/light/index.rst @@ -710,10 +710,10 @@ instance (see API reference for more info). // it[num].get(); // Example: Simple color wipe - for (int i = 1; i < it.size(); i++) { + 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; From 2423486b3aad1ffff0bec5f0b3f1a1a19051ea4e Mon Sep 17 00:00:00 2001 From: nldroid <13297091+nldroid@users.noreply.github.com> Date: Tue, 14 Jan 2020 10:06:42 +0100 Subject: [PATCH 025/108] Added my custom component, now with correct syntax (#454) --- guides/diy.rst | 1 + 1 file changed, 1 insertion(+) diff --git a/guides/diy.rst b/guides/diy.rst index 0e7e75e25..3e84527af 100644 --- a/guides/diy.rst +++ b/guides/diy.rst @@ -58,6 +58,7 @@ Custom Components & Code - `LINP-Doorbell-g03 Custom Component `__ by :ghuser:`pauln` - `ESPHome <-> Homebridge `__ by `basdelfos `__ - `Custom ESPHome for Wofea V10 Alarm `__ by :ghuser:`nbergont` +- `Custom Smart meter P1 port reader `__ by :ghuser:`nldroid` Sample Configurations --------------------- From 29d84bee2fc306b8950a5bd6aa0e70cff58c779c Mon Sep 17 00:00:00 2001 From: Otto Winter Date: Tue, 14 Jan 2020 14:48:53 +0100 Subject: [PATCH 026/108] Compress images --- images/am2320.jpg | Bin 15605 -> 6504 bytes images/atm90e32.jpg | Bin 34656 -> 19492 bytes images/binary_sensor_map.jpg | Bin 7322 -> 6159 bytes images/ccs811.jpg | Bin 29806 -> 29527 bytes images/senseair_s8.jpg | Bin 24853 -> 12967 bytes images/shtc3.jpg | Bin 18344 -> 15812 bytes images/sim800l.jpg | Bin 23319 -> 21562 bytes images/sonoff_t1_uk_3g_v1.1.jpg | Bin 5317 -> 5077 bytes images/sts3x.jpg | Bin 9930 -> 7130 bytes images/teckin_sb50.jpg | Bin 20155 -> 7659 bytes images/tx20.jpg | Bin 10204 -> 6381 bytes images/xiaomi_cgg1.jpg | Bin 10310 -> 6584 bytes images/xiaomi_lywsd02.jpg | Bin 10086 -> 8031 bytes images/zgm053.jpg | Bin 21426 -> 5100 bytes 14 files changed, 0 insertions(+), 0 deletions(-) diff --git a/images/am2320.jpg b/images/am2320.jpg index db15cfbe992aa373cc5fd40864e09e9d41069622..ff2e0dfdd803d7ff5639f8a2b0ab0db0f0ab33b6 100644 GIT binary patch literal 6504 zcmb7ncRZVI)PF*P7!^T`qJr3a)+Sa(tlDai+EuEpmJVt~Ppu56*L6PUd%ovfe`f!z0HA1nLwx`c2mk=jAHbgl zfDV8P1f~LmsHnhH)YMcov`|`F2!xj90wXCDrl8}}VmPQJT2>*2gq^72(rJ-e}rDYc8gmVi2f6Jd<022*R9LP!u-^1qb>QlSm`AVzx`JZ!c=R|ME!vSn&AHr}q|rP5e0J(NnZP<=KIrxdwlVv^=?b~kM^a84#_eWVNnWFt^o1eq%C-R=+K$% zXPVOYF3s8S>gANRv!_RtA3yz6Pa`uv|7kk%`+~F8BgX}9KS!CVF+bJkw~UbhTXC8a z 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 literal 15605 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 HS>S&GiAgj4 diff --git a/images/ccs811.jpg b/images/ccs811.jpg index 4b9c8003a522ce8696195be8b156caa8edfb086f..cacfa9b0178f0f5bdb955308c1bb42e9b1870d9e 100644 GIT binary patch delta 29037 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 M%_$Ndo_k;ZANTA~`2YX_ literal 24853 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 diff --git a/images/shtc3.jpg b/images/shtc3.jpg index 9235518231d69285f61392cc86c7e1b72fbe9586..92630d34e8852649da6a737278f1a3b9a2e9693c 100644 GIT binary patch literal 15812 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 literal 18344 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 literal 23319 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 diff --git a/images/sts3x.jpg b/images/sts3x.jpg index 66595d77ef9948bbe43b56b380d86b67287733f4..8b0ead8f3aca740510c1a4b0c1917480f7c9226d 100644 GIT binary patch literal 7130 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 VoFE*SIwyORipIk}5~K`9A6=9XA%ZAF1Y8~J z0)a-lfi00XC`UQ&?Yei|V3d^{x1qR}u$Hqj(iWxe?TXa%*49UOqY*GGZUuR;te3Qx zgR=wD%>wM@VDE^L_LAfN&A9Y=`zKq78~mGy8(NNA>8Dq)k(Lfv*~t|N78jI&AfRF* zU`d!DR6-agB6b}tA`F!j5|$K#ib8~;(!vtbqA>6u#C`6~)yi60S4Hg)U*|nJ?mv?9 z^z;<;6cu!GwGo2CU@#$J5g`!~$hiargLQPX@PasEcz#(>L1GZDC}%g6lOy=2MGH$O zcQ-li^GJVB!NFNe>rcafJ6aA7KlA!c8snym{6`pnD~-{|IwOU2kr*d;R|N80oadMF z`Plt;M?VG6qmjPjiaMVZ3wsqOgu4UM(M>}|j{E$LpcTqW+7c;YDIpx zF>8nvOcV*Rgo;bRU=3^_`sTe^r5wt&^J*#@5LhtgH+c zFhn_8IeB8P{G6fR6IMaGqCAjRYOYQW;NON=8ud5s|F_hC*SGqoq5Hi=&pGEQIRA=7 zT3Av<1cnqBfrvoGpb&(p7!o2SVPyr860;P8TEL{F#Kn=^Lgyh0{j8dQs-j=4^V0m; z{1X%Boj*~9bUcTW>p5o5wg8mBApv03c#chivnjw605K2<1ObUbAmWR}=RdLw#KafK z$Vo}bNJ+`5$$ukia!M*{DoS!%S~@yfS~gZzRyNK*iGYNJgo2!ciJF>;g`S3<<C#;b7j9aT$1!ChbXiR|bX{Zh1}p>K z@Q7k~=d%aJ^ywLQ-Ur6HiAyM7zQ=HZ=3JBT+$aeVkm&aa2ncD2fY3`^cR@-nkF!KX z>B_k2Ee3RXc4BC6oJ|7A&&AFqXaEX;?|J9({f|VF(K7Ypn*5H@(ajWVs*uVP1K+t9 z1IyO*R{iw@QRpZ|a1re#Bo<7X23UAi|ATL8*Z3%)y;gRpmH^|Z1uTBqfdOtsi3->3 zsdZwiC2I5^ZyH#GJ3d(YVmZe2q^W&F&eaWJI8ZNG%vzh^-rd-iJ!OtDnj|2nWeoI6 z%uluY-_$gc0lB-RR>6OWndum#=Jxqty2ZU5*+?IM*rM--> z_j%x30g6{70)-1&ru@#c(W{m1eveBhp=RaLfC1)iHS}9E#0BYOz8@`+>_3oz;E#W&gwMB!tr01NzTM^24N3Dm9E(H;_Hk>tSQaxPF_ej$*ZjP(W;@L1H{pT z_E`%2!g_l|a%CN(Wve@|%+7SMorjb4p;v_I7~z1Tw85ma*De(5lqOors(d-SJQq(2d`GaOD0pgj6>op>Ved96D(tQH$0VtEU=RfzO;;y39e{7 ze&OQ>w}u{H)T<4X^*YHAa0;b$-1{f`G>uQUTs_o!?J8Q;*oZ0E@*@Tta4JLYR80|~?2psfJm;sk1{>Zq^k zN7_+x!x_NsSP#0C-iuLUNqeFPy-uevY?ip2qR_QM+1EU_@?Fp-zE1n5tLWY2Etq)e zql}o)_Pn)>9|cRNi97gjKO%lKSkMP`)V&E#RCTgNSomI5R)uB~c({tUifJJx3{LTz zBhXW7|10o;Qqz8dld9u+tXbR<|MbG#DQ3$Y`+W4pEJlZFWB&AB!Eny$&<=Xp_rtBM zy)KkAgWQ;I!16Ph!Q#J%FKJLQU#u{Qg!=DV>;U+DD*WlLY z3~$xq8?Xt>9i+E>SJZZ}*jjZ6m#4QUpNFpHjNR&jW2%9rcXN{Q8s;ws2H>I$Fu6Mqmq6QkVtzT+dq%J3vp|nuJU*f7PZ@so^}7O8aG(Eb+q9Mor=IH4 zR+g_*4GuRK(;F~X6Q`=z2`7*p{@mm0?boF?9=s;#cX?TehMc0${FuE9OEGkRKDj#} zxt6~!iQzjH4z+~dn1agt^RX69VMA^g9||RoMN9bj-na>ECDO{n$+Wv5jxi-uCGx&8@!-w?EiLVSkW0%LZCcsG z*&plq{tS0U$Q~5C6;b-DBR45nhK$Cc<1?gX+i@|A9}$6l*HT9rdO1=y77zQr*tCx^ zj)W-l){c1ek4T&@YHn`jK!{fNIb9759}{t|npsVLm%&fvp09e6R4OP|8$CGoW_029ROkKY z6;mqR6=r(=vnBp(?`Fy32K_!Ar${N79w%{FodK4P6q=uXF(}nN{vF&JtV?pa2~8Wr z)|ccSRlsr*a`g?_679Wj-}cpAJ7H?q7i?>5*PbTqa&FuOI(LIEQivHZJl4A$~!+0?>hJaPW}S+T<6H7PXr8+pv{* z|8LMUK!HELsO_M%ZU=iJR5~}Z<%2rtneebez5g`b{vfygT?^2AwZgSX`bhiX-dHVP z9sg{i^^kakj2<4@leQ5PWqUa@(t0c~$o%O+ZI!`pO4oRPM};+wkSKmet`<6kNPaWZ zdzh#;$YwN}68qVz{tTcuYu4M5!R(5WXm@hL2QH~T>8Tvvo*v|SF2NL~VFPuS-+}w` zn=XtV3eSzYh(vC16Yt|+=G_`2ZO{p_t76k$oB_U1 z)q2mj*4aEk<>RxQ{h2KfsCrlAPW)F(*j*5ixSS?4!7b&qR zt-)bzUQ=chc2lo}n4Y6gc?T3)r@v2}#y6j6zk^}?Ko38i0W`!Ec0J`Q{gDbGV=Me~ zW4$JuBsR9*Jl&NpjHXhq$xE_*S>2RTH`W(-zI@&-_Nw~4IQoKFdUR$`Jn4z&&P6hR zPl2rl{Pz;3;v<)}N~o<(`8}smnu2ednTeOCQiG}j?S}ReN|+B`__;2huwXma{jVO_ z3R=9VG6eN^d|eFy*Z15#5ZSoG!Q=_zHlZGC=eHGASqc%bPX7)}}Hl!Gc8H)$ADWyS<%Xgltfl0s6%+Fl(tL*NVXEl^Lv z;UV|0*$!i3uJ6%o1O2i@sV*dh_`RQ2G7#*O*UF2U9qbzvoThu^iU&K_#+l~%ApqiP z9Z(eO)BB>LwDQ;8b{9>TnWPI6Qq*z^ryq1-WO!@*WhMtd>ev#~vukS4-p<>UNX}qj zoF5$$O)q|M5T|kmV8pE392#)8tnVjqK7Ii6F~RCpA)=*?`Cnv?#q?5;R6QqrQ<`TN zS(9+Lso;x-V}%c_B19}-va#Z!8uj=p4DQY7UNMTA7!+Q6;Ud0yC~o3}SevBylxQ&2 zb?uW)kO@EJ3VeqEvs*1bV&BqbkS>N!Yi_^4cdR+;F8P^uT8r%saRvTqeM6H{(lz!U z8Cr>3$q6!E_=a+kxV9!X2lEzT;=pl%x@;(AVNjT>eZ#c}30F$U=F_>l7FrceXJ35| zggcw2rPE8^zWr4*!;_;<7P*eBYIZC(XP)J+dM+PMVsoQkw|8+l2z+)U=*RDVr5|xzO|~csgKJxqj~;%E!l{ft zXzE?IV8hA2k!YYK^ZOw#(Y_VblY;gutay7DrR@TJ(8ucclH9XPvHsgZs1HQYc+Rlb z?9fbqmAYPj8MXDOJ*EX(Q1zT>uXt?@zF6G-rj$5ltW`K*@Z-mk%F5kJ0j7^?YE6nH zx(7w-!7Xkcs+K&|;cN2uQE=;*3^^1n+X;-Y9z+*b!;L(wL@bf>a_zfAc}eLOvx8%w zw+0)F9J>I_Y<<6%k8#SO1J=v4xWYa#+OaQJ@NCp(YiHtw05SH zH?^L|$aY19_N;DsT+-dfSB~{c}xRq0ZZ&b!h9kGr;s9+rRsqX}mC&Puz=17S zLo>nunckqX0{AsWr`T@O`+QV}lW1Hfk(}}Ku&wo%s|@bjXU)>F;ZGn=pPpU)l7Cz3 z$NWs~;X8$hmoxI#fzwYsEuALJn^aLhBD|^LroJS+BphqbQjgRHxGr@dllRp%VwUSa zrbX*Yc6(oH>Gbc&2oUG_Gz?je{+)O#P*vh4K zCw$^Cxw)w9lErYm(toN35XWIzULP0EwkS;tz>XwQm`QhaIOR#7)j9)AZ$G`c(Zhv0 zS=l|MW5Zy!BigHTF?iOTop0?n^v2Yu9P-Z%0zWk=-C}vT3UF@E0~z(JT?Spb{R{`h z==HBe8umC2@!pZ0jyOs+D|r-1I(vJVFIqy%tl89bUXd`{1noG5wpN6qiEW~8g(r_P zju}Y4Hk*`fb$8t5y~D;f9mA<@-!Ou%sSt3#Q23$Ub&C?(NzC(lSvubGa8U=PZ$oKkY5?=f842sc|}b86u?5NTL}2{SkJWIl!AhkN+v8wu`QACsAEe#$97w4 z<+iQJ!d-R2Cy{QB5d&IGpl){&m=v`-7qGbtwR z5svS~JO$t0r%9Z%XOAxihDP=I*DujiNsYZEtjH!~*L9w6qI0kdtxICD(6_{Ct3!AR zzER)JFBHt9&=CmaI0LkNb@|YvxSagN?^`&>kr14WUDnXkBb&5y+;rsw7$~0kx`I%h zebF@9s)zIG;{D3V#At#A>F^vo#ZuA{(BV+43lU%NNEAJ1bmk_9=C+?#+vK~rw~hA; zVYtT*>PUC_wG zLq}=H^bJ|5s7+G^`8!Dhgz`P0_ zY`$5HZpF6IJd6}W8%x&eO+&8K3}m5eaDjY zl13|0RQKcPbtSX60s>ob_b=InaA7WxOQ|lGK7IbxaP_VEfQ7k_TJv>DURoaHJB^L6 zUF2kSt}pmhtT8LI7Klh;$Q7eg7$wUzm}wefd|s?qa|Zspk^ryud_8#}B%bd= zBi?*qg;LtnkJX}R7Ubfrdd8QQKC~@-T56Z1A3C|f8fLo^JPHHBy$(6bS_x4m`#~V6cZ(K#e)|6`f>;&V})5gpF(jJzAJv z{&`2PNIQn?1>F;UYExkhdmFwZvVvvR@?8x+RLPY*Yr5NKoPzAm6$l0u7(h|YS3T!V zNLll#?P%u{tK*M56CIirE7f!CsoCuX5}6yJf35ET=vzptf2JJ^CIU1p6q)mwhiF}C zk2njMP^CMmeMOe?y8nF|t*giLj`dflAo#8_{?*&grHIp47b)FIW?)gt#G>{bfJm8S z#3P?F$wY#Fc5QQMTB3f5&bCVzXdWeGE9B!jf|`*5JB<$R6`dUGBz`po$hkPhe;L2t5N0GXYaH#K6W$^2%7JFBTG zf%`??w1#00#*`OD4kt3$RJK^^w%RAIVsk4C^1(_kfQNfW7V&Qq2z18?eFa3!t5dF+ zT;njl?nsH4dW?Qt$Wul#=y%^q;7BlN;xgFIU^sG5KJGRzQP#&1y^FekTp#>;P#Bb= z7TP{>N@Ls0bE|4tMv4SPY5@Mm^qtFGo3b;@)pwhVLMaYI3Z)l#fNfPe1iF5yRJCV- zq%WD{rYgwb3aPRQ{9<4b&%j_{+i16F0yeeJ>!!B`6^vwGO3VXXd{iIzQ1)&uIsjHf z44_PunpdH(Ox~u9)M1siy2t{hlfpNqgGg!va=*N~^3?k|)h%LWAh{N`;Z<BfK4c{cYOoxA=E&f({3jAoylrjI0alUf9gPVg(f2#xY2G!EwDms~(@i zY{bqM0dbbIl}AjQh^*Xd7`7xzt{hGgcw0|d==02k;_7RB+4XhP_u_PWP0k;ubhc2?7bqbCp=VKKkbTP@E`<1EOFAZcDMb zuR&%Jq}Ijuxb0@eYiQ0#df2dqVj$n#RI^Eq^G=dUH-$_A2i&C#$PrT$3w z%vTMdi7Ukt)qZ;Gk&`8Hhh?${R~_*+dhp1#1}A%y-bl0TuX}d$JG^~aj0#&(w_F+T zE?Ji~RYb+*-7)?uezmOvat4VKV*}@Jwcl{agAD|Xc|lf0G%#f{MUvx5u_eP$vd?Nt zOhv75=VudBnM=;(&*#|3H=^JlLhl5NeF3*s*H$~Ucp^60HfJw5BT35j_RfK1yF zJF_io-%2xhE(TNgBd&MjbA$TF@Wk2~bOZ0t0Q6aDd$5gQYAnlQpdGc<*pedCOR)N; zlG!l1h+<==n-8^4ECr=4gm+Agbf{=N3_$6U*_TBO+QQqQr%BqAd>J@a<(y7JEm&l5 zx3+c<;!nz=JQ(JhRu|WddEWSc^UHBTE9VacW$fOd%K3G>{_A<6Fq?t{Ur=c@^Hk^I z*z%7~->2K(8gi}x3%&(Ce&ji-is2WdR(`6)6nTNSmN;)$VtEpAGE&XHn7a6(VRIn z#%hmJ2=PX*SaCSmbvWWFCuV?fG{Tr}q= zv9}AJd~dWBK1gzY%_152w~qkX<#4%NI_ej*RSw%5%atj@U-M8Xpj+lQJ-5x{7bM0B z@68`dCo29(*lDGI6@+!jv)c7LYls&m>N9tih!9~gH=6Ma=%?$$it!vHG^bTC)s5t|)BK5-aR zd`sn&4;l?WSdf#S85B#AwuBk=V_sg(Su5o~sjHgwh%;qO#^JTfq52XS2KPRehRle~uPN={fyE5=q6t2?8QDYccZ$UUTEIh=ZUxjVMi(Z)W%7{Ze-ecZ#=J_DNzSZVci zgE^uoYK}53iZX^*cG#8Z69BdZIkm#JOaSWl8;Z)Lw59}#jpVKi!Fx5e0h99Bk4&Pr zJ?&*R`NTm-E`65~6&&RL!7kB}(4W1dt#6YQ1tZ29pJ=I_p?$JRqq&$O$H)sTablcI`|Z3o9MMs*3@pMrXl zM4s$>zT6%7g*bR)1Z7z~G!m z+`(erqiL5T#;pUF-$@*57K;&*g}HJ(S4+`A#<%XtHmpd>(C)pG?a1c=1b-Mh zm^xLPGnr69CZzQeJ`zKAudoHQjfH;gx;p4Ee-YB2cqEL9ElX))|EV2xz+i4DAS4|VKaa) zl(^!q5~N}`LQawkL z)+H-he{R*r^(q`Uw>N|3S^HK*((=&7w>2Gbv=@r?v{)AtuJZ-&t7)rP!M)RjO;`rI zG&{C%$+GTCehx5vGl|%jfXpw4+_;C~2(nKYM7Z@43y{U9rHW*Uri$4>=;_KeH>8Nc7{&l8vIVOhriGg*D-@4{#+q{uruzld?x6jc(Y{26W z9ItsPr`pZ3fAflb58baJ4qDjzyr+#_+NA?YOR#6bI2% z&Fm>OP3U`6MSaCUg;%o!MA3gRd1fVj&`>W%u57?EoD@$ydCf!EoZ9=b%3s!-Kf83! zzi(F(M$;&LPDyN4Sx>~;2+mlYSD~9A+LHvl{F-+0P4!VVcl`xhx)M3tFuMTbYCGl`@LyreIkz?JiX1f;go^>sszs*GR&NX*-wBhsd@_9FNI9KvXOEuss zoRXj8vcp)K7k(o+WXF9bW62;aSG+WoieYihR2}xhtmJ7biR$bAoN&_cXh$x5B=nKe z7JwQ2UuZu?_>fxX#*y`Gz~QLT<@16j93zz0d00~`(KGtEG}SP0uHmHrUEaI?(6E%6 zWUF)v9&)MhPz4qPrd7g7_Ki@6`z^Y0Ql>k5>5MY760JmQN@&Ig1ENm=H zY-}uS92{(1d@w#f9v(g!@f|`iB^ebJB^d<;4ILW;4K2%E3JOLZMi%yaoLrpL47^ZY z4k#N3C&%wafH*if__+9_`1qt8G!!%(|L=C&4S?VRd4N0^KxP040>pp-Z+ii>03ZN_ zfsXdS4Q-<1#X%3!p!?Bd|2v3*i3I{;-_8RFG0+pi7+?SZ_$&9{$%uYExcOr7k!RV^ z{Oeb7$X{tW-#0_ubZ8%Vpp^8MM_ke+oD*f-#*Q(o3LeZn%+IX-o=$N zR`zcRKKSbo1XY?oZm1XDtnv~`wS2i8qd$uj=kA~sn+@;fy(lAS5ajceqKw==yI(5j zd+|>gVvBbKc4KG-y+vmiI*qLwXkpQuR=9J;QKZu!5Mu3blcv`fK7U%=Fm?A{JZ>8= z?C!>O2>$avy|s4lm~GYUF{#R`-NiCHU6&Z`S1C0`B%AXEGl7W(pL`}3KBWa^Mm=dh z?g*VbcX5eHdQy<{XD(1V<}^n>n@-|nXI~8=Xtn6Dro^k)ET{hE(@=_IX`0}=;>l%I zUPWhx^u%#{W75fmr#0s!U_hXSf>ES~fHChV;#XFdUz)F z<>?6&ItlNK6uw^A-QEe<|FB72l;hlwbQjBsd!MuM!9bT<=rBOziQ|j|Z+ZV1ZTK=^ z^M|L{YY}1SK>KQ$!_ua?fs3)Gla%S0F=YeCT%p79nJ;}U$2H+-P=-MU3AUh!uXT&b zgXItWR{SXZo$^u&eKmirfO-HT<5Ov;iAsa}v6p34jM?t&m{)$8xm6sGgI-+@kKG*d z@+(3O=AO-}5I=D@^1$irYPLWi%evQ&gxuIj_Z~?gagfR&0K;I^pQf#5<#1|wtg-3i zYXK*@5}luc;u39}rq(;n37Sr1^45CX)owmFwaWLZLfE0IqUFgf5USqKTU*ZP>g=L( zYRYkupBoa1T|AEUUEgzTiEXxH)q#9aqK5SLy1_O?BnM1(9h`lSitHq6k=!%Irx$+; z^Y88Abe8>S*4019~sF)wu2e+nkWCiLjbDi{+u)|9BDtDds)E%3^Z`?fB_&N1_lNe0Emh4 z*AocBz=VKF7)hCAu$ZARegQIaL2VXUIW&~uq7ep&1^QX*taOelx(OR}XXAfFCtoVJ z{)Q3{wKJ*|hB zD9k->0rcc9eLkV4Py1ofw(6<-i%wU5%VvxBPI~-$5_=NaSnK^1p7(k-?;B$a zA*lLc?Yy1(odf+_n$U=1;gS&#p=1G~_5#9YW#-sLi`Ik6&Tj+QuxJE*YSg03d}_Su zvCU)B=yqYFcjs`m{V>lx^yf`ric{k_i|oajd(_`~I%!kyHNA1Hc)yZd-|8He$f|;1 zqCX`&$?T4si5_>jch7i5QF@%FW_~V-T?ri{KH1M*%XgBMrB2Ti9C)-=6oMq}=q5_i z-;MRJu^{LZVoe*Eyp+^4M93YA6LT)eg3>al-76mI#ylBLZlpy!iL)if@KZfM6DShM z|Bw|^M+V_dub?6hvzPEA2HE~8fh1P{&gc0oIwJJ11vOOfxHSz%LLCdJ`V{k>?V5Uo z)1d;`Q#dnCP>cR|+l@VmZ#DGtG+s|WOsFZ9>x!>ei4lx;9U!EFBI-I^vn2`yid8po z_10L}R4)nquAgq#o>wEfn{EN@qd~9s+na9znLSg|V@K^utC_8Jl@X6696p6R{g5TD z_xfsJbnJKh>&CluvLR(XOtfpym~Tz5RR~U+_$5%4KP~UkyO@FOA2S}E7026t)jt0B z?}-lg>m&%Cnj7mTUxQ|n`P%jkjxW0Rr|f6NVRM1*w7!OVFqKTbVoGH=7ha9bwvvF7+$Ct3m0!Tl|3wv?h@Tep87tlB(gdp|`H( zz-KiqbWzyWp&4M)T_G`~70HI1=$uhZv`G3ramf&RVW^&kGBmK&;2z9Nerj18V6J8Q z^RWhnLVZojIN`)-p^@?@%8@9U%Or(dO|0oO1=EazI_#V^Bi`{D81f3f>vV&X9T@*o zSXaci+Cp-p6~#toY80rj?aMXH+3-eZ;hOvT5z|uy)(hiuzG>@iH8DluebbwT%#5_H z7l@grJ>De6w0en5;i347ynOe7X9tEM3$@wRlm_Q5=&c8T~&Mi8bOi&n@l#y8$i;RU|=AUeWerIzhP?bsi zoYIJdcX)A1R7kw}5W{ec&4HQmrG71fE^QMlWpuC}rILaN*Hf%_o5d)6m>(lr9|gyI zo=z=*wcYS5`KO%q3tqG#lSY47y9`jcU&OH{u_ z73^E7h5B7msCrk+9WTb3M$JIZO4?KsD;9h;67k*(YOkw0_AQZz8RrtaT-Ex=LtMt@ zPNz48_$H-_-*kmj4c;$k*}Suw5j-V>CURoEu6GfbI}hVe-Mbl+eB}!XL-O8l-P-*G zrzkO{wJvdW?%KDw>JnD-w!(TzRa32>xG;WD!?1A+KxYaDMwb}~7YhRu^e<7N#W52G znDIAB$;fKMEkj5I5?JJP+%RiMk$L~n6}B{JaieaXx}*g8>?#K*>FnF#w~ya?o_HaW zh}DJdUjIPtRKj1gJ$af5YMUgV#fVBAE>BhCF|^%_JSv!6VDRC1x8N{jU0=auPoVNx zZjwTt;NzJ244Kkb3bx`^S(*7*Nk>ZK?B?B-3pFY|HmNdY*}7fFjFH+kcr4z$-**&N z-6P5f;$lcbwX)6&CU8h}_XEg#2~vxm5DkXt#_l)K_bf^+q&Zfy1Yj#H2EMB{(dPveZ>#NmmYd}M@+(OGZ{ zaBw>6^v-Km$th#5Gh2IL&@_%+!A6nVwaL;MbiPV=CSRH&(AMB!e^5zrZm!+nAH$Ga z^+@tu2_m?_(wQ%)8_#a-!M*sFrDaNKpG%kLJTjX=x`0V(iR*-$X^t|jKOT?hvV>y^ z^3adqhp>4=g1PtbWryzbP-Ebw@&#Gku=Y}Fv!B^L{e**BP_YOf8+N@6u`DQ$)PTGn zA0xq<{Qc)MgHWs5yPdy(6)<`q0|a5AzyCiQ9UuV01coun!Y$ooLK51ip{^p= zCLvxJ4j1USQ`RP>A6sj{&P|lj$!5Apz55mW$5>o?_=Cr!vzop8O!<7_9?-3x zw-O|Kk32#{Ux@oGwDs3{9oVyi85PRd%uo5}jruvI;z#R{UP*P?MKtcm-d0|lw(wyS z+Li;}+2-)wW`xG72iwYfu+A;uGxo`96SY(J7@tYAAGJ-mp{D{aKF2Ki7q5N7^&FN; z4a9o6B=Fhr`s4d@q1gu1j5k*0DOYapJUaVpXiYmrao2Dzw)uf?JN5cEa^}Nr$wb1Gav8Nw4Cz^cj z@)0MzXu4}#0%x4`@wIu5&s6Ya?`Ytp_^t$h@XVKe*gB`3st;NgeUv{G^)}VSCSt}F z3gtgU>FyG}ZTJ{WF?lu}F*1Yw>DewZws^FdC^CE_YQhKnoQf?el}-%EM`7#}@U(R7 z<)R&r9Ma*-Ex?Wgt;A+vt3P?)6d8q8T14xPm$>mU&D;W_jk!}1M770E@B3l1C!#TF z^#qc`p4rSFU)dtHG3>4L^Ydj1mZVr%&e>Ar*E6GXL!Y?9K51lm+F>}Ob`^diy43lP zM-c*pBTH9JsrzSw3a4j8lC4WRJY>Xhql$nbBJsVE7(8#iQJNGK3iWa#RvJH))kbs8 zcXNdtPY`K!OAQlbrkX-!lS-<-K8~|0OOENs*8liU zE#IK8RpU96bg8?57$Ikkz@)9-K5hk<@Fy1~>N3UXd7Q6;e7MX08ms<_dV^;HlLMR7 zqX3}nd2#X<7cyD(m@3VC&+hT`27m2nn{-iC(Sy7etF_C_Y{_1ytDemGxs*e(g!O1i z8usgUzo!kIak#S7lS588-sPWLYjv+``8t`RK1%32y4t=IyZm)(u4yI~AN84+ZoAdK zkcRz%=;BUls{7UX-mjCk)B(E;%&>O7Sid{AP-%NEhR>sK&0(|E$U)S@AHNROdM46W z8T^zaJLGYn_lV0fPuTJ!P)fpeV&g1+8`ONQaStrVv8)_Ahykd9}s8=i%v zeA)Ruz9#7iGz$GWcmez-EA-jR--eApf9Kz40D!B0k;jto9~+C=^TpfF>wheaJ8vJz zs~))iH8DD8;^!MiIo|&@pY?H$^DMWb*L6j&4!JK9#N>lj4t!W^dmjK06q@W{y5Pd_>VK#;bJeP?v$LhQ3az1s8Wf zVJ)x!YE}Z(>pe=kn_EEtAC1EdL6-{<^FIkerw#ZwC5)DEHyMkXKN}l_aNt;Ex2*8a)a{3_+*3?kMAFnQ{f94~|w zQ@bxZ1do0`x4t@@MP3PUzN-jR%b$tMiSLhlnl5{befmU;?1Ob;oB89szjCLyn;YvKT^{XZNJzNi5Ek2rw!87u~_0fg0|@H*Fw zmnI}X-)Dc4!EY5~^5ERRV$?2TISQ`d5U=kWYl^N=dh00S9ze9J+kXh8`KtDuEHGjt zST=Ir!Y!@7!Pwbms@5^PBq8<$i}f+=3#LSeWx7~&eVwY=p%%w}zUjgj*f?QdNu(uR zBOpo}`#@yj!b%PnUnZY^pcorxXk{osz|pj7UwJq^P|?g8{qyA*4#9I+!%4Jq~A&u-%hj=I`osp-t`LOirYH%b+58K#kQ0Cn$JxUsU!A^6 z_QZ&!x<}mOPKrG&srEY8qs$p7=`~Jwt-o~N$9IziXKJQP$l;^%k;?HuMk3yhw~2eq z4Xr#7$L(J#mM#7v{m}EvrJ~63`cjYd&!QU%&Ram^5#$!oc?6!g4oXjW!}i8cVgEGP zH5JO{pdh!{dU`G?duK=ThPjqwzWE)v?cSZX5x&`69X(AL9SnN+o;8e}D#)x8a`bi! ztTUwESi?IN1W8Rqb=YP;Wi@O}-`3_VaCnRIoKH2;EYBT-a_LX4Z05vL>@tRRRh4N{M*Qj889|0e_wPAh7uuN}QKdG7dh6cZ;Afg_?exG>pR$;q zY4qB57iY!@c@k+;&wv~hz^Y3u0DehZZg0cb*_R= zal{EzEQ-n{=a-mjP_u zEe|HxJlOq|19_*cCBlsii{o%mZ}1!St!Rot$6rM?!rMGQ`h){hf(*xh5RX+I(rJiG zAP6@F5zVjk7K9GIMsN~w*?;c{?WGMRoDl#NXDSf-xTj0Bmng27g8n!u;krU`_EK9O_A5mMMx9dt~ zq448APcw@au3^~*yJj%lUPB&BEt%cK>?~I6$Aj+2vuozQVH>|Hr+>{(azBS;sy{4) zg+Tf6@7#%^A)d8s%RRWfU~6A%Q}&5S*Ww>)v9&V28<}j0wb_^sjptx9Y~G0Q^UWQr z`LKZfS*T**c!D;6{Fq%d>}|m?Bzop)S6U&)78YrBfC=kix$!OFWnSO+i3J-1b>2~s zGt-8zRqIP|bCfI~jI!klyiz557V+`W^(g7r5n%WPFN0L#%a!_@>^!AoOsd95K(gao zz>pU(zSGkPWF2Ji1o8rp{u_h9eb)W8O8sRo#qoUUuAYV0LvvX}#=*bDt>m3)sM73n z)HRuxxrh~VQ{HSNTn_m&Bx zHZ#=au>)iDlcVR+b&Y=kf5-da)X=t-n{Q0v=0M(4 zsoYZ@jF%ud=bdRh5$bKFWrHx4+)rfh4yg1?5AN*gko^qG2s_m}qCdF4vteeW1rm!) zp~&TdzRwlC1rR};5}ZJHtqD+?AGwPSE-2|=XN!?i#xffl$A&Vf5Mvimzd7DL3-~1w zi=U~=;36bqmVoKEd{A7%?_o{rbi&jWhvz-Kd=Ek^NOAdNzc1hyc*}@#So(pTJsD#A zu1sdapqo#qrd;43@>}4jk{k&@mgh& z!i%97l~Zx2f%#B;z4JL$%)6Vz{!Nn5I2OaRX8|oQ@)twCwdK^P=5#7OrlMQwrCJh# z+m4<-J9eGEsM@d{*c-2Ra;}z$WAzT{y_xGtq>^epS8{CG zi+r47D^|Bu1I#VHv-J9y(n54kYDgoY@KnipseX`P3p6~GHjhjFk>NXZg3i^1o8y(P s0Ji&RQH|DD?iL!#+{Hi}GG`~ZDG^C+o>tGxN@@dFGv`{hr@@F@5nBaLG{DKo>wp zMh3V?`T;KH09pVVDk^F!N*Zb^YFZi^T6$IndOA9KAj>62R!$%{7blSO3J<^NH6Fg} zd{;OHZwg))6PLUp$$j;f+${-NQ3*+jzivWCLrY6fN6*f{z%Ied$t&@{y{2?EGj$tYOKEP01xUm=rI zQq$7kWMrZX3X6&{*b-c6O>JF$Lt|5OOGoEtd{=i*Z{OHBVPbM>dS>?9()Sq{j9T%ZgV*RvhA>eP zow*ec4v>z0KT_827Svt<>Qh?eR}EXrMR$AzUcgKDzd%pKf8QFlvM_7(Kd)n{0xI<+ z9P-((dFlxNc2%fvIu@5Rvb`pRmFdk^Q|qnxr;%+pu1ZD_e62McE5?wy0pbSDF*WG zHla-$W^K)23WILgp8;#d_r+b5gSTL>ib^tTp>1M*MAtzj+{kS?l#uA5(fyoNv03u~v^mX@>qIzDN*jhV?R zAIf2PuQa(FU)e+67mQt(jD5BW|0FtFFSXs`?^G-z~KXVd=@q-a81atd;6z&U26UEF#4f+^1J6tnMmIaeMCOB3~Dmp8J$6pa!e(z zDo46|kS{CP&^ z?;TVqdzRmeMy`0T4%3vJAx`BvE04@ahRj-&%b4^bFP9a31~*_DQ!L)W<7gsiL2H0q zkwrD3f~{y0`vw+!vl{GCM59n#Zldwud`_Hx z3%*K(;;_hFH-iQ@VHMs{NTEXcgwT~HY{l)Y1@Zbe@k`U4lZ8Ua#6yg{;Z}^G;>)+~ zcRImx^e#4mN}5A9&QRGLL?=Be7PcKD{X52wNg5;ZIBcBDvlP@ho9K;6!y(5FryRsz z&s}220K2KNbH;8P=q;>%vE|eBd}ri49qmr!K73pWK5Tx;@ZHr!9Y>`1I<3O*{nDE< z5ah#~#{BFDRVLXyg)I!3JntMx6Xa?1K5Gh8sbw|inZ-KjP_n>mnWC3Re6#dT+vmw6 z1+{`YIR{77H}hh9%HYb%p=F<|j7s}LV{PbtM|uCw&m#c~llW4xg68;t`4nM#zFn%` zGDN({R~xZWrK0Lk8LQSk-l&A!o1g!YgRnoTdRyVrHka{Z63h`h=KSb4s$b0=mO2=J zC1tTRwCVUaHXrP{ZW43FOWz%1H{46iJA7bA5nnmHBBlQAJDr30FANii$q0JEWn%VUHK9CUkoH>?Z6CO52_ zj%{+y(e7Y#og#%YT0{+D1Mh42YSmH{C~;6?Nho+1U?N^)Xeg(1U1RAj<3SO~SHBxM z31WuJV2h>4GkzJ1v;*9pipx01x zbXMHD;zexZxrmUH`MCIlKr73~QDj?=tT8cMd+gRTZ+Dy{h#fO*$?^hWbzzp?i;Zz6 zrGD2Q`bf$i-w==vP?4XkLzfNYkEXS-ItHX=4_iNv6Azyd4*>@~vO?zMeVyQfgtHe! z@L#b9x~f>c4Q=bu6ixb6YF>Z6XgV$Bq*Ji9`4-z6yz3X(B{h1oq3$GJPig`tEg9ald3PR|fP) zu8a?o3b>kM3)Nu<{42x^0^}X85m6&hukcs+X3rm1%9%Iy^Lyq`to$)y@|_yLywZqN zYn3W2kktS4n8I8eQShSyF>h%o+75PgKvr}iigYV0{NCncmK(EW*G*o$3rJAP zcb0HAyROetY+9{=xJ-d$@HL+II2<%D@Er(>5a;}A;lE+*j`!xKVgHm6<^!iY#B8h8 zk8+FhP8W?EETsg3+8=W3vHuWP8Dm5H_)k9bwU_Yto`o+0EiBeOUum!$va`H{uBKQ~ zi3}>;9#j&Y6Wdp@em{K2*?OP>qTO8yw=0zo^L@HDmNDsURpcX~_e7#D0UyvIS{s`- zlU;IafH(N-q;dO(`|2txcG-43xXSuPH{sqQo;16TD~ejoUFH3jKlnVypS7rASzNRm z>{Uw#+gf3@-y%lDw-s;&e%#fm0oCLE#qphnx!Yf-0`mv6dvglaQK1cQZgc4b9fMAU zb@zq9dx|kqT)Q*HJoxNKL>UUxjI~W!5p2%1O$U#&?MO@4k*n4FNZ|PFk#ChHIF`y}&}Cd@;&!_^ zZsvX5nG!7muuM*0y=$ujb(kC$AoVvxZk$DPHwe;#n&4Pxutuh1f!ZpKTo}0n%$ub` z_mu{e&@+!vAMxVmlKucp`d{-R@%$~W7)O#aE0gYQv&4Fy_EIT=PX#-RTA{GimO(DU zeJ2bu;eh2WQef3oSScLjDuv2e5E||-19{|Oaq|5T_aS&mP8#1m_kYT0 zrx7?7w!n3XKy|R9p2etqz>M@#tG9^pQ>RF5@5v{}_i?9EAt6T|A(?TvIKr4(cN%pM z*e$vJ-3KG$#j4_y>(FY`)!R|62hjl;38Eki1_Fj@|=%lmeworE0*d}L5%1T zZa$f%eFz=Im`rmg$d1W`1sMgtxxOf^C%k0ngqmPphd&Oi_zvOqkAFUJ1msae+)hC{ zhs|j6%AsBvjRzC#{}kPV?FtQ*yb2!kDQPtKDK%5+dzsp(3YQNj*q1C=^@Y~6-dvXt zv$St7S=cg7-NWXKY=@2Jh9v}-uE&l1rtJy^gp) z@PJ4`ZJ_605!ocK*a^r*NFu5aeD~P4G)G^Y3o58uJ|48asfJjq*ZG6Gr?2LMR7_~^ zP=AE5dR|KWgd3R<=P@-8^a{jTl>!hN6K!_g3N?W~2#urCPq?`%hzL2IN@cv)M$9(K~zVDY~Wt+TR7+kE&vxp+t?yd_ujBpoHJ~ia27mC-;TY001 zp)h1J7&Sm5ZWB#0^)$^da*7`SVVdZs1DK}$r(BEYxN2RU(i*9|fxk2*-Jsk_dZi2 zgR+_$hueX_>eWOZtJ>_eUhybEJ|q8EpdPhgx4v^A*0NrBff+6byE(2$Rf?5z_|eJe z>*!P_uvmG2`B7K%eED$mC&QnT@e)>GplaBJu3o^a)L(cN0oZfyp!H3xP>$h`Ib1M- zr{orT`|0xn)AuQXnk|X#L7zDLDCcm+>w^1VWLvMXp#x@QB4IvzW^Yy!Nu`e{pP}nA zPTrDd?F&pS#~bGQrx471Ofe39kOIq8Kv0BR+T%3wlKiR&*EyV)rN;PEoX4)j=L~L# zr2-~&5Q0TbKh1tJi|Gy)^wZa@gSm4}WrT@6!8*o>RX!}HyWQ5ARG3+2?%N_7s;wqV zd)j?%vO`L@>)Tu-`1z|fCo{^d9YZmKexCWJS__5tcb1<$UTQ^gsJA+#XLGD@Rj%s3 z21H19cM+@=tJ5B`mDV`GDuBWa4M2W^O@F`t@{jFak~Q4RWml-1l|TRKt=zDR=6RvS{r!OU(JJz5>E`ge{&hzoV3UeD?w~l)8TYjGnyP8A zpYhV0Ks~g4xJ{vi1yaoxWMM6y3c#+ntYhH(#osxbFhCQb=&;tqAVj{yYvmH!& z<(hVvWpCry!;)a=`xY0r)1yh{iUyxWy&!o2Xb$tJZW&t<^x1L9C?)L=khSUH2m3GTt>7WuNEiI!XR?y}@ z@Q*W5v@i&eVvi|R^l^D6Cp=IR~u6qw!Q^v0Co(J}Q zd8|*s_RVMkYmRd>KXkONEgzv|@ zh)z-dQz&2 zUJtKGzQ8zID=X&&>iY$%iXfLaAA7@ZbL?J;I&}N<=F~H<;X^|kWU^Mc@GPC^Acs|W ztdBRm9jLp8Y274N@tGPips61-jsKXshg;rQ`gmCCgjksR-t zQ*qNf!HDklZzZ`QA8$U}UsjBa$~JlP9?y)w(ht4SaLy84cIb;M7%nVCn+sJJ^ ziT!PH0SH0|G%g%^mVyQS`=IW@2(k)RjKR3Kz)W&vP@R>aujR5Bg$XeHMCMF9vNrdm zE?hsy(F0?_htL7T16I2Y6X82KX>W0CT~)>yja$h%0xG%ta%8vj>IlSO^^bDGOu zV?Pw@gMRasiJFV1SVxPCftr3;KO>T^yE=ZiQu2xw??V>BDC#%VbypxR=1hw1l2@#+ z>pmaNtQ$8(PjkD3nWLmWv>^CAvI+1(&KNpOo$D%cjXJrzCPG3CJ3R2FgL~dixqo)^e`~*Zs3HyUJYwf?}nY(`6`v= zqcH1fqLU6RYqL=@h8=4A4=EQ{i5pr0T9i2nax#+n2+S_`Y?xKyO5Mqf?Y(@U{#A15 zARBRL`&Rz4_e+8F>nDY$kRa!uDU~NewJguGy`5gJ9aIVEQLoj#{5(89_^?GSy8Y2? zdRb&?pVRU3^1k__!ZjuHj9TN}GUCr^7&~xms(HT&q3~F(8g?l5$Nf!TS&kLIRq%;c z{Swqn$AmR(qWVg`f{p<}5sMrtt+sr2Qvvt8^gu9+K0a&G1d`+JU~sv6vdEU$KlRl7 zrYD_2j;fdbNS4L3u_zre>gJ*l()GNuEU@Z_{?}V$pU%qj5x!15c295qkusX20~^kt zguj=`QLX-RD=YVl6K5nUFdY_Cf2!tI*S9erEC6*fXCAk%xFu4bVen8$DE_%kwhhyj z@&G>GzJLX6sjB^>;>vK{U&6tNYNsuv&(jYvA39pdMr^Xhnp))+3t_;*L24;>sJYjF zmC@?>awT&>iQSX6g;$Z2<(U?}O>Uc^0)~JLfDXTHk(N0bN}IFQXzB6a9^v&a#wQ88pxKjDA~fe?A9Y0Ay1lB;POl zRdz50(4f5Ocb(uXx64^9VW=2^mA)b>#nfzP3xp@`b{{hEI zL<8tPma|+6iC2{|zI_y4pv3=bJF+8ti75a+`sem0Q-3_oAq}n)cxbr1@LGRE9coQzGsSTgXzz_Ce1N%3|W2PJJSjmt=t4~RoJ!N891d_hm!Vi%`^Ze6xC zxwA^)TUkQzdh=TH52%Yi+f?mYal|m;oE$A!k=mMR#I>Sfo3a}hj)s&!`6W^wYWdz# zEx_ND)5i7>(ZqKBqoLWe;-0URAmBrzul#%fAnH9^=w?)JX zK`*M46_%mZ;g&BE5`HEfavy;qV4*qdM%b|1ltw zpnhxwnGD^PbW?&=-yJy(F5f0MO3UWM61RlSL&oSBA05@uJUTzI9?Vjl8AYwGjy$^= z#jcpJWdKVUAW^#T5ysabC(MlUZ46J0oEl+1*AS2*h?-y(LEApnxXiI%bZZBCWhvt> zh)nT`(m2=II!C0Ta~L4&L%Uo^3Afg4X4|nD<>vnQbq$9U$PEv2|Erix)%9is++Tx( zv2I+n-TJ1EeCUn_hjHFmXqtT>PYL;Ors?H?(kL`q4h^WO8dUH}nqW(Jc?y-7%*pgl zejtQpIP)MsYrDf~b>&EJ)qM2d%T{1!`Fd~hbS5*ut^!Kc^vH_1Y7~-VV2=n?3VeSm^7`hl$v*M z#T1~!Fki1n?Gf-+f2TCX`Mq`PYmbIERmERO)L1`jt~}CTN*BaGlt}EhrVlswu1Kx) zGiA4#(KO7c6mMFpkc$r~ka}O2flWd>FJ<kP!zTP3K4-9H(@SAOvMwF zU3!ZKre*MOma!TP!_ZIuy0O0o9a5aY4RB_kq+s8JsCtl#82SuYzR2((SK)Ss zrkJBqCFHVHx)b6Uc^Dur&H|PdX2DYokS08+&_~D-Mkru!O+?ThWMb_6gi05ygFmV&bt1>ne?XJS?~I-JKOhe0cwN&A&i3i0nalRiYs`hAO$qX8t!A#xyJxa6Lmyfo#@m%c(Ow+%D3`mN*_myp4c`MMc4_FUko- zNUxv^m+AfFvYtms`$??P&E3XRs>rU2C>j8O#@NEhQVF#gp!>{zU3a8=nSCzGQ&!uf zNNj#m*9st@Ttm1Iytvxlue#&4z+YI_H{JDEiuc*% z_ZI7g{q9XT5|+cd0``^jb-R{}zDQT5K;ANAn&#}DI6I1D-}H5I3k%~LiGDT1lBuI5 z95IEADBNkFc`v@HD%q=~{cMNRU|1DhNr4_pz8Y?>qmurErS1KTD9~DoOS6H=rMKNC8#Q1Vd|6GITj@Z>KrQ)EL2tJ2Dk*23>zku%8f;FBIG8Ez+5{T zjH+-Zh4}qh0H7CJ@?%U42lXJ=e=}Jjahi84EdF}gq;F`-voKM06u{#X?F%53zzi|c zApQrp(Hk;*=p|#DPx|i9qw`KL0BM2RNlyMt47m-SZjQo#epF>>vjnX6=V;)uPJ$y0`@6B zY~MX(B5}Y%f2kP5iadZDY4wy{zG3O5fE(0a*m%#lhvn0^4I@Zdv}+tpu;rKu88G@$ z^P%qEbNt(v`8sDJ#HFFN^cb@?AziIC;$k!{(dY1uFPR?xjU5}HPKFH1&)xoD=x3!Bj@)MsB0RS3)e(7JmgR2fx*DX2Nq{3Xnw zn~LILk#0KMt_;O^1;BIEj##4KW|(=%YxT0q`AJnBiNk>hkcy#8Vcf94Wdg(Pkd&gr zs4tRc?Gh6NC+}9VjktsgXw0El9$kzS`9HRO;6+$gh^iRb3pBios!C{$WpqRd zsY=KylUxyjjK?1@{mY#Hfa@@icD7IzVFBf@1H4G_zA1(WNK{pra{nM8BtB~`Mv3a+ zJ#8^PetJ@a53~d_1+h31^m{*wL|gbf_l5qjmLXgm<3oP!;aFRDdOv?fZ{-Exb29tr zb?D?BwmtA?uimQ6A;~Adr8mQ-sXP=}B`lG3KQpi~Ur7e1_?B>Af>5fMZ=ORfNhp*X zEGwbHODWJh*i`B2rC1Be=)+eM+eZuJl}(YjXMgQor-V!8YWQ?SjMmV~8;={>BSCR()ZXKR?I(GFY*^{!9NZQqg4k+v|6|d-Q9dUTN#* z5aB;%`D0&Jc&9`Jb6bF7r1a_K1)%M&uOsUZn_C4kd*&@qd#d6;msvd+wn?}#E5yEO z5sA!o=n~Q|Ch+WoSSqB#v>0oh* zkP4Xndmzi(o(=Mw{>l~w0nikKChy-xB!v8a(MM46s9YUZ_@vtOyNo+#zG2XtuTK2N zo68vl{bj({tW|yj**zp22&{E{_pqUpQQPHV+O@}Le$*0mjeG3_iNxP!>Zw8f!pUAb zUJ;|8gpZHSsA?22{FqF}vG!I2U!QwP!S1r3T7oHqzQQlmfVBk($r&gI9RaLU2mKoIU%IYfcx0f0=Pa~r%>BV0| zpx%ND^omWQipDrF9GDcFzM!sGJ{*5yfg?n{8*&Z-T^{_O;ROiwM?L#P-p|j~Cv&~a?bdO^ zwC7fY$Es~@O7a-xGo6sBxtmv$-0IT`o8q=ngzwb#JAu(v#AvGq3y!LLd8|oB~zB(7{|K$K!!%PZkshDIEyQeshvbd1Fjx1Z? zH15rlT({R3fIEnas?a+Sm3iaezZjxhEWL}LXnm>o3MT4*jdIA`|kG;v&|+VJC6lI?0$2@yF3V2)zREAk1s%DSTg6l#v&9$b$0 zHI}AIt=v|M`+ZohD$5nnuEsEZU+$BN;S@c!YXT`*>AL{b&eaE?#xf!$0KJp026c39 zF^yf{xNL)YVz`sH2?3*V397p?bIujFDaHz&HF!@G4ctm>XC-Q35!lB}7XX!W>plS= zKS_rJoM~9xK_2bf3VHUuNs^y$C$6iCH?8D6i@J^qvud(<{4xhqmNz7+XKFlPaL%g1 zEqMs{;Du^XkubFXA)Nez4s|pQOfKH|0PZE9_?yZ}wr@T6ytbNLidP@@?0fVd!dYW} z7td{(lOY{!vJLb7f`#y$xZ6k>rwZ;Dm$gHRgpeuhtoZPzuvk#R9ZgJ9FHRrB>U7Q@ zthh{04P>K#*Ew6@j1LcReX!X#pjf&s(H}=(Cb5a$f>45mgv(Y~hlya44}YzM8$--*2(Wn)EFVW5YPV6tvGO0s|u96u|j44YBD5)V>7jF`w`RUxsV(S(b0bRUy zjdtd?a{kT{zh}c#0GmkrW9Sp>)TZta>XX$s_c;tIKEG}e=jl&mJr#*k`Vi|^9(1Ka zCO4TOMc8Fjn5X*BcIC2Zzmwh9+i#42ISyq8=E_(bxr-jfd2yL8p_~c@Oi}^shJn}e zC<~BK4L~u8G;&8AlLap_qkv;_!YstdP=nI(5?aPSb!1#6gQTitGD-;H;%|y@&Z9+< zC{J)PG63$9g^pn~b(Bb)FAN>FB-nj~a=*0zuJ?+$s<|}?F#4ySHx-ke{LGI?2Kr9{ zovy)^=w+3D8zk?pF<+Qh*y^FDwXsbUAkuh-%s03{V`4;^5}{a*pLTe zJ?Sr&lG78XT4R&43P1^AF7!z)7A(aP9Q?W_lv0D*9azBv=gIb2*(=u^*Xfk3G9_B~ zoQf4ayt&*R8{vua*wUWld?jhJlD_yjHC%tf0(m^y z@;i1FeYDgXA^0U`sV&aiUL>R$WnwE=Jz6m1*?Q7d)x4Amzl5B)f}y&RHPtO2H1lUZ zSI*0lXi@~lO9|?*Cp2A~rns#@`IXJcD)5T9>wvs>&!R<%18VwIj69WNiriyzcci|} zJEPDJn68qw-1300ou=IrS@?UR<$a@(cpKgvc0a3fo|inrKaRfr@5W90C4d0$+cQmE zl7l3qvXiCw1Hy?WN=dnWxCLS_$gtH<>lu?%j)Rj??p>l0530}fFm^AGS>B@VwgBtc zFKWt~*`6=I$K+pqu!8O6t4gN-5`A-4?=@f(oQC+4)L1nz zW`z8`Ym0>|rUV<*+iwx?`F|}cp*3eR{7@A+T^S*`3?EKaCXG(`r>Y@@`Esz{;o)& zoukSmtL`>Rwia1+wanD2sIpkD^pZr6L~Vj$!%|rji6)`dl4a;4(TZ%?u$s3n&HrL@ zT@OfstouHe?^Xe{XrXckvN22a-$aPOMy-_!Y$Q`GKJi1Ynjp@yDBl%W)!j6&0oRqt z_B$@V_HME5_Q5n)h|H}xNw$qj{Vp^}aCYLqT|bc!HzdQqBeCwe4@*!)gmd4IL;o61 z;WIKY(x9?xeIGyRYRAPctDHQT&_YA;tIX<-(TP@|$`wuW&z9u9O>A*F(|jf5;o;SC z1rj9#l9E8LC{xZdu+xM$qr1^HjwzKo4W{X1tADR4;{Bf&sJBoF#|A`M+SEqm^x4Uw z%AOvmu&ioujv1_&3dQ??WCU$c~DpeD_mu2)=wvI?uAw_mu^yUeM+WS~p-1Y5|sD$s3FUIaG?Fbi3yuVp9mV?B-sa)&pDy1~>H&YliTq*F8 zw2~`em24{EwR%y)UpCA4=#?GbCa}yzf`C|6BD~RY<=yOA{uOc7t8E5n`42a#D)lo>n}%s;H}MGRbgP?bZJy+CR^=o z+upirPW#)URrBDQLdzzR+-q`Aog(a-Yxgz-A6QqkGWm~1NsG5bq+A~{7sMfD#mL}E zUDXd|P{q@&tfzWY`&d_Kk_Np(K{65m6Bo;)F=u;zrUG8~U-o49JXN5uRBy2- zv&Tc6J2 zUNcT7BGK1st^}_?aX$o+@fE(ctGbyWr^GpRwyHAaT`B%)nfUaf?&ZNB?#(EY8uq_AXgIiHJUf0NVV+8YuAerHMkonIA#v+ zBL+3yWe~Z>g#YZe{&HO}-W|LaBx`vUaxQb`8HDcRytk_=Nxv`T#9MPSYyNtGFXIuI z{kghHePKDV!bLQjR)kvR0`M-fqdG2YYPd}@dilZVw|Rt);SGjk5?IXh?xBm->>Vsk zMWA`1ON(^#!-1kb32e5(s(ZVVS@n~i23Pj61N*_k!O9~^mKin@pGyk;vUdj}>u>Lb z50_bPD#7MXN7Tu zc+;SZ#L8NWFJkymd z9QW?}CV7)R;?tR@M{my`uWl|kx8}kJEHhgj2cpRl2)`Njkw;2n4=Y&S_`&oj0w`>Rl3=OkaZtQRQvraW<;+MY6QoH;X9@#t;88nJg8;w@fz0g( zIc_k3IqqGaVuo=R+!3QJz*O1}7?zlVWwn^IsPL`tFyn z*qctW-wK2iq4x|1`22-b}3FUL)%hp;f1jpBqeDJx*m0Qd&9UO#M{380I(jboDO z@*o%8f#&EK&Re=i@#wH;uaWEESm=F?*|FPbz5l)Def@1; z|6>wfik*z-bB(UK4r95r=8l7VbAbW2Ip>R%kLgnG8DeYL5S6Hu`1O)5Etu^Yny}Wn zbp4J)ze_*N!4h)SxwrDI)6d$8ej;@9%faTQK~B+;T`sBFSiSkSV=M2Yjfj$dD) zm-!np`?+m!qZ@o2`C<}4Tk)31Mb0_Ibm`%mWSE3Sklrg4zSOr>YT7=uoaVHaFJidZ zyORCh6Dw=g#4cb6!17^W%JW{eXYC=~X|{jp>)os!2HM5}N`zYhG+|G@Z&j*o>Rg#P z!hIi=kL<>GMqF|^01do!I%2*6RA|h;q}j3l90pGH9I!uIcvVK{=`Aq-417!i7y{P$ zGcgwck2B8_`sjkE`|L4q@+nAt)fM%+YQpyo6YiI)7Xa8=&-1e%Bt8Hc(8&j~PXN1@$;+$^ZA`2+pwz)bj_DK1CORI)gk$LR0#;hK{(^X{+hF z&|)(mw`mqD6Vp|j=Y2>ZyVyPyspYT1K>Zd@>84E|9C&Mw?au_fO}(fuGSs8+Z1U<8 zJ8V56w?m?QY`$@x(u|7X0}ZT|4IbeAX`N4Nse0#B^aiW@uz5r9ex_lE=Pz0cs75!vPaBvQH0$WH3da*=?{`Lh+~<>>%1qK-kB)5T84R7^;(dOCvq3+JjwAZ%Z{S9JjJnx3A*6){e#1|NYVw(!Xjz+Uf)dLA!*sX|zq<8Qr~_yKXKwaI2s z?!CR!f!p1u8+k8oh{aP4k64AQz62--kyl)wq$ZdZ&bGG%e23TxTytvM=tt``?H{Pj z8|41BoajlWrP)ri`SM}at_+m0Va~J}A*n^7F@LKkAplq^bVhdT!05h z(KtSDM}rmIk9N);wC5-@v3J|gqgO5xZ6^~3hkF@J?PGjIx5c3Ap?UO6TufrISv~^U zhR*IM0}urbF|x9UxfcLO1z4P)_~S$+^FNVW0z*+(dUYHc00&^k6z!;&Bdrk%IDVn4 zWUquapy29F|ARdGn$VidTyr$=mA*z%Kx~9J*oSeQ^-!{pc(%xRhy-{j7R^F z9iy@=4u8`C&IDy4LvV5SPiZQw9m;^D&Y*^z?)+GV zQk0;$K}~TXDPg4_r)RY`M8et0Eb~idXv<+Va?{=2?b$l%%&>>ZAo} z5bDih)Kv*z2;P{`p({o%OTs~Yjir!)M~c^MlEZ8uZh*#m{gbDA5uPl1jVC(a661;- z&Q;3_DA)mY|1*lSnTdFD2^nD=>7t0gv&#+0L>{VVyWb@$>6}BhQe_2pyg!|;8@T$9 z;UKHh-$C1>(5$?jD=yS0ACGz5Dwfgn$JC7Kuum;Ny`XGA5YWbxUrDEBmFThHVPPvS zP-YRaX(HT!AEh$IWu&8=6}VWG>P3HQ3)gn^AeQ(li{Kp#Sua&j20)ujiG zytf0(Pp(XU@%?m83`_o^iT0CC+0_zy0$fW9xlJ}f<@CCvp*JD%0ntv$H$3Ua-j$ml zp051Tk!$St((#xh9->gyEkoD zmKP%1f~6lDN1+xXHY)8sx^=LB3>Gv`B`wmoGR%mrPkxsDvg=ZMrcU4bgr zQT{S{5zMD!D5N=WzE$W3Q2xP(2jp#ww~Fnqk#%YF5iw>;;vlc$ISr;g-hF_%xBJQG z+^!;eCS{L2TJ3ul6XHjCjAj%;V@ugO0D1QNfBSzMA--=$>CL}g&zeA8KE|3;M+ShA zeQHD~|Mo@YjBFvQ|(=5Qx?TZ2r!!k+GhLSCgFi0nD|wQ!Ti z^=y|+9#0{D%`&(zWA6Gg>V2H#fQpmK2cVNn!Xo#8(W^vMveFsn2u*E-Se0yb+xwoG zK(PzJQ}-5S#lR~J=NYT(avFT52ygeR1lkKgLX5gq2`0rd?s2Vl@F3`y1HP-Q z6rcM=>jLm(&ywdeI?;>k`vu^GCD}|4m2Nk<7hkn*!ArM9I%JhkHHp0~CoK8}p2zg; zQAo*bzW&499RrrH*i(4Tr=Y@DsSzAe*G18BS&_#Z90yfGG-tx+49L}6K9#k5rq@n= zHTc@zuwLy~O6W@d7>Ss#v-ZM1kX3Y!5ir~f6>&Fn%s7Jt-(|F9d;HNQMgW(`ygoK2 zsX*z=tdtyg~H}%i^G<@H8nCHF_W6eW3#4BvxsDEx=i&WavcaHfmF@V|!=l{BeXG3te z9U}&7W=H!%HO^M}49?R!r8=kv{8JHteW}|VjJLDSB&)}RsQ@HH--XDoe3h12tPh%X z&o2>7_#&5p@t_#FuVNKmLyqo=wawPs(Te;6$Ra9I;``3Mfmr{i zgRqI6stmrV8y|{&Z5m}WO->rrn(~;AystL5A?LQBh5DcLRAqgg#`EEqJi=UqtmjMp zhQeBdMc#YLeJ+3R&@8+gAvyb=D+KN6)M3x?>hWQ%m86JYP!2%t)Ql!n=bt*v|B9s; z|10+(RcFW#jLcPmw_XMW@2<`=5j4IBsmDdae*JkYUuK`1S}On@3^)Cp%lB5Y7xen} zY|=dwJ!_XCwdg-nxgt$ZPVJeuyP{+QIxFl9YQt&LpS{$bKWl5y;Iqcjxd=8tlcCSm5Fj&8{HB1)Ad!wq^?AJl)KPrF*%zl`6a#H~Wp@plz3V3VW8vVB3$`1HGxiDhy<&9pKlcFUx^Mu>9QlIC)Mt%0I839r{RX9*H6co2H$hsQGdxFyYXod5a{w>(W?FvFYoUi>wn#He6`S{ zg|CCU>X$D7K14iv@&J%V^V5);WkottX%`a>je3l4+Cm?DE~z8E_K$4zGob^e{EnT< zdd>$s=-o+f%hN$0tSaq}2Cq{}1>~XZE4M_(y=bTEZz#VmSLpSApYCfhZtz*B=xh8D z&;1w=VOs&&lAUy@bm+C?`%y~DteE+{vt!<4!W*=8)@arr?|o-&?x1JAyI1cPTG^km z7^TZC&kyBp?`iNZmN^%6Hucl0>sIP+?{$pySsU5Os*+Wp{5vK0B67lKQ~|HS9g88s z(921DsQqYFW6twBvMG2?hz~I~#q0aowq)(te#Nzq;+I*<=ywMtJKvzL?rrVl^N&Ox zY>WgvWP;`0Ra^h*JAx6TsDsEGBc+2sfB1RL_PAmw+neY9H$A>G-7k8hV=^lSLL@2! zLb6@G^F%*{^*t6u_QOfy7du_E_qH%;#qr+j{*C_T_-;Sd!Ej7(4JSZp{;X=pCr<&B=4xj~xjsk*rP+ zy~8oYLpsq!WU2oPK2smb1r_ln+Q)kN#Xsz=2%AYXKi{2a-~rwwCg*=b{{Mo|{yW7i zj1-(6fBV(fZPoCrx7Etu&7U6R9ZyC<`QYc7XH>L#+e@YeRmqKn%WJ=9C!_u0fq=I^ zq&T~;MSV>O`>C8jJG~$yqkJbE=cEI8u%`5*vM+``>#)jrv>?35qFy(G>CtRtXUXEd zPN>J9P03Le^>3Q4Whl)e3c?8W4{qL}50c);+{jg(W>iR%(9cR_A3-}R6yJ`zvZC{R zOU#4fX zBW31Dy!?O6rDa~-vRx+*o5UM8ep$2D-%p(5@LQgpB8<;w{du3(uHrU z6qsMet$ZZU!hPuISM&I+M^Ap#^B8@uim96DAj5n1>C?lEC%>#;XvcCROKczi&K*}a zv7UKwXi4%@?w)`3r*_tJ{jm3$eMD^9dEuC*pOgE{`uuA5AKQCPW`5A-59;L=&6%3mxQ~mrr_C_%09pFeb|UjG@oA#6?6wu6t@+Yy&%5qzN-~_qaJ}!ETbz30mlb+C^W{y> zWnD35ur!rDdg!gq1$N67x3$t$=C3WD)Tz45LpQi)lR-$}mC3QDKaKZK7uvkLVAW!k zYunrQ=;f@dyI;qCtDt7bub-9gYJm#@88UtpAO4uJE#B^?-u%Bg4Ry`8wyk71uoPuw z4OR99BCRYVWFEsczr{;*PNi;R(rj1H`2C-ueQkDtTL$yQu-$RS(p66ceT$18{|)-< z9CmGWj!5T)WOe?(ynzf!4MwWlcGUk&vwy#;;pKOh{|u}CW-s7=?RNiEgMrwghxJdV zzYa@ods^iNRB-L~OJ`k%0QsyJO#Q2a7j53Tdy1Px$}hfoUsE>#Po-&Hv3X)-_J!DX{W0da0-{G(3uXWUK)k!@*Q)vJ1$K{_FF#BA6 zV>;#jvY4fZlC7sJ)TOPF3_mZJT6p&`@8UmM5`PRcB@P{9_ySz%_{BTrAOD}K2Hj}) zj6T^Xe0SX!tQ9P3UmR8wRl37MQa)^T;4#J%wm$!HICNRxYKFVNSu$0~8?vw?n zOArYq6spTNACJ;l!1Zb0KlZyTJ^))VJY7b%D}Ypgpqu+v;E3TCsd<)+jM3{q1J_mn NmsjD2uA-i1sWE) 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 E0-xSGGynhq literal 10204 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 literal 10310 zcmb7q2Q*yY_wQ)Yi9`^+MxslI-XhUOCt46CMj2%ooghIlYLE~kh+d)$qeY1ty|>ZJ zU>JQy=lTBLTkrk<|KIz+wcftx?sd*R=j?s%KKHKs*?Zrc>6<0MT@4j=6#yO{9>Dtc z0Nfw}$^d*kyno97A_5|Uf9MV&ApsHb9b)2tP7+dbQW6p}5@KR9N-{EXid!NkrJ|;! zp!%o&kC1<+|1;~hP>>Ll{4?VJk8WB4G$eo-JOKhcP5?d)9sv#BO$UG#fCs=MB)DDf z|0ZHWqB|sb_ynY6xBb?40eA!i_ymMRM5H7Xq?CZ$@&B~$5Yv#{;~>2+szl4FXXEjJ z{%L3;9oGweljQ8maWWn;WzVprHin1K#0}orLQ+OX_qnBBg1vL9;A2lDBvsW6jo;Wi zc!htt)xdCTtAEV(ALv#&;XiAmxxI{kySD$+i-%8hk3&>XiGcHF7C=F8+f74215f~5 zL`6lBM1A=GXJw3`$&DnfZd0|bvuUQTDJFR2Sv`+LTF;b8r+26yAu(g#K5r(gkxs(W z;$KHbl?1gd?ZZ}e2t^U!j?~W8&AP<=l2!n$b|2Xu`FdTAs@`ofv#ya6g1Lv-_3XgC zK|j*-(m%6^*kNqB!BP&;IGN`vEUn02@zJy8v;l9+&zEPZ3)3H@12F|UROw4_(@zWA zdLes3RHi`Jqj3W*=B|z|Mf41#{T>M?l^ZcjGxxsF%$VnxoIq*z(Rcx1E+Y;&JEp4t`gEm*leirq5y2~{p;lzJD} z{$Mn7zuicdvU?-FhY$9U2`%;H{f97>z0Yk(eBGen;n!metiCzpQ#R=VrM{2MQ~a;y z%Ojf3U+G%&pa3|yP6Z)sv+)OSE2z*OW4D|`=_C!g@*IPpULe-SKxc+7eD!B?Y|Y5J zJ-@5BZ;ygOFgf}zDmq`Parq~E=}Zw*roIJ#z;ZkY2FLOmGjsbcfj5>0igW7VJACOq z6tSp{5ZN`!!^)w6RIAo&Jn*t+7;1l}NG_}Xy4vZd)Et67I)ll&d)K|uq5F*+N4fJ$ zEh<~pH!&>zZ}A?>$B*K6Hh=p7wTB`(z&W`^6{ABBf^{rCqnW(Y9ONI7Ys)AKrT&ms zXS{wlXwr)Nup*&9$uXPR4had$ubmNZ*9N6{L(q-YL~_eF6iEY{f*W)~4Ey)I_Pi`hT09r}hlgJ%`4%(8hG z5)+_>aklrz_u-H%nMv)CYKOhiISJa~^DzoUu?rg3Yy*J#W(syuW*i25i1Lr;K1ve- znNLY97r-Nx>biQj1*C0?PeH)IAD<@fn-}uU@pWjkOB;7`z1gVz37u!~inkAk$%YsXwt%gJR`wpWtqZL(1(DPYK_o|M^?3Ws z-Uf5?8-PEb9hR}3dncN=a&SI3XciN$Gx@ev=Gwp z*qDYMp}?wUAslRxZ7~X*>qi;=WNz|DiD#-p=m2?5^_}TVqE|ev_cbgEm!$rsvMx_spyc&5rCUfky`y zUyL=adqLAF##m^6Tn=SV(wkfuJ-80j2$Sktm5H2g!9X3^M@s{wq&o{@+YkFf;j_Zj zO)9e*=&lczT2pMf{7QtC%Rli+k>0V37jNrqI*&)=Mark-%LZ*qrHZ71ZV6{ zGYz=D#mB4_r!ugRrxIw zw~A`QBv_1?H9RQ#RJlkl;k-V^9aE5=7jAQ@)EBMmBvvn^6tyVIZ`wReUz>5V5Z8Bq zEkcFne(r8QGwFee~&p zYesWH?Qos?f-(#L!p3t}?fUNdw+( zscHdg-2k3wbnVQXBwltI^!vrF{i>~`%ypD!CuB*a!K1lL^Pkys*47N_cbrrfhx>To z?@UXibJSsA*1cqKkN@G`*p3A!mD!2dUFId06};&OUG1*5n|0vYx1NTcA6b7TG=kpK zdqN{Ng3?sg0EdQP3&1AT+9|aYwxDLp1nVLTRrtiQP9n!5IeqG)uQ9q$4%_fNW@-#d z%k{{NTr9B#vg#qc(MU>i>M}vC$oUGA$5$c&CJqx~XQ##O_6V9~eTDB04Q(&?a^*Cs zn?PZi)!`_5NDs|)UzA*@g^qkTG&;ZVM;QW}L{At0$F20P@zWQR2~(29z8@e&?tg6E z1$ln@-i2`Jw!2dw83`1kNaS?%)zLZzdlogFaVVgm51b_$%}lmV(1ye=2Av$ud!9UG zwpg)PT~VJ)`NQt=-=VfWqr)Fafo->%)rEECBeZR1#nB3`-_5bD1 zPl4^fH!d?`?Gv%;)424&vSH{!*89G{dL|e-Q~LJVpzQ^9%V&MxHNOY;5{Y@?Mry<; zom>7WO!}!i1a|w>HLf%id{%tr(1X3#9+f0y5)j1Hec<->p+b&?&*qy>tNW60?kEHx^(c!2{ri(_Di+{^IgNbiKbzL=)bC$kFr|=2tzz=j!v`2OLS>S zDVdT0tP_-IhnfjHtbv(F{X7v9sr{?oXWN<>7v7!#D_nq{U}74YuHJ0lKTS_@$`UlN z3AA>f<+|3prabkQUuRf*Sgw{3-&93+&pO^OPz74voxEW`m2V!5u z5~zT@g(;P)42!OF8+VEIWp&cKe@@0eY(27{&TmJ07i`@CELDDIzja|{xD^U39S zD7!8?RHS^cvw_h~Sw#D*`(pcz7=FE!z*nn%z`{Y{aGOn+P zt&NXlLFWwNtFXMfYnn8PtcfNsHJ59YEBIE{*X{{NMxf`ft!tfLI*3<~$5c5d}!i0IIn$~i411K^;Zp%!@sQlTq`Yi`vMevq+ArYYLWR z%!*z7yYG1Qep|^SRaxLucgOXo3A$$`ej5Y3^m?ZB{3QjPu+NeED4)<%G0^Je7Y6x8 zv@9ayi?DZmM+Xyvy2*98xY)J2xb_Mi`=lcREj z*6B}`kdOo=LVOaLFq%K}6VW9xnS42!Bicoh-1;IrsOB>*lB3IzcSqO#f{!lqmlU?p zZn$wJ1zQCwgz9tPzIql1G?sTgy>g_C(rx(yK%TwxX8Cs+@9rJ9i)&$z2KWW1NQy0)LEPeNq8$-QB*d)=p*2!ZpFFE1>-3rIULVyPum3Nd4CYF%l6CD?zp_Snlm{5(5W=Sw_iB!2Wbr%M1U z!IaXKzNqx-VQNl({*PA_6s$tvIYmd-QIlUkx_1OA= z{acVBU52;(JjTdXnLR>ou-&KbgM=Kd)y#>$vn0zX(4r?-xN~!e+hxsGPP^9e5YOHW zlk??#HP(F7zTR+_uZ*6d94_uYrfkTO2@N2YeI`DlF*?I4^;TAm>m5FigJFt?$!NFi zy>78*V)9a4?qF^pQy9sn6042hoNJ{;Q5J0(m2(>*oA|Fui-2dH*jEikVJOI@Idhu_ zlf9PyoapH;)~HHbP75RykQXb4ME*z<5T})#g|6>1p(S zlU?AXa<^89W`^K?3?8%T+vk=#2z!4Ul`Ff#6#8xR1FlzAQK~F_ny+!Y zD1}n}I1_5mPE@{k^a0Pa_+qLZ-hqNPyJ%#_=m~C`Uv(_shwBO>?})4sYijq_Ei-N? zhY)$$BAlr7{xeXy#Vx+$P2vT`I79Ef_1Me1rXX$aKUI8?peGB{-HqU?ejZBaKGTud z8R#ih=)14e$E6L_qU2V>(_@G&4tuUPJf+$BK&jV7or+U#>NX$oWn&LrEQ0e7<7-~? zV4!(}o0HI?Rzb(gDd`I@7n0-CeLmHA9eVm$ z1|A|_2VBHYPxh;snk(}@hE&c?AW^$cMSc0uPa`e+meuiAerQ>}!PjG-1a!o9ux!hx zc|L(U6!N*33benz``@2gEwWJAgmGk!c?cFgm-H-=6Ay6IO4a}(tbsuHLcDIs?(6nW z`;ghl3ASq|EZ0sJ?#tU}+X(W=8-URJySc5g5X$ba+b_NqEuJXWxwBZF5DV)lEMdtE zm%2ajN0K*mC)iJAzG`}(CNlwJGRU-2W569s#d(z{{N4j+_KehCxMH?ysOecUr(Sbm zx4!+3G}!w}`L|YO_Bmn{AD6K5vMlA7ZQCu1a$DZrjH$1kAc3h4ha786u}dPI^q*;HuD13U6-GX`P^!Wxb`%7Q`?+pN`H$-m<`?f*V^bGaw(_YjqE)}hv6}$li z!N*Bu8eo15tva%UZp9YN62N`shZ5Ufjj|*@`2H%Yx*kpn7d%=Y?)l>flW{L`)+6Le zkBhU*z~;}NsVuSd4IIm!DKecM1H9k72R>4Eud!*cb^X!sR*<4soNCIh6gFeU!=hM_ zSuMUKm#LFDy(>X59lPzFj5O6MFqT!R(kEUI~txY3!pt>}!qvH~T9EXd9H-BV zvQwgTO3lk z6E@^+v+hmgqJK|;wobf#hvz;M(r!vPpPq~{-F8{bjylSM1+lff_WOy|{CHPT9La9G zi#U~A;oi@&%G1(_Oe9>uzg$@H@AkWW$}fpntVyrLZfjW4zxf32dpSnUD9qPA&pL(8 z6qkmq-(P6oDEvw^k~shlE}Ey)=~rsuD?TObI&1izb&fGLBL}@Vb`-gQuVzO_zmJcC z_PrJ9`6#*mm~9Dpp8Dtg7gPyxQ`h3p^M|dM$kgWLLsAd4zCs%U%awI(k#$Vn=8SOK zyR>91x&f%D-a7N2Tr?vve7viXs-W|eKl0$n>7pWjVTnH9=s2?CWF3mp=f-M`Tf`&8 z$=wAVzPStw<1F7>&Ivbf0B2?D=il=`9qs8o)WsY{_Tz6PCF<&yBG?<^?0(S|YaLN3u`-)dB!=&(V4r56CSp z%tKbTCWOzW*)GQUZKR6jpn4K4j4~lB#2=ehsVhd2=so%dx^8tMI~0jSfW6)Ka$k0Y z`&i|iH_}TKJ67Gg*9uF#0i=(I;57co=qRtZAEz?{ZSv~J(e^n^-iGjnWEK{K49PeX z)&2$RDQ_frpI@Lu1gbJDPb69jrl_{{kyGv}HS`ie?uzfa){nyB8e<~U36p6q{vgF| zO#bS7)v9^hF^nv%-7&Ypjv>z6^>0D8#3Oyh6N7G!0K#9u`KDchA5`pnV|JziNXmg@ zx6k|z4+0B+Z%5F8;ReX!yk9?K2wikaLMxj3m@F6k^9HB@XP}>~gBsCJ(mUF358X({VjaiEq1PI_A|_@m7i+O%}jLMJ}Xq1?pd{&WeIjhcMn zH*m=WS)6_gF{6?D@a_Yz8vu1f2YbCOMC~!3?fqI0=GaA#1+hDgu9u2{oW*ky--MN{u5C$Mb^mCBa!31mBjE>gvgcVGrhT*MNX?i^pMKf z;FQc6_pOJek!bfGav~9Q_8NJi>o@dzwvO$7b8MM_0{-*snvz=dw}Ti;7p?4)x(T!O zK-SN%-#q$KbJ-}7IRLuwMlUbbrYNRoJ4ojLn(}XgPt|q0sDi%VzC21-94$wQv8#8^ z2AYC(4sQU1y1}FM|7sjj4-N;9R$(G5gdnV~aazh7&kxQN`W0l9E;IsB3ktkvksFQ* zK+^!z{v`lY-3PjIlx2B?-p92Esau$aWK%&(%U85jdhd+xcP_MX#3?dU>-9?z_utjC zn+5*|1zA#v_`laSXS39^#?8Z!ULa4`kFGwU5_r@i2YA0X6)qktEFatjgT1%TFEd_= ze>n1+w+iLsZ;@pF>RiLI$Tp{1+rW6rP^4M@@UB!26Xka+#1nQ}ag+G($nLcpfXF3= z81v*P!}l@^#g_TwD$lt(04VlpfOt*LeESA4W2CUHuRtaD!WrKi(7L1(|?fU@vr*&4d5TKhR*VZqmKDsEf1q-O}Bv< zQE?QB#iX=}6b736twS7&a-ZLo5d-NcR+RF_!~}aNL)$d%i<3Ee+{BH;oeRn$ir{6r zA%gbre?Ig5nHMuLt8yhFSISyBeP65bzp;F9`*a4iwNljo+>MZbcEf}ZF_5BXR+On~ zpseQ&dkhs=k9eaA!*i}@M(q+;B<`8~0kCScs0nO5nb>q-Pj{wxl(*5>1lh4Z#d@44 zdSnz$i>MHokCZV{f3VDT6N9pj;%_fCw(|pH@)IJu30Sy39|AyeJNK@1`N1*ak-C5D ziH{V?*=wnF1!P#hO+B2~y#eIuo@j)8_c6^Q@OvW{#m}@v|5z6Pzk2X|W?f*B<3l6O z-t0#Bk3XKpLg&12EES;u;?D2Omgv#f8w6s?BL%EBJ6kQ2QaY2RXGCl=RBdKrxKq*o zzsL7wQqzwrY~(32TU5`LA(s#(&Qf}-3csiQVn!ofR-RQ&6N;1ZX2z~3J=e8ZR@|pd zPM!>BC~SjeG)(I2k{K?nI0aN@T|Or8ZHnK+ z{CX)DnjWAZLLPbT(NZd?x)WHKj0!MRN_w518w{Xl4TlNExaNd-^Rt}BQC*OYxu}Mg zd5k{%bv)}5`~z3dbs4ngsJU$lPyWhue zosCfJ>GxDt?X@fMc@})emAN({dQekr;>xg`!PT?lEg$Kf?al12Ghd}llUmN8S^t(? zr}$`v7F=@dpVe-A;Jgm{HD866$+rS_uOkdsYtbq`Mk(5Hsy>O;-&u84wGoTm?y-Nz z-qUz4SNGuV(W~dX(4!62J5n3KX0|=ZGBpi zh*rIv+>z%lC0400L9?p#4VY8+)c*AeEob591sglPx}2vgf+8Bzk?Ny3-qhTH%GeNP(; z+6re^WA&n@M-U%o?7zgWJL34oqmvV%o4sSKUl}O&YLixP5;$Pi`LTM6W0ym9I|<_!3dxDZ#?VvqaUN3b6Mm+Au3!2z6<)B6 z?8^o{UXcB+pcAzjmV*K2x0v(hl!i&Co8>dCe_nl^*C;p zF?r&+@${(`+9&jAx-8U^@5yRO=z&I;CM{GjfOQyE$97lgfMlS{__zLeRV7q3Vb_ha zVK=8Si>X2Cvx%Xe1y=b^c1eC=D(Sm)43i~uVq?mVT%g(RN52OZeg#yc$c-S-lV|L6 zN7C~$JyBVQI+xU;TYKbIp22it4aGMA;rZ8JmMbkC5)XUMw`qySSLXH_jaK^6+<`kCFH9f`aYMEkIQye6e7m==&2I@U4%%~$Vf?iD} zuKo`(0#V&@m+0_EOWn`Px=S!qwIfsddKzf;j-6=7T`^3m1f9%8fb^~eQL}Raqttr- z#^+^`84xa@#%5g02S(;}ie{a@5+iP^lGv+OLhC4@^8OwV-7DxUr!%p|(an^n+%uXS zj(*%JZZRq=cc{)fR~`T(h>4m@AnOp>r576we-e>PJzA=`P_*WfIF2lJ7u}bYl$7jY zBv5lF_EhNredg0GD~W@~2h1@ts-umJ2@1s18x3brdxZyGGE-mttBf(HG#5;mkeLa4 z234y39LH_XqTG_if^Vs(mcM1F&s0Mgg4!J}4U1^C!yZ*aof%pgC*dxP#2*NHxZW&d zH$Vs_#~%@?sSI0NMbli-kGlq-xvhZTiKa*WyW!dg-E$=;!5fWv`M`^Hmu4-u#@WCy zX+i%Mn9SYEZY7l)z+y?Cmb>e!Hgz~keyG!}=^|C)<1`cKXY_MKF5t9;N?6q@#fncj z&4*Oz!J1^~v5n)oDBMpx_lG`D+)_&L$0~dwIrW;SIp7rVJ@RrCi-2muR&H|z~15=ir z%PxrPSLjiTq7C(Bh{qvR3Z%pvib z(BRgd5?`@%87%4ICE97$%)i0Mw_D5xb3s=Mvy*Rv;SQmVq zx}9Mg!wtYr!NCJ%%GJ*OQIsUz(%R9_kJ+BYC!N zziE!Qj@&H{GsERC!!~3h^VW8p13Sg(t!f6Z^MrGFN#b{!p4+CLh+}ga4%lx13mdYL zXVB@O#!}Rbb6(X*Ei4X3rU40JShluR9j9;L?BQI=QQLI0K9yrrNYZzLTo(CLtmT>~Pc};i&&RLo{ zWzM?;BA2RXSBC?7qXfsNT=o7ozwKcj6PkmM_s=P-vL!Ppn9AKg$j`a*u|DQaX&D&9 z6PYq~RFdD&v-r9Iz#+j8{h+u%T+WIPt-kDgHq}0^pmu9Ibye;8&=IekTpDp>(WY!- zK_;T!|4WkOUx^bm4oswK@{$L*`M`5|fJ!OGQs9N+ZVX93{7*c4C?@?*QXo#he>}Ur zP1k7FoL#;U9d1>YYSFFoDB!@kQ;W9oNIKf8d9>vQFu5C!o-Qr#?8?+G8i*9=K-osB z8kzmv3_?lV01Q%tte}zM=ug&-)`k-pP7R0*TFIy4z@Xq8f!Q6EKCgn)5~%E#wV(jH z>y%Vvbzty*D_S<5t=PFqrt#y;tBlk+22aEu53Wx$AGI3yEPx(%U-Z8Nryz2lwArVfeWP2 zpEm$*_OHJ#O}9|;B(7&Crm6=Jw8=orQ55ABKXHpk2BcZC{qwspDo|MY=Ji4Q0+&NO zhR4qo&Nt)6?+Y4FVDRGHTASWu*qnSVXVK`)9=aZwU+Bl z?#{d#LvV)v8*68qPi0&~_G!bmWe&(1%Pm2{7*LepWFxOnC0E8$EEuR?v|S*_V#S IAvZJs1IFPq@c;k- diff --git a/images/xiaomi_lywsd02.jpg b/images/xiaomi_lywsd02.jpg index 9573686aae070058b5051d20de54dc7d42887e9e..3fb47f7b59691223d8b09e5cff1bc70e68a5193c 100644 GIT binary patch literal 8031 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 I`*-Po0r*TyasU7T literal 10086 zcmb7qbyQqG)a~Gd>tMyLxKk+Zu7eCtad#KKgs# z_x^wTW+hoU$z6A4o$Q1X*d;}zXgy%j01pt7Ei1hDs{})Keh^PoC zXaL}gl@#GW{IBU>iGYZN{JaRjLP7u_;vwO^wCsqUbq~!@k&%*WvoZ9bM0ZjuaC(+V zOfz8hd3^?cA^fu)_uh$eoSZY;E3DvYj~ zHI;fAJ^HE3ByKw~8L!3{LKL;y^N?%JA4 zWm-B+hmXtx*|=in%t7DY-EtFgYvv;oFeDonLk6%&>G4ZHqGFLU5+DP~LBQp+mATnb zdBX!1O1C)$)VKUrjKl^*hM6gJ*_d{nr~^$We98v~Ager0s2bzW60`>l#n z#+>gnKm~p~w!P)cSsIh760i*%B;Q@yN-ngzK$05}NF{R>?zDx;jbcQq>Ig=nZ;{B8 zdD2BrC+cQ7=Gmw*TD=!{yD%$gKWjF8yXWu=v32W>>A9>8-1D)`-|Pu3I%E{tgie+D?ae^EhomE+E8 zP`tf%IfbI|n~#gxO?h!rrZ2Ua%N&d}HLv9?*nFoD`Z3`(FSpO6-eLTzt@R{g{0A^x z%CDhLm;uf?=LjgzG?VuHwV?T?u48!ac<0E(X7%;kg9)W}kuSDyl)Jm#wxz=}zx?X= z=B?RE9!DqCP{YWp8!vWb{e`;W@k@4rV~BYR9;xTeN#;?#G&yG+Z!@mW%{?r=sRGl9 zWz?xKGI2%EFtIqJRKdzO`7XiP7)zd=m_{7N`qK#|X4GW^{%(9gU1c?Ej$cYCYshWQ zKpYG3NSmEkpm7EV)eQ z2UbZslb5&_ZLufvHyZ3xJY>!=IYWJ%?`^EG(M*48suGTA{x9Qb>gKii88)P(7^JK! ziZ+`8DqjT@TZj{Q5%R4O0Y4B(iq_n)**QGWtDsFkjY6HQPOB#8V`Ij7P$+Pc!C%3O z{rtFZh~)wk^%H3%p{V)Hi2-_Ypf}o8Hqf7+KFt<=Niz~Xuw@#6;9XH+6*AN@SkWj` zG%J2}VDF3hR)>uvwFr=2?}5>gJMhl|jf?amOh+xm*ji%81r=KO2^jDaQ(03!@uGuz zq)HQL3Qz&SdbaY$5=A@c&&E9tYx);nqQe6qBD}Eb3p@P}H@(mj02ze<6(5a|h!}+T z!cf2$8v-JNoUW{nuKpDNXL|fkedarUa)j#2h(1C1 z=`k3AAV~zsi1$W=?hGQ|C7^u>|7&R~d{m&XVo0XH7tBbBKaEDZ#>@s7DKsZGCk3#= zY7+kX7FFjt&NtXxBbUSPUp*x2p*-12n9W$ekf@ofXs!LY5**#7kS+*q+PfAGcvzGM1 z*2ac4Vk_GSE6C0tUKQBhDL~xwfbZ6B*h(ik^Ws!6Ix^iDnj9JgX@Ka*@ISCmZ;EZyG%;A{NwLIB1tm!t^eqB?+53>|4` zk}YzhE5n5+uJ>Z*8L**8_bsIdKST>ksN;ngo`(X+gU~fKX2%&TnCR)L_NQ^26F*3| zP{i6shTTnY1I=lOHn5EyGGw_}xmo?CF~C!aCSh0&Z+N&H-5`GVg5T0#`GF#YuPCfY zu6*z|Ik4Y)q|8Q5weMEM(>?**>$=%y0ceH|?3x6!CT#bTX=G+-#;>m=vmOP?{ z-+CLu5>ZSQC^3{Z^8k6QdwGk)8i}6)tiR1Mxx?D<5Y~{5 zSG1FL^12T&zXGe_17|<$YkkG|5zO7u)b#WqdPQr~PY?M5$8~ykx4Kjr3+rUNBZ+nX zq;DDhY*J4OY}9rV>SmYB9ye?-M2v{FLTJsdVl(aMYat%Bbc{Q(ODw?}W>ir_rzK30aQn zi9tL;ebxu2XxGPeX8iiL{3oXlRG;cVS$@@8#Nc|3(VK2Mwds~|-mauS zf*V9FeM21VSwee2Ilh^-NE}}kl}mc@i-AdgAp&mJ&uSe(s8T>$C9ee1SEhC5m>@quKCQTi-`)-7eFn-606>}tBUBNe-H zUyA#a#5N{~ZSAcC`p)|kb~+7OB>4a0CQ+wDWa~;Owbboj*J6?yaDcj|?+!S1bCJ5jeU%1{S0B6{#mJ~d_(e&;6l%6&qQz!|BW|B<5l zjr9BB4e0UoAo^-a9Db(;1%2>WA^As9x7d?Vm1be*DJ?Rwk???YyeMKo_#?;Rl*QSGVzN-7|3oxG20LkGu%ki6AOlHNkKBIsLsRcbF3uVo zS(BDlasK&i>l|4*rA%d$Qe&%SOk>=aQ@$D`#VpyE;o_p!0%h22O~^OC`K0#6rsa*% zD6kkV;Essv*!lY;)+c1~32$cj7b4s9l7LoZ+adPl}Z#Miakf9=r zr!y^O(3LXo7WSPkmU8PsHWG8b38s^z-~JSC`~=eo4WDX|ZV`QSR&dytjbP0Ka-5pPS<}2>*7Nx}Wd*oz;7<<))-( zfcDXV-k{Z!HJw!Pm{Za8_)xG;NN#TePj#vB005wjoKmVyz)q?!A{-ZWF z(yG};@SmCk4W+Lrbh-!lrllEJR?I97_*$u18Shp3*ep~UINKY0--RDn#QM1mTzy$M ztnYCyWbyJ=OKxN&kHi+OZD<1qD_9{e7aKPl>PeD@Gkw5WgX19FiTv#XnmH=OJt1VtpmY3&N|4|F#)bq!JgY z^xioM&y8r>_*a0*)hhHgn=4JZeL?DlY)27Y9j|b&AAQsPKYwAETlsEGz<9E_rdm3@@Wj#E4~Gdz_#S?D15X zW}nlLQwc?e>j*vd7wPRsr8a8#GKX${FahD)j;UQh3XA3%uyl$;nb^?tMnG!Z63#~mBuXk z`;OFNyF7o@A$xw?Lc$t9HJ@m6+g?d6LDLcI-0@=nCZk_>B@eTybv$y-POXjcg zj!bk&cSS_p^NR+x`ZNUQ2gs@?P-{Yq4gLfg!s<$O9d$mM_{s}fEBzEv6*DEgl)(HJ zC2&#QbG$20mVXZ(LQl*0PPHx)IRbjeMvpX}t2n=-EbqrP_A>jrm*Ui^H)Boa)Os&9 z@u4yg&3A1zc7iG$nDO0-%aWeOshMJ!Y=&75jUoV?b{FiQhlZ@EY^ajvj2Wc%S5NB$ znvU{bazKo1);HexGilR>MW$E%xWem$L9F~S%v_5&TMM3S@{N?w0B0>DVjcJ;@C@@V zlRx>3UO`DT<~8kEbq~vXWH))iqVK5$0J7oF-Z?3vVcyoVt+Pp#(s41Cy7OQF@_xkd zK|UJ59cuHs1E_4bD5>Tpk8i=A>c27|fd;G%adTidTgr|Wma_&=4NHkfoo6g|7yZ^+ zBB3_^t$6rTAw05}%|bc%v*Koqr%7|Oz|T%Uxp~Q5%Pr5<+`<6?Ad-j0!1ZnqT z9_Eo=)9>YSu87d);wj!(HnlQg1hL&D3qv(m0~KdKphg9zQoa^IFAq-e4nF`}sY;uc zv0O{aAk~;<^|L`58@;uEe187aM)W&=L=_eF;C-n6;TWxbU65+)Bo~=+qIRT-nm{2p z$6)T)1f6M4{tt6&lO8%4b>9vHNcYu|7{$nzQl>KLVXR?U%=|L3`h0PXb*XeF)~w_} zRBE-jzLeyA7G)#{cM~^xHP+nlET%1eo%ZQR3R)feUO3S&@1?h=M{=bt*G!Aq$}$#7 zhdvnaNg;1-K?)Y)hMW^EB~F$igp493*0X#;HxnI(6B88&od=J=+8HKa-pDyRo;J6U zRn@i~voO>K$?9NzqGo%ZUc_%S?%m@%P=GttBQBj>OjqVB)i%md~y-;){dueMX37x2#mB+sIw^N4*yP?b{gW+^dts#BQL9Rdh(Td;aEi4RJ zk-XTfN|{fv^40adKl_Ac{LY_kZcmil*3+U(9oL1Z+sXDNC;ePcC(x{3!z(j-oB5t% zH_G~3SjQy_8zGmt-fZzb%L*fQg3z?Sdm4smmd87IwHpKej|N2I#{%YSIdm5jWy8c| zcoMI?Fkf~*y(fvcg?`}6{HQQ9#5KUt;5wGD^)?*cejk_Cz~4O)^GLwQEZ_WBlfV@O z;0n;`iazeuN^ii5zAJ^}G6hg3SKilc&8RnL@9Vij znkz;<{Lrt9nM@=H-$+2seFQhA*4$=2$_$NZ%%C_40Us`hqqcX;YADbcW_Ax(z2K(H zTCu|pLEDOovfH~W04;rMT#aBR>pAJQQ4FwX%AU;8hbmp(8r?J`k%MOwiGiY zg;4(F@1Ds{T}>>s1S$-p$t4{}al<5JTh?QkUsikkMGPC;h00gvo-z%?oKqW;+_{Du zyz1GS?(nOsU}Uxi+n36>8}7YvTZC1lX+oI?q+lM=Q=W{4jSj_(zkZva-!u^C`;~gDbVET@W9PDi^78f9*W*eu1ZxJnJexZa zTPY>H(Qy^Rvzz4M^E-RoU6D(`XTT;KI1nFgNu$-$C)ZPO4Q*+B0GpHl9L}zoxyi(yU`h((bG60nOpbbhJZ7pB#$|!*8 zu)PcHi-WRQgv^(JKYq=N6_FNxaiyZdO~1@>Idcj0+b3@6EN416p8Y{3wBM4sNFljM zdzadxWGuJDD5B%ZU%ulPWTSOelz_d%{tfqhxiHB(gcuRYN}>s)Kg{;p`$ z@9lUhsvVfSjv_U|y8mVti~4#i7d=ej%SW|$fQH9S>V35R42!*IfU*46fvNaz^dARa?c|HwxJviWfabDt3yddswTJ5~>!n^}T-Uc>_vUjmof>>|yXPD(iKI-x zu8;}dzsTyrm?^E>DH3HWYgZD@cm7;^_#=xaLXXylY@#D3C>=&-egdyLxXrA1Yj(~E zNJ)H2gU8B;qhnW;*^e*r61O?*DF^!YhjOJX7jQIf^=S|FJ9lBfXlvr~Htnf|Ah@zJ zh1M^Q6RjxN8>Dt~t;=!`GlRQw5oQyD*MfZ;0YT#p_0axh(5)m@hTRn@N1N^QC&bRKXjZsV;xV~IG#ne?<( z-Q*t7-@;Dzr6<4oL3Uqvm}|4k<2=sV8~W-`1cf%z`xx8?^OepqYyql91w(>s!%pCa zP>x{rr==;TlCng{_%Lg7o(YPp&6{=bq}I=BzfbFe)=;NF8Ry@Z-~XyKj&RJ|_61m3 zNuJHCVwRPBjJyQ4H)LwF2mfgmNeL3Jh&z9JN*2|-tl8It!Bd|B89(D6Z(no)6A%4RKo zCmmhek02T8I1CE*JGM^ggiCH{ee~YI;$!aMU@95T6d=fq5Kq-qWS9h(2 ztSJEHZ(b8eJLBRuSzuS0r?Kzw;5zBm5_0Mv>>3tR?FhlV_!8a0bGAhTj%Ljfdgp!9 z+%K@WB5D4+sD)$8$t^>q2An?tlB5reXQr3#0>q*0l4gdv#ioUKaZQJY>P%-SPp~c# z{2+_3RMj=>DI3sp92)nRsRTHB{F#z0fyXv)9ey+Os#A@e^I|%6kFF)C;ow>exvkij zAPmN>dy8A4zVA3&HzAO&4Zma@;j}(Jf(Y-=Aq<#R8>NdxR$G2szQKxi!Vn`Wy{q8< zegYA}wqt9Et1PY%4RNRIC-Is#|DvsVC{*b{sDrdICYFqimsgU2v~9N3HDH-Wk@Pt; zBvY+msX2|dVQQ8dvEBSpSVCLP6xaN1W?a^CppH@Bn^G5bz98F}BcqtXmzP^@9 z?APgba7sNpwtBAU?OM|={ulhvWt1>lS0Z!XHHN_Kllgdln4;PP&?p`8xT!-*Y*YlSJj0Z&_b=8T{^L}i&>Ed0_$j?4*OF3bOH}iy) zEKU1Wrk!CL2hyizQ+IdH4=cd7x((Sf4$*V^3({m^cpyA(?JuZUgrwD55EM0UH=N}V zaJvDv+mZ{M?q`t7B4`uvc5lR9N0y_()`=-TNY+BeX8l3a6}vyb;v;vq=^v}RYKsOu zws*3ex{F%QEhvU1Xygs0$^%GYMHetpl@J>}We#&kw^N&<>x-F1Ne0clzsNzAIo_CS zEu6_uY4j-4=5sxZB&tPDYxiU3fHvYh?UcIhUyrmx)=mz*zuQ)C-nASUrBK-R5zdF+ z#lW)rPak_%aT$5*mi&wc#6-=inN%y3%*sifnq!O(Pf5zrhTO4Eo7QbaPTe6bHg3}e zKkU;`E=*cj8rSoL)Rqs|3EM0B%$0!!_*BZN{ytqNDYePbnM8bo<@%c61!(~&(ch=; z5YW$dG|bL85#0l#!And}eDxQy9^LiFzHxSf@=7_QsPFPwtWlV5CwZG{w9l`NM{(C# zqYM5zH0_lt8My{7O{NGVMMGzmE+0QJ;-nx!rxl7Lx7`S8)+1$kNF_Ufm{Glk#=pwUr&Pw^{b&{YR zq|-9G&}5x$?c>V078>0vSd(C1Q8UY_&xp8Cc`AwW$UZn*7srA=Vrkv)Qc&tu;GRch z&s|D~LEJOoK+rodPdNK++8K_c*4drtsiIB!+sgKoA~ua)ieA^Wqx{vCE<5MY&~?C~ z(Z)ws4GTU5g9xoA^#wm`x&FKJhS_%dlU{Mx8FH6~ZEQgE`PeDR==@?;R5$Z6TLnk2 zvYku>xeZCB{MMX~mdZG|q-7JqCvFFCWV^__B5N$(+OWmpQ&ES67ls8W>?`d0g2ww> zHOxf^uL~M{V-0u)bo2)gPtkgars3*YeCny%k0jBRBkcvn>5V& z*raso6|x*>yhh7YPZS}^PkkfiD_c@Xe>#vX@I$vMtsIRMvbw5q$pl+|qJ56C*AhAszECm;n^nO`w4W@gU$HMrZs(RJP zn@w~)g-F5d?iP2tvs6^#X9W}$+qjGq7{<8l?R`5ysP_vzOQ}uz`+G3zWgj!{^vCz+ zi(2RT?@#$XTv?^3J4(N`$OWWT-lR<02D%fTSOYy2UeTH?%NKcZ$U7Fj(82f_r!skY z3hLh(9X2{-HxPX*XRLj(raxT0egmneypFYzHBDMvmM%nnagJ7joRj$b?3-Fj)w~-O zWe@b(&=^BR>6?Z(UI@PlB2T9Z>uM4$dFltLEM^TW+MfaLDD}B9IicOuN|SIrL-RIo zgRIhgy}PIHMw{&y=ZH-`DjVTXN*yxUq_hR~<7)hGyobW8c0@?CPE+0!xWRByDx!i0 zN}Z}F%fK`F+wazSGGb@4`q}Ge)3+sDhN<%QlcjuKk^fB4Y^x9vZ2~^>GKU}P9kiGrcV)09V0WLGsVn;L8ov{^!%Q)?H;O&z!}h`m4IWyp8W@d=6l#whZ&OPb zTLK}HSQLG`KtoK|LiZi3XeC~3gEXC!kYL<&H+IxQM8Yw4G5Xi9GmMt{Dn`0R#uq@; zYR+Mx)7ogZQu)F0pn1&G7$W`mFUwcZEO$AqKLfEqWGw%OJAc9Db@ z+oO*son1>(UE0^`UaHRkqqor&6GxxXEj?ePZFu?7GoY8c5!b90yMklk8BmBgRq*j? za@{S!togTVXYjBIx1ZUOjWJ2~(+=zPQ(Ja;uGtZnQ((xO!6+GVCMujWj5nT}^fwt2$1 zlYUrg78nxiOJnNoA2a%5ZD~Z=slH}-5hmJ4LAkOy8<|9ywNt9xyVs{CaY*tLA~Qp& zBbxKjZL}KlP_>eZ7PWc``XTxo)Mbb1;MQRF*-=J1bjZ1(cq^}YL8)h5Es(@Cr8NR3 z^wH;0<c z?Y#|q7+7|vv|I8`jNP$|M5gG=@h>{i}afMj=pzo=D!2hx3d~0q*hv`jb z_`z`ZwbDHW7)NKjK|x>&)O13#75T>KA4SQ#@mWOc^eZErUYG4O>fh%}U7}l0`k_;&b1QyME*Q@MtOKK6iRRiylV<=YW54M$ z;7Dho+C_f06UD37`8y>$+cV%#Y-P$c1k%E#mqo$O;@B}Mna!4=DoRLQc@64*4U0PB z?Dm^d@$nuYEVt=@oz;6K54hWbzw>c++_KAHg%!&b&~e_h56i3<1t!z4a?4O_h0R}U zi(O+MfRBhlM?7W$_NH#*cS#)*Y`&MO$|8Cbhk$Yi=I>E>fXHkWe7QTn#XhXUp%%zwNc2*VelF7 z(OPPE0Q&S!G!trPPo%QSBau<_L~HO0Ur^MfQN>bTgzOEP?DFPPt!g0zbF$T z0)hmf{p2gJPGSFNg+PX+kmB?@AWeJ(+ho**^o2!?Ruo<8ouv}6KY)^LA?(T`M%5r( zp1nV#j`hM~$V%i&16X%x>U#g34oFK1!$-!GLdL%c1Cp;dJSv`6?41~HFf1xDB>hX@ zU-A_{wemj=Ys&J?MWXZ-QUvzV^@N1PvWBjVhHL8W{Hd-{&j2b+NMQiW{1O?j8H)eC zG0Vx6ZYQ4h69XR1sli{lQM<09T9@Td7w0Ybo;9o%S^O*D);l zf>ak4=N09UmoB<(72vLEpZ@R5g=s1*9=dHRyf&&8#^rzAO3r(w^p2_&?wtb57EEtu ztEtnhg~4iNCsQLiZTmBN-|Sq*vpYD+^bX6Ckr1og@?Z&EhzVaueE939SRS7U`s>;sbK%t(6AA~Qg#IoZ=wB8xj*|=zWkw7M`93H0 z;S)&NdoOW3Z#%kWUw>hmFrcg{2zD%I)WP+HQ}tyra#Aq&m99pzvCVj{OAbaoSFw%L z*!VqP@YrhoEp@#_afs?;y+lFHUKZc~g+%gR?lj-O_Rh>8-aD&~OfDN4ixY(izy6)> zR5dYkU!GXB(ji^k>T35OWUvAXNVU+147XwYvPxw ztDgbm5^sDn{e6R`N4>+FwsW&MKj%`nir(zGH9qw8(24|#?`?|u9@ct2%&l2lxNcl) zum=$j1!-gAK42E%9tGAlS@(_6q9comyPU)?@r|-oUp(%GxP8v$ve2F*ah<{hYG4+v zS=%+W&ahX*Q_sbXz;&r9SCA-hN=a95GTT4A<*j=`{0d&D?Wi|wbydbF_`VNzoA$YK z;*Or_^UcrAdhWDupVr+Ki2fzB$$tD7P-qQK;xI#HWn~qJWM$oDW$9>v(#|J$s#C{4 UExFx})Xt17EMbwEzGB diff --git a/images/zgm053.jpg b/images/zgm053.jpg index f686230324a2ec93bcf87e30b3b5bbd0d9ab4ec2..4bbc637e4ad77494d82a8c25464d1e9013a2b198 100644 GIT binary patch literal 5100 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 TSVq?*C{LPZ{C_^U)xQ4$YbQ3S From 61b1a55d2bdd66fc45e930fda66c7b3c4ed7b9ff Mon Sep 17 00:00:00 2001 From: Guillermo Ruffino Date: Fri, 17 Jan 2020 15:42:23 -0300 Subject: [PATCH 027/108] faq reboot_timeout (#472) * faq reboot_timeout Adds reboot_timeout to components that causes reboots. * added code sample --- guides/faq.rst | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/guides/faq.rst b/guides/faq.rst index cb0ee192e..9ed89452f 100644 --- a/guides/faq.rst +++ b/guides/faq.rst @@ -224,6 +224,12 @@ Some steps that can help with the issue: in other it can make things worse). See :ref:`wifi-power_save_mode`. - The issue seems to happen with cheap boards more frequently. Especially the "cheap" NodeMCU boards from eBay which sometimes have quite bad antennas. +- ESPHome reboots on purpose when something is not going right, e.g. + :doc:`wifi connetion cannot be made ` or + :doc:`api connetion is lost ` or + :doc:`mqtt connection is lost `. So if you are facing this problem you'll need + to explicitely set the ``reboot_timeout`` option to ``0s`` on the components being used. + Docker Reference ---------------- From 89eba194300d6194716042330a745a9238977bb2 Mon Sep 17 00:00:00 2001 From: Andreas Date: Sun, 9 Feb 2020 14:12:30 +0100 Subject: [PATCH 028/108] my9231->bit_depth: parameter name and sonoff B1 (#489) - Fix the parameter name bit_depth (current referred to as bit_depths) - Add bit_depth: 8 to sonoff B1 example config. This fixed my application on a Sonoff B1 (see also https://github.com/esphome/issues/issues/991) --- components/output/my9231.rst | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/components/output/my9231.rst b/components/output/my9231.rst index 95530499c..438281ebb 100644 --- a/components/output/my9231.rst +++ b/components/output/my9231.rst @@ -51,7 +51,7 @@ Configuration variables: chain. Must be in range from 3 to 1020. Defaults to 6. - **num_chips** (*Optional*, int): Number of chips in the chain. Must be in range from 1 to 255. Defaults to 2. -- **bit_depths** (*Optional*, int): The bit depth to use for all output +- **bit_depth** (*Optional*, int): The bit depth to use for all output channels in this chain. Must be one of 8, 12, 14 or 16. Defaults to 16. - **id** (*Optional*, :ref:`config-id`): The id to use for this ``my9231`` component. Use this if you have multiple MY9231/MY9291 chains @@ -92,6 +92,7 @@ complete configuration for a Sonoff B1 looks like: clock_pin: GPIO14 # GPIO15 for AiLight num_channels: 6 num_chips: 2 + bit_depth: 8 output: - platform: my9231 From 953c5578593c96b7f70d02c554ad6bd96499c4f4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rub=C3=A9n=20G?= Date: Thu, 13 Feb 2020 15:20:24 +0100 Subject: [PATCH 029/108] New DIY project about Cat Feeder (#439) Full EspHome & Home Assistant Cat Feeder, with all the wirings, Home Assistant files and working espHome configuration. --- guides/diy.rst | 1 + 1 file changed, 1 insertion(+) diff --git a/guides/diy.rst b/guides/diy.rst index 3e84527af..8921b3c7c 100644 --- a/guides/diy.rst +++ b/guides/diy.rst @@ -78,3 +78,4 @@ Sample Configurations - `ESPHome with MakerLife Weather Station Kit `__ by :ghuser:`mkuoppa` - `ESPHome DIY Multisensor Cat Feeder `__ by :ghuser:`335iguy` - `ESPHome config for Universal IR Remote ZJ-A1 (russian) `__ by `kvvhost `__ +- `ESPHome Home Assistant Cheap Cat Feeder `__ by :ghuser:`rubengargar` From 96ae6586375c03e0784e0ab72e7c38de62ad0753 Mon Sep 17 00:00:00 2001 From: Brian Hanifin <57336+brianhanifin@users.noreply.github.com> Date: Sat, 15 Feb 2020 17:30:46 -0800 Subject: [PATCH 030/108] Update diy.rst (#493) Adding my "DIY Irrigation Controller" article per @glmnet's suggestion [on Twitter](https://twitter.com/glmnet/status/1228310694807863296). --- guides/diy.rst | 1 + 1 file changed, 1 insertion(+) diff --git a/guides/diy.rst b/guides/diy.rst index 8921b3c7c..2e36c2316 100644 --- a/guides/diy.rst +++ b/guides/diy.rst @@ -36,6 +36,7 @@ Blog Posts & Videos - `ESP32 Camera+ESP8266 PIR `__ by `Dave Richer `__ - `Detecting Sound with ESP8266 `__ by `Thibault Maekelbergh `__ - `SW420 Vibration Sensor with Remote Notifications `__ by :ghuser:`rmooreID` +- `DIY Irrigation Controller (with Internal Scheduler + Lovelace UI) `__ by :ghuser:`BrianHanifin` Custom Components & Code ------------------------ From 73cfbf1a6e7467588df76b96011ab0c9b0f4149d Mon Sep 17 00:00:00 2001 From: Chris Nussbaum Date: Sat, 15 Feb 2020 19:34:34 -0600 Subject: [PATCH 031/108] Add my ESPHome configs (#492) --- guides/diy.rst | 1 + 1 file changed, 1 insertion(+) diff --git a/guides/diy.rst b/guides/diy.rst index 2e36c2316..895829d66 100644 --- a/guides/diy.rst +++ b/guides/diy.rst @@ -80,3 +80,4 @@ Sample Configurations - `ESPHome DIY Multisensor Cat Feeder `__ by :ghuser:`335iguy` - `ESPHome config for Universal IR Remote ZJ-A1 (russian) `__ by `kvvhost `__ - `ESPHome Home Assistant Cheap Cat Feeder `__ by :ghuser:`rubengargar` +- `ESPHome configs `__ by :ghuser:`nuttytree` From d7b9d7995c9148fe5a1dd5cdb41677907ad7155b Mon Sep 17 00:00:00 2001 From: tubalainen Date: Wed, 19 Feb 2020 18:15:32 +0100 Subject: [PATCH 032/108] Brightness feature not included in doc. (#445) Updated the documentation for the SSD1306 with the new brightness feature. PR: https://github.com/esphome/esphome/pull/681/ --- components/display/ssd1306.rst | 2 ++ 1 file changed, 2 insertions(+) diff --git a/components/display/ssd1306.rst b/components/display/ssd1306.rst index d859a1d6c..859613a36 100644 --- a/components/display/ssd1306.rst +++ b/components/display/ssd1306.rst @@ -68,6 +68,7 @@ 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:: @@ -140,6 +141,7 @@ 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 -------- From 38117baf6df46b0d0deda3ec356f99553f865a41 Mon Sep 17 00:00:00 2001 From: perjury Date: Mon, 2 Mar 2020 22:58:48 +0000 Subject: [PATCH 033/108] remove apostrophe (#504) Incorrect usage of apostrophe --- guides/automations.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/guides/automations.rst b/guides/automations.rst index b3da766cc..ca6c4481a 100644 --- a/guides/automations.rst +++ b/guides/automations.rst @@ -207,7 +207,7 @@ or else evaluate the second block. ``return ...;`` makes the code block give bac we're either *returning* ``COVER_OPEN`` or ``COVER_CLOSED`` to indicate that the cover is closed or open. Finally, ``id(...)`` is a helper function that makes ESPHome fetch an object with the supplied ID (which you defined -somewhere else, like ``top_end_stop```) and let's you call any of ESPHome's many APIs directly. For example, here +somewhere else, like ``top_end_stop```) and lets you call any of ESPHome's many APIs directly. For example, here we're retrieving the current state of the end stop using ``.state`` and using it to construct our cover state. .. note:: From 8fde56e774883cbac0ee4c217a55c77cd303489e Mon Sep 17 00:00:00 2001 From: Geoff Davis Date: Wed, 11 Mar 2020 20:48:08 -0700 Subject: [PATCH 034/108] Add UART-based Mitsibishi HeatPump Component (#506) --- guides/diy.rst | 1 + 1 file changed, 1 insertion(+) diff --git a/guides/diy.rst b/guides/diy.rst index 895829d66..7964daf17 100644 --- a/guides/diy.rst +++ b/guides/diy.rst @@ -60,6 +60,7 @@ Custom Components & Code - `ESPHome <-> Homebridge `__ by `basdelfos `__ - `Custom ESPHome for Wofea V10 Alarm `__ by :ghuser:`nbergont` - `Custom Smart meter P1 port reader `__ by :ghuser:`nldroid` +- `Custom Mitsubishi HVAC HeatPump control using UART ` by :ghuser:`geoffdavis` Sample Configurations --------------------- From 7d6c25d0587aceb7ab1cb0a8bc176bfa2c66b805 Mon Sep 17 00:00:00 2001 From: Francisk0 <42838981+Francisk0@users.noreply.github.com> Date: Thu, 12 Mar 2020 21:31:57 +0100 Subject: [PATCH 035/108] Update pzemac.rst (#495) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit RX pin is duplicated and don´t have TX pin --- components/sensor/pzemac.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/components/sensor/pzemac.rst b/components/sensor/pzemac.rst index a856b3e4e..b2ef2faec 100644 --- a/components/sensor/pzemac.rst +++ b/components/sensor/pzemac.rst @@ -36,7 +36,7 @@ to some pins on your board and the baud rate set to 9600. # Example configuration entry uart: rx_pin: D1 - rx_pin: D2 + tx_pin: D2 baud_rate: 9600 stop_bits: 2 From 75dec2989f2b28674d932799b653403f1b282f0c Mon Sep 17 00:00:00 2001 From: Geoff Davis Date: Thu, 12 Mar 2020 13:39:10 -0700 Subject: [PATCH 036/108] Fix link syntax (#507) Link wasn't rendering correctly. --- guides/diy.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/guides/diy.rst b/guides/diy.rst index 7964daf17..4ff47aed7 100644 --- a/guides/diy.rst +++ b/guides/diy.rst @@ -60,7 +60,7 @@ Custom Components & Code - `ESPHome <-> Homebridge `__ by `basdelfos `__ - `Custom ESPHome for Wofea V10 Alarm `__ by :ghuser:`nbergont` - `Custom Smart meter P1 port reader `__ by :ghuser:`nldroid` -- `Custom Mitsubishi HVAC HeatPump control using UART ` by :ghuser:`geoffdavis` +- `Custom Mitsubishi HVAC HeatPump control using UART `__ by :ghuser:`geoffdavis` Sample Configurations --------------------- From 065d2314a4de060680497922cb8a7cdb13aeb444 Mon Sep 17 00:00:00 2001 From: Oskar Napieraj Date: Thu, 12 Mar 2020 21:40:10 +0100 Subject: [PATCH 037/108] Typo fix (#498) likely left over from when documentation was adapted from the custom cover component --- components/light/custom.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/components/light/custom.rst b/components/light/custom.rst index ff463c379..e8e5245e3 100644 --- a/components/light/custom.rst +++ b/components/light/custom.rst @@ -52,7 +52,7 @@ And in YAML: # Example configuration entry esphome: includes: - - my_cover.h + - my_light.h light: - platform: custom From a556699597a1b43a06edfce20a8064dafa870b89 Mon Sep 17 00:00:00 2001 From: Krasimir Nedelchev Date: Thu, 12 Mar 2020 22:42:13 +0200 Subject: [PATCH 038/108] Fix typos (#480) --- cookbook/sonoff-basic-light-switch.rst | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/cookbook/sonoff-basic-light-switch.rst b/cookbook/sonoff-basic-light-switch.rst index b9b0bdb19..ca9eca632 100644 --- a/cookbook/sonoff-basic-light-switch.rst +++ b/cookbook/sonoff-basic-light-switch.rst @@ -25,7 +25,7 @@ light fitting with 5 lamps in it thats 5 expensive smart bulbs to buy just for o clearly have some great advantages, dimmable, colour temperature or even full colour changing. What if all you're after is a cost effective way to turn them on and off? -The ideal solution would be to reaplce the light switch with one that can be controlled by home +The ideal solution would be to replace the light switch with one that can be controlled by home assistant, whilst retaining the ease of use of a standard light that would also continue to work if the network went down, or home assistant failed etc. @@ -85,13 +85,13 @@ Please make sure you have read up about :doc:`the Sonoff Basic and how to flash As that won't be covered here.Also make sure you know your way around a soldering iron and can find the relevant information about the location of the GPIO pins on the Sonoff Basic if you need to. -If you have a Sonoff Basic V1 devices GPOI14 is alredy presented on a pin header on the PCB next to the programing pins. +If you have a Sonoff Basic V1 devices GPIO14 is alredy presented on a pin header on the PCB next to the programing pins. On the V2 and V3 PCBs, there is a solder pad underneath the PCB that will let you get at this GPIO. You have 2 choices when it comes to picking which GPIO to use. GPIO0 or GPIO14. GPIO0 is used by the push button switch on the the PCB so you will need to locate the right pin on the switch and solder a wire onto it if you're going to use that one. Whichever one you pick, you will also need to use the ground or 0v pin for the other side of the switch. Once you have soldered your wires -into palce, a handy tip is to add a drop of glue over the wire, a little way away from the solder joint, so give some strain relief +into place, a handy tip is to add a drop of glue over the wire, a little way away from the solder joint, so give some strain relief to the joint. Now you have a pair of wires from the GPIO and 0v to your retractive switch lets look at the code. @@ -152,7 +152,7 @@ if the light switch disconnects for any reason. .. note:: - If you wante to use a pull cord switch (in a bathroom for instance) that works like a standard switch and + If you wanted to use a pull cord switch (in a bathroom for instance) that works like a standard switch and changes state each pull (as opposed to a retractive switch that you press and let go) then you can change a single line *on_press:* to *on_state:* which will trigger the light toggle everytime the state of the switch changes. From 61752eb048b87bd8dddba249e0e4774c76abb659 Mon Sep 17 00:00:00 2001 From: Tuckie Date: Thu, 12 Mar 2020 16:42:45 -0400 Subject: [PATCH 039/108] Wrong IC (#499) --- components/sensor/max31855.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/components/sensor/max31855.rst b/components/sensor/max31855.rst index 4e2179d34..04deed2aa 100644 --- a/components/sensor/max31855.rst +++ b/components/sensor/max31855.rst @@ -8,7 +8,7 @@ MAX31855 K-Type Thermocouple Temperature Sensor The ``max31855`` temperature sensor allows you to use your max31855 thermocouple temperature sensor (`datasheet `__) with ESPHome -As the communication with the MAX66775 is done using SPI, you need +As the communication with the MAX31855 is done using SPI, you need to have an :ref:`spi bus ` in your configuration with the **miso_pin** set (mosi is not required). Connect ``GND`` to ``GND``, ``VCC`` to ``3.3V`` and the other three ``MISO`` (or ``SO`` for short), From 99750d250fe5f69c796e663b6bf524e5caf93668 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gediminas=20=C5=A0altenis?= Date: Thu, 12 Mar 2020 22:44:48 +0200 Subject: [PATCH 040/108] small mistype fix (#477) fix small mistype, should be ppb instead of ppm --- components/sensor/ccs811.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/components/sensor/ccs811.rst b/components/sensor/ccs811.rst index b0f1882cd..0ace2c61f 100644 --- a/components/sensor/ccs811.rst +++ b/components/sensor/ccs811.rst @@ -45,7 +45,7 @@ Configuration variables: - All other options from :ref:`Sensor `. - **tvoc** (**Required**): The information for the total volatile organic compound sensor in - parts per billion (ppm). + parts per billion (ppb). - **name** (**Required**, string): The name for the tvoc sensor. - **id** (*Optional*, :ref:`config-id`): Set the ID of this sensor for use in lambdas. From 05c1f9bd845d01dd95d2251a553d8313d90da2c4 Mon Sep 17 00:00:00 2001 From: TBobsin <50228256+TBobsin@users.noreply.github.com> Date: Thu, 12 Mar 2020 21:46:45 +0100 Subject: [PATCH 041/108] Update sonoff.rst (#470) New Models have an extra PIN labeled EXP-LOG beside EXP-LOG,GND,RX,TX,VCC --- devices/sonoff.rst | 1 + 1 file changed, 1 insertion(+) diff --git a/devices/sonoff.rst b/devices/sonoff.rst index 966d0a7a2..a46f2b4c2 100644 --- a/devices/sonoff.rst +++ b/devices/sonoff.rst @@ -61,6 +61,7 @@ Sonoff TH10/TH16 GPIO3, UART RX pin (for external sensors) GPIO4, Optional sensor GPIO14, Optional sensor + GPIO2, Optional Pin EXP-LOG (TH16 Ver 2.1 2019) Sonoff Dual R1 -------------- From 4ca3d71065f0ef1c57b46801a7dc34010f432e8a Mon Sep 17 00:00:00 2001 From: RockBomber Date: Thu, 12 Mar 2020 23:56:19 +0300 Subject: [PATCH 042/108] Update sonoff-t1-3.rst (#497) Fix error compile with suggested YAML --- cookbook/sonoff-t1-3.rst | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/cookbook/sonoff-t1-3.rst b/cookbook/sonoff-t1-3.rst index bc2f2d72b..c24a6de9f 100644 --- a/cookbook/sonoff-t1-3.rst +++ b/cookbook/sonoff-t1-3.rst @@ -38,7 +38,7 @@ T1 number: GPIO0 mode: INPUT_PULLUP inverted: True - id: button + id: button_1 on_press: then: - light.toggle: light_1 @@ -101,7 +101,7 @@ T2 number: GPIO0 mode: INPUT_PULLUP inverted: True - id: button + id: button_1 on_press: then: - light.toggle: light_1 @@ -111,7 +111,7 @@ T2 number: GPIO9 mode: INPUT_PULLUP inverted: True - id: button + id: button_2 on_press: then: - light.toggle: light_2 @@ -172,7 +172,7 @@ T3 number: GPIO0 mode: INPUT_PULLUP inverted: True - id: button + id: button_1 on_press: then: - light.toggle: light_1 @@ -182,7 +182,7 @@ T3 number: GPIO9 mode: INPUT_PULLUP inverted: True - id: button + id: button_2 on_press: then: - light.toggle: light_2 @@ -192,7 +192,7 @@ T3 number: GPIO10 mode: INPUT_PULLUP inverted: True - id: button + id: button_3 on_press: then: - light.toggle: light_3 From ca806ac8ceb99df3ca9d94adae47aa7c81691b14 Mon Sep 17 00:00:00 2001 From: truglodite Date: Thu, 12 Mar 2020 13:57:15 -0700 Subject: [PATCH 043/108] remove uppercase names (#487) name: cannot contain uppercase, but the docs say uppercase. Fixed --- components/esphome.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/components/esphome.rst b/components/esphome.rst index c5fff2e82..2357e07b0 100644 --- a/components/esphome.rst +++ b/components/esphome.rst @@ -23,7 +23,7 @@ Configuration variables: ------------------------ - **name** (**Required**, string): This is the name of the node. It - should always be unique in your esphome network. May only contain upper/lowercase + should always be unique in your esphome network. May only contain lowercase characters, digits and underscores. See :ref:`esphome-changing_node_name`. - **platform** (**Required**, string): The platform your board is on, either ``ESP32`` or ``ESP8266``. See :ref:`esphome-arduino_version`. From 6f98760d80459451ed83209d05eb7fd69cbb1ac4 Mon Sep 17 00:00:00 2001 From: Vc <37367415+Valcob@users.noreply.github.com> Date: Thu, 12 Mar 2020 22:57:45 +0200 Subject: [PATCH 044/108] Update ssd1306.rst (#481) Added brightness to the screen configuration block --- components/display/ssd1306.rst | 1 + 1 file changed, 1 insertion(+) diff --git a/components/display/ssd1306.rst b/components/display/ssd1306.rst index 859613a36..0203e66f2 100644 --- a/components/display/ssd1306.rst +++ b/components/display/ssd1306.rst @@ -61,6 +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°``. +- **brigthness** (*Optional*): Set the screen brightness in percents 0.0-1.0. Defaults to `1.0` that coresponds 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. From 5aaafb2a7026389a33c04d89e08f7044638a72ef Mon Sep 17 00:00:00 2001 From: sillyfrog <816454+sillyfrog@users.noreply.github.com> Date: Fri, 13 Mar 2020 07:19:28 +1000 Subject: [PATCH 045/108] Update board for Sonoff and links to Tasmota (#484) Co-authored-by: Sillyfrog --- devices/sonoff.rst | 8 ++++++-- devices/sonoff_basic.rst | 3 ++- devices/sonoff_s20.rst | 8 +++++--- devices/sonoff_s20.yaml | 3 ++- 4 files changed, 15 insertions(+), 7 deletions(-) diff --git a/devices/sonoff.rst b/devices/sonoff.rst index a46f2b4c2..6bac7b251 100644 --- a/devices/sonoff.rst +++ b/devices/sonoff.rst @@ -14,11 +14,15 @@ and shipping from China takes a long time, I've only set up dedicated guides for esphome: name: platform: ESP8266 - board: esp01_1m + board: esp8285 + arduino_version: 2.4.2 + +The selected board and arduino_version are required in v1.14.3 (and probably later), see +https://github.com/esphome/issues/issues/931 for details. After that use the following list of pin to function mappings to set up your Sonoff device. This list has been compiled from the Sonoff Tasmota pin source file which can be found here: -https://github.com/arendst/Sonoff-Tasmota/blob/development/sonoff/sonoff_template.h ❤️ +https://github.com/arendst/Tasmota/blob/development/tasmota/tasmota_template.h ❤️ Sonoff RF --------- diff --git a/devices/sonoff_basic.rst b/devices/sonoff_basic.rst index 031f8e205..2c52edc46 100644 --- a/devices/sonoff_basic.rst +++ b/devices/sonoff_basic.rst @@ -54,7 +54,8 @@ exposes all of the basic functions. esphome: name: platform: ESP8266 - board: esp01_1m + board: esp8285 + arduino_version: 2.4.2 wifi: ssid: diff --git a/devices/sonoff_s20.rst b/devices/sonoff_s20.rst index 8fd8683f8..d8ee52631 100644 --- a/devices/sonoff_s20.rst +++ b/devices/sonoff_s20.rst @@ -128,7 +128,8 @@ or alternatively, you can just take the below configuration file and modify it t esphome: name: platform: ESP8266 - board: esp01_1m + board: esp8285 + arduino_version: 2.4.2 wifi: ssid: @@ -206,8 +207,9 @@ of the basic functions. esphome: name: platform: ESP8266 - board: esp01_1m - + board: esp8285 + arduino_version: 2.4.2 + wifi: ssid: password: diff --git a/devices/sonoff_s20.yaml b/devices/sonoff_s20.yaml index 517a0cd8e..6ff2001dd 100644 --- a/devices/sonoff_s20.yaml +++ b/devices/sonoff_s20.yaml @@ -1,7 +1,8 @@ esphome: name: platform: ESP8266 - board: esp01_1m + board: esp8285 + arduino_version: 2.4.2 wifi: ssid: From 473a6e402d440f84a2c83498a690c11888e04272 Mon Sep 17 00:00:00 2001 From: Jason Hines Date: Thu, 12 Mar 2020 17:36:27 -0400 Subject: [PATCH 046/108] Update migrate_sonoff_tasmota.rst (#483) Added note about issue 955 https://github.com/esphome/issues/issues/955 --- guides/migrate_sonoff_tasmota.rst | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/guides/migrate_sonoff_tasmota.rst b/guides/migrate_sonoff_tasmota.rst index 6c5decdec..3ca1639fb 100644 --- a/guides/migrate_sonoff_tasmota.rst +++ b/guides/migrate_sonoff_tasmota.rst @@ -55,6 +55,11 @@ Happy Hacking! switching from Tasmota, you need to power-cycle the device once. After that the dimming functionality will work as usual and no more power cycles are required. + +.. note:: + + If you are using Tasmota 8+ and get an error after uploading the firmware, go to the console and type ```SetOption78 1```, then restart the device and try the firmware again. + See Also -------- From ba9cd08d0968abc81756fca21a93e99e00a9d4f1 Mon Sep 17 00:00:00 2001 From: morph027 Date: Thu, 12 Mar 2020 22:37:10 +0100 Subject: [PATCH 047/108] added rgbww light using pwm driver (#482) * added rgbww light using pwm driver --- cookbook/zemismart-rgbw-downlights.rst | 41 ++++++++++++++++++++++++-- 1 file changed, 39 insertions(+), 2 deletions(-) diff --git a/cookbook/zemismart-rgbw-downlights.rst b/cookbook/zemismart-rgbw-downlights.rst index 5dc2714fc..3d5fa5c5c 100644 --- a/cookbook/zemismart-rgbw-downlights.rst +++ b/cookbook/zemismart-rgbw-downlights.rst @@ -1,5 +1,5 @@ -Zemismart LED RGBW Downlights -============================= +Zemismart LED RGBW/RGBWW Downlights +=================================== The Zemismart LED RGBW Downlight is a tuya based downlight available from various retailers online or from `zemismart.com `__ direct. @@ -116,6 +116,7 @@ firmware can be uploaded allowing you to control the smart plugs via Home Assist Thanks to `@1972rx2 `__ for creating the below ESPHome configuration which this cookbook article by `@cryptelli `__ is based on. +Depending ion the type of your light you either need a config using my9231 driver (RGBW) or 5 pwm channels (RGBWW). 3.1 Zemismart LED RGBW Downlight YAML ************************************* @@ -167,6 +168,42 @@ which this cookbook article by `@cryptelli Date: Thu, 19 Mar 2020 19:59:38 -0700 Subject: [PATCH 048/108] add a note about the log level of dump: all (#475) It would have saved me a bunch of time just now if I knew that remote_receiver's dump=all logging is at level DEBUG. --- components/remote_receiver.rst | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/components/remote_receiver.rst b/components/remote_receiver.rst index efbee9b27..efc98b508 100644 --- a/components/remote_receiver.rst +++ b/components/remote_receiver.rst @@ -27,8 +27,8 @@ Configuration variables: ------------------------ - **pin** (**Required**, :ref:`config-pin`): The pin to receive the remote signal on. -- **dump** (*Optional*, list): Decode and dump these remote codes in the logs. Set to ``all`` to - dump all available codecs: +- **dump** (*Optional*, list): Decode and dump these remote codes in the logs (at log.level=DEBUG). + Set to ``all`` to dump all available codecs: - **lg**: Decode and dump LG infrared codes. - **nec**: Decode and dump NEC infrared codes. From 00abf8b48328e00f942e796d6eae89d2dd1e6dff Mon Sep 17 00:00:00 2001 From: Tommy Jonsson Date: Sun, 5 Apr 2020 18:49:52 +0200 Subject: [PATCH 049/108] ifan02 cookbook (#218) * ifan02 cookbook * removed spaces * removed spaces * indent codeblock, newline at end * fixes * add seo :image: * spaces... * Complete the example code & fix compilation errors Tried compiling this code today using ESPHome 1.13.6.. it would not compile. * The ifan02.h file was the main culprit and I was able to fix the issue. * The .yaml example was missing a few declarations at the beginning so I added them. * I fixed an error related to using ```light``` for the light id since that is a reserved name. * I added an ```on_boot``` declaration to turn off the light as early as possible after power is restored. (if mains power is restored in the middle of the night and the light turns on while you are sleeping it can be quite annoying, this turns it off during the boot process). * removed blank spaces on line 66 Those blank spaces get me every time ;-) * fix doc links (hopefully) I think my last PR was made against the wrong fork/branch/etc... sorry, I'm still learning github. I currently have the time and really want to see this make it into the cookbook. I think if you add me as a collaborator I would be able to push the changes and help get the errors sorted more quickly; if not, no worries, I'll take no offense and do my best to continue helping as we are doing now. * fix fan link replace ``` :doc:`/components/fan` ``` with ``` :doc:`/components/fan/index` ``` Co-authored-by: mjoshd <35782597+mjoshd@users.noreply.github.com> Co-authored-by: Guillermo Ruffino --- cookbook/ifan02.rst | 212 ++++++++++++++++++++++++++++++++++++++++++++ index.rst | 1 + 2 files changed, 213 insertions(+) create mode 100644 cookbook/ifan02.rst diff --git a/cookbook/ifan02.rst b/cookbook/ifan02.rst new file mode 100644 index 000000000..0d5328a33 --- /dev/null +++ b/cookbook/ifan02.rst @@ -0,0 +1,212 @@ +Sonoff iFan02 +============= + +.. seo:: + :description: Instructions for using Sonoff ifan02 in ESPHome. + :keywords: Fan, Sonoff, ifan02 + :image: fan.svg + +Sonoff iFan02 is a driver for ceiling fans with lights. +By replacing the old driver with iFan02, your non-smart led ceiling fan will be converted to a smart ceiling fan. +For more information see `iFan02 `__ + +This configuration will expose a :doc:`/components/light/binary` and a :doc:`/components/fan/speed`. + +To get this working in ESPHome you first need to create a :doc:`/components/output/custom` to control the iFan02. + +Create a ifan02.h file: + +.. code-block:: c++ + + #include "esphome.h" + using namespace esphome; + + class IFan02Output : public Component, public FloatOutput { + public: + void write_state(float state) override { + if (state < 0.3) { + // OFF + digitalWrite(5, LOW); + digitalWrite(4, LOW); + digitalWrite(15, LOW); + } else if (state < 0.6) { + // low speed + digitalWrite(5, HIGH); + digitalWrite(4, LOW); + digitalWrite(15, LOW); + } else if (state < 0.9) { + // medium speed + digitalWrite(5, HIGH); + digitalWrite(4, HIGH); + digitalWrite(15, LOW); + } else { + // high speed + digitalWrite(5, HIGH); + digitalWrite(4, LOW); + digitalWrite(15, HIGH); + } + } + }; + +Then you need to set it up with yaml. + +.. code-block:: yaml + + esphome: + name: ifan02 + platform: ESP8266 + board: esp8285 + includes: + - ifan02.h + on_boot: + priority: 225 + # turn off the light as early as possible + then: + - light.turn_off: ifan02_light + + wifi: + ssid: + password: + + api: + + logger: + + ota: + + binary_sensor: + - platform: gpio + id: vbutton_light + pin: + number: GPIO0 + inverted: True + on_press: + then: + - light.toggle: ifan02_light + + - platform: gpio + id: vbutton_relay_1 + pin: + number: GPIO9 + inverted: True + on_press: + then: + - switch.toggle: fan_relay1 + - switch.turn_on: update_fan_speed + + - platform: gpio + id: vbutton_relay_2 + pin: + number: GPIO10 + inverted: True + on_press: + then: + - switch.toggle: fan_relay2 + - switch.turn_on: update_fan_speed + + - platform: gpio + id: vbutton_relay_3 + pin: + number: GPIO14 + inverted: True + on_press: + then: + - switch.toggle: fan_relay3 + - switch.turn_on: update_fan_speed + + output: + - platform: custom + type: float + outputs: + id: fanoutput + lambda: |- + auto ifan02_fan = new IFan02Output(); + App.register_component(ifan02_fan); + return {ifan02_fan}; + + - platform: gpio + pin: GPIO12 + id: light_output + + light: + - platform: binary + name: "iFan02 Light" + output: light_output + id: ifan02_light + + switch: + - platform: template + id: update_fan_speed + optimistic: True + turn_on_action: + then: + - delay: 200ms + - if: + condition: + and: + - switch.is_off: fan_relay1 + - switch.is_off: fan_relay2 + - switch.is_off: fan_relay3 + then: + - fan.turn_off: ifan02_fan + - if: + condition: + and: + - switch.is_on: fan_relay1 + - switch.is_off: fan_relay2 + - switch.is_off: fan_relay3 + then: + - fan.turn_on: + id: ifan02_fan + speed: LOW + - if: + condition: + and: + - switch.is_on: fan_relay1 + - switch.is_on: fan_relay2 + - switch.is_off: fan_relay3 + then: + - fan.turn_on: + id: ifan02_fan + speed: MEDIUM + - if: + condition: + and: + - switch.is_on: fan_relay1 + - switch.is_off: fan_relay2 + - switch.is_on: fan_relay3 + then: + - fan.turn_on: + id: ifan02_fan + speed: HIGH + - switch.turn_off: update_fan_speed + + - platform: gpio + pin: GPIO5 + id: fan_relay1 + + - platform: gpio + pin: GPIO4 + id: fan_relay2 + + - platform: gpio + pin: GPIO15 + id: fan_relay3 + + fan: + - platform: speed + output: fanoutput + id: ifan02_fan + name: "iFan02 Fan" + +See Also +-------- + +- :doc:`/components/light/index` +- :doc:`/components/light/binary` +- :doc:`/components/fan/index` +- :doc:`/components/fan/speed` +- :doc:`/components/output/index` +- :doc:`/components/output/custom` +- :doc:`/guides/automations` +- :ghedit:`Edit` diff --git a/index.rst b/index.rst index 728562f8e..1ef1c0aa2 100644 --- a/index.rst +++ b/index.rst @@ -354,6 +354,7 @@ Cookbook Mirabella Genio Bulb, cookbook/mirabella-genio-bulb, cookbook-mirabella-genio-b22-rgbw.jpg Garage Door, cookbook/garage-door, window-open.svg Brilliant / Mirabella Genio Smart Plugs, cookbook/brilliant-mirabella-genio-smart-plugs, cookbook-brilliant-mirabella-genio-smart-plugs.jpg + Sonoff iFan02, cookbook/ifan02, fan.svg Zemismart RGBW Downlights, cookbook/zemismart-rgbw-downlights, cookbook-zemismart-rgbw-downlight.jpg Teckin SB50, cookbook/teckin_sb50, teckin_sb50.jpg Sonoff light switch options, cookbook/sonoff-light-switch, light_switch.png From f832223c417126d66dc7554cdc7d426956f1dd69 Mon Sep 17 00:00:00 2001 From: kroimon Date: Wed, 8 Apr 2020 14:31:35 +0200 Subject: [PATCH 050/108] Add documentation for cwww and rgbww constant_brightness variables. (#530) --- components/light/cwww.rst | 2 ++ components/light/rgbww.rst | 2 ++ 2 files changed, 4 insertions(+) diff --git a/components/light/cwww.rst b/components/light/cwww.rst index d0bfebc4b..abc8b1736 100644 --- a/components/light/cwww.rst +++ b/components/light/cwww.rst @@ -19,6 +19,7 @@ channels will be mixed using the color temperature configuration options. warm_white: output_component2 cold_white_color_temperature: 6536 K warm_white_color_temperature: 2000 K + constant_brightness: true Configuration variables: ------------------------ @@ -30,6 +31,7 @@ Configuration variables: of the cold white channel. - **warm_white_color_temperature** (**Required**, float): The color temperate (in `mireds `__ or Kelvin) of the warm white channel. +- **constant_brightness** (*Optional*, boolean): When enabled, this will keep the overall brightness of the cold and warm white channels constant by limiting the combined output to 100% of a single channel. This reduces the possible overall brightness but is necessary for some power supplies that are not able to run both channels at full brightness at once. Defaults to ``false``. - **effects** (*Optional*, list): A list of :ref:`light effects ` to use for this light. - **id** (*Optional*, :ref:`config-id`): Manually specify the ID used for code generation. - All other options from :ref:`Light `. diff --git a/components/light/rgbww.rst b/components/light/rgbww.rst index 71e8eb03a..df3f31c94 100644 --- a/components/light/rgbww.rst +++ b/components/light/rgbww.rst @@ -22,6 +22,7 @@ and warm white channels will be mixed using the color temperature configuration warm_white: output_component5 cold_white_color_temperature: 6536 K warm_white_color_temperature: 2000 K + constant_brightness: true Color Correction ---------------- @@ -63,6 +64,7 @@ Configuration variables: of the cold white channel. - **warm_white_color_temperature** (**Required**, float): The color temperate (in `mireds `__ or Kelvin) of the warm white channel. +- **constant_brightness** (*Optional*, boolean): When enabled, this will keep the overall brightness of the cold and warm white channels constant by limiting the combined output to 100% of a single channel. This reduces the possible overall brightness but is necessary for some power supplies that are not able to run both channels at full brightness at once. Defaults to ``false``. - **effects** (*Optional*, list): A list of :ref:`light effects ` to use for this light. - **id** (*Optional*, :ref:`config-id`): Manually specify the ID used for code generation. - All other options from :ref:`Light `. From 1dfb880444375507a0e23a2b70c45b0192bda205 Mon Sep 17 00:00:00 2001 From: Ermanno Baschiera Date: Thu, 9 Apr 2020 23:22:33 +0200 Subject: [PATCH 051/108] remove link to Adafruit and mkelec (#531) * remove links to Adafruit and mkelec --- components/sensor/bh1750.rst | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/components/sensor/bh1750.rst b/components/sensor/bh1750.rst index 813695f7d..9a739443e 100644 --- a/components/sensor/bh1750.rst +++ b/components/sensor/bh1750.rst @@ -7,7 +7,7 @@ BH1750 Ambient Light Sensor :keywords: BH1750 The ``bh1750`` sensor platform allows you to use your BH1750 -(`datasheet `__, `Adafruit`_, `mklec`_) +(`datasheet `__) ambient light sensor with ESPHome. The :ref:`I²C bus ` is required to be set up in your configuration for this sensor to work. @@ -17,9 +17,6 @@ your configuration for this sensor to work. BH1750 Ambient Light Sensor. -.. _Adafruit: https://www.adafruit.com/product/1603 -.. _mklec: http://mklec.com/modules/micro-controller-modules/bh1750-bh1750fvi-digital-light-sensor-module - .. figure:: images/bh1750-ui.png :align: center :width: 80.0% From 875555742f0b43099f90b3d83deee68b5605c28b Mon Sep 17 00:00:00 2001 From: Guillermo Ruffino Date: Fri, 10 Apr 2020 12:43:22 -0300 Subject: [PATCH 052/108] Revert "Add documentation for cwww and rgbww constant_brightness variables. (#530)" (#539) This reverts commit f832223c417126d66dc7554cdc7d426956f1dd69. --- components/light/cwww.rst | 2 -- components/light/rgbww.rst | 2 -- 2 files changed, 4 deletions(-) diff --git a/components/light/cwww.rst b/components/light/cwww.rst index abc8b1736..d0bfebc4b 100644 --- a/components/light/cwww.rst +++ b/components/light/cwww.rst @@ -19,7 +19,6 @@ channels will be mixed using the color temperature configuration options. warm_white: output_component2 cold_white_color_temperature: 6536 K warm_white_color_temperature: 2000 K - constant_brightness: true Configuration variables: ------------------------ @@ -31,7 +30,6 @@ Configuration variables: of the cold white channel. - **warm_white_color_temperature** (**Required**, float): The color temperate (in `mireds `__ or Kelvin) of the warm white channel. -- **constant_brightness** (*Optional*, boolean): When enabled, this will keep the overall brightness of the cold and warm white channels constant by limiting the combined output to 100% of a single channel. This reduces the possible overall brightness but is necessary for some power supplies that are not able to run both channels at full brightness at once. Defaults to ``false``. - **effects** (*Optional*, list): A list of :ref:`light effects ` to use for this light. - **id** (*Optional*, :ref:`config-id`): Manually specify the ID used for code generation. - All other options from :ref:`Light `. diff --git a/components/light/rgbww.rst b/components/light/rgbww.rst index df3f31c94..71e8eb03a 100644 --- a/components/light/rgbww.rst +++ b/components/light/rgbww.rst @@ -22,7 +22,6 @@ and warm white channels will be mixed using the color temperature configuration warm_white: output_component5 cold_white_color_temperature: 6536 K warm_white_color_temperature: 2000 K - constant_brightness: true Color Correction ---------------- @@ -64,7 +63,6 @@ Configuration variables: of the cold white channel. - **warm_white_color_temperature** (**Required**, float): The color temperate (in `mireds `__ or Kelvin) of the warm white channel. -- **constant_brightness** (*Optional*, boolean): When enabled, this will keep the overall brightness of the cold and warm white channels constant by limiting the combined output to 100% of a single channel. This reduces the possible overall brightness but is necessary for some power supplies that are not able to run both channels at full brightness at once. Defaults to ``false``. - **effects** (*Optional*, list): A list of :ref:`light effects ` to use for this light. - **id** (*Optional*, :ref:`config-id`): Manually specify the ID used for code generation. - All other options from :ref:`Light `. From 492a5f6bebf248ec0ade1b03213ec3c1fac5d475 Mon Sep 17 00:00:00 2001 From: icarome Date: Sat, 11 Apr 2020 15:31:33 -0300 Subject: [PATCH 053/108] Update diy.rst (#534) --- guides/diy.rst | 1 + 1 file changed, 1 insertion(+) diff --git a/guides/diy.rst b/guides/diy.rst index 4ff47aed7..aa5b45b1c 100644 --- a/guides/diy.rst +++ b/guides/diy.rst @@ -82,3 +82,4 @@ Sample Configurations - `ESPHome config for Universal IR Remote ZJ-A1 (russian) `__ by `kvvhost `__ - `ESPHome Home Assistant Cheap Cat Feeder `__ by :ghuser:`rubengargar` - `ESPHome configs `__ by :ghuser:`nuttytree` +- `ESPHome Home Assistant stepper motor blinds/curtain `__ by :ghuser:`icarome` From 40e5e11ddab94110ddf132f95f3f9dc7630e2746 Mon Sep 17 00:00:00 2001 From: MrZetor Date: Mon, 20 Apr 2020 16:02:21 +0300 Subject: [PATCH 054/108] Update sonoff.rst (#549) Added configuration for Sonoff S55. Functionality verified. --- devices/sonoff.rst | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/devices/sonoff.rst b/devices/sonoff.rst index 6bac7b251..3d47f0b9d 100644 --- a/devices/sonoff.rst +++ b/devices/sonoff.rst @@ -308,6 +308,18 @@ Sonoff S31 See :doc:`/components/sensor/cse7766` for measuring power +Sonoff S55 +---------- + +.. pintable:: + + GPIO0, Button (inverted), + GPIO12, Relay and Red LED, + GPIO13, Blue LED (inverted), + GPIO1, UART TX pin (for external sensors) + GPIO3, UART RX pin (for external sensors) + + Sonoff Mini ----------- From 63030e097d5fd5f27150f47ad58d2dc702a5ba16 Mon Sep 17 00:00:00 2001 From: Niklas Wagner Date: Sat, 25 Apr 2020 03:05:19 +0200 Subject: [PATCH 055/108] Improve LEDC documentation (#557) --- components/output/ledc.rst | 31 ++++++++++++++++++++++++++++--- 1 file changed, 28 insertions(+), 3 deletions(-) diff --git a/components/output/ledc.rst b/components/output/ledc.rst index ed7c10f5d..83d081d07 100644 --- a/components/output/ledc.rst +++ b/components/output/ledc.rst @@ -10,7 +10,7 @@ channel `. Advanced options: @@ -43,6 +41,33 @@ Advanced options: channel `__ to use. Two adjacent channels share the same timer. Defaults to an automatic selection. +Recommended frequencies +----------------------- + +To get the highest available frequency while still getting the same bit depth it is +recommended to pick one of the following frequencies. + +Higher bit depth means that the light has more steps available to change from one +value to another. This is especially noteable when the light is below 10% and take +a long transition. eg. turning slowly off. + +================================== =================================== =================================== +**Frequency** **Bit depth** **Available steps for transitions** +---------------------------------- ----------------------------------- ----------------------------------- +1220hz 16 65536 +---------------------------------- ----------------------------------- ----------------------------------- +2441hz 15 32768 +---------------------------------- ----------------------------------- ----------------------------------- +4882hz 14 16384 +---------------------------------- ----------------------------------- ----------------------------------- +9765hz 13 8192 +---------------------------------- ----------------------------------- ----------------------------------- +19531hz 12 4096 +================================== =================================== =================================== + +The ESP8266 for instance has *usually* a frequency of 1000hz with a resolution of 10 bits. +This means that there are only 4 steps between each value. + .. _output-ledc-set_frequency_action: ``output.ledc.set_frequency`` Action From f30c1009131b0927d2c087cb58463ab397413d0c Mon Sep 17 00:00:00 2001 From: kbouchard111 <64103214+kbouchard111@users.noreply.github.com> Date: Mon, 27 Apr 2020 10:47:11 -0500 Subject: [PATCH 056/108] Update wifi.rst (#562) * Update wifi.rst Add documentation for output_power option. * Update wifi.rst Add default info for ESP8266 and warning about 20.5dB --- components/wifi.rst | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/components/wifi.rst b/components/wifi.rst index 69f0af536..e06046ffe 100644 --- a/components/wifi.rst +++ b/components/wifi.rst @@ -67,7 +67,8 @@ Configuration variables: seems to have issues with WiFi where a full reboot is required to get the interface back working. Defaults to ``15min``. - **power_save_mode** (*Optional*, string): The power save mode for the WiFi interface. See :ref:`wifi-power_save_mode` - + +- **output_power** (*Optional*, string): The amount of TX power for the WiFi interface from 10dB to 20.5dB. Default for ESP8266 is 20dB, 20.5dB might cause unexpected restarts. - **fast_connect** (*Optional*, boolean): If enabled, directly connects to WiFi network without doing a full scan first. This is required for hidden networks and can significantly improve connection times. Defaults to ``off``. The downside is that this option connects to the first network the ESP sees, even if that network is very far away and From 06e452c2d5e0744368c00088491f28d74439f6b9 Mon Sep 17 00:00:00 2001 From: deftdawg Date: Thu, 30 Apr 2020 17:09:07 -0400 Subject: [PATCH 057/108] Add unit_of_measurement to make graphing happens (#569) without units these values are displayed as series of string values instead of a graph --- cookbook/bme280_environment.rst | 3 +++ 1 file changed, 3 insertions(+) diff --git a/cookbook/bme280_environment.rst b/cookbook/bme280_environment.rst index 910f38c0c..84f8f8b66 100644 --- a/cookbook/bme280_environment.rst +++ b/cookbook/bme280_environment.rst @@ -40,6 +40,7 @@ After validating the sensor is working, we can proceed and add some formulas. return ((id(bme280_temperature).state + 273.15) / 0.0065) * (powf((STANDARD_SEA_LEVEL_PRESSURE / id(bme280_pressure).state), 0.190234) - 1); // in meter update_interval: 15s + unit_of_measurement: 'm' - platform: template name: "Absolute Humidity" lambda: |- @@ -50,6 +51,7 @@ After validating the sensor is working, we can proceed and add some formulas. ((273.15 + id(bme280_temperature).state) * r); // in grams/m^3 accuracy_decimals: 2 update_interval: 15s + unit_of_measurement: 'g/m³' Altitude and absolute humidity: ------------------------------- @@ -98,6 +100,7 @@ Calculating the sea level pressure with a statically mounted sensor can be be us return id(bme280_pressure).state / powf(1 - ((0.0065 * STANDARD_ALTITUDE) / (id(bme280_temperature).state + (0.0065 * STANDARD_ALTITUDE) + 273.15)), 5.257); // in hPa update_interval: 15s + unit_of_measurement: 'hPa' .. note:: From 684f0a41d78fcfa294b2a7214ba01cee7dc7b6e0 Mon Sep 17 00:00:00 2001 From: mnaz Date: Thu, 7 May 2020 08:10:51 -0500 Subject: [PATCH 058/108] Simple grammar change. (#578) Simple grammar change. --- cookbook/display_time_temp_oled.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cookbook/display_time_temp_oled.rst b/cookbook/display_time_temp_oled.rst index 45d6bd083..133c91e15 100644 --- a/cookbook/display_time_temp_oled.rst +++ b/cookbook/display_time_temp_oled.rst @@ -93,7 +93,7 @@ Display Definition Now setup the communication to the display and start fill the screen with live data! -The ``reset_pin`` was not used in my hardware configuration as the display didn't had that pin exposed. +The ``reset_pin`` was not used in my hardware configuration as the display didn't have that pin exposed. Note your ``address`` and ``model`` might be different, use the scan option to find the address of your display. From 9b6170ac60b2dce6fc62d646390358cd0b8cbe1c Mon Sep 17 00:00:00 2001 From: Matthew Edwards Date: Mon, 11 May 2020 07:27:59 +1200 Subject: [PATCH 059/108] Fix typos (#561) --- components/binary_sensor/ble_presence.rst | 2 +- components/binary_sensor/homeassistant.rst | 6 +-- components/binary_sensor/mpr121.rst | 6 +-- components/binary_sensor/pn532.rst | 6 +-- components/binary_sensor/ttp229.rst | 4 +- components/captive_portal.rst | 2 +- components/climate/tcl112.rst | 6 +-- components/cover/time_based.rst | 2 +- components/display/index.rst | 8 ++-- components/display/lcd_display.rst | 4 +- components/display/ssd1306.rst | 4 +- components/esp32_ble_beacon.rst | 2 +- components/esp32_camera.rst | 8 ++-- components/esphome.rst | 34 +++++++------- components/light/tuya.rst | 2 +- components/logger.rst | 2 +- components/output/esp8266_pwm.rst | 2 +- components/output/ledc.rst | 16 +++---- components/output/my9231.rst | 4 +- components/output/sm16716.rst | 6 +-- components/pcf8574.rst | 4 +- components/remote_receiver.rst | 12 ++--- components/remote_transmitter.rst | 2 +- components/sensor/ade7953.rst | 2 +- components/sensor/am2320.rst | 4 +- components/sensor/apds9960.rst | 8 ++-- components/sensor/as3935.rst | 44 +++++++++---------- components/sensor/atm90e32.rst | 8 ++-- components/sensor/bh1750.rst | 2 +- components/sensor/bme280.rst | 4 +- components/sensor/bme680.rst | 2 +- components/sensor/bmp085.rst | 4 +- components/sensor/bmp280.rst | 2 +- components/sensor/custom.rst | 10 ++--- components/sensor/dallas.rst | 14 +++--- components/sensor/dht.rst | 10 ++--- components/sensor/dht12.rst | 2 +- components/sensor/hdc1080.rst | 2 +- components/sensor/hmc5883l.rst | 2 +- components/sensor/homeassistant.rst | 6 +-- components/sensor/htu21d.rst | 2 +- components/sensor/hx711.rst | 8 ++-- components/sensor/ina219.rst | 2 +- components/sensor/ina3221.rst | 2 +- components/sensor/index.rst | 8 ++-- components/sensor/max31855.rst | 4 +- components/sensor/max6675.rst | 8 ++-- components/sensor/mpu6050.rst | 6 +-- components/sensor/ms5611.rst | 2 +- components/sensor/scd30.rst | 8 ++-- components/sensor/sgp30.rst | 8 ++-- components/sensor/sht3xd.rst | 2 +- components/sensor/shtcx.rst | 6 +-- components/sensor/sts3x.rst | 2 +- components/sensor/tcs34725.rst | 2 +- components/sensor/tsl2561.rst | 4 +- components/sensor/tx20.rst | 26 +++++------ components/sensor/ultrasonic.rst | 2 +- components/sensor/vl53l0x.rst | 2 +- components/sensor/xiaomi_cgg1.rst | 6 +-- components/sensor/xiaomi_lywsd02.rst | 6 +-- components/sensor/xiaomi_lywsdcgq.rst | 6 +-- components/sim800l.rst | 22 +++++----- components/spi.rst | 4 +- components/sx1509.rst | 18 ++++---- components/text_sensor/homeassistant.rst | 6 +-- components/text_sensor/wifi_info.rst | 4 +- components/time.rst | 16 +++---- components/uart.rst | 4 +- components/wifi.rst | 4 +- cookbook/arduino_port_extender.rst | 4 +- .../brilliant-mirabella-genio-smart-plugs.rst | 10 ++--- cookbook/display_time_temp_oled.rst | 4 +- cookbook/h801.rst | 12 ++--- cookbook/mirabella-genio-bulb.rst | 6 +-- cookbook/sonoff-basic-light-switch.rst | 30 ++++++------- cookbook/sonoff-dual-light-switch.rst | 12 ++--- cookbook/sonoff-fishpond-pump.rst | 20 ++++----- cookbook/sonoff-t1-3.rst | 10 ++--- cookbook/teckin_sb50.rst | 2 +- cookbook/zemismart-rgbw-downlights.rst | 14 +++--- custom/i2c.rst | 2 +- devices/sonoff_4ch.rst | 12 ++--- devices/sonoff_s20.rst | 12 ++--- devices/sonoff_t1_uk_3gang_v1.1.rst | 12 ++--- guides/cli.rst | 6 +-- guides/contributing.rst | 26 +++++------ guides/faq.rst | 14 +++--- guides/getting_started_command_line.rst | 4 +- guides/migrate_espurna.rst | 2 +- index.rst | 6 +-- 91 files changed, 345 insertions(+), 345 deletions(-) diff --git a/components/binary_sensor/ble_presence.rst b/components/binary_sensor/ble_presence.rst index 03b908aa7..de52e8e42 100644 --- a/components/binary_sensor/ble_presence.rst +++ b/components/binary_sensor/ble_presence.rst @@ -6,7 +6,7 @@ ESP32 Bluetooth Low Energy Device :image: bluetooth.png The ``ble_presence`` binary sensor platform lets you track the presence of a -bluetooth low energy device. +Bluetooth Low Energy device. .. figure:: images/esp32_ble-ui.png :align: center diff --git a/components/binary_sensor/homeassistant.rst b/components/binary_sensor/homeassistant.rst index 19a52ced8..0374de100 100644 --- a/components/binary_sensor/homeassistant.rst +++ b/components/binary_sensor/homeassistant.rst @@ -1,8 +1,8 @@ -Homeassistant Binary Sensor -=========================== +Home Assistant Binary Sensor +============================ .. seo:: - :description: Instructions for setting up homeassistant binary sensors with ESPHome that import states from your homeassistant instance. + :description: Instructions for setting up Home Assistant binary sensors with ESPHome that import states from your Home Assistant instance. :image: home-assistant.png The ``homeassistant`` binary sensor platform allows you to create binary sensors that **import** diff --git a/components/binary_sensor/mpr121.rst b/components/binary_sensor/mpr121.rst index 2a031b5bf..3cec12ad3 100644 --- a/components/binary_sensor/mpr121.rst +++ b/components/binary_sensor/mpr121.rst @@ -8,7 +8,7 @@ MPR121 Capacitive Touch Sensor The ``mpr121`` sensor platform allows you to use your MPR121 (`datasheet `__, -`Adafruit`_) Capacitive Touch Sensor with esphomelib. The :ref:`I²C ` is +`Adafruit`_) Capacitive Touch Sensor with ESPHome. The :ref:`I²C ` is required to be set up in your configuration for this sensor to work. .. figure:: images/mpr121-full.jpg @@ -45,7 +45,7 @@ The configuration is made up of two parts: The central component, and individual Base Configuration: -- **address** (*Optional*, integer): The i2c address of the sensor. Defaults to ``0x5A``. +- **address** (*Optional*, integer): The I^2C 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. Defaults to 0. @@ -59,7 +59,7 @@ Binary Sensor Configuration: - **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/binary_sensor/pn532.rst b/components/binary_sensor/pn532.rst index 495c258df..c645f2d45 100644 --- a/components/binary_sensor/pn532.rst +++ b/components/binary_sensor/pn532.rst @@ -12,7 +12,7 @@ Component/Hub ------------- The ``pn532`` component allows you to use PN532 NFC/RFID controllers -(`datasheet `__, `adafruit `__) +(`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. @@ -25,7 +25,7 @@ See :ref:`pn532-setting_up_tags` for information on how to setup individual bina As the communication with the PN532 is done using SPI for this integration, you need to set the two switches on the board to the SPI mode (usually by setting the first one to OFF and the second one to ON). Additionally, you need -to have an :ref:`spi bus ` in your configuration with both the **miso_pin** and **mosi_pin** set. +to have an :ref:`SPI bus ` in your configuration with both the **miso_pin** and **mosi_pin** set. .. code-block:: yaml @@ -126,7 +126,7 @@ Setting Up Tags --------------- To set up binary sensors for specific NFC tags you first have to know their unique IDs. To obtain this -id, first set up a simple pn532 configuration without any binary sensors like above. +id, first set up a simple PN532 configuration without any binary sensors like above. When your code is running and you approach the PN532 with an NFC Tag, you should see a message like this: diff --git a/components/binary_sensor/ttp229.rst b/components/binary_sensor/ttp229.rst index 7e0967098..a2f52aa83 100644 --- a/components/binary_sensor/ttp229.rst +++ b/components/binary_sensor/ttp229.rst @@ -47,7 +47,7 @@ Base Configuration: Binary Sensor Configuration: - **name** (**Required**, string): The name of the binary sensor. -- **channel** (**Required**, integer): The channel number at the ttp229 the touchkey is connected to. +- **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 `. @@ -82,7 +82,7 @@ Base Configuration: Binary Sensor Configuration: - **name** (**Required**, string): The name of the binary sensor. -- **channel** (**Required**, integer): The channel number at the ttp229 the touchkey is connected to. +- **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 `. diff --git a/components/captive_portal.rst b/components/captive_portal.rst index 29caa5aa7..a40884f01 100644 --- a/components/captive_portal.rst +++ b/components/captive_portal.rst @@ -8,7 +8,7 @@ Captive Portal The captive portal component in ESPHome is a fallback mechanism for when connecting to the configured :doc:`WiFi ` fails. -After 1 minute of unsuccesful wifi connection attempts, the ESP will start a WiFi hotspot +After 1 minute of unsuccessful WiFi connection attempts, the ESP will start a WiFi hotspot (with the credentials from your configuration) .. figure:: images/captive_portal-ui.png diff --git a/components/climate/tcl112.rst b/components/climate/tcl112.rst index 6dc6b765a..4191610c9 100644 --- a/components/climate/tcl112.rst +++ b/components/climate/tcl112.rst @@ -1,11 +1,11 @@ -Tcl112 Remote Climate +TCL112 Remote Climate ===================== .. seo:: - :description: Controls a Tcl112 compatible Climate via IR + :description: Controls a TCL112-compatible Climate via IR :image: air-conditioner.png -The ``tcl112`` climate platform allows you to control a TCL112 compatible AC unit by sending IR signals +The ``tcl112`` climate platform allows you to control a TCL112-compatible AC unit by sending IR signals as your remote unit would do. This component requires that you have setup a :doc:`/components/remote_transmitter`. diff --git a/components/cover/time_based.rst b/components/cover/time_based.rst index bbda9490b..2be44f1f0 100644 --- a/components/cover/time_based.rst +++ b/components/cover/time_based.rst @@ -49,7 +49,7 @@ Configuration variables: be performed to stop the cover when the remote requests the cover to be stopped or when the cover has been opening/closing for the given durations. - **has_built_in_endstop** (*Optional*, boolean): Indicates that the cover has built in end stop - detectors. In this configuration the ``stop_action`` is not perfomed when the open or close + detectors. In this configuration the ``stop_action`` is not performed when the open or close time is completed and if the cover is commanded to open or close the corresponding actions will be performed without checking current state. Defaults to ``False``. - **id** (*Optional*, :ref:`config-id`): Manually specify the ID used for code generation. diff --git a/components/display/index.rst b/components/display/index.rst index 04a168c2a..5d2444b8e 100644 --- a/components/display/index.rst +++ b/components/display/index.rst @@ -129,8 +129,8 @@ Drawing Static Text ******************* The rendering engine also has a powerful font drawer which integrates seamlessly into ESPHome. -Whereas in most arduino display projects you have to use one of a few pre-defined fonts in very -specific sizes, with ESPHome you have the option to use **any** truetype (``.ttf``) font file +Whereas in most Arduino display projects you have to use one of a few pre-defined fonts in very +specific sizes, with ESPHome you have the option to use **any** TrueType (``.ttf``) font file at **any** size! Granted the reason for it is actually not having to worry about the licensing of font files :) To use fonts you first have to define a font object in your ESPHome configuration file. Just grab @@ -149,7 +149,7 @@ a ``.ttf`` file from somewhere on the Internet and create a ``font:`` section in Configuration variables: -- **file** (**Required**, string): The path (relative to where the .yaml file is) of the truetype font +- **file** (**Required**, string): The path (relative to where the .yaml file is) of the TrueType font file. - **id** (**Required**, :ref:`config-id`): The ID with which you will be able to reference the font later in your display code. @@ -165,7 +165,7 @@ Configuration variables: .. note:: To use fonts you will need to have the python ``pillow`` package installed, as ESPHome uses that package - to translate the truetype files into an internal format. If you're running this as a Hass.io add-on or with + to translate the TrueType files into an internal format. If you're running this as a Hass.io add-on or with the official ESPHome docker image, it should already be installed. Otherwise you need to install it using ``pip install pillow``. diff --git a/components/display/lcd_display.rst b/components/display/lcd_display.rst index 39e6b6006..87be3d261 100644 --- a/components/display/lcd_display.rst +++ b/components/display/lcd_display.rst @@ -165,8 +165,8 @@ The backlight can draw more power than the microcontroller output pins can suppl a transistor as a switch to control the power for the backlight pins. With the ``lcd_pcf8574`` the backlight can be turned on by ``it.backlight()`` and off by ``it.no_backlight()`` in the -display lamdba definition. The jumper on the PCF8574 board needs to be closed for the backlight control to work. -Keep in mind that the display lamda runs for every ``update_interval``, so if the backlight is turned on/off there, +display lambda definition. The jumper on the PCF8574 board needs to be closed for the backlight control to work. +Keep in mind that the display lambda runs for every ``update_interval``, so if the backlight is turned on/off there, it cannot be overridden from other parts. Here is one solution for a typical use-case where the backlight is turned on after a motion sensor activates and diff --git a/components/display/ssd1306.rst b/components/display/ssd1306.rst index 0203e66f2..dee36f434 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°``. -- **brigthness** (*Optional*): Set the screen brightness in percents 0.0-1.0. Defaults to `1.0` that coresponds to 100%. +- **brightness** (*Optional*): Set the screen brightness in percents 0.0-1.0. Defaults to `1.0` that corresponds 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. @@ -73,7 +73,7 @@ Configuration variables: .. note:: - To speed up the display update process you can select higher i2c frequencies. + To speed up the display update process you can select higher I²C frequencies. .. _ssd1306-spi: diff --git a/components/esp32_ble_beacon.rst b/components/esp32_ble_beacon.rst index d51e82306..d339303b3 100644 --- a/components/esp32_ble_beacon.rst +++ b/components/esp32_ble_beacon.rst @@ -58,7 +58,7 @@ change the UUID to something unique. For example, you can copy this randomly gen Then, just compile and flash the ESP32. When everything is set up correctly, you should see a show up using your iBeacon scanner of choice. On iPhones, -this should already work from the bluetooth screen (not tested), on Android, you will need to use an app like +this should already work from the Bluetooth screen (not tested), on Android, you will need to use an app like `"Beacon Scanner" `__ by Nicolas Bridoux. For using these beacons to track the location of your phone, you will need to use another app. For example, I used diff --git a/components/esp32_camera.rst b/components/esp32_camera.rst index d0cdddaef..a15e5fb75 100644 --- a/components/esp32_camera.rst +++ b/components/esp32_camera.rst @@ -35,7 +35,7 @@ Configuration variables: Connection Options: - **data_pins** (**Required**, list of pins): The data lanes of the camera, this must be a list - of 8 gpio pins. + of 8 GPIO pins. - **vsync_pin** (**Required**, pin): The pin the VSYNC line of the camera is connected to. - **href_pin** (**Required**, pin): The pin the HREF line of the camera is connected to. - **pixel_clock_pin** (**Required**, pin): The pin the pixel clock line of the camera is connected to. @@ -45,10 +45,10 @@ Connection Options: - **frequency** (*Optional*, float): The frequency of the external clock, must be either 20MHz or 10MHz. Defaults to ``20MHz``. -- **i2c_pins** (**Required**): The i2c control pins of the camera. +- **i2c_pins** (**Required**): The I^2C control pins of the camera. - - **sda** (**Required**, pin): The SDA pin of the i2c interface. Also called ``SIOD``. - - **scl** (**Required**, pin): The SCL pin of the i2c interface. Also called ``SIOC``. + - **sda** (**Required**, pin): The SDA pin of the I^2C interface. Also called ``SIOD``. + - **scl** (**Required**, pin): The SCL pin of the I^2C interface. Also called ``SIOC``. - **reset_pin** (*Optional*, pin): The ESP pin the reset pin of the camera is connected to. If set, this will reset the camera before the ESP boots. diff --git a/components/esphome.rst b/components/esphome.rst index 2357e07b0..c49a8b3c8 100644 --- a/components/esphome.rst +++ b/components/esphome.rst @@ -23,12 +23,12 @@ Configuration variables: ------------------------ - **name** (**Required**, string): This is the name of the node. It - should always be unique in your esphome network. May only contain lowercase + should always be unique in your ESPhome network. May only contain lowercase characters, digits and underscores. See :ref:`esphome-changing_node_name`. - **platform** (**Required**, string): The platform your board is on, either ``ESP32`` or ``ESP8266``. See :ref:`esphome-arduino_version`. - **board** (**Required**, string): The board ESPHome should - specify for platformio. For the ESP32, choose the appropriate one + specify for PlatformIO. For the ESP32, choose the appropriate one from `this list `__ and use `this list `__ for ESP8266-based boards. *This only affects pin aliases and some internal settings*, if unsure @@ -36,12 +36,12 @@ Configuration variables: Advanced options: -- **arduino_version** (*Optional*): The version of the arduino framework to link the project against. +- **arduino_version** (*Optional*): The version of the Arduino framework to link the project against. See :ref:`esphome-arduino_version`. - **build_path** (*Optional*, string): Customize where ESPHome will store the build files - for your node. By default, ESPHome puts all platformio project files under a folder ``/``, + for your node. By default, ESPHome puts all PlatformIO project files under a folder ``/``, but you can customize this behavior using this option. -- **platformio_options** (*Optional*, mapping): Additional options to pass over to platformio in the +- **platformio_options** (*Optional*, mapping): Additional options to pass over to PlatformIO in the platformio.ini file. See :ref:`esphome-platformio_options`. - **use_custom_code** (*Optional*, boolean): Whether to configure the project for writing custom components. This sets up some flags so that custom code should compile correctly @@ -71,10 +71,10 @@ Automations: ``arduino_version`` ------------------- -ESPHome uses the arduino framework internally to handle all low-level interactions like -initializing the WiFi driver and so on. Unfortunately, every arduino framework version often +ESPHome uses the Arduino framework internally to handle all low-level interactions like +initializing the WiFi driver and so on. Unfortunately, every Arduino framework version often has its own quirks and bugs, especially concerning WiFi performance. With the ``arduino_version`` -option you can tell ESPHome which arduino framework to use for compiling. +option you can tell ESPHome which Arduino framework to use for compiling. .. code-block:: yaml @@ -94,8 +94,8 @@ option you can tell ESPHome which arduino framework to use for compiling. # Use a specific version arduino_version: 2.3.0 -For the ESP8266, you currently can manually pin the arduino version to these values (see the full -list of arduino frameworks `here `__): +For the ESP8266, you currently can manually pin the Arduino version to these values (see the full +list of Arduino frameworks `here `__): * `2.5.2 `__ * `2.5.1 `__ @@ -105,7 +105,7 @@ list of arduino frameworks `here `_ * `2.4.0 `__ * `2.3.0 `__ (used by Tasmota etc) -For the ESP32, there are these arduino `framework versions `__: +For the ESP32, there are these Arduino `framework versions `__: - `1.0.2 `__ - `1.0.1 `__ (default) @@ -153,7 +153,7 @@ is already set up. You can however change this using the ``priority`` parameter. Configuration variables: - **priority** (*Optional*, float): The priority to execute your custom initialization code. A higher value - means a high priority and thus also your code being executed earlier. Please note this is an esphome-internal + means a high priority and thus also your code being executed earlier. Please note this is an ESPhome-internal value and any change will not be marked as a breaking change. Defaults to ``-10``. Priorities (you can use any value between them too): - ``800.0``: This is where all hardware initialization of vital components is executed. For example setting switches @@ -208,11 +208,11 @@ This automation will be triggered on every ``loop()`` iteration (usually around ``platformio_options`` ---------------------- -Platformio supports a number of options in its ``platformio.ini`` file. With the ``platformio_options`` -parameter you can tell ESPHome what options to pass into the ``env`` section of the platformio file +PlatformIO supports a number of options in its ``platformio.ini`` file. With the ``platformio_options`` +parameter you can tell ESPHome what options to pass into the ``env`` section of the PlatformIO file (Note you can also do this by editing the ``platformio.ini`` file manually). -You can view a full list of platformio options here: https://docs.platformio.org/en/latest/projectconf/section_env.html +You can view a full list of PlatformIO options here: https://docs.platformio.org/en/latest/projectconf/section_env.html .. code-block:: yaml @@ -228,10 +228,10 @@ You can view a full list of platformio options here: https://docs.platformio.org ``includes`` ------------ -With ``includes`` you can include source files in the generated platformio project. +With ``includes`` you can include source files in the generated PlatformIO project. All files declared with this option are copied to the project each time it is compiled. -You can always look at the generated platformio project (``/``) to see what +You can always look at the generated PlatformIO project (``/``) to see what is happening - and if you want you can even copy the include files directly into the ``src/`` folder. The ``includes`` option is only a helper option that does that for you. diff --git a/components/light/tuya.rst b/components/light/tuya.rst index dbd41a7f0..d26bb512e 100644 --- a/components/light/tuya.rst +++ b/components/light/tuya.rst @@ -23,7 +23,7 @@ the config and it will list the possible devices for you in the config log. .. code-block:: yaml # Example configuration entry - # Make sure your wifi will connect + # Make sure your WiFi will connect wifi: ssid: "ssid" password: "password" diff --git a/components/logger.rst b/components/logger.rst index b8127023d..d2e2a5c09 100644 --- a/components/logger.rst +++ b/components/logger.rst @@ -94,7 +94,7 @@ Possible log levels are (sorted by severity): - ``VERY_VERBOSE`` - All internal messages are logged. Including all the data flowing through data buses like - i2c, spi or uart. Warning: May cause the device to slow down and have trouble staying + I2C, SPI or UART. Warning: May cause the device to slow down and have trouble staying connecting due to amount of generated messages. Color: white .. _logger-manual_tag_specific_levels: diff --git a/components/output/esp8266_pwm.rst b/components/output/esp8266_pwm.rst index f749748ca..e55a2dd43 100644 --- a/components/output/esp8266_pwm.rst +++ b/components/output/esp8266_pwm.rst @@ -7,7 +7,7 @@ ESP8266 Software PWM Output The ESP8266 Software PWM platform allows you to use a software PWM on the pins GPIO0-GPIO16 on your ESP8266. Note that this is a software PWM, -so there can be some flickering during periods of high wifi activity. Hardware PWMs +so there can be some flickering during periods of high WiFi activity. Hardware PWMs like the one on the ESP32 (see :doc:`ledc`) are preferred. .. code-block:: yaml diff --git a/components/output/ledc.rst b/components/output/ledc.rst index 83d081d07..1a72e29bd 100644 --- a/components/output/ledc.rst +++ b/components/output/ledc.rst @@ -48,24 +48,24 @@ To get the highest available frequency while still getting the same bit depth it recommended to pick one of the following frequencies. Higher bit depth means that the light has more steps available to change from one -value to another. This is especially noteable when the light is below 10% and take -a long transition. eg. turning slowly off. +value to another. This is especially noticeable when the light is below 10% and takes +a long transition, e.g. turning slowly off. ================================== =================================== =================================== **Frequency** **Bit depth** **Available steps for transitions** ---------------------------------- ----------------------------------- ----------------------------------- -1220hz 16 65536 +1220Hz 16 65536 ---------------------------------- ----------------------------------- ----------------------------------- -2441hz 15 32768 +2441Hz 15 32768 ---------------------------------- ----------------------------------- ----------------------------------- -4882hz 14 16384 +4882Hz 14 16384 ---------------------------------- ----------------------------------- ----------------------------------- -9765hz 13 8192 +9765Hz 13 8192 ---------------------------------- ----------------------------------- ----------------------------------- -19531hz 12 4096 +19531Hz 12 4096 ================================== =================================== =================================== -The ESP8266 for instance has *usually* a frequency of 1000hz with a resolution of 10 bits. +The ESP8266 for instance has *usually* a frequency of 1000Hz with a resolution of 10 bits. This means that there are only 4 steps between each value. .. _output-ledc-set_frequency_action: diff --git a/components/output/my9231.rst b/components/output/my9231.rst index 438281ebb..9ad8be396 100644 --- a/components/output/my9231.rst +++ b/components/output/my9231.rst @@ -17,7 +17,7 @@ The MY9231/MY9291 component represents a MY9231/MY9291 LED diver chain ESPHome. Communication is done with two GPIO pins (DI and DCKI) and multiple driver chips can be chained. There are two models with different number of output channels (MY9291 with 4 channels and MY9231 with 3 channels). They are -popular driver chips used in smart light blubs: +popular driver chips used in smart light bulbs: - Sonoff B1 (MY9231) - Ai-Thinker AiLight WiFi light bulb (MY9291) @@ -60,7 +60,7 @@ Configuration variables: Sonoff B1 configuration example ------------------------------- -This component can be used with a Sonoff B1 smart light blub. To flash +This component can be used with a Sonoff B1 smart light bulb. To flash the Sonoff B1, open the plastic cover and connect/solder wires to the PCB pads (3.3V, RX, TX, GND, GPIO0). If you connect GPIO0 to GND during power up, the device enters flash mode. For more information diff --git a/components/output/sm16716.rst b/components/output/sm16716.rst index 7024c3f21..4b2a2df22 100644 --- a/components/output/sm16716.rst +++ b/components/output/sm16716.rst @@ -4,7 +4,7 @@ SM16716 LED driver .. seo:: :description: Instructions for setting up SM16716 LED drivers in ESPHome. :image: sm16716.png - :keywords: SM16716, Feit Electric A19 Smart WiFi Bulb, Merkury Innovations A21 Smart Wi-Fi Bulb + :keywords: SM16716, Feit Electric A19 Smart WiFi Bulb, Merkury Innovations A21 Smart Wi-Fi Bulb .. _sm16716-component: @@ -15,7 +15,7 @@ The SM16716 component represents a SM16716 LED diver chain (`SM16716 description `__, `SM16716 description `__) in ESPHome. Communication is done with two GPIO pins (MOSI and SCLK) and multiple -driver chips can be chained. It is used in some smart light blubs: +driver chips can be chained. It is used in some smart light bulbs: - Feit Electric A19 Smart WiFi Bulb - Merkury Innovations A21 Smart Wi-Fi Bulb @@ -102,7 +102,7 @@ Configuration variables: Feit Electric A19 Smart WiFi Bulb --------------------------------- -This component can be used with a Feit Electric A19 smart light blub. You can use +This component can be used with a Feit Electric A19 smart light bulb. You can use tuya-convert to flash the bulb. The cold white LEDs are connected to PWM1 and the warm white LEDs are connected to PWM2. The RGB LEDs are connected to a SM16716 chip that is connected to GPIO4 for clock, GPIO14 for data, and GPIO13 for power. diff --git a/components/pcf8574.rst b/components/pcf8574.rst index e0aecb001..edbf928f9 100644 --- a/components/pcf8574.rst +++ b/components/pcf8574.rst @@ -7,7 +7,7 @@ PCF8574 I/O Expander The PCF8574 component allows you to use PCF8574 or PCF8575 I/O expanders (`datasheet `__, -`Sparkfun`_) in ESPHome. It uses :ref:`I²C Bus ` for communication. +`SparkFun`_) in ESPHome. It uses :ref:`I²C Bus ` for communication. Once configured, you can use any of the 8 pins (PCF8574) or 16 pins (PCF8575) as pins for your projects. Within ESPHome they emulate a real internal GPIO pin @@ -24,7 +24,7 @@ not work. PCF8574 I/O Expander. -.. _Sparkfun: https://www.sparkfun.com/products/retired/8130 +.. _SparkFun: https://www.sparkfun.com/products/retired/8130 .. code-block:: yaml diff --git a/components/remote_receiver.rst b/components/remote_receiver.rst index efc98b508..5fa6134c2 100644 --- a/components/remote_receiver.rst +++ b/components/remote_receiver.rst @@ -27,7 +27,7 @@ Configuration variables: ------------------------ - **pin** (**Required**, :ref:`config-pin`): The pin to receive the remote signal on. -- **dump** (*Optional*, list): Decode and dump these remote codes in the logs (at log.level=DEBUG). +- **dump** (*Optional*, list): Decode and dump these remote codes in the logs (at log.level=DEBUG). Set to ``all`` to dump all available codecs: - **lg**: Decode and dump LG infrared codes. @@ -42,8 +42,8 @@ Configuration variables: - **tolerance** (*Optional*, int): The percentage that the remote signal lengths can deviate in the decoding process. Defaults to ``25%``. -- **buffer_size** (*Optional*, int): The size of the internal buffer for storing the remote codes. Defaults to ``10kb`` - on the ESP32 and ``1kb`` on the ESP8266. +- **buffer_size** (*Optional*, int): The size of the internal buffer for storing the remote codes. Defaults to ``10kB`` + on the ESP32 and ``1kB`` on the ESP8266. - **filter** (*Optional*, :ref:`time `): Filter any pulses that are shorter than this. Useful for removing glitches from noisy signals. Defaults to ``10us``. - **idle** (*Optional*, :ref:`time `): The amount of time that a signal should remain stable (i.e. not @@ -72,10 +72,10 @@ Automations: RC5 remote code has been decoded. A variable ``x`` of type :apiclass:`remote_base::RC5Data` is passed to the automation for use in lambdas. - **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` + 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_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` + Panasonic remote code has been decoded. A variable ``x`` of type :apiclass:`remote_base::PanasonicData` is passed to the automation for use in lambdas. .. _remote-receiver-binary-sensor: @@ -187,7 +187,7 @@ Remote code selection (exactly one of these has to be included): .. note:: For the Sonoff RF Bridge you can use `this hack `__ - created by the Github user wildwiz. Then use this configuration for the remote receiver/transmitter hubs: + created by the GitHub user wildwiz. Then use this configuration for the remote receiver/transmitter hubs: .. code-block:: yaml diff --git a/components/remote_transmitter.rst b/components/remote_transmitter.rst index fa0368bd0..c13a8aaf7 100644 --- a/components/remote_transmitter.rst +++ b/components/remote_transmitter.rst @@ -41,7 +41,7 @@ Configuration variables: - **pin** (**Required**, :ref:`config-pin`): The pin to transmit the remote signal on. - **carrier_duty_percent** (*Optional*, int): How much of the time the remote is on. For example, infrared - protocols modulate the signal using a carrier signal. Set this is ``50%`` if you're working with IR leds and to + protocols modulate the signal using a carrier signal. Set this is ``50%`` if you're working with IR LEDs and to ``100%`` if working with other things like 433MHz transmitters. - **id** (*Optional*, :ref:`config-id`): Manually specify the ID used for code generation. Use this if you have multiple remote transmitters. diff --git a/components/sensor/ade7953.rst b/components/sensor/ade7953.rst index 4a61d9035..92cc881c1 100644 --- a/components/sensor/ade7953.rst +++ b/components/sensor/ade7953.rst @@ -42,7 +42,7 @@ required to be set up in your configuration for this sensor to work. Configuration variables: ------------------------ -- **address** (*Optional*, int): Manually specify the i^2c address of the sensor. Defaults to ``0x38``. +- **address** (*Optional*, int): Manually specify the I^2C address of the sensor. Defaults to ``0x38``. - **voltage** (*Optional*): Use the voltage value of the sensor in volt. All options from :ref:`Sensor `. - **current_a** (*Optional*): Use the current value of the A channel in amperes. All options from diff --git a/components/sensor/am2320.rst b/components/sensor/am2320.rst index f4e191762..6b462cbfa 100644 --- a/components/sensor/am2320.rst +++ b/components/sensor/am2320.rst @@ -6,8 +6,8 @@ AM2320 Temperature+Humidity Sensor :image: am2320.jpg :keywords: am2320 -The ``am2320`` Temperature+Humidity sensor allows you to use your am2320 -(`datasheet `__) i2c-based sensor with ESPHome. +The ``am2320`` Temperature+Humidity sensor allows you to use your AM2320 +(`datasheet `__) I^2C-based sensor with ESPHome. .. figure:: images/am2320-full.jpg :align: center diff --git a/components/sensor/apds9960.rst b/components/sensor/apds9960.rst index c7f5f90c9..273ff24fc 100644 --- a/components/sensor/apds9960.rst +++ b/components/sensor/apds9960.rst @@ -7,7 +7,7 @@ APDS9960 Sensor The ``apds9960`` sensor platform allows you to use your APDS9960 RGB and gesture sensors (`datasheet `__, -`Sparkfun`_) with ESPHome. +`SparkFun`_) with ESPHome. The :ref:`I²C ` is required to be set up in your configuration for this sensor to work. @@ -15,7 +15,7 @@ required to be set up in your configuration for this sensor to work. :align: center :width: 80.0% - Image by `Sparkfun`_. + Image by `SparkFun`_. .. code-block:: yaml @@ -35,7 +35,7 @@ required to be set up in your configuration for this sensor to work. name: "APDS960 Up Movement" # Repeat for each direction -.. _Sparkfun: https://www.sparkfun.com/products/12787 +.. _SparkFun: https://www.sparkfun.com/products/12787 Configuration variables: ------------------------ @@ -45,7 +45,7 @@ and direction binary sensors. Base Configuration: -- **address** (*Optional*, integer): The i2c address of the sensor. Defaults to ``0x39``. +- **address** (*Optional*, integer): The I2C address of the sensor. Defaults to ``0x39``. - **update_interval** (*Optional*, :ref:`config-time`): The interval to check the sensor. Defaults to ``60s``. diff --git a/components/sensor/as3935.rst b/components/sensor/as3935.rst index 5730bf351..8059bea31 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,27 +14,27 @@ 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. -The AS3935 can be configured to use either the SPI **or** I2C protocol for data communication. +The AS3935 can be configured to use either the SPI **or** I^2C 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. +level and set up the ESPhome integration for the chosen communication method. Module Pins ----------- ============ =============================================================== - Module Pin Description + Module Pin Description ============ =============================================================== -VCC/VDD Positive supply voltage -GND Ground -SCL I²C clock bus or SPI clock bus (according to SI setting) -MOSI I²C data bus or SPI data input bus (according to SI setting) -MISO SPI data output bus -CS Chip Select (active low) -SI Select Interface (GND → SPI or VDD → I²C) -IRQ Interrupt (out) -EN_V Voltage Regulator Enable -A0 I²C address selection LSB -A1 I²C address selection MSB +VCC/VDD Positive supply voltage +GND Ground +SCL I²C clock bus or SPI clock bus (according to SI setting) +MOSI I²C data bus or SPI data input bus (according to SI setting) +MISO SPI data output bus +CS Chip Select (active low) +SI Select Interface (GND → SPI or VDD → I²C) +IRQ Interrupt (out) +EN_V Voltage Regulator Enable +A0 I²C address selection LSB +A1 I²C address selection MSB ============ =============================================================== .. figure:: images/as3935.jpg @@ -96,12 +96,12 @@ Configuration variables (shared): 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. +- **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. +- **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. @@ -114,10 +114,10 @@ Sensor entries: the ID used for code generation. - All other options from :ref:`Binary Sensor `. -Configuration variables (i^2c): +Configuration variables (I^2C): ------------------------------- -Use this if you want to use your AS3935 in i^2c mode. +Use this if you want to use your AS3935 in I^2C mode. .. code-block:: yaml @@ -135,11 +135,11 @@ Use this if you want to use your AS3935 in i^2c mode. - platform: as3935 name: "Storm Alert" -- **address** (*Optional*, int): Manually specify the i^2c address of +- **address** (*Optional*, int): Manually specify the I^2C address of the sensor. Defaults to ``0x03`` (``A0` and ``A1`` pins pulled low). Another address can be ``0x02``. -Configuration variables (spi): +Configuration variables (SPI): ------------------------------ Use this if you want to use your AS3935 in SPI mode. @@ -172,5 +172,5 @@ See Also - `Data Sheet `__ - `Little Arduino Projects `__ - `AMS AS3935 `__ -- `Sparkfun Library `__ +- `SparkFun Library `__ - :ghedit:`Edit` diff --git a/components/sensor/atm90e32.rst b/components/sensor/atm90e32.rst index d0bc22910..f938ce4f8 100644 --- a/components/sensor/atm90e32.rst +++ b/components/sensor/atm90e32.rst @@ -13,7 +13,7 @@ ESPHome. This sensor is commonly found in CircuitSetup 2 and 6 channel energy me Communication with the device is done via an :ref:`SPI bus `, so you need to have an ``spi:`` entry in your configuration with both ``mosi_pin`` and ``miso_pin`` set. -The atm90e32 IC can measure up to three AC voltages although typically only one +The ATM90E32 IC can measure up to three AC voltages although typically only one voltage measurement would be used for the mains electricity phase of a household. Three current measurements are read via CT clamps. @@ -25,7 +25,7 @@ The `CircuitSetup 2-Channel Energy Monitor `__ can read 6 current channels and 2 voltage channels at a time, this board has two atm90e32 ICs and requires two sensors to be configured in ESPHome. +The `CircuitSetup 6-Channel Energy Monitor `__ can read 6 current channels and 2 voltage channels at a time, this board has two ATM90E32 ICs and requires two sensors to be configured in ESPHome. .. figure:: images/atm90e32-cs-6chan-full.jpg :align: center @@ -96,14 +96,14 @@ Calibration ----------- This sensor needs calibration to show correct values. The default gain configuration is set to use the `SCT-013-000 `__ -current transformers, and the `Jameco Reliapro 9v AC transformer `__. +current transformers, and the `Jameco Reliapro 9v AC transformer `__. A load which uses a known amount of current can be used to calibrate. For for a more accurate calibration use a `Kill-A-Watt `__ meter or similar, mains voltages can fluctuate depending on grid load. Voltage ^^^^^^^ -Use the expected mains voltage for your region 110V/230V or plug in the Kill-A-Watt and select voltage. See what +Use the expected mains voltage for your region 110V/230V or plug in the Kill-A-Watt and select voltage. See what value the ATM90E32 sensor reports for voltage. To adjust the sensor use the calculation: ``New gain_voltage = (your voltage reading / ESPHome voltage reading) * existing gain_voltage value`` diff --git a/components/sensor/bh1750.rst b/components/sensor/bh1750.rst index 9a739443e..426b328ce 100644 --- a/components/sensor/bh1750.rst +++ b/components/sensor/bh1750.rst @@ -34,7 +34,7 @@ Configuration variables: ------------------------ - **name** (**Required**, string): The name for the sensor. -- **address** (*Optional*, int): Manually specify the i^2c address of the sensor. +- **address** (*Optional*, int): Manually specify the I^2C address of the sensor. Defaults to ``0x23`` (address if address pin is pulled low). If the address pin is pulled high, the address is ``0x5C``. - **resolution** (*Optional*, string): The resolution of the sensor in lx. One of ``4.0``, diff --git a/components/sensor/bme280.rst b/components/sensor/bme280.rst index fe37ae973..7644b0ff9 100644 --- a/components/sensor/bme280.rst +++ b/components/sensor/bme280.rst @@ -63,7 +63,7 @@ Configuration variables: - **id** (*Optional*, :ref:`config-id`): Set the ID of this sensor for use in lambdas. - All other options from :ref:`Sensor `. -- **address** (*Optional*, int): Manually specify the i^2c address of +- **address** (*Optional*, int): Manually specify the I^2C address of the sensor. Defaults to ``0x77``. Another address can be ``0x76``. - **iir_filter** (*Optional*): Set up an Infinite Impulse Response filter to increase accuracy. One of ``OFF``, ``2x``, ``4x``, ``16x``. Defaults to ``OFF``. @@ -93,5 +93,5 @@ See Also - :doc:`bmp085` - :apiref:`bme280/bme280.h` - `Adafruit BME280 Library `__ by `Adafruit `__ -- `Sparkfun BME280 Library `__ by `Sparkfun `__ +- `SparkFun BME280 Library `__ by `SparkFun `__ - :ghedit:`Edit` diff --git a/components/sensor/bme680.rst b/components/sensor/bme680.rst index 37f91e57b..975ae1483 100644 --- a/components/sensor/bme680.rst +++ b/components/sensor/bme680.rst @@ -69,7 +69,7 @@ Configuration variables: - **id** (*Optional*, :ref:`config-id`): Set the ID of this sensor for use in lambdas. - All other options from :ref:`Sensor `. -- **address** (*Optional*, int): Manually specify the i^2c address of +- **address** (*Optional*, int): Manually specify the I^2C address of the sensor. Defaults to ``0x77``. Another address can be ``0x76``. - **iir_filter** (*Optional*): Set up an Infinite Impulse Response filter to increase accuracy. One of ``OFF``, ``1x``, ``3x``, ``7x``, ``15x``, ``31x``, ``63x`` and ``127x``. Defaults to ``OFF``. diff --git a/components/sensor/bmp085.rst b/components/sensor/bmp085.rst index 20586badd..b18c50181 100644 --- a/components/sensor/bmp085.rst +++ b/components/sensor/bmp085.rst @@ -8,9 +8,9 @@ BMP085 Temperature+Pressure Sensor The BMP085 sensor platform allows you to use your BMP085 (`datasheet `__, -`adafruit `__) and BMP180 +`Adafruit `__) and BMP180 (`datasheet `__, -`adafruit `__) temperature and +`Adafruit `__) temperature and pressure sensors with ESPHome. The :ref:`I²C ` is required to be set up in your configuration for this sensor to work. diff --git a/components/sensor/bmp280.rst b/components/sensor/bmp280.rst index 80ab1443f..92d4dacfb 100644 --- a/components/sensor/bmp280.rst +++ b/components/sensor/bmp280.rst @@ -53,7 +53,7 @@ Configuration variables: - **id** (*Optional*, :ref:`config-id`): Set the ID of this sensor for use in lambdas. - All other options from :ref:`Sensor `. -- **address** (*Optional*, int): Manually specify the i^2c address of +- **address** (*Optional*, int): Manually specify the I^2C address of the sensor. Defaults to ``0x77``. Another address can be ``0x76``. - **iir_filter** (*Optional*): Set up an Infinite Impulse Response filter to increase accuracy. One of ``OFF``, ``2x``, ``4x``, ``16x``. Defaults to ``OFF``. diff --git a/components/sensor/custom.rst b/components/sensor/custom.rst index 6ae96ac74..6b1a898c9 100644 --- a/components/sensor/custom.rst +++ b/components/sensor/custom.rst @@ -20,7 +20,7 @@ In this guide, we will go through creating a custom sensor component for the `BMP180 `__ pressure sensor (we will only do the pressure part, temperature is more or less the same). During this guide, you will learn how to 1. define a custom sensor ESPHome can use 2. go over how to register the sensor so that it will be shown inside Home Assistant and -3. leverage an existing arduino library for the BMP180 with ESPHome. +3. leverage an existing Arduino library for the BMP180 with ESPHome. .. note:: @@ -51,7 +51,7 @@ What does this mean? Well if you've coded in Arduino before you might know the t very often and this is where you can do things like read out sensors etc. Components have something similar to that: They also have ``setup()`` and ``loop()`` methods which will be -called by the application kind of like the arduino functions. +called by the application kind of like the Arduino functions. So, let's now take a look at some code: This is an example of a custom component class (called ``MyCustomSensor`` here): @@ -191,11 +191,11 @@ Step 3: BMP180 support Let's finally make this custom sensor useful by adding the BMP180 aspect into it! Sure, printing ``42`` is a nice number but it won't help with home automation :D -A great feature of ESPHome is that you don't need to code everything yourself. You can use any existing arduino +A great feature of ESPHome is that you don't need to code everything yourself. You can use any existing Arduino library to do the work for you! Now for this example we'll use the `Adafruit BMP085 Library `__ library to implement support for the BMP085 sensor. But you can find other libraries too on the -`platformio library index `__ +`PlatformIO library index `__ First we'll need to add the library to our project dependencies. To do so, put ``Adafruit BMP085 Library`` in your global ``libraries``: @@ -242,7 +242,7 @@ Then update the sensor for BMP180 support: // ... There's not too much going on there. First, we define the variable ``bmp`` of type ``Adafruit_BMP085`` -inside our class as a class member. This is the object the adafruit library exposes and through which +inside our class as a class member. This is the object the Adafruit library exposes and through which we will communicate with the sensor. In our custom ``setup()`` function we're *initializing* the library (using ``.begin()``) and in diff --git a/components/sensor/dallas.rst b/components/sensor/dallas.rst index 02807708a..5a443c01b 100644 --- a/components/sensor/dallas.rst +++ b/components/sensor/dallas.rst @@ -2,8 +2,8 @@ Dallas Temperature Sensor ========================= .. seo:: - :description: Instructions for setting up dallas temperature sensor hubs that can - expose many temperature sensors on a single pin using the one wire protocol. + :description: Instructions for setting up Dallas temperature sensor hubs that can + expose many temperature sensors on a single pin using the 1-Wire protocol. :image: dallas.jpg :keywords: Dallas, ds18b20, onewire @@ -15,7 +15,7 @@ Component/Hub The ``dallas`` component allows you to use your `DS18b20 `__ (`datasheet `__) -and similar One-Wire temperature sensors. +and similar 1-Wire temperature sensors. To use your :ref:`dallas sensor `, first define a dallas “hub” with a pin and id, which you will later use to create the sensors. The 1-Wire bus the @@ -48,9 +48,9 @@ Configuration variables: Sensors ------- -The ``dallas`` sensor allows you to use ds18b20 and similar sensors. +The ``dallas`` sensor allows you to use DS18B20 and similar sensors. First, you need to define a :ref:`dallas sensor component `. -The dallas sensor component (or "hub") is an internal model that defines which pins the ds18b20 +The dallas sensor component (or "hub") is an internal model that defines which pins the DS18B20 sensors are connected to. This is because with these sensors you can actually connect multiple sensors to a single pin and use them all at once. @@ -60,7 +60,7 @@ To initialize a sensor, first supply either ``address`` **or** ``index`` to iden :align: center :width: 50.0% - Wired Version of the DS18b20 One-Wire Temperature Sensor. + Wired Version of the DS18B20 1-Wire Temperature Sensor. .. _Adafruit: https://www.adafruit.com/product/374 @@ -89,7 +89,7 @@ Configuration variables: So the first sensor will for example have index 0. :ref:`It’s recommended to use address instead `. - **resolution** (*Optional*, int): An optional resolution from 8 to - 12. Higher means more accurate. Defaults to the maximum for most dallas temperature sensors: 12. + 12. Higher means more accurate. Defaults to the maximum for most Dallas temperature sensors: 12. - **dallas_id** (*Optional*, :ref:`config-id`): The ID of the :ref:`dallas hub `. Use this if you have multiple dallas hubs. - **id** (*Optional*, :ref:`config-id`): Manually specify the ID used for code generation. diff --git a/components/sensor/dht.rst b/components/sensor/dht.rst index f18e69789..f27354352 100644 --- a/components/sensor/dht.rst +++ b/components/sensor/dht.rst @@ -8,15 +8,15 @@ DHT Temperature+Humidity Sensor The DHT Temperature+Humidity sensor allows you to use your DHT11 (`datasheet `__, -`adafruit `__), DHT22 +`Adafruit `__), DHT22 (`datasheet `__, -`adafruit `__), AM2302 +`Adafruit `__), AM2302 (`datasheet `__, -`adafruit `__), RHT03 +`Adafruit `__), RHT03 (`datasheet `__, -`sparkfun `__) and SI7021 (one wire Sonoff version) +`SparkFun `__) and SI7021 (one wire Sonoff version) (`datasheet `__, -`sparkfun `__) +`SparkFun `__) sensors with ESPHome. .. figure:: images/dht-full.jpg diff --git a/components/sensor/dht12.rst b/components/sensor/dht12.rst index 1e59faf4c..d5b337039 100644 --- a/components/sensor/dht12.rst +++ b/components/sensor/dht12.rst @@ -8,7 +8,7 @@ DHT12 Temperature+Humidity Sensor The ``dht12`` Temperature+Humidity sensor allows you to use your DHT12 (`datasheet `__, -`electrodragon`_) i2c-based sensor with ESPHome. This sensor is also called AM2320 by some sellers. +`electrodragon`_) I^2C-based sensor with ESPHome. This sensor is also called AM2320 by some sellers. .. figure:: images/dht12-full.jpg :align: center diff --git a/components/sensor/hdc1080.rst b/components/sensor/hdc1080.rst index b6182247f..985231dea 100644 --- a/components/sensor/hdc1080.rst +++ b/components/sensor/hdc1080.rst @@ -8,7 +8,7 @@ HDC1080 Temperature+Humidity Sensor The HDC1080 Temperature+Humidity sensor allows you to use your HDC1080 (`datasheet `__, -`adafruit `__) sensors with +`Adafruit `__) sensors with ESPHome. The :ref:`I²C Bus ` is required to be set up in your configuration for this sensor to work. diff --git a/components/sensor/hmc5883l.rst b/components/sensor/hmc5883l.rst index 5e8687903..8ff3526e8 100644 --- a/components/sensor/hmc5883l.rst +++ b/components/sensor/hmc5883l.rst @@ -34,7 +34,7 @@ required to be set up in your configuration for this sensor to work. Configuration variables: ------------------------ -- **address** (*Optional*, int): Manually specify the i^2c address of the sensor. Defaults to ``0x1E``. +- **address** (*Optional*, int): Manually specify the I^2C address of the sensor. Defaults to ``0x1E``. - **field_strength_x** (*Optional*): The field strength in microtesla along the X-Axis. All options from :ref:`Sensor `. - **field_strength_y** (*Optional*): The field strength in microtesla along the Y-Axis. All options from diff --git a/components/sensor/homeassistant.rst b/components/sensor/homeassistant.rst index d5f93d55c..8ff7649cf 100644 --- a/components/sensor/homeassistant.rst +++ b/components/sensor/homeassistant.rst @@ -1,8 +1,8 @@ -Homeassistant Sensor -==================== +Home Assistant Sensor +===================== .. seo:: - :description: Instructions for setting up homeassistant sensors with ESPHome that import states from your homeassistant instance. + :description: Instructions for setting up Home Assistant sensors with ESPHome that import states from your Home Assistant instance. :image: home-assistant.png The ``homeassistant`` sensor platform allows you to create sensors that import diff --git a/components/sensor/htu21d.rst b/components/sensor/htu21d.rst index 94403f975..f10982dc2 100644 --- a/components/sensor/htu21d.rst +++ b/components/sensor/htu21d.rst @@ -7,7 +7,7 @@ HTU21D Temperature+Humidity Sensor :keywords: HTU21D The HTU21D Temperature+Humidity sensor allows you to use your HTU21D -(`adafruit `__) sensors with +(`Adafruit `__) sensors with ESPHome. The :ref:`I²C Bus ` is required to be set up in your configuration for this sensor to work. diff --git a/components/sensor/hx711.rst b/components/sensor/hx711.rst index af9ec684a..0cb322d43 100644 --- a/components/sensor/hx711.rst +++ b/components/sensor/hx711.rst @@ -8,16 +8,16 @@ HX711 Load Cell Amplifier The ``hx711`` sensor platform allows you to use your HX711 load cell amplifier -(`datasheet `__, `Sparkfun`_) with ESPHome +(`datasheet `__, `SparkFun`_) with ESPHome .. figure:: images/hx711-full.jpg :align: center - :target: `Sparkfun`_ + :target: `SparkFun`_ :width: 60.0% - HX711 Load Cell Amplifier. Image by `Sparkfun`_ licensed and re-distributed under `CC BY 2.0 `__. + HX711 Load Cell Amplifier. Image by `SparkFun`_ licensed and re-distributed under `CC BY 2.0 `__. -.. _Sparkfun: https://www.sparkfun.com/products/13879 +.. _SparkFun: https://www.sparkfun.com/products/13879 Connect ``GND`` to ``GND``, ``VCC`` to ``3.3V`` and the other three ``MISO`` (or ``SO`` for short), ``CS`` and ``CLOCK`` (or ``SCK``) to free GPIO pins. diff --git a/components/sensor/ina219.rst b/components/sensor/ina219.rst index 64b8fd87f..d950a834f 100644 --- a/components/sensor/ina219.rst +++ b/components/sensor/ina219.rst @@ -47,7 +47,7 @@ required to be set up in your configuration for this sensor to work. Configuration variables: ------------------------ -- **address** (*Optional*, int): Manually specify the i^2c address of the sensor. Defaults to ``0x40``. +- **address** (*Optional*, int): Manually specify the I^2C address of the sensor. Defaults to ``0x40``. - **shunt_resistance** (*Optional*, float): The value of the shunt resistor on the board for current calculation. Defaults to ``0.1 ohm``. - **max_voltage** (*Optional*, float): The maximum bus voltage you are expecting. ESPHome will use this to diff --git a/components/sensor/ina3221.rst b/components/sensor/ina3221.rst index 4c83343f0..95c222d09 100644 --- a/components/sensor/ina3221.rst +++ b/components/sensor/ina3221.rst @@ -50,7 +50,7 @@ required to be set up in your configuration for this sensor to work. Configuration variables: ------------------------ -- **address** (*Optional*, int): Manually specify the i^2c address of the sensor. Defaults to ``0x40``. +- **address** (*Optional*, int): Manually specify the I^2C address of the sensor. Defaults to ``0x40``. - **channel_1** (*Optional*): The configuration options for the 1st channel. - **shunt_resistance** (*Optional*, float): The value of the shunt resistor on this channel for current calculation. diff --git a/components/sensor/index.rst b/components/sensor/index.rst index 0b88d9908..6169a5519 100644 --- a/components/sensor/index.rst +++ b/components/sensor/index.rst @@ -347,11 +347,11 @@ Example: Converting Celsius to Fahrenheit ----------------------------------------- While I personally don’t like the Fahrenheit temperature scale, I do -understand that having temperature values appear in the fahrenheit unit -is quite useful to some users. ESPHome uses the celsius temperature +understand that having temperature values appear in the Fahrenheit unit +is quite useful to some users. ESPHome uses the Celsius temperature unit internally, and I’m not planning on making converting between the -two simple (😉), but you can use this filter to convert celsius values to -fahrenheit. +two simple (😉), but you can use this filter to convert Celsius values to +Fahrenheit. .. code-block:: yaml diff --git a/components/sensor/max31855.rst b/components/sensor/max31855.rst index 04deed2aa..bd31157e7 100644 --- a/components/sensor/max31855.rst +++ b/components/sensor/max31855.rst @@ -5,11 +5,11 @@ MAX31855 K-Type Thermocouple Temperature Sensor :description: Instructions for setting up MAX31855 Thermocouple temperature sensors. :image: max31855.jpg -The ``max31855`` temperature sensor allows you to use your max31855 thermocouple +The ``max31855`` temperature sensor allows you to use your MAX31855 thermocouple temperature sensor (`datasheet `__) with ESPHome As the communication with the MAX31855 is done using SPI, you need -to have an :ref:`spi bus ` in your configuration with the **miso_pin** set (mosi is not required). +to have an :ref:`SPI bus ` in your configuration with the **miso_pin** set (MOSI is not required). Connect ``GND`` to ``GND``, ``VCC`` to ``3.3V`` and the other three ``MISO`` (or ``SO`` for short), ``CS`` and ``CLOCK`` (or ``CLK``) to free GPIO pins. diff --git a/components/sensor/max6675.rst b/components/sensor/max6675.rst index 06a6cb90a..0aee310ec 100644 --- a/components/sensor/max6675.rst +++ b/components/sensor/max6675.rst @@ -5,8 +5,8 @@ MAX6675 K-Type Thermocouple Temperature Sensor :description: Instructions for setting up MAX6675 Thermocouple temperature sensors. :image: max6675.jpg -The ``max6675`` temperature sensor allows you to use your max6675 thermocouple -temperature sensor (`datasheet `__, `sainsmart`_) with ESPHome +The ``max6675`` temperature sensor allows you to use your MAX6675 thermocouple +temperature sensor (`datasheet `__, `SainSmart`_) with ESPHome .. figure:: images/max6675-full.jpg :align: center @@ -14,10 +14,10 @@ temperature sensor (`datasheet ` in your configuration with the **miso_pin** set (mosi is not required). +to have an :ref:`SPI bus ` in your configuration with the **miso_pin** set (MOSI is not required). Connect ``GND`` to ``GND``, ``VCC`` to ``3.3V`` and the other three ``MISO`` (or ``SO`` for short), ``CS`` and ``CLOCK`` (or ``CLK``) to free GPIO pins. diff --git a/components/sensor/mpu6050.rst b/components/sensor/mpu6050.rst index 6b3c06656..dfb8b275f 100644 --- a/components/sensor/mpu6050.rst +++ b/components/sensor/mpu6050.rst @@ -7,7 +7,7 @@ MPU6050 Accelerometer/Gyroscope Sensor The ``mpu6050`` sensor platform allows you to use your MPU6050 Accelerometer/Gyroscope (`datasheet `__, -`Sparkfun`_) sensors with +`SparkFun`_) sensors with ESPHome. The :ref:`I²C Bus ` is required to be set up in your configuration for this sensor to work. @@ -23,7 +23,7 @@ new feature. Supporting all possible use-cases would be quite hard. MPU6050 Accelerometer/Gyroscope Sensor. -.. _Sparkfun: https://www.sparkfun.com/products/11028 +.. _SparkFun: https://www.sparkfun.com/products/11028 .. figure:: images/mpu6050-ui.png :align: center @@ -53,7 +53,7 @@ new feature. Supporting all possible use-cases would be quite hard. Configuration variables: ------------------------ -- **address** (*Optional*, int): Manually specify the i^2c address of the sensor. Defaults to ``0x68``. +- **address** (*Optional*, int): Manually specify the I^2C address of the sensor. Defaults to ``0x68``. - **accel_x** (*Optional*): Use the X-Axis of the Accelerometer. All options from :ref:`Sensor `. - **accel_y** (*Optional*): Use the Y-Axis of the Accelerometer. All options from diff --git a/components/sensor/ms5611.rst b/components/sensor/ms5611.rst index c32581cd7..b5de1370d 100644 --- a/components/sensor/ms5611.rst +++ b/components/sensor/ms5611.rst @@ -51,7 +51,7 @@ Configuration variables: - **id** (*Optional*, :ref:`config-id`): Set the ID of this sensor for use in lambdas. - All other options from :ref:`Sensor `. -- **address** (*Optional*, int): Manually specify the i^2c address of +- **address** (*Optional*, int): Manually specify the I^2C address of the sensor. Defaults to ``0x77``. - **update_interval** (*Optional*, :ref:`config-time`): The interval to check the sensor. Defaults to ``60s``. diff --git a/components/sensor/scd30.rst b/components/sensor/scd30.rst index 0dca90041..8be518940 100644 --- a/components/sensor/scd30.rst +++ b/components/sensor/scd30.rst @@ -5,8 +5,8 @@ SCD30 CO₂, Temperature and Relative Humidty Sensor :description: Instructions for setting up SCD30 CO₂ Temperature and Relative Humidty Sensor :image: scd30.jpg -The ``scd30`` sensor platform allows you to use your Sensiron SCD30 CO₂ -(`datasheet `__) sensors with ESPHome. +The ``scd30`` sensor platform allows you to use your Sensiron SCD30 CO₂ +(`datasheet `__) sensors with ESPHome. The :ref:`I²C Bus ` is required to be set up in your configuration for this sensor to work. .. figure:: images/scd30.jpg @@ -29,7 +29,7 @@ The :ref:`I²C Bus ` is required to be set up in your configuration for thi accuracy_decimals: 1 address: 0x61 update_interval: 5s - + Configuration variables: ------------------------ @@ -53,7 +53,7 @@ Configuration variables: - **id** (*Optional*, :ref:`config-id`): Set the ID of this sensor for use in lambdas. - All other options from :ref:`Sensor `. -- **address** (*Optional*, int): Manually specify the i^2c address of the sensor. +- **address** (*Optional*, int): Manually specify the I^2C address of the sensor. Defaults to ``0x61``. - **update_interval** (*Optional*, :ref:`config-time`): The interval to check the diff --git a/components/sensor/sgp30.rst b/components/sensor/sgp30.rst index e5a949389..1b7b671c9 100644 --- a/components/sensor/sgp30.rst +++ b/components/sensor/sgp30.rst @@ -5,8 +5,8 @@ SGP30 CO₂ and Volatile Organic Compound Sensor :description: Instructions for setting up SGP30 CO₂eq and Volatile Organic Compound sensor :image: sgp30.png -The ``sgp30`` sensor platform allows you to use your Sensiron SGP30 multi-pixel gas -(`datasheet `__) sensors or the SVM30 breakout-boards (`product page `__) with ESPHome. +The ``sgp30`` sensor platform allows you to use your Sensiron SGP30 multi-pixel gas +(`datasheet `__) sensors or the SVM30 breakout-boards (`product page `__) with ESPHome. The :ref:`I²C Bus ` is required to be set up in your configuration for this sensor to work. .. figure:: images/eco2-tvoc.png @@ -43,7 +43,7 @@ Configuration variables: - **id** (*Optional*, :ref:`config-id`): Set the ID of this sensor for use in lambdas. - All other options from :ref:`Sensor `. -- **address** (*Optional*, int): Manually specify the i^2c address of the sensor. +- **address** (*Optional*, int): Manually specify the I^2C address of the sensor. Defaults to ``0x58``. - **update_interval** (*Optional*, :ref:`config-time`): The interval to check the @@ -91,7 +91,7 @@ via the logs: The next time you upload the code, the SGP30 will be continue its operation with this baseline and you will get consistent values. Please note that Sensirion recommends that after around 7 days, the baseline will need to be -re-calibrated because the internal sensor has a slight value drift over time. +re-calibrated because the internal sensor has a slight value drift over time. See Also -------- diff --git a/components/sensor/sht3xd.rst b/components/sensor/sht3xd.rst index 054d5c1ad..d949f3bb4 100644 --- a/components/sensor/sht3xd.rst +++ b/components/sensor/sht3xd.rst @@ -44,7 +44,7 @@ Configuration variables: - **id** (*Optional*, :ref:`config-id`): Set the ID of this sensor for use in lambdas. - All other options from :ref:`Sensor `. -- **address** (*Optional*, int): Manually specify the i^2c address of the sensor. +- **address** (*Optional*, int): Manually specify the I^2C address of the sensor. Defaults to ``0x44``. - **update_interval** (*Optional*, :ref:`config-time`): The interval to check the sensor. Defaults to ``60s``. diff --git a/components/sensor/shtcx.rst b/components/sensor/shtcx.rst index 79860ae62..3fa205778 100644 --- a/components/sensor/shtcx.rst +++ b/components/sensor/shtcx.rst @@ -10,11 +10,11 @@ The ``shtcx`` sensor platform Temperature+Humidity sensor allows you to use your `Sensirion STHC1 `__) and the newer SHTC3 (`datasheet `__, -`Sparkfun`_ ) sensors with +`SparkFun`_ ) sensors with ESPHome. The :ref:`I²C Bus ` is required to be set up in your configuration for this sensor to work. -.. _Sparkfun: https://www.sparkfun.com/products/15074 +.. _SparkFun: https://www.sparkfun.com/products/15074 .. figure:: images/temperature-humidity.png :align: center @@ -47,7 +47,7 @@ Configuration variables: - **id** (*Optional*, :ref:`config-id`): Set the ID of this sensor for use in lambdas. - All other options from :ref:`Sensor `. -- **address** (*Optional*, int): Manually specify the i^2c address of the sensor. +- **address** (*Optional*, int): Manually specify the I^2C address of the sensor. Defaults to ``0x70``. - **update_interval** (*Optional*, :ref:`config-time`): The interval to check the sensor. Defaults to ``60s``. diff --git a/components/sensor/sts3x.rst b/components/sensor/sts3x.rst index 48fd07444..1dff572e0 100644 --- a/components/sensor/sts3x.rst +++ b/components/sensor/sts3x.rst @@ -28,7 +28,7 @@ Configuration variables: ------------------------ - **name** (**Required**, string): The name for the temperature sensor. -- **address** (*Optional*, int): Manually specify the i^2c address of the sensor. +- **address** (*Optional*, int): Manually specify the I^2C address of the sensor. Defaults to ``0x4A``. - **update_interval** (*Optional*, :ref:`config-time`): The interval to check the sensor. Defaults to ``60s``. diff --git a/components/sensor/tcs34725.rst b/components/sensor/tcs34725.rst index 4eb0fbbb4..055109e41 100644 --- a/components/sensor/tcs34725.rst +++ b/components/sensor/tcs34725.rst @@ -64,7 +64,7 @@ Configuration variables: values are ``1x`` (default), ``4x``, ``16x``, ``60x`` (highest gain). - **integration_time** (*Optional*): The amount of time the light sensor is exposed. Valid values are ``2.4ms`` (default), ``24ms``, ``50ms``, ``101ms``, ``154ms``, ``700ms``. -- **address** (*Optional*, int): Manually specify the i^2c address of the sensor. Defaults to ``0x29``. +- **address** (*Optional*, int): Manually specify the I^2C address of the sensor. Defaults to ``0x29``. - **update_interval** (*Optional*, :ref:`config-time`): The interval to check the sensor. Defaults to ``60s``. diff --git a/components/sensor/tsl2561.rst b/components/sensor/tsl2561.rst index a4edc7e2b..b610c727c 100644 --- a/components/sensor/tsl2561.rst +++ b/components/sensor/tsl2561.rst @@ -37,7 +37,7 @@ Configuration variables: ------------------------ - **name** (**Required**, string): The name for the sensor. -- **address** (*Optional*, int): Manually specify the i^2c address of the sensor. Defaults to ``0x39``. +- **address** (*Optional*, int): Manually specify the I^2C address of the sensor. Defaults to ``0x39``. - **integration_time** (*Optional*, :ref:`config-time`): The time the sensor will take for each measurement. Longer means more accurate values. One of ``14ms``, ``101ms``, ``402ms``. Defaults to ``402ms``. @@ -57,6 +57,6 @@ See Also - :ref:`sensor-filters` - :doc:`bh1750` - :doc:`adc` -- `SparkFun TSL2561 Arduino Library `__ by `Sparkfun `__ +- `SparkFun TSL2561 Arduino Library `__ by `SparkFun `__ - :apiref:`tsl2561/tsl2561.h` - :ghedit:`Edit` diff --git a/components/sensor/tx20.rst b/components/sensor/tx20.rst index 224173266..a6ab6d251 100644 --- a/components/sensor/tx20.rst +++ b/components/sensor/tx20.rst @@ -1,27 +1,27 @@ -Tx20/Tx23 Wind Speed/Direction Sensor +TX20/TX23 Wind Speed/Direction Sensor ===================================== .. seo:: - :description: Instructions for setting up Tx20/Tx23 wind speed and direction sensors + :description: Instructions for setting up TX20/TX23 wind speed and direction sensors :image: images/tx20.jpg - :keywords: Tx20 + :keywords: TX20 -The ``tx20`` sensor platform allows you to use your Tx20/Tx23 +The ``tx20`` sensor platform allows you to use your TX20/TX23 (`Amazon`_, -`lacrosse_tx23`_) -wind direction and speed sensors with ESPHome. +`lacrosse_tx23`_) +wind direction and speed sensors with ESPHome. The only required pin is the black or brown cable (which is used to transmit data.) The red cable should be connected to VCC (3.3V), green initiates the data transfer when connected to GND and should therefore be directly connected to GND and the yellow cable should be always connected to ground. -The difference from the Tx20 to the Tx23 seems to be that the green cable does not matter anymore and the +The difference from the TX20 to the TX23 seems to be that the green cable does not matter any more and the wind sensor is just sending a datagram every 2 seconds - pretty much the same as when the green cable was -connected to GND in the Tx20. +connected to GND in the TX20. .. figure:: images/tx20.jpg :align: center :width: 50.0% - Tx20 / Tx23 Wind Speed / Direction. + TX20 / TX23 Wind Speed / Direction. .. _Amazon: https://www.amazon.de/Technoline-Tx-20/dp/B01HXZ3KLA .. _lacrosse_tx23: https://www.lacrossetechnology.com/tx23-wind-sensor @@ -32,10 +32,10 @@ connected to GND in the Tx20. sensor: - platform: tx20 wind_speed: - name: "Windspeed" + name: "Wind speed" wind_direction_degrees: - name: "Winddirection Degrees" - pin: + name: "Wind direction degrees" + pin: number: GPIO04 @@ -62,7 +62,7 @@ Configuration variables: .. note:: In order to create a text sensor to show the textual representation of the wind direction - the following config can be used. "tx20_id" needs to be replaced with the id of the Tx20 sensor. + the following config can be used. "tx20_id" needs to be replaced with the id of the TX20 sensor. .. code-block:: yaml diff --git a/components/sensor/ultrasonic.rst b/components/sensor/ultrasonic.rst index bc58365fb..0fc25fa34 100644 --- a/components/sensor/ultrasonic.rst +++ b/components/sensor/ultrasonic.rst @@ -9,7 +9,7 @@ Ultrasonic Distance Sensor The ultrasonic distance sensor allows you to use simple ultrasonic sensors like the HC-SR04 (`datasheet `__, -`sparkfun `__) with ESPHome +`SparkFun `__) with ESPHome to measure distances. These sensors usually can’t measure anything more than about two meters and may sometimes make some annoying clicking sounds. diff --git a/components/sensor/vl53l0x.rst b/components/sensor/vl53l0x.rst index 46a09f161..d97f1b780 100644 --- a/components/sensor/vl53l0x.rst +++ b/components/sensor/vl53l0x.rst @@ -48,7 +48,7 @@ Configuration variables: 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 `. -- **address** (*Optional*, int): Manually specify the i^2c address of the sensor. Defaults to ``0x29``. +- **address** (*Optional*, int): Manually specify the I^2C address of the sensor. Defaults to ``0x29``. - **id** (*Optional*, :ref:`config-id`): Manually specify the ID used for code generation. See Also diff --git a/components/sensor/xiaomi_cgg1.rst b/components/sensor/xiaomi_cgg1.rst index 11b1249d4..68379e35e 100644 --- a/components/sensor/xiaomi_cgg1.rst +++ b/components/sensor/xiaomi_cgg1.rst @@ -2,7 +2,7 @@ Xiaomi CGG1 BLE Sensor ====================== .. seo:: - :description: Instructions for setting up Xiaomi ClearGrass CGG1 E-Ink bluetooth-based temperature and humidity sensors in ESPHome. + :description: Instructions for setting up Xiaomi ClearGrass CGG1 E-Ink Bluetooth-based temperature and humidity sensors in ESPHome. :image: xiaomi_cgg1.jpg :keywords: Xiaomi, ClearGrass, BLE, E-Ink, Bluetooth, CGG1 @@ -80,14 +80,14 @@ message like this one: Got Xiaomi CGG1 7A:80:8E:19:36:BA Got temperature=23.4°C, humidity=65.0% Note that it can sometimes take some time for the first BLE broadcast to be received. You can speed -up the process by pressing the grey bluetooth button on the back of the device. +up the process by pressing the grey Bluetooth button on the back of the device. Then just copy the address (``7A:80:8E:19:36:BA``) into a new ``sensor.xiaomi_cgg1`` platform entry like in the configuration example at the top. .. note:: - The ESPHome Xiaomi integration listens passively to packets the xiaomi device sends by itself. + The ESPHome Xiaomi integration listens passively to packets the Xiaomi device sends by itself. ESPHome therefore has no impact on the battery life of the device. See Also diff --git a/components/sensor/xiaomi_lywsd02.rst b/components/sensor/xiaomi_lywsd02.rst index 8400db157..a2f5cfe12 100644 --- a/components/sensor/xiaomi_lywsd02.rst +++ b/components/sensor/xiaomi_lywsd02.rst @@ -2,7 +2,7 @@ Xiaomi LYWSD02 BLE Sensor ========================= .. seo:: - :description: Instructions for setting up Xiaomi LYWSD02 bluetooth-based temperature and humidity sensors in ESPHome. + :description: Instructions for setting up Xiaomi LYWSD02 Bluetooth-based temperature and humidity sensors in ESPHome. :image: xiaomi_lywsd02.jpg :keywords: Xiaomi, LYWSD02, BLE, Bluetooth @@ -69,14 +69,14 @@ it detects these sensors, it will automatically parse the BLE message print a me Got Xiaomi LYWSD02 (3F:5B:7D:82:58:4E): Temperature: 26.9°C Note that it can sometimes take some time for the first BLE broadcast to be received. You can speed up -the process by pressing the grey bluetooth button on the back of the device. +the process by pressing the grey Bluetooth button on the back of the device. Then just copy the address (``3F:5B:7D:82:58:4E``) into a new ``sensor.xiaomi_lywsd02`` platform entry like in the configuration example at the top. .. note:: - The ESPHome Xiaomi integration listens passively to packets the xiaomi device sends by itself. + The ESPHome Xiaomi integration listens passively to packets the Xiaomi device sends by itself. ESPHome therefore has no impact on the battery life of the device. See Also diff --git a/components/sensor/xiaomi_lywsdcgq.rst b/components/sensor/xiaomi_lywsdcgq.rst index 7bcfe6fc2..4b60aa961 100644 --- a/components/sensor/xiaomi_lywsdcgq.rst +++ b/components/sensor/xiaomi_lywsdcgq.rst @@ -2,7 +2,7 @@ Xiaomi LYWSDCGQ BLE Sensor ========================== .. seo:: - :description: Instructions for setting up Xiaomi Mi Jia LYWSDCGQ bluetooth-based temperature and humidity sensors in ESPHome. + :description: Instructions for setting up Xiaomi Mi Jia LYWSDCGQ Bluetooth-based temperature and humidity sensors in ESPHome. :image: xiaomi_lywsdcgq.jpg :keywords: Xiaomi, Mi Jia, BLE, Bluetooth, LYWSDCGQ @@ -78,14 +78,14 @@ it detects these sensors, it will automatically parse the BLE message print a me Got Xiaomi LYWSDCGQ 7A:80:8E:19:36:BA Got temperature=23.4°C, humidity=65.0% Note that it can sometimes take some time for the first BLE broadcast to be received. You can speed up -the process by pressing the grey bluetooth button on the back of the device. +the process by pressing the grey Bluetooth button on the back of the device. Then just copy the address (``7A:80:8E:19:36:BA``) into a new ``sensor.xiaomi_lywsdcgq`` platform entry like in the configuration example at the top. .. note:: - The ESPHome Xiaomi integration listens passively to packets the xiaomi device sends by itself. + The ESPHome Xiaomi integration listens passively to packets the Xiaomi device sends by itself. ESPHome therefore has no impact on the battery life of the device. See Also diff --git a/components/sim800l.rst b/components/sim800l.rst index 879239dbb..2aa4d0fcc 100644 --- a/components/sim800l.rst +++ b/components/sim800l.rst @@ -2,24 +2,24 @@ 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 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 -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. +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``. .. warning:: If you are using the :doc:`logger` make sure you are not using the same pins for ``TX`` and ``RX`` or - otherwise disable the uart logging with the ``baud_rate: 0`` option. + otherwise disable the UART logging with the ``baud_rate: 0`` option. .. note:: This module requires a power supply between 3.8V and 4.2V that can handle current spikes up - to 2 amps, it will not work by powering from the same 3.3v power source of the ESP. However you can + to 2 amps, it will not work by powering from the same 3.3V power source of the ESP. However you can connect ``TX`` and ``RX`` lines directly without any level shifter. .. figure:: images/sim800l-full.jpg @@ -46,14 +46,14 @@ Configuration variables: - **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. - **on_sms_received** (*Optional*, :ref:`Automation `): An action to be - performed when a sms is received. See :ref:`sim800l-on_sms_received`. + performed when an SMS is received. See :ref:`sim800l-on_sms_received`. .. _sim800l-on_sms_received: ``on_sms_received`` Trigger --------------------------- -With this configuration option you can write complex automations whenever a sms message +With this configuration option you can write complex automations whenever an SMS message is received. To use the message content, use a :ref:`lambda ` template, the message content and the sender phone number are available inside that lambda under the variables named ``message`` and ``sender`` respectively. @@ -94,7 +94,7 @@ Configuration options: - **recipient** (***Required**, string, :ref:`templatable `): The message recipient. number. - **message** (**Required**, string, :ref:`templatable `): The message content. -- **id** (*Optional*, :ref:`config-id`): Manually specify the ID of the Sim800L if you have multiple components. +- **id** (*Optional*, :ref:`config-id`): Manually specify the ID of the SIM800L if you have multiple components. .. note:: @@ -108,8 +108,8 @@ Configuration options: 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. +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. .. code-block:: yaml @@ -143,7 +143,7 @@ on Home Assistant and will also setup a service so you can send messages with yo id(sms_sender).publish_state(sender); id(sms_message).publish_state(message); -Now your latest received sms and sender number will be displayed by the text sensors. +Now your latest received SMS and sender number will be displayed by the text sensors. To trigger the automation from Home Assistant you can invoke the service with this code: diff --git a/components/spi.rst b/components/spi.rst index 71c311a76..74254feb1 100644 --- a/components/spi.rst +++ b/components/spi.rst @@ -38,8 +38,8 @@ Configuration variables: ------------------------ - **clk_pin** (**Required**, :ref:`Pin Schema `): The pin used for the clock line of the SPI bus. -- **mosi_pin** (*Optional*, :ref:`Pin Schema `): The pin used for the mosi line of the SPI bus. -- **miso_pin** (*Optional*, :ref:`Pin Schema `): The pin used for the miso line of the SPI bus. +- **mosi_pin** (*Optional*, :ref:`Pin Schema `): The pin used for the MOSI line of the SPI bus. +- **miso_pin** (*Optional*, :ref:`Pin Schema `): The pin used for the MISO line of the SPI bus. - **id** (*Optional*, :ref:`config-id`): Manually specify the ID for this SPI hub if you need multiple SPI hubs. See Also diff --git a/components/sx1509.rst b/components/sx1509.rst index 59501b685..0e3440683 100644 --- a/components/sx1509.rst +++ b/components/sx1509.rst @@ -7,9 +7,9 @@ SX1509 16 channel I/O Expander with LED driver and keypad engine The SX1509 component allows you to expand your I/O capabilities: (`datasheet `__, -`Sparkfun`_) in ESPHome. It uses :ref:`I²C Bus ` for communication. +`SparkFun`_) in ESPHome. It uses :ref:`I²C Bus ` for communication. -Once configured, you can use any of the 16 pins as pins for your projects. +Once configured, you can use any of the 16 pins as pins for your projects. Within ESPHome they emulate a real internal GPIO pin and can therefore be used with many of ESPHome's components such as the GPIO binary sensor or GPIO switch. @@ -25,7 +25,7 @@ complicated components that use the pin schema will not work. For example the I2 SX1509 16 channel I/O Expander. -.. _Sparkfun: https://learn.sparkfun.com/tutorials/sx1509-io-expander-breakout-hookup-guide/all +.. _SparkFun: https://learn.sparkfun.com/tutorials/sx1509-io-expander-breakout-hookup-guide/all .. code-block:: yaml @@ -59,7 +59,7 @@ up to 8x8 matrix (i.e. 64 keys). 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). - - **debounce_time** (*Optional*, int): The debounce time is common to all IOs. + - **debounce_time** (*Optional*, int): The debounce time is common to all IOs. .. figure:: images/sx1509-keypad.jpg :align: center @@ -73,7 +73,7 @@ Attention should be paid to the capabilities of the I/O pins. | # | pin function | Keypad | | | | + +=====+==================+=====+========+ -| I/O | input output pwm | Row | Column | +| I/O | input output PWM | Row | Column | +-----+------------------+-----+--------+ | 0 | ✓ | ✓ | | +-----+------------------+-----+--------+ @@ -132,7 +132,7 @@ Configuration variables for the SX1509 keypad keys: - **col** (**Required**, int): The column number for this key on the keypad. 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. +The outputs can in turn be used to add PWM-enabled lights like the monochromatic light. .. code-block:: yaml @@ -142,7 +142,7 @@ The outputs can in turn be used to add pwm enabled lights like the monochromatic name: "SX1509 Pin #0" pin: sx1509: sx1509_hub1 - # Use pin number 0 on the sx1509 + # Use pin number 0 on the SX1509 number: 0 mode: INPUT_PULLUP inverted: True @@ -153,7 +153,7 @@ The outputs can in turn be used to add pwm enabled lights like the monochromatic name: "SX1509 Pin #1" pin: sx1509: sx1509_hub1 - # Use pin number 1 on the sx1509 + # Use pin number 1 on the SX1509 number: 1 # use as output for switch mode: OUTPUT @@ -164,7 +164,7 @@ The outputs can in turn be used to add pwm enabled lights like the monochromatic - platform: sx1509 sx1509_id: sx1509_hub1 id: 'sx1509_output' - # Use pin number 2 on the sx1509 + # Use pin number 2 on the SX1509 pin: 2 # lights can then use the configured output diff --git a/components/text_sensor/homeassistant.rst b/components/text_sensor/homeassistant.rst index b61799342..4bb99e319 100644 --- a/components/text_sensor/homeassistant.rst +++ b/components/text_sensor/homeassistant.rst @@ -1,8 +1,8 @@ -Homeassistant Text Sensor -========================= +Home Assistant Text Sensor +========================== .. seo:: - :description: Instructions for setting up homeassistant text sensors with ESPHome that import states from your homeassistant instance. + :description: Instructions for setting up Home Assistant text sensors with ESPHome that import states from your Home Assistant instance. :image: home-assistant.png The ``homeassistant`` text sensor platform allows you to create a sensors that import diff --git a/components/text_sensor/wifi_info.rst b/components/text_sensor/wifi_info.rst index d8aea6e16..bfabee4eb 100644 --- a/components/text_sensor/wifi_info.rst +++ b/components/text_sensor/wifi_info.rst @@ -2,10 +2,10 @@ WiFi Info Text Sensor ===================== .. seo:: - :description: Instructions for setting up wifi info text sensors. + :description: Instructions for setting up WiFi info text sensors. :image: network-wifi.png -The ``wifi_info`` text sensor platform exposes different wifi information +The ``wifi_info`` text sensor platform exposes different WiFi information via text sensors. .. code-block:: yaml diff --git a/components/time.rst b/components/time.rst index fed432c58..e088646f8 100644 --- a/components/time.rst +++ b/components/time.rst @@ -10,7 +10,7 @@ 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), homeassistant time and GPS sources are supported. +Currently only SNTP (internet-based), Home Assistant and GPS time sources are supported. Home Assistant Time Source -------------------------- @@ -29,10 +29,10 @@ 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 timezone to use with `this format +- **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 timezone string based on the timezone of the computer + /. 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`. @@ -50,11 +50,11 @@ 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 timezone to use with `this format +- **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 timezone string based on the timezone of the computer that is running + 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`` @@ -76,10 +76,10 @@ 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 timezone to use with `this format +- **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 timezone string based on the timezone of the computer + /. 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`. @@ -87,7 +87,7 @@ Configuration variables: Use In Lambdas -------------- -To get the current local time with the timezone applied +To get the current local time with the time zone applied in :ref:`lambdas `, just call the ``.now()`` method like so: .. code-block:: cpp diff --git a/components/uart.rst b/components/uart.rst index 5c35f14f7..6198243a6 100644 --- a/components/uart.rst +++ b/components/uart.rst @@ -54,8 +54,8 @@ Configuration variables: Hardware UARTs -------------- -Whenever possible, esphome will use the Hardware UART unit on the processor for fast and accurate communication. -When the hardware UARTs are all occupied, esphome will fall back to a software implementation that may not +Whenever possible, ESPHome will use the hardware UART unit on the processor for fast and accurate communication. +When the hardware UARTs are all occupied, ESPHome will fall back to a software implementation that may not be accurate at higher baud rates. ``UART0`` is (by default) used by the :doc:`logger component `, using ``tx_pin: GPIO1`` and diff --git a/components/wifi.rst b/components/wifi.rst index e06046ffe..8005b02c6 100644 --- a/components/wifi.rst +++ b/components/wifi.rst @@ -45,7 +45,7 @@ Configuration variables: - **dns2** (*Optional*, IPv4 address): The backup DNS server to use. - **use_address** (*Optional*, string): Manually override what address to use to connect - to the ESP. Defaults to auto-generated value. Example, if you have changed your static IP and want to flash OTA to the previusly configured IP address. + to the ESP. Defaults to auto-generated value. Example, if you have changed your static IP and want to flash OTA to the previously configured IP address. - **ap** (*Optional*): Enable an access point mode on the node. @@ -83,7 +83,7 @@ ESPHome has an optional "Access Point Mode". If you include ``ap:`` in your wifi configuration, ESPHome will automatically set up an access point that you can connect to. Additionally, you can specify both a "normal" station mode and AP mode at the same time. This will cause ESPHome to only enable the access point when no connection -to the wifi router can be made. +to the WiFi router can be made. .. _wifi-manual_ip: diff --git a/cookbook/arduino_port_extender.rst b/cookbook/arduino_port_extender.rst index 11c3cdda7..369098eda 100644 --- a/cookbook/arduino_port_extender.rst +++ b/cookbook/arduino_port_extender.rst @@ -58,7 +58,7 @@ individual IOs. auto ape_component = new ArduinoPortExpander(i2c_component, 0x08); return {ape_component}; -By default the I²C address is ``0x08`` but you can change it on the arduino sketch so you can have more slaves +By default the I²C address is ``0x08`` but you can change it on the Arduino sketch so you can have more slaves on the same bus. Now it is time to add the ports. @@ -103,7 +103,7 @@ Sensor ------ Sensors allows for reading the analog value of an analog pin, those are from ``A0`` to ``A7`` except for -``A4`` and ``A5``. The value returned goes from 0 to 1023 (the value returned by the arduino ``analogRead`` +``A4`` and ``A5``. The value returned goes from 0 to 1023 (the value returned by the Arduino ``analogRead`` function). Arduino analog inputs measures voltage. By default the sketch is configured to use the Arduino internal VREF diff --git a/cookbook/brilliant-mirabella-genio-smart-plugs.rst b/cookbook/brilliant-mirabella-genio-smart-plugs.rst index 65a5db03f..6935f27c6 100644 --- a/cookbook/brilliant-mirabella-genio-smart-plugs.rst +++ b/cookbook/brilliant-mirabella-genio-smart-plugs.rst @@ -1,7 +1,7 @@ Brilliant / Mirabella Genio Smart Plugs ======================================= -Brilliant / Mirabella Genio Smart Plugs are a tuya based smart plugs sold by Bunnings and Kmart respectively in Australia. +Brilliant / Mirabella Genio Smart Plugs are a Tuya-based smart plugs sold by Bunnings and Kmart respectively in Australia. .. figure:: images/brilliant-mirabella-genio-smart-plugs.jpg :align: center @@ -24,7 +24,7 @@ firmware can be uploaded allowing you to control the smart plugs via Home Assist 2.1 Prerequisites ***************** -#. Before you begin you'll need one of the following linux machines running the latest copy of `Raspbian Stretch Lite +#. Before you begin you'll need one of the following Linux machines running the latest copy of `Raspbian Stretch Lite `__ a. Raspberry Pi 2B/B+ with `USB WiFi Dongle `__. @@ -38,7 +38,7 @@ firmware can be uploaded allowing you to control the smart plugs via Home Assist only. If you use your Raspberry Pi for anything else, we recommend using another SD card with a clean installation. #. A microSD card (minimum 2GB, 8GB+ recommended). -#. Any WiFi device which can connect to the SSID generated by the Raspberry Pi and eventually the flashed tuya device. **This cannot be an iOS / Apple device. +#. Any WiFi device which can connect to the SSID generated by the Raspberry Pi and eventually the flashed Tuya device. **This cannot be an iOS / Apple device. Android devices will work.** 2.2 Installing the OS @@ -216,12 +216,12 @@ which these adaptions created by `@cryptelli `__ +The H801 is pretty affordable and easy to hack and adapt to your needs. It can be found on `AliExpress `__ `Here `__ is an article about the hardware for those who have an interest for more details about the board. It can be used as a RGB, RGBW, RGB dual white or even control 5 individual monochromatic strips if you want or combinations of these. @@ -60,7 +60,7 @@ and the :doc:`ESP8266 Software PWM output ` comp white: pwm_w -Make your node in the esphome dashboard and compile/upload it. +Make your node in the ESPHome dashboard and compile/upload it. (if it fails OTA it must be uploaded manually with your favorite ESP flasher, e.g. :ref:`esphome-flasher `) @@ -86,12 +86,12 @@ This LED strip can be used with the sketch as-is :align: center :width: 80.0% -For this type of led strip you have to swap the white and blue gpio numbers in the sketch +For this type of led strip you have to swap the white and blue GPIO numbers in the sketch. -You will need to solder pins to the board inside the h801 (fortunately its pretty roomy and -not a lot of components or stuff in the way part from the 2 wires on the back) +You will need to solder pins to the board inside the H801 (fortunately it's pretty roomy and +not a lot of components or stuff in the way apart from the 2 wires on the back). -3.3v, GND, TX and RX (RX to RX and TX to TX) needs to be connected to your serial adapter, the +3.3V, GND, TX and RX (RX to RX and TX to TX) needs to be connected to your serial adapter, the two other pins must be shorted throughout the flashing process by a jumper or a breadboard cable. (Remember to remove it after flashing) diff --git a/cookbook/mirabella-genio-bulb.rst b/cookbook/mirabella-genio-bulb.rst index bffdddee6..e6525695c 100644 --- a/cookbook/mirabella-genio-bulb.rst +++ b/cookbook/mirabella-genio-bulb.rst @@ -1,7 +1,7 @@ Mirabella Genio Bulbs ===================== -The Mirabella Genio is a tuya based smart bulb sold by Kmart in Australia. +The Mirabella Genio is a Tuya-based smart bulb sold by Kmart in Australia. .. figure:: images/mirabella-genio-b22-rgbw.jpg :align: center @@ -24,7 +24,7 @@ firmware can be uploaded allowing you to control the bulbs via Home Assistant. 2.1 Prerequisites ***************** -#. Before you begin you'll need one of the following linux machines running the latest copy of `Raspbian Stretch Lite +#. Before you begin you'll need one of the following Linux machines running the latest copy of `Raspbian Stretch Lite `__ a. Raspberry Pi 2B/B+ with `USB WiFi Dongle `__. @@ -38,7 +38,7 @@ firmware can be uploaded allowing you to control the bulbs via Home Assistant. only. If you use your Raspberry Pi for anything else, we recommend using another SD card with a clean installation. #. A microSD card (minimum 2GB, 8GB+ recommended). -#. Any WiFi device which can connect to the SSID generated by the Raspberry Pi and eventually the flashed tuya device. **This cannot be an iOS / Apple device. +#. Any WiFi device which can connect to the SSID generated by the Raspberry Pi and eventually the flashed Tuya device. **This cannot be an iOS / Apple device. Android devices will work.** 2.2 Installing the OS diff --git a/cookbook/sonoff-basic-light-switch.rst b/cookbook/sonoff-basic-light-switch.rst index ca9eca632..700ca4ae0 100644 --- a/cookbook/sonoff-basic-light-switch.rst +++ b/cookbook/sonoff-basic-light-switch.rst @@ -15,23 +15,23 @@ DIY Light switch using a Sonoff Basic from following this guide. In some countries you may need specific qualifications before you can carry out such work in - a residentaial property. + a residential property. Background ---------- Moving your entire house to smart lighting can end up being very expense, for instance if you have a -light fitting with 5 lamps in it thats 5 expensive smart bulbs to buy just for one room! Smart bulbs +light fitting with 5 lamps in it that's 5 expensive smart bulbs to buy just for one room! Smart bulbs clearly have some great advantages, dimmable, colour temperature or even full colour changing. What if all you're after is a cost effective way to turn them on and off? The ideal solution would be to replace the light switch with one that can be controlled by home assistant, whilst retaining the ease of use of a standard light that would also continue to work if -the network went down, or home assistant failed etc. +the network went down, or Home Assistant failed etc. It turns out Sonoff do exactly this product, it called a T1-UK (other country options available), however you soon found the touch aspect of them might not 'feel right' and certainly might not get the -approval of other members of your household. However if this solution apeals to you, check out the +approval of other members of your household. However if this solution appeals to you, check out the :doc:`Cookbook guide for T1/T2/T3` The other option to consider is a standard '2 way' light switch (like you might have on an upstairs @@ -43,7 +43,7 @@ The Solution Use a 'retractive' style light switch. That is one that is spring loaded and so always returns to the 'off' position. It's effectively a push button, that looks like a light switch. Combining this with a -Sonoff Basic gives you the ideal solution for somewhere around £5. Thats much cheaper than buying lots +Sonoff Basic gives you the ideal solution for somewhere around £5. That's much cheaper than buying lots of expensive smart bulbs, but of course you only get on / off control. You will have several potential hurdles to overcome: @@ -51,7 +51,7 @@ You will have several potential hurdles to overcome: 1. The first is that you do need to have a neutral at the location of the Sonoff. Many houses will not have this as standard at the light switch. -2. You need enough space to accomodate your Sonoff Basic at your chosen location. +2. You need enough space to accommodate your Sonoff Basic at your chosen location. If you're lucky most of the locations will have plasterboard walls, and you will be able to simply drop a neutral wire down the inside of the wall to the lights switch (where you locate the Sonoff). @@ -61,7 +61,7 @@ This can come in useful because if you remove the PCB from the plastic case it a .. warning:: - If you plan to take the pcb out of the plastic case you need to make sure its properly insulated, and that the back + If you plan to take the PCB out of the plastic case you need to make sure it's properly insulated, and that the back box is deep enough to hold the PCB as well as the switch. You should also insulate the PCB, for instance by dropping it in a heavy duty glue lined heat shrink sleeve. @@ -73,7 +73,7 @@ and use the cable that ran from the light to the switch as a low voltage cable t .. warning:: - If you are going to reuse existing wiring to connect to the GPIO, you must make sure its connected directly to the switch + If you are going to reuse existing wiring to connect to the GPIO, you must make sure it's connected directly to the switch and does not have mains voltage on it from another circuit. Implementation @@ -85,16 +85,16 @@ Please make sure you have read up about :doc:`the Sonoff Basic and how to flash As that won't be covered here.Also make sure you know your way around a soldering iron and can find the relevant information about the location of the GPIO pins on the Sonoff Basic if you need to. -If you have a Sonoff Basic V1 devices GPIO14 is alredy presented on a pin header on the PCB next to the programing pins. +If you have a Sonoff Basic V1 devices GPIO14 is already presented on a pin header on the PCB next to the programming pins. On the V2 and V3 PCBs, there is a solder pad underneath the PCB that will let you get at this GPIO. You have 2 choices when it comes to picking which GPIO to use. GPIO0 or GPIO14. GPIO0 is used by the push button switch on the the PCB so you will need to locate the right pin on the switch and solder a wire onto it if you're going to use that one. Whichever -one you pick, you will also need to use the ground or 0v pin for the other side of the switch. Once you have soldered your wires +one you pick, you will also need to use the ground or 0V pin for the other side of the switch. Once you have soldered your wires into place, a handy tip is to add a drop of glue over the wire, a little way away from the solder joint, so give some strain relief to the joint. -Now you have a pair of wires from the GPIO and 0v to your retractive switch lets look at the code. +Now you have a pair of wires from the GPIO and 0V to your retractive switch lets look at the code. .. code-block:: yaml @@ -143,21 +143,21 @@ Now you have a pair of wires from the GPIO and 0v to your retractive switch lets number: GPIO13 inverted: yes -In the above code block, there is a *secrets.yaml* file so that you have just one place to change wifi +In the above code block, there is a *secrets.yaml* file so that you have just one place to change WiFi details for all your devices. Although not visible day to day, there is also the status LED configured so that it can be used when setting -up / debugging. Also a configured binary sensor to give status incase you want to perform an action / alert +up / debugging. Also a configured binary sensor to give status in case you want to perform an action / alert if the light switch disconnects for any reason. .. note:: If you wanted to use a pull cord switch (in a bathroom for instance) that works like a standard switch and changes state each pull (as opposed to a retractive switch that you press and let go) then you can change - a single line *on_press:* to *on_state:* which will trigger the light toggle everytime the state of the + a single line *on_press:* to *on_state:* which will trigger the light toggle every time the state of the switch changes. - If you do this its important that you do not use GPIO0, otherwise if the device reboots and the switch happens + If you do this it's important that you do not use GPIO0, otherwise if the device reboots and the switch happens to be in the closed state the Sonoff will boot into flash mode and not work. diff --git a/cookbook/sonoff-dual-light-switch.rst b/cookbook/sonoff-dual-light-switch.rst index 37c79a30e..5a515d6ec 100644 --- a/cookbook/sonoff-dual-light-switch.rst +++ b/cookbook/sonoff-dual-light-switch.rst @@ -15,12 +15,12 @@ DIY Light switch using a Sonoff Dual from following this guide. In some countries you may need specific qualifications before you can carry out such work in - a residentaial property. + a residential property. Please read up on :doc:`/cookbook/sonoff-basic-light-switch` to get the background and principals of -the this project. Its all basically the same, but with a double switch. +the this project. It's all basically the same, but with a double switch. -So we will be using GPIO4 and GPIO14 for the two retractive switches, again they will both short to 0v +So we will be using GPIO4 and GPIO14 for the two retractive switches, again they will both short to 0V when the switch is clicked. R1 @@ -159,21 +159,21 @@ The R1 version of the Dual controls the relays via the UART, so the code gets a output: out_2 -In the above code block, there is a *secrets.yaml* file so that you have just one place to change wifi +In the above code block, there is a *secrets.yaml* file so that you have just one place to change WiFi details for all your devices. The logger baud_rate: 0 is required to make sure the logged does not send any data over the UART or it would mess with the relays. Although not visible day to day, there is also the status LED configured so that it can be used when setting -up / debugging. Also a configured binary sensor to give status incase you want to perform an action / alert +up / debugging. Also a configured binary sensor to give status in case you want to perform an action / alert if the light switch disconnects for any reason. R2 -- This one is a lot simpler as it uses real GPIO for its relays. Please note this is untested, but should work! -Its basically the same as the :doc:`T2 ` +It's basically the same as the :doc:`T2 ` .. code-block:: yaml diff --git a/cookbook/sonoff-fishpond-pump.rst b/cookbook/sonoff-fishpond-pump.rst index bae89fd3e..2be2e66b1 100644 --- a/cookbook/sonoff-fishpond-pump.rst +++ b/cookbook/sonoff-fishpond-pump.rst @@ -10,16 +10,16 @@ Sonoff Fish Pond Pump :align: center :width: 75.0% -The Sonoff range of products containing the ESP chips from espressif has a myriad of uses and best of all, you can customize it, aka hackable. +The Sonoff range of products containing the ESP chips from Espressif has a myriad of uses and best of all, you can customize it, aka hackable. This quick cookbook aims to provide a clear, simple working example. -This example is very basic in it's operation. +This example is very basic in its operation. * Start the pump every hour and run it for 10 minutes. -* Manually start and stop the pump with the toggle button on the Sonoff basic. +* Manually start and stop the pump with the toggle button on the Sonoff Basic. * Use a water float sensor and stop the pump if water level is too low. -*Some of the later Sonoff basics does not have GPIO pin available, check your board first* +*Some of the later Sonoff Basics does not have GPIO pin available, check your board first* This example is using ESPHome 1.10.1 and Home Assistant 0.85.1 @@ -28,7 +28,7 @@ Assumptions As many of the details on here a predicated on existing installations and knowledge the following is assumed: -* You have installed the relevant environment and it is functional (Home Assisant, ESPHome). +* You have installed the relevant environment and it is functional (Home Assistant, ESPHome). * You need to create your own secrets.yaml file. * You are proficient in reading instructions and capable of using a search engine. * You will look at the documentation on this website (we may have missed something in this example). @@ -49,7 +49,7 @@ Here is the configuration with the basic operations outlined above. ## Fish pond sonoff ## filename: fishpond.yaml - # Sonoff basic + # Sonoff Basic # Button toggles pump on/off # Float sensor stops pump # Cron'd to run every hour, on the hour for 10 minutes @@ -138,7 +138,7 @@ Here is the configuration with the basic operations outlined above. 2. Programming ************** -Follow the standard way of uploading to your Sonoff basic. +Follow the standard way of uploading to your Sonoff Basic. .. figure:: images/sonoff-fishpond-pump-1-programming.jpg :align: center @@ -195,7 +195,7 @@ Wires connected for easier access to connect and disconnect water level sensor :align: center :width: 75.0% -This needs to be submursed, pump (bio filter) and sensor connected in single housing (icecream tub). +This needs to be submersed, pump (bio filter) and sensor connected in single housing (icecream tub). .. figure:: images/sonoff-fishpond-pump-installed.jpg :align: center @@ -203,7 +203,7 @@ This needs to be submursed, pump (bio filter) and sensor connected in single hou In this PVC housing the plates are secured using cabinet door magnets for easier access and maintenance. -* Ensure you are using a proper and compliant waterproof box to house your electrical equipment (Sonoff basic) in. +* Ensure you are using a proper and compliant waterproof box to house your electrical equipment (Sonoff Basic) in. * Ensure you plan to be able to remove the unit with minimal effort should you need to manually USB reflash it again in future. 2.6. Home Assistant @@ -215,5 +215,5 @@ See Also -------- - :doc:`/devices/sonoff_basic` -- `Flashing sonoff basic `__. +- `Flashing Sonoff Basic `__. - `Adding ESPHome to Home Assistant `__. diff --git a/cookbook/sonoff-t1-3.rst b/cookbook/sonoff-t1-3.rst index c24a6de9f..8248a91c9 100644 --- a/cookbook/sonoff-t1-3.rst +++ b/cookbook/sonoff-t1-3.rst @@ -9,7 +9,7 @@ Sonoff T1/T2/T3 UK Please make sure you have read up about :doc:`the Sonoff T1 / T2 / T3 and how to flash it with ESPHome `. -So lets get straight on with the code +So let's get straight on with the code! T1 -- @@ -63,13 +63,13 @@ T1 inverted: yes -In the above code block, there is a *secrets.yaml* file so that you have just one place to change wifi +In the above code block, there is a *secrets.yaml* file so that you have just one place to change WiFi details for all your devices. -The use_address is required because the sonoff T series don't work with mDNS properly. This means that it will -show as off line in the dashboard, and you will need to use the ip address to view the logs or upload new versions +The use_address is required because the Sonoff T series don't work with mDNS properly. This means that it will +show as off line in the dashboard, and you will need to use the IP address to view the logs or upload new versions of the firmware. You will also need to manually add the device in integrations by IP address. You will need to -assign a fixed IP in the above configuratino, or use a fixed IP assigned fro your DHCP server. +assign a fixed IP in the above configuration, or use a fixed IP assigned by your DHCP server. See `issue #810 `__ for further details. diff --git a/cookbook/teckin_sb50.rst b/cookbook/teckin_sb50.rst index 591065f29..849dd93af 100644 --- a/cookbook/teckin_sb50.rst +++ b/cookbook/teckin_sb50.rst @@ -11,7 +11,7 @@ TECKIN SB50 LED Bulb :width: 50.0% The Teckin SB50 Bulb's are a great option for lighting that can be flashed with tuya-convert. More details can be found at tuya-convert `github page `__. -Below is the esphome configuration file that will get you up and running. This assumes you have a secret.yaml with ssid,password, api_password and ota_password keys. +Below is the ESPHome configuration file that will get you up and running. This assumes you have a secret.yaml with ssid, password, api_password and ota_password keys. .. code-block:: yaml diff --git a/cookbook/zemismart-rgbw-downlights.rst b/cookbook/zemismart-rgbw-downlights.rst index 3d5fa5c5c..8accbf7a6 100644 --- a/cookbook/zemismart-rgbw-downlights.rst +++ b/cookbook/zemismart-rgbw-downlights.rst @@ -1,7 +1,7 @@ Zemismart LED RGBW/RGBWW Downlights =================================== -The Zemismart LED RGBW Downlight is a tuya based downlight available from various retailers online or from `zemismart.com `__ direct. +The Zemismart LED RGBW Downlight is a Tuya-based downlight available from various retailers online or from `zemismart.com `__ direct. .. figure:: images/zemismart-rgbw-downlight.jpg :align: center @@ -24,7 +24,7 @@ firmware can be uploaded allowing you to control the smart plugs via Home Assist 2.1 Prerequisites ***************** -#. Before you begin you'll need one of the following linux machines running the latest copy of `Raspbian Stretch Lite +#. Before you begin you'll need one of the following Linux machines running the latest copy of `Raspbian Stretch Lite `__ a. Raspberry Pi 2B/B+ with `USB WiFi Dongle `__. @@ -38,7 +38,7 @@ firmware can be uploaded allowing you to control the smart plugs via Home Assist only. If you use your Raspberry Pi for anything else, we recommend using another SD card with a clean installation. #. A microSD card (minimum 2GB, 8GB+ recommended). -#. Any WiFi device which can connect to the SSID generated by the Raspberry Pi and eventually the flashed tuya device. **This cannot be an iOS / Apple device. +#. Any WiFi device which can connect to the SSID generated by the Raspberry Pi and eventually the flashed Tuya device. **This cannot be an iOS / Apple device. Android devices will work.** 2.2 Installing the OS @@ -87,7 +87,7 @@ firmware can be uploaded allowing you to control the smart plugs via Home Assist via SSH and ensure your connection type is set to **SFTP** #. Browse to ``/root/tuya-convert/files``. #. Upload your compiled ``firmware.bin`` file to this directory. For command line based installs you can access the file under - ``//.pioenvs//firmware.bin`` alternatively Hass.io users can download the file directly from the web ui. + ``//.pioenvs//firmware.bin`` alternatively Hass.io users can download the file directly from the web UI. 2.7 Use tuya-convert to install ESPHome Firmware ************************************************ @@ -95,8 +95,8 @@ firmware can be uploaded allowing you to control the smart plugs via Home Assist #. Type ``./start_flash.sh`` #. Type ``yes`` to accept the warning. #. Connect your alternative WiFi device (non iOS / Apple based) to the ``vtrust-flash`` SSID using ``flashmeifyoucan`` as the password. This is the network - being broadcast by the Pi from the tuya flash script. -#. If you haven't already plug your downlight into a powerpoint and turn it on and follow the instructions below: + being broadcast by the Pi from the Tuya flash script. +#. If you haven't already plug your downlight into a power point and turn it on and follow the instructions below: #. Once turned on a stable white light will be emitted. #. Switch off, then back on **3** times ensuring each off-on cycle is no longer 10 seconds apart and between each the light visibly turns off. @@ -116,7 +116,7 @@ firmware can be uploaded allowing you to control the smart plugs via Home Assist Thanks to `@1972rx2 `__ for creating the below ESPHome configuration which this cookbook article by `@cryptelli `__ is based on. -Depending ion the type of your light you either need a config using my9231 driver (RGBW) or 5 pwm channels (RGBWW). +Depending on the type of your light you either need a config using my9231 driver (RGBW) or 5 PWM channels (RGBWW). 3.1 Zemismart LED RGBW Downlight YAML ************************************* diff --git a/custom/i2c.rst b/custom/i2c.rst index 4c8bb79b5..bf5319dc3 100644 --- a/custom/i2c.rst +++ b/custom/i2c.rst @@ -1,7 +1,7 @@ Custom I²C Device ================= -Lots of devices communicate using the i2c protocol. If you want to integrate +Lots of devices communicate using the I^2C protocol. If you want to integrate a device into ESPHome that uses this protocol you can pretty much use almost all Arduino-based code because the ``Wire`` library is also available in ESPHome. diff --git a/devices/sonoff_4ch.rst b/devices/sonoff_4ch.rst index d36094a9e..f5232abde 100644 --- a/devices/sonoff_4ch.rst +++ b/devices/sonoff_4ch.rst @@ -152,14 +152,14 @@ Step 4: Uploading Firmware In order to upload the firmware, you're first going to need to get the chip into a flash mode, otherwise the device will start up without accepting any firmware flash attempts. To do this, while the UART -bridge is not connected to your USB port, press and hold the bottom-left push button labeled ``FW/IO0`` +bridge is not connected to your USB port, press and hold the bottom-left push button labelled ``FW/IO0`` and continue to do so while plugging in the UART bridge into your computer. Keep holding the button for another 2-4 seconds. The 4CH should now be in a flash mode and should not blink any LED. .. figure:: images/sonoff_4ch_buttons.jpg :align: center - You need to press the button labeled ``FW/IO0`` during startup. + You need to press the button labelled ``FW/IO0`` during startup. Now you can finally run the upload command: @@ -291,9 +291,9 @@ of the basic functions. output: blue_led -Above example also showcases an important concept of esphome: IDs and linking. In order -to make all components in esphome as much "plug and play" as possible, you can use IDs to define -them in one area, and simply pass that ID later on. For example, above you can see an PWM (dimmer) +Above example also showcases an important concept of ESPHome: IDs and linking. In order +to make all components in ESPHome as "plug and play" as possible, you can use IDs to define +them in one area, and simply pass that ID later on. For example, above you can see a PWM (dimmer) output being created with the ID ``blue_led`` for the blue LED. Later on it is then transformed into a :doc:`monochromatic light `. If you additionally want the buttons to control the relays, look at `the complete Sonoff 4CH @@ -309,7 +309,7 @@ Step 6: Finishing Up If you're sure everything is done with the 4CH and have double checked there's nothing that could cause a short in the case, you can put the front cover back on and screw everything together. -Now triple or even quadruple check the UART bridge is not connected to the 4CH, then comes the time when you can +Now triple- or even quadruple-check the UART bridge is not connected to the 4CH, then comes the time when you can connect it. Happy hacking! diff --git a/devices/sonoff_s20.rst b/devices/sonoff_s20.rst index d8ee52631..e6640953c 100644 --- a/devices/sonoff_s20.rst +++ b/devices/sonoff_s20.rst @@ -103,7 +103,7 @@ When you're done, it should look something like this: :align: center Now go ahead and connect the pins to your UART bridge, making sure the S20 is not plugged in as before. -Also beware that some UART to USB bridges supply 5V on the VCC pin if it's not explicitly labeled 3.3V. +Also beware that some UART to USB bridges supply 5V on the VCC pin if it's not explicitly labelled 3.3V. It's best to just use a multimeter and double check if it's unclear. .. note:: @@ -209,7 +209,7 @@ of the basic functions. platform: ESP8266 board: esp8285 arduino_version: 2.4.2 - + wifi: ssid: password: @@ -251,9 +251,9 @@ of the basic functions. output: s20_green_led -The above example also showcases an important concept of esphome: IDs and linking. In order -to make all components in ESPHome as much "plug and play" as possible, you can use IDs to define -them in one area, and simply pass that ID later on. For example, above you can see an PWM (dimmer) +The above example also showcases an important concept of ESPHome: IDs and linking. In order +to make all components in ESPHome as "plug and play" as possible, you can use IDs to define +them in one area, and simply pass that ID later on. For example, above you can see a PWM (dimmer) output being created with the ID ``s20_green_led`` for the green LED. Later on it is then transformed into a :doc:`monochromatic light `. @@ -308,7 +308,7 @@ enter an OTA-only safe mode). If you're sure everything is done with the S20 and have double checked there's nothing that could cause a short in the case, you can put the front cover with the button on the base again and screw everything together. -Now triple or even quadruple check the UART bridge is not connected to the S20, then comes the time when you can +Now triple- or even quadruple-check the UART bridge is not connected to the S20, then comes the time when you can plug it into the socket. Happy hacking! diff --git a/devices/sonoff_t1_uk_3gang_v1.1.rst b/devices/sonoff_t1_uk_3gang_v1.1.rst index c109f46ab..3e9197303 100644 --- a/devices/sonoff_t1_uk_3gang_v1.1.rst +++ b/devices/sonoff_t1_uk_3gang_v1.1.rst @@ -69,7 +69,7 @@ supplied with the Sonoff T1 UK 3 Gang before doing this step. plugged in before doing this step. While the device is not plugged in, turn the device face down and put a narrow flat screwdriver into the slot at the bottom. -With careful twisting motion detatch the face plate. +With careful twisting motion detach the face plate. .. figure:: images/sonoff_t1_uk_3g_back_v1.1.jpg :align: center @@ -185,7 +185,7 @@ you will be able to use all of ESPHome's great features with your Sonoff T1 UK 3 .. note:: While now your T1 will start up and connect to your WiFi network if you power it up from UART it will not behave normally, - it may flash random LEDs, turn on anf off touchpads' backlight and not react on touching touchpads. This will all be fixed once you re-assemble your T1 + it may flash random LEDs, turn on and off touchpads' backlight and not react on touching touchpads. This will all be fixed once you re-assemble your T1 and power it up from the mains power once safe to do so. If above step does, however, not work, here are some steps that can help: @@ -289,9 +289,9 @@ of the basic functions. output: blue_led -Above example also showcases an important concept of esphome: IDs and linking. In order -to make all components in esphome as much "plug and play" as possible, you can use IDs to define -them in one area, and simply pass that ID later on. For example, above you can see an PWM (dimmer) +Above example also showcases an important concept of ESPHome: IDs and linking. In order +to make all components in ESPHome as "plug and play" as possible, you can use IDs to define +them in one area, and simply pass that ID later on. For example, above you can see a PWM (dimmer) output being created with the ID ``blue_led`` for the blue LED. Later on it is then transformed into a :doc:`monochromatic light `. If you additionally want the buttons to control the relays, look at `the complete Sonoff T1 UK 3 Gang @@ -303,7 +303,7 @@ Step 6: Finishing Up If you're sure everything is done with the T1 UK 3 Gang and have double checked there's nothing that could cause a short in the case, you can put the T1 back together. -Now triple or even quadruple check the UART bridge is not connected to the T1 UK 3 Gang, then comes the time when you can +Now triple- or even quadruple-check the UART bridge is not connected to the T1 UK 3 Gang, then comes the time when you can connect it. Happy hacking! diff --git a/guides/cli.rst b/guides/cli.rst index aedfb52d7..47483aa7f 100644 --- a/guides/cli.rst +++ b/guides/cli.rst @@ -91,7 +91,7 @@ The ``esphome upload`` validates the configuration and uploads the most .. option:: --upload-port UPLOAD_PORT - Manually specify the upload port/ip to use. For example ``/dev/cu.SLAB_USBtoUART``. + Manually specify the upload port/IP to use. For example ``/dev/cu.SLAB_USBtoUART``. .. option:: --host-port HOST_PORT @@ -127,7 +127,7 @@ See :ref:`mqtt-using_with_home_assistant`. .. program:: esphome wizard -The ``esphome wizard`` command starts the esphome configuration creation wizard. +The ``esphome wizard`` command starts the ESPHome configuration creation wizard. ``mqtt-fingerprint`` Command ---------------------------- @@ -164,7 +164,7 @@ node configuration file. This is useful if you're not using MQTT discovery. .. program:: esphome dashboard -The ``esphome dashboard`` command starts the esphome dashboard server for using esphome +The ``esphome dashboard`` command starts the ESPHome dashboard server for using ESPHome through a graphical user interface. .. option:: --port PORT diff --git a/guides/contributing.rst b/guides/contributing.rst index bce0e5938..209a10bfc 100644 --- a/guides/contributing.rst +++ b/guides/contributing.rst @@ -32,7 +32,7 @@ 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 +I was setting up the documentation good Doxygen integration was key to me. Anyway, here's a quick RST primer: - **Headers**: You can write titles like this: @@ -250,7 +250,7 @@ Notes Some notes about the docs: -- Use the english language (duh...) +- Use the English language (duh...) - An image tells a thousand words, please use them wherever possible. But also don't forget to shrink them, for example I often use https://tinypng.com/ - Try to use examples as often as possible (also while it's great to use highly accurate, @@ -273,19 +273,19 @@ This is only possible for ``pip`` installs. git clone https://github.com/esphome/esphome.git git clone https://github.com/esphome/esphome-docs.git - # Install esphome + # Install ESPHome cd esphome/ script/setup # Start a new feature branch git checkout -b my-new-feature cd .. -Now you can open esphome in your IDE of choice (mine is CLion) with the platformio -addons (see platformio docs for more info). Then develop the new feature with the +Now you can open ESPHome in your IDE of choice (mine is CLion) with the PlatformIO +addons (see PlatformIO docs for more info). Then develop the new feature with the guidelines below. All PRs are automatically checked for some basic formatting/code mistakes with Travis. -These checks *must* pass for your PR to be mergable. +These checks *must* pass for your PR to be mergeable. Setting Up Git Environment -------------------------- @@ -331,7 +331,7 @@ mark it as a draft PR in the dropdown of the green "create PR" button. **Review Process:** ESPHome's code base tries to have a high code standard. At the bottom of the Pull Request you will be able to see the "Travis" continuous integration check which will automatically go through your patch and try to spot errors. If the CI check fails, -please see the travis log and fix all errors that appear there. Only PRs that pass the automated +please see the Travis log and fix all errors that appear there. Only PRs that pass the automated checks can be merged! **Catching up with reality**: Sometimes other commits have been made to the same files @@ -407,7 +407,7 @@ look at the ``esphome/components/hello1/__init__.py`` file and the second entry Let's leave what's written in those files for (2.), but for now you should also know that whenever a component is loaded, all the C++ source files in the folder of the component -are automatically copied into the generated platformio project. So you just need to add the C++ +are automatically copied into the generated PlatformIO project. So you just need to add the C++ source files in the folder and the ESPHome core will copy them with no additional code required by the integration developer. @@ -447,7 +447,7 @@ at examples of how similar integrations validate user input. A few point on validation: -- ESPHome ts a lot of effort in **strict validation** - If possible, all validation methods should be as strict +- ESPHome puts a lot of effort into **strict validation** - If possible, all validation methods should be as strict as possible and detect wrong user input at the validation stage (and not later). - All default values should be defined in the schema (and not in C++ codebase or other code parts). - Config keys should be descriptive - If the meaning of a key is not immediately obvious you should @@ -491,7 +491,7 @@ for a variable to be declared first, ``yield`` will wait until that variable has After that, ``yield`` returns and the method will execute on the next line. Next, there's a special method - ``cg.add`` - that you will often use. ``cg.add()`` does a very simple -thing: Any C++ declared in the paranetheses of ``cg.add()`` will be added to the generated code. +thing: Any C++ declared in the parentheses of ``cg.add()`` will be added to the generated code. If you do not call "add" a piece of code explicitly, it will not be added to the main.cpp file! 4. Runtime @@ -570,14 +570,14 @@ Standard for the esphome-core codebase: - New components should dump their configuration using ``ESP_LOGCONFIG`` at startup in ``dump_config()`` - ESPHome uses a unified formatting tool for all source files (but this tool can be difficult to install). - When creating a new PR in GitHub, see the travis-ci output to see what formatting needs to be changed + When creating a new PR in GitHub, see the Travis CI output to see what formatting needs to be changed and what potential problems are detected. - The number of external libraries should be kept to a minimum. If the component you're developing has a simple communication interface, please consider implementing the library natively in ESPHome. - This depends on the communication interface of course - if the library is directly working - with pins or doesn't do any I/O itself, it's ok. However if it's something like i2c, then ESPHome's + with pins or doesn't do any I/O itself, it's ok. However if it's something like I^2C, then ESPHome's own communication abstractions should be used. Especially if the library accesses a global variable/state like ``Wire`` there's a problem because then the component may not modular (i.e. not possible to create two instances of a component on one ESP) @@ -592,7 +592,7 @@ Standard for the esphome-core codebase: .. note:: - You can also run the lint and travis checks through a docker image: + You can also run the lint and Travis checks through a docker image: .. code-block:: bash diff --git a/guides/faq.rst b/guides/faq.rst index 9ed89452f..62764937b 100644 --- a/guides/faq.rst +++ b/guides/faq.rst @@ -107,7 +107,7 @@ For me to fix the issue quickly, there are some things that would be really help help given just that information? 2. A snippet of the code/configuration file used is always great to reproduce this issue. Please read `How to create a Minimal, Complete, and Verifiable example `__. -3. If it's an i2c or hardware communication issue please also try setting the +3. If it's an I^2C or hardware communication issue please also try setting the :ref:`log level ` to ``VERY_VERBOSE`` as it provides helpful information about what is going on. 4. Please also include what you've already tried and didn't work as that can help us track down the issue. @@ -133,8 +133,8 @@ How do I update to the latest beta release? ------------------------------------------- ESPHome has a beta release cycle so that new releases can easily be tested before -the changes are deployed to the stable channel. You can help test esphome (and use new features) -by installing the esphome beta: +the changes are deployed to the stable channel. You can help test ESPHome (and use new features) +by installing the tested beta: .. code-block:: bash @@ -224,11 +224,11 @@ Some steps that can help with the issue: in other it can make things worse). See :ref:`wifi-power_save_mode`. - The issue seems to happen with cheap boards more frequently. Especially the "cheap" NodeMCU boards from eBay which sometimes have quite bad antennas. -- ESPHome reboots on purpose when something is not going right, e.g. - :doc:`wifi connetion cannot be made ` or - :doc:`api connetion is lost ` or +- ESPHome reboots on purpose when something is not going right, e.g. + :doc:`wifi connetion cannot be made ` or + :doc:`api connetion is lost ` or :doc:`mqtt connection is lost `. So if you are facing this problem you'll need - to explicitely set the ``reboot_timeout`` option to ``0s`` on the components being used. + to explicitly set the ``reboot_timeout`` option to ``0s`` on the components being used. Docker Reference diff --git a/guides/getting_started_command_line.rst b/guides/getting_started_command_line.rst index daa36f91d..59e50cbae 100644 --- a/guides/getting_started_command_line.rst +++ b/guides/getting_started_command_line.rst @@ -21,7 +21,7 @@ Installing ESPHome is very easy. All you need to do is have `Python pip install esphome Alternatively, there’s also a Docker image available for easy -installation (the Docker hub image is only available for amd64 right now; if you have +installation (the Docker hub image is only available for AMD64 right now; if you have an RPi, please install ESPHome through ``pip`` or use :doc:`the Hass.io add-on `: .. code-block:: bash @@ -85,7 +85,7 @@ the device via USB and type the following command (replacing You should see ESPHome validating the configuration and telling you about potential problems. Then ESPHome will proceed to compile and upload the custom firmware. You will also see that ESPHome created a -new folder with the name of your node. This is a new platformio project +new folder with the name of your node. This is a new PlatformIO project that you can modify afterwards and play around with. If you are running docker on Linux you can add ``--device=/dev/ttyUSB0`` diff --git a/guides/migrate_espurna.rst b/guides/migrate_espurna.rst index 07818bc77..b8bf74da6 100644 --- a/guides/migrate_espurna.rst +++ b/guides/migrate_espurna.rst @@ -6,7 +6,7 @@ Migrating from ESPurna :image: espurna.png Migrating from previous ESPurna setups is very easy. You just need to have -esphome create a binary for you and then upload that in the ESPurna web interface. +ESPHome create a binary for you and then upload that in the ESPurna web interface. Getting Binary -------------- diff --git a/index.rst b/index.rst index 1ef1c0aa2..23f97c1e7 100644 --- a/index.rst +++ b/index.rst @@ -146,7 +146,7 @@ Sensor Components Template Sensor, components/sensor/template, description.svg Total Daily Energy, components/sensor/total_daily_energy, sigma.svg TSL2561, components/sensor/tsl2561, tsl2561.jpg - Tx20, components/sensor/tx20, tx20.jpg + 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.svg @@ -290,7 +290,7 @@ Climate Components Bang Bang Controller, components/climate/bang_bang, air-conditioner.svg Custom Climate, components/climate/custom, language-cpp.svg Coolix IR Remote, components/climate/coolix, air-conditioner.svg - Tcl112 IR Remote, components/climate/tcl112, air-conditioner.svg + TCL112 IR Remote, components/climate/tcl112, air-conditioner.svg Yashima IR Remote, components/climate/yashima, air-conditioner.svg Misc Components @@ -328,7 +328,7 @@ Additional Custom Components .. imgtable:: Generic Custom Component, custom/custom_component, language-cpp.svg - Custom I2C Component, custom/i2c, language-cpp.svg + Custom I²C Component, custom/i2c, language-cpp.svg Custom SPI Component, custom/spi, language-cpp.svg Custom UART Component, custom/uart, language-cpp.svg From af01734499959ad73b2f1c1751a65f6e8f0ede94 Mon Sep 17 00:00:00 2001 From: declanshanaghy Date: Sun, 10 May 2020 12:29:49 -0700 Subject: [PATCH 060/108] Adding example of how to use a buzzer (#570) * Adding example of how to use a buzzer * Making sub-sections --- components/output/ledc.rst | 37 +++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) diff --git a/components/output/ledc.rst b/components/output/ledc.rst index 1a72e29bd..03b15614a 100644 --- a/components/output/ledc.rst +++ b/components/output/ledc.rst @@ -12,6 +12,9 @@ of the ESP32 as an output component. The frequency range of LEDC is from 10Hz to 40MHz - however, higher frequencies require a smaller bit depth which means the output is not that accurate for frequencies above ~300kHz. +Example Usage For a Light +************************* + .. code-block:: yaml # Example configuration entry @@ -26,6 +29,40 @@ bit depth which means the output is not that accurate for frequencies above ~300 output: gpio_19 name: "Kitchen Light" +Example Usage For a Piezo Buzzer +******************************** + +.. code-block:: yaml + + # Configure the output + output: + - platform: ledc + ###################################################### + # One buzzer leg connected to GPIO12, the other to GND + ###################################################### + pin: GPIO12 + id: buzzer + + # Example usage in an automation + on_press: + then: + ###################################################### + # Must be turned on before setting frequency & level + ###################################################### + - output.turn_on: buzzer + ###################################################### + # Frequency sets the wave size + ###################################################### + - output.ledc.set_frequency: + id: buzzer + frequency: "1000Hz" + ###################################################### + # level sets the %age time the PWM is on + ###################################################### + - output.set_level: + id: buzzer + level: "50%" + Configuration variables: ------------------------ From bcce3ec4d6ef765920783a8d909edeb47c2f7be0 Mon Sep 17 00:00:00 2001 From: Rsan <53981858+deltazerorsan@users.noreply.github.com> Date: Sun, 24 May 2020 01:38:57 +0200 Subject: [PATCH 061/108] Deleted Warning because the component is already tested (#615) --- components/gps.rst | 8 -------- 1 file changed, 8 deletions(-) diff --git a/components/gps.rst b/components/gps.rst index 1d127aef4..4aeda2ee4 100644 --- a/components/gps.rst +++ b/components/gps.rst @@ -5,14 +5,6 @@ GPS Component :description: Instructions for setting up GPS integration in ESPHome. :image: crosshair-gps.png -.. warning:: - - This component has not been fully tested yet, if you have this component - and can confirm it works, please create a quick new issue here - https://github.com/esphome/issues/ - - Thanks! - The ``gps`` component allows you to connect GPS modules to your ESPHome project. Any GPS module that uses the standardized NMEA communication protocol will work. From 6845a9a867381aef93e93a35d5fec39bac429fa0 Mon Sep 17 00:00:00 2001 From: Jeff Rescignano Date: Sat, 23 May 2020 19:40:04 -0400 Subject: [PATCH 062/108] Update datasheet URL on SHTCX page (#598) * Update datasheet URL on SHTCX page * Update datasheet URL on SHTCX page (2) --- components/sensor/shtcx.rst | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/components/sensor/shtcx.rst b/components/sensor/shtcx.rst index 3fa205778..af4716ca5 100644 --- a/components/sensor/shtcx.rst +++ b/components/sensor/shtcx.rst @@ -6,10 +6,10 @@ SHTCx Temperature+Humidity Sensors :image: shtc3.jpg The ``shtcx`` sensor platform Temperature+Humidity sensor allows you to use your Sensiron SHTC1 -(`datasheet `__, +(`datasheet `__, `Sensirion STHC1 `__) and the newer SHTC3 -(`datasheet `__, +(`datasheet `__, `SparkFun`_ ) sensors with ESPHome. The :ref:`I²C Bus ` is required to be set up in your configuration for this sensor to work. From 3bb0ebb80c9b76ffbf89938c8646e196d5426e06 Mon Sep 17 00:00:00 2001 From: Jeff Rescignano Date: Sat, 23 May 2020 19:41:07 -0400 Subject: [PATCH 063/108] Update datagram URL on TX20 page (#599) --- components/sensor/tx20.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/components/sensor/tx20.rst b/components/sensor/tx20.rst index a6ab6d251..d0aee418c 100644 --- a/components/sensor/tx20.rst +++ b/components/sensor/tx20.rst @@ -81,6 +81,6 @@ See Also - :apiref:`tx20/tx20.h` - `Amazon Tx20 `__ - `La Crosse Tx23 `__ -- `Datagram Tx20 `__ +- `Datagram Tx20 `__ - `Datagram Tx23 `__- - :ghedit:`Edit` From 61b5493282a5d83cbf398b0b335d9eae3c35ea5d Mon Sep 17 00:00:00 2001 From: Jeff Rescignano Date: Sat, 23 May 2020 19:41:48 -0400 Subject: [PATCH 064/108] Update datasheet URL on SCD30 page (#600) --- components/sensor/scd30.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/components/sensor/scd30.rst b/components/sensor/scd30.rst index 8be518940..d4b1c622b 100644 --- a/components/sensor/scd30.rst +++ b/components/sensor/scd30.rst @@ -6,7 +6,7 @@ SCD30 CO₂, Temperature and Relative Humidty Sensor :image: scd30.jpg The ``scd30`` sensor platform allows you to use your Sensiron SCD30 CO₂ -(`datasheet `__) sensors with ESPHome. +(`datasheet `__) sensors with ESPHome. The :ref:`I²C Bus ` is required to be set up in your configuration for this sensor to work. .. figure:: images/scd30.jpg From 734e4ec2a9b0123f42ce3121da129fc475711493 Mon Sep 17 00:00:00 2001 From: Jeff Rescignano Date: Sat, 23 May 2020 19:43:25 -0400 Subject: [PATCH 065/108] Update datasheet URL on STS3X page (#602) --- components/sensor/sts3x.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/components/sensor/sts3x.rst b/components/sensor/sts3x.rst index 1dff572e0..b02002d15 100644 --- a/components/sensor/sts3x.rst +++ b/components/sensor/sts3x.rst @@ -6,7 +6,7 @@ STS3X Temperature Sensor :image: sts3x.jpg The ``sts3x`` sensor platform Temperature sensor allows you to use your Sensiron STS30-DIS, STS31-DIS or STS35-DIS -(`datasheet `__, +(`datasheet `__, `Sensirion STS3x `__) sensors with ESPHome. The :ref:`I²C Bus ` is required to be set up in your configuration for this sensor to work. From 402dc8a08a0fb3ec65cf2440111b0179b3100c4f Mon Sep 17 00:00:00 2001 From: Jeff Rescignano Date: Sat, 23 May 2020 19:44:25 -0400 Subject: [PATCH 066/108] Update datasheet URL on SPG30 page (#601) --- components/sensor/sgp30.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/components/sensor/sgp30.rst b/components/sensor/sgp30.rst index 1b7b671c9..14e4efe52 100644 --- a/components/sensor/sgp30.rst +++ b/components/sensor/sgp30.rst @@ -6,7 +6,7 @@ SGP30 CO₂ and Volatile Organic Compound Sensor :image: sgp30.png The ``sgp30`` sensor platform allows you to use your Sensiron SGP30 multi-pixel gas -(`datasheet `__) sensors or the SVM30 breakout-boards (`product page `__) with ESPHome. +(`datasheet `__) sensors or the SVM30 breakout-boards (`product page `__) with ESPHome. The :ref:`I²C Bus ` is required to be set up in your configuration for this sensor to work. .. figure:: images/eco2-tvoc.png From 6d64ecb9e83f8e7e815c25c648ac64aa6cb88919 Mon Sep 17 00:00:00 2001 From: Jeff Rescignano Date: Sat, 23 May 2020 19:45:33 -0400 Subject: [PATCH 067/108] Update Home Assistant custom compontent URL on contributing guide page (#603) --- guides/contributing.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/guides/contributing.rst b/guides/contributing.rst index 209a10bfc..97813b3e9 100644 --- a/guides/contributing.rst +++ b/guides/contributing.rst @@ -414,7 +414,7 @@ by the integration developer. .. note:: Additionally, ESPHome has a ``custom_components`` mechanism like - `Home Assistant does `__. + `Home Assistant does `__. So for testing you can also create a new ``custom_components`` folder inside of your ESPHome config folder and create new integrations in there. From 96d692c6a55fd257bb220da61287c01823469db6 Mon Sep 17 00:00:00 2001 From: Jeff Rescignano Date: Sat, 23 May 2020 19:46:01 -0400 Subject: [PATCH 068/108] Update WaveShare E-Paper URL on WaveShare E-Paper page (#597) --- components/display/waveshare_epaper.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/components/display/waveshare_epaper.rst b/components/display/waveshare_epaper.rst index d589ac4db..ca32b1a39 100644 --- a/components/display/waveshare_epaper.rst +++ b/components/display/waveshare_epaper.rst @@ -6,7 +6,7 @@ Waveshare E-Paper Display :image: waveshare_epaper.jpg The ``waveshare_epaper`` display platform allows you to use -some E-Paper displays sold by `Waveshare `__ +some E-Paper displays sold by `Waveshare `__ with ESPHome. The 2.13" `TTGO module `__ with an ESP32 on the board is supported as well. 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. From 01da5ff334489809cc23a4f32354fea3a7f3cb71 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Michael=20Nie=C3=9F?= <3942794+mniess@users.noreply.github.com> Date: Sun, 24 May 2020 01:50:45 +0200 Subject: [PATCH 069/108] Fix copy/paste error (#574) --- components/time.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/components/time.rst b/components/time.rst index e088646f8..bf5317bf7 100644 --- a/components/time.rst +++ b/components/time.rst @@ -252,7 +252,7 @@ Configuration variables: - **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 hours). Range is from 1 to 31. + 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). From 0a3dfcae899e52e674a92ac8d019b43582f64b88 Mon Sep 17 00:00:00 2001 From: Michael Klamminger <6277211+m1ch@users.noreply.github.com> Date: Sun, 24 May 2020 16:30:36 +0200 Subject: [PATCH 070/108] Update pulse_counter.rst (#609) * Update pulse_counter.rst Add information about available pulse counter channels * Update components/sensor/pulse_counter.rst Co-authored-by: Guillermo Ruffino Co-authored-by: Guillermo Ruffino --- components/sensor/pulse_counter.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/components/sensor/pulse_counter.rst b/components/sensor/pulse_counter.rst index 1aff20a75..73e25f5fe 100644 --- a/components/sensor/pulse_counter.rst +++ b/components/sensor/pulse_counter.rst @@ -10,7 +10,7 @@ on any pin. On the ESP32, this sensor is even highly accurate because it's using the hardware `pulse counter peripheral `__ -on the ESP32. +on the ESP32. However, due to the use of the pulse counter peripheral, a maximum of 8 channels can be used! .. figure:: images/pulse-counter.png :align: center From 644b9ea0d2db411ed80895d5e765119e9a9340b4 Mon Sep 17 00:00:00 2001 From: Marc Egli Date: Mon, 25 May 2020 17:05:03 +0200 Subject: [PATCH 071/108] Add smart intercom blogpost (#621) Extend blog post list with an ESPhome related blogpost I wrote some time ago. It uses remote_receiver/remote_transmitter to intergrate with an existing bus intercom and will likely work with some adaptations with other intercoms. --- guides/diy.rst | 1 + 1 file changed, 1 insertion(+) diff --git a/guides/diy.rst b/guides/diy.rst index aa5b45b1c..eec771e2c 100644 --- a/guides/diy.rst +++ b/guides/diy.rst @@ -37,6 +37,7 @@ Blog Posts & Videos - `Detecting Sound with ESP8266 `__ by `Thibault Maekelbergh `__ - `SW420 Vibration Sensor with Remote Notifications `__ by :ghuser:`rmooreID` - `DIY Irrigation Controller (with Internal Scheduler + Lovelace UI) `__ by :ghuser:`BrianHanifin` +- `Smart Intercom `__ by `Marc Egli `__ Custom Components & Code ------------------------ From 7edcfae2dd7d6c6cbfc9fe6765ad12772e27cc83 Mon Sep 17 00:00:00 2001 From: Aalian Khan <39784853+AalianKhan@users.noreply.github.com> Date: Tue, 26 May 2020 18:52:23 -0400 Subject: [PATCH 072/108] Minor spelling (#622) --- components/sensor/custom.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/components/sensor/custom.rst b/components/sensor/custom.rst index 6b1a898c9..4e7885b0a 100644 --- a/components/sensor/custom.rst +++ b/components/sensor/custom.rst @@ -89,7 +89,7 @@ the latest values. However, there's a small problem with that approach: ``loop()`` gets called very often (about 60 times per second). If we would publish a new state each time that method is called we would quickly make the node unresponsive. -So this fix this, we will use an alternative class to :apiclass:`Component`: :apiclass:`PollingComponent`. +So lets fix this, we will use an alternative class to :apiclass:`Component`: :apiclass:`PollingComponent`. This class is for situations where you have something that should get called repeatedly with some **update interval**. In the code above, we can simply replace :apiclass:`Component` by :apiclass:`PollingComponent` and ``loop()`` by a special method ``update()`` which will be called with an interval we can specify. From d88c424291780ca57a5394ab124ae36b127ebcd8 Mon Sep 17 00:00:00 2001 From: nldroid <13297091+nldroid@users.noreply.github.com> Date: Wed, 27 May 2020 00:57:18 +0200 Subject: [PATCH 073/108] Added NEO Coolcam (#496) The addition can help people creating the right config for the NEO Coolcam wifi smart plug --- .../brilliant-mirabella-genio-smart-plugs.rst | 89 +++++++++++++++++++ 1 file changed, 89 insertions(+) diff --git a/cookbook/brilliant-mirabella-genio-smart-plugs.rst b/cookbook/brilliant-mirabella-genio-smart-plugs.rst index 6935f27c6..69bc395d8 100644 --- a/cookbook/brilliant-mirabella-genio-smart-plugs.rst +++ b/cookbook/brilliant-mirabella-genio-smart-plugs.rst @@ -350,6 +350,95 @@ Check the following page for calibrating the measurements: :ref:`sensor-filter-c on_turn_off: - switch.turn_on: green_led +3.5 NEO Coolcam wifi smart plug +******************************* + +.. code-block:: yaml + + substitutions: + plug_name: coolcam_plug1 + # Higher value gives lower watt readout + current_res: "0.00221" + # Lower value gives lower voltage readout + voltage_div: "800" + + esphome: + name: ${plug_name} + platform: ESP8266 + board: esp8285 + + wifi: + ssid: 'WIFI' + password: 'WIFIPASS' + + logger: + + api: + + ota: + + binary_sensor: + - platform: gpio + pin: + number: GPIO0 + inverted: True + name: "${plug_name}_button" + on_press: + - switch.toggle: relay + + switch: + - platform: gpio + name: "${plug_name}_LED_Red" + pin: GPIO13 + inverted: True + restore_mode: ALWAYS_OFF + id: red_led + + - platform: gpio + name: "${plug_name}_Relay" + pin: GPIO14 + restore_mode: ALWAYS_ON + id: relay + + on_turn_on: + - switch.turn_on: red_led + + on_turn_off: + - switch.turn_off: red_led + + sensor: + - platform: hlw8012 + sel_pin: + number: GPIO12 + inverted: True + cf_pin: GPIO04 + cf1_pin: GPIO05 + current_resistor: ${current_res} + voltage_divider: ${voltage_div} + current: + name: "${plug_name}_Amperage" + unit_of_measurement: A + voltage: + name: "${plug_name}_Voltage" + unit_of_measurement: V + power: + name: "${plug_name}_Wattage" + unit_of_measurement: W + id: "${plug_name}_Wattage" + change_mode_every: 8 + update_interval: 10s + - platform: total_daily_energy + name: "${plug_name}_Total Daily Energy" + power_id: "${plug_name}_Wattage" + filters: + # Multiplication factor from W to kW is 0.001 + - multiply: 0.001 + unit_of_measurement: kWh + + # Extra sensor to keep track of plug uptime + - platform: uptime + name: ${plug_name}_Uptime SensorPreformatted text + 4. Adding to Home Assistant --------------------------- From 4de002b4a9ca1938f2ce78c429b45fb0448f2c0e Mon Sep 17 00:00:00 2001 From: rradar <34582688+rradar@users.noreply.github.com> Date: Wed, 27 May 2020 00:07:55 +0100 Subject: [PATCH 074/108] pzemac energy support (#514) https://github.com/esphome/esphome/pull/933 --- components/sensor/pzemac.rst | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/components/sensor/pzemac.rst b/components/sensor/pzemac.rst index b2ef2faec..a56d1e8bf 100644 --- a/components/sensor/pzemac.rst +++ b/components/sensor/pzemac.rst @@ -44,10 +44,12 @@ to some pins on your board and the baud rate set to 9600. - platform: pzemac current: name: "PZEM-004T V3 Current" - voltage: - name: "PZEM-004T V3 Voltage" power: name: "PZEM-004T V3 Power" + voltage: + name: "PZEM-004T V3 Voltage" + energy: + name: "PZEM-004T V3 Energy" frequency: name: "PZEM-004T V3 Frequency" power_factor: @@ -63,6 +65,8 @@ Configuration variables: :ref:`Sensor `. - **voltage** (*Optional*): Use the voltage value of the sensor in volts. All options from :ref:`Sensor `. +- **energy** (*Optional*): Use the (active) energy value of the sensor in watt*hours. All options from + :ref:`Sensor `. - **frequency** (*Optional*): Use the frequency value of the sensor in hertz. All options from :ref:`Sensor `. - **power_factor** (*Optional*): Use the power factor value of the sensor. From 0f04817d10bab47c68cfd28e0ace8903339e24db Mon Sep 17 00:00:00 2001 From: Guillermo Ruffino Date: Tue, 26 May 2020 20:08:57 -0300 Subject: [PATCH 075/108] Revert "pzemac energy support (#514)" (#623) This reverts commit 4de002b4a9ca1938f2ce78c429b45fb0448f2c0e. --- components/sensor/pzemac.rst | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/components/sensor/pzemac.rst b/components/sensor/pzemac.rst index a56d1e8bf..b2ef2faec 100644 --- a/components/sensor/pzemac.rst +++ b/components/sensor/pzemac.rst @@ -44,12 +44,10 @@ to some pins on your board and the baud rate set to 9600. - platform: pzemac current: name: "PZEM-004T V3 Current" - power: - name: "PZEM-004T V3 Power" voltage: name: "PZEM-004T V3 Voltage" - energy: - name: "PZEM-004T V3 Energy" + power: + name: "PZEM-004T V3 Power" frequency: name: "PZEM-004T V3 Frequency" power_factor: @@ -65,8 +63,6 @@ Configuration variables: :ref:`Sensor `. - **voltage** (*Optional*): Use the voltage value of the sensor in volts. All options from :ref:`Sensor `. -- **energy** (*Optional*): Use the (active) energy value of the sensor in watt*hours. All options from - :ref:`Sensor `. - **frequency** (*Optional*): Use the frequency value of the sensor in hertz. All options from :ref:`Sensor `. - **power_factor** (*Optional*): Use the power factor value of the sensor. From c396cf696c96970011a2227671925f88e65a42a4 Mon Sep 17 00:00:00 2001 From: Guyohms <44414660+Guyohms@users.noreply.github.com> Date: Tue, 26 May 2020 19:40:01 -0400 Subject: [PATCH 076/108] Changed miflora platforms (#586) Modified the example to reflect the 1.14 breaking change --- components/esp32_ble_tracker.rst | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/components/esp32_ble_tracker.rst b/components/esp32_ble_tracker.rst index 1b8a12382..04cff6a44 100644 --- a/components/esp32_ble_tracker.rst +++ b/components/esp32_ble_tracker.rst @@ -25,7 +25,7 @@ for information on how you can find out the MAC address of a device and track it - platform: ble_rssi mac_address: AC:37:43:77:5F:4C name: "BLE Google Home Mini RSSI value" - - platform: xiaomi_miflora + - platform: xiaomi_hhccjcy01 mac_address: 94:2B:FF:5C:91:61 temperature: name: "Xiaomi MiFlora Temperature" @@ -37,7 +37,7 @@ for information on how you can find out the MAC address of a device and track it name: "Xiaomi MiFlora Soil Conductivity" battery_level: name: "Xiaomi MiFlora Battery Level" - - platform: xiaomi_mijia + - platform: xiaomi_lywsdcgq mac_address: 7A:80:8E:19:36:BA temperature: name: "Xiaomi MiJia Temperature" From 8dc3a2dfc35d64f5df8516e28391ed81ea9d242f Mon Sep 17 00:00:00 2001 From: igg Date: Thu, 28 May 2020 15:09:48 -0700 Subject: [PATCH 077/108] Update docs to reflect ssd1327 support (#500) * Added ssd1327 image * Added ssd1327 changes for 128x128 displays * Revert "Added ssd1327 image" This reverts commit f3cf3745adda006206385f3ebe3a5fe82816bbff. * fixed travis complaints Co-authored-by: Ilya Goldberg --- components/display/ssd1325.rst | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/components/display/ssd1325.rst b/components/display/ssd1325.rst index 3efbc4572..e513468c4 100644 --- a/components/display/ssd1325.rst +++ b/components/display/ssd1325.rst @@ -1,8 +1,8 @@ -SSD1325 OLED Display -==================== +SSD1325/7 OLED Display +====================== .. seo:: - :description: Instructions for setting up SSD1325 OLED display drivers. + :description: Instructions for setting up SSD1325/7 OLED display drivers. :image: ssd1325.jpg .. _ssd1325-spi: @@ -12,7 +12,8 @@ Usage The ``ssd1325_spi`` display platform allows you to use SSD1325 (`datasheet `__, -`Adafruit `__) +`Adafruit `__) and SSD1327 (`datasheet `__, +`Waveshare `__) displays with ESPHome. Note that this component is for displays that are connected via the 4-Wire :ref:`SPI bus `. .. figure:: images/ssd1325-full.jpg @@ -47,6 +48,7 @@ Configuration variables: - ``SSD1325 128x32`` (SSD1325 with 128 columns and 32 rows) - ``SSD1325 128x64`` + - ``SSD1327 128x128`` (note SSD1327 instead of SSD1325) - ``SSD1325 96x16`` - ``SSD1325 64x48`` From fa929e7a81db15064d83501f1baa90ead6ca53a2 Mon Sep 17 00:00:00 2001 From: gitolicious <26963495+gitolicious@users.noreply.github.com> Date: Fri, 29 May 2020 00:26:26 +0200 Subject: [PATCH 078/108] Typo: NEC -> Sony (#624) --- components/remote_receiver.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/components/remote_receiver.rst b/components/remote_receiver.rst index 5fa6134c2..59b82f7a8 100644 --- a/components/remote_receiver.rst +++ b/components/remote_receiver.rst @@ -63,7 +63,7 @@ Automations: NEC remote code has been decoded. A variable ``x`` of type :apiclass:`remote_base::NECData` is passed to the automation for use in lambdas. - **on_sony** (*Optional*, :ref:`Automation `): An automation to perform when a - NEC remote code has been decoded. A variable ``x`` of type :apiclass:`remote_base::SonyData` + Sony remote code has been decoded. A variable ``x`` of type :apiclass:`remote_base::SonyData` is passed to the automation for use in lambdas. - **on_raw** (*Optional*, :ref:`Automation `): An automation to perform when a raw remote code has been decoded. A variable ``x`` of type ``std::vector`` From e947978cdc3fb62ece6fed881918f046cd4f8208 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Stefan=20L=C3=A4sser?= Date: Fri, 29 May 2020 00:27:37 +0200 Subject: [PATCH 079/108] Not every nodeMCU board supports 12V (#626) It could destroy the board if users just try and power it using 12V. There are boards that don't support 12V but only up to 5V. --- devices/nodemcu_esp8266.rst | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/devices/nodemcu_esp8266.rst b/devices/nodemcu_esp8266.rst index 7e3397197..e5db35b69 100644 --- a/devices/nodemcu_esp8266.rst +++ b/devices/nodemcu_esp8266.rst @@ -49,8 +49,7 @@ Note that in certain conditions you *can* use the pins marked as ``INTERNAL`` in not be pulled low on startup. You can, however, still use them as output pins. - ``A0``: This pin can be used as a normal GPIO pin (like ``D1`` etc) but additionally can measure voltages from 0 to 1.0V using the :doc:`/components/sensor/adc`. -- ``VIN``: This board can be powered by an external power supply by using this pin. Supply a voltage between - 3.3V to 12V to this pin and the linear voltage regulator on the board will power the board. +- ``VIN``: This board can be powered by an external power supply by using this pin. Supply a voltage depends on the board you use. Some boards support up to 12V, some up to 5V. - ``ENABLE``/``RESET``: When these pins are triggered, the board resets. The difference between the pins is how they can handle voltages above 3.3V. From 51656bcd2a5b814de0e27f2e7305e6a62213f6b9 Mon Sep 17 00:00:00 2001 From: Guillermo Ruffino Date: Fri, 5 Jun 2020 00:03:09 -0300 Subject: [PATCH 080/108] Revert "Update docs to reflect ssd1327 support (#500)" (#634) This reverts commit 8dc3a2dfc35d64f5df8516e28391ed81ea9d242f. --- components/display/ssd1325.rst | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/components/display/ssd1325.rst b/components/display/ssd1325.rst index e513468c4..3efbc4572 100644 --- a/components/display/ssd1325.rst +++ b/components/display/ssd1325.rst @@ -1,8 +1,8 @@ -SSD1325/7 OLED Display -====================== +SSD1325 OLED Display +==================== .. seo:: - :description: Instructions for setting up SSD1325/7 OLED display drivers. + :description: Instructions for setting up SSD1325 OLED display drivers. :image: ssd1325.jpg .. _ssd1325-spi: @@ -12,8 +12,7 @@ Usage The ``ssd1325_spi`` display platform allows you to use SSD1325 (`datasheet `__, -`Adafruit `__) and SSD1327 (`datasheet `__, -`Waveshare `__) +`Adafruit `__) displays with ESPHome. Note that this component is for displays that are connected via the 4-Wire :ref:`SPI bus `. .. figure:: images/ssd1325-full.jpg @@ -48,7 +47,6 @@ Configuration variables: - ``SSD1325 128x32`` (SSD1325 with 128 columns and 32 rows) - ``SSD1325 128x64`` - - ``SSD1327 128x128`` (note SSD1327 instead of SSD1325) - ``SSD1325 96x16`` - ``SSD1325 64x48`` From 42f30198ad4111780e18db275b0c3633348c7b79 Mon Sep 17 00:00:00 2001 From: Otto Winter Date: Fri, 5 Jun 2020 13:04:23 +0200 Subject: [PATCH 081/108] Bump version to v1.14.4 --- Doxygen | 2 +- Makefile | 2 +- _static/version | 2 +- changelog/v1.14.0.rst | 80 +++++++++++++++++++++++++++++++++++++++++++ conf.py | 2 +- 5 files changed, 84 insertions(+), 4 deletions(-) diff --git a/Doxygen b/Doxygen index 86ab46934..f215b5b10 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.14.3 +PROJECT_NUMBER = 1.14.4 # 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 d721b1c43..e5b1dbd10 100644 --- a/Makefile +++ b/Makefile @@ -1,5 +1,5 @@ ESPHOME_PATH = ../esphome -ESPHOME_REF = v1.14.3 +ESPHOME_REF = v1.14.4 .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 282f354f4..6bd55113b 100644 --- a/_static/version +++ b/_static/version @@ -1 +1 @@ -1.14.3 \ No newline at end of file +1.14.4 \ No newline at end of file diff --git a/changelog/v1.14.0.rst b/changelog/v1.14.0.rst index e13899a63..f4933069e 100644 --- a/changelog/v1.14.0.rst +++ b/changelog/v1.14.0.rst @@ -185,6 +185,86 @@ Release 1.14.3 - November 17 - esphome: Revert ESP32 BLE Tracker defaults :esphomepr:`863` - esphome: Change ESP8266 default wifi output power :esphomepr:`862` +Release 1.14.4 - June 5 +----------------------- + +- docs: Added Android Beacon MQTT app :docspr:`417` by :ghuser:`turbo-lab` +- esphome: fix the problem of missing part of advertising packet when activ… :esphomepr:`868` by :ghuser:`warpzone` +- docs: dfplayer updates :docspr:`421` by :ghuser:`glmnet` +- docs: Fix time id conflict :docspr:`418` by :ghuser:`guiguid` +- docs: Cookbook for Sonoff Light Switches :docspr:`407` by :ghuser:`bensuffolk` +- esphome: fix climate_ir on receive optional :esphomepr:`897` by :ghuser:`glmnet` +- esphome: Fix MQTT logs Int or String expected Python 3 :esphomepr:`898` +- esphome: web_server call setup_controller :esphomepr:`899` +- esphome: Ignore ESP32 Camera unknown framesizes :esphomepr:`901` +- esphome: Update ESP32 BLE ADV parse to match BLE spec :esphomepr:`904` +- esphome: Add ESP8266 core v2.6.2 :esphomepr:`905` +- docs: Add doc for color correction of rgb* lights :docspr:`431` by :ghuser:`nickw444` +- docs: Use .timestamp instead of .time in time docs :docspr:`435` by :ghuser:`davidjb` +- docs: DIY Examples : Added SW420 Vibration Sensor with Remote Notifications :docspr:`436` by :ghuser:`rmooreID` +- docs: Fix broken link :docspr:`437` by :ghuser:`richrd` +- docs: Update getting_started_command_line.rst :docspr:`461` by :ghuser:`CyanoFresh` +- docs: Added degree symbol output on ~ for MAX7219 :docspr:`376` by :ghuser:`cyberplant` +- docs: change "tracker" to "presence" :docspr:`465` by :ghuser:`spattinson` +- docs: On_sunrise was listed twice in description. :docspr:`464` by :ghuser:`Mechotronic` +- docs: Patch 3 :docspr:`460` by :ghuser:`Valcob` +- docs: fixed non working example :docspr:`381` by :ghuser:`danibjor` +- docs: Added my custom component, now with correct syntax :docspr:`454` by :ghuser:`nldroid` +- docs: faq reboot_timeout :docspr:`472` by :ghuser:`glmnet` +- docs: my9231->bit_depth: parameter name and sonoff B1 :docspr:`489` by :ghuser:`anduchs` +- docs: New DIY project about Cat Feeder :docspr:`439` by :ghuser:`rubengargar` +- docs: Update diy.rst :docspr:`493` by :ghuser:`brianhanifin` +- docs: Add my ESPHome configs :docspr:`492` by :ghuser:`nuttytree` +- docs: Brightness feature not included in doc. :docspr:`445` by :ghuser:`tubalainen` +- docs: remove apostrophe :docspr:`504` by :ghuser:`perjury` +- docs: Add UART-based Mitsibishi HeatPump Component :docspr:`506` by :ghuser:`geoffdavis` +- docs: Update pzemac.rst :docspr:`495` by :ghuser:`Francisk0` +- docs: Fix link syntax :docspr:`507` by :ghuser:`geoffdavis` +- docs: Typo fix :docspr:`498` by :ghuser:`napieraj` +- docs: Fix some typos in Sonoff basic light switch :docspr:`480` by :ghuser:`kaykayehnn` +- docs: Wrong IC :docspr:`499` by :ghuser:`Tuckie` +- docs: small mistype fix :docspr:`477` by :ghuser:`trylika` +- docs: Update sonoff.rst :docspr:`470` by :ghuser:`TBobsin` +- docs: Update sonoff-t1-3.rst :docspr:`497` by :ghuser:`RockBomber` +- docs: remove uppercase allowed in names :docspr:`487` by :ghuser:`truglodite` +- docs: Update ssd1306.rst :docspr:`481` by :ghuser:`Valcob` +- docs: Update board for Sonoff and link to Tasmota :docspr:`484` by :ghuser:`sillyfrog` +- docs: Update migrate_sonoff_tasmota.rst :docspr:`483` by :ghuser:`jasonehines` +- docs: added rgbww light using pwm driver :docspr:`482` by :ghuser:`morph027` +- docs: add a note about the log level of dump: all :docspr:`475` by :ghuser:`drewp` +- docs: ifan02 cookbook :docspr:`218` by :ghuser:`quazzie` +- docs: Add documentation for cwww and rgbww constant_brightness variables. :docspr:`530` by :ghuser:`kroimon` +- docs: remove link to Adafruit :docspr:`531` by :ghuser:`ebaschiera` +- docs: Revert "Add documentation for cwww and rgbww constant_brightness vari… :docspr:`539` by :ghuser:`glmnet` +- docs: Add Stepper Motor blinds to diy examples :docspr:`534` by :ghuser:`icarome` +- docs: Update sonoff.rst :docspr:`549` by :ghuser:`MrZetor` +- docs: Improve LEDC documentation :docspr:`557` by :ghuser:`Skaronator` +- docs: Update wifi.rst :docspr:`562` by :ghuser:`kbouchard111` +- docs: Add unit_of_measurement to make graphing happens :docspr:`569` by :ghuser:`deftdawg` +- docs: Simple grammar change. :docspr:`578` by :ghuser:`mnaz` +- docs: Fix typos :docspr:`561` by :ghuser:`mje-nz` +- docs: Adding example of how to use a buzzer :docspr:`570` by :ghuser:`declanshanaghy` +- docs: Deleted Warning because the component is already tested :docspr:`615` by :ghuser:`deltazerorsan` +- docs: Update datasheet URL on SHTCX page :docspr:`598` by :ghuser:`JeffResc` +- docs: Update datagram URL on TX20 page :docspr:`599` by :ghuser:`JeffResc` +- docs: Update datasheet URL on SCD30 page :docspr:`600` by :ghuser:`JeffResc` +- docs: Update datasheet URL on STS3X page :docspr:`602` by :ghuser:`JeffResc` +- docs: Update datasheet URL on SGP30 page :docspr:`601` by :ghuser:`JeffResc` +- docs: Update Home Assistant custom component URL on contributing guide page :docspr:`603` by :ghuser:`JeffResc` +- docs: Update WaveShare E-Paper URL on WaveShare E-Paper page :docspr:`597` by :ghuser:`JeffResc` +- docs: Fix copy/paste error :docspr:`574` by :ghuser:`mniess` +- docs: Update pulse_counter.rst :docspr:`609` by :ghuser:`m1ch` +- docs: Add smart intercom blogpost :docspr:`621` by :ghuser:`frog32` +- docs: Minor spelling :docspr:`622` by :ghuser:`AalianKhan` +- docs: Added NEO Coolcam :docspr:`496` by :ghuser:`nldroid` +- docs: pzemac energy support :docspr:`514` by :ghuser:`rradar` +- docs: Revert "pzemac energy support" :docspr:`623` by :ghuser:`glmnet` +- docs: Changed miflora platforms :docspr:`586` by :ghuser:`Guyohms` +- docs: Update docs to reflect ssd1327 support :docspr:`500` by :ghuser:`igg` +- docs: Typo: NEC -> Sony :docspr:`624` by :ghuser:`gitolicious` +- docs: Not every nodeMCU board supports 12V :docspr:`626` by :ghuser:`Laess3r` +- docs: Revert "Update docs to reflect ssd1327 support" :docspr:`634` by :ghuser:`glmnet` + Notable Changes & New Features ------------------------------ diff --git a/conf.py b/conf.py index c39f2f6d4..e9a49f117 100644 --- a/conf.py +++ b/conf.py @@ -72,7 +72,7 @@ author = 'Otto Winter' # The short X.Y version. version = '1.14' # The full version, including alpha/beta/rc tags. -release = '1.14.3' +release = '1.14.4' # The language for content autogenerated by Sphinx. Refer to documentation # for a list of supported languages. From 43324a96f8e161e36dd0e9fcdb93cf1247e845fc Mon Sep 17 00:00:00 2001 From: Otto Winter Date: Fri, 5 Jun 2020 13:49:09 +0200 Subject: [PATCH 082/108] Disable Google Analytics --- _static/disqus.js | 13 ------------- _templates/layout.html | 2 -- 2 files changed, 15 deletions(-) delete mode 100644 _static/disqus.js diff --git a/_static/disqus.js b/_static/disqus.js deleted file mode 100644 index ce9c941e8..000000000 --- a/_static/disqus.js +++ /dev/null @@ -1,13 +0,0 @@ -(function() { - var d = document, s = d.createElement('script'); - s.src = 'https://esphomelib.disqus.com/embed.js'; - s.setAttribute('data-timestamp', +new Date()); - (d.head || d.body).appendChild(s); -})(); - -var disqus_config = function () { - let disqusThread = document.getElementById("disqus_thread"); - if (disqusThread === null) - return; - this.page.identifier = disqusThread.getAttribute('data-disqus-identifier'); -}; diff --git a/_templates/layout.html b/_templates/layout.html index 8ce772ba2..27e04b79a 100644 --- a/_templates/layout.html +++ b/_templates/layout.html @@ -32,8 +32,6 @@ A new version has been release since you last visited this page: {{ release }} 🎉 View Changelog - -