diff --git a/changelog/2022.6.0.rst b/changelog/2022.6.0.rst
index eb3fdb6a0..46c626dfe 100644
--- a/changelog/2022.6.0.rst
+++ b/changelog/2022.6.0.rst
@@ -88,6 +88,15 @@ Release 2022.6.1 - June 18
- Bugfix for ExternalRAMAllocator copy constructor :esphomepr:`3571` by :ghuser:`bnw`
- Media Player: added triggers :esphomepr:`3576` by :ghuser:`dudanov`
+Release 2022.6.2 - June 23
+--------------------------
+
+- Move gas mbus config option being a define to being a build flag :esphomepr:`3575` by :ghuser:`lkomurcu`
+- Fix: Make MQTT over TLS actually work :esphomepr:`3580` by :ghuser:`ShellAddicted`
+- Fix wrong type for voc_state*_ in sgp4x component :esphomepr:`3581` by :ghuser:`kahrendt`
+- Media Player: added play_media action :esphomepr:`3579` by :ghuser:`dudanov`
+- Fix 2 small issues in BLEClient :esphomepr:`3544` by :ghuser:`jhansche`
+
Breaking Changes
----------------
diff --git a/components/climate/index.rst b/components/climate/index.rst
index 3551fcf64..dd9c13aee 100644
--- a/components/climate/index.rst
+++ b/components/climate/index.rst
@@ -174,6 +174,8 @@ advanced stuff.
id(my_climate).fan_mode
// Swing mode, type: SwingMode (enum)
id(my_climate).swing_mode
+ // Current action (currentl on idle, cooling, heating, etc.), ClimateAction (enum)
+ id(my_climate).action
- ``.make_call``: Control the climate device
diff --git a/components/climate/midea.rst b/components/climate/midea.rst
index 9b4345046..4a26bcb14 100644
--- a/components/climate/midea.rst
+++ b/components/climate/midea.rst
@@ -20,7 +20,7 @@ The ``midea`` component creates a Midea air conditioner climate device.
- `Senville `_
- and maybe others
- Control is possible with a custom dongle. Example of hardware implementation is `IoT Uni Dongle `_.
+ Control is possible with a custom dongle. Example of hardware implementation is `IoT Uni Dongle `_ or `Midea SLWF-01pro `_ (`store `_, `Tindie `_).
.. code-block:: yaml
diff --git a/components/display/inkplate6.rst b/components/display/inkplate6.rst
index 708c85a45..dfe76f76d 100644
--- a/components/display/inkplate6.rst
+++ b/components/display/inkplate6.rst
@@ -280,11 +280,20 @@ Wi-Fi, API, and OTA configuration.
Inkplate 6 Plus Touchscreen
***************************
-The Inkplate 6 Plus has a built in touchscreen supported by ESPHome.
-Below is a config example:
+The Inkplate 6 Plus has a built in touchscreen supported by ESPHome. Note you need to enable pin 12 on the mcp23017 to enable the touchscreen
+Below is a config example with touchscreen power swtich:
.. code-block:: yaml
+ switch:
+ - platform: gpio
+ name: 'Inkplate Touchscreen Enabled'
+ restore_mode: ALWAYS_ON
+ pin:
+ mcp23xxx: mcp23017_hub
+ number: 12
+ inverted: true
+
touchscreen:
- platform: ektf2232
interrupt_pin: GPIO36
@@ -293,13 +302,37 @@ Below is a config example:
number: 10
on_touch:
- logger.log:
- format: "Touch: {x}, {y}"
- args:
- - touch.x
- - touch.y
+ format: "touch x=%d, y=%d"
+ args: ['touch.x', 'touch.y']
+Inkplate 6 Plus Backlight
+***************************
+The Inkplate 6 Plus has a built in backlight supported by ESPHome.
+Below is a config example:
+.. code-block:: yaml
+
+ power_supply:
+ - id: backlight_power
+ keep_on_time: 0.2s
+ enable_time: 0s
+ pin:
+ mcp23xxx: mcp23017_hub
+ number: 11
+
+ output:
+ - platform: mcp47a1
+ id: backlight_brightness_output
+ power_supply: backlight_power
+
+ light:
+ - platform: monochromatic
+ output: backlight_brightness_output
+ id: backlight
+ default_transition_length: 0.2s
+ name: '${friendly_name} Backlight'
+
See Also
--------
diff --git a/components/display/ssd1306.rst b/components/display/ssd1306.rst
index 74342a4c2..6733cceb6 100644
--- a/components/display/ssd1306.rst
+++ b/components/display/ssd1306.rst
@@ -24,7 +24,7 @@ If your SSD1306/SSD1305 or SH1106 is connected via the 4-Wire :ref:`SPI bus `, and connect D1 to the SDA pin. For power, connect
+Connect D2 to the SCL pin you chose for the :ref:`I²C Bus `, and connect D1 to the SDA pin. For power, connect
VCC to 3.3V and GND to GND. Optionally you can also connect the ``RESET`` pin to a pin on the ESP which may
improve reliability.
diff --git a/components/ethernet.rst b/components/ethernet.rst
index bb89b492c..0fa897e1d 100644
--- a/components/ethernet.rst
+++ b/components/ethernet.rst
@@ -71,18 +71,6 @@ Configuration variables:
probably to fail as the ethernet interface uses a high frequency clock signal. For more
information and wiring details refer to the link in the *See also* section.
-Configuration for wESP32 board
-------------------------------
-
-.. code-block:: yaml
-
- ethernet:
- type: LAN8720
- mdc_pin: GPIO16
- mdio_pin: GPIO17
- clk_mode: GPIO0_IN
- phy_addr: 0
-
Configuration for Olimex ESP32-POE
----------------------------------
@@ -108,6 +96,18 @@ Configuration for Olimex ESP32-EVB
clk_mode: GPIO0_IN
phy_addr: 0
+Configuration for Olimex ESP32-GATEWAY
+--------------------------------------
+
+.. code-block:: yaml
+
+ ethernet:
+ type: LAN8720
+ mdc_pin: GPIO23
+ mdio_pin: GPIO18
+ clk_mode: GPIO17_OUT
+ phy_addr: 0
+
Configuration for LILYGO TTGO T-Internet-POE ESP32-WROOM LAN8270A Chip
----------------------------------------------------------------------
@@ -120,20 +120,6 @@ Configuration for LILYGO TTGO T-Internet-POE ESP32-WROOM LAN8270A Chip
clk_mode: GPIO17_OUT
phy_addr: 0
-Configuration for OpenHacks LAN8720
------------------------------------
-
-.. code-block:: yaml
-
- ethernet:
- type: LAN8720
- mdc_pin: GPIO23
- mdio_pin: GPIO18
- phy_addr: 1
-
-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
-----------------------------------------
@@ -147,6 +133,40 @@ Configuration for Wireless Tag WT32-ETH01
phy_addr: 1
power_pin: GPIO16
+Configuration for OpenHacks LAN8720
+-----------------------------------
+
+.. code-block:: yaml
+
+ ethernet:
+ type: LAN8720
+ mdc_pin: GPIO23
+ mdio_pin: GPIO18
+ phy_addr: 1
+
+.. 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 wESP32 board (up to rev.6)
+-------------------------------------------------
+
+.. code-block:: yaml
+
+ ethernet:
+ type: LAN8720
+ mdc_pin: GPIO16
+ mdio_pin: GPIO17
+ clk_mode: GPIO0_IN
+ phy_addr: 0
+
+.. note::
+
+ Revision 7 and upwards of the wESP32 board does not have a LAN8720 chip. Until support for the
+ replacement RTL8201 is included in ESPHome, the wESP board rev.7 will not work with the above configuration.
+
See Also
--------
diff --git a/components/i2c.rst b/components/i2c.rst
index 0ae58c066..aea3ae4c8 100644
--- a/components/i2c.rst
+++ b/components/i2c.rst
@@ -41,7 +41,7 @@ Configuration variables:
.. note::
- If the device can support multiple I²C buses (ESP32 has 2) these buses need to be defined as below and sensors need to be setup specifying the correct bus:
+ If the device can support multiple I²C buses (ESP32 has 2, ESP8266 does not support more than one) these buses need to be defined as below and sensors need to be setup specifying the correct bus:
.. code-block:: yaml
diff --git a/components/light/shelly_dimmer.rst b/components/light/shelly_dimmer.rst
index 88f269eac..b38897680 100644
--- a/components/light/shelly_dimmer.rst
+++ b/components/light/shelly_dimmer.rst
@@ -8,6 +8,10 @@ Shelly Dimmer
The ``shelly_dimmer`` component adds support for the dimming and power-metering functionality that can be found the `Shelly Dimmer 2 `_. The interaction with mains is done via an STM32 microcontroller that is flashed with an `open source firmware `_.
A detailed analysis of the Shelly Dimmer 2 hardware is given `here `_.
+Warning!!! At the time of writing there seems to be no way to revert back to the "stock firmware", because there seems to be no way to revert to firmware of the STM32 co-processor.
+
+The
+
.. figure:: ../../images/shellydimmer2.jpg
:align: center
:width: 40.0%
diff --git a/components/media_player/i2s_audio.rst b/components/media_player/i2s_audio.rst
index b3543c8f1..981d150fb 100644
--- a/components/media_player/i2s_audio.rst
+++ b/components/media_player/i2s_audio.rst
@@ -25,7 +25,7 @@ Configuration variables:
- **dac_type** (**Required**, enum)
- - ``external``: Use an external DAC, for example the NS4168.
+ - ``external``: Use an external DAC, for example the NS4168, or UDA1334A.
- ``internal``: Use the internal DAC
- All other options from :ref:`Media Player `
@@ -33,11 +33,13 @@ Configuration variables:
External DAC
************
-- **i2s_lrclk_pin** (**Required**, :ref:`Pin Schema `): The GPIO pin to use for the I2S LRCLK signal.
-- **i2s_dout_pin** (**Required**, :ref:`Pin Schema `): The GPIO pin to use for the I2S DOUT signal.
-- **i2s_bclk_pin** (**Required**, :ref:`Pin Schema `): The GPIO pin to use for the I2S BCLK signal.
+- **i2s_lrclk_pin** (**Required**, :ref:`Pin Schema `): The GPIO pin to use for the I2S LRCLK (Word Select or Left/Right Clock) signal.
+- **i2s_dout_pin** (**Required**, :ref:`Pin Schema `): The GPIO pin to use for the I2S DOUT (Data Out) signal.
+- **i2s_bclk_pin** (**Required**, :ref:`Pin Schema `): The GPIO pin to use for the I2S BCLK (Bit Clock) signal.
- **mode** (*Optional*, string): The mode of the I2S bus. Can be ``mono`` or ``stereo``. Defaults to ``mono``.
+For best results, keep the wires as short as possible.
+
Internal DAC
************
diff --git a/components/modbus_controller.rst b/components/modbus_controller.rst
index 8b43fa882..fe7a2bb71 100644
--- a/components/modbus_controller.rst
+++ b/components/modbus_controller.rst
@@ -375,7 +375,7 @@ The response is mapped to the sensor based on register_count and offset in bytes
Note
----
-Write support is only implemented for switches.
+Write support is only implemented for switches and selects.
However the C++ code provides the required API to write to a modbus device.
These methods can be called from a lambda.
diff --git a/components/sensor/aht10.rst b/components/sensor/aht10.rst
index 39115afe0..4e05a9893 100644
--- a/components/sensor/aht10.rst
+++ b/components/sensor/aht10.rst
@@ -4,10 +4,12 @@ AHT10 Temperature+Humidity Sensor
.. seo::
:description: Instructions for setting up AHT10 temperature and humidity sensors
:image: aht10.jpg
- :keywords: aht10
+ :keywords: aht10 aht20 aht21 dht20
-The ``aht10`` Temperature+Humidity sensor allows you to use your aht10
-(`datasheet `__) i2c-based sensor with ESPHome.
+The ``aht10`` Temperature+Humidity sensor allows you to use your AHT10
+(`datasheet `__), AHT20 (`datasheet `__), AHT21 (`datasheet `__) :ref:`I²C `-based sensor with ESPHome.
+
+The DHT20 (`datasheet `__) sensor has the packaging of the :doc:`dht` series, but has the AHT20 inside and is speaking :ref:`I²C ` as well.
.. figure:: images/aht10-full.jpg
:align: center
diff --git a/components/sensor/dht.rst b/components/sensor/dht.rst
index b3d8dbc1d..ef4455b22 100644
--- a/components/sensor/dht.rst
+++ b/components/sensor/dht.rst
@@ -4,13 +4,13 @@ DHT Temperature+Humidity Sensor
.. seo::
:description: Instructions for setting up DHT11 and DHT22 temperature and humidity sensors.
:image: dht.jpg
- :keywords: DHT11, DHT22, AM2302, RHT03, SI7021
+ :keywords: DHT11, DHT21, DHT22, AMS2301, AM2302, RHT03, SI7021
The DHT Temperature+Humidity sensor allows you to use your DHT11
(`datasheet `__,
-`Adafruit `__), DHT22
+`Adafruit `__), DHT21/DHT22
(`datasheet `__,
-`Adafruit `__), AM2302
+`Adafruit `__), AMS2301/AM2302
(`datasheet `__,
`Adafruit `__), RHT03
(`datasheet `__,
diff --git a/components/sensor/honeywellabp.rst b/components/sensor/honeywellabp.rst
index ef89fc93b..9ec686b9b 100644
--- a/components/sensor/honeywellabp.rst
+++ b/components/sensor/honeywellabp.rst
@@ -42,7 +42,7 @@ the measurement range and ``unit_of_measurement`` to the appropriate unit for yo
- **pressure** (*Optional*): The information for the pressure sensor.
- **name** (**Required**, string): The name for the pressure sensor.
- - **min_pressure** (**Required**, int or float): Minumim pressure for the pressure sensor, default unit ``psi``.
+ - **min_pressure** (**Required**, int or float): Minimum pressure for the pressure sensor, default unit ``psi``.
- **max_pressure** (**Required**, int or float): Maximum pressure for the pressure sensor, default unit ``psi``.
- **id** (*Optional*, :ref:`config-id`): Set the ID of this sensor for use in lambdas.
- All other options from :ref:`Sensor `.
diff --git a/components/sensor/index.rst b/components/sensor/index.rst
index 7c42fe36e..ea1714255 100644
--- a/components/sensor/index.rst
+++ b/components/sensor/index.rst
@@ -50,7 +50,7 @@ Configuration variables:
sensor. See https://developers.home-assistant.io/docs/core/entity/sensor/#available-state-classes
for a list of available options. Set to ``""`` to remove the default state class of a sensor.
- **icon** (*Optional*, icon): Manually set the icon to use for the sensor in the frontend.
-- **accuracy_decimals** (*Optional*, int): Manually set the accuracy of decimals to use when reporting values.
+- **accuracy_decimals** (*Optional*, int): Manually set the number of decimals to use when reporting values. This does not impact the actual value reported to Home Assistant, it just sets the number of decimals to use when displaying it.
- **filters** (*Optional*): Specify filters to use for some basic
transforming of values. See :ref:`Sensor Filters ` for more information.
- **internal** (*Optional*, boolean): Mark this component as internal. Internal components will
@@ -558,10 +558,16 @@ So for example ``above: 5`` with no below would mean the range from 5 to positiv
- platform: dallas
# ...
on_value_range:
- above: 5
- below: 10
- then:
- - switch.turn_on: relay_1
+ - below: 5.0
+ then:
+ - switch.turn_on: relay_1
+ - above: 5.0
+ below: 10.0
+ then:
+ - switch.turn_on: relay_2
+ - above: 10.0
+ then:
+ - switch.turn_on: relay_3
Configuration variables:
diff --git a/components/sensor/mcp3008.rst b/components/sensor/mcp3008.rst
index fc2ba6897..76de1e4f7 100644
--- a/components/sensor/mcp3008.rst
+++ b/components/sensor/mcp3008.rst
@@ -40,6 +40,7 @@ If you want just the scaled value you can use the read_data function
# Example configuration entry
mcp3008:
cs_pin: D8
+ id: my_mcp
# Example config of sensors.
# This is a NTCB3950 10K thermocoupler attached to pin 0
@@ -49,6 +50,7 @@ If you want just the scaled value you can use the read_data function
- platform: mcp3008 # Attached to pin 0 of the MCP3008.
reference_voltage: 3.19
update_interval: 1s
+ mcp3008_id: my_mcp
id: freezer_temp_source
number: 0 # MCP3008 pin number
- platform: resistance
@@ -79,7 +81,7 @@ sensor platform to create individual sensors that will report the voltage to Hom
Configuration variables:
-- **id** (**Required**, :ref:`config-id`): The id of the parent MCP3008 component.
+- **mcp3008_id** (**Required**, :ref:`config-id`): The id of the parent MCP3008 component.
- **number** (**Required**, int): The pin number of the MCP3008
- **reference_voltage** (*Optional*, float): The reference voltage. Defaults to ``3.3V``.
- **update_interval** (*Optional*, :ref:`config-time`): The interval to check the sensor. Defaults to ``1s``.
diff --git a/components/sensor/modbus_controller.rst b/components/sensor/modbus_controller.rst
index 68d923363..e5bd03f9f 100644
--- a/components/sensor/modbus_controller.rst
+++ b/components/sensor/modbus_controller.rst
@@ -134,7 +134,8 @@ This example logs the value as parsed and the raw modbus bytes received for this
ESP_LOGI("","Sensor properties: adress = 0x%X, offset = 0x%X value type=%d",item->start_address,item->offset,item->sensor_value_type);
int i=0 ;
for (auto val : data) {
- ESP_LOGI("","data[%d]=0x%02X (%d)",i++ ,data[i],data[i]);
+ ESP_LOGI("","data[%d]=0x%02X (%d)",i,data[i],data[i]);
+ i++;
}
return x ;
diff --git a/components/sensor/nextion.rst b/components/sensor/nextion.rst
index f0b7a192e..b5d23af9b 100644
--- a/components/sensor/nextion.rst
+++ b/components/sensor/nextion.rst
@@ -30,13 +30,12 @@ See :doc:`/components/display/nextion` for setting up the display
- platform: nextion
name: "Current Humidity"
component_name: humidity # pageX.humidity for a global
- nextion_precision: 1
+ precision: 1
update_interval: 4s
- platform: nextion
nextion_id: nextion1
name: "Current Temperature"
variable_name: temperature
- hass_component_name: sensor.temperature
- platform: nextion
id: s01
component_id: 2
diff --git a/components/sensor/scd4x.rst b/components/sensor/scd4x.rst
index a267b5793..99955c423 100644
--- a/components/sensor/scd4x.rst
+++ b/components/sensor/scd4x.rst
@@ -102,8 +102,8 @@ As of April 2022 the average fresh air Co² concentration is 419 ppm.
on_...:
then:
- scd4x.perform_forced_calibration:
- value: 419 # outside average April 2022
- id: my_scd41
+ value: 419 # outside average April 2022
+ id: my_scd41
value can be a template
@@ -112,8 +112,8 @@ value can be a template
on_...:
then:
- scd4x._perform_forced_calibration_action:
- value: !lambda "{ return 419 };"
- id: my_scd41
+ value: !lambda "{ return 419 };"
+ id: my_scd41
.. _factory_reset_action:
diff --git a/components/sensor/xiaomi_ble.rst b/components/sensor/xiaomi_ble.rst
index 7668b42ac..4b53d16b5 100644
--- a/components/sensor/xiaomi_ble.rst
+++ b/components/sensor/xiaomi_ble.rst
@@ -181,8 +181,8 @@ Hygro thermometer, small square body, segment LCD, encrypted, broadcasts tempera
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
-3. Device flashed with `PVVX MiThermometer `__ custom firmware
+2. Device flashed with `PVVX MiThermometer `__ custom firmware
+3. Device flashed with `ATC MiThermometer `__ custom firmware
- "Mi Like" advertisement (dummy bindkey required)
- "Custom" advertisement (no bindkey required)
@@ -203,6 +203,24 @@ Configuration example for Xiaomi stock firmware or ATC MiThermometer firmware se
battery_level:
name: "LYWSD03MMC Battery Level"
+Configuration example for PVVX MiThermometer firmware set to "Custom" advertisement:
+
+.. code-block:: yaml
+
+ sensor:
+ - platform: pvvx_mithermometer
+ mac_address: "A4:C1:38:B1:CD:7F"
+ temperature:
+ name: "PVVX Temperature"
+ humidity:
+ name: "PVVX Humidity"
+ battery_level:
+ name: "PVVX Battery-Level"
+ battery_voltage:
+ name: "PVVX Battery-Voltage"
+ signal_strength:
+ name: "PVVX Signal"
+
Configuration example for ATC MiThermometer firmware set to "Custom" advertisement:
.. code-block:: yaml
@@ -221,23 +239,6 @@ Configuration example for ATC MiThermometer firmware set to "Custom" advertiseme
signal_strength:
name: "ATC Signal"
-Configuration example for PVVX MiThermometer firmware set to "Custom" advertisement:
-
-.. code-block:: yaml
-
- sensor:
- - platform: pvvx_mithermometer
- mac_address: "A4:C1:38:B1:CD:7F"
- temperature:
- name: "PVVX Temperature"
- humidity:
- name: "PVVX Humidity"
- battery_level:
- name: "PVVX Battery-Level"
- battery_voltage:
- name: "PVVX Battery-Voltage"
- signal_strength:
- name: "PVVX Signal"
MHO-C303
********
@@ -593,8 +594,8 @@ For this, you load the `application `__. 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 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. Follow the instructions on the site using Telink Flasher - best results with a Bluetooth-enabled Android phone. Note that with ``pvvx`` default settings advertisment is set to ``Custom`` with no encryption. No need for ``bind_key`` in this case, you can just add the sensors to your ESPHome config as described above.
2.
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.
@@ -614,18 +615,44 @@ Another option is to use a SSL packet sniffer. It can be setup on either an Andr
The ``bind_key`` is the 32 digits "value" item in the above output which needs to be inserted into the config file.
+Improving reception performance
+-------------------------------
+
+Use a board with an Ethernet connection to the network, to offload ESP32's radio module from WiFi traffic, this gains performance on Bluetooth side.
+To maximize the chances of catching advertisements of the sensors, you can set ``interval`` equal to ``window`` in :doc:`/components/esp32_ble_tracker` scan parameter settings:
+
+.. code-block:: yaml
+
+ esp32_ble_tracker:
+ scan_parameters:
+ interval: 5s # try with 300ms if you don't have LAN module
+ window: 5s # try with 300ms if you don't have LAN module
+ active: false
+
+Avoid placing the ESP node in racks, close to routers/switches or other network equipment as EMI interference will degrade Bluetooth signal reception. For best results put as far away as possible, at least 3 meters distance from any other such equipment.
+
+
+Security considerations
+-----------------------
+
+You should at least protect your sensors with a custom pairing PIN code.
+
+
See Also
--------
- :doc:`/components/esp32_ble_tracker`
- :doc:`/components/sensor/index`
- :apiref:`xiaomi_lywsd03mmc/xiaomi_ble.h`
+- :doc:`/components/ethernet`
- 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 ``__
+- Custom firmware (PVVX) for the Xiaomi Thermometer LYWSD03MMC ``__
+- TeLink flasher application (PVVX) ``__
+- Custom firmware (ATC) for the Xiaomi Thermometer LYWSD03MMC ``__
+- TeLink flasher application (ATC) ``__
- TeLink flasher application modified for CGDK2 ``__
+- Xiaomi LYWSD03MMC passive sensor readout ``__ by `@ahpohl `__
- Cloud Tokens Extractor: ``__
- :ghedit:`Edit`
diff --git a/components/switch/modbus_controller.rst b/components/switch/modbus_controller.rst
index 49ebf20da..8d0ead3e3 100644
--- a/components/switch/modbus_controller.rst
+++ b/components/switch/modbus_controller.rst
@@ -4,7 +4,7 @@ Modbus Controller Switch
.. seo::
:description: Instructions for setting up a modbus_controller device sensor.
-The ``modbus_controller`` sensor platform creates a sensor from a modbus_controller component
+The ``modbus_controller`` switch platform creates a switch from a modbus_controller component
and requires :doc:`/components/modbus_controller` to be configured.
diff --git a/components/web_server.rst b/components/web_server.rst
index 158ae1612..78c95f4c4 100644
--- a/components/web_server.rst
+++ b/components/web_server.rst
@@ -59,6 +59,7 @@ Configuration variables:
web interface. Defaults to ``false``.
- **ota** (*Optional*, boolean): Turn on or off the OTA feature inside webserver. Strongly not suggested without enabled authentication settings. Defaults to ``true``.
- **id** (*Optional*, :ref:`config-id`): Manually specify the ID used for code generation.
+- **local** (*Optional*, boolean): Include supporting javascript locally allowing it to work without internet access. Defaults to ``false``.
- **version** (*Optional*, string): ``1`` or ``2``. Version 1 displays as a table. Version 2 uses web components and has more functionality. Defaults to ``2``.
.. note::
diff --git a/guides/faq.rst b/guides/faq.rst
index f5e9d5cee..be015c94c 100644
--- a/guides/faq.rst
+++ b/guides/faq.rst
@@ -281,6 +281,22 @@ Some steps that can help with the issue:
although it may also increase power (and possibly battery) usage of other devices also using power
save mode.
+Component states not restored after reboot
+------------------------------------------
+
+If you notice that some components, like ``climate`` or some switches are randomly not restoring their
+state after a reboot, or you get periodic ``ESP_ERR_NVS_NOT_ENOUGH_SPACE`` errors in your debug log,
+it could be that the NVS portion of the flash memory is full due to repeatedly testing multiple
+configurations (usually large) in the same ESP32 board. Try wiping NVS with the following commands:
+
+.. code-block:: bash
+
+ dd if=/dev/zero of=nvs_zero bs=1 count=20480
+ esptool.py --chip esp32 --port /dev/ttyUSB0 write_flash 0x009000 nvs_zero
+
+Change ``/dev/ttyUSB0`` above to your serial port. If you have changed the partition layout, please adjust the
+above offsets and sizes accordingly.
+
Docker Reference
----------------
diff --git a/guides/supporters.rst b/guides/supporters.rst
index 687451b2c..fcecd1ab0 100644
--- a/guides/supporters.rst
+++ b/guides/supporters.rst
@@ -89,7 +89,6 @@ Contributors
- `balk77 (@balk77) `__
- `Paulus Schoutsen (@balloob) `__
- `Andrew Zaborowski (@balrog-kun) `__
-- `Rutger Nijhuis (@BananaPukeh) `__
- `BarryMar (@BarryMar) `__
- `bazuchan (@bazuchan) `__
- `Viktr (@BbIKTOP) `__
@@ -136,9 +135,11 @@ Contributors
- `Cellie (@CelliesProjects) `__
- `Kostas Chatzikokolakis (@chatziko) `__
- `chris-jennings (@chris-jennings) `__
+- `Chris (@chrismaki) `__
- `Christian Taedcke (@chrta) `__
- `Pavel Skuratovich (@Chupaka) `__
- `Chris Johnson (@ciband) `__
+- `Zimmermann Zsolt (@cinadr) `__
- `John (@CircuitSetup) `__
- `Colby Rome (@cisasteelersfan) `__
- `Chris Debenham (@cjd) `__
@@ -422,6 +423,7 @@ Contributors
- `Kris (@K-r-i-s-t-i-a-n) `__
- `Harald Nagel (@k7hpn) `__
- `kaegi (@kaegi) `__
+- `kahrendt (@kahrendt) `__
- `Karol Zlot (@karolzlot) `__
- `Krasimir Nedelchev (@kaykayehnn) `__
- `Krzysztof Białek (@kbialek) `__
@@ -463,6 +465,7 @@ Contributors
- `Lubos Horacek (@lhoracek) `__
- `Juraj Liso (@LiJu09) `__
- `lingex (@lingex) `__
+- `lkomurcu (@lkomurcu) `__
- `Lazar Obradovic (@lobradov) `__
- `Barry Loong (@loongyh) `__
- `LuBeDa (@lubeda) `__
@@ -501,6 +504,7 @@ Contributors
- `MartinWelsch (@MartinWelsch) `__
- `MasterTim17 (@MasterTim17) `__
- `Christopher Masto (@masto) `__
+- `Mateus Demboski (@mateusdemboski) `__
- `matikij (@matikij) `__
- `Michel Marti (@matoxp) `__
- `matt123p (@matt123p) `__
@@ -574,6 +578,7 @@ Contributors
- `NeoAcheron (@NeoAcheron) `__
- `nepozs (@nepozs) `__
- `Mike Meessen (@netmikey) `__
+- `Nick B. (@NickB1) `__
- `nickrout (@nickrout) `__
- `Nick Whyte (@nickw444) `__
- `nicuh (@nicuh) `__
@@ -719,7 +724,7 @@ Contributors
- `Emanuele Tessore (@setola) `__
- `Abdelkader Boudih (@seuros) `__
- `SharkSharp (@SharkSharp) `__
-- `shbatm (@shbatm) `__
+- `ShellAddicted (@ShellAddicted) `__
- `sherbang (@sherbang) `__
- `Shish (@shish) `__
- `SiliconAvatar (@SiliconAvatar) `__
@@ -732,13 +737,9 @@ Contributors
- `Sourabh Jaiswal (@sourabhjaiswal) `__
- `Philip Allgaier (@spacegaier) `__
- `spacemanspiff2007 (@spacemanspiff2007) `__
-- `spattinson (@spattinson) `__
- `Sean Brogan (@spbrogan) `__
- `Stephan Peijnik-Steinwender (@speijnik) `__
-- `spilin (@spilin) `__
-- `square99 (@square99) `__
- `Paul Krischer (@SqyD) `__
-- `sredfern (@sredfern) `__
- `Samuel Sieb (@ssieb) `__
- `St4n (@St4n) `__
- `stegm (@stegm) `__
@@ -748,7 +749,6 @@ Contributors
- `Stijn Tintel (@stintel) `__
- `stubs12 (@stubs12) `__
- `Jordan Vohwinkel (@sublime93) `__
-- `sveip (@sveip) `__
- `swifty99 (@swifty99) `__
- `Sympatron GmbH (@Sympatron) `__
- `synco (@synco) `__
@@ -791,7 +791,6 @@ Contributors
- `Tom Matheussen (@Tommatheussen) `__
- `tomle (@tomole444) `__
- `Tom Price (@tomtom5152) `__
-- `tony (@tony-fav) `__
- `David Kiliani (@torfbolt) `__
- `Felix Eckhofer (@tribut) `__
- `Trick van Staveren (@trickv) `__
@@ -810,6 +809,7 @@ Contributors
- `Thorsten von Eicken (@tve) `__
- `Tyler Menezes (@tylermenezes) `__
- `Unai (@unaiur) `__
+- `user897943 (@user897943) `__
- `UT2UH (@UT2UH) `__
- `Vc (@Valcob) `__
- `Nad (@valordk) `__
@@ -835,9 +835,11 @@ Contributors
- `Artur 'Wodor' Wielogorski (@wodor) `__
- `Rick van Hattem (@WoLpH) `__
- `workingmanrob (@workingmanrob) `__
+- `Sven Serlier (@wrt54g) `__
- `Wojtek Strzalka (@wstrzalka) `__
- `Wolfgang Tremmel (@wtremmel) `__
- `Wumpf (@Wumpf) `__
+- `wysiwyng (@wysiwyng) `__
- `Mike (@xsnoopy) `__
- `Yaroslav (@Yarikx) `__
- `Marcin Jaworski (@yawor) `__
@@ -853,4 +855,4 @@ Contributors
- `Michael Labuschke (@zigman79) `__
- `Christian Zufferey (@zuzu59) `__
-*This page was last updated June 18, 2022.*
+*This page was last updated June 23, 2022.*
diff --git a/index.rst b/index.rst
index e9307e98c..ce58d75b2 100644
--- a/index.rst
+++ b/index.rst
@@ -281,7 +281,7 @@ Environmental
.. imgtable::
- AHT10, components/sensor/aht10, aht10.jpg, Temperature & Humidity
+ AHT10 / AHT20 / AHT21 / DHT20, components/sensor/aht10, aht10.jpg, Temperature & Humidity
AirThings BLE, components/sensor/airthings_ble, airthings_logo.png, Temperature & Humidity & Pressure
AM2320, components/sensor/am2320, am2320.jpg, Temperature & Humidity
BME280, components/sensor/bme280, bme280.jpg, Temperature & Humidity & Pressure