From 0ad211f102d6a9ce4cddcc01a0f32708d6b815f3 Mon Sep 17 00:00:00 2001 From: Otto Winter Date: Mon, 11 Mar 2019 13:18:15 +0100 Subject: [PATCH 1/9] Add endstop cover guide --- cookbook/dual-r2-cover.rst | 19 ++++--- cookbook/endstop-cover.rst | 113 +++++++++++++++++++++++++++++++++++++ cookbook/garage-door.rst | 2 - index.rst | 3 +- 4 files changed, 125 insertions(+), 12 deletions(-) create mode 100644 cookbook/endstop-cover.rst diff --git a/cookbook/dual-r2-cover.rst b/cookbook/dual-r2-cover.rst index bc118b02d..b2f65a9ff 100644 --- a/cookbook/dual-r2-cover.rst +++ b/cookbook/dual-r2-cover.rst @@ -31,13 +31,13 @@ for some motors. .. code-block:: yaml esphome: - name: cover - platform: ESP8266 - board: esp01_1m + name: cover + platform: ESP8266 + board: esp01_1m wifi: - ssid: '***' - password: '***' + ssid: '***' + password: '***' api: @@ -48,7 +48,7 @@ for some motors. binary_sensor: - platform: gpio pin: - number: 10 + number: GPIO10 inverted: true id: button on_press: @@ -75,10 +75,10 @@ for some motors. switch: - platform: gpio - pin: 12 + pin: GPIO12 id: open - platform: gpio - pin: 5 + pin: GPIO5 id: close cover: @@ -102,7 +102,8 @@ for some motors. stop_action: - switch.turn_off: open - switch.turn_off: close - optimistic: true + optimistic: True + assumed_state: True See Also -------- diff --git a/cookbook/endstop-cover.rst b/cookbook/endstop-cover.rst new file mode 100644 index 000000000..2c1a0469b --- /dev/null +++ b/cookbook/endstop-cover.rst @@ -0,0 +1,113 @@ +Template Cover with Endstops +============================ + +.. seo:: + :description: An example of how to integrate covers with endstops in ESPHome. + :image: window-open.jpg + +The following is an example configuration for controlling covers (like window blinds etc) +with ESPHome. This guide assumes that the cover is set up with two endstops at the top +and the bottom. When these endstops are reached, the cover will automatically stop. + +To protect the motors from spinning indefinitely (in case an endstop fails) the motors +also have a maximum run time - after 3 minutes they will automatically turn off even if the +endstop is not reached. + +ESPHome uses Home Assistant's cover architecture model which has two states: "OPEN" or +"CLOSED". We will map OPEN to "cover is at the top endstop" and CLOSE to "cover is at the bottom". + +.. code-block:: yaml + + switch: + # The switch that turns the UP direction on + - platform: gpio + pin: D1 + id: up_pin + # Use interlocking to keep at most one of the two directions on + interlock: &interlock_group [up_pin, down_pin] + # If ESP reboots, do not attempt to restore switch state + restore_mode: always off + + # The switch that turns the DOWN direction on + - platform: gpio + pin: D2 + id: down_pin + interlock: *interlock_group + restore_mode: always off + + + binary_sensor: + # The top endstop + - platform: gpio + pin: D4 + id: top_endstop + on_press: + # Acknowledge that the cover is open + - cover.template.publish: + id: my_cover + state: OPEN + # Stop the cover motors + - cover.stop: my_cover + + - platform: gpio + pin: D5 + id: bottom_endstop + on_press: + # Acknowledge that the cover is closed + - cover.template.publish: + id: my_cover + state: CLOSED + # Stop the cover motors + - cover.stop: my_cover + + cover: + - platform: template + name: "My Endstop Cover" + id: my_cover + open_action: + - switch.turn_on: up_pin + # Failsafe: Turn off motors after 3min if endstop not reached. + - delay: 3 min + - cover.stop: my_cover + close_action: + - switch.turn_on: down_pin + - delay: 3 min + - cover.stop: my_cover + stop_action: + - switch.turn_off: up_pin + - switch.turn_off: down_pin + optimistic: True + assumed_state: True + +You can then optionally also add manual controls to the cover with three buttons: +open, close, and stop. + +.. code-block:: yaml + + binary_sensor: + # [...] - Previous binary sensors + - platform: gpio + id: open_button + pin: D3 + on_press: + - cover.open: my_cover + - platform: gpio + id: close_button + pin: D6 + on_press: + - cover.close: my_cover + - platform: gpio + id: stop_button + pin: D7 + on_press: + - cover.stop: my_cover + +See Also +-------- + +- :doc:`/guides/automations` +- :doc:`/components/cover/template` +- :doc:`dual-r2-cover` +- :ghedit:`Edit` + +.. disqus:: diff --git a/cookbook/garage-door.rst b/cookbook/garage-door.rst index e23d6162f..b55d09195 100644 --- a/cookbook/garage-door.rst +++ b/cookbook/garage-door.rst @@ -9,8 +9,6 @@ The following is a possible configuration file for garage doors that are control One for opening and another one for closing the garage door. When either one of them is turned on for a short period of time, the close/open action begins. - - .. code-block:: yaml switch: diff --git a/index.rst b/index.rst index 41a9c0df0..774ee867d 100644 --- a/index.rst +++ b/index.rst @@ -278,7 +278,7 @@ Cookbook .. imgtable:: - Garage Door, cookbook/garage-door, window-open.svg + Endstop Cover, cookbook/endstop-cover, window-open.svg PIR Sensor, cookbook/pir, pir.jpg Relay, cookbook/relay, relay.jpg BRUH Multisensor, cookbook/bruh, bruh.png @@ -290,6 +290,7 @@ Cookbook H801 LED Controller, cookbook/h801, h801.jpg Time & Temperature on OLED Display, cookbook/display_time_temp_oled, display_time_temp_oled_2.jpg Mirabella Genio Bulb, cookbook/mirabella-genio-bulb, cookbook-mirabella-genio-b22-rgbw.jpg + Garage Door, cookbook/garage-door, window-open.svg Do you have other awesome automations or cool setups? Please feel free to add them to the documentation for others to copy. See :doc:`Contributing `. From cfb597899d33e3e90f5d75eb478647a4c2f6c63f Mon Sep 17 00:00:00 2001 From: Otto Winter Date: Mon, 11 Mar 2019 13:31:12 +0100 Subject: [PATCH 2/9] Add warning about MQTT with native API --- components/mqtt.rst | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/components/mqtt.rst b/components/mqtt.rst index 949cfcc25..4ebc51f5c 100644 --- a/components/mqtt.rst +++ b/components/mqtt.rst @@ -12,6 +12,12 @@ just be able to copy over the `MQTT section `__ of your Home Assistant configuration. +.. warning:: + + When enabling MQTT and you do *not* use the "native API" for Home Assistant, you must + remove the ``api:`` line from your ESPHome configuration, otherwise the ESP will + reboot every 5 minutes because no client connected to the native API. + .. code-block:: yaml # Example configuration entry From a83bb41b3b9e5b18030eaa4e035504d7fee46a56 Mon Sep 17 00:00:00 2001 From: Otto Winter Date: Mon, 11 Mar 2019 19:59:52 +0100 Subject: [PATCH 3/9] Add supporters page --- _static/custom.css | 22 ++++++ conf.py | 4 +- guides/faq.rst | 12 ---- guides/supporters.rst | 141 ++++++++++++++++++++++++++++++++++++++ images/donate-patreon.png | Bin 0 -> 6579 bytes images/donate-paypal.png | Bin 0 -> 33361 bytes images/heart.svg | 1 + images/index.rst | 3 + index.rst | 3 +- 9 files changed, 171 insertions(+), 15 deletions(-) create mode 100644 guides/supporters.rst create mode 100644 images/donate-patreon.png create mode 100644 images/donate-paypal.png create mode 100644 images/heart.svg diff --git a/_static/custom.css b/_static/custom.css index 44d607455..6dad41e47 100644 --- a/_static/custom.css +++ b/_static/custom.css @@ -82,3 +82,25 @@ img.index-shield { height: 26px; margin-top: 10px; } + +.supporters-row { + display: flex; +} + +.supporters-column { + flex: 50%; + text-align: center; + padding-left: 10px; + padding-right: 10px; +} + +.supporters-row .supporters-column:first-child { + border-right: 1px solid #a0a0a0; +} + +.supporters-column img { + width: 75%; + display: block; + margin-left: auto; + margin-right: auto; +} diff --git a/conf.py b/conf.py index bb2d56556..f40d66539 100644 --- a/conf.py +++ b/conf.py @@ -20,7 +20,7 @@ # import os # import sys # sys.path.insert(0, os.path.abspath('.')) - +import hashlib import os import subprocess from sphinx import addnodes @@ -114,7 +114,7 @@ html_theme = 'alabaster' # html_baseurl = os.getenv('BASE_URL', 'https://esphome.io') with open('_static/custom.css', 'rb') as f: - custom_css_hash = "{:08X}".format(hash(f.read()) % 2**32) + custom_css_hash = hashlib.md5(f.read()).hexdigest()[:8] html_theme_options = { # 'logo': 'logo-full.png', diff --git a/guides/faq.rst b/guides/faq.rst index d4e1de6c6..d07c7fd24 100644 --- a/guides/faq.rst +++ b/guides/faq.rst @@ -273,18 +273,6 @@ And a docker compose file looks like this: 1. Enable Avahi on both subnets. 2. Enable UDP traffic from ESPHome node's subnet to 224.0.0.251/32 on port 5353. -Donations ---------- - -I invest a lot of time into this project, so if you like ESPHome and want to -support the project, donations are very welcome :) - -You can donate to me via PayPal. Other donation options are being -explored. https://www.paypal.me/ottowinter - -(Please do not donate for specific features as I cannot guarantee I will -be able to implement a feature because of complexity or other problems.) - See Also -------- diff --git a/guides/supporters.rst b/guides/supporters.rst new file mode 100644 index 000000000..9312dfc5c --- /dev/null +++ b/guides/supporters.rst @@ -0,0 +1,141 @@ +Supporters & Contributors +========================= + +**Hi! I'm Otto Winter, the author and main developer of ESPHome.** + +Developing ESPHome takes a lot of time. There's a lot of things that go +into developing and maintaining an open-source project: from developing new features, fixing bugs, +answering questions to maintaining servers, preparing releases and moderating discussions. +And of course all of the hardware for new features has to be bought too. I'm a student +so I really appreciate donations :) + +**You can support ESPHome's development** by becoming a Patron or a one-time contribution +with PayPal. + +.. raw:: html + + +
+
+

Support Regularly 💫

+ Become A Patron +

+ Become a patron for this project. +

+
+
+

One-Time Donation

+ Donate with PayPal +

+ Make a one-time donation via PayPal. +

+
+
+ +Patrons +------- + +People that support ESPHome's development over `Patreon `__. +You guys are awesome! + +- No patrons yet :( Become the first one here: https://www.patreon.com/ottowinter + + +Contributors +------------ + +ESPHome is an open-source project, and everybody can contribute to it to make this +project awesome. This list contains a list of people who have submitted patches +that have made it into the `ESPHome organization's `__ repositories. + +Author & Main Developer +*********************** + +- `Otto Winter (@OttoWinter) `__ - 1416 contributions + +Contributors +************ + +(in alphabetical order) + +- `2016for (@2016for) `__ - 1 contribution +- `Alexandre Danault (@AlexDanault) `__ - 1 contribution +- `Bierchermuesli (@Bierchermuesli) `__ - 1 contribution +- `David De Sloovere (@DavidDeSloovere) `__ - 3 contributions +- `FrengerH (@FrengerH) `__ - 2 contributions +- `Jimmy Hedman (@HeMan) `__ - 5 contributions +- `Fredrik Lindqvist (@Landrash) `__ - 1 contribution +- `Marco (@Melkor82) `__ - 2 contributions +- `Mynasru (@Mynasru) `__ - 2 contributions +- `Jérôme W. (@RomRider) `__ - 1 contribution +- `Taigar2015 (@Taigar2015) `__ - 1 contribution +- `Spencer Hachmeister (@TheHackmeister) `__ - 1 contribution +- `TheJulianJES (@TheJulianJES) `__ - 2 contributions +- `Florian Gareis (@TheZoker) `__ - 7 contributions +- `Rick van Hattem (@WoLpH) `__ - 1 contribution +- `Johan Bloemberg (@aequitas) `__ - 6 contributions +- `Anders (@ahd71) `__ - 1 contribution +- `Adriaan Peeters (@apeeters) `__ - 3 contributions +- `Florian Mösch (@badbadc0ffee) `__ - 4 contributions +- `balk77 (@balk77) `__ - 1 contribution +- `Brandon Davidson (@brandond) `__ - 11 contributions +- `chris-jennings (@chris-jennings) `__ - 1 contribution +- `James Crook (@cooljimy84) `__ - 1 contribution +- `Corban Mailloux (@corbanmailloux) `__ - 5 contributions +- `cryptelli (@cryptelli) `__ - 1 contribution +- `Dirk Jahnke (@dirkj) `__ - 1 contribution +- `Jiang Sheng (@doskoi) `__ - 1 contribution +- `Robert Schütz (@dotlambda) `__ - 3 contributions +- `Drew Perttula (@drewp) `__ - 1 contribution +- `Anders Persson (@emwap) `__ - 1 contribution +- `erazor666 (@erazor666) `__ - 1 contribution +- `escoand (@escoand) `__ - 5 contributions +- `Malte Franken (@exxamalte) `__ - 2 contributions +- `Fabian Affolter (@fabaff) `__ - 10 contributions +- `Franck Nijhof (@frenck) `__ - 57 contributions +- `The Gitter Badger (@gitter-badger) `__ - 1 contribution +- `Antoine GRÉA (@grea09) `__ - 3 contributions +- `Boris Hajduk (@hajdbo) `__ - 2 contributions +- `Ivan Kravets (@ivankravets) `__ - 1 contribution +- `Jan Pieper (@janpieper) `__ - 2 contributions +- `JbLb (@jblb) `__ - 1 contribution +- `jdads1 (@jdads1) `__ - 1 contribution +- `Jesse Hills (@jesserockz) `__ - 3 contributions +- `John Erik Halse (@johnerikhalse) `__ - 1 contribution +- `JonnyaiR (@jonnyair) `__ - 2 contributions +- `Ken Davidson (@kwdavidson) `__ - 1 contribution +- `Jeppe Ladefoged (@ladefoged81) `__ - 2 contributions +- `Lazar Obradovic (@lobradov) `__ - 3 contributions +- `Lewis Juggins (@lwis) `__ - 1 contribution +- `Magnus Øverli (@magnusoverli) `__ - 1 contribution +- `meijerwynand (@meijerwynand) `__ - 2 contributions +- `mjoshd (@mjoshd) `__ - 2 contributions +- `Matt N. (@mnoorenberghe) `__ - 1 contribution +- `mtl010957 (@mtl010957) `__ - 2 contributions +- `Michiel van Turnhout (@mvturnho) `__ - 2 contributions +- `Kevin Uhlir (@n0bel) `__ - 1 contribution +- `nnmalex (@nnmalex) `__ - 1 contribution +- `Greg Johnson (@notgwj) `__ - 1 contribution +- `Nuno Sousa (@nunofgs) `__ - 1 contribution +- `Oscar Bolmsten (@oscar-b) `__ - 3 contributions +- `Paul Nicholls (@pauln) `__ - 1 contribution +- `per1234 (@per1234) `__ - 2 contributions +- `pixiandreas (@pixiandreas) `__ - 1 contribution +- `DK (@poldim) `__ - 1 contribution +- `puuu (@puuu) `__ - 5 contributions +- `Tommy Jonsson (@quazzie) `__ - 1 contribution +- `r-jordan (@r-jordan) `__ - 1 contribution +- `Pär Stålberg (@rabbadab) `__ - 1 contribution +- `Robbie Page (@rorpage) `__ - 1 contribution +- `Emanuele Tessore (@setola) `__ - 1 contribution +- `sherbang (@sherbang) `__ - 4 contributions +- `thubot (@thubot) `__ - 1 contribution +- `tubalainen (@tubalainen) `__ - 2 contributions +- `Xuming Feng (@voicevon) `__ - 2 contributions +- `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 Mon Mar 11 18:53:06 2019 UTC.* diff --git a/images/donate-patreon.png b/images/donate-patreon.png new file mode 100644 index 0000000000000000000000000000000000000000..5443ec96319d128bc1f2c8cf348f97c4565c5cc1 GIT binary patch literal 6579 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 \ No newline at end of file diff --git a/images/index.rst b/images/index.rst index ce073c487..2e0839683 100644 --- a/images/index.rst +++ b/images/index.rst @@ -24,3 +24,6 @@ that will only be used in raw HTML and thus not auto-included. .. image:: logo-text.svg +.. image:: donate-patreon.png + +.. image:: donate-paypal.png diff --git a/index.rst b/index.rst index 774ee867d..d9ef85823 100644 --- a/index.rst +++ b/index.rst @@ -17,7 +17,7 @@ ESPHome GitHub Discord Twitter - Donate + Donate .. _guides: @@ -39,6 +39,7 @@ Guides Contributing, guides/contributing, github-circle.svg Changelog, changelog/index, new-box.svg + Supporters, guides/supporters, heart.svg .. _devices: From 1f841a84f59ac8fd009367ae26c1ad6cc3e0c3a0 Mon Sep 17 00:00:00 2001 From: Otto Winter Date: Mon, 11 Mar 2019 20:13:02 +0100 Subject: [PATCH 4/9] Update supporters.rst --- guides/supporters.rst | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/guides/supporters.rst b/guides/supporters.rst index 9312dfc5c..38c1195b2 100644 --- a/guides/supporters.rst +++ b/guides/supporters.rst @@ -92,7 +92,6 @@ Contributors - `escoand (@escoand) `__ - 5 contributions - `Malte Franken (@exxamalte) `__ - 2 contributions - `Fabian Affolter (@fabaff) `__ - 10 contributions -- `Franck Nijhof (@frenck) `__ - 57 contributions - `The Gitter Badger (@gitter-badger) `__ - 1 contribution - `Antoine GRÉA (@grea09) `__ - 3 contributions - `Boris Hajduk (@hajdbo) `__ - 2 contributions @@ -138,4 +137,4 @@ Contributors - `Vladimir Eremin (@yottatsa) `__ - 1 contribution - `YuanL.Lee (@yuanl) `__ - 1 contribution -*This page was last updated Mon Mar 11 18:53:06 2019 UTC.* +*This page was last updated Mon Mar 11 19:13:02 2019 UTC.* From 7e3edb6f6953dcd2b41370adb14139e8fa52a551 Mon Sep 17 00:00:00 2001 From: Boris Hajduk Date: Wed, 13 Mar 2019 05:07:16 +0800 Subject: [PATCH 5/9] Update bme280_environment cookbook (#149) The absolute humidity needs at least accuracy_decimals:1, and 2 is better for stable climates. It also gets better automatic discovery my Home Assistant (graph) --- cookbook/bme280_environment.rst | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/cookbook/bme280_environment.rst b/cookbook/bme280_environment.rst index bea9513c9..3ace2801d 100644 --- a/cookbook/bme280_environment.rst +++ b/cookbook/bme280_environment.rst @@ -47,7 +47,8 @@ After validating the sensor is working, we can proceed and add some formulas. const float r = 8.31447215; // Universal gas constant J/mol/K return (6.112 * powf(2.718281828, (17.67 * id(bme280_temperature).state) / (id(bme280_temperature).state + 243.5)) * id(bme280_humidity).state * mw) / - ((273.15 + id(bme280_temperature).state) * r); // in grams/m^3 + ((273.15 + id(bme280_temperature).state) * r); // in micrograms/m^3 + accuracy_decimals: 2 update_interval: 15s Altitude and absolute humidity: From 1a9222722b34f40ad651c13f27e1a10e009adaa2 Mon Sep 17 00:00:00 2001 From: Otto Winter Date: Wed, 13 Mar 2019 09:26:04 +0100 Subject: [PATCH 6/9] Update supporters --- guides/supporters.rst | 4 ++-- svg2png/heart.png | Bin 0 -> 21890 bytes 2 files changed, 2 insertions(+), 2 deletions(-) create mode 100644 svg2png/heart.png diff --git a/guides/supporters.rst b/guides/supporters.rst index 38c1195b2..c273d24d8 100644 --- a/guides/supporters.rst +++ b/guides/supporters.rst @@ -38,8 +38,8 @@ Patrons People that support ESPHome's development over `Patreon `__. You guys are awesome! -- No patrons yet :( Become the first one here: https://www.patreon.com/ottowinter - +- Paul Morley +- Nick Rout Contributors ------------ diff --git a/svg2png/heart.png b/svg2png/heart.png new file mode 100644 index 0000000000000000000000000000000000000000..d1d93e6731ae8452514d57ead0b25c69ce085f4d GIT binary patch literal 21890 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

Rck-dLlam--oC zy1QufoS2e{os1_Z@nw-6e(q}L&Yht&=+T=+LN`_t+9Yq>?+-UHZ~iaP^LqsjRfd6^ zjrr)koafW5ZcR99IaPbSoc93_p z(Y=aE`+y(Jh(dMp7AC9>6OOqG2#=(z&fIf?+EuXkVOB}?)wnxv=V zBK+LV1kiA9w!YQNO$H|z^*@v%d72!tmV(T9_$r(MUVRTyw@7;U{Zq~Rvuw6(X+bvq za!8vB=QEgspuUfB@}m_3?v;TFqvmPw{C0WA9v6D zU+-B%J4*PJ!+69QJYwOKf2;;lZoyACe*!B3>JXp0(h;6{kMJ89Dd*?8m=S7i^3bom z-~S+G*i&l8c#PA;nbhGx=mggj&`OsPqj-}6YQ2i}7cH7Hx%tKFIcsg1oLeBFDc&=` zY&H~c=#-(Sg<6TC(G^8$!{#XJ!pJo+E{d~*oEBlvBbw{~z5M?_D>EeKcs8VN?X(3) Qu;0|G Date: Thu, 14 Mar 2019 02:35:04 +1100 Subject: [PATCH 7/9] Cookbook Guide for Brilliant / Mirabella Genio Smart Plugs (#195) * Cookbook Guide for Brilliant / Mirabella Genio Smart Plugs * Fix documentation error * Fix linting errors * Simplified configuration and remove invalid component --- .../brilliant-mirabella-genio-smart-plugs.rst | 240 ++++++++++++++++++ ...abella-genio-smart-plugs-homeassistant.jpg | Bin 0 -> 7989 bytes .../brilliant-mirabella-genio-smart-plugs.jpg | Bin 0 -> 11994 bytes ...-brilliant-mirabella-genio-smart-plugs.jpg | Bin 0 -> 7534 bytes index.rst | 1 + 5 files changed, 241 insertions(+) create mode 100644 cookbook/brilliant-mirabella-genio-smart-plugs.rst create mode 100644 cookbook/images/brilliant-mirabella-genio-smart-plugs-homeassistant.jpg create mode 100644 cookbook/images/brilliant-mirabella-genio-smart-plugs.jpg create mode 100644 images/cookbook-brilliant-mirabella-genio-smart-plugs.jpg diff --git a/cookbook/brilliant-mirabella-genio-smart-plugs.rst b/cookbook/brilliant-mirabella-genio-smart-plugs.rst new file mode 100644 index 000000000..3702401ff --- /dev/null +++ b/cookbook/brilliant-mirabella-genio-smart-plugs.rst @@ -0,0 +1,240 @@ +Brilliant / Mirabella Genio Smart Plugs +======================================= + +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 + :width: 50.0% + +Originally intended to be used with their companion apps once flashed using `tuya-convert `__ ESPHome generated +firmware can be uploaded allowing you to control the smart plugs via Home Assistant. + +1. Create the ESPHome Firmware +------------------------------ + +#. Refer to either :doc:`/guides/getting_started_command_line` or :doc:`/guides/getting_started_hassio` before moving onto the next step. +#. Select a plug configuration below based on the plug/s you have and copy all of the text in the code block and paste into your + ``name_of_esphome_configuration.yaml`` file. +#. Compile the firmware, again depending on your chosen setup refer to the guides in the first point. + +2. Flashing +----------- + +2.1 Prerequisites +***************** + +#. 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 `__. + b. Raspberry Pi 3B/B+. + +.. note:: + + As per the `tuya-convert documentation `__: + + Any Linux with a Wifi adapter which can act as an Access Point should also work. Please note that we have tested the Raspberry Pi with clean installations + 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. + Android devices will work.** + +2.2 Installing the OS +********************* + +#. It's recommended to read the documentation provided by the Raspberry Pi Foundation on the best way to flash the OS to the microSD card depending on your + platform - `Installing operating system images `__. +#. After you've flashed the microSD card browse to the "boot" partition and add a blank file called "ssh" **(without any extension)** which will enable the + SSH server upon first boot, extended information on this step can be found `here + `__. +#. Plug the microSD card into the Raspberry Pi, connect network cable and power, the Raspberry Pi will start to boot. + +2.3 Connecting to the Pi via SSH +******************************** + +#. Download and install `Putty `__. +#. Open Putty. +#. Enter the IP of Raspberry Pi in the box that says "Host Name", leaving the port set to 22 (default for SSH). A list of recommended ways can be found `here + `__, but the easiest is to download and use `Fing `__ + (`Android `__ / `iOS + `__). +#. In the "Saved Sessions" input box, name the Raspberry Pi connection and then press "Save". +#. Select your new saved session from the list. +#. Press "Open". + +2.4 Configuring the Pi +********************** + +#. In the putty window login with the **pi** as the user and **raspberry** for the password. +#. Type ``sudo apt-get update && sudo apt-get dist-upgrade -y`` and wait for the upgrades to install. +#. Type ``sudo apt-get install git`` and wait for it to install. + +2.5 Setup and Install tuya-convert +********************************** + +#. In the putty window type ``git clone https://github.com/ct-Open-Source/tuya-convert`` press enter and wait while the repository is cloned. +#. Type ``cd tuya-convert`` and press enter. +#. Type ``./install_prereq.sh`` press enter and wait as the script gathers all the required components needed to function. + +2.6 Upload ESPHome Firmware using SFTP +************************************** + +#. Download `FileZilla `__ or `WinSCP `__ or use your preferred FTP + client. +#. Depending on the program you need to connect to the Pi using the IP address as the hostname and the username and password the same as you used to connect + 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. + +2.7 Use tuya-convert to install ESPHome Firmware +************************************************ + +#. 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 connect your smart plug and turn it on. It should automatically enter pairing mode, if it doesn't follow the instructions below: + + * Brilliant `(PDF Manual) `__ + + * To connect the Smart WiFi Plug to your WiFi press and hold the manual control button for about 5 seconds until you hear a click. Let go of the button + as soon as you hear the **click**. Then press button once again to activate blinking. **The red indicator light should now blink rapidly (2 times per + second)**. + + * Mirabella `(PDF Manual) `__ + + * To do this, ensure your plug is on (the indicator light should be blue), hold the power button down for 5 seconds until you hear a click, let go of the + power button and then press the button once to activate. + +#. Press enter on your putty window to start the flash process and wait. If the connection is successful you should see a large amount of scrolling text, this + is the script backing up the factory shipped firmware. +#. Once the process is complete you can type ``curl http://10.42.42.42/flashURL?url=http://10.42.42.1/files/firmware.bin`` +#. The plug will restart and if everything is working correctly after a few seconds you should be able to press the button triggering the relay and turning the + blue led on. + +3. Smart Plug Configurations +---------------------------- + +Thanks to the existing work by `@ideasman69 `__ and +`afalzon `__ +which these adaptions created by `@cryptelli `__ are based on. + + +3.1 Brilliant Smart Plug +************************ + +.. code-block:: yaml + + esphome: + name: brilliant_smart_plug + platform: ESP8266 + board: esp01_1m + + wifi: + ssid: 'WIFI' + password: 'WIFIPASS' + + logger: + + api: + + ota: + + binary_sensor: + - platform: gpio + pin: + number: 14 + mode: INPUT_PULLUP + inverted: true + name: "Power Button" + on_press: + - switch.toggle: relay + + - platform: status + name: "Status" + + switch: + - platform: gpio + id: red_led + pin: + number: GPIO12 + inverted: true + + - platform: gpio + name: "Brilliant Smart Plug" + pin: GPIO5 + id: relay + + # Turn off red LED to show blue when turned on + on_turn_on: + - switch.turn_off: red_led + + # Turns on the red LED once the plug is turned off. Stock plug doesn't do this, to restore normal behavior remove the on_turn_on and on_turn_off + # blocks. + on_turn_off: + - switch.turn_on: red_led + + +3.2 Mirabella Genio Wi-Fi 1 USB Adaptor +*************************************** + +.. code-block:: yaml + + esphome: + name: mirabella_genio_smart_plug + platform: ESP8266 + board: esp01_1m + + wifi: + ssid: 'WIFI' + password: 'WIFIPASS' + + logger: + + api: + + ota: + + binary_sensor: + - platform: gpio + pin: + number: GPIO13 + mode: INPUT_PULLUP + inverted: true + name: "Power Button" + on_press: + - switch.toggle: relay + - platform: status + name: Status + + switch: + - platform: gpio + name: "Mirabella Genio Smart Plug" + pin: GPIO12 + id: relay + +4. Adding to Home Assistant +--------------------------- + +You can now add your smart plug to home assistant via the configurations page, look for 'ESPHome' under the Integrations option and click 'Configure'. + +.. figure:: images/brilliant-mirabella-genio-smart-plugs-homeassistant.jpg + :align: center + :width: 50.0% + +See Also +-------- + +- :doc:`/components/switch/index` +- :doc:`/components/binary_sensor/index` +- :doc:`/components/light/index` +- :doc:`/components/light/monochromatic` +- :doc:`/components/output/index` +- :doc:`/components/output/esp8266_pwm` +- :doc:`/guides/automations` +- :ghedit:`Edit` + +.. disqus:: diff --git a/cookbook/images/brilliant-mirabella-genio-smart-plugs-homeassistant.jpg b/cookbook/images/brilliant-mirabella-genio-smart-plugs-homeassistant.jpg new file mode 100644 index 0000000000000000000000000000000000000000..d8c4e8918662aa591e4ba3c76b718abd388553bb GIT binary patch literal 7989 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 Mtxx0Mw%#oM50oJAX#fBK literal 0 HcmV?d00001 diff --git a/cookbook/images/brilliant-mirabella-genio-smart-plugs.jpg b/cookbook/images/brilliant-mirabella-genio-smart-plugs.jpg new file mode 100644 index 0000000000000000000000000000000000000000..1e32b4daeb67eab04429a14dd1f458f3f9be1d47 GIT binary patch literal 11994 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 b^kHltJ)rew>oZQzjLK)6>di1ZSor?{TX#?{ literal 0 HcmV?d00001 diff --git a/images/cookbook-brilliant-mirabella-genio-smart-plugs.jpg b/images/cookbook-brilliant-mirabella-genio-smart-plugs.jpg new file mode 100644 index 0000000000000000000000000000000000000000..f426e3243abb1194fdd34cdce3ecfc7732da62f8 GIT binary patch literal 7534 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 Zh`. From 547b281d6cb8b01377081ade61c9d70215d6182c Mon Sep 17 00:00:00 2001 From: Otto Winter Date: Wed, 13 Mar 2019 18:25:05 +0100 Subject: [PATCH 8/9] Update supporters.rst --- guides/supporters.rst | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/guides/supporters.rst b/guides/supporters.rst index c273d24d8..a0e532180 100644 --- a/guides/supporters.rst +++ b/guides/supporters.rst @@ -38,8 +38,10 @@ Patrons People that support ESPHome's development over `Patreon `__. You guys are awesome! -- Paul Morley +- Kenvase - Nick Rout +- Paul Morley + Contributors ------------ @@ -51,7 +53,7 @@ that have made it into the `ESPHome organization's ` Author & Main Developer *********************** -- `Otto Winter (@OttoWinter) `__ - 1416 contributions +- `Otto Winter (@OttoWinter) `__ - 1423 contributions Contributors ************ @@ -82,7 +84,7 @@ Contributors - `chris-jennings (@chris-jennings) `__ - 1 contribution - `James Crook (@cooljimy84) `__ - 1 contribution - `Corban Mailloux (@corbanmailloux) `__ - 5 contributions -- `cryptelli (@cryptelli) `__ - 1 contribution +- `cryptelli (@cryptelli) `__ - 2 contributions - `Dirk Jahnke (@dirkj) `__ - 1 contribution - `Jiang Sheng (@doskoi) `__ - 1 contribution - `Robert Schütz (@dotlambda) `__ - 3 contributions @@ -94,7 +96,7 @@ Contributors - `Fabian Affolter (@fabaff) `__ - 10 contributions - `The Gitter Badger (@gitter-badger) `__ - 1 contribution - `Antoine GRÉA (@grea09) `__ - 3 contributions -- `Boris Hajduk (@hajdbo) `__ - 2 contributions +- `Boris Hajduk (@hajdbo) `__ - 3 contributions - `Ivan Kravets (@ivankravets) `__ - 1 contribution - `Jan Pieper (@janpieper) `__ - 2 contributions - `JbLb (@jblb) `__ - 1 contribution @@ -121,7 +123,7 @@ Contributors - `per1234 (@per1234) `__ - 2 contributions - `pixiandreas (@pixiandreas) `__ - 1 contribution - `DK (@poldim) `__ - 1 contribution -- `puuu (@puuu) `__ - 5 contributions +- `puuu (@puuu) `__ - 6 contributions - `Tommy Jonsson (@quazzie) `__ - 1 contribution - `r-jordan (@r-jordan) `__ - 1 contribution - `Pär Stålberg (@rabbadab) `__ - 1 contribution @@ -137,4 +139,4 @@ Contributors - `Vladimir Eremin (@yottatsa) `__ - 1 contribution - `YuanL.Lee (@yuanl) `__ - 1 contribution -*This page was last updated Mon Mar 11 19:13:02 2019 UTC.* +*This page was last updated Wed Mar 13 17:25:05 2019 UTC.* From a7d0f130dfe484d3f1d2e77bf9d63fcd18c022a0 Mon Sep 17 00:00:00 2001 From: Otto Winter Date: Wed, 13 Mar 2019 18:31:00 +0100 Subject: [PATCH 9/9] Add auto-issue closer --- .github/issue-close-app.yml | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 .github/issue-close-app.yml diff --git a/.github/issue-close-app.yml b/.github/issue-close-app.yml new file mode 100644 index 000000000..3a8ae3b52 --- /dev/null +++ b/.github/issue-close-app.yml @@ -0,0 +1,7 @@ +comment: >- + https://github.com/esphome/esphome-docs/issues/162 +issueConfigs: +- content: + - "OTHERWISE THE ISSUE WILL BE CLOSED AUTOMATICALLY" + +caseInsensitive: false