Merge branch 'current' into next

This commit is contained in:
Otto Winter 2019-10-19 17:07:29 +02:00
commit d2f1c23ebf
No known key found for this signature in database
GPG Key ID: DB66C0BE6013F97E
34 changed files with 370 additions and 167 deletions

View File

@ -8,3 +8,4 @@
## Checklist:
- [ ] Branch: `next` is for changes and new documentation that will go public with the next ESPHome release. Fixes, changes and adjustments for the current release should be created against `current`.
- [ ] Link added in `/index.rst` when creating new documents for new components or cookbook.

View File

@ -7,17 +7,17 @@ Native API Component
:keywords: Native API, ESPHome, Home Assistant
The ESPHome native API is used to communicate with clients directly, with a highly-optimized
network protocol. Currently, only the esphome tool and Home Assistant use this native API.
network protocol. Currently, only the ESPHome tool and Home Assistant use this native API.
After adding an ``api:`` line to your esphome configuration you can go to the Home Assistant
webinterface and navigate to the "Integrations" screen in the "Configuration" panel. Then wait
After adding an ``api:`` line to your ESPHome configuration you can go to the Home Assistant
web interface and navigate to the "Integrations" screen in the "Configuration" panel. Then wait
for the ESPHome device to show up under the discovered section (can take up to 5 minutes) or add
the device manually by clicking "CONFIGURE" on the ESPHome integration and entering
"<NODE_NAME>.local" as the address.
the device manually by choosing "ESPHome" from the integration overview and entering
"<NODE_NAME>.local" or the IP address of the unit in the "Host" field.
The ESPHome native API is based on a custom TCP protocol using protocol buffers. You can find
the protocol data structure definitions here: https://github.com/esphome/esphome/blob/dev/src/esphome/components/api/api.proto
A python library that implements this protocol can be found `here <https://github.com/esphome/aioesphomeapi>`__.
the protocol data structure definitions here: https://github.com/esphome/esphome/blob/dev/esphome/components/api/api.proto
A Python library that implements this protocol is `aioesphomeapi <https://github.com/esphome/aioesphomeapi>`__.
.. code-block:: yaml

View File

@ -50,6 +50,10 @@ Advanced features:
- **mode** (*Optional*): The mode to use for the wakeup source. Must be one of ``ALL_LOW`` (wake up when
all pins go LOW) or ``ANY_HIGH`` (wake up when any pin goes HIGH).
.. note::
Only one deep sleep component may be configured.
.. _deep_sleep-esp32_wakeup_pin_mode:
ESP32 Wakeup Pin Mode
@ -103,11 +107,11 @@ Useful for
You can use this automation to automatically prevent deep sleep when a MQTT message on the topic
``livingroom/ota_mode`` is received. Then, to do the OTA update, just
use a MQTT client to publish a retained MQTT message described above. When the node wakes up again
use a MQTT client to publish a retained MQTT message described below. When the node wakes up again
it will no longer enter deep sleep mode and you can upload your OTA update.
Remember to turn "OTA mode" off again after the OTA update by sending a MQTT message with the payload
``OFF``.
``OFF``. Note that the device won't enter deep sleep again until the next reboot.
.. code-block:: yaml
@ -118,6 +122,7 @@ Useful for
# ...
on_message:
topic: livingroom/ota_mode
payload: 'ON'
then:
- deep_sleep.prevent: deep_sleep_1

View File

@ -315,7 +315,7 @@ Displaying Time
With ESPHome you can also display the current time using the NTP protocol. Please see the example :ref:`here <strftime>`.
Images
^^^^^^
******
.. code-block:: yaml

View File

@ -75,8 +75,8 @@ Configuration variables:
- ``2.13in-ttgo`` (T5_V2.3 tested)
- ``2.70in`` (not tested)
- ``2.90in``
- ``4.20in`` (not tested)
- ``7.50in`` (not tested)
- ``4.20in``
- ``7.50in``
- **busy_pin** (*Optional*, :ref:`Pin Schema <config-pin_schema>`): The BUSY pin. Defaults to not connected.
- **reset_pin** (*Optional*, :ref:`Pin Schema <config-pin_schema>`): The RESET pin. Defaults to not connected.

View File

@ -79,7 +79,7 @@ Frame Settings:
- ``1600x1200`` (UXGA)
- **jpeg_quality** (*Optional*, int): The JPEG quality that the camera should encode images with.
From 10 to 63. Defaults to ``10``.
From 10 (best) to 63 (worst). Defaults to ``10``.
- **contrast** (*Optional*, int): The contrast to apply to the picture, from -2 to 2. Defaults to ``0``.
- **brightness** (*Optional*, int): The brightness to apply to the picture, from -2 to 2. Defaults to ``0``.
@ -170,8 +170,8 @@ Configuration for Wrover Kit Boards
name: My Camera
# ...
Configuration for TTGO T-Camera
-------------------------------
Configuration for TTGO T-Camera V05
-----------------------------------
.. code-block:: yaml
@ -194,6 +194,54 @@ Configuration for TTGO T-Camera
# ...
Configuration for TTGO T-Camera V17
-----------------------------------
.. code-block:: yaml
# Example configuration entry
esp32_camera:
external_clock:
pin: GPIO32
frequency: 20MHz
i2c_pins:
sda: GPIO13
scl: GPIO12
data_pins: [GPIO5, GPIO14, GPIO4, GPIO15, GPIO18, GPIO23, GPIO36, GPIO39]
vsync_pin: GPIO27
href_pin: GPIO25
pixel_clock_pin: GPIO19
# power_down_pin: GPIO26
vertical_flip: true
horizontal_mirror: true
# Image settings
name: My Camera
# ...
Configuration for TTGO T-Journal
--------------------------------
.. code-block:: yaml
# Example configuration entry
esp32_camera:
external_clock:
pin: GPIO27
frequency: 20MHz
i2c_pins:
sda: GPIO25
scl: GPIO23
data_pins: [GPIO17, GPIO35, GPIO34, GPIO5, GPIO39, GPIO18, GPIO36, GPIO19]
vsync_pin: GPIO22
href_pin: GPIO26
pixel_clock_pin: GPIO21
# Image settings
name: My Camera
# ...
See Also
--------

View File

@ -249,7 +249,7 @@ This option behaves differently depending on what the included file is pointing
to the src/ folder.
- If the include string is point at a header file (.h, .hpp, .tcc) - it is copied in the src/ folder
AND included in the main.cpp. This way the lambda code can access it.
- If the include str
.. _esphome-changing_node_name:

View File

@ -20,6 +20,7 @@ put on external ones.
sda: 21
scl: 22
scan: True
id: bus_a
Configuration variables:
------------------------
@ -33,6 +34,29 @@ Configuration variables:
Defaults to ``True``.
- **frequency** (*Optional*, float): Set the frequency the I²C bus should operate on.
Defaults to ``50kHz``. Values are ``50kHz``, ``100kHz``, ``200kHz``, ... ``800kHz``
- **id** (*Optional*, :ref:`config-id`) Manually specify the ID for this I²C bus if you need multiple I²C buses.
.. note::
If the device can support multiple I²C buses (ESP32 has 2) these buses need to be defined as below and sensors need to be setup specifying the correct bus:
.. code-block:: yaml
# Example configuration entry
i2c:
- id: bus_a
sda: 13
scl: 16
scan: True
- id: bus_b
sda: 14
scl: 15
scan: True
# Sensors should be specified as follows
- platform: bme680
i2c_id: bus_b
address: 0x76
# ...
See Also
--------

View File

@ -54,8 +54,8 @@ Possible Hardware UART configurations:
- ``UART0`` - TX: GPIO1, RX: GPIO3
- ``UART0_SWAP`` - TX: GPIO15, RX: GPIO13 (Only on ESP8266)
- ``UART1`` - TX: GPIO2, RX: None (Only on ESP8266)
- ``UART1`` - TX: GPIO9, RX: GPIO10 (Only on ESP832)
- ``UART2`` - TX: GPIO16, RX: GPIO17 (Only on ESP832)
- ``UART1`` - TX: GPIO9, RX: GPIO10 (Only on ESP32)
- ``UART2`` - TX: GPIO16, RX: GPIO17 (Only on ESP32)
.. _logger-log_levels:

View File

@ -34,6 +34,14 @@ Configuration variables:
have more visual artifacts, but can represent much more colors. Defaults to ``1000 Hz``.
- All other options from :ref:`Output <config-output>`.
.. note::
If you previously had Tasmota installed on your device and have just flashed ESPHome onto it,
you may encounter an issue where the PWM output is only fully on or off.
A hard reset fixes the problem - if you have this issue please power cycle the device, that
should fix it.
.. _output-esp8266_pwm-set_frequency_action:
``output.esp8266_pwm.set_frequency`` Action

View File

@ -121,24 +121,6 @@ complete configuration for a Sonoff B1 looks like:
cold_white_color_temperature: 6500 K
warm_white_color_temperature: 2800 K
.. note::
One of the features of the MY9231/MY9291 driver is that the chips
remember their state after a power cycling. Unfortunately, the
state of the driver can not be read. Therefore, if ESPHome can
not restore the previous state, it will result in a mismatch of
the driver output and the internal state (= MQTT state). So you
can configure the behaviour on boot time:
``update_on_boot: True``
On device power up/boot, the light may flash shortly, to the
state before powering off.
``update_on_boot: False``
On device power up/boot, the light show the last state, but the
internal data will not reflect this state. Thus, the first fade
is wrong, as well as the MQTT state.
.. _my9231-output:
Driver Output

View File

@ -162,7 +162,7 @@ This :ref:`action <config-action>` a Sony infrared remote code to a remote trans
.. code-block:: yaml
on_...:
- remote_transmitter.transmitsony:
- remote_transmitter.transmit_sony:
data: 0x123
nbits: 12

View File

@ -33,7 +33,7 @@ required to be set up in your configuration for this sensor to work.
temperature:
name: "Living Room Temperature"
humidity:
name: "Living Room Pressure"
name: "Living Room Humidity"
update_interval: 60s
Configuration variables:

Binary file not shown.

Before

Width:  |  Height:  |  Size: 128 KiB

After

Width:  |  Height:  |  Size: 62 KiB

View File

@ -8,7 +8,7 @@ TCS34725 RGB Color Sensor
The ``tcs34725`` sensor platform allows you to use your TCS34725 RGB color sensors
(`datasheet <https://cdn-shop.adafruit.com/datasheets/TCS34725.pdf>`__,
`Adafruit`_) temperature and pressure sensors with ESPHome. The :ref:`I²C <i2c>` is
`Adafruit`_), color temperature and illuminance sensors with ESPHome. The :ref:`I²C <i2c>` is
required to be set up in your configuration for this sensor to work.
.. figure:: images/tcs34725-full.jpg

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

View File

@ -172,7 +172,7 @@ variable ``output_component1``.
output:
- platform: esp8266_pwm
id: output_warm_white
pin: GPIO14
pin: GPIO13
- platform: esp8266_pwm
id: output_daylight
pin: GPIO5

83
cookbook/teckin_sb50.rst Normal file
View File

@ -0,0 +1,83 @@
TECKIN SB50 LED Bulb
====================
.. seo::
:description: ESPHome configuration for Teckin SB50 LED Bulb.
:image: images/teckin_sb50.jpg
:keywords: Teckin SB50
.. figure:: images/teckin_sb50.jpg
:align: center
: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 <https://github.com/ct-Open-Source/tuya-convert>`__.
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
substitutions:
devicename: <Enter a name for your light here>
esphome:
name: $devicename
platform: ESP8266
board: esp01_1m
wifi:
ssid: !secret wifi_ssid
password: !secret wifi_password
# Enable logging to ESPHome
logger:
# Disable logging to serial
baud_rate: 0
# Enable Home Assistant API
api:
password: !secret api_password
# Setup OTA password
ota:
password: !secret ota_password
# Define output pins
output:
- platform: esp8266_pwm
id: output_red
pin: GPIO4
- platform: esp8266_pwm
id: output_green
pin: GPIO12
- platform: esp8266_pwm
id: output_blue
pin: GPIO14
- platform: esp8266_pwm
id: output_warm_white
pin: GPIO13
- platform: esp8266_pwm
id: output_cold_white
pin: GPIO5
# Define a light entity
light:
- platform: rgbww
name: $devicename
id: $devicename
red: output_red
green: output_green
blue: output_blue
warm_white: output_warm_white
cold_white: output_cold_white
cold_white_color_temperature: 6200 K
warm_white_color_temperature: 2800 K
See Also
--------
- :doc:`/devices/nodemcu_esp8266`
- :doc:`/cookbook/mirabella-genio-bulb`
- :doc:`/components/light/rgb`
- :doc:`/components/output/esp8266_pwm`
- :doc:`/components/binary_sensor/gpio`
- :ghedit:`Edit`

View File

@ -26,10 +26,10 @@ Some notes about the pins on the ESP32:
- ``GPIO0`` is used to determine the boot mode on startup. It should therefore not be pulled LOW
on startup to avoid booting into flash mode. You can, however, still use this as an output pin.
- ``GPIO34``-``GPIO39`` can not be used as outputs (even though GPIO stands for "general purpose input
**output**"...)
**output**"...).
- ``GPIO32``-``GPIO39``: These pins can be used with the :doc:`/components/sensor/adc` to measure
voltages.
- ``GPIO2``: This pin is connected to the blue LED on the board as seen in above picture. It also supports
- ``GPIO2``: This pin is connected to the blue LED on the board. It also supports
the :doc:`touch pad binary sensor </components/binary_sensor/esp32_touch>` like some other
pins.

View File

@ -31,7 +31,7 @@ Some notes on the pins:
- ``GPIO6`` - ``GPIO11``, ``GPIO0``, ``GPIO2`` and ``GPIO15`` are often already used by the internal
flash interface and boot mode detection. So it's best to avoid using these pins.
- ``GPIO17`` additionally has an ADC connected to it. See the :doc:`/components/sensor/adc`
to read out voltages (in the range from 0 to 1.0V) on this pin.
to read voltages (in the range from 0 to 1.0V) on this pin.
.. code-block:: yaml
@ -139,7 +139,7 @@ in the ``boot mode:`` line tells you what mode was selected
ets Jan 8 2013,rst cause:4, boot mode:(3,6)
The first lines when viewing the UART logs might have unrecognized characters. This is
because the ESP8266 bootloader uses a baudrate of 76800, whereas the use program uses 115200.
because the ESP8266 bootloader uses a baudrate of 76800, whereas the program uses 115200.
Reset Causes
------------

View File

@ -28,17 +28,17 @@ you don't have to worry about other kinds of pin numberings, yay!
Pins on the NodeMCU ESP32 development board.
Note that in certain conditions you *can* use the pins marked as ``INTERNAL`` in above image.
Note that in certain conditions you *can* use the pins marked as ``INTERNAL`` in the above image.
- ``GPIO0`` is used to determine the boot mode on startup. It should therefore not be pulled LOW
on startup to avoid booting into flash mode. You can, however, still use this as an output pin.
- ``GPIO34``-``GPIO39`` can not be used as outputs (even though GPIO stands for "general purpose input
**output**"...)
**output**"...).
- ``GPIO32``-``GPIO39``: These pins can be used with the :doc:`/components/sensor/adc` to measure
voltages.
- ``GPIO2``: This pin is connected to the blue LED on the board as seen in above picture. It also supports
the :doc:`touch pad binary sensor </components/binary_sensor/esp32_touch>` like some other
pins.
- ``GPIO2``: This pin is connected to the blue LED on the board as seen in the picture above. It also supports
the :doc:`touch pad binary sensor </components/binary_sensor/esp32_touch>` as do the other
pins marked ``touch`` in the above image.
- ``5V`` is connected to the 5V rail from the USB bus and can be used to power the board. Note that
the UART chip is directly connected to this rail and you therefore **cannot** supply other voltages
into this pin.

View File

@ -11,7 +11,7 @@ the ESPHome wizard asks you for your platform and |nodemcuv2|_ as the board type
.. note::
Most NodeMCU that can be purchased now are version 2 or upwards, if you're using an
Most NodeMCU that can be purchased now are version 2 or upwards. If you're using an
original v1 board, set the board type to |nodemcu|_.
.. |nodemcuv2| replace:: ``nodemcuv2``
@ -30,8 +30,8 @@ the ESPHome wizard asks you for your platform and |nodemcuv2|_ as the board type
The NodeMCU's pin numbering as seen on the board (the ``D0`` etc pins) is different from
the internal pin numbering. For example, the ``D8`` pin number maps to the internal
``GPIO0`` pin. Fortunately ESPHome knows the mapping from the on-board pin numbers
to the internal pin numbering, but you need to prefix the pin numbers with ``D`` as in below
image in order for this automatic mapping to occur.
to the internal pin numbering, but you need to prefix the pin numbers with ``D`` as in
the image below in order for this automatic mapping to occur.
In general, it is best to just use the ``D0``, ``D1``, ... pin numbering to avoid confusion
@ -52,7 +52,7 @@ Note that in certain conditions you *can* use the pins marked as ``INTERNAL`` in
- ``VIN``: This pin can be used to use an external power supply with the board. Supply a voltage from
3.3V to 12V to this pin and the linear voltage regulator on the board will power the board.
- ``ENABLE``/``RESET``: When these pins are triggered, the board resets. The difference between the pins
is how they can handle voltages above 3.3V
is how they can handle voltages above 3.3V.
.. code-block:: yaml

View File

@ -33,7 +33,6 @@ Sonoff RF
GPIO4, Optional sensor
GPIO14, Optional sensor
Sonoff SV
---------
@ -292,6 +291,18 @@ Sonoff S31
See :doc:`/components/sensor/cse7766` for measuring power
Sonoff Mini
-----------
.. pintable::
GPIO0, Button (inverted),
GPIO4, SW Input,
GPIO12, Relay and Red LED,
GPIO13, Blue LED (inverted),
GPIO16, Optional sensor
Shelly 1
--------

View File

@ -21,7 +21,7 @@ Over-The-Air update process.
.. note::
If you've previously installed Sonoff-Tasmota on your Sonoff 4CH, you're in luck 😀
If you've previously installed Sonoff-Tasmota on your Sonoff 4CH, you're in luck 😀.
ESPHome can generate a firmware binary which you can then upload via the
Tasmota web interface. To see how to create this binary, skip to :ref:`sonoff_4ch-creating_firmware`.
@ -33,9 +33,9 @@ interface.
.. warning::
Opening up this device can be very dangerous if not done correctly. While the device is open,
you will be a single touch away from being electrocuted if the device is plugged in.
you will be a single touch away from being electrocuted if the device is plugged in or connected to a high voltage 'mains' power supply.
So, during this *entire* guide **never ever** plug the device in. Also, you should only do this
So, during this *entire* guide **never ever** plug the device in or have it connected to mains power. Also, you should only do this
if you know what you're doing. If you, at any step, feel something is wrong or are uncomfortable
with continuing, it's best to just stop for your own safety.
@ -43,12 +43,12 @@ interface.
For this guide you will need:
- Sonoff 4CH 😉
- An USB to UART Bridge for flashing the device. These can be bought on Amazon for less than 5 dollars.
- Sonoff 4CH 😉.
- A USB to UART Bridge for flashing the device. These can be bought on Amazon (or other online stores) for less than 5 dollars.
Note that the bridge *must* be 3.3V compatible. Otherwise you will destroy your Sonoff.
- Jumper wires to connect the UART bridge to the header pins.
- Computer running ESPHome or Hass.io add-on.
- Screwdriver to open up the Sonoff 4CH.
- A computer running Home Assistant with the ESPHome Hass.io add-on.
- A screwdriver to open up the Sonoff 4CH.
Have everything? Great! Then you can start.
@ -62,7 +62,7 @@ supplied with the Sonoff 4CH before doing this step.
.. warning::
Just to repeat this: Make **absolutely sure** the device is not connected to any appliance or
plugged in before doing this step.
connected to mains power before doing this step.
While the device is not plugged in, turn the device so you are viewing it from the top,
then unscrew the long screws in the four corners of the top cover.
@ -92,7 +92,7 @@ have to connect the four wires on the UART to USB bridge to the UART pins of the
Fortunately for us, exactly these pins come pre-populated with a few header pins. You can identify
these by the ``VCC33``, ``RX``, ``TX`` and ``GND`` markings on the silk-screen.
Now go ahead and connect these pins to your UART to USB bridge as seen in below image. Make sure
Now go ahead and connect these pins to your UART to USB bridge as seen in the below image. Make sure
that you connect these correctly, especially the ``VCC33`` and ``GND`` parts as you can otherwise
destroy the chip.
@ -151,10 +151,10 @@ 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 device is UART
bridge is not connected to your USB port, start pressing the bottom-left push button labeled ``FW/IO0``
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``
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 with any LED.
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
@ -175,12 +175,12 @@ If successful, you should see something like this:
Hooray 🎉! You've now successfully uploaded the first ESPHome firmware to your Sonoff 4CH. And in a moment,
you will be able to use all of ESPHome's great features with your Sonoff 4CH.
If above step does, however, not work, here are some steps that can help:
If above step don't work, however, here are some steps that can help:
- Sometimes the UART bridge cannot supply enough current to the chip to operate, in this
case use a 3.3V supply you have lying around. A nice hack is to use the power supply of
NodeMCU boards. Simply connect the NodeMCU's 3.3V to VCC and GND to GND. **Do not attempt
to plug the device into a socket to overcome this problem while troubleshooting.**
NodeMCU boards. Simply connect the NodeMCU's 3.3V to VCC and GND to GND. **Do not connect mains
power to the device in an attempt to overcome this problem while troubleshooting.**
- In other cases the ``TX`` and ``RX`` pin are reversed. Simple disconnect the device, swap
the two pins and put it into flash mode again.
@ -214,6 +214,8 @@ of the basic functions.
``GPIO1`` ``RX`` pin (for external sensors)
---------------------------------------- -----------------------------------------
``GPIO3`` ``TX`` pin (for external sensors)
---------------------------------------- -----------------------------------------
``GPIO2`` ``IO2`` pin (for external sensors)
======================================== =========================================
.. code-block:: yaml
@ -305,7 +307,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 with the button on the base again and screw everything together.
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
connect it.

View File

@ -16,12 +16,12 @@ front and a blue and green LED light.
Sonoff S20 Smart Socket.
This guide will step you through setting up your Sonoff S20 and flashing the first ESPHome firmware
with the serial interface. After that, you will be able to upload all future firmwares with the remote
with the serial interface. After that, you will be able to upload all future firmware with the remote
Over-The-Air update process.
.. note::
If you've previously installed Sonoff-Tasmota on your Sonoff S20, you're in luck 😀
If you've previously installed Sonoff-Tasmota on your Sonoff S20, you're in luck 😀.
ESPHome can generate a firmware binary which you can then upload via the
Tasmota web interface. To see how to create this binary, skip to :ref:`sonoff_s20-creating-firmware`.
@ -43,12 +43,12 @@ interface.
For this guide you will need:
- Sonoff S20 😉
- An USB to UART Bridge for flashing the device. These can be bought on Amazon for less than 5 dollars.
- Sonoff S20 😉.
- A USB to UART Bridge for flashing the device. These can be bought on Amazon (or other online stores) for less than 5 dollars.
Note that the bridge *must* be 3.3V compatible. Otherwise you will destroy your S20.
- Computer running ESPHome Hass.io add-on.
- Screwdriver to open up the S20.
- Soldering iron and a few header pins to connect the UART interface.
- A computer running Home Assistant with the ESPHome Hass.io add-on.
- A screwdriver to open up the S20.
- A soldering iron and a few header pins to connect the UART interface.
Have everything? Great! Then you can start.
@ -65,7 +65,7 @@ supplied with the Sonoff S20 before doing this step.
plugged in before doing this step.
While the device is not plugged in, turn the back side so it's facing you and unscrew the three
black screws holding the back of the case together with the front.
black screws that hold the case together.
.. figure:: images/sonoff_s20_screws.jpg
:align: center
@ -83,7 +83,7 @@ Step 2: Connecting UART
-----------------------
We're interested in the main part of the S20 with the green PCB. On the bottom of the PCB, you will
find four unpopulated holes. These pins have the UART interface used to flash firmwares onto the device
find four unpopulated holes. These pins expose the UART interface used to flash firmware onto the device
and debug issues.
.. figure:: images/sonoff_s20_pcb.jpg
@ -94,8 +94,8 @@ and debug issues.
So, in order to flash our own custom firmware, we're going to need to somehow connect the UART to USB
bridge to these pins. The only way to make a good connection here is by using a soldering iron and soldering
on some pin headers. On older models of the Sonoff S20, you were able to get the whole PCB out. Newer versions,
however, glue the PCB onto the case to avoid people flashing custom firmwares. If the latter is the case,
you will need to just solder the pin headers from above - it's a bit difficult, but possible.
however, glue the PCB onto the case to avoid people flashing custom firmware. If the latter is the case,
you will just need to solder the pin headers from above - it's a bit difficult, but possible.
When you're done, it should look something like this:
@ -153,10 +153,10 @@ 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 device is UART
bridge is not connected to your USB port, start pressing the small push button in the middle of the PCB.
Then plug in the UART bridge into your computer and just keep holding the button pressed for 2-4 seconds.
The S20 should now be in a flash mode and should not blink with any LED.
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 small push button in the middle of the PCB.
Then plug the UART bridge into your computer and keep holding the button for 2-4 seconds.
The S20 should now be in a flash mode and should not blink any LED.
Now you can finally run the upload command:
@ -169,12 +169,12 @@ If successful, you should see something like this:
.. figure:: images/sonoff_s20_upload.png
:align: center
Hooray 🎉! You've now successfully uploaded the first ESPHome firmware to your Sonoff S20. And in a moment,
Hooray 🎉! You've now successfully uploaded the first ESPHome firmware to your Sonoff S20. And, in a moment,
you will be able to use all of ESPHome's great features with your Sonoff S20.
If above step does, however, not work, here are some steps that can help:
If above step don't work, however, here are some steps that can help:
- Sometimes the UART bridge cannot supply enough current to the chip to operate, in this
- Sometimes the UART bridge cannot supply enough current to the chip to operate. In this
case use a 3.3V supply you have lying around. A nice hack is to use the power supply of
NodeMCU boards. Simply connect 3.3V to VCC and GND to GND on the pins. **Do not attempt
to plug the device into a socket to overcome this problem while troubleshooting.**
@ -249,7 +249,7 @@ of the basic functions.
output: s20_green_led
Above example also showcases an important concept of esphome: IDs and linking. In order
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)
output being created with the ID ``s20_green_led`` for the green LED. Later on it is then transformed
@ -294,7 +294,7 @@ Step 6: Finishing Up
--------------------
Now you're pretty much done with setting up the Sonoff S20. The only steps left are to
remove any cables within the housing and make sure everything in there is clean. If, for
remove any cables that you added within the housing and make sure everything in there is clean. If, for
example, you used wires to connect the UART console, you should definitely remove them to avoid
a short with mains.

View File

@ -1,13 +1,13 @@
.. _automation:
Automations And Templates
Automations and Templates
=========================
.. seo::
:description: Getting started guide for automations in ESPHome.
:image: auto-fix.png
Automations and templates are two very powerful concepts of ESPHome. Automations
Automations and templates are two very powerful aspects of ESPHome. Automations
allow you to perform actions under certain conditions and templates are a way to easily
customize everything about your node without having to dive into the full ESPHome C++
API.
@ -130,8 +130,8 @@ cycle back to its original state. Similarly you can have a single trigger with m
- light.toggle: dehumidifier_indicator_light
As a last example, let's make our dehumidifier smart: Let's make it turn on automatically when the humidity a sensor
reports is above 65% and make it turn off again when it reaches 50%
As a last example, let's make our dehumidifier smart: Let's make it turn on automatically when the humidity reported by a sensor
is above 65%, and make it turn off again when it falls below 50%:
.. code-block:: yaml
@ -149,11 +149,11 @@ reports is above 65% and make it turn off again when it reaches 50%
temperature:
name: "Living Room Temperature"
That's a lot of indentation 😉 ``on_value_range`` is a special trigger for sensors that triggers when the value output
That's a lot of indentation 😉 ``on_value_range`` is a special trigger for sensors that trigger when the value output
of the sensor is within a certain range. In the first example, this range is defined as "any value above or including
65.0", and the second one refers to once the humidity reaches 50% or below.
Now that concludes the introduction into automations in ESPHome. They're a powerful tool to automate almost
Now that concludes the introduction to automations in ESPHome. They're a powerful tool to automate almost
everything on your device with an easy-to-use syntax. For the cases where the "pure" YAML automations don't work,
ESPHome has another extremely powerful tool to offer: Templates.
@ -183,7 +183,8 @@ first:
}
What's happening here? First, we define a binary sensor (with the id ``top_end_stop``) and then a
:doc:`template cover </components/cover/template>`. The *state* of the template cover is
:doc:`template cover </components/cover/template>`. (If you're new to Home Assistant, a 'cover' is
something like a window blind, a roller shutter, or a garage door.) The *state* of the template cover is
controlled by a template, or "lambda". In lambdas you're effectively writing C++ code and therefore the
name lambda is used instead of Home Assistant's "template" lingo to avoid confusion. But before you go
shy away from using lambdas because you just hear C++ and think oh noes, I'm not going down *that* road:
@ -382,7 +383,7 @@ All Conditions
- :ref:`script.is_running <script-is_running_condition>`
- :ref:`sun.is_above_horizon / sun.is_below_horizon <sun-is_above_below_horizon-condition>`
- :ref:`text_sensor.state <text_sensor-state_condition>`
- :ref:`light.is_on <binary_sensor-is_on_condition>` / :ref:`light.is_off <light-is_off_condition>`
- :ref:`light.is_on <light-is_on_condition>` / :ref:`light.is_off <light-is_off_condition>`
All Lambda Calls
----------------
@ -545,7 +546,7 @@ Configuration options:
---------------------
This action allows your automations to wait until a condition evaluates to true. (So this is just
a shorthand way of writing a while action with empty then block)
a shorthand way of writing a ``while`` action with an empty ``then`` block.)
.. code-block:: yaml
@ -631,7 +632,7 @@ execute the script with a single call.
----------------------
This action allows you to stop a given script during execution. If the
script is not running, does nothing.
script is not running, it does nothing.
Please note this is only useful right now if your script contains a ``delay`` action.
.. code-block:: yaml
@ -681,7 +682,7 @@ are running, this will block until all of them have terminated.
-------------------------------
This :ref:`condition <config-condition>` allows you to check if a given script is running.
Please note that multiple scripts can be running concurrently, this condition only tells
Please note that multiple scripts can be running concurrently. This condition only tells
you if at least one script of the given type is running, not how many.
.. code-block:: yaml
@ -725,10 +726,10 @@ Configuration variables:
``interval``
------------
This component allows you to run actions periodically with a fixed interval.
This component allows you to run actions at fixed time intervals.
For example if you want to toggle a switch every minute, you can use this component.
Please note that this certain cases are also possible with the :ref:`time.on_time <time-on_time>`
trigger, but this one is more light-weight and user-friendly.
Please note that it's possible to achieve the same thing with the :ref:`time.on_time <time-on_time>`
trigger, but this technique is more light-weight and user-friendly.
.. code-block:: yaml

View File

@ -22,7 +22,7 @@ Contributing to ESPHome-Docs
:width: 60.0%
One of the areas of ESPHome that can always be improved is the documentation.
If you see an issue somewhere, or spelling mistakes or if you want to share your awesome
If you see an issue somewhere, a spelling mistakes or if you want to share your awesome
setup, please feel free to submit a pull request.
The ESPHome documentation is built using `sphinx <http://www.sphinx-doc.org/>`__ and uses
@ -31,7 +31,7 @@ The ESPHome documentation is built using `sphinx <http://www.sphinx-doc.org/>`__
Syntax
******
In my opinion, markdown would have been the much better choice in hindsight, but at the time
In my opinion, Markdown would have been the much better choice in hindsight, but at the time
I was setting up the documentation good doxygen integration was key to me. Anyway, here's a quick
RST primer:
@ -138,7 +138,7 @@ RST primer:
All images in the documentation need to be as small as possible to ensure
fast page load times. For normal figures the maximum size should be at most
about 1000x800px or so. Additionally, please use online tools like
about 1000x800 px or so. Additionally, please use online tools like
https://tinypng.com/ or https://tinyjpg.com/ to further compress images.
- **Notes and warnings**: You can create simple notes and warnings using the ``note`` and ``warning``
@ -173,29 +173,29 @@ RST primer:
*This is italicized.* (A weird word...)
**This is very important.**
- **Ordered and unordered list**: The syntax for lists in RST is more or less the same as in markdown:
- **Ordered and unordered list**: The syntax for lists in RST is more or less the same as in Markdown:
.. code-block:: rst
- Unordered Item
- Unordered item
- Unordered Sub-Item
- Unordered sub-item
- Item with a very long text so that it does not fully fit in a single line and
must be split up into multiple lines.
1. Ordered Item #1
2. Ordered Item #2
1. Ordered item #1
2. Ordered item #2
- Unordered Item
- Unordered item
- Unordered Sub-Item
- Unordered sub-item
- Item with a very long text so that it does not fully fit in a single line and
must be split up into multiple lines.
1. Ordered Item #1
2. Ordered Item #2
1. Ordered item #1
2. Ordered item #2
- **imgtable**: ESPHome uses a custom RST directive to show the table on the front page (see
`index.rst <https://github.com/esphome/esphome-docs/blob/current/index.rst>`__).
@ -218,7 +218,7 @@ Build
.. note::
The easiest way is to use the `esphome-docs docker image <https://hub.docker.com/r/esphome/esphome-docs/>`__:
The easiest way is to use the `esphome-docs Docker image <https://hub.docker.com/r/esphome/esphome-docs/>`__:
.. code-block:: bash
@ -228,7 +228,7 @@ Build
This way, you don't have to install the dependencies to build the documentation.
To check your documentation changes locally, you first need install sphinx (with **Python 3**).
To check your documentation changes locally, you first need install Sphinx (with **Python 3**).
.. code-block:: bash
@ -284,7 +284,7 @@ Now you can open esphome in your IDE of choice (mine is CLion) with the platform
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.
All PRs are automatically checked for some basic formatting/code mistakes with Travis.
These checks *must* pass for your PR to be mergable.
Setting Up Git Environment
@ -355,10 +355,10 @@ This is a guide to contributing to the ESPHome codebase. ESPHome uses two langua
Python and C++.
The user configuration is read, validated and transformed into a custom firmware
with the python side of the firmware.
with the Python side of the firmware.
The C++ codebase is what's actually running on the ESP and called the "runtime". This part of
the codebase should first set up the communication interface to a sensor/component/etc and
the codebase should first set up the communication interface to a sensor/component/etc. and
communicate with the ESPHome core via the defined interfaces (like Sensor, BinarySensor, Switch).
1. Directory Structure
@ -389,7 +389,7 @@ like this:
│  ...
As you can see, all components are in the "components" folder. Each component is in its own
subfolder which contains the python code (.py) and the C++ code (.h and .cpp).
subfolder which contains the Python code (.py) and the C++ code (.h and .cpp).
Suppose the user types in the following:
@ -425,7 +425,7 @@ The first thing ESPHome does is read and validate the user config. For this ESPH
"config validation" mechanism. Each component defines a config schema that is validated against
the user config.
To do this, all ESPHome python modules that can be configured by the user have a special field
To do this, all ESPHome Python modules that can be configured by the user have a special field
called ``CONFIG_SCHEMA``. An example of such a schema is shown below:
.. code-block:: python
@ -456,7 +456,7 @@ A few point on validation:
3. Code Generation
******************
After the user input has been successfully validated, the last step of the python codebase
After the user input has been successfully validated, the last step of the Python codebase
is called: Code generation.
As you may know, ESPHome converts the user's configuration into C++ code (you can see the generated
@ -497,7 +497,7 @@ If you do not call "add" a piece of code explicitly, it will not be added to the
4. Runtime
**********
Okay, the python part of the codebase is now complete - now let's talk about the C++ part of
Okay, the Python part of the codebase is now complete - now let's talk about the C++ part of
creating a new integration.
The two major parts of any integration roughly are:
@ -507,7 +507,7 @@ The two major parts of any integration roughly are:
When you create a new integration, your new component will inherit from :apiclass:`Component`.
That class has a special ``setup()`` method that will be called once to set up the component -
at the time the ``setup()`` method is called, all the setters generated by the python codebase
at the time the ``setup()`` method is called, all the setters generated by the Python codebase
have already run and the all fields are set for your class.
The ``setup()`` method should set up the communication interface for the component and check
@ -533,7 +533,7 @@ Finally, your component should have a ``dump_config`` method that prints the use
This serves as documentation for some of ESPHome's internals and is not necessarily part of the
development guide.
All python modules have some magic symbols that will automatically be loaded by the ESPHome
All Python modules have some magic symbols that will automatically be loaded by the ESPHome
loader. These are:
- ``CONFIG_SCHEMA``: The configuration schema to validate the user config against.

View File

@ -10,7 +10,7 @@ Tips for using ESPHome
1. ESPHome supports (most of) `Home Assistant's YAML configuration directives
<https://www.home-assistant.io/docs/configuration/splitting_configuration/>`__ like
``!include``, ``!secret``. So you can store all your secret WiFi passwords and so on
``!include`` and ``!secret``. So you can store all your secret WiFi passwords and so on
in a file called ``secrets.yaml`` within the directory where the configuration file is.
For even more configuration templating, take a look at :ref:`config-substitutions`.
@ -31,7 +31,7 @@ Tips for using ESPHome
possible to edit anything outside of the ``AUTO GENERATED CODE BEGIN/END`` lines for creating
:doc:`custom sensors </components/sensor/custom>`.
5. You can view the full command line interface options here: :doc:`/guides/cli`
5. You can view the full list of command line interface options here: :doc:`/guides/cli`
6. Use :ref:`substitutions <config-substitutions>` to reduce repetition in your configuration files.
@ -83,8 +83,8 @@ Select the firmware binary and finally press "Flash ESP".
are connected correctly if flashing using a USB to UART bridge. For some devices you need to
keep pressing the BOOT button until flashing has begun (ie. Geekcreit DOIT ESP32 DEVKIT V1).
Help! Something's not working!1!
--------------------------------
Help! Something's not working!!
-------------------------------
That's no good. Here are some steps that resolve some problems:
@ -103,7 +103,7 @@ I can using my own hardware, I don't own every single device type and mostly onl
system. When doing some changes in the core, it can quickly happen that something somewhere breaks. Issue reports are a
great way for me to track and (hopefully) fix issues, so thank you!
For me to fix the issue the quickest, there are some things that would be really helpful:
For me to fix the issue quickly, there are some things that would be really helpful:
1. **Just writing "X doesn't work" or "X gives bug" is not helpful!!!** Seriously, how do you expect
help given just that information?
@ -180,7 +180,7 @@ The latest dev docs are here: `next.esphome.io <https://next.esphome.io/>`__
Does ESPHome support [this device/feature]?
-------------------------------------------
If it's not in :doc:`the docs </index>`, it's probably sadly not
If it's not in :doc:`the docs </index>`, it's probably not
supported. However, I'm always trying to add support for new features, so feel free to create a feature
request in the `ESPHome feature request tracker <https://github.com/esphome/feature-requests>`__. Thanks!
@ -211,9 +211,9 @@ Some steps that can help with the issue:
configuration (also sometimes helps with non-hidden networks)
- Give your ESP a :ref:`static IP <wifi-manual_ip>`.
- Set the ``power_save_mode`` to ``light`` in the ``wifi:`` config (only helps in some cases,
in other it can make things works). See :ref:`wifi-power_save_mode`.
- The issue seems to be happen with cheap boards more frequently. Especially the "cheap" NodeMCU
boards from eBay sometimes have quite bad antennas.
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.
Docker Reference
----------------
@ -280,6 +280,10 @@ 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.
Alternatively, you can make esphome use ICMP pings to check the status of the device
with the Hass.io Addon ``"status_use_ping": true,`` option or with docker ``-e ESPHOME_DASHBOARD_USE_PING=true``
See also https://github.com/esphome/issues/issues/641#issuecomment-534156628.
Can Configuration Files Be Recovered From The Device?
-----------------------------------------------------

View File

@ -5,7 +5,7 @@ Getting Started with ESPHome
:description: Getting Started guide for installing ESPHome using the command line and creating a basic configuration.
:image: console.png
ESPHome is the perfect solution for creating custom firmwares for
ESPHome is the perfect solution for creating custom firmware for
your ESP8266/ESP32 boards. In this guide well go through how to setup a
basic “node” in a few simple steps.
@ -29,7 +29,7 @@ an RPi, please install ESPHome through ``pip`` or use :doc:`the Hass.io add-on <
docker pull esphome/esphome
Creating A Project
Creating a Project
------------------
Now lets setup a configuration file. Fortunately, ESPHome has a
@ -71,7 +71,7 @@ to translate pin numbers for you based on the board. For example in the
above configuration, if using a NodeMCU board, you could have just as
well set ``D1`` as the ``pin:`` option.
First Uploading
First uploading
---------------
Now you can go ahead and add some more components. Once you feel like
@ -97,7 +97,7 @@ to your docker command to map a local USB device.
docker run --rm -v "${PWD}":/config --device=/dev/ttyUSB0 -it esphome/esphome livingroom.yaml run
Now when you go to the Home Assistant "Integrations" screen (under "Configuration" panel), you
should see the ESPHome device show up in the discovered section (can take up to 5 minutes).
should see the ESPHome device show up in the discovered section (although this can take up to 5 minutes).
Alternatively, you can manually add the device by clicking "CONFIGURE" on the ESPHome integration
and entering "<NODE_NAME>.local" as the host.
@ -112,7 +112,7 @@ Adding A Binary Sensor
----------------------
Next, were going to add a very simple binary sensor that periodically
checks a GPIO pin whether its pulled high or low - the :doc:`GPIO Binary
checks if a particular GPIO pin is pulled high or low - the :doc:`GPIO Binary
Sensor </components/binary_sensor/gpio>`.
.. code-block:: yaml

View File

@ -5,14 +5,14 @@ Getting Started with ESPHome through Hass.io
:description: Getting Started guide for installing ESPHome as a Hass.io Add-on and creating a basic configuration.
:image: home-assistant.png
ESPHome is the perfect solution for creating custom firmwares for
ESPHome is the perfect solution for creating custom firmware for
your ESP8266/ESP32 boards. In this guide well go through how to setup a
basic "node" by use of the Hass.io add-on.
But first, here's a very quick introduction of how ESPHome works:
ESPHome is a *tool* which reads in YAML configuration files (just like Home Assistant)
and creates custom firmwares. The tool also has many helpers that simplify flashing devices
and aims to make managing your ESP boards as simple as possible. Once you have added devices
But first, here's a very quick introduction to how ESPHome works:
ESPHome is a *tool* which reads in a YAML configuration file (just like Home Assistant)
and creates a custom firmware binary. The tool also has many helpers that simplify flashing devices (uploading the new binary file)
and aim to make managing your ESP boards as simple as possible. Once you have added devices
or sensors in ESPHome's configuration, they will even automatically show up in Home
Assistant's UI.
@ -85,7 +85,7 @@ Adding some (basic) features
----------------------------
So now you should have a file called ``/config/esphome/livingroom.yaml`` (or similar).
Go open that file in and add a :doc:`simple GPIO switch </components/switch/gpio>`
Go open that file (in any text editor) and add a :doc:`simple GPIO switch </components/switch/gpio>`
to the configuration like this:
.. code-block:: yaml
@ -99,7 +99,7 @@ In above example, we're simply adding a switch that's called "Living Room Dehumi
anything really, for example lights) and is connected to the pin ``GPIO5``.
Now when you go to the Home Assistant "Integrations" screen (under "Configuration" panel), you
should see the ESPHome device show up in the discovered section (can take up to 5 minutes).
should see the ESPHome device show up in the discovered section (although this can take up to 5 minutes).
Alternatively, you can manually add the device by clicking "CONFIGURE" on the ESPHome integration
and entering "<NODE_NAME>.local" as the host.
@ -115,7 +115,7 @@ Adding A Binary Sensor
----------------------
Next, were going to add a very simple binary sensor that periodically
checks a GPIO pin whether its pulled high or low - the :doc:`GPIO Binary
checks a GPIO pin to see whether its pulled high or low - the :doc:`GPIO Binary
Sensor </components/binary_sensor/gpio>`.
.. code-block:: yaml

View File

@ -8,8 +8,8 @@ Migrating from Sonoff Tasmota
Migrating from previous Sonoff Tasmota setups is very easy. You just need to have
ESPHome create a binary for you and then upload that in the Tasmota web interface.
Getting Binary
--------------
Getting the Binary
------------------
First follow the guides for the :ref:`different supported devices <devices>` and create a configuration
file. Then, generate and download the binary:
@ -21,13 +21,13 @@ file. Then, generate and download the binary:
- **Using the command line**: run ``esphome livingroom.yaml compile`` (replacing
``livingroom.yaml`` with your configuration file of course) and navigate to the
``<NODE_NAME>/.pioenvs/<NODE_NAME>/`` folder. There you will find a ``firmware.bin`` file,
this is the binary you will upload.
``<NODE_NAME>/.pioenvs/<NODE_NAME>/`` folder. There you will find a ``firmware.bin`` file.
This is the binary that you will upload.
Uploading Binary
----------------
Uploading the Binary
--------------------
To upload the binary, navigate to the tasmota web interface and enter the
To upload the binary, navigate to the Tasmota web interface and enter the
"Firmware Upgrade" section.
.. figure:: images/tasmota_main.png
@ -41,7 +41,7 @@ In the "Upgrade by file upload" section, choose the binary you previously downlo
:width: 60.0%
If everything succeeds, you will see an "Upload Successful" message and ESPHome
will connect to the configured WiFi network 🎉
will connect to the WiFi network configured in your .yaml file. 🎉
.. figure:: images/tasmota_upload.png
:align: center

View File

@ -40,6 +40,7 @@ You guys are awesome!
- Anders
- Andrea Donno
- Andrew Tierney
- Book of the Future
- Christer Frostmo
- Clayton
@ -47,25 +48,30 @@ You guys are awesome!
- Dattas Moonchaser
- David Padbury
- Dennis Münchgesang
- Dmitriy Khazansky
- DrZzs
- fabi
- Franck Nijhof
- Intermittent Technology
- Jung Ervin
- Kenvase
- Lazar Obradovic
- Magnus Overli
- Nick Rout
- Niklas Fondberg
- Nigel Michki
- Paul Krischer
- Paul Morley
- Philippe Penochet
- Radu Tizu
- Roman Priesol
- Ryan
- LMR
- Ryan Bahm
- Ryan Nazaretian
- Sam Absalom
- Saulo Onze
- Starwolf73
- Vincèn
- Thomas Hermine
- Vincèn PUJOL
- Wojciech Bederski
- Yonatan Adest
- Zoltán Jáki
@ -81,7 +87,7 @@ that have made it into the `ESPHome organization's <https://github.com/esphome>`
Author & Main Developer
***********************
- `Otto Winter (@OttoWinter) <https://github.com/OttoWinter>`__ - 1836 contributions
- `Otto Winter (@OttoWinter) <https://github.com/OttoWinter>`__ - 1886 contributions
Contributors
************
@ -92,6 +98,8 @@ Contributors
- `Pavel Pletenev (@ASMfreaK) <https://github.com/ASMfreaK>`__ - 1 contribution
- `Aalian Khan (@AalianKhan) <https://github.com/AalianKhan>`__ - 4 contributions
- `Alexandre Danault (@AlexDanault) <https://github.com/AlexDanault>`__ - 1 contribution
- `Alex Mekkering (@AlexMekkering) <https://github.com/AlexMekkering>`__ - 1 contribution
- `Nikolay Vasilchuk (@Anonym-tsk) <https://github.com/Anonym-tsk>`__ - 4 contributions
- `Rutger Nijhuis (@BananaPukeh) <https://github.com/BananaPukeh>`__ - 1 contribution
- `Bierchermuesli (@Bierchermuesli) <https://github.com/Bierchermuesli>`__ - 1 contribution
- `David De Sloovere (@DavidDeSloovere) <https://github.com/DavidDeSloovere>`__ - 3 contributions
@ -99,6 +107,7 @@ Contributors
- `EmmanuelLM (@EmmanuelLM) <https://github.com/EmmanuelLM>`__ - 1 contribution
- `FrengerH (@FrengerH) <https://github.com/FrengerH>`__ - 2 contributions
- `Jimmy Hedman (@HeMan) <https://github.com/HeMan>`__ - 5 contributions
- `Lorenzo Ortiz (@Infinitte) <https://github.com/Infinitte>`__ - 1 contribution
- `Johboh (@Johboh) <https://github.com/Johboh>`__ - 2 contributions
- `Fredrik Lindqvist (@Landrash) <https://github.com/Landrash>`__ - 1 contribution
- `Marco (@Melkor82) <https://github.com/Melkor82>`__ - 2 contributions
@ -107,6 +116,7 @@ Contributors
- `Jérôme W. (@RomRider) <https://github.com/RomRider>`__ - 1 contribution
- `Teemu Mikkonen (@T3m3z) <https://github.com/T3m3z>`__ - 2 contributions
- `Taigar2015 (@Taigar2015) <https://github.com/Taigar2015>`__ - 1 contribution
- `Thomas Eckerstorfer (@TheEggi) <https://github.com/TheEggi>`__ - 1 contribution
- `Spencer Hachmeister (@TheHackmeister) <https://github.com/TheHackmeister>`__ - 1 contribution
- `TheJulianJES (@TheJulianJES) <https://github.com/TheJulianJES>`__ - 2 contributions
- `Florian Gareis (@TheZoker) <https://github.com/TheZoker>`__ - 7 contributions
@ -119,13 +129,14 @@ Contributors
- `balk77 (@balk77) <https://github.com/balk77>`__ - 2 contributions
- `Paulus Schoutsen (@balloob) <https://github.com/balloob>`__ - 1 contribution
- `Patrik Hermansson (@bphermansson) <https://github.com/bphermansson>`__ - 1 contribution
- `Brandon Davidson (@brandond) <https://github.com/brandond>`__ - 13 contributions
- `Brandon Davidson (@brandond) <https://github.com/brandond>`__ - 14 contributions
- `brianrjones69 (@brianrjones69) <https://github.com/brianrjones69>`__ - 1 contribution
- `bwente (@bwente) <https://github.com/bwente>`__ - 1 contribution
- `chris-jennings (@chris-jennings) <https://github.com/chris-jennings>`__ - 1 contribution
- `James Crook (@cooljimy84) <https://github.com/cooljimy84>`__ - 1 contribution
- `Corban Mailloux (@corbanmailloux) <https://github.com/corbanmailloux>`__ - 5 contributions
- `cryptelli (@cryptelli) <https://github.com/cryptelli>`__ - 2 contributions
- `Dave Richer (@davericher) <https://github.com/davericher>`__ - 2 contributions
- `Dave Richer (@davericher) <https://github.com/davericher>`__ - 3 contributions
- `Mario Di Raimondo (@diraimondo) <https://github.com/diraimondo>`__ - 1 contribution
- `Dirk Jahnke (@dirkj) <https://github.com/dirkj>`__ - 1 contribution
- `Jiang Sheng (@doskoi) <https://github.com/doskoi>`__ - 1 contribution
@ -133,14 +144,20 @@ Contributors
- `Drew Perttula (@drewp) <https://github.com/drewp>`__ - 1 contribution
- `Anders Persson (@emwap) <https://github.com/emwap>`__ - 4 contributions
- `Nico Weichbrodt (@envy) <https://github.com/envy>`__ - 1 contribution
- `Evan Petousis (@epetousis) <https://github.com/epetousis>`__ - 1 contribution
- `erazor666 (@erazor666) <https://github.com/erazor666>`__ - 1 contribution
- `Eric Hiller (@erichiller) <https://github.com/erichiller>`__ - 1 contribution
- `escoand (@escoand) <https://github.com/escoand>`__ - 6 contributions
- `Malte Franken (@exxamalte) <https://github.com/exxamalte>`__ - 2 contributions
- `Fabian Affolter (@fabaff) <https://github.com/fabaff>`__ - 10 contributions
- `Fabian Affolter (@fabaff) <https://github.com/fabaff>`__ - 13 contributions
- `C W (@fake-name) <https://github.com/fake-name>`__ - 1 contribution
- `Fritz Mueller (@fritzm) <https://github.com/fritzm>`__ - 1 contribution
- `gitolicious (@gitolicious) <https://github.com/gitolicious>`__ - 11 contributions
- `The Gitter Badger (@gitter-badger) <https://github.com/gitter-badger>`__ - 1 contribution
- `Guillermo Ruffino (@glmnet) <https://github.com/glmnet>`__ - 6 contributions
- `Guillermo Ruffino (@glmnet) <https://github.com/glmnet>`__ - 13 contributions
- `Giorgos Logiotatidis (@glogiotatidis) <https://github.com/glogiotatidis>`__ - 1 contribution
- `Antoine GRÉA (@grea09) <https://github.com/grea09>`__ - 3 contributions
- `guptamp (@guptamp) <https://github.com/guptamp>`__ - 1 contribution
- `Boris Hajduk (@hajdbo) <https://github.com/hajdbo>`__ - 4 contributions
- `Ivan Kravets (@ivankravets) <https://github.com/ivankravets>`__ - 1 contribution
- `Jan Pieper (@janpieper) <https://github.com/janpieper>`__ - 2 contributions
@ -149,8 +166,13 @@ Contributors
- `Joshua Dadswell (@jdads1) <https://github.com/jdads1>`__ - 1 contribution
- `jeff-h (@jeff-h) <https://github.com/jeff-h>`__ - 1 contribution
- `Jesse Hills (@jesserockz) <https://github.com/jesserockz>`__ - 7 contributions
- `Jonathan Jefferies (@jjok) <https://github.com/jjok>`__ - 1 contribution
- `John Erik Halse (@johnerikhalse) <https://github.com/johnerikhalse>`__ - 1 contribution
- `JonnyaiR (@jonnyair) <https://github.com/jonnyair>`__ - 2 contributions
- `junnikokuki (@junnikokuki) <https://github.com/junnikokuki>`__ - 1 contribution
- `Jasper van der Neut - Stulen (@jvanderneutstulen) <https://github.com/jvanderneutstulen>`__ - 1 contribution
- `Jack Wozny (@jwozny) <https://github.com/jwozny>`__ - 1 contribution
- `Robert Kiss (@kepten) <https://github.com/kepten>`__ - 1 contribution
- `Kevin O'Rourke (@kevinior) <https://github.com/kevinior>`__ - 1 contribution
- `kimonm (@kimonm) <https://github.com/kimonm>`__ - 1 contribution
- `Ken Davidson (@kwdavidson) <https://github.com/kwdavidson>`__ - 1 contribution
@ -158,19 +180,23 @@ Contributors
- `Lazar Obradovic (@lobradov) <https://github.com/lobradov>`__ - 3 contributions
- `Lewis Juggins (@lwis) <https://github.com/lwis>`__ - 1 contribution
- `Marc-Antoine Courteau (@macourteau) <https://github.com/macourteau>`__ - 1 contribution
- `Magnus (@magnusja) <https://github.com/magnusja>`__ - 1 contribution
- `Magnus Øverli (@magnusoverli) <https://github.com/magnusoverli>`__ - 1 contribution
- `Major Péter (@majorpeter) <https://github.com/majorpeter>`__ - 1 contribution
- `MeIchthys (@meichthys) <https://github.com/meichthys>`__ - 1 contribution
- `meijerwynand (@meijerwynand) <https://github.com/meijerwynand>`__ - 2 contributions
- `Pauline Middelink (@middelink) <https://github.com/middelink>`__ - 2 contributions
- `mjoshd (@mjoshd) <https://github.com/mjoshd>`__ - 2 contributions
- `Matt N. (@mnoorenberghe) <https://github.com/mnoorenberghe>`__ - 1 contribution
- `mtl010957 (@mtl010957) <https://github.com/mtl010957>`__ - 5 contributions
- `mtl010957 (@mtl010957) <https://github.com/mtl010957>`__ - 7 contributions
- `Michiel van Turnhout (@mvturnho) <https://github.com/mvturnho>`__ - 10 contributions
- `Niels Ulrik Andersen (@myplacedk) <https://github.com/myplacedk>`__ - 1 contribution
- `Kevin Uhlir (@n0bel) <https://github.com/n0bel>`__ - 1 contribution
- `Alex (@nnmalex) <https://github.com/nnmalex>`__ - 1 contribution
- `ffabi (@norges) <https://github.com/norges>`__ - 2 contributions
- `Greg Johnson (@notgwj) <https://github.com/notgwj>`__ - 1 contribution
- `Nuno Sousa (@nunofgs) <https://github.com/nunofgs>`__ - 1 contribution
- `Olivér Falvai (@ofalvai) <https://github.com/ofalvai>`__ - 1 contribution
- `Oscar Bolmsten (@oscar-b) <https://github.com/oscar-b>`__ - 4 contributions
- `Paul Nicholls (@pauln) <https://github.com/pauln>`__ - 1 contribution
- `per1234 (@per1234) <https://github.com/per1234>`__ - 2 contributions
@ -179,12 +205,14 @@ Contributors
- `Marcus Kempe (@plopp) <https://github.com/plopp>`__ - 1 contribution
- `DK (@poldim) <https://github.com/poldim>`__ - 1 contribution
- `Iván Povedano (@pove) <https://github.com/pove>`__ - 1 contribution
- `Peter Stuifzand (@pstuifzand) <https://github.com/pstuifzand>`__ - 1 contribution
- `Peter Tatrai (@ptatrai) <https://github.com/ptatrai>`__ - 1 contribution
- `Leandro Puerari (@puerari) <https://github.com/puerari>`__ - 1 contribution
- `puuu (@puuu) <https://github.com/puuu>`__ - 14 contributions
- `Tommy Jonsson (@quazzie) <https://github.com/quazzie>`__ - 1 contribution
- `r-jordan (@r-jordan) <https://github.com/r-jordan>`__ - 1 contribution
- `Pär Stålberg (@rabbadab) <https://github.com/rabbadab>`__ - 1 contribution
- `Florian Ragwitz (@rafl) <https://github.com/rafl>`__ - 1 contribution
- `Richard Lewis (@richrd) <https://github.com/richrd>`__ - 2 contributions
- `rnauber (@rnauber) <https://github.com/rnauber>`__ - 2 contributions
- `Robbie Page (@rorpage) <https://github.com/rorpage>`__ - 1 contribution
@ -192,11 +220,16 @@ Contributors
- `sethcohn (@sethcohn) <https://github.com/sethcohn>`__ - 1 contribution
- `Emanuele Tessore (@setola) <https://github.com/setola>`__ - 1 contribution
- `Abdelkader Boudih (@seuros) <https://github.com/seuros>`__ - 1 contribution
- `shbatm (@shbatm) <https://github.com/shbatm>`__ - 1 contribution
- `sherbang (@sherbang) <https://github.com/sherbang>`__ - 4 contributions
- `srg74 (@srg74) <https://github.com/srg74>`__ - 1 contribution
- `Andrew Thompson (@thompsa) <https://github.com/thompsa>`__ - 1 contribution
- `thubot (@thubot) <https://github.com/thubot>`__ - 1 contribution
- `tiagofreire-pt (@tiagofreire-pt) <https://github.com/tiagofreire-pt>`__ - 1 contribution
- `tomlut (@tomlut) <https://github.com/tomlut>`__ - 1 contribution
- `Felix Eckhofer (@tribut) <https://github.com/tribut>`__ - 1 contribution
- `tubalainen (@tubalainen) <https://github.com/tubalainen>`__ - 2 contributions
- `Nad (@valordk) <https://github.com/valordk>`__ - 1 contribution
- `Xuming Feng (@voicevon) <https://github.com/voicevon>`__ - 2 contributions
- `Ian Wells (@wellsi) <https://github.com/wellsi>`__ - 1 contribution
- `wutr (@wutr) <https://github.com/wutr>`__ - 1 contribution
@ -204,4 +237,4 @@ Contributors
- `Vladimir Eremin (@yottatsa) <https://github.com/yottatsa>`__ - 1 contribution
- `YuanL.Lee (@yuanl) <https://github.com/yuanl>`__ - 1 contribution
*This page was last updated Mon Jun 24 20:42:10 2019 UTC.*
*This page was last updated Sat Oct 12 12:03:02 2019 UTC.*

BIN
images/teckin_sb50.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

View File

@ -340,6 +340,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
Teckin SB50, cookbook/teckin_sb50, teckin_sb50.jpg
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 </guides/contributing>`.