diff --git a/_static/apple-touch-icon.png b/_static/apple-touch-icon.png index 5dcf52cc6..d7ed81ded 100644 Binary files a/_static/apple-touch-icon.png and b/_static/apple-touch-icon.png differ diff --git a/_static/changelog-1.15.0.png b/_static/changelog-1.15.0.png index c1eb95836..9f74426a5 100644 Binary files a/_static/changelog-1.15.0.png and b/_static/changelog-1.15.0.png differ diff --git a/_static/favicon-128x128.png b/_static/favicon-128x128.png index f2219d7ac..e78af957d 100644 Binary files a/_static/favicon-128x128.png and b/_static/favicon-128x128.png differ diff --git a/_static/favicon-192x192.png b/_static/favicon-192x192.png index 549a78471..438a79cb3 100644 Binary files a/_static/favicon-192x192.png and b/_static/favicon-192x192.png differ diff --git a/_static/favicon-256x256.png b/_static/favicon-256x256.png index 5a7f27830..21986db8a 100644 Binary files a/_static/favicon-256x256.png and b/_static/favicon-256x256.png differ diff --git a/_static/favicon-32x32.png b/_static/favicon-32x32.png index 674b8d307..d47f8c6b9 100644 Binary files a/_static/favicon-32x32.png and b/_static/favicon-32x32.png differ diff --git a/_static/favicon-512x512.png b/_static/favicon-512x512.png index a5f3bf6f6..8dc5aeadc 100644 Binary files a/_static/favicon-512x512.png and b/_static/favicon-512x512.png differ diff --git a/_static/mstile-150x150.png b/_static/mstile-150x150.png index e469a3872..e43bd92df 100644 Binary files a/_static/mstile-150x150.png and b/_static/mstile-150x150.png differ diff --git a/changelog/v1.15.0.rst b/changelog/v1.15.0.rst index fdbedc646..261c6fca3 100644 --- a/changelog/v1.15.0.rst +++ b/changelog/v1.15.0.rst @@ -573,6 +573,56 @@ Release 1.15.1 - September 14 - docs: Adds Tuya Climate temperature multiplier :docspr:`756` by :ghuser:`jesserockz` - esphome: Adds support for Tuya Climate temperature multiplier :esphomepr:`1276` by :ghuser:`jesserockz` +Release 1.15.2 - September 20 +----------------------------- + +- docs: Light triggers referenced in the "automation" guide. :docspr:`746` by :ghuser:`demikl` +- docs: specific MacOS Docker command to launch dashboard :docspr:`553` by :ghuser:`oncleben31` +- docs: Update index.rst :docspr:`757` by :ghuser:`3ative` +- esphome: Adds new homeassistant.tag_scanned action :esphomepr:`1281` by :ghuser:`jesserockz` +- docs: add custom uart id usage :docspr:`765` by :ghuser:`glmnet` +- esphome: Readds the battery level for xiaomi_hhccjcy01 :esphomepr:`1288` by :ghuser:`jesserockz` +- esphome: fix(remote_receiver): Add missing pin setup for ESP32 :esphomepr:`1252` by :ghuser:`lwfitzgerald` +- docs: Add docs for homeassistant.tag_scanned action :docspr:`763` by :ghuser:`jesserockz` + +Release 1.15.3 - October 22 +--------------------------- + +- docs: Mention CODEOWNERS magic symbol :docspr:`767` by :ghuser:`glmnet` +- docs: using docker image to build esphome-docs locally :docspr:`747` by :ghuser:`demikl` +- docs: Add missing doc for rc_switch event :docspr:`740` by :ghuser:`micw` +- docs: Remove unneeded parameters :docspr:`752` by :ghuser:`KTibow` +- docs: Enable color_interlock for the Teckin SB50 example :docspr:`743` by :ghuser:`CarlosGS` +- docs: clarify esp8266_restore_from_flash with restore_value :docspr:`754` by :ghuser:`pille` +- docs: Update mirabella-genio-bulb.rst :docspr:`732` by :ghuser:`DotNetDann` +- docs: Fix APDS9960 datasheet link :docspr:`772` by :ghuser:`JonathanTreffler` +- docs: Update uart.rst :docspr:`771` by :ghuser:`sublime93` +- docs: Update index.rst :docspr:`773` by :ghuser:`damanti-me` +- docs: HM3301 - Change type to calculation_type :docspr:`769` by :ghuser:`rdehuyss` +- docs: Update diy.rst :docspr:`781` by :ghuser:`Dilbert66` +- docs: Update docker architectures in getting started :docspr:`780` by :ghuser:`jesserockz` +- docs: Remove bh7150 API reference :docspr:`784` by :ghuser:`JeffResc` +- docs: Add 2.13in-ttgo-b73 to list of waveshare models :docspr:`786` by :ghuser:`davewongillies` +- docs: Typo: connedted -> connected :docspr:`787` by :ghuser:`johanvanderkuijl` +- docs: Update edit URL on Sonoff Basic page :docspr:`785` by :ghuser:`JeffResc` +- docs: Update Sonoff Mini :docspr:`783` by :ghuser:`debsahu` +- docs: Set correct link to ESPColor struct :docspr:`788` by :ghuser:`cdrfun` +- docs: Add battery_level note for xiaomi_hhccjcy01 :docspr:`761` by :ghuser:`axilleas` +- docs: Corrected the example pin mapping to GPIO mapping. :docspr:`789` by :ghuser:`shaeed` +- esphome: fix chip_rotation: 180 :esphomepr:`1321` by :ghuser:`ssieb` +- docs: Fix links, moved to gists :docspr:`802` by :ghuser:`glmnet` +- docs: Update wifi.rst :docspr:`795` by :ghuser:`Frankster-NL` +- docs: BME680 default address is 0x76 :docspr:`792` by :ghuser:`trvrnrth` +- docs: Individual BMXXXXX sensor configs are optional :docspr:`791` by :ghuser:`trvrnrth` +- esphome: Fix Light Trigger :esphomepr:`1308` by :ghuser:`MartinWelsch` +- esphome: Fix Xiaomi merged packet parsing :esphomepr:`1293` by :ghuser:`Alex9779` +- docs: Correct pull-up value :docspr:`811` by :ghuser:`tomlut` +- esphome: Fix color_interlock behavior :esphomepr:`1325` by :ghuser:`margau` +- esphome: Fix scheduler with too many cancelled timers :esphomepr:`1309` by :ghuser:`glmnet` +- esphome: fix config check in OnlyWith configuration helper :esphomepr:`1304` by :ghuser:`akomelj` +- esphome: fix: Incorrect time delay conversion breaks remote_transmitter_esp8266.cpp :esphomepr:`1322` by :ghuser:`thejonesyboy` +- esphome: fix hm3301 AQICalculator is off by 1 :esphomepr:`1331` by :ghuser:`ikatkov` + Past Changelogs --------------- diff --git a/components/api.rst b/components/api.rst index edc55822e..0ee1ab0e9 100644 --- a/components/api.rst +++ b/components/api.rst @@ -75,6 +75,39 @@ Configuration options: - **variables** (*Optional*, mapping): Optional variables that can be used in the ``data_template``. Values are :ref:`lambdas ` and will be evaluated before sending the request. +Data structures are not possible, but you can create an script in Home Assistant and call with all +the parameters in plain format. + +.. code-block:: yaml + + # Home Assistant Configuration + script: + ... + set_light_rgb: + alias: 'ESPHome RGB light set' + sequence: + - service: light.turn_on + data_template: + entity_id: '{{ light_name }}' + rgb_color: + - '{{ red }}' + - '{{ green }}' + - '{{ blue }}' + +Then in ESPHome + +.. code-block:: yaml + + # In some trigger + on_...: + - homeassistant.service: + service: script.set_light_rgb + data: + light_name: 'my_light' + red: '255' + green: '199' + blue: '71' + .. _api-services: User-defined Services diff --git a/components/binary_sensor/images/pn532-full.jpg b/components/binary_sensor/images/pn532-full.jpg index a7a49292a..ff19e0dfa 100644 Binary files a/components/binary_sensor/images/pn532-full.jpg and b/components/binary_sensor/images/pn532-full.jpg differ diff --git a/components/binary_sensor/images/pn532-spi.jpg b/components/binary_sensor/images/pn532-spi.jpg index e11157e69..15f7ce374 100644 Binary files a/components/binary_sensor/images/pn532-spi.jpg and b/components/binary_sensor/images/pn532-spi.jpg differ diff --git a/components/binary_sensor/images/rdm6300-full.jpg b/components/binary_sensor/images/rdm6300-full.jpg index 1e2266f44..4fe03d743 100644 Binary files a/components/binary_sensor/images/rdm6300-full.jpg and b/components/binary_sensor/images/rdm6300-full.jpg differ diff --git a/components/binary_sensor/pn532.rst b/components/binary_sensor/pn532.rst index e7c64df85..549083b1e 100644 --- a/components/binary_sensor/pn532.rst +++ b/components/binary_sensor/pn532.rst @@ -98,6 +98,24 @@ using :ref:`api-homeassistant_tag_scanned_action`. then: - homeassistant.tag_scanned: !lambda 'return x;' +Alternatively you could also send the value directly to Home Assistant via a +:doc:`template sensor `. + +.. code-block:: yaml + + pn532: + # ... + on_tag: + then: + - text_sensor.template.publish: + id: rfid_tag + state: !lambda 'return x;' + + text_sensor: + - platform: template + name: "RFID Tag" + id: rfid_tag + .. _pn532-tag: NFC/RFID Tag diff --git a/components/climate/bang_bang.rst b/components/climate/bang_bang.rst index 8dba520f7..86d1140da 100644 --- a/components/climate/bang_bang.rst +++ b/components/climate/bang_bang.rst @@ -31,11 +31,13 @@ There are three types of bang bang controllers this platform can represent: - As soon as the temperature goes below the lower target temperature, ``heat_action`` will be called. - When the temperature goes above the higher temperature, ``idle_action`` will be called. + - If you change operating mode (manual mode). And it is between high and low temperature. It does not wait to get to low temperature, it starts working until it gets to high temperature. - **Coolers**: For devices where the observed temperature can only be decreased. - As soon as the temperature goes above the higher target temperature, ``cool_action`` will be called. - When the temperature goes below the lower temperature, ``idle_action`` will be called. + - If you change operating mode (manual mode). And it is between high and low temperature. It does not wait to get to high temperature, it starts working until it gets to low temperature. - **Heater+Cooler**: For devices where the temperature can both actively be increased and decreased. diff --git a/components/deep_sleep.rst b/components/deep_sleep.rst index f2b4ef976..1dc9d2186 100644 --- a/components/deep_sleep.rst +++ b/components/deep_sleep.rst @@ -111,7 +111,9 @@ Useful for it will no longer enter deep sleep mode and you can upload your OTA update. Remember to turn "OTA mode" off again after the OTA update by sending a MQTT message with the payload - ``OFF``. Note that the device won't enter deep sleep again until the next reboot. + ``OFF``. To enter the the deep sleep again after the OTA update send a message on the topic ``livingroom/sleep_mode`` + with payload ``ON``. Deep sleep will start immediately. Don't forget to delete the payload before the node + wakes up again. .. code-block:: yaml @@ -121,10 +123,14 @@ Useful for mqtt: # ... on_message: - topic: livingroom/ota_mode - payload: 'ON' - then: - - deep_sleep.prevent: deep_sleep_1 + - topic: livingroom/ota_mode + payload: 'ON' + then: + - deep_sleep.prevent: deep_sleep_1 + - topic: livingroom/sleep_mode + payload: 'ON' + then: + - deep_sleep.enter: deep_sleep_1 See Also -------- diff --git a/components/display/images/lcd-full.jpg b/components/display/images/lcd-full.jpg index e593ae922..6ea1ab764 100644 Binary files a/components/display/images/lcd-full.jpg and b/components/display/images/lcd-full.jpg differ diff --git a/components/display/images/lcd-hello_world.jpg b/components/display/images/lcd-hello_world.jpg index ac1e4fd24..a5c6930fa 100644 Binary files a/components/display/images/lcd-hello_world.jpg and b/components/display/images/lcd-hello_world.jpg differ diff --git a/components/display/images/lcd-pcf8574.jpg b/components/display/images/lcd-pcf8574.jpg index c8cd0290c..5ade80445 100644 Binary files a/components/display/images/lcd-pcf8574.jpg and b/components/display/images/lcd-pcf8574.jpg differ diff --git a/components/display/images/max7219-full.jpg b/components/display/images/max7219-full.jpg index b3b10ea4a..0f838802a 100644 Binary files a/components/display/images/max7219-full.jpg and b/components/display/images/max7219-full.jpg differ diff --git a/components/display/images/max7219/seg09.svg b/components/display/images/max7219/seg09.svg index 0f0c71192..5da3e7ad0 100644 --- a/components/display/images/max7219/seg09.svg +++ b/components/display/images/max7219/seg09.svg @@ -1,76 +1 @@ - - - - - - image/svg+xml - - - - - - - - - - - - - - + \ No newline at end of file diff --git a/components/display/images/max7219/seg8E.svg b/components/display/images/max7219/seg8E.svg index 6a13e740a..308ad8200 100644 --- a/components/display/images/max7219/seg8E.svg +++ b/components/display/images/max7219/seg8E.svg @@ -1 +1 @@ - + \ No newline at end of file diff --git a/components/display/images/nextion-full.jpg b/components/display/images/nextion-full.jpg index 1e0c5805a..f7adfdfb4 100644 Binary files a/components/display/images/nextion-full.jpg and b/components/display/images/nextion-full.jpg differ diff --git a/components/display/images/ssd1306-full.jpg b/components/display/images/ssd1306-full.jpg index d660e3363..51325d77a 100644 Binary files a/components/display/images/ssd1306-full.jpg and b/components/display/images/ssd1306-full.jpg differ diff --git a/components/display/images/ssd1325-full.jpg b/components/display/images/ssd1325-full.jpg index 49106b41c..a5cebb918 100644 Binary files a/components/display/images/ssd1325-full.jpg and b/components/display/images/ssd1325-full.jpg differ diff --git a/components/display/images/waveshare_epaper-full.jpg b/components/display/images/waveshare_epaper-full.jpg index e390585b6..25943205b 100644 Binary files a/components/display/images/waveshare_epaper-full.jpg and b/components/display/images/waveshare_epaper-full.jpg differ diff --git a/components/display/images/waveshare_epaper-pins.jpg b/components/display/images/waveshare_epaper-pins.jpg index 14ca177d6..f68c1843d 100644 Binary files a/components/display/images/waveshare_epaper-pins.jpg and b/components/display/images/waveshare_epaper-pins.jpg differ diff --git a/components/display/index.rst b/components/display/index.rst index a36d15f9e..c8bec3c01 100644 --- a/components/display/index.rst +++ b/components/display/index.rst @@ -118,7 +118,7 @@ Additionally, you have access to two helper methods which will fetch the width a # ... lambda: |- // Draw a circle in the middle of the display - it.filled_circle(it.get_width() / 2, it.get_height() / 2); + it.filled_circle(it.get_width() / 2, it.get_height() / 2, 20); You can view the full API documentation for the rendering engine in the "API Reference" in the See Also section. diff --git a/components/display/st7789v.rst b/components/display/st7789v.rst index 2db2377b8..d595f5f3f 100644 --- a/components/display/st7789v.rst +++ b/components/display/st7789v.rst @@ -201,6 +201,7 @@ appropriate lines of C code in the lambada to hide or show the image or text as pin: number: GPIO0 inverted: true + mode: INPUT_PULLUP name: "T-Display Button Input 0" id: tdisplay_button_input_0 - platform: gpio diff --git a/components/display/waveshare_epaper.rst b/components/display/waveshare_epaper.rst index 9dc7de1d4..119d48717 100644 --- a/components/display/waveshare_epaper.rst +++ b/components/display/waveshare_epaper.rst @@ -8,6 +8,7 @@ Waveshare E-Paper Display The ``waveshare_epaper`` display platform allows you to use some E-Paper displays sold by `Waveshare `__ with ESPHome. The 2.13" `TTGO module `__ with an ESP32 on the board is supported as well. +Depending on your specific revision of the board you might need to try out the `-b73` version (see below). Similar modules sold by other vendors might also work but not have been tested yet. Currently only single-color E-Ink displays are implemented and of those only a few modules. @@ -73,13 +74,14 @@ Configuration variables: - ``1.54in`` - ``2.13in`` (not tested) - ``2.13in-ttgo`` (T5_V2.3 tested) - - ``2.70in`` + - ``2.13in-ttgo-b73`` (T5_V2.3 with B73 display tested) + - ``2.70in`` (currently not working with the HAT Rev 2.1 version) - ``2.90in`` - ``2.90in-b`` (B/W rendering only) - ``4.20in`` - ``5.83in`` - ``7.50in`` - - ``7.50inV2`` + - ``7.50inV2`` (Can't use with an ESP8266 as it runs out of RAM) - **busy_pin** (*Optional*, :ref:`Pin Schema `): The BUSY pin. Defaults to not connected. - **reset_pin** (*Optional*, :ref:`Pin Schema `): The RESET pin. Defaults to not connected. diff --git a/components/esphome.rst b/components/esphome.rst index 057132214..ca9f465c8 100644 --- a/components/esphome.rst +++ b/components/esphome.rst @@ -43,8 +43,6 @@ Advanced options: but you can customize this behavior using this option. - **platformio_options** (*Optional*, mapping): Additional options to pass over to PlatformIO in the platformio.ini file. See :ref:`esphome-platformio_options`. -- **use_custom_code** (*Optional*, boolean): Whether to configure the project for writing custom components. - This sets up some flags so that custom code should compile correctly - **includes** (*Optional*, list of files): A list of C[++] files to include in the main (auto-generated) sketch file for custom components. The paths in this list are relative to the directory where the YAML configuration file is in. Should have file extension ``.h`` - See :ref:`esphome-includes` for more info. diff --git a/components/ethernet.rst b/components/ethernet.rst index de59472fc..4ba201415 100644 --- a/components/ethernet.rst +++ b/components/ethernet.rst @@ -91,7 +91,19 @@ Configuration for Olimex ESP32-POE clk_mode: GPIO17_OUT phy_addr: 0 power_pin: GPIO12 - + +Configuration for LILYGO TTGO T-Internet-POE ESP32-WROOM LAN8270A Chip +---------------------------------------------------------------------- + +.. code-block:: yaml + + ethernet: + type: LAN8720 + mdc_pin: GPIO23 + mdio_pin: GPIO18 + clk_mode: GPIO17_OUT + phy_addr: 0 + Configuration for OpenHacks LAN8720 ----------------------------------- @@ -106,6 +118,18 @@ Configuration for OpenHacks LAN8720 Note: This board has an issue that might cause the ESP32 to boot in program mode. When testing, make sure you are monitoring the serial output and reboot the device several times to see if it boots into the program properly. +Configuration for Wireless Tag WT32-ETH01 +----------------------------------------- + +.. code-block:: yaml + + ethernet: + type: LAN8720 + mdc_pin: GPIO23 + mdio_pin: GPIO18 + clk_mode: GPIO0_IN + phy_addr: 1 + power_pin: GPIO16 See Also -------- diff --git a/components/fan/images/tuyafan.jpg b/components/fan/images/tuyafan.jpg index 00693131b..a28f2c8ef 100644 Binary files a/components/fan/images/tuyafan.jpg and b/components/fan/images/tuyafan.jpg differ diff --git a/components/i2c.rst b/components/i2c.rst index dccc55f72..a8634ec33 100644 --- a/components/i2c.rst +++ b/components/i2c.rst @@ -8,10 +8,13 @@ I²C Bus :image: i2c.png :keywords: i2c, iic, bus -This component sets up the I²C bus for your ESP32 or ESP8266. In order for those components +This component sets up the I²C bus for your ESP32 or ESP8266. In order for these components to work correctly, you need to define the I²C bus in your configuration. Please note the ESP will enable its internal 10kΩ pullup resistors for these pins, so you usually don't need to -put on external ones. +put on external ones. You can use multiple devices on one I²C bus as each device is given a +unique address for communicating between between it and the ESP. You can do this by hopping +wires from the two lines (SDA and SCL) from each device board to the next device board or by +connecting the wires from each device back to the two I²C pins on the ESP. .. code-block:: yaml diff --git a/components/images/buzzer.jpg b/components/images/buzzer.jpg index 25fb00b1c..2d0254226 100644 Binary files a/components/images/buzzer.jpg and b/components/images/buzzer.jpg differ diff --git a/components/images/gps-full.jpg b/components/images/gps-full.jpg index 3295ecef5..b650bc08b 100644 Binary files a/components/images/gps-full.jpg and b/components/images/gps-full.jpg differ diff --git a/components/images/pcf8574-full.jpg b/components/images/pcf8574-full.jpg index 0869976ee..43c1cde33 100644 Binary files a/components/images/pcf8574-full.jpg and b/components/images/pcf8574-full.jpg differ diff --git a/components/images/power_supply-atx.jpg b/components/images/power_supply-atx.jpg index 2b9622a9b..485239b88 100644 Binary files a/components/images/power_supply-atx.jpg and b/components/images/power_supply-atx.jpg differ diff --git a/components/images/rf_bridge-full.jpg b/components/images/rf_bridge-full.jpg index 38a0851b2..9d7c141b1 100644 Binary files a/components/images/rf_bridge-full.jpg and b/components/images/rf_bridge-full.jpg differ diff --git a/components/images/sn74hc595-full.jpg b/components/images/sn74hc595-full.jpg index e6c1b8736..66f23a4c9 100644 Binary files a/components/images/sn74hc595-full.jpg and b/components/images/sn74hc595-full.jpg differ diff --git a/components/light/images/monochromatic-detail.jpg b/components/light/images/monochromatic-detail.jpg index 2167a3296..8c56e4d98 100644 Binary files a/components/light/images/monochromatic-detail.jpg and b/components/light/images/monochromatic-detail.jpg differ diff --git a/components/light/images/monochromatic-strip.jpg b/components/light/images/monochromatic-strip.jpg index 0650106b7..5b877e505 100644 Binary files a/components/light/images/monochromatic-strip.jpg and b/components/light/images/monochromatic-strip.jpg differ diff --git a/components/light/images/rgb-detail.jpg b/components/light/images/rgb-detail.jpg index d7958e0ff..b37836ec5 100644 Binary files a/components/light/images/rgb-detail.jpg and b/components/light/images/rgb-detail.jpg differ diff --git a/components/light/images/rgb-strip.jpg b/components/light/images/rgb-strip.jpg index b1e4e5217..14bea7674 100644 Binary files a/components/light/images/rgb-strip.jpg and b/components/light/images/rgb-strip.jpg differ diff --git a/components/light/index.rst b/components/light/index.rst index 72917429d..da9c43e04 100644 --- a/components/light/index.rst +++ b/components/light/index.rst @@ -718,7 +718,7 @@ This effect allows you to access each LED individually in a custom light effect. Available variables in the lambda: - **it** - :apiclass:`AddressableLight ` instance (see API reference for more info). -- **current_color** - :apiclass:`ESPColor ` ` instance (see API reference for more info). +- **current_color** - :apistruct:`ESPColor ` instance (see API reference for more info). - **initial_run** - A bool which is true on the first execution of the lambda. Useful to reset static variables when restarting a effect. .. code-block:: yaml diff --git a/components/light/partition.rst b/components/light/partition.rst index 9d6addd47..b12af2e29 100644 --- a/components/light/partition.rst +++ b/components/light/partition.rst @@ -12,6 +12,10 @@ segments can be individually controlled. Similarly, a single light strip can be partitioned into multiple partitions with this integration. +If you want to do this, you may run into strange behavior like that the original light entity (e.g., ``fastled_clockless``) +may be conflicting with the partition. For better control over which segments of the strip will overlap each other, +mark the original ``light`` as ``internal: true``. + .. code-block:: yaml # Example configuration entry @@ -31,6 +35,8 @@ Similarly, a single light strip can be partitioned into multiple partitions with # Example for light segment source - platform: fastled_clockless id: light2 + # You may want (but don't need) this + internal: true # Other settings Configuration variables: diff --git a/components/mcp230xx.rst b/components/mcp230xx.rst index 4a79849b9..ccaefdc46 100644 --- a/components/mcp230xx.rst +++ b/components/mcp230xx.rst @@ -36,8 +36,7 @@ The MCP23008 component (`datasheet `: + .. code-block:: yaml + + mqtt: + # Give the mqtt component an ID + id: mqtt_client + .. code-block:: cpp - App.get_mqtt_client()->subscribe("the/topic", [=](const std::string &payload) { + id(mqtt_client).subscribe("the/topic", [=](const std::string &payload) { // do something with payload }); @@ -362,7 +368,7 @@ Please note that it's a good idea to check if the key exists in the Json Object # ... on_json_message: topic: the/topic - then: + then: - light.turn_on: id: living_room_lights @@ -397,9 +403,15 @@ Configuration variables: This action can also be used in :ref:`lambdas `: + .. code-block:: yaml + + mqtt: + # Give the mqtt component an ID + id: mqtt_client + .. code-block:: cpp - App.get_mqtt_client()->subscribe_json("the/topic", [=](JsonObject &root) { + id(mqtt_client).subscribe_json("the/topic", [=](JsonObject &root) { // do something with JSON-decoded value root }); @@ -522,6 +534,22 @@ the MQTT broker. then: - logger.log: MQTT is connected! +.. note:: + + This action can also be written in :ref:`lambdas `: + + .. code-block:: yaml + + mqtt: + # Give the mqtt component an ID + id: mqtt_client + + .. code-block:: cpp + + if (id(mqtt_client)->is_connected()) { + // do something if MQTT is connected + } + See Also -------- diff --git a/components/output/ac_dimmer.rst b/components/output/ac_dimmer.rst index 623357f33..b56010732 100644 --- a/components/output/ac_dimmer.rst +++ b/components/output/ac_dimmer.rst @@ -33,12 +33,12 @@ for example the `RobotDyn dimmer # Example configuration entry output: - platform: ac_dimmer - id: dimmer1 - gate_pin: D7 - zero_cross_pin: - number: D6 - mode: INPUT - inverted: yes + id: dimmer1 + gate_pin: D7 + zero_cross_pin: + number: D6 + mode: INPUT + inverted: yes light: - platform: monochromatic diff --git a/components/output/esp32_dac.rst b/components/output/esp32_dac.rst index e92f19e67..5920a0541 100644 --- a/components/output/esp32_dac.rst +++ b/components/output/esp32_dac.rst @@ -12,7 +12,7 @@ no need for additional filtering. The DAC spans across two pins, each on its own channel: GPIO25 (Channel 1) and GPIO26 (Channel 2). -The output level is a percentage of the board supply voltage (VDD_A) - generally this will be 3.3V. +The output level is a percentage of the board supply voltage (VDD_A) - generally this will be 3.3 V. .. code-block:: yaml @@ -29,6 +29,13 @@ The output level is a percentage of the board supply voltage (VDD_A) - generally - output.set_level: id: dac_output level: 50% + + # Use the DAC output as a light + light: + - platform: monochromatic + output: dac_output + gamma_correct: 1.4 + id: dac_output Configuration variables: @@ -48,6 +55,7 @@ Use Cases - Driving a bar graph or large amount of LEDs using an analog-controlled LED driver like the LM3914 (`datasheet `__); this can allow you to make tank level indicators, temperature gauges, and so on from a single output pin +- Generating 0-10 V for a dimmable light (operational amplifier required) See Also -------- diff --git a/components/output/images/pca9685-full.jpg b/components/output/images/pca9685-full.jpg index f607f5f38..556e16659 100644 Binary files a/components/output/images/pca9685-full.jpg and b/components/output/images/pca9685-full.jpg differ diff --git a/components/remote_receiver.rst b/components/remote_receiver.rst index 1c267ccad..fb77427ce 100644 --- a/components/remote_receiver.rst +++ b/components/remote_receiver.rst @@ -74,6 +74,9 @@ Automations: - **on_rc5** (*Optional*, :ref:`Automation `): An automation to perform when a RC5 remote code has been decoded. A variable ``x`` of type :apiclass:`remote_base::RC5Data` is passed to the automation for use in lambdas. +- **on_rc_switch** (*Optional*, :ref:`Automation `): An automation to perform when a + RCSwitch RF code has been decoded. A variable ``x`` of type :apiclass:`remote_base::RCSwitchData` + is passed to the automation for use in lambdas. - **on_samsung** (*Optional*, :ref:`Automation `): An automation to perform when a Samsung remote code has been decoded. A variable ``x`` of type :apiclass:`remote_base::SamsungData` is passed to the automation for use in lambdas. @@ -208,6 +211,20 @@ Remote code selection (exactly one of these has to be included): remote_transmitter: pin: 5 carrier_duty_percent: 100% + +.. note:: + + To caputure the codes more effectively with directly connected receiver like tsop38238 you can try to use `INPUT_PULLUP`: + + .. code-block:: yaml + + remote_receiver: + pin: + number: D4 + inverted: True + mode: INPUT_PULLUP + dump: all + See Also -------- diff --git a/components/sensor/adc.rst b/components/sensor/adc.rst index efc393af1..e9832c37f 100644 --- a/components/sensor/adc.rst +++ b/components/sensor/adc.rst @@ -72,11 +72,15 @@ To measure voltages higher than 1.1V, set ``attenuation`` to one of the `followi ESP8266 Measuring VCC --------------------- -On the ESP8266 you can even measure the voltage the chip is getting. This can be useful in situations +On the ESP8266 you can even measure the voltage the *chip is getting*. This can be useful in situations where you want to shut down the chip if the voltage is low when using a battery. To measure the VCC voltage, set ``pin:`` to ``VCC`` and make sure nothing is connected to the ``A0`` pin. +.. note:: + + To avoid confusion: It measures the voltage at the chip, and not at the VCC pin of the board. It should usually be around 3.3V. + .. code-block:: yaml sensor: diff --git a/components/sensor/apds9960.rst b/components/sensor/apds9960.rst index f11917cb6..ba0909054 100644 --- a/components/sensor/apds9960.rst +++ b/components/sensor/apds9960.rst @@ -6,7 +6,7 @@ APDS9960 Sensor :image: apds9960.jpg The ``apds9960`` sensor platform allows you to use your APDS9960 RGB and gesture sensors -(`datasheet `__, +(`datasheet `__, `SparkFun`_) with ESPHome. The :ref:`I²C ` is required to be set up in your configuration for this sensor to work. diff --git a/components/sensor/bh1750.rst b/components/sensor/bh1750.rst index 77c5948b7..619c9a0b1 100644 --- a/components/sensor/bh1750.rst +++ b/components/sensor/bh1750.rst @@ -59,6 +59,6 @@ See Also - :ref:`sensor-filters` - :doc:`tsl2561` -- :apiref:`bh7150/bh7150.h` +- :apiref:`bh1750/bh1750.h` - `BH1750 Library `__ by `@claws `__ - :ghedit:`Edit` diff --git a/components/sensor/bme280.rst b/components/sensor/bme280.rst index ea661602a..e4ce7bdd0 100644 --- a/components/sensor/bme280.rst +++ b/components/sensor/bme280.rst @@ -37,7 +37,7 @@ required to be set up in your configuration for this sensor to work. Configuration variables: ------------------------ -- **temperature** (**Required**): The information for the temperature. +- **temperature** (*Optional*): The information for the temperature. sensor - **name** (**Required**, string): The name for the temperature @@ -47,7 +47,7 @@ Configuration variables: - **id** (*Optional*, :ref:`config-id`): Set the ID of this sensor for use in lambdas. - All other options from :ref:`Sensor `. -- **pressure** (**Required**): The information for the pressure sensor. +- **pressure** (*Optional*): The information for the pressure sensor. - **name** (**Required**, string): The name for the pressure sensor. - **oversampling** (*Optional*): The oversampling parameter for the temperature sensor. @@ -55,7 +55,7 @@ Configuration variables: - **id** (*Optional*, :ref:`config-id`): Set the ID of this sensor for use in lambdas. - All other options from :ref:`Sensor `. -- **humidity** (**Required**): The information for the pressure sensor. +- **humidity** (*Optional*): The information for the pressure sensor. - **name** (**Required**, string): The name for the humidity sensor. - **oversampling** (*Optional*): The oversampling parameter for the temperature sensor. diff --git a/components/sensor/bme680.rst b/components/sensor/bme680.rst index 3ee249e2f..710c848fd 100644 --- a/components/sensor/bme680.rst +++ b/components/sensor/bme680.rst @@ -39,7 +39,7 @@ your configuration for this sensor to work. Configuration variables: ------------------------ -- **temperature** (**Required**): The information for the temperature sensor. +- **temperature** (*Optional*): The information for the temperature sensor. - **name** (**Required**, string): The name for the temperature sensor. - **oversampling** (*Optional*): The oversampling parameter for the temperature sensor. @@ -47,7 +47,7 @@ Configuration variables: - **id** (*Optional*, :ref:`config-id`): Set the ID of this sensor for use in lambdas. - All other options from :ref:`Sensor `. -- **pressure** (**Required**): The information for the pressure sensor. +- **pressure** (*Optional*): The information for the pressure sensor. - **name** (**Required**, string): The name for the pressure sensor. - **oversampling** (*Optional*): The oversampling parameter for the temperature sensor. @@ -55,7 +55,7 @@ Configuration variables: - **id** (*Optional*, :ref:`config-id`): Set the ID of this sensor for use in lambdas. - All other options from :ref:`Sensor `. -- **humidity** (**Required**): The information for the humidity sensor. +- **humidity** (*Optional*): The information for the humidity sensor. - **name** (**Required**, string): The name for the humidity sensor. - **oversampling** (*Optional*): The oversampling parameter for the temperature sensor. @@ -63,14 +63,14 @@ Configuration variables: - **id** (*Optional*, :ref:`config-id`): Set the ID of this sensor for use in lambdas. - All other options from :ref:`Sensor `. -- **gas_resistance** (**Required**): The information for the gas sensor. +- **gas_resistance** (*Optional*): The information for the gas sensor. - **name** (**Required**, string): The name for the gas resistance sensor. - **id** (*Optional*, :ref:`config-id`): Set the ID of this sensor for use in lambdas. - All other options from :ref:`Sensor `. - **address** (*Optional*, int): Manually specify the I²C address of - the sensor. Defaults to ``0x77``. Another address can be ``0x76``. + the sensor. Defaults to ``0x76``. Another address can be ``0x77``. - **iir_filter** (*Optional*): Set up an Infinite Impulse Response filter to increase accuracy. One of ``OFF``, ``1x``, ``3x``, ``7x``, ``15x``, ``31x``, ``63x`` and ``127x``. Defaults to ``OFF``. - **heater** (*Optional*): The settings for the internal heater for the gas sensor. Set this diff --git a/components/sensor/bmp085.rst b/components/sensor/bmp085.rst index b18c50181..3f3c6d82a 100644 --- a/components/sensor/bmp085.rst +++ b/components/sensor/bmp085.rst @@ -38,14 +38,14 @@ your configuration for this sensor to work. Configuration variables: ------------------------ -- **temperature** (**Required**): The information for the temperature sensor. +- **temperature** (*Optional*): The information for the temperature sensor. - **name** (**Required**, string): The name for the temperature sensor. - **id** (*Optional*, :ref:`config-id`): Set the ID of this sensor for use in lambdas. - All other options from :ref:`Sensor `. -- **pressure** (**Required**): The information for the pressure sensor. +- **pressure** (*Optional*): The information for the pressure sensor. - **name** (**Required**, string): The name for the pressure sensor. - **id** (*Optional*, :ref:`config-id`): Set the ID of this sensor for use in lambdas. diff --git a/components/sensor/bmp280.rst b/components/sensor/bmp280.rst index 017e84039..87337481c 100644 --- a/components/sensor/bmp280.rst +++ b/components/sensor/bmp280.rst @@ -35,7 +35,7 @@ required to be set up in your configuration for this sensor to work. Configuration variables: ------------------------ -- **temperature** (**Required**): The information for the temperature. +- **temperature** (*Optional*): The information for the temperature. sensor - **name** (**Required**, string): The name for the temperature @@ -45,7 +45,7 @@ Configuration variables: - **id** (*Optional*, :ref:`config-id`): Set the ID of this sensor for use in lambdas. - All other options from :ref:`Sensor `. -- **pressure** (**Required**): The information for the pressure sensor. +- **pressure** (*Optional*): The information for the pressure sensor. - **name** (**Required**, string): The name for the pressure sensor. - **oversampling** (*Optional*): The oversampling parameter for the temperature sensor. diff --git a/components/sensor/custom.rst b/components/sensor/custom.rst index 4e7885b0a..c22899205 100644 --- a/components/sensor/custom.rst +++ b/components/sensor/custom.rst @@ -76,7 +76,7 @@ Let's now also take a closer look at this line, which you might not be too used .. code-block:: cpp - class MyCustomSensor : public Component, public Sensor { + class MyCustomSensor : public Component, public Sensor { What this line is essentially saying is that we're defining our own class that's called ``MyCustomSensor`` which is also a subclass of :apiclass:`Component` and :apiclass:`Sensor `. @@ -132,6 +132,57 @@ Every time ``update`` is called we will now **publish** a new value to the front The rest of ESPHome will then take care of processing this value and ultimately publishing it to the outside world (for example using MQTT). +One last thing. Some sensors, such as the BMP180 were are going to explain later, require some other component before they can be used. Remember how we talked about the ``setup()`` method? Well just like when writing in the Arduino IDE, components need to be set up in the right order. For that ESPHome introduces another method in the :apiclass:`Component` class. + +.. code-block:: cpp + + float get_setup_priority() const override { return esphome::setup_priority::HARDWARE; } + +Where HARDWARE can be any of: + +.. code-block:: cpp + + /// For communication buses like i2c/spi + extern const float BUS; + /// For components that represent GPIO pins like PCF8573 + extern const float IO; + /// For components that deal with hardware and are very important like GPIO switch + extern const float HARDWARE; + /// For components that import data from directly connected sensors like DHT. + extern const float DATA; + /// Alias for DATA (here for compatability reasons) + extern const float HARDWARE_LATE; + /// For components that use data from sensors like displays + extern const float PROCESSOR; + extern const float WIFI; + /// For components that should be initialized after WiFi is connected. + extern const float AFTER_WIFI; + /// For components that should be initialized after a data connection (API/MQTT) is connected. + extern const float AFTER_CONNECTION; + /// For components that should be initialized at the very end of the setup process. + extern const float LATE; + +Now don't let the wording confuse you. The ``get_setup_priority()`` method is an override. Instead of fetching the setup priority setup for us, it instead fetches the setup priority for esphome, while being defined by us. The BMP180 would for instance need to be setup with a priority of IO or lower. A serial streaming (TCP) server would require a working WIFI setup and therefore get AFTER_WIFI. + +This finalizes our example as: + +.. code-block:: cpp + + class MyCustomSensor : public PollingComponent, public Sensor { + public: + // constructor + MyCustomSensor() : PollingComponent(15000) {} + + float get_setup_priority() const override { return esphome::setup_priority::XXXX; } + + void setup() override { + // This will be called by App.setup() + } + void update() override { + // This will be called every "update_interval" milliseconds. + } + }; + Step 2: Registering the custom sensor ------------------------------------- diff --git a/components/sensor/dallas.rst b/components/sensor/dallas.rst index 5a443c01b..b3225bb3c 100644 --- a/components/sensor/dallas.rst +++ b/components/sensor/dallas.rst @@ -20,7 +20,7 @@ and similar 1-Wire temperature sensors. To use your :ref:`dallas sensor `, first define a dallas “hub” with a pin and id, which you will later use to create the sensors. The 1-Wire bus the sensors are connected to should have an external pullup resistor of -about 4.7KΩ. For this, connect a resistor of *about* 4.7KΩ (values around that like 1Ω will, if you don't have +about 4.7KΩ. For this, connect a resistor of *about* 4.7KΩ (values around that like 1KΩ will, if you don't have massively long wires, work fine in most cases) between ``3.3V`` and the data pin. .. code-block:: yaml diff --git a/components/sensor/hm3301.rst b/components/sensor/hm3301.rst index 2fb6e3ceb..544e75476 100644 --- a/components/sensor/hm3301.rst +++ b/components/sensor/hm3301.rst @@ -26,7 +26,7 @@ The sensor communicate with board by :ref:`I²C ` protocol, and requires 3. name: "PM10.0" aqi: name: "AQI" - type: "CAQI" + calculation_type: "CAQI" Configuration variables: ------------------------ @@ -51,7 +51,7 @@ Configuration variables: - **aqi** (*Optional*): AQI sensor. Requires the ``pm_2_5`` and ``pm_10_0`` sensors defined. See below. - - **type** (**Required**): One of: ``AQI`` or ``CAQI``. + - **calculation_type** (**Required**): One of: ``AQI`` or ``CAQI``. - **name** (**Required**, string): The name for the temperature sensor. - **id** (*Optional*, :ref:`config-id`): Set the ID of this sensor for use in lambdas. - All other options from :ref:`Sensor `. @@ -75,7 +75,7 @@ There are two implementations: name: "PM10.0" aqi: name: "AQI" - type: "CAQI" + calculation_type: "CAQI" See Also diff --git a/components/sensor/homeassistant.rst b/components/sensor/homeassistant.rst index 8ff7649cf..ec2bfc153 100644 --- a/components/sensor/homeassistant.rst +++ b/components/sensor/homeassistant.rst @@ -20,6 +20,10 @@ states from your Home Assistant instance using the :doc:`native API `. + + Albeit you might not plan to __export__ states from the node and you do not need an entity of the node + in Home Assistant, this component still requires you to register the node under Home Assistant. See: + :doc:`Getting started with Hassio ` Importing attributes is currently not supported, but you can create template sensors in Home Assistant that return the attribute of a sensor and then import the template sensor here. diff --git a/components/sensor/images/ads1115-full.jpg b/components/sensor/images/ads1115-full.jpg index 3b9149674..fbc8b818e 100644 Binary files a/components/sensor/images/ads1115-full.jpg and b/components/sensor/images/ads1115-full.jpg differ diff --git a/components/sensor/images/apds9960-full.jpg b/components/sensor/images/apds9960-full.jpg index c7b4aca57..50a024ae7 100644 Binary files a/components/sensor/images/apds9960-full.jpg and b/components/sensor/images/apds9960-full.jpg differ diff --git a/components/sensor/images/as3935.jpg b/components/sensor/images/as3935.jpg index 195b58801..dd6e17eb6 100644 Binary files a/components/sensor/images/as3935.jpg and b/components/sensor/images/as3935.jpg differ diff --git a/components/sensor/images/atm90e32-cs-2chan-full.jpg b/components/sensor/images/atm90e32-cs-2chan-full.jpg index 36106225e..51d679360 100644 Binary files a/components/sensor/images/atm90e32-cs-2chan-full.jpg and b/components/sensor/images/atm90e32-cs-2chan-full.jpg differ diff --git a/components/sensor/images/atm90e32-cs-6chan-full.jpg b/components/sensor/images/atm90e32-cs-6chan-full.jpg index 0363150a1..f4b70b5d5 100644 Binary files a/components/sensor/images/atm90e32-cs-6chan-full.jpg and b/components/sensor/images/atm90e32-cs-6chan-full.jpg differ diff --git a/components/sensor/images/bh1750-full.jpg b/components/sensor/images/bh1750-full.jpg index 6081baa32..5e1234689 100644 Binary files a/components/sensor/images/bh1750-full.jpg and b/components/sensor/images/bh1750-full.jpg differ diff --git a/components/sensor/images/bme280-full.jpg b/components/sensor/images/bme280-full.jpg index 548a450f2..ffef6af17 100644 Binary files a/components/sensor/images/bme280-full.jpg and b/components/sensor/images/bme280-full.jpg differ diff --git a/components/sensor/images/bme280-pins.jpg b/components/sensor/images/bme280-pins.jpg index 2979c9151..730502eb1 100644 Binary files a/components/sensor/images/bme280-pins.jpg and b/components/sensor/images/bme280-pins.jpg differ diff --git a/components/sensor/images/bme680-full.jpg b/components/sensor/images/bme680-full.jpg index e4f6e5153..4c82c4422 100644 Binary files a/components/sensor/images/bme680-full.jpg and b/components/sensor/images/bme680-full.jpg differ diff --git a/components/sensor/images/bmp180-full.jpg b/components/sensor/images/bmp180-full.jpg index 7390bb529..8fad4cac8 100644 Binary files a/components/sensor/images/bmp180-full.jpg and b/components/sensor/images/bmp180-full.jpg differ diff --git a/components/sensor/images/bmp280-full.jpg b/components/sensor/images/bmp280-full.jpg index e8f0bf6c2..8562f3cc5 100644 Binary files a/components/sensor/images/bmp280-full.jpg and b/components/sensor/images/bmp280-full.jpg differ diff --git a/components/sensor/images/bmp280-pins.jpg b/components/sensor/images/bmp280-pins.jpg index 8d16b765b..7690d3e2d 100644 Binary files a/components/sensor/images/bmp280-pins.jpg and b/components/sensor/images/bmp280-pins.jpg differ diff --git a/components/sensor/images/ccs811-full.jpg b/components/sensor/images/ccs811-full.jpg index cbb4ac139..fd7781fcc 100644 Binary files a/components/sensor/images/ccs811-full.jpg and b/components/sensor/images/ccs811-full.jpg differ diff --git a/components/sensor/images/ct_clamp-ui.png b/components/sensor/images/ct_clamp-ui.png index 92ff60eaf..6d908c32d 100644 Binary files a/components/sensor/images/ct_clamp-ui.png and b/components/sensor/images/ct_clamp-ui.png differ diff --git a/components/sensor/images/custom-ui.png b/components/sensor/images/custom-ui.png index 76c83d84f..8b4f4bcd5 100644 Binary files a/components/sensor/images/custom-ui.png and b/components/sensor/images/custom-ui.png differ diff --git a/components/sensor/images/dallas-wired.jpg b/components/sensor/images/dallas-wired.jpg index 827762d5e..7eca417bd 100644 Binary files a/components/sensor/images/dallas-wired.jpg and b/components/sensor/images/dallas-wired.jpg differ diff --git a/components/sensor/images/dht-full.jpg b/components/sensor/images/dht-full.jpg index 6bba8998f..5409fa7d2 100644 Binary files a/components/sensor/images/dht-full.jpg and b/components/sensor/images/dht-full.jpg differ diff --git a/components/sensor/images/dht12-full.jpg b/components/sensor/images/dht12-full.jpg index 843bd7999..0a1f5b4b0 100644 Binary files a/components/sensor/images/dht12-full.jpg and b/components/sensor/images/dht12-full.jpg differ diff --git a/components/sensor/images/eco2-tvoc.png b/components/sensor/images/eco2-tvoc.png index 1c65b1871..fafee1ea0 100644 Binary files a/components/sensor/images/eco2-tvoc.png and b/components/sensor/images/eco2-tvoc.png differ diff --git a/components/sensor/images/htu21d-full.jpg b/components/sensor/images/htu21d-full.jpg index 75eb9a3a0..f823d02de 100644 Binary files a/components/sensor/images/htu21d-full.jpg and b/components/sensor/images/htu21d-full.jpg differ diff --git a/components/sensor/images/hx711-full.jpg b/components/sensor/images/hx711-full.jpg index 6bf6806e7..11cba4b7b 100644 Binary files a/components/sensor/images/hx711-full.jpg and b/components/sensor/images/hx711-full.jpg differ diff --git a/components/sensor/images/ina219-full.jpg b/components/sensor/images/ina219-full.jpg index b060cf1e7..9280f5805 100644 Binary files a/components/sensor/images/ina219-full.jpg and b/components/sensor/images/ina219-full.jpg differ diff --git a/components/sensor/images/ina226-full.jpg b/components/sensor/images/ina226-full.jpg index 5218ba684..13ecbf704 100644 Binary files a/components/sensor/images/ina226-full.jpg and b/components/sensor/images/ina226-full.jpg differ diff --git a/components/sensor/images/ina3221-full.jpg b/components/sensor/images/ina3221-full.jpg index 3924dd512..e61b339bb 100644 Binary files a/components/sensor/images/ina3221-full.jpg and b/components/sensor/images/ina3221-full.jpg differ diff --git a/components/sensor/images/ina3221-pins.jpg b/components/sensor/images/ina3221-pins.jpg index 09e774cf6..e18f866d0 100644 Binary files a/components/sensor/images/ina3221-pins.jpg and b/components/sensor/images/ina3221-pins.jpg differ diff --git a/components/sensor/images/max6675-full.jpg b/components/sensor/images/max6675-full.jpg index 0742a0d31..49c8a05f1 100644 Binary files a/components/sensor/images/max6675-full.jpg and b/components/sensor/images/max6675-full.jpg differ diff --git a/components/sensor/images/mhz19-full.jpg b/components/sensor/images/mhz19-full.jpg index 10ca4d574..27dbb7006 100644 Binary files a/components/sensor/images/mhz19-full.jpg and b/components/sensor/images/mhz19-full.jpg differ diff --git a/components/sensor/images/mhz19-pins.jpg b/components/sensor/images/mhz19-pins.jpg index 3500f6c8b..456ec889e 100644 Binary files a/components/sensor/images/mhz19-pins.jpg and b/components/sensor/images/mhz19-pins.jpg differ diff --git a/components/sensor/images/mpu6050-ui.png b/components/sensor/images/mpu6050-ui.png index 16eb3950a..1bbf0152b 100644 Binary files a/components/sensor/images/mpu6050-ui.png and b/components/sensor/images/mpu6050-ui.png differ diff --git a/components/sensor/images/ms5611-full.jpg b/components/sensor/images/ms5611-full.jpg index 7c5968bf2..95e9eb427 100644 Binary files a/components/sensor/images/ms5611-full.jpg and b/components/sensor/images/ms5611-full.jpg differ diff --git a/components/sensor/images/rotary_encoder.jpg b/components/sensor/images/rotary_encoder.jpg index 5bbaa6427..b751553a5 100644 Binary files a/components/sensor/images/rotary_encoder.jpg and b/components/sensor/images/rotary_encoder.jpg differ diff --git a/components/sensor/images/senseair_s8-full.jpg b/components/sensor/images/senseair_s8-full.jpg index e0859930e..3170ccdfa 100644 Binary files a/components/sensor/images/senseair_s8-full.jpg and b/components/sensor/images/senseair_s8-full.jpg differ diff --git a/components/sensor/images/senseair_s8-pins.jpg b/components/sensor/images/senseair_s8-pins.jpg index abcb9ff87..3cfbd49fd 100644 Binary files a/components/sensor/images/senseair_s8-pins.jpg and b/components/sensor/images/senseair_s8-pins.jpg differ diff --git a/components/sensor/images/sensirion-pm.png b/components/sensor/images/sensirion-pm.png index d8194a172..dd3dfb402 100644 Binary files a/components/sensor/images/sensirion-pm.png and b/components/sensor/images/sensirion-pm.png differ diff --git a/components/sensor/images/sgp30.png b/components/sensor/images/sgp30.png index e3ad41bac..24ffbb55c 100644 Binary files a/components/sensor/images/sgp30.png and b/components/sensor/images/sgp30.png differ diff --git a/components/sensor/images/shtc3.jpg b/components/sensor/images/shtc3.jpg index 923551823..bc8b601ff 100644 Binary files a/components/sensor/images/shtc3.jpg and b/components/sensor/images/shtc3.jpg differ diff --git a/components/sensor/images/sts3x.jpg b/components/sensor/images/sts3x.jpg index 66595d77e..25fec1e53 100644 Binary files a/components/sensor/images/sts3x.jpg and b/components/sensor/images/sts3x.jpg differ diff --git a/components/sensor/images/tcs34725-full.jpg b/components/sensor/images/tcs34725-full.jpg index 8f22bc410..d58372365 100644 Binary files a/components/sensor/images/tcs34725-full.jpg and b/components/sensor/images/tcs34725-full.jpg differ diff --git a/components/sensor/images/tsl2561-full.jpg b/components/sensor/images/tsl2561-full.jpg index 0c632da97..ce94a8e45 100644 Binary files a/components/sensor/images/tsl2561-full.jpg and b/components/sensor/images/tsl2561-full.jpg differ diff --git a/components/sensor/images/tx20.jpg b/components/sensor/images/tx20.jpg index f16c2fefe..3ff9c262b 100644 Binary files a/components/sensor/images/tx20.jpg and b/components/sensor/images/tx20.jpg differ diff --git a/components/sensor/images/ultrasonic-full.jpg b/components/sensor/images/ultrasonic-full.jpg index 911c85800..2619ca7ab 100644 Binary files a/components/sensor/images/ultrasonic-full.jpg and b/components/sensor/images/ultrasonic-full.jpg differ diff --git a/components/sensor/images/vl53l0x-ui.png b/components/sensor/images/vl53l0x-ui.png index ee9125465..007e073ea 100644 Binary files a/components/sensor/images/vl53l0x-ui.png and b/components/sensor/images/vl53l0x-ui.png differ diff --git a/components/sensor/images/xiaomi_cgd1.jpg b/components/sensor/images/xiaomi_cgd1.jpg index acf1802e1..9c642513e 100644 Binary files a/components/sensor/images/xiaomi_cgd1.jpg and b/components/sensor/images/xiaomi_cgd1.jpg differ diff --git a/components/sensor/images/xiaomi_cgg1.jpg b/components/sensor/images/xiaomi_cgg1.jpg index ba8e9061c..f54e5dd1e 100644 Binary files a/components/sensor/images/xiaomi_cgg1.jpg and b/components/sensor/images/xiaomi_cgg1.jpg differ diff --git a/components/sensor/images/xiaomi_gcls002.jpg b/components/sensor/images/xiaomi_gcls002.jpg index b585148c9..d097a7e0f 100644 Binary files a/components/sensor/images/xiaomi_gcls002.jpg and b/components/sensor/images/xiaomi_gcls002.jpg differ diff --git a/components/sensor/images/xiaomi_hhccpot002.jpg b/components/sensor/images/xiaomi_hhccpot002.jpg index 4709f5838..c704d64a1 100644 Binary files a/components/sensor/images/xiaomi_hhccpot002.jpg and b/components/sensor/images/xiaomi_hhccpot002.jpg differ diff --git a/components/sensor/images/xiaomi_jqjcy01ym.jpg b/components/sensor/images/xiaomi_jqjcy01ym.jpg index 820d1e5e1..c5dddf8c7 100644 Binary files a/components/sensor/images/xiaomi_jqjcy01ym.jpg and b/components/sensor/images/xiaomi_jqjcy01ym.jpg differ diff --git a/components/sensor/images/xiaomi_lywsd03mmc.jpg b/components/sensor/images/xiaomi_lywsd03mmc.jpg index 980ed0f71..6df4476e2 100644 Binary files a/components/sensor/images/xiaomi_lywsd03mmc.jpg and b/components/sensor/images/xiaomi_lywsd03mmc.jpg differ diff --git a/components/sensor/images/xiaomi_mjyd02yla.jpg b/components/sensor/images/xiaomi_mjyd02yla.jpg index a5ca0c0be..9d862a0f3 100644 Binary files a/components/sensor/images/xiaomi_mjyd02yla.jpg and b/components/sensor/images/xiaomi_mjyd02yla.jpg differ diff --git a/components/sensor/images/xiaomi_mue4094rt.jpg b/components/sensor/images/xiaomi_mue4094rt.jpg index cd13d9604..00c47bb65 100644 Binary files a/components/sensor/images/xiaomi_mue4094rt.jpg and b/components/sensor/images/xiaomi_mue4094rt.jpg differ diff --git a/components/sensor/images/zgm053-connection.jpg b/components/sensor/images/zgm053-connection.jpg index c1743dccb..1784dc1bd 100644 Binary files a/components/sensor/images/zgm053-connection.jpg and b/components/sensor/images/zgm053-connection.jpg differ diff --git a/components/sensor/images/zgm053-full.jpg b/components/sensor/images/zgm053-full.jpg index 2363be324..3bf77ac19 100644 Binary files a/components/sensor/images/zgm053-full.jpg and b/components/sensor/images/zgm053-full.jpg differ diff --git a/components/sensor/max31856.rst b/components/sensor/max31856.rst index 75eb50d31..cf966fa02 100644 --- a/components/sensor/max31856.rst +++ b/components/sensor/max31856.rst @@ -38,7 +38,7 @@ to have an :ref:`spi bus ` in your configuration with both **miso_pin** and mosi_pin: GPIO23 sensor: - - platform: MAX31856 + - platform: max31856 name: "BBQ Temperature" icon: "mdi:hamburger" cs_pin: GPIO17 diff --git a/components/sensor/pulse_counter.rst b/components/sensor/pulse_counter.rst index 32c096659..0030b4779 100644 --- a/components/sensor/pulse_counter.rst +++ b/components/sensor/pulse_counter.rst @@ -42,7 +42,7 @@ Configuration variables: - **internal_filter** (*Optional*, :ref:`config-time`): If a pulse shorter than this time is detected, it’s discarded and no pulse is counted. Defaults to ``13us``. On the ESP32, this value can not be higher than ``13us``, for the ESP8266 you can use larger intervals too. - If you enable this, set up the ``count_mode`` to increase on the falling edge, not leading edge. + If you enable this, set up the ``count_mode`` to increase on the falling edge, not leading edge. For S0 pulse meters that are used to meter power consumption 50-100 ms is a reasonable value. - **update_interval** (*Optional*, :ref:`config-time`): The interval to check the sensor. Defaults to ``60s``. diff --git a/components/sensor/pzemac.rst b/components/sensor/pzemac.rst index 3e0e0ffa3..4db8e162f 100644 --- a/components/sensor/pzemac.rst +++ b/components/sensor/pzemac.rst @@ -38,7 +38,6 @@ to some pins on your board and the baud rate set to 9600. rx_pin: D1 tx_pin: D2 baud_rate: 9600 - stop_bits: 2 sensor: - platform: pzemac diff --git a/components/sensor/sds011.rst b/components/sensor/sds011.rst index cde564d57..ddb1dc33d 100644 --- a/components/sensor/sds011.rst +++ b/components/sensor/sds011.rst @@ -44,6 +44,8 @@ If ``update_interval`` is between 1-30 minutes, the SDS011 periodically turns on For the remaining time the sensor is shut off. As a result, this mode can reduce power consumption and increases the lifetime of the SDS011. +Note that ``update_interval`` may not be set to ``never``. + Configuration variables: ------------------------ diff --git a/components/sensor/xiaomi_ble.rst b/components/sensor/xiaomi_ble.rst index e2b54a9c3..7cc9c5c9c 100644 --- a/components/sensor/xiaomi_ble.rst +++ b/components/sensor/xiaomi_ble.rst @@ -38,6 +38,11 @@ Configuration example: battery_level: name: "Xiaomi HHCCJCY01 Battery Level" +.. note:: + + Newer versions of HHCCJCY01 ship with firmware 3.2.1, and they + `don't send the battery level data anymore `__. + GCLS002 ******* @@ -166,7 +171,7 @@ There are the following possibilities to operate this sensor: 1. Xiaomi stock firmware (requires a bindkey in order to decrypt the received data, see :ref:`obtaining_the_bindkey`) 2. Device flashed with `ATC MiThermometer `__ custom firmware - + - "Mi Like" advertisement (dummy bindkey required) - "Custom" advertisement (no bindkey required) @@ -184,7 +189,7 @@ Configuration example for Xiaomi stock firmware or ATC MiThermometer firmware se name: "LYWSD03MMC Humidity" battery_level: name: "LYWSD03MMC Battery Level" - + Configuration example for ATC MiThermometer firmware set to "Custom" advertisement: .. code-block:: yaml @@ -228,7 +233,7 @@ Configuration example: JQJCY01YM ********* -Xiaomi (Honeywell) formaldehyde sensor, OLED display, broadcasts temperature, humidity, formaldehyde concentration (mg/m³) and battery status. +Xiaomi (Honeywell) formaldehyde sensor, OLED display, broadcasts temperature, humidity, formaldehyde concentration (mg/m³) and battery status. .. figure:: images/xiaomi_jqjcy01ym.jpg :align: center @@ -363,7 +368,7 @@ It can sometimes take some time for the first BLE broadcast to be received. Once Obtaining The Bindkey --------------------- -To set up an encrypted device such as the LYWSD03MMC (with Xiaomi stock firmware) and CGD1, you first need to obain the bind key. The ``xiaomi_ble`` sensor component is not able to automatically generate a bind key so other workarounds are necessary. +To set up an encrypted device such as the LYWSD03MMC (with Xiaomi stock firmware) and CGD1, you first need to obtain the bind key. The ``xiaomi_ble`` sensor component is not able to automatically generate a bind key so other workarounds are necessary. LYWSD03MMC ********** @@ -378,12 +383,15 @@ If the LYWSD03MMC sensor is operated with the Xiaomi stock firmware, you can use .. warning:: - The new bind key will work with ESPHome, but the Mi Home app will not recognise the sensor anymore once the device has been activated by the TeLink flasher application. To use the sensor again with the Xiaomi Mi Home app, the device needs to be removed and then re-added inside the Mi Home app. + The new bind key will work with ESPHome, but the Mi Home app will not recognise the sensor anymore once the device has been activated by the TeLink flasher application. To use the sensor again with the Xiaomi Mi Home app, the device needs to be removed and then re-added inside the Mi Home app. Other encrypted devices *********************** -For other encrypted devices such as the CGD1, you still need to use the original Mi Home app to add the sensor once. While adding the device, a new key is generated and uploaded into the Xiaomi cloud and to the device itself. Currently a chinese server needs to be selected as the rest of the world doesn't support most of these devices yet. Once generated, the key will not change again until the device is removed and re-added in the Xiaomi app. +The easiest method (confirmed to work for LYWSD03MMC) is to use the `Telink flasher method `__. The accompanying `video +`_ shows how to wirelessly flash a LYWSD03MMC, or how to obtain the bind key of the stock firmware (watch till around 13:10). The custom firmware allows you to change several settings of the device, including the smiley and the advertising interval. Keep in mind that when flashing the custom firmware, you need to enable the 'Advertising Type' to be 'Mi Like' and to give ESPHome a dummy bind key, as it still expects one even though the custom firmware does not encrypt the data. + +The other option is to use the original Mi Home app to add the sensor once. While adding the device, a new key is generated and uploaded into the Xiaomi cloud and to the device itself. Currently a chinese server needs to be selected as the rest of the world doesn't support most of these devices yet. Once generated, the key will not change again until the device is removed and re-added in the Xiaomi app. In order to obtain the bind key, a SSL packet sniffer needs to be setup on either an Android phone or the iPhone. A good choice for Android is the `Remote PCAP `__ in combination with `Wireshark `__. A tutorial on how to setup the Remote PCAP packet sniffer can be found `here `__ and `here `__. Instructions how to obtain the key using an iPhone are `here `__. Once the traffic between the Mi Home app and the Xiaomi servers has been recorded, the bind key will show in clear text: @@ -393,8 +401,8 @@ In order to obtain the bind key, a SSL packet sniffer needs to be setup on eithe "data" = "{"did":"blt.3.129q4nasgeg00","token":"20c665a7ff82a5bfb5eefc36","props":[{"type":"prop","key":"bind_key","value":"cfc7cc892f4e32f7a733086cf3443cb0"}, {"type":"prop","key":"smac","value":"A4:C1:38:8C:34:B7"}]}" -The ``bind_key`` is the 32 digits "value" item in the above output which needs to be inserted into the config file. - +The ``bind_key`` is the 32 digits "value" item in the above output which needs to be inserted into the config file. + See Also -------- @@ -402,8 +410,8 @@ See Also - :doc:`/components/esp32_ble_tracker` - :doc:`/components/sensor/index` - :apiref:`xiaomi_lywsd03mmc/xiaomi_ble.h` -- Xiaomi Home Assistant mitemp_bt custom component ``__ - by `@Magalex2x14 `__ +- Passive BLE monitor integration for Home Assistant (ble_monitor custom component) ``__ + by `@Magalex2x14 `__ and `@Ernst79 `__ - Xiaomi LYWSD03MMC passive sensor readout ``__ by `@ahpohl `__ - Custom firmware for the Xiaomi Thermometer LYWSD03MMC ``__ - TeLink flasher application ``__ diff --git a/components/sim800l.rst b/components/sim800l.rst index fdb43c6bc..ed208dab0 100644 --- a/components/sim800l.rst +++ b/components/sim800l.rst @@ -160,6 +160,23 @@ To trigger the automation from Home Assistant you can invoke the service with th recipient: "+15551234567" message: "Hello World!" + +Relay management commands received from an authorized sender: + +.. code-block:: yaml + + sim800l: + on_sms_received: + - lambda: |- + if ( (id(sms_sender).state == "+79991234567") && ( (id(sms_message).state == "relay_1_on") OR (id(sms_message).state == "Relay_1_on") ) ) { + id(relay_1).turn_on(); + } + switch: + - platform: gpio + id: relay_1 + pin: 0 + + See Also -------- diff --git a/components/stepper/index.rst b/components/stepper/index.rst index 98bf68b93..3ce05815a 100644 --- a/components/stepper/index.rst +++ b/components/stepper/index.rst @@ -19,9 +19,10 @@ and ULN2003 (`datasheet `__) are A4988 Configuration ------------------- +Put this code into the configuration file on ESPhome for this device. + .. code-block:: yaml - # Example configuration entry stepper: - platform: a4988 id: my_stepper @@ -69,6 +70,8 @@ Configuration variables: ULN2003 Configuration --------------------- +Put this code into the configuration file on ESPHome for this device. + .. code-block:: yaml # Example configuration entry @@ -103,7 +106,9 @@ Configuration variables: stepper at. Note most steppers can't step properly with speeds higher than 250 steps/s. - **acceleration** (*Optional*, float): The acceleration in ``steps/s^2`` (steps per seconds squared) to use when starting to move. The default is ``inf`` which means infinite acceleration, so the - stepper will try to drive with the full speed immediately. + stepper will try to drive with the full speed immediately. This value is helpful if that first motion of + the motor is too jerky for what it's moving. If you make this a small number, it will take the motor a + moment to get up to speed. - **deceleration** (*Optional*, float): The same as ``acceleration``, but for when the motor is decelerating shortly before reaching the set position. Defaults to ``inf`` (immediate deceleration). @@ -220,14 +225,15 @@ Configuration variables: Home Assistant Configuration ---------------------------- -This component will not show up in the Home Assistant frontend automatically because Home Assistant -does not support steppers natively (raise this issue in Home Assistant forums to make this a -higher priority for Home Assistant). You can add this to your Home Assistant configuration to -be able to control the stepper from the frontend. +This component will not show up in the Home Assistant front-end (Overview) automatically because +Home Assistant does not support steppers natively. + +You can add the stepper component code below to your Home Assistant configuration (``configuration.yaml``) to +be able to control the stepper from the front-end. .. code-block:: yaml - # Home Assistant configuration + # Add a slider control to Home Assistant to set an integer value input_number: stepper_control: name: Stepper Control @@ -236,7 +242,8 @@ be able to control the stepper from the frontend. max: 1000 step: 1 mode: slider - + + # Do something when the slider changes automation: - alias: Write Stepper Value to ESP trigger: @@ -248,6 +255,40 @@ be able to control the stepper from the frontend. data_template: target: '{{ trigger.to_state.state | int }}' +In the above code, "stepper_control" is the ID of a numeric input field. It must be unique and it is +used in the automation section as a reference name. The display name for this field is in +stepper_control's ``name`` key. + +If you want your user interface to give you more control over your stepper controller, such as +setting the acceleration, deceleration, etc, then you can add more input fields after ``stepper_control`` +but before ``automation``. They can be a simple number-entry field (mode: box) or a slider like this. +Each of these extra input fields needs an associated input parameter defined on the ESPHome device's +API service. + +The automation section tells Home Assistant what to do when the slider changes. It needs a trigger +(state of the ``stepper_control`` slider) and an action. In the trigger section, ``entity_id`` must refer +back to the configuration ID that triggers the automation. For us, that is the ``stepper_control`` +field in the ``input_number`` item. That's why the value is ``input_number.stepper_control``. + +In the action section, the service name is vital to get right: it's the glue that connects Home Automation's +front-end to the ESPHome device configuration. While you might expect the syntax to be ``esphome..``, +the correct syntax is to join the device ID to the API service ID with an underscore, +as in ``esphome.livingroom_control_stepper`` where "Livingroom" is a device in ESPHome and "control_stepper" is an +API service for that device. + +The template string is used to get the "state" value from the ``target`` field (defined in the target section) on the +``input_number`` component of the Home Assistant front-end. This value is then passed to the API service as defined in +the ESPHome device's configuration. The ``data_template`` section lists one value for each of the input parameters on +the service being called by the automation. In our case, the ESPHome device has an API service with a single parameter, +"target". If you called this "my_target", then the last line above should be ``my_target: '{{ trigger.to_state.state | int }}'``. +Getting this linkage right is very important. + +The following code needs to go in the ESPHome configuration file for this device. Above, we mention "API service" +a lot. This code is where that is defined. You may have already added it (or something similar). Note +that the input variable for the ``control_stepper`` service is called ``target``. That's what matches with the +automation configuration above. Also note that the variable ``target`` is defined as an integer. That means it +must be an integer number, not a string. + .. code-block:: yaml # ESPHome configuration diff --git a/components/uart.rst b/components/uart.rst index 2d0b2493f..064c3c882 100644 --- a/components/uart.rst +++ b/components/uart.rst @@ -85,7 +85,7 @@ This :ref:`Action ` sends a defined UART signal to the given UART - uart.write: 'Hello World' # For escape characters, you must use double quotes! - - uart.write: 'Hello World\r\n' + - uart.write: "Hello World\r\n" # Raw data - uart.write: [0x00, 0x20, 0x42] diff --git a/components/wifi.rst b/components/wifi.rst index 20d9522b7..a4738e46c 100644 --- a/components/wifi.rst +++ b/components/wifi.rst @@ -85,6 +85,13 @@ can connect to. Additionally, you can specify both a "normal" station mode and A same time. This will cause ESPHome to only enable the access point when no connection to the WiFi router can be made. +.. code-block:: yaml + + wifi: + ap: + ssid: "Livingroom Fallback Hotspot" + password: "W1PBGyrokfLz" + .. _wifi-manual_ip: Manual IPs @@ -198,6 +205,7 @@ These are advanced settings and you will usually need to consult your enterprise password: VerySafePassword - ssid: EAP-TLS_EnterpriseNetwork eap: + identity: bob certificate_authority: ca_cert.pem certificate: cert.pem key: key.pem diff --git a/cookbook/arduino_port_extender.rst b/cookbook/arduino_port_extender.rst index fad7ff9da..5c2e71161 100644 --- a/cookbook/arduino_port_extender.rst +++ b/cookbook/arduino_port_extender.rst @@ -25,10 +25,11 @@ Currently it is supported: - reading analog inputs - writing digital outputs -The Arduino sketch can be retrieved from `here `__ +The Arduino sketch can be retrieved from `here `__ you can rename it to ``.ino`` and use the Arduino IDE to program it. -You need to download `arduino_port_expander.h `__ and include the ape.h in the ESPHome configuration. +You need to download `arduino_port_expander.h `__ +and include the arduino_port_expander.h in the ESPHome configuration. .. code-block:: yaml diff --git a/cookbook/h801.rst b/cookbook/h801.rst index e7b6ed21a..53bc01547 100644 --- a/cookbook/h801.rst +++ b/cookbook/h801.rst @@ -105,7 +105,7 @@ The example below uses the TX pin as a PIR motion sensor input: :align: center :width: 80.0% -H801 shown with PIR connedted to header pins +H801 shown with PIR connected to header pins The following can be appended to the YAML file for your H801 to configure the TX pin as a motion sensor input. diff --git a/cookbook/iaq_board.rst b/cookbook/iaq_board.rst new file mode 100644 index 000000000..84f849134 --- /dev/null +++ b/cookbook/iaq_board.rst @@ -0,0 +1,63 @@ +.. seo:: + :description: IAQ (Indoor Air Quality) Board + :image: iaq_board2.jpg + :keywords: IAQ Board + +IAQ (Indoor Air Quality) Board +============================== + +.. figure:: images/iaq_board2.jpg + :align: center + :width: 100.0% + +IAQ Board is a DIY device for measuring internal air quality running with esphome. It's quite small and is based on a custom PCB where part of the components are soldered and connected. + +Here is what it can measure: + +- **Temperature / Humidity / Pressure** +- **Air particles PM1, PM2.5, PM10** +- **Carbon Dioxide with NDIR sensor** +- **Air Quality Index by EPA, based on 24h average PM2.5 particles** +- **Ambient light** +- **Total VOC (volatile organic compound)** +- **equivalent CO2 (not very correct compared with the NDIR sensor, but it's provided by the VOC sensor)** + +On top of that: + +- **At least one OLED display to show the data (can have one more on the top of the MCU board)** +- **three RGB wide angle LEDs with auto brightness. LED1 indicates PM2.5, LED2 - Air quality index, LED3 - CO2.** +- **auto night dimming of the displays and LEDs (can be disabled)** +- **MIN/MAX values of Temperature, PM2.5 and CO2, and 24h average PM2.5 value.** +- **multi function button for selection of the data to show on the display** + +ESPHome Configuration +--------------------- +Full documentation (PCB, Schematic, esphome yaml config) is published here: `https://github.com/nkitanov/iaq_board `__ + +YAML configuration is about 700 lines and can be downloaded from here: `iaq_board.yaml `__ + +.. figure:: images/iaq_board1.jpg + :align: center + :width: 100.0% + +.. raw:: html + + + +See Also +-------- + +- :doc:`/devices/nodemcu_esp8266` +- :doc:`/components/display/ssd1306` +- :doc:`/components/sensor/bme280` +- :doc:`/components/sensor/pmsx003` +- :doc:`/components/sensor/mhz19` +- :doc:`/components/sensor/sgp30` +- :doc:`/components/sensor/tsl2561` +- :doc:`/components/binary_sensor/gpio` +- :doc:`/components/sensor/template` +- :doc:`/components/light/neopixelbus` +- :doc:`/guides/automations` +- :doc:`/components/i2c` +- :doc:`/components/uart` +- :ghedit:`Edit` diff --git a/cookbook/images/arduino_pro_mini.jpg b/cookbook/images/arduino_pro_mini.jpg index 20c264362..4ec03d4cf 100644 Binary files a/cookbook/images/arduino_pro_mini.jpg and b/cookbook/images/arduino_pro_mini.jpg differ diff --git a/cookbook/images/bme280-header.jpg b/cookbook/images/bme280-header.jpg index 548a450f2..ffef6af17 100644 Binary files a/cookbook/images/bme280-header.jpg and b/cookbook/images/bme280-header.jpg differ diff --git a/cookbook/images/display_time_temp_oled_1.jpg b/cookbook/images/display_time_temp_oled_1.jpg index cc1a2e0a3..f4944f244 100644 Binary files a/cookbook/images/display_time_temp_oled_1.jpg and b/cookbook/images/display_time_temp_oled_1.jpg differ diff --git a/cookbook/images/esw01-eu-pcb-bottom.jpg b/cookbook/images/esw01-eu-pcb-bottom.jpg index db7538f2d..106a64d20 100644 Binary files a/cookbook/images/esw01-eu-pcb-bottom.jpg and b/cookbook/images/esw01-eu-pcb-bottom.jpg differ diff --git a/cookbook/images/esw01-eu-pcb-top.jpg b/cookbook/images/esw01-eu-pcb-top.jpg index 87227d107..29e6d5f0c 100644 Binary files a/cookbook/images/esw01-eu-pcb-top.jpg and b/cookbook/images/esw01-eu-pcb-top.jpg differ diff --git a/cookbook/images/esw01-eu.jpg b/cookbook/images/esw01-eu.jpg index 11657d0bb..4adda23ac 100644 Binary files a/cookbook/images/esw01-eu.jpg and b/cookbook/images/esw01-eu.jpg differ diff --git a/cookbook/images/h801-pir_sensor.jpg b/cookbook/images/h801-pir_sensor.jpg index b5327234d..8029a3748 100644 Binary files a/cookbook/images/h801-pir_sensor.jpg and b/cookbook/images/h801-pir_sensor.jpg differ diff --git a/cookbook/images/h801.jpg b/cookbook/images/h801.jpg index 98887d15c..979091f3f 100644 Binary files a/cookbook/images/h801.jpg and b/cookbook/images/h801.jpg differ diff --git a/cookbook/images/iaq_board1.jpg b/cookbook/images/iaq_board1.jpg new file mode 100644 index 000000000..9760141e3 Binary files /dev/null and b/cookbook/images/iaq_board1.jpg differ diff --git a/cookbook/images/iaq_board2.jpg b/cookbook/images/iaq_board2.jpg new file mode 100644 index 000000000..a83b8f1f6 Binary files /dev/null and b/cookbook/images/iaq_board2.jpg differ diff --git a/cookbook/images/infostrip-detail.jpg b/cookbook/images/infostrip-detail.jpg new file mode 100644 index 000000000..ee90a133f Binary files /dev/null and b/cookbook/images/infostrip-detail.jpg differ diff --git a/cookbook/images/infostrip-lights-ui.png b/cookbook/images/infostrip-lights-ui.png new file mode 100644 index 000000000..0a8da59f7 Binary files /dev/null and b/cookbook/images/infostrip-lights-ui.png differ diff --git a/cookbook/images/leak-detector-m5stickC-ha_interface.jpg b/cookbook/images/leak-detector-m5stickC-ha_interface.jpg index 0e39d1447..085d06f9f 100644 Binary files a/cookbook/images/leak-detector-m5stickC-ha_interface.jpg and b/cookbook/images/leak-detector-m5stickC-ha_interface.jpg differ diff --git a/cookbook/images/leak-detector-m5stickC-m5stickC.png b/cookbook/images/leak-detector-m5stickC-m5stickC.png index 540d6c2df..918d7612e 100644 Binary files a/cookbook/images/leak-detector-m5stickC-m5stickC.png and b/cookbook/images/leak-detector-m5stickC-m5stickC.png differ diff --git a/cookbook/images/leak-detector-m5stickC_atom_lite.jpg b/cookbook/images/leak-detector-m5stickC_atom_lite.jpg index fb94428e8..2e47a8290 100644 Binary files a/cookbook/images/leak-detector-m5stickC_atom_lite.jpg and b/cookbook/images/leak-detector-m5stickC_atom_lite.jpg differ diff --git a/cookbook/images/leak-detector-m5stickC_atom_matrix.jpg b/cookbook/images/leak-detector-m5stickC_atom_matrix.jpg index fb230c36c..e48810bd0 100644 Binary files a/cookbook/images/leak-detector-m5stickC_atom_matrix.jpg and b/cookbook/images/leak-detector-m5stickC_atom_matrix.jpg differ diff --git a/cookbook/images/leak-detector-m5stickC_dry.jpg b/cookbook/images/leak-detector-m5stickC_dry.jpg index 6b271061e..6b3455ab8 100644 Binary files a/cookbook/images/leak-detector-m5stickC_dry.jpg and b/cookbook/images/leak-detector-m5stickC_dry.jpg differ diff --git a/cookbook/images/leak-detector-m5stickC_grove2.jpg b/cookbook/images/leak-detector-m5stickC_grove2.jpg index 2396be3d6..a0d49829f 100644 Binary files a/cookbook/images/leak-detector-m5stickC_grove2.jpg and b/cookbook/images/leak-detector-m5stickC_grove2.jpg differ diff --git a/cookbook/images/leak-detector-m5stickC_overview1.jpg b/cookbook/images/leak-detector-m5stickC_overview1.jpg index b0d3b92f2..2c79cf958 100644 Binary files a/cookbook/images/leak-detector-m5stickC_overview1.jpg and b/cookbook/images/leak-detector-m5stickC_overview1.jpg differ diff --git a/cookbook/images/leak-detector-m5stickC_overview2.jpg b/cookbook/images/leak-detector-m5stickC_overview2.jpg index 0ba975c69..65f138510 100644 Binary files a/cookbook/images/leak-detector-m5stickC_overview2.jpg and b/cookbook/images/leak-detector-m5stickC_overview2.jpg differ diff --git a/cookbook/images/leak-detector-m5stickC_pinout.jpg b/cookbook/images/leak-detector-m5stickC_pinout.jpg index 6e4c2837e..14586ff73 100644 Binary files a/cookbook/images/leak-detector-m5stickC_pinout.jpg and b/cookbook/images/leak-detector-m5stickC_pinout.jpg differ diff --git a/cookbook/images/leak-detector-m5stickC_probe.jpg b/cookbook/images/leak-detector-m5stickC_probe.jpg index c1b1a5f4d..1b6047532 100644 Binary files a/cookbook/images/leak-detector-m5stickC_probe.jpg and b/cookbook/images/leak-detector-m5stickC_probe.jpg differ diff --git a/cookbook/images/leak-detector-m5stickC_wet.jpg b/cookbook/images/leak-detector-m5stickC_wet.jpg index 4e667dd6a..4507798e7 100644 Binary files a/cookbook/images/leak-detector-m5stickC_wet.jpg and b/cookbook/images/leak-detector-m5stickC_wet.jpg differ diff --git a/cookbook/images/pir-header.jpg b/cookbook/images/pir-header.jpg index cd3dd0893..160c370a0 100644 Binary files a/cookbook/images/pir-header.jpg and b/cookbook/images/pir-header.jpg differ diff --git a/cookbook/images/pir-inside.jpg b/cookbook/images/pir-inside.jpg index b829f22d9..8091d3601 100644 Binary files a/cookbook/images/pir-inside.jpg and b/cookbook/images/pir-inside.jpg differ diff --git a/cookbook/images/pir-pins.jpg b/cookbook/images/pir-pins.jpg index 11cba56f2..52d2ebb8e 100644 Binary files a/cookbook/images/pir-pins.jpg and b/cookbook/images/pir-pins.jpg differ diff --git a/cookbook/images/power_meter-header.jpg b/cookbook/images/power_meter-header.jpg index 5c4d9a4d0..c5e12fcce 100644 Binary files a/cookbook/images/power_meter-header.jpg and b/cookbook/images/power_meter-header.jpg differ diff --git a/cookbook/images/relay-full.jpg b/cookbook/images/relay-full.jpg index 0b21841fe..029dc7784 100644 Binary files a/cookbook/images/relay-full.jpg and b/cookbook/images/relay-full.jpg differ diff --git a/cookbook/images/sonoff-fishpond-pump-1-programming.jpg b/cookbook/images/sonoff-fishpond-pump-1-programming.jpg index 2852d9c9a..d778117e7 100644 Binary files a/cookbook/images/sonoff-fishpond-pump-1-programming.jpg and b/cookbook/images/sonoff-fishpond-pump-1-programming.jpg differ diff --git a/cookbook/images/sonoff-fishpond-pump-and-sensor.jpg b/cookbook/images/sonoff-fishpond-pump-and-sensor.jpg index 354d2de48..a6c5d6c21 100644 Binary files a/cookbook/images/sonoff-fishpond-pump-and-sensor.jpg and b/cookbook/images/sonoff-fishpond-pump-and-sensor.jpg differ diff --git a/cookbook/images/sonoff-fishpond-pump-gpio14.jpg b/cookbook/images/sonoff-fishpond-pump-gpio14.jpg index f9466d0f1..932a3ba5f 100644 Binary files a/cookbook/images/sonoff-fishpond-pump-gpio14.jpg and b/cookbook/images/sonoff-fishpond-pump-gpio14.jpg differ diff --git a/cookbook/images/sonoff-fishpond-pump-installed.jpg b/cookbook/images/sonoff-fishpond-pump-installed.jpg index f01992715..fc751dc80 100644 Binary files a/cookbook/images/sonoff-fishpond-pump-installed.jpg and b/cookbook/images/sonoff-fishpond-pump-installed.jpg differ diff --git a/cookbook/images/sonoff-fishpond.jpg b/cookbook/images/sonoff-fishpond.jpg index de376ffce..7459e0281 100644 Binary files a/cookbook/images/sonoff-fishpond.jpg and b/cookbook/images/sonoff-fishpond.jpg differ diff --git a/cookbook/images/teckin_sb50.jpg b/cookbook/images/teckin_sb50.jpg index af936f4d7..580b6c726 100644 Binary files a/cookbook/images/teckin_sb50.jpg and b/cookbook/images/teckin_sb50.jpg differ diff --git a/cookbook/images/temt6000-header.jpg b/cookbook/images/temt6000-header.jpg index 6d52cb691..bb3a83d35 100644 Binary files a/cookbook/images/temt6000-header.jpg and b/cookbook/images/temt6000-header.jpg differ diff --git a/cookbook/images/temt6000-pins.jpg b/cookbook/images/temt6000-pins.jpg index f2563c2d4..54c6a4a18 100644 Binary files a/cookbook/images/temt6000-pins.jpg and b/cookbook/images/temt6000-pins.jpg differ diff --git a/cookbook/infostrip.rst b/cookbook/infostrip.rst new file mode 100644 index 000000000..f11368e8c --- /dev/null +++ b/cookbook/infostrip.rst @@ -0,0 +1,165 @@ +Infostripe +========== + +.. seo:: + :description: Simple visualisation of Home Assistant states using a Neopixel stripe + :image: infostrip-detai.jpg + :keywords: Neopixel + +Showing the current status of sensor states using a Neopixel (WS2812B) strip is a simple way to communicate states to the user. +Compared to a dashboard screen the infostrip can only communicate the information like a binary sensor. + +- color (e.g., red = error/warning, orange = waring, green = ok, blue = active) +- intensity (off, scaled brightness) +- mode (continous vs. flashing, flashing or strobe is not recommened) +- light position on stripe + +.. figure:: images/infostrip-detail.jpg + :align: center + :width: 75.0% + + Wemos D1 mini, Neopixel, CO2 sensor on a blackboard, pixel meanings are described by the chalk drawn icons. + + +ESPHome configuration +--------------------- + +.. code-block:: yaml + + esphome: + name: esp_infostrip + platform: ESP8266 + board: d1_mini + + # TODO -> add your personal wifi, logging, api, ota settings here + + uart: + rx_pin: 4 + tx_pin: 5 + baud_rate: 9600 + + sensor: + - platform: mhz19 + co2: + name: "MH-Z19 CO2 Value" + temperature: + name: "MH-Z19 Temperature" + update_interval: 30s + + # Monitor the Wifi connection status + binary_sensor: + - platform: status + name: "Infostrip Status" + + # Configure each pixel as a single light (attention memory consuming) + light: + - platform: fastled_clockless + chipset: WS2812B + id: light_fastled + pin: D4 + num_leds: 4 + rgb_order: GRB + name: "Infostrip" + effects: + - strobe: + - random: + - platform: partition + name: "PL0" + segments: + - id: light_fastled + from: 0 + to: 0 + effects: + - strobe: + - platform: partition + name: "PL1" + segments: + - id: light_fastled + from: 1 + to: 1 + effects: + - strobe: + - platform: partition + name: "PL2" + segments: + - id: light_fastled + from: 2 + to: 2 + effects: + - strobe: + - platform: partition + name: "PL3" + segments: + - id: light_fastled + from: 3 + to: 3 + effects: + - strobe: + +.. warning:: + + Consider the warning in :doc:`/components/light/partition` regarging the increased memory usage. + +Home Assistant configuration +---------------------------- + +The automation to show the CO2 warning light (e.g. red if CO2 > 1000 ppm) is done in Home Assistant, but could also be implemented using ESPHome :ref:`Automations `. + +.. code-block:: yaml + + # Turn on a light with the related color + automation: + - id: '1601241280015' + alias: Light CO2 On + description: '' + trigger: + - platform: numeric_state + entity_id: sensor.mh_z19_co2_value + above: 1000 + condition: [] + action: + - service: light.turn_on + data: + color_name: red + entity_id: light.pl2 + mode: single + - id: '1601241280016' + alias: Light CO2 Off + description: '' + trigger: + - platform: numeric_state + entity_id: sensor.mh_z19_co2_value + below: 800 + condition: [] + action: + - service: light.turn_off + entity_id: light.pl2 + mode: single + - alias: "State Light Mapping" + trigger: + platform: time_pattern + # You can also match on interval. This will match every 5 minutes + minutes: "/5" + action: + - service: light.turn_on + data_template: + entity_id: light.pl1 + brightness_pct: 30 + color_name: > + {% set map = {'on': 'green', 'off': 'red'} %} + {% set state = states('binary_sensor.bad_status') %} + {{ map[state] if state in map else 'white' }} + +.. figure:: images/infostrip-lights-ui.png + :align: center + :width: 50.0% + + Each pixel is used as a light entity. + +See Also +-------- + +- :doc:`/components/light/fastled` +- :doc:`/components/light/partition` +- :doc:`/components/sensor/mhz19` +- :ghedit:`Edit` diff --git a/cookbook/mirabella-genio-bulb.rst b/cookbook/mirabella-genio-bulb.rst index bbfcfa0d2..86e72cbe4 100644 --- a/cookbook/mirabella-genio-bulb.rst +++ b/cookbook/mirabella-genio-bulb.rst @@ -10,7 +10,10 @@ The Mirabella Genio is a Tuya-based smart bulb sold by Kmart in Australia. Originally intended to be used with their companion app once flashed using `tuya-convert `__ ESPHome generated firmware can be uploaded allowing you to control the bulbs via Home Assistant. -Please note that the new version of this bulb that comes in a cardboard box does NOT have an ESP chipset inside and cannot be flashed. +.. note:: + + Please note that the new version of this bulb that comes in a cardboard box are using the TYLC5 module which does not work via tuya-convert. + These bulbs are also using the SM2135 chipset and not PWM anymore. 1. Create the ESPHome Firmware ------------------------------ @@ -237,7 +240,51 @@ variable ``output_component1``. # Ensure the light turns on by default if the physical switch is actuated. restore_mode: ALWAYS_ON +3.4 CWWW Mirabella Genio Downlights +*********************************** +Kmart also sell a `downlight option `__, which works quite well however the PWM method that is used is different to the way the CWWW lights in ESPHome works. + +A `project by ssieb `__ resolves this using a custom component. + +.. code-block:: yaml + + esphome: + name: rgbw_e27_01 + platform: ESP8266 + board: esp01_1m + + wifi: + ssid: 'WIFI' + password: 'WIFIPASS' + + logger: + + api: + + ota: + + output: + - platform: esp8266_pwm + id: output1 + pin: GPIO14 + - platform: esp8266_pwm + id: output2 + pin: GPIO12 + + light: + - platform: cwww2 + id: LED + name: "Downlight" + color_temperature: output2 + brightness: output1 + cold_white_color_temperature: 6500 K + warm_white_color_temperature: 2700 K + + # Ensure the light turns on by default if the physical switch is actuated. + restore_mode: ALWAYS_ON + + 4. Adding to Home Assistant --------------------------- diff --git a/cookbook/teckin_sb50.rst b/cookbook/teckin_sb50.rst index 849dd93af..acdbb379e 100644 --- a/cookbook/teckin_sb50.rst +++ b/cookbook/teckin_sb50.rst @@ -10,8 +10,13 @@ TECKIN SB50 LED Bulb :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 `__. -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. +.. warning:: + + It is not currently possible to flash these bulbs with ``tuya-convert`` due to shipping with an updated/patched firmware. + Please check `this issue `__ for details and progress on a workaround. + +The Teckin SB50 Bulb's are a great option for lighting that could previously be flashed with tuya-convert. More details can be found at tuya-convert `github page `__. +Below is the ESPHome configuration file that will get you up and running. This assumes you have a ``secret.yaml`` with ssid, password, api_password and ota_password keys. .. code-block:: yaml @@ -70,6 +75,7 @@ Below is the ESPHome configuration file that will get you up and running. This a cold_white: output_cold_white cold_white_color_temperature: 6200 K warm_white_color_temperature: 2800 K + color_interlock: true # avoids simultaneous RGB and W/W See Also diff --git a/custom/custom_component.rst b/custom/custom_component.rst index 340a1142e..3c83c50c0 100644 --- a/custom/custom_component.rst +++ b/custom/custom_component.rst @@ -87,7 +87,7 @@ Home Assistant, as well as starting services in Home Assistant. // - cycle_duration: integer // - silent: boolean // - string_argument: string - // - The function on_hello_world declared below will attached to the service. + // - The function start_washer_cycle declared below will attached to the service. register_service(&MyCustomComponent::on_start_washer_cycle, "start_washer_cycle", {"cycle_duration", "silent", "string_argument"}); diff --git a/devices/images/nodemcu_esp32-full.jpg b/devices/images/nodemcu_esp32-full.jpg index b82dac8ad..1081002ab 100644 Binary files a/devices/images/nodemcu_esp32-full.jpg and b/devices/images/nodemcu_esp32-full.jpg differ diff --git a/devices/images/nodemcu_esp8266-full.jpg b/devices/images/nodemcu_esp8266-full.jpg index f2fd470e3..ccd047641 100644 Binary files a/devices/images/nodemcu_esp8266-full.jpg and b/devices/images/nodemcu_esp8266-full.jpg differ diff --git a/devices/images/sonoff_4ch_buttons.jpg b/devices/images/sonoff_4ch_buttons.jpg index 2325f1796..94511f637 100644 Binary files a/devices/images/sonoff_4ch_buttons.jpg and b/devices/images/sonoff_4ch_buttons.jpg differ diff --git a/devices/images/sonoff_4ch_header.jpg b/devices/images/sonoff_4ch_header.jpg index 0f1a8e443..4d983ff1c 100644 Binary files a/devices/images/sonoff_4ch_header.jpg and b/devices/images/sonoff_4ch_header.jpg differ diff --git a/devices/images/sonoff_4ch_top.jpg b/devices/images/sonoff_4ch_top.jpg index 4be4ca26f..eed9df715 100644 Binary files a/devices/images/sonoff_4ch_top.jpg and b/devices/images/sonoff_4ch_top.jpg differ diff --git a/devices/images/sonoff_4ch_uart.jpg b/devices/images/sonoff_4ch_uart.jpg index 64ba35d70..c0b87fa16 100644 Binary files a/devices/images/sonoff_4ch_uart.jpg and b/devices/images/sonoff_4ch_uart.jpg differ diff --git a/devices/images/sonoff_basic-full.jpg b/devices/images/sonoff_basic-full.jpg index 6e1467426..f62f4842e 100644 Binary files a/devices/images/sonoff_basic-full.jpg and b/devices/images/sonoff_basic-full.jpg differ diff --git a/devices/images/sonoff_s20_header.jpg b/devices/images/sonoff_s20_header.jpg index 3c1bac5ea..01f710029 100644 Binary files a/devices/images/sonoff_s20_header.jpg and b/devices/images/sonoff_s20_header.jpg differ diff --git a/devices/images/sonoff_s20_parts.jpg b/devices/images/sonoff_s20_parts.jpg index 4f997b890..59fff1c99 100644 Binary files a/devices/images/sonoff_s20_parts.jpg and b/devices/images/sonoff_s20_parts.jpg differ diff --git a/devices/images/sonoff_s20_pcb.jpg b/devices/images/sonoff_s20_pcb.jpg index 25325c798..79d7d703e 100644 Binary files a/devices/images/sonoff_s20_pcb.jpg and b/devices/images/sonoff_s20_pcb.jpg differ diff --git a/devices/images/sonoff_s20_screws.jpg b/devices/images/sonoff_s20_screws.jpg index 5aa675b32..9831a8104 100644 Binary files a/devices/images/sonoff_s20_screws.jpg and b/devices/images/sonoff_s20_screws.jpg differ diff --git a/devices/images/sonoff_s20_uart.jpg b/devices/images/sonoff_s20_uart.jpg index 305b40925..b688a5079 100644 Binary files a/devices/images/sonoff_s20_uart.jpg and b/devices/images/sonoff_s20_uart.jpg differ diff --git a/devices/images/sonoff_t1_uk_3g_back_plate_v1.1.jpg b/devices/images/sonoff_t1_uk_3g_backplate_v1.1.jpg similarity index 100% rename from devices/images/sonoff_t1_uk_3g_back_plate_v1.1.jpg rename to devices/images/sonoff_t1_uk_3g_backplate_v1.1.jpg diff --git a/devices/images/sonoff_t1_uk_3g_touch_pads_v1.1.jpg b/devices/images/sonoff_t1_uk_3g_touchpads_v1.1.jpg similarity index 100% rename from devices/images/sonoff_t1_uk_3g_touch_pads_v1.1.jpg rename to devices/images/sonoff_t1_uk_3g_touchpads_v1.1.jpg diff --git a/devices/images/sonoff_t3_eu_3g_back_v1.0.jpg b/devices/images/sonoff_t3_eu_3g_back_v1.0.jpg new file mode 100644 index 000000000..177418d45 Binary files /dev/null and b/devices/images/sonoff_t3_eu_3g_back_v1.0.jpg differ diff --git a/devices/images/sonoff_t3_eu_3g_backplate_v1.0.jpg b/devices/images/sonoff_t3_eu_3g_backplate_v1.0.jpg new file mode 100644 index 000000000..5328104be Binary files /dev/null and b/devices/images/sonoff_t3_eu_3g_backplate_v1.0.jpg differ diff --git a/devices/images/sonoff_t3_eu_3g_plate_off_v1.0.jpg b/devices/images/sonoff_t3_eu_3g_plate_off_v1.0.jpg new file mode 100644 index 000000000..bb58947c4 Binary files /dev/null and b/devices/images/sonoff_t3_eu_3g_plate_off_v1.0.jpg differ diff --git a/devices/images/sonoff_t3_eu_3g_touchpads_v1.0.jpg b/devices/images/sonoff_t3_eu_3g_touchpads_v1.0.jpg new file mode 100644 index 000000000..449d512aa Binary files /dev/null and b/devices/images/sonoff_t3_eu_3g_touchpads_v1.0.jpg differ diff --git a/devices/images/sonoff_t3_eu_3g_uart_v1.0.jpg b/devices/images/sonoff_t3_eu_3g_uart_v1.0.jpg new file mode 100644 index 000000000..4ae5aeb51 Binary files /dev/null and b/devices/images/sonoff_t3_eu_3g_uart_v1.0.jpg differ diff --git a/devices/images/sonoff_t3_eu_3g_v1.0.jpg b/devices/images/sonoff_t3_eu_3g_v1.0.jpg new file mode 100644 index 000000000..967c0d094 Binary files /dev/null and b/devices/images/sonoff_t3_eu_3g_v1.0.jpg differ diff --git a/devices/nodemcu_esp8266.rst b/devices/nodemcu_esp8266.rst index e5db35b69..4e0bbda36 100644 --- a/devices/nodemcu_esp8266.rst +++ b/devices/nodemcu_esp8266.rst @@ -28,7 +28,7 @@ the ESPHome wizard asks you for your platform and |nodemcuv2|_ as the board type board: nodemcuv2 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 +the internal pin numbering. For example, the ``D3`` 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 the image below in order for this automatic mapping to occur. diff --git a/devices/sonoff.rst b/devices/sonoff.rst index 3d47f0b9d..36bc717e7 100644 --- a/devices/sonoff.rst +++ b/devices/sonoff.rst @@ -99,7 +99,7 @@ Sonoff Dual R2 v1.4 GPIO09, Button #1(inside header board v1.4), GPIO12, Relay #1, GPIO5, Relay #2, - GPIO10, Button on the case, + GPIO10, Button on the case, GPIO13, Blue LED (inverted) Sonoff Pow R1 @@ -210,8 +210,8 @@ Sonoff B1, Ai-Thinker AiLight See :doc:`/components/output/my9231`. -Sonoff T1 1CH, 2CH, 3CH ------------------------ +Sonoff T1, Sonoff T3 (1CH, 2CH, 3CH) +------------------------------------ .. pintable:: @@ -222,6 +222,7 @@ Sonoff T1 1CH, 2CH, 3CH GPIO10, Button 3 (inverted), GPIO4, Relay 3 and Blue LED, GPIO13, Blue LED (inverted), + GPIO1, UART TX pin (for external sensors) GPIO3, UART RX pin (for external sensors) @@ -326,7 +327,7 @@ Sonoff Mini .. pintable:: GPIO0, Button (inverted), - GPIO4, SW Input, + GPIO4, SW Input (inverted), GPIO12, Relay and Red LED, GPIO13, Blue LED (inverted), GPIO16, Optional sensor diff --git a/devices/sonoff_basic.rst b/devices/sonoff_basic.rst index 2c52edc46..590d76ce0 100644 --- a/devices/sonoff_basic.rst +++ b/devices/sonoff_basic.rst @@ -271,4 +271,4 @@ See Also - :doc:`sonoff_4ch` - :doc:`sonoff_s20` - `GPIO locations `__ -- `Edit this page on GitHub `__ +- `Edit this page on GitHub `__ diff --git a/devices/sonoff_t1_uk_3gang_v1.1.rst b/devices/sonoff_t1_uk_3gang_v1.1.rst index 3e9197303..2b94f13c8 100644 --- a/devices/sonoff_t1_uk_3gang_v1.1.rst +++ b/devices/sonoff_t1_uk_3gang_v1.1.rst @@ -6,7 +6,7 @@ Using With Sonoff T1 UK 3 Gang :image: sonoff_t1_uk_3g_v1.1.jpg ESPHome can also be used with Sonoff T1 UK 3 Gang wireless switches. These devices are -basically just an ESP8266 chip with 3 relays to control power output ant three backlit capacitive touch buttons to control the relays. +basically just an ESP8266 chip with 3 relays to control power output and three backlit capacitive touch buttons to control the relays. .. note:: @@ -69,7 +69,7 @@ supplied with the Sonoff T1 UK 3 Gang before doing this step. plugged in before doing this step. While the device is not plugged in, turn the device face down and put a narrow flat screwdriver into the slot at the bottom. -With careful twisting motion detach the face plate. +With careful twisting motion detach the faceplate. .. figure:: images/sonoff_t1_uk_3g_back_v1.1.jpg :align: center @@ -84,7 +84,7 @@ This PCB contains the ESP chip and what's left inside the switch body are relays :align: center :width: 75.0% - "TOUCH BOARD" with touch pads holds the ESP chip. + "TOUCH BOARD" with touchpads holds the ESP chip. Step 2: Connecting UART ----------------------- @@ -119,7 +119,7 @@ Step 3: Creating Firmware The Sonoff T1 UK 3 Gang is based on the ``ESP8266`` platform (technically it's the ``ESP8285``, but for our purposes they're the same) and is a subtype of the ``esp01_1m`` board. -With this information, you can step through the ESPHome wizard (``esphome sonoff_t1_uk_3g.yaml wizard``), +With this information, you can step through the ESPHome wizard (``esphome sonoff_t1_uk_3g_v1.1.yaml wizard``), or alternatively, you can just take the below configuration file and modify it to your needs. .. code-block:: yaml @@ -158,12 +158,12 @@ To put ESP8266 into flash mode you need to connect ``GPIO0`` to ``GND`` when the This is a tricky process with T1 and the best way to do it is to use a wire with pins on either side. To do this, while the device is UART bridge is not connected to your USB port, flip the PCB over, take a wire and connect the second Ground hole on the PCB (red) to the third from the right bottom leg on the chip as depicted below (yellow) - -that leg is connected to the GPIO0 on ESP and plug the UART to your USB port. +that leg is connected to the ``GPIO0`` on ESP and plug the UART to your USB port. -Keep holding GND and GPIO0 connected for 2-4 seconds. The T1 UK 3 Gang should now be in a flash mode and should not blink with any LED. +Keep holding ``GND`` and ``GPIO0`` connected for 2-4 seconds. The T1 UK 3 Gang should now be in a flash mode and should not blink with any LED. The touchpads may light up. -.. figure:: images/sonoff_t1_uk_3g_back_plate_v1.1.jpg +.. figure:: images/sonoff_t1_uk_3g_backplate_v1.1.jpg :align: center Connect red and yellow contacts while powering the board. @@ -295,7 +295,7 @@ them in one area, and simply pass that ID later on. For example, above you can s output being created with the ID ``blue_led`` for the blue LED. Later on it is then transformed into a :doc:`monochromatic light `. If you additionally want the buttons to control the relays, look at `the complete Sonoff T1 UK 3 Gang -with automation example `__. +with automation example `__. Step 6: Finishing Up -------------------- diff --git a/devices/sonoff_t3_eu_3gang_v1.0.rst b/devices/sonoff_t3_eu_3gang_v1.0.rst new file mode 100644 index 000000000..4e85015c4 --- /dev/null +++ b/devices/sonoff_t3_eu_3gang_v1.0.rst @@ -0,0 +1,321 @@ +Using With Sonoff T3 EU 3 Gang +===================================== + +.. seo:: + :description: Instructions for putting Sonoff T3 EU 3C devices into flash mode and installing ESPHome on them. + :image: sonoff_t3_eu_3g_v1.0.jpg + +ESPHome can also be used with Sonoff T3 EU 1/2/3 Gang wireless switches. These devices are +basically just an ESP8266 chip with up to 3 relays to control power output and three backlit capacitive touch buttons to control the relays. + +.. figure:: images/sonoff_t3_eu_3g_v1.0.jpg + :align: center + :width: 75.0% + + Sonoff T3 EU 3 Gang WiFi switch. + +This guide will step you through setting up your Sonoff T3 EU 3 Gang and flashing the first ESPHome firmware +with the serial interface. This should also work for the T1 EU 3 Gang and T2 EU 3 Gang with PCB version ``T1EU TOUCH V1.0`` from 2018. +After that, you will be able to upload all future firmware updates with the remote +Over-The-Air update process. + +.. note:: + + If you've previously installed Sonoff-Tasmota on your Sonoff T3 EU 3 Gang, 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_t3_eu_3g_v1.0-creating_firmware`. + +Since firmware version 1.6.0, iTead (the creator of this device) has removed the ability to upload +a custom firmware through their own upload process. Unfortunately, that means that the only way to +flash the initial ESPHome firmware is by physically opening the device up and using the UART +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. + + So, during this *entire* guide **never ever** plug the device in. 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. + + It's your own responsibility to make sure everything you do during this setup process is safe. + +For this guide you will need: + +- Sonoff T3 EU 3 Gang 😉 +- An USB to UART Bridge for flashing the device. These can be bought on Amazon 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 and to connect GPIO0 to the Ground. +- Computer running ESPHome or the Home Assistant ESPHome add-on. +- Screwdriver to open up the Sonoff T3 EU 3 Gang. + +Have everything? Great! Then you can start. + + +Step 1: Opening up the Sonoff T3 EU 3 Gang +------------------------------------------ + +The first step is to open up the Sonoff T3 EU 3 Gang. Note that you do not have to run the original firmware +supplied with the Sonoff T3 EU 3 Gang 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. + +While the device is not plugged in, turn the device face down and put a narrow flat screwdriver into the slot at the bottom. +With careful twisting motion detach the faceplate. + +.. figure:: images/sonoff_t3_eu_3g_back_v1.0.jpg + :align: center + :width: 60.0% + + Careful twisting motion. + +After that, use the same screwdriver to carefully lift the top PCB off of the switch. +This PCB contains the ESP chip and what's left inside the switch body are relays. + +.. figure:: images/sonoff_t3_eu_3g_plate_off_v1.0.jpg + :align: center + :width: 60.0% + + "TOUCH BOARD" with touchpads holds the ESP chip. + +Step 2: Connecting UART +----------------------- + +Now we need our computer to somehow establish a data connection to the board. For this we will +have to connect the four wires on the UART to USB bridge to the UART pins of the Sonoff T3 v1.0. + +Fortunately for us, these pins on the ESP controller have dedicated solder pads on the PCB (``J3``). 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 +that you connect these correctly, especially the ``VCC33`` and ``GND`` parts as you can otherwise +destroy the chip. + +``VCC33`` should be connected to the ``3V3`` (**not** 5V) pin of the UART bridge, ``GND`` to ``GND`` +and the same with ``RX``/``TX``. + +There's no need for soldering - for quick job like one time firmware flashing you can just hold pins in respective holes by hand +provided **you are not touching any live contacts**, only the wires. + +.. figure:: images/sonoff_t3_eu_3g_touchpads_v1.0.jpg + :align: center + :width: 75.0% + + The Resistors ``R19``, ``R20`` and ``R21`` expose ``GPIO0``, ``GPIO9`` and ``GPIO10`` respectively. + +.. figure:: images/sonoff_t3_eu_3g_backplate_v1.0.jpg + :align: center + :width: 75.0% + + Backside also exposes ``GPIO2``. + +.. note:: + + If your upload fails with an ``error: espcomm_upload_mem failed`` message it's most likely due + to the pins being swapped. In that case, just swap ``RX`` and ``TX`` and try again - you won't break + anything if they're swapped. + +.. _sonoff_t3_eu_3g_v1.0-creating_firmware: + +Step 3: Creating Firmware +------------------------- + +The Sonoff T3 EU 3 Gang is based on the ``ESP8266`` platform (technically it's the ``ESP8285``, but for our purposes +they're the same) and is a subtype of the ``esp01_1m`` board. +With this information, you can step through the ESPHome wizard (``esphome sonoff_t3_us_3gang_v1.0.yaml wizard``), +or alternatively, you can just take the below configuration file and modify it to your needs. + +.. code-block:: yaml + + esphome: + name: + platform: ESP8266 + board: esp01_1m + + wifi: + ssid: + password: + + api: + + logger: + + ota: + +Now run ``esphome sonoff_t3_us_3gang_v1.0.yaml compile`` to validate the configuration and +pre-compile the firmware. + +.. note:: + + After this step, you will be able to find the compiled binary under + ``/.pioenvs//firmware.bin``. If you're having trouble with + uploading, you can also try uploading this file directly with other tools. + +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 put ESP8266 into flash mode you need to connect ``GPIO0`` to ``GND`` when the device is powering up. + +This is a tricky process with T3 and the best is to hold the ground wire to the right side of the ``R19`` Resistor which is connected to ``GPIO0``. +Keep holding ``GND`` and ``GPIO0`` connected for 2-4 seconds. The T3 EU 3 Gang should now be in a flash mode and should not blink with any LED. +The touchpads may light up. + +.. figure:: images/sonoff_t3_eu_3g_uart_v1.0.jpg + :align: center + :width: 75.0% + + Connect ``GND`` to ``R19`` right contact while powering the board. + +Now you can finally run the upload command: + +.. code-block:: bash + + esphome sonoff_t3_us_3gang_v1.0.yaml run + +If successful, you should see something like this: + +.. figure:: images/sonoff_4ch_upload.png + :align: center + +Hooray 🎉! You've now successfully uploaded the first ESPHome firmware to your Sonoff T3 EU 3 Gang. And in a moment, +you will be able to use all of ESPHome's great features with your Sonoff T3 EU 3 Gang. Now you can put your T3 back together and fire up. + +.. note:: + + While now your T3 will start up and connect to your WiFi network if you power it up from UART it will not behave normally, + it may flash random LEDs, turn on and off touchpads' backlight and not react on touching touchpads. This will all be fixed once you re-assemble your T3 + and power it up from the mains power once safe to do so. + +If above step does, however, not work, here are some steps that can help: + +- 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.** +- 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. + +Step 5: Adding the Button, Relay and LEDs +----------------------------------------- + +Now we would like the T3 EU 3 Gang to actually do something, not just connect to WiFi and pretty much sit idle. + +Below you will find a table of all usable GPIO pins of the Sonoff T3 EU 3 Gang and a configuration file that exposes all +of the basic functions. + +======================================== ========================================= +``GPIO0`` Touchpad #1 (inverted) +---------------------------------------- ----------------------------------------- +``GPIO9`` Touchpad #2 (inverted) +---------------------------------------- ----------------------------------------- +``GPIO10`` Touchpad #3 (inverted) +---------------------------------------- ----------------------------------------- +``GPIO12`` Relay #1 and Touchpad #1 backlight +---------------------------------------- ----------------------------------------- +``GPIO5`` Relay #2 and Touchpad #2 backlight +---------------------------------------- ----------------------------------------- +``GPIO4`` Relay #3 and Touchpad #3 backlight +---------------------------------------- ----------------------------------------- +``GPIO13`` Blue LED (inverted) +---------------------------------------- ----------------------------------------- +``GPIO1`` ``RX`` pin (for external sensors) +---------------------------------------- ----------------------------------------- +``GPIO3`` ``TX`` pin (for external sensors) +======================================== ========================================= + +.. code-block:: yaml + + esphome: + name: + platform: ESP8266 + board: esp01_1m + + wifi: + ssid: + password: + + api: + + logger: + + ota: + + binary_sensor: + - platform: gpio + pin: + number: GPIO0 + mode: INPUT_PULLUP + inverted: True + name: "Sonoff T3 EU 3 Gang Touchpad 1" + - platform: gpio + pin: + number: GPIO9 + mode: INPUT_PULLUP + inverted: True + name: "Sonoff T3 EU 3 Gang Touchpad 2" + - platform: gpio + pin: + number: GPIO10 + mode: INPUT_PULLUP + inverted: True + name: "Sonoff T3 EU 3 Gang Touchpad 3" + - platform: status + name: "Sonoff T3 EU 3 Gang Status" + + switch: + - platform: gpio + name: "Sonoff T3 EU 3 Gang Relay 1" + pin: GPIO12 + - platform: gpio + name: "Sonoff T3 EU 3 Gang Relay 2" + pin: GPIO5 + - platform: gpio + name: "Sonoff T3 EU 3 Gang Relay 3" + pin: GPIO4 + + output: + # Register the blue LED as a dimmable output .... + - platform: esp8266_pwm + id: blue_led + pin: GPIO13 + inverted: True + + light: + # ... and then make a light out of it. + - platform: monochromatic + name: "Sonoff T3 EU 3 Gang Blue LED" + output: blue_led + + +Above example also showcases an important concept of ESPHome: IDs and linking. In order +to make all components in ESPHome as "plug and play" as possible, you can use IDs to define +them in one area, and simply pass that ID later on. For example, above you can see a PWM (dimmer) +output being created with the ID ``blue_led`` for the blue LED. Later on it is then transformed +into a :doc:`monochromatic light `. +If you additionally want the buttons to control the relays, look at `the complete Sonoff T3 EU 3 Gang +with automation example `__. + +Step 6: Finishing Up +-------------------- + +If you're sure everything is done with the T3 EU 3 Gang and have double checked there's nothing that could cause a short +in the case, you can put the T3 back together. + +Now triple- or even quadruple-check the UART bridge is not connected to the T3 EU 3 Gang, then comes the time when you can +connect it. + +Happy hacking! + +See Also +-------- + +- :doc:`sonoff` +- :doc:`sonoff_4ch` +- :doc:`sonoff_s20` +- :ghedit:`Edit` diff --git a/devices/sonoff_t3_eu_3gang_v1.0.yaml b/devices/sonoff_t3_eu_3gang_v1.0.yaml new file mode 100644 index 000000000..c7be7a617 --- /dev/null +++ b/devices/sonoff_t3_eu_3gang_v1.0.yaml @@ -0,0 +1,78 @@ +esphome: + name: + platform: ESP8266 + board: esp01_1m + # Automation turning on the blue status LED once T3 is booted up + on_boot: + priority: -10 + then: + - light.turn_on: blue_led_light + +wifi: + ssid: + password: + +# Enable logging +logger: + +# Enable Home Assistant API +api: + +ota: + +binary_sensor: + - platform: gpio + pin: + number: GPIO0 + mode: INPUT_PULLUP + inverted: True + name: "Sonoff T3 EU 3 Gang Touchpad 1" + on_press: + - switch.toggle: relay_1 + - platform: gpio + pin: + number: GPIO9 + mode: INPUT_PULLUP + inverted: True + name: "Sonoff T3 EU 3 Gang Touchpad 2" + on_press: + - switch.toggle: relay_2 + - platform: gpio + pin: + number: GPIO10 + mode: INPUT_PULLUP + inverted: True + name: "Sonoff T3 EU 3 Gang Touchpad 3" + on_press: + - switch.toggle: relay_3 + - platform: status + name: "Sonoff T3 EU 3 Gang Status" + +switch: + - platform: gpio + name: "Sonoff T3 EU 3 Gang Relay 1" + pin: GPIO12 + id: relay_1 + - platform: gpio + name: "Sonoff T3 EU 3 Gang Relay 2" + pin: GPIO5 + id: relay_2 + - platform: gpio + name: "Sonoff T3 EU 3 Gang Relay 3" + pin: GPIO4 + id: relay_3 + +output: + # Register the blue LED as a dimmable output .... + - platform: esp8266_pwm + id: blue_led + pin: GPIO13 + inverted: True + +light: + # ... and then make a light out of it. + - platform: monochromatic + name: "Sonoff T3 EU 3 Gang Blue LED" + output: blue_led + internal: true + id: blue_led_light diff --git a/guides/automations.rst b/guides/automations.rst index 754debf3f..589c5b8b7 100644 --- a/guides/automations.rst +++ b/guides/automations.rst @@ -292,6 +292,7 @@ Configuration options: ``int`` (for integers), ``float`` (for decimal numbers), ``int[50]`` for an array of 50 integers, etc. - **restore_value** (*Optional*, boolean): Whether to try to restore the state on boot up. Be careful: on the ESP8266, you only have a total of 96 bytes available for this! Defaults to ``no``. + This will use storage in "RTC memory", so it won't survive a power-cycle unless you use the ``esp8266_restore_from_flash`` option to save to flash. See :doc:`esp8266_restore_from_flash ` for details. - **initial_value** (*Optional*, string): The value with which to initialize this variable if the state can not be restored or if state restoration is not enabled. This needs to be wrapped in quotes! Defaults to the C++ default value for this type (for example ``0`` for integers). diff --git a/guides/contributing.rst b/guides/contributing.rst index 9d4036f7c..0e6fd2924 100644 --- a/guides/contributing.rst +++ b/guides/contributing.rst @@ -222,9 +222,9 @@ Build .. code-block:: bash - docker run --rm -v "${PWD}/":/data -p 8000:8000 -it esphome/esphome-docs + docker run --rm -v "${PWD}/":/data/esphomedocs -p 8000:8000 -it esphome/esphome-docs - And then go to ``:8000`` in your browser. + With ``PWD`` refering to the root of the ``esphome-docs`` git repository. Then go to ``:8000`` in your browser. This way, you don't have to install the dependencies to build the documentation. @@ -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 Github Actions. These checks *must* pass for your PR to be mergeable. Setting Up Git Environment @@ -329,9 +329,9 @@ Pull Request template outlining your changes; if your PR is not ready to merge y mark it as a draft PR in the dropdown of the green "create PR" button. **Review Process:** ESPHome's code base tries to have a high code standard. At the bottom -of the Pull Request you will be able to see the "Travis" continuous integration check which +of the Pull Request you will be able to see the "Github Actions" continuous integration check which will automatically go through your patch and try to spot errors. If the CI check fails, -please see the Travis log and fix all errors that appear there. Only PRs that pass the automated +please see the Github Actions log and fix all errors that appear there. Only PRs that pass the automated checks can be merged! **Catching up with reality**: Sometimes other commits have been made to the same files @@ -547,6 +547,9 @@ loader. These are: has one of them in the config, a validation error will be generated. - ``ESP_PLATFORMS``: Provide a list of allowed ESP types this integration works with. +- ``CODEOWNERS``: GitHub usernames or team names of people that are responsible for this integration. + You should add at least your GitHub username here, as well as anyone who helped you to write code + that is being included. Codebase Standards ------------------ @@ -570,7 +573,7 @@ Standard for the esphome-core codebase: - New components should dump their configuration using ``ESP_LOGCONFIG`` at startup in ``dump_config()`` - ESPHome uses a unified formatting tool for all source files (but this tool can be difficult to install). - When creating a new PR in GitHub, see the Travis CI output to see what formatting needs to be changed + When creating a new PR in GitHub, see the Github Actions output to see what formatting needs to be changed and what potential problems are detected. - The number of external libraries should be kept to a minimum. If the component you're developing has a simple @@ -592,7 +595,7 @@ Standard for the esphome-core codebase: .. note:: - You can also run the lint and Travis checks through a docker image: + You can also run the lint and Github Actions checks through a docker image: .. code-block:: bash diff --git a/guides/diy.rst b/guides/diy.rst index 66b9723cd..6d6855307 100644 --- a/guides/diy.rst +++ b/guides/diy.rst @@ -22,7 +22,8 @@ unless it's truly exceptional, etc. Blog Posts & Videos ------------------- - +- `Collecting Temperature Data from ELA Bluetooth Puck with ESPHome `__ by `lairsdragon `__ +- `Make your fireplace smart (blog series) `__ by `Pieter `__ - `Ultrasonic Salt Level Sensor `__ by `Adonno `__ - `Smart $2 doorbell `__ by `Frenck `__ - `Cheap Car Presence Detection `__ by `Adonno `__ @@ -41,6 +42,7 @@ Blog Posts & Videos - `Esp32 six shutters controller `__ by `Gio-dot `__ - `Washing machine phases detector (Sonoff Pow R2) `__ by `Gio-dot `__ - `Sonoff L1 LED Strip `__ by :ghuser:`emorydunn` +- `ESPHome for SP501E LED Controller `__ by `margau `__ Custom Components & Code ------------------------ @@ -69,6 +71,8 @@ Custom Components & Code - `Paradox alarm system sensors custom component `__ by :ghuser:`Margriko` - `DSC POWER832 (PC5010) alarm system custom component `__ by :ghuser:`Dilbert66` - `Custom UART component for WS3 weather station and air particulate matter sensor `__ by :ghuser:`kquinsland` +- `ADEMCO/VISTA/Honeywell alarm system custom component `__ by :ghuser:`Dilbert66` +- `Winsen ZE08-CH2O (Formaldehyde sensor) custom component `__ by :ghuser:`cretep` Sample Configurations --------------------- @@ -93,3 +97,4 @@ Sample Configurations - `ESPHome Home Assistant stepper motor blinds/curtain `__ by :ghuser:`icarome` - `Control LG UD79-B monitor via UART `__ by :ghuser:`kquinsland` - `ESPHome AXA Remote 2 control `__ by :ghuser:`galagaking` +- `ESPHome WF-DS01 TuyaMCU based dimmable bedside touch lamp `__ by :ghuser:`davet2001` diff --git a/guides/faq.rst b/guides/faq.rst index b37349b2f..3ef1cdfe7 100644 --- a/guides/faq.rst +++ b/guides/faq.rst @@ -220,8 +220,8 @@ Some steps that can help with the issue: - The issue seems to happen with cheap boards more frequently. Especially the "cheap" NodeMCU boards from eBay which sometimes have quite bad antennas. - ESPHome reboots on purpose when something is not going right, e.g. - :doc:`wifi connetion cannot be made ` or - :doc:`api connetion is lost ` or + :doc:`wifi connection cannot be made ` or + :doc:`api connection is lost ` or :doc:`mqtt connection is lost `. So if you are facing this problem you'll need to explicitly set the ``reboot_timeout`` option to ``0s`` on the components being used. diff --git a/guides/getting_started_command_line.rst b/guides/getting_started_command_line.rst index 4bbfa01ea..f20eae1a9 100644 --- a/guides/getting_started_command_line.rst +++ b/guides/getting_started_command_line.rst @@ -21,8 +21,8 @@ Installing ESPHome is very easy. All you need to do is have `Python pip3 install esphome Alternatively, there’s also a Docker image available for easy -installation (the Docker hub image is only available for AMD64 right now; if you have -an RPi, please install ESPHome through ``pip`` or use :doc:`the Hass.io add-on `: +installation (the Docker hub image is available for AMD64, ARM and ARM64(AARCH64) right now; if you have +another architecture, please install ESPHome through ``pip`` or use :doc:`the Home Assistant add-on `: .. code-block:: bash diff --git a/guides/supporters.rst b/guides/supporters.rst index 21bba3b3a..963bb8185 100644 --- a/guides/supporters.rst +++ b/guides/supporters.rst @@ -94,7 +94,7 @@ that have made it into the `ESPHome organization's ` Author & Main Developer *********************** -- `Otto Winter (@OttoWinter) `__ - 2350 contributions +- `Otto Winter (@OttoWinter) `__ - 2352 contributions Contributors ************ @@ -104,6 +104,7 @@ Contributors - `0hax (@0hax) `__ - 2 contributions - `2016for (@2016for) `__ - 1 contribution - `Pavel Golovin (@31337Ghost) `__ - 2 contributions +- `David Martin (@3ative) `__ - 1 contribution - `Aalian Khan (@AalianKhan) `__ - 5 contributions - `Abílio Costa (@abmantis) `__ - 3 contributions - `adamgreg (@adamgreg) `__ - 1 contribution @@ -114,8 +115,8 @@ Contributors - `Alexander Pohl (@ahpohl) `__ - 2 contributions - `Airy André (@airy10) `__ - 1 contribution - `akoivist (@akoivist) `__ - 1 contribution -- `Andrej Komelj (@akomelj) `__ - 2 contributions -- `Alexander Leisentritt (@Alex9779) `__ - 8 contributions +- `Andrej Komelj (@akomelj) `__ - 3 contributions +- `Alexander Leisentritt (@Alex9779) `__ - 9 contributions - `Alexandre Danault (@AlexDanault) `__ - 1 contribution - `Alex Mekkering (@AlexMekkering) `__ - 3 contributions - `Amish Vishwakarma (@amishv) `__ - 3 contributions @@ -126,7 +127,9 @@ Contributors - `Nikolay Vasilchuk (@Anonym-tsk) `__ - 33 contributions - `Adriaan Peeters (@apeeters) `__ - 4 contributions - `Darius Ratkevičius (@aphex008) `__ - 1 contribution +- `Ash McKenzie (@ashmckenzie) `__ - 1 contribution - `Pavel Pletenev (@ASMfreaK) `__ - 1 contribution +- `Achilleas Pipinellis (@axilleas) `__ - 1 contribution - `Kamil Trzciński (@ayufan) `__ - 7 contributions - `Nicholas Peters (@Azimath) `__ - 2 contributions - `Florian Mösch (@badbadc0ffee) `__ - 4 contributions @@ -144,10 +147,12 @@ Contributors - `Brad Davidson (@brandond) `__ - 19 contributions - `Brian Hanifin (@brianhanifin) `__ - 1 contribution - `brianrjones69 (@brianrjones69) `__ - 1 contribution -- `buxtronix (@buxtronix) `__ - 6 contributions +- `buxtronix (@buxtronix) `__ - 7 contributions - `bwente (@bwente) `__ - 1 contribution - `Carlos Gustavo Sarmiento (@carlos-sarmiento) `__ - 4 contributions +- `Carlos Garcia Saura (@CarlosGS) `__ - 1 contribution - `cbialobos (@cbialobos) `__ - 1 contribution +- `Marco (@cdrfun) `__ - 1 contribution - `chris-jennings (@chris-jennings) `__ - 1 contribution - `John (@CircuitSetup) `__ - 5 contributions - `Chris Debenham (@cjd) `__ - 1 contribution @@ -159,33 +164,39 @@ Contributors - `Alex Solomaha (@CyanoFresh) `__ - 1 contribution - `Luar Roji (@cyberplant) `__ - 2 contributions - `Dale Higgs (@dale3h) `__ - 1 contribution +- `damanti-me (@damanti-me) `__ - 1 contribution - `Daniel Bjørnbakk (@danibjor) `__ - 1 contribution - `Daniel Kucera (@danielkucera) `__ - 1 contribution - `Danny Sauer (@dannysauer) `__ - 1 contribution - `DAVe3283 (@DAVe3283) `__ - 3 contributions - `Dave Richer (@davericher) `__ - 3 contributions +- `Dave Wongillies (@davewongillies) `__ - 1 contribution - `David De Sloovere (@DavidDeSloovere) `__ - 3 contributions - `David Beitey (@davidjb) `__ - 1 contribution +- `Debashish Sahu (@debsahu) `__ - 1 contribution - `declanshanaghy (@declanshanaghy) `__ - 3 contributions - `deftdawg (@deftdawg) `__ - 1 contribution - `Rsan (@deltazerorsan) `__ - 1 contribution -- `dependabot[bot] (@dependabot[bot]) `__ - 19 contributions +- `Mickaël Le Baillif (@demikl) `__ - 2 contributions +- `dependabot[bot] (@dependabot[bot]) `__ - 26 contributions - `Destix (@Destix) `__ - 1 contribution -- `Alain Turbide (@Dilbert66) `__ - 1 contribution +- `Alain Turbide (@Dilbert66) `__ - 2 contributions - `Mark (@Diramu) `__ - 1 contribution - `Dirk Jahnke (@dirkj) `__ - 1 contribution - `dmkif (@dmkif) `__ - 1 contribution - `Jiang Sheng (@doskoi) `__ - 1 contribution - `Robert Schütz (@dotlambda) `__ - 3 contributions -- `Daniel Hyles (@DotNetDann) `__ - 1 contribution +- `Daniel Hyles (@DotNetDann) `__ - 2 contributions - `dr-oblivium (@dr-oblivium) `__ - 2 contributions - `Drew Perttula (@drewp) `__ - 2 contributions +- `dubit0 (@dubit0) `__ - 1 contribution - `Ermanno Baschiera (@ebaschiera) `__ - 1 contribution - `Niclas Larsson (@edge90) `__ - 1 contribution - `Eenoo (@Eenoo) `__ - 1 contribution - `Erwin Kooi (@egeltje) `__ - 2 contributions - `Eike (@ei-ke) `__ - 1 contribution - `Elkropac (@Elkropac) `__ - 2 contributions +- `EmbeddedDevver (@EmbeddedDevver) `__ - 1 contribution - `EmmanuelLM (@EmmanuelLM) `__ - 1 contribution - `Emory Dunn (@emorydunn) `__ - 1 contribution - `Anders Persson (@emwap) `__ - 4 contributions @@ -195,15 +206,15 @@ Contributors - `erazor666 (@erazor666) `__ - 1 contribution - `Eric Hiller (@erichiller) `__ - 1 contribution - `escoand (@escoand) `__ - 7 contributions -- `esphomebot (@esphomebot) `__ - 2 contributions +- `esphomebot (@esphomebot) `__ - 4 contributions - `Evan Coleman (@evandcoleman) `__ - 3 contributions - `Malte Franken (@exxamalte) `__ - 2 contributions - `Fabian Affolter (@fabaff) `__ - 24 contributions - `C W (@fake-name) `__ - 2 contributions - `Christian Ferbar (@ferbar) `__ - 1 contribution -- `Rich Foley (@foley803) `__ - 1 contribution - `Francisk0 (@Francisk0) `__ - 1 contribution - `Frank Bakker (@FrankBakkerNl) `__ - 1 contribution +- `Frankster-NL (@Frankster-NL) `__ - 1 contribution - `Fredrik Erlandsson (@fredrike) `__ - 1 contribution - `Evgeny (@freekode) `__ - 8 contributions - `Brett McKenzie (@freerangeeggs) `__ - 1 contribution @@ -216,7 +227,7 @@ Contributors - `Giovanni (@Gio-dot) `__ - 2 contributions - `gitolicious (@gitolicious) `__ - 15 contributions - `The Gitter Badger (@gitter-badger) `__ - 1 contribution -- `Guillermo Ruffino (@glmnet) `__ - 157 contributions +- `Guillermo Ruffino (@glmnet) `__ - 171 contributions - `Giorgos Logiotatidis (@glogiotatidis) `__ - 1 contribution - `Germain Masse (@gmasse) `__ - 2 contributions - `Jelle Raaijmakers (@GMTA) `__ - 1 contribution @@ -233,23 +244,28 @@ Contributors - `Ian Leeder (@ianleeder) `__ - 2 contributions - `icarome (@icarome) `__ - 1 contribution - `igg (@igg) `__ - 5 contributions +- `ikatkov (@ikatkov) `__ - 1 contribution - `Lorenzo Ortiz (@Infinitte) `__ - 1 contribution - `Ivan Shvedunov (@ivan4th) `__ - 1 contribution - `Ivan Kravets (@ivankravets) `__ - 1 contribution +- `Ivo-tje (@Ivo-tje) `__ - 1 contribution +- `James Gao (@jamesgao) `__ - 1 contribution - `Jan Pieper (@janpieper) `__ - 2 contributions - `Jason-nz (@Jason-nz) `__ - 1 contribution - `Jason Hines (@jasonehines) `__ - 1 contribution - `JbLb (@jblb) `__ - 1 contribution - `Joshua Dadswell (@jdads1) `__ - 1 contribution - `jeff-h (@jeff-h) `__ - 2 contributions -- `Jeff Rescignano (@JeffResc) `__ - 8 contributions -- `Jesse Hills (@jesserockz) `__ - 38 contributions +- `Jeff Rescignano (@JeffResc) `__ - 10 contributions +- `Jesse Hills (@jesserockz) `__ - 44 contributions - `Jonathan Jefferies (@jjok) `__ - 1 contribution - `Jeppe Ladefoged (@jladefoged) `__ - 2 contributions - `Jonathan Martens (@jmartens) `__ - 1 contribution +- `Johan van der Kuijl (@johanvanderkuijl) `__ - 1 contribution - `Johboh (@Johboh) `__ - 2 contributions - `John Erik Halse (@johnerikhalse) `__ - 1 contribution - `Jonathan Adams (@jonathanadams) `__ - 2 contributions +- `Jonathan Treffler (@JonathanTreffler) `__ - 1 contribution - `JonnyaiR (@jonnyair) `__ - 2 contributions - `Joppy (@JoppyFurr) `__ - 2 contributions - `junnikokuki (@junnikokuki) `__ - 1 contribution @@ -266,9 +282,11 @@ Contributors - `Klaas Schoute (@klaasnicolaas) `__ - 1 contribution - `Kevin Lewis (@kll) `__ - 1 contribution - `korellas (@korellas) `__ - 1 contribution +- `Kevin Pelzel (@kpelzel) `__ - 1 contribution - `krahabb (@krahabb) `__ - 2 contributions - `KristopherMackowiak (@KristopherMackowiak) `__ - 1 contribution - `kroimon (@kroimon) `__ - 2 contributions +- `Kendell R (@KTibow) `__ - 1 contribution - `kvvoff (@kvvoff) `__ - 1 contribution - `Ken Davidson (@kwdavidson) `__ - 1 contribution - `Stefan Lässer (@Laess3r) `__ - 1 contribution @@ -277,6 +295,7 @@ Contributors - `Joakim Sørensen (@ludeeus) `__ - 11 contributions - `Lukas Klass (@LukasK13) `__ - 1 contribution - `Lumpusz (@Lumpusz) `__ - 2 contributions +- `Luke Fitzgerald (@lwfitzgerald) `__ - 1 contribution - `Lewis Juggins (@lwis) `__ - 1 contribution - `Michael Klamminger (@m1ch) `__ - 1 contribution - `Marc-Antoine Courteau (@macourteau) `__ - 1 contribution @@ -284,12 +303,13 @@ Contributors - `Magnus Øverli (@magnusoverli) `__ - 1 contribution - `Major Péter (@majorpeter) `__ - 2 contributions - `Marcel van der Veldt (@marcelveldt) `__ - 2 contributions -- `Marvin Gaube (@margau) `__ - 2 contributions +- `Marvin Gaube (@margau) `__ - 3 contributions - `Martynas Griškonis (@Margriko) `__ - 1 contribution - `Mario (@mario-tux) `__ - 3 contributions - `Matthew Harrold (@marrold) `__ - 1 contribution - `Martin (@martgras) `__ - 1 contribution - `Martin Hjelmare (@MartinHjelmare) `__ - 1 contribution +- `MartinWelsch (@MartinWelsch) `__ - 1 contribution - `MasterTim17 (@MasterTim17) `__ - 1 contribution - `mbo18 (@mbo18) `__ - 1 contribution - `Joseph Mearman (@Mearman) `__ - 1 contribution @@ -297,6 +317,7 @@ Contributors - `MeIchthys (@meichthys) `__ - 1 contribution - `meijerwynand (@meijerwynand) `__ - 2 contributions - `Marco (@Melkor82) `__ - 2 contributions +- `micw (@micw) `__ - 1 contribution - `Pauline Middelink (@middelink) `__ - 2 contributions - `Matthew Edwards (@mje-nz) `__ - 1 contribution - `mjoshd (@mjoshd) `__ - 2 contributions @@ -312,7 +333,7 @@ Contributors - `Niels Ulrik Andersen (@myplacedk) `__ - 1 contribution - `Kevin Uhlir (@n0bel) `__ - 1 contribution - `Erik Näsström (@Naesstrom) `__ - 1 contribution -- `Oskar Napieraj (@napieraj) `__ - 4 contributions +- `Oskar Napieraj (@napieraj) `__ - 6 contributions - `Bergont Nicolas (@nbergont) `__ - 1 contribution - `Nebula (@nebula-it) `__ - 1 contribution - `nepozs (@nepozs) `__ - 1 contribution @@ -326,6 +347,7 @@ Contributors - `Nuno Sousa (@nunofgs) `__ - 1 contribution - `Chris Nussbaum (@nuttytree) `__ - 1 contribution - `Olivér Falvai (@ofalvai) `__ - 1 contribution +- `Oncleben31 (@oncleben31) `__ - 1 contribution - `Oscar Bolmsten (@oscar-b) `__ - 4 contributions - `Panuruj Khambanonda (PK) (@panuruj) `__ - 2 contributions - `Paul Deen (@PaulAntonDeen) `__ - 2 contributions @@ -336,6 +358,7 @@ Contributors - `perjury (@perjury) `__ - 1 contribution - `Philip Rosenberg-Watt (@PhilRW) `__ - 1 contribution - `phjr (@phjr) `__ - 2 contributions +- `pille (@pille) `__ - 1 contribution - `pixiandreas (@pixiandreas) `__ - 1 contribution - `Peter Kuehne (@pkuehne) `__ - 5 contributions - `Plácido Revilla (@placidorevilla) `__ - 2 contributions @@ -352,7 +375,9 @@ Contributors - `Pär Stålberg (@rabbadab) `__ - 1 contribution - `Florian Ragwitz (@rafl) `__ - 1 contribution - `Robert Cambridge (@rcambrj) `__ - 1 contribution +- `Ronald Dehuysser (@rdehuyss) `__ - 1 contribution - `Alex Reid (@reidprojects) `__ - 2 contributions +- `Rich Foley (@RichFoley) `__ - 1 contribution - `Richard Lewis (@richrd) `__ - 3 contributions - `rlowens (@rlowens) `__ - 3 contributions - `LMR (@rmooreID) `__ - 1 contribution @@ -362,7 +387,7 @@ Contributors - `Jérôme W. (@RomRider) `__ - 1 contribution - `Robbie Page (@rorpage) `__ - 1 contribution - `rradar (@rradar) `__ - 4 contributions -- `rspaargaren (@rspaargaren) `__ - 4 contributions +- `rspaargaren (@rspaargaren) `__ - 5 contributions - `Rubén G. (@rubengargar) `__ - 1 contribution - `rudgr (@rudgr) `__ - 1 contribution - `ryanalden (@ryanalden) `__ - 2 contributions @@ -376,8 +401,10 @@ Contributors - `sethcohn (@sethcohn) `__ - 1 contribution - `Emanuele Tessore (@setola) `__ - 1 contribution - `Abdelkader Boudih (@seuros) `__ - 1 contribution +- `shaeed (@shaeed) `__ - 1 contribution - `shbatm (@shbatm) `__ - 1 contribution - `sherbang (@sherbang) `__ - 4 contributions +- `SiliconAvatar (@SiliconAvatar) `__ - 1 contribution - `sillyfrog (@sillyfrog) `__ - 1 contribution - `Derek Hageman (@Sizurka) `__ - 2 contributions - `Niklas Wagner (@Skaronator) `__ - 9 contributions @@ -386,7 +413,8 @@ Contributors - `Paul Krischer (@SqyD) `__ - 1 contribution - `sredfern (@sredfern) `__ - 2 contributions - `srg74 (@srg74) `__ - 1 contribution -- `Samuel Sieb (@ssieb) `__ - 9 contributions +- `Samuel Sieb (@ssieb) `__ - 10 contributions +- `Jordan Vohwinkel (@sublime93) `__ - 1 contribution - `Teemu Mikkonen (@T3m3z) `__ - 2 contributions - `Taigar2015 (@Taigar2015) `__ - 2 contributions - `Levente Tamas (@tamisoft) `__ - 2 contributions @@ -394,10 +422,11 @@ Contributors - `Team Super Panda (@teamsuperpanda) `__ - 1 contribution - `Thomas Eckerstorfer (@TheEggi) `__ - 5 contributions - `Spencer Hachmeister (@TheHackmeister) `__ - 1 contribution +- `thejonesyboy (@thejonesyboy) `__ - 1 contribution - `TheJulianJES (@TheJulianJES) `__ - 3 contributions - `Jozef Zuzelka (@TheKuko) `__ - 2 contributions - `Andrew Quested (@thenameiwantedwastaken) `__ - 1 contribution -- `Florian Gareis (@TheZoker) `__ - 7 contributions +- `Florian Gareis (@TheZoker) `__ - 8 contributions - `Thomas Klingbeil (@thomasklingbeil) `__ - 3 contributions - `Andrew Thompson (@thompsa) `__ - 2 contributions - `thubot (@thubot) `__ - 1 contribution @@ -407,11 +436,12 @@ Contributors - `Tom Brien (@TomBrien) `__ - 1 contribution - `TomFahey (@TomFahey) `__ - 2 contributions - `Tommy Kihlstrøm (@tomludd) `__ - 1 contribution -- `tomlut (@tomlut) `__ - 1 contribution +- `tomlut (@tomlut) `__ - 2 contributions - `Tom Price (@tomtom5152) `__ - 2 contributions - `Felix Eckhofer (@tribut) `__ - 1 contribution - `Troon (@Troon) `__ - 1 contribution - `truglodite (@truglodite) `__ - 1 contribution +- `Trevor North (@trvrnrth) `__ - 2 contributions - `Gediminas Šaltenis (@trylika) `__ - 2 contributions - `tubalainen (@tubalainen) `__ - 3 contributions - `Tuckie (@Tuckie) `__ - 1 contribution @@ -436,4 +466,4 @@ Contributors - `YuanL.Lee (@yuanl) `__ - 1 contribution - `ZabojnikM (@ZabojnikM) `__ - 1 contribution -*This page was last updated September 14, 2020.* +*This page was last updated October 22, 2020.* diff --git a/images/ade7953.svg b/images/ade7953.svg index f23ca975e..28eb9f7b5 100644 --- a/images/ade7953.svg +++ b/images/ade7953.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/images/am2320.jpg b/images/am2320.jpg index ff2e0dfdd..389d08f9f 100644 Binary files a/images/am2320.jpg and b/images/am2320.jpg differ diff --git a/images/arduino_logo.svg b/images/arduino_logo.svg index 6ce090ed7..d81371e65 100644 --- a/images/arduino_logo.svg +++ b/images/arduino_logo.svg @@ -1 +1 @@ - + \ No newline at end of file diff --git a/images/binary_sensor_map.jpg b/images/binary_sensor_map.jpg index a81ac9eda..c78fc5181 100644 Binary files a/images/binary_sensor_map.jpg and b/images/binary_sensor_map.jpg differ diff --git a/images/bme680.jpg b/images/bme680.jpg index 5c391d5f1..63da5eae0 100644 Binary files a/images/bme680.jpg and b/images/bme680.jpg differ diff --git a/images/buzzer.jpg b/images/buzzer.jpg index 8601a280c..5a80fdfdb 100644 Binary files a/images/buzzer.jpg and b/images/buzzer.jpg differ diff --git a/images/connection.svg b/images/connection.svg index 38cb4f9f0..5cd21df57 100644 --- a/images/connection.svg +++ b/images/connection.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/images/cookbook-brilliant-mirabella-genio-smart-plugs.jpg b/images/cookbook-brilliant-mirabella-genio-smart-plugs.jpg index f426e3243..c555b231f 100644 Binary files a/images/cookbook-brilliant-mirabella-genio-smart-plugs.jpg and b/images/cookbook-brilliant-mirabella-genio-smart-plugs.jpg differ diff --git a/images/cookbook-zemismart-rgbw-downlight.jpg b/images/cookbook-zemismart-rgbw-downlight.jpg index 1141e279a..10a79e7ff 100644 Binary files a/images/cookbook-zemismart-rgbw-downlight.jpg and b/images/cookbook-zemismart-rgbw-downlight.jpg differ diff --git a/images/ct_clamp.jpg b/images/ct_clamp.jpg index 9f8400cb1..e348aa393 100644 Binary files a/images/ct_clamp.jpg and b/images/ct_clamp.jpg differ diff --git a/images/dac.svg b/images/dac.svg index 87cdb32b5..7e2c37468 100644 --- a/images/dac.svg +++ b/images/dac.svg @@ -1 +1 @@ - + \ No newline at end of file diff --git a/images/dallas.jpg b/images/dallas.jpg index 12b2e8393..03f0a58c4 100644 Binary files a/images/dallas.jpg and b/images/dallas.jpg differ diff --git a/images/dht12.jpg b/images/dht12.jpg index 05e6eca85..df44c9994 100644 Binary files a/images/dht12.jpg and b/images/dht12.jpg differ diff --git a/images/donate-patreon.png b/images/donate-patreon.png index 5443ec963..79754db09 100644 Binary files a/images/donate-patreon.png and b/images/donate-patreon.png differ diff --git a/images/donate-paypal.png b/images/donate-paypal.png index e750d20d0..af4509e8c 100644 Binary files a/images/donate-paypal.png and b/images/donate-paypal.png differ diff --git a/images/esw01-eu.jpg b/images/esw01-eu.jpg index 11657d0bb..4adda23ac 100644 Binary files a/images/esw01-eu.jpg and b/images/esw01-eu.jpg differ diff --git a/images/exposure_notifications.png b/images/exposure_notifications.png index 0f9ead843..643f2f8f7 100644 Binary files a/images/exposure_notifications.png and b/images/exposure_notifications.png differ diff --git a/images/h801.jpg b/images/h801.jpg index df3603bf1..4c2532984 100644 Binary files a/images/h801.jpg and b/images/h801.jpg differ diff --git a/images/hm3301.jpg b/images/hm3301.jpg index 979a402ce..556cd0f3a 100644 Binary files a/images/hm3301.jpg and b/images/hm3301.jpg differ diff --git a/images/hmc5883l.jpg b/images/hmc5883l.jpg index 311905a1a..18987bbc4 100644 Binary files a/images/hmc5883l.jpg and b/images/hmc5883l.jpg differ diff --git a/images/iaq_board2.jpg b/images/iaq_board2.jpg new file mode 100644 index 000000000..a83b8f1f6 Binary files /dev/null and b/images/iaq_board2.jpg differ diff --git a/images/ina226.jpg b/images/ina226.jpg index 932d9da36..24d8a6194 100644 Binary files a/images/ina226.jpg and b/images/ina226.jpg differ diff --git a/images/lcd.jpg b/images/lcd.jpg index a346933cf..b70b199b1 100644 Binary files a/images/lcd.jpg and b/images/lcd.jpg differ diff --git a/images/leak-detector-m5stickC_main_index.jpg b/images/leak-detector-m5stickC_main_index.jpg index 6b271061e..6b3455ab8 100644 Binary files a/images/leak-detector-m5stickC_main_index.jpg and b/images/leak-detector-m5stickC_main_index.jpg differ diff --git a/images/light_switch.png b/images/light_switch.png index e46bf82ac..4f6bccacd 100644 Binary files a/images/light_switch.png and b/images/light_switch.png differ diff --git a/images/max31856.jpg b/images/max31856.jpg index c3690221e..14a7b49cd 100644 Binary files a/images/max31856.jpg and b/images/max31856.jpg differ diff --git a/images/max31865.jpg b/images/max31865.jpg index 2ea6a54dd..d6d5620be 100644 Binary files a/images/max31865.jpg and b/images/max31865.jpg differ diff --git a/images/max7219.jpg b/images/max7219.jpg index 6c86c9690..3a8fa53a6 100644 Binary files a/images/max7219.jpg and b/images/max7219.jpg differ diff --git a/images/mcp23017.svg b/images/mcp23017.svg index 8b429829a..944d240a0 100644 --- a/images/mcp23017.svg +++ b/images/mcp23017.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/images/mcp230xx.svg b/images/mcp230xx.svg index 5e6224344..76bb5ec2b 100644 --- a/images/mcp230xx.svg +++ b/images/mcp230xx.svg @@ -1,67 +1 @@ - - - - + \ No newline at end of file diff --git a/images/mcp3008.png b/images/mcp3008.png old mode 100755 new mode 100644 index 6df3254f2..170a5c938 Binary files a/images/mcp3008.png and b/images/mcp3008.png differ diff --git a/images/nextion.jpg b/images/nextion.jpg index 66f56d33a..0029825e8 100644 Binary files a/images/nextion.jpg and b/images/nextion.jpg differ diff --git a/images/ntc.jpg b/images/ntc.jpg index d1eb5a80e..4b8c37942 100644 Binary files a/images/ntc.jpg and b/images/ntc.jpg differ diff --git a/images/pcd8544.jpg b/images/pcd8544.jpg index 4ea33bb82..f0cf9f559 100644 Binary files a/images/pcd8544.jpg and b/images/pcd8544.jpg differ diff --git a/images/pir.jpg b/images/pir.jpg index d1b14f986..d8d99950f 100644 Binary files a/images/pir.jpg and b/images/pir.jpg differ diff --git a/images/power_meter.jpg b/images/power_meter.jpg index 7fb03022d..744c66f5a 100644 Binary files a/images/power_meter.jpg and b/images/power_meter.jpg differ diff --git a/images/pwm.png b/images/pwm.png index adc5effee..689811f7e 100644 Binary files a/images/pwm.png and b/images/pwm.png differ diff --git a/images/pzem004t.svg b/images/pzem004t.svg index 57bc1bd98..cfb56a9c3 100644 --- a/images/pzem004t.svg +++ b/images/pzem004t.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/images/pzemac.svg b/images/pzemac.svg index 7b4ea7b7b..e206bb939 100644 --- a/images/pzemac.svg +++ b/images/pzemac.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/images/pzemdc.svg b/images/pzemdc.svg index 590480a4c..bafdbd83e 100644 --- a/images/pzemdc.svg +++ b/images/pzemdc.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/images/qmc5883l.jpg b/images/qmc5883l.jpg index debedd891..5e0b72cc5 100644 Binary files a/images/qmc5883l.jpg and b/images/qmc5883l.jpg differ diff --git a/images/rf_bridge.jpg b/images/rf_bridge.jpg index 3f61b6e65..6fcfafedf 100644 Binary files a/images/rf_bridge.jpg and b/images/rf_bridge.jpg differ diff --git a/images/rgb.png b/images/rgb.png index 222356288..7f3b12ede 100644 Binary files a/images/rgb.png and b/images/rgb.png differ diff --git a/images/rgbw.png b/images/rgbw.png index 65020ccc7..daf6ce8d1 100644 Binary files a/images/rgbw.png and b/images/rgbw.png differ diff --git a/images/sds011.jpg b/images/sds011.jpg index 7ee6c4ea6..193f308af 100644 Binary files a/images/sds011.jpg and b/images/sds011.jpg differ diff --git a/images/servo.svg b/images/servo.svg index 9e0ebb149..7dac4b428 100644 --- a/images/servo.svg +++ b/images/servo.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/images/sm16716.svg b/images/sm16716.svg index fbfac89bc..646caefa3 100644 --- a/images/sm16716.svg +++ b/images/sm16716.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/images/sn74hc595.jpg b/images/sn74hc595.jpg index fbc6fab8d..0c6d0a77d 100644 Binary files a/images/sn74hc595.jpg and b/images/sn74hc595.jpg differ diff --git a/images/sonoff_1t_t3.png b/images/sonoff_1t_t3.png index 112c2129b..b56c685a7 100644 Binary files a/images/sonoff_1t_t3.png and b/images/sonoff_1t_t3.png differ diff --git a/images/sonoff_4ch.jpg b/images/sonoff_4ch.jpg index b88d86570..3deed918b 100644 Binary files a/images/sonoff_4ch.jpg and b/images/sonoff_4ch.jpg differ diff --git a/images/sonoff_basic.jpg b/images/sonoff_basic.jpg index 7dd3502d1..e2ae50620 100644 Binary files a/images/sonoff_basic.jpg and b/images/sonoff_basic.jpg differ diff --git a/images/sonoff_dual_r2.jpg b/images/sonoff_dual_r2.jpg index 68a842d78..8f9d39dd0 100644 Binary files a/images/sonoff_dual_r2.jpg and b/images/sonoff_dual_r2.jpg differ diff --git a/images/sonoff_s20.jpg b/images/sonoff_s20.jpg index cbe238801..0ea19d29c 100644 Binary files a/images/sonoff_s20.jpg and b/images/sonoff_s20.jpg differ diff --git a/images/sonoff_t1_uk_3g_v1.1.jpg b/images/sonoff_t1_uk_3g_v1.1.jpg index a1a606521..95a3708b9 100644 Binary files a/images/sonoff_t1_uk_3g_v1.1.jpg and b/images/sonoff_t1_uk_3g_v1.1.jpg differ diff --git a/images/sonoff_t3_eu_3g_v1.0.jpg b/images/sonoff_t3_eu_3g_v1.0.jpg new file mode 100644 index 000000000..24b152f8f Binary files /dev/null and b/images/sonoff_t3_eu_3g_v1.0.jpg differ diff --git a/images/ssd1306.jpg b/images/ssd1306.jpg index 5ac7e25b6..35c8a4dce 100644 Binary files a/images/ssd1306.jpg and b/images/ssd1306.jpg differ diff --git a/images/ssd1351.jpg b/images/ssd1351.jpg index b0de58074..c5677ca3c 100644 Binary files a/images/ssd1351.jpg and b/images/ssd1351.jpg differ diff --git a/images/st7789v.jpg b/images/st7789v.jpg index d01d1d0fb..07eef56c7 100644 Binary files a/images/st7789v.jpg and b/images/st7789v.jpg differ diff --git a/images/teckin_sb50.jpg b/images/teckin_sb50.jpg index 9cb6dc08d..f5cb84c2b 100644 Binary files a/images/teckin_sb50.jpg and b/images/teckin_sb50.jpg differ diff --git a/images/tlc59208f.jpg b/images/tlc59208f.jpg index 4e74189cc..ac157ead2 100644 Binary files a/images/tlc59208f.jpg and b/images/tlc59208f.jpg differ diff --git a/images/tm1637.jpg b/images/tm1637.jpg index f3def12f0..ecb897616 100644 Binary files a/images/tm1637.jpg and b/images/tm1637.jpg differ diff --git a/images/tm1651_battery_display.jpg b/images/tm1651_battery_display.jpg index bf4371400..1385a9367 100644 Binary files a/images/tm1651_battery_display.jpg and b/images/tm1651_battery_display.jpg differ diff --git a/images/tuya.png b/images/tuya.png index 72a6f2bb0..aa0aeee3b 100644 Binary files a/images/tuya.png and b/images/tuya.png differ diff --git a/images/tx20.jpg b/images/tx20.jpg index 3c83d1773..0d760a687 100644 Binary files a/images/tx20.jpg and b/images/tx20.jpg differ diff --git a/images/vl53l0x.svg b/images/vl53l0x.svg index 19f837c12..caa00f2b9 100644 --- a/images/vl53l0x.svg +++ b/images/vl53l0x.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/images/waveshare_epaper.jpg b/images/waveshare_epaper.jpg index 518e7d978..42ed5ffb6 100644 Binary files a/images/waveshare_epaper.jpg and b/images/waveshare_epaper.jpg differ diff --git a/images/xiaomi_cgg1.jpg b/images/xiaomi_cgg1.jpg index 0261d3183..4fac18dfa 100644 Binary files a/images/xiaomi_cgg1.jpg and b/images/xiaomi_cgg1.jpg differ diff --git a/images/xiaomi_hhccjcy01.jpg b/images/xiaomi_hhccjcy01.jpg index 906cf8b40..f98808d84 100644 Binary files a/images/xiaomi_hhccjcy01.jpg and b/images/xiaomi_hhccjcy01.jpg differ diff --git a/images/xiaomi_lywsd02.jpg b/images/xiaomi_lywsd02.jpg index 3fb47f7b5..59311107e 100644 Binary files a/images/xiaomi_lywsd02.jpg and b/images/xiaomi_lywsd02.jpg differ diff --git a/images/xiaomi_lywsdcgq.jpg b/images/xiaomi_lywsdcgq.jpg index c67fb78c3..3be69ecc3 100644 Binary files a/images/xiaomi_lywsdcgq.jpg and b/images/xiaomi_lywsdcgq.jpg differ diff --git a/images/xiaomi_mijia_logo.jpg b/images/xiaomi_mijia_logo.jpg index 788883281..735484c9c 100644 Binary files a/images/xiaomi_mijia_logo.jpg and b/images/xiaomi_mijia_logo.jpg differ diff --git a/images/zgm053.jpg b/images/zgm053.jpg index 4bbc637e4..1f588f6f8 100644 Binary files a/images/zgm053.jpg and b/images/zgm053.jpg differ diff --git a/index.rst b/index.rst index ad66e00f2..1fdb29178 100644 --- a/index.rst +++ b/index.rst @@ -63,6 +63,7 @@ Technically, all ESP8266/ESP32 devices are supported by ESPHome. Generic Sonoff, devices/sonoff, sonoff.svg Sonoff Basic, devices/sonoff_basic, sonoff_basic.jpg Sonoff T1 UK 3 Gang V1.1, devices/sonoff_t1_uk_3gang_v1.1, sonoff_t1_uk_3g_v1.1.jpg + Sonoff T3 EU 3 Gang V1.0, devices/sonoff_t3_eu_3gang_v1.0, sonoff_t3_eu_3g_v1.0.jpg Core Components --------------- @@ -403,6 +404,7 @@ Cookbook Teckin SB50, cookbook/teckin_sb50, teckin_sb50.jpg Sonoff light switch options, cookbook/sonoff-light-switch, light_switch.png ESP32 Water Leak Detector, cookbook/leak-detector-m5stickC, leak-detector-m5stickC_main_index.jpg + IAQ (Indoor Air Quality) Board, cookbook/iaq_board, iaq_board2.jpg 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 `. diff --git a/svg2png/ac_dimmer.png b/svg2png/ac_dimmer.png index 757125022..5d2b9b623 100644 Binary files a/svg2png/ac_dimmer.png and b/svg2png/ac_dimmer.png differ diff --git a/svg2png/ade7953.png b/svg2png/ade7953.png index f96a43936..fa727ca53 100644 Binary files a/svg2png/ade7953.png and b/svg2png/ade7953.png differ diff --git a/svg2png/air-conditioner-ir.png b/svg2png/air-conditioner-ir.png index 5c183ef76..e49b33c63 100644 Binary files a/svg2png/air-conditioner-ir.png and b/svg2png/air-conditioner-ir.png differ diff --git a/svg2png/air-conditioner.png b/svg2png/air-conditioner.png index d0bdc9e02..6e613fac1 100644 Binary files a/svg2png/air-conditioner.png and b/svg2png/air-conditioner.png differ diff --git a/svg2png/arduino_logo.png b/svg2png/arduino_logo.png index 6887d8c07..818e0f270 100644 Binary files a/svg2png/arduino_logo.png and b/svg2png/arduino_logo.png differ diff --git a/svg2png/auto-fix.png b/svg2png/auto-fix.png index b1cb4722a..c4dbb62f7 100644 Binary files a/svg2png/auto-fix.png and b/svg2png/auto-fix.png differ diff --git a/svg2png/bluetooth.png b/svg2png/bluetooth.png index 50b808ec1..b47c779fb 100644 Binary files a/svg2png/bluetooth.png and b/svg2png/bluetooth.png differ diff --git a/svg2png/brightness-medium.png b/svg2png/brightness-medium.png index 9b6b6ad47..a7f1e0449 100644 Binary files a/svg2png/brightness-medium.png and b/svg2png/brightness-medium.png differ diff --git a/svg2png/bug-report.png b/svg2png/bug-report.png index 46440093a..ab729ff35 100644 Binary files a/svg2png/bug-report.png and b/svg2png/bug-report.png differ diff --git a/svg2png/camera.png b/svg2png/camera.png index 4e8bffee9..c7f473579 100644 Binary files a/svg2png/camera.png and b/svg2png/camera.png differ diff --git a/svg2png/clock-outline.png b/svg2png/clock-outline.png index aa6793d0e..79cbde2ad 100644 Binary files a/svg2png/clock-outline.png and b/svg2png/clock-outline.png differ diff --git a/svg2png/cloud-circle.png b/svg2png/cloud-circle.png index 32f4b09ca..6a32d0f23 100644 Binary files a/svg2png/cloud-circle.png and b/svg2png/cloud-circle.png differ diff --git a/svg2png/color_lens.png b/svg2png/color_lens.png index 0907dc408..a4d14621f 100644 Binary files a/svg2png/color_lens.png and b/svg2png/color_lens.png differ diff --git a/svg2png/connection.png b/svg2png/connection.png index 8770cb4db..99c4d0649 100644 Binary files a/svg2png/connection.png and b/svg2png/connection.png differ diff --git a/svg2png/console.png b/svg2png/console.png index 2ac148188..fd8d4cd3e 100644 Binary files a/svg2png/console.png and b/svg2png/console.png differ diff --git a/svg2png/creation.png b/svg2png/creation.png index 55e5d47bb..93067b670 100644 Binary files a/svg2png/creation.png and b/svg2png/creation.png differ diff --git a/svg2png/crosshairs-gps.png b/svg2png/crosshairs-gps.png index f66b04489..4057756cf 100644 Binary files a/svg2png/crosshairs-gps.png and b/svg2png/crosshairs-gps.png differ diff --git a/svg2png/cse7766.png b/svg2png/cse7766.png index a14dbcb20..47173b1d6 100644 Binary files a/svg2png/cse7766.png and b/svg2png/cse7766.png differ diff --git a/svg2png/dac.png b/svg2png/dac.png index aa1a95df1..f29ba604f 100644 Binary files a/svg2png/dac.png and b/svg2png/dac.png differ diff --git a/svg2png/description.png b/svg2png/description.png index 883990f7b..9ecd05a0a 100644 Binary files a/svg2png/description.png and b/svg2png/description.png differ diff --git a/svg2png/dfplayer.png b/svg2png/dfplayer.png index 68fa55aca..d274f9090 100644 Binary files a/svg2png/dfplayer.png and b/svg2png/dfplayer.png differ diff --git a/svg2png/diy.png b/svg2png/diy.png index e1e753c8c..214fe3aeb 100644 Binary files a/svg2png/diy.png and b/svg2png/diy.png differ diff --git a/svg2png/earth.png b/svg2png/earth.png index 4f8aeebd5..10ae912c8 100644 Binary files a/svg2png/earth.png and b/svg2png/earth.png differ diff --git a/svg2png/electric-switch.png b/svg2png/electric-switch.png index d17da1399..7d84e8ce6 100644 Binary files a/svg2png/electric-switch.png and b/svg2png/electric-switch.png differ diff --git a/svg2png/esp32.png b/svg2png/esp32.png index 2eaf3a8a0..cbf604ffc 100644 Binary files a/svg2png/esp32.png and b/svg2png/esp32.png differ diff --git a/svg2png/esp8266.png b/svg2png/esp8266.png index cd49c73f4..482d5efa8 100644 Binary files a/svg2png/esp8266.png and b/svg2png/esp8266.png differ diff --git a/svg2png/ethernet.png b/svg2png/ethernet.png index fd6a1cc2a..fae4ef51f 100644 Binary files a/svg2png/ethernet.png and b/svg2png/ethernet.png differ diff --git a/svg2png/fan.png b/svg2png/fan.png index 5fbcefdf6..793b22533 100644 Binary files a/svg2png/fan.png and b/svg2png/fan.png differ diff --git a/svg2png/file-document-box.png b/svg2png/file-document-box.png index 6b9fb267a..de4803516 100644 Binary files a/svg2png/file-document-box.png and b/svg2png/file-document-box.png differ diff --git a/svg2png/flash.png b/svg2png/flash.png index 4884d506a..a3d62f4ae 100644 Binary files a/svg2png/flash.png and b/svg2png/flash.png differ diff --git a/svg2png/folder-open.png b/svg2png/folder-open.png index 18bc6a209..ad3397be5 100644 Binary files a/svg2png/folder-open.png and b/svg2png/folder-open.png differ diff --git a/svg2png/function.png b/svg2png/function.png index 56b5226bf..13fbe9703 100644 Binary files a/svg2png/function.png and b/svg2png/function.png differ diff --git a/svg2png/github-circle.png b/svg2png/github-circle.png index 30cb2a202..6fb78ec01 100644 Binary files a/svg2png/github-circle.png and b/svg2png/github-circle.png differ diff --git a/svg2png/heart.png b/svg2png/heart.png index d1d93e673..0be56653d 100644 Binary files a/svg2png/heart.png and b/svg2png/heart.png differ diff --git a/svg2png/hlw8012.png b/svg2png/hlw8012.png index ceb15dda4..2753734a5 100644 Binary files a/svg2png/hlw8012.png and b/svg2png/hlw8012.png differ diff --git a/svg2png/home-assistant.png b/svg2png/home-assistant.png index 653e5a8cd..9e6e1353c 100644 Binary files a/svg2png/home-assistant.png and b/svg2png/home-assistant.png differ diff --git a/svg2png/hotel.png b/svg2png/hotel.png index d0684f1ef..06a553821 100644 Binary files a/svg2png/hotel.png and b/svg2png/hotel.png differ diff --git a/svg2png/http.png b/svg2png/http.png index 6465ff52a..9d418423e 100644 Binary files a/svg2png/http.png and b/svg2png/http.png differ diff --git a/svg2png/i2c.png b/svg2png/i2c.png index 5b2754a1a..cc43a6508 100644 Binary files a/svg2png/i2c.png and b/svg2png/i2c.png differ diff --git a/svg2png/language-cpp.png b/svg2png/language-cpp.png index da51d096b..a2009a5b1 100644 Binary files a/svg2png/language-cpp.png and b/svg2png/language-cpp.png differ diff --git a/svg2png/led-on.png b/svg2png/led-on.png index c2bc3c3a4..2fb79e6df 100644 Binary files a/svg2png/led-on.png and b/svg2png/led-on.png differ diff --git a/svg2png/lightbulb.png b/svg2png/lightbulb.png index eb749e4e8..af4e6843f 100644 Binary files a/svg2png/lightbulb.png and b/svg2png/lightbulb.png differ diff --git a/svg2png/logo-core.png b/svg2png/logo-core.png index e4c7b4f53..05b4533e0 100644 Binary files a/svg2png/logo-core.png and b/svg2png/logo-core.png differ diff --git a/svg2png/logo-docs.png b/svg2png/logo-docs.png index 8cd86e2e0..975eff77f 100644 Binary files a/svg2png/logo-docs.png and b/svg2png/logo-docs.png differ diff --git a/svg2png/logo-flasher.png b/svg2png/logo-flasher.png index 7ec23f04d..8a1fff307 100644 Binary files a/svg2png/logo-flasher.png and b/svg2png/logo-flasher.png differ diff --git a/svg2png/logo-release.png b/svg2png/logo-release.png index 8d3e8a8b2..addde2110 100644 Binary files a/svg2png/logo-release.png and b/svg2png/logo-release.png differ diff --git a/svg2png/logo-text.png b/svg2png/logo-text.png index 91f65b1a8..51583742a 100644 Binary files a/svg2png/logo-text.png and b/svg2png/logo-text.png differ diff --git a/svg2png/logo.png b/svg2png/logo.png index 42432b0ab..aabc8b148 100644 Binary files a/svg2png/logo.png and b/svg2png/logo.png differ diff --git a/svg2png/magnet.png b/svg2png/magnet.png index 7487f8984..06303aa98 100644 Binary files a/svg2png/magnet.png and b/svg2png/magnet.png differ diff --git a/svg2png/mcp23017.png b/svg2png/mcp23017.png index 110f96364..aa8cf38d5 100644 Binary files a/svg2png/mcp23017.png and b/svg2png/mcp23017.png differ diff --git a/svg2png/mcp230xx.png b/svg2png/mcp230xx.png index ac0119021..c923eb591 100644 Binary files a/svg2png/mcp230xx.png and b/svg2png/mcp230xx.png differ diff --git a/svg2png/my9231.png b/svg2png/my9231.png index 26123d51a..cdf85b3c3 100644 Binary files a/svg2png/my9231.png and b/svg2png/my9231.png differ diff --git a/svg2png/network-wifi.png b/svg2png/network-wifi.png index 5c0655e70..a46fedee0 100644 Binary files a/svg2png/network-wifi.png and b/svg2png/network-wifi.png differ diff --git a/svg2png/new-box.png b/svg2png/new-box.png index e21e1a73f..7356da19b 100644 Binary files a/svg2png/new-box.png and b/svg2png/new-box.png differ diff --git a/svg2png/omega.png b/svg2png/omega.png index 32ede221d..30d9bd2b4 100644 Binary files a/svg2png/omega.png and b/svg2png/omega.png differ diff --git a/svg2png/percent.png b/svg2png/percent.png index a7533e8a6..943a5ee48 100644 Binary files a/svg2png/percent.png and b/svg2png/percent.png differ diff --git a/svg2png/pin.png b/svg2png/pin.png index f6e223bca..561ef3be4 100644 Binary files a/svg2png/pin.png and b/svg2png/pin.png differ diff --git a/svg2png/pmsx003.png b/svg2png/pmsx003.png index 3c19f56aa..6cec65f88 100644 Binary files a/svg2png/pmsx003.png and b/svg2png/pmsx003.png differ diff --git a/svg2png/power.png b/svg2png/power.png index 2b569ae59..80f84df48 100644 Binary files a/svg2png/power.png and b/svg2png/power.png differ diff --git a/svg2png/power_settings.png b/svg2png/power_settings.png index e7a099aee..e266aab76 100644 Binary files a/svg2png/power_settings.png and b/svg2png/power_settings.png differ diff --git a/svg2png/prometheus.png b/svg2png/prometheus.png index 82cf5b30b..58f0add6f 100644 Binary files a/svg2png/prometheus.png and b/svg2png/prometheus.png differ diff --git a/svg2png/pulse.png b/svg2png/pulse.png index acadbe300..ed92ae3d6 100644 Binary files a/svg2png/pulse.png and b/svg2png/pulse.png differ diff --git a/svg2png/puzzle.png b/svg2png/puzzle.png index 971cd8741..9e55f5aa7 100644 Binary files a/svg2png/puzzle.png and b/svg2png/puzzle.png differ diff --git a/svg2png/pzem004t.png b/svg2png/pzem004t.png index 38a69bcea..f47f69bf6 100644 Binary files a/svg2png/pzem004t.png and b/svg2png/pzem004t.png differ diff --git a/svg2png/pzemac.png b/svg2png/pzemac.png index eb749d5b7..f4760f3eb 100644 Binary files a/svg2png/pzemac.png and b/svg2png/pzemac.png differ diff --git a/svg2png/pzemdc.png b/svg2png/pzemdc.png index b1c92ef94..4ef039ebe 100644 Binary files a/svg2png/pzemdc.png and b/svg2png/pzemdc.png differ diff --git a/svg2png/question_answer.png b/svg2png/question_answer.png index 6f0d99d41..128eeb4a9 100644 Binary files a/svg2png/question_answer.png and b/svg2png/question_answer.png differ diff --git a/svg2png/remote.png b/svg2png/remote.png index 1eb3a4fc5..04fc39b09 100644 Binary files a/svg2png/remote.png and b/svg2png/remote.png differ diff --git a/svg2png/restart.png b/svg2png/restart.png index e89013fee..cb78fb1b8 100644 Binary files a/svg2png/restart.png and b/svg2png/restart.png differ diff --git a/svg2png/server-network.png b/svg2png/server-network.png index 1e214a19f..2f4df1584 100644 Binary files a/svg2png/server-network.png and b/svg2png/server-network.png differ diff --git a/svg2png/servo.png b/svg2png/servo.png index 0d536f7e6..661cb9c53 100644 Binary files a/svg2png/servo.png and b/svg2png/servo.png differ diff --git a/svg2png/shield-discord.png b/svg2png/shield-discord.png index a5c548a82..aad46bbb4 100644 Binary files a/svg2png/shield-discord.png and b/svg2png/shield-discord.png differ diff --git a/svg2png/shield-donate.png b/svg2png/shield-donate.png index ca74fd96b..ccdf12d70 100644 Binary files a/svg2png/shield-donate.png and b/svg2png/shield-donate.png differ diff --git a/svg2png/shield-github.png b/svg2png/shield-github.png index bb7d63875..b69f1b435 100644 Binary files a/svg2png/shield-github.png and b/svg2png/shield-github.png differ diff --git a/svg2png/shield-twitter.png b/svg2png/shield-twitter.png index 418bfe26a..d79fab688 100644 Binary files a/svg2png/shield-twitter.png and b/svg2png/shield-twitter.png differ diff --git a/svg2png/sigma.png b/svg2png/sigma.png index 7506a36ac..d326d49c8 100644 Binary files a/svg2png/sigma.png and b/svg2png/sigma.png differ diff --git a/svg2png/sm16716.png b/svg2png/sm16716.png index ca7c98a5a..bf60e4100 100644 Binary files a/svg2png/sm16716.png and b/svg2png/sm16716.png differ diff --git a/svg2png/sonoff.png b/svg2png/sonoff.png index 44ae41c7e..7410d4f2b 100644 Binary files a/svg2png/sonoff.png and b/svg2png/sonoff.png differ diff --git a/svg2png/spi.png b/svg2png/spi.png index 542a2b9c1..331a1cb2b 100644 Binary files a/svg2png/spi.png and b/svg2png/spi.png differ diff --git a/svg2png/stepper.png b/svg2png/stepper.png index e10dcbc4f..7d5b6bd91 100644 Binary files a/svg2png/stepper.png and b/svg2png/stepper.png differ diff --git a/svg2png/system-update.png b/svg2png/system-update.png index 737aec1f3..cf8c06774 100644 Binary files a/svg2png/system-update.png and b/svg2png/system-update.png differ diff --git a/svg2png/tasmota.png b/svg2png/tasmota.png index 505c09d58..758829187 100644 Binary files a/svg2png/tasmota.png and b/svg2png/tasmota.png differ diff --git a/svg2png/timer.png b/svg2png/timer.png index 930f86321..1dc4e0055 100644 Binary files a/svg2png/timer.png and b/svg2png/timer.png differ diff --git a/svg2png/touch.png b/svg2png/touch.png index 916c063ce..4be63519e 100644 Binary files a/svg2png/touch.png and b/svg2png/touch.png differ diff --git a/svg2png/uart.png b/svg2png/uart.png index 40bf4786e..54901db3d 100644 Binary files a/svg2png/uart.png and b/svg2png/uart.png differ diff --git a/svg2png/upload.png b/svg2png/upload.png index b69a00815..b8708f00f 100644 Binary files a/svg2png/upload.png and b/svg2png/upload.png differ diff --git a/svg2png/visual-studio-code.png b/svg2png/visual-studio-code.png index 395cd150b..93c4f32e4 100644 Binary files a/svg2png/visual-studio-code.png and b/svg2png/visual-studio-code.png differ diff --git a/svg2png/vl53l0x.png b/svg2png/vl53l0x.png index 19a969703..5ecd24c38 100644 Binary files a/svg2png/vl53l0x.png and b/svg2png/vl53l0x.png differ diff --git a/svg2png/weather-sunny.png b/svg2png/weather-sunny.png index 52495cfaf..0b41ed7d2 100644 Binary files a/svg2png/weather-sunny.png and b/svg2png/weather-sunny.png differ diff --git a/svg2png/wifi-strength-alert-outline.png b/svg2png/wifi-strength-alert-outline.png index 5ca74d3f7..1c056b572 100644 Binary files a/svg2png/wifi-strength-alert-outline.png and b/svg2png/wifi-strength-alert-outline.png differ diff --git a/svg2png/window-open.png b/svg2png/window-open.png index 1ee971630..36b975d5e 100644 Binary files a/svg2png/window-open.png and b/svg2png/window-open.png differ