diff --git a/_templates/contact.html b/_templates/contact.html
index d65d9f3f5..88e692e55 100644
--- a/_templates/contact.html
+++ b/_templates/contact.html
@@ -3,8 +3,5 @@
Join the community
Follow us on Twitter
Source Code
+ This site is powered by Netlify
-
-
-
-
diff --git a/changelog/2021.12.0.rst b/changelog/2021.12.0.rst
index 4c97de257..3a3a03f8b 100644
--- a/changelog/2021.12.0.rst
+++ b/changelog/2021.12.0.rst
@@ -89,6 +89,20 @@ Release 2021.12.1 - December 15
- Set text sensor state property to filter output :esphomepr:`2893` by :ghuser:`oxan`
- Allow button POST on press from web server :esphomepr:`2913` by :ghuser:`wilberforce`
+Release 2021.12.2 - December 21
+-------------------------------
+
+- Don't disable idle task WDT when it's not enabled :esphomepr:`2856` by :ghuser:`oxan`
+- Fix MQTT button press action :esphomepr:`2917` by :ghuser:`oxan`
+
+Release 2021.12.3 - December 30
+-------------------------------
+
+- Require arduino in webserver for better validation :esphomepr:`2941` by :ghuser:`jesserockz`
+- Only allow internal pins for dht sensor :esphomepr:`2940` by :ghuser:`jesserockz`
+- Workaround installing as editable package not working :esphomepr:`2936` by :ghuser:`jesserockz`
+- Remove -e for hassio images :esphomepr:`2964` by :ghuser:`jesserockz`
+
Full list of changes
--------------------
diff --git a/components/display/index.rst b/components/display/index.rst
index 4c836c9ca..60431b81b 100644
--- a/components/display/index.rst
+++ b/components/display/index.rst
@@ -452,7 +452,7 @@ And then later in code:
- id: page1
lambda: |-
// Draw the graph at position [x=10,y=20]
- it.graph(10, 20, id(simple_temperature_graph));
+ it.graph(10, 20, id(single_temperature_graph));
- id: page2
lambda: |-
// Draw the graph at position [x=10,y=20]
@@ -600,10 +600,10 @@ Configuration variables:
- ``BINARY``: Two colors, suitable for 1 color displays or 2 color image in color displays. Uses 1 bit
per pixel, 8 pixels per byte.
- - ``GREYSCALE``: Full scale grey. Uses 8 bits per pixel, 1 pixel per byte.
+ - ``GRAYSCALE``: Full scale grey. Uses 8 bits per pixel, 1 pixel per byte.
- ``RGB24``: Full RGB color stored. Uses 3 bytes per pixel.
-- **dither** (*Optional*): Specifies which dither method used to process each frame, only used in GREYSCALE and BINARY type image.
+- **dither** (*Optional*): Specifies which dither method used to process each frame, only used in GRAYSCALE and BINARY type image.
Defaults to ``NONE``. You can read more about it `here `__
and `here `__.
diff --git a/components/esp32.rst b/components/esp32.rst
index 6479c4e25..755e907cb 100644
--- a/components/esp32.rst
+++ b/components/esp32.rst
@@ -18,13 +18,14 @@ Configuration variables:
- **board** (**Required**, string): The PlatformIO board ID that should
be used. Choose the appropriate board from
- `this list `__.
- *This only affects pin aliases, flash size and some internal settings*, if unsure choose a generic board.
+ `this list `__ (the icon next to the name
+ can be used to copy the board ID). *This only affects pin aliases, flash size and some internal settings*, if unsure
+ choose a generic board from Espressif such as ``esp32dev``.
- **framework** (*Optional*): Options for the underlying framework used by ESPHome.
See :ref:`esp32-arduino_framework` and :ref:`esp32-espidf_framework`.
-
-- **variant** (*Optional*, boolean): Defaults to the variant detected from the board. If the board is not known this option becomes mandatory.
- One of ``esp32``, ``esp32s2``, ``esp32s3``, ``esp32c3`` and ``esp32h2``.
+- **variant** (*Optional*, boolean): The variant of the ESP32 that is used on this board. One of ``esp32``,
+ ``esp32s2``, ``esp32s3``, ``esp32c3`` and ``esp32h2``. Defaults to the variant that is detected from the board, if
+ a board that's unknown to ESPHome is used, this option is mandatory.
.. _esp32-arduino_framework:
diff --git a/components/esp32_camera.rst b/components/esp32_camera.rst
index 36b7cb291..6746014db 100644
--- a/components/esp32_camera.rst
+++ b/components/esp32_camera.rst
@@ -160,6 +160,28 @@ Configuration for M5Stack Camera
name: My Camera
# ...
+Configuration for M5Stack Timer Camera X/F
+------------------------------------------
+
+.. code-block:: yaml
+
+ # Example configuration entry
+ esp32_camera:
+ external_clock:
+ pin: GPIO27
+ frequency: 20MHz
+ i2c_pins:
+ sda: GPIO25
+ scl: GPIO23
+ data_pins: [GPIO32, GPIO35, GPIO34, GPIO5, GPIO39, GPIO18, GPIO36, GPIO19]
+ vsync_pin: GPIO22
+ href_pin: GPIO26
+ pixel_clock_pin: GPIO21
+ reset_pin: GPIO15
+
+ # Image settings
+ name: My Camera
+ # ...
Configuration for Wrover Kit Boards
-----------------------------------
diff --git a/components/esp8266.rst b/components/esp8266.rst
index 2e0f7f936..c4086337b 100644
--- a/components/esp8266.rst
+++ b/components/esp8266.rst
@@ -20,8 +20,9 @@ Configuration variables:
- **board** (**Required**, string): The PlatformIO board ID that should
be used. Choose the appropriate board from
- `this list `__.
- *This only affects pin aliases, flash size and some internal settings*, if unsure choose a generic board.
+ `this list `__ (the icon next to the
+ name can be used to copy the board ID). *This only affects pin aliases, flash size and some internal settings*, if unsure
+ choose a generic board from Espressif such as ``esp01_1m``.
- **framework** (*Optional*): Options for the underlying framework used by ESPHome.
- **version** (*Optional*, string): The base framework version number to use, from
diff --git a/components/esphome.rst b/components/esphome.rst
index ff32da635..6e4f622e2 100644
--- a/components/esphome.rst
+++ b/components/esphome.rst
@@ -7,8 +7,7 @@ ESPHome Core Configuration
Here you specify some core information that ESPHome needs to create
firmwares. Most importantly, this is the section of the configuration
-where you specify the **name** of the node, the **platform** and
-**board** you’re using.
+where you specify the **name** of the node.
.. code-block:: yaml
@@ -39,34 +38,29 @@ Advanced options:
platformio.ini file. See :ref:`esphome-platformio_options`.
- **includes** (*Optional*, list of files): A list of C/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. See :ref:`esphome-includes` for more info.
+ is in. See :ref:`esphome-includes`.
- **libraries** (*Optional*, list of libraries): A list of libraries to include in the project. See
- :ref:`esphome-libraries` for more information.
+ :ref:`esphome-libraries`.
- **comment** (*Optional*, string): Additional text information about this node. Only for display in UI.
- **name_add_mac_suffix** (*Optional*, boolean): Appends the last 3 bytes of the mac address of the device to
the name in the form ``-aabbcc``. Defaults to ``false``.
See :ref:`esphome-mac_suffix`.
-
- **project** (*Optional*): ESPHome Creator's Project information. See :ref:`esphome-creators_project`.
- **name** (**Required**, string): Name of the project
- **version** (**Required**, string): Version of the project
-Platform options that have been moved (now in platform-specific sections :doc:`esp32 ` and :doc:`esp8266 `):
+Old-style platform options, which have been moved to the platform-specific :doc:`esp32 ` and
+:doc:`esp8266 ` sections but are still accepted here for compatibility reasons (usage not
+recommended for new projects):
-- **platform** (**Required**, string): The type of platform. One of ``esp8266`` or ``esp32``.
-- **board** (**Required**, string): The board that should be used. See
+- **platform** (**Required**, string): The platform used, either ``esp8266`` or ``esp32``.
+- **board** (**Required**, string): The board used, see
:doc:`esp32 ` and :doc:`esp8266 ` for more information.
-- **arduino_version** (*Optional*): The version of the Arduino framework to compile the project against.
+- **arduino_version** (*Optional*, string): The version of the Arduino framework to compile the project against.
- **esp8266_restore_from_flash** (*Optional*, boolean): For ESP8266s, whether to store some persistent preferences in flash
memory.
-Choose the appropriate board from
- `this list `__ for the ESP8266, and
- `this list `__ for the ESP32 (the icon
- next to the name can be used to copy the board ID). *This only affects pin aliases and some internal settings*,
- if unsure choose a generic board from Espressif.
-
Automations:
- **on_boot** (*Optional*, :ref:`Automation `): An automation to perform
@@ -154,7 +148,7 @@ This automation will be triggered on every ``loop()`` iteration (usually around
PlatformIO supports a number of options in its ``platformio.ini`` file. With the ``platformio_options``
parameter you can tell ESPHome what options to pass into the ``env`` section of the PlatformIO file
-(Note you can also do this by editing the ``platformio.ini`` file manually).
+(note you can also do this by editing the ``platformio.ini`` file manually).
You can view a full list of PlatformIO options here: https://docs.platformio.org/en/latest/projectconf/section_env.html
diff --git a/components/fan/hbridge.rst b/components/fan/hbridge.rst
index cf04d1f7c..2aacdb4d5 100644
--- a/components/fan/hbridge.rst
+++ b/components/fan/hbridge.rst
@@ -23,6 +23,14 @@ The `'hbridge`' fan platform allows you to use a compatible `h-bridge` (L298N, D
.. code-block:: yaml
# Example configuration entry
+ output:
+ - platform: ...
+ id: motor_forward_pin
+ pin: GPIO5
+ - platform: ...
+ id: motor_reverse_pin
+ pin: GPIO4
+
fan:
- platform: hbridge
id: my_fan
@@ -43,12 +51,10 @@ Configuration variables:
:ref:`float output