diff --git a/components/sensor/ens160.rst b/components/sensor/ens160.rst new file mode 100644 index 000000000..fd13e9c64 --- /dev/null +++ b/components/sensor/ens160.rst @@ -0,0 +1,110 @@ +ENS160 Sensor +============= + +.. seo:: + :description: Instructions for setting up ENS160 air-quality sensors + :keywords: ENS160 + +The ``ens160`` sensor platform allows you to use your ENS160 +(`datasheet `__) air-quality sensors with ESPHome. The :ref:`I²C ` component is +required to be set up in your configuration for this sensor to work. + +.. note:: + + On first power-up of the ENS160 sensor, there is a 1 hour initial startup delay before readings will be available. + For subsequent starts or reboots, there is a 3 minute warm up period before readings are available. Also, be aware that the + ENS160 can take up to 1 second for sucessive data measurements to be ready. + +.. figure:: images/ens160.jpg + :align: center + :width: 80.0% + + ENS160 Air Quality Sensor. + +.. code-block:: yaml + + # Example configuration entry + sensor: + - platform: ens160 + eco2: + name: "ENS160 eCO2" + tvoc: + name: "ENS160 Total Volatile Organic Compounds" + aqi: + name: "ENS160 Air Quality Index" + update_interval: 60s + address: 0x53 + compensation: + temperature: id_temperature_sensor + humidity: id_humidity_sensor + + +Configuration variables: +------------------------ + +- **eco2** (**Required**): Configuration for the eCO2 sensor. + + - **name** (**Required**, string): The name for the eCO2 sensor. + - **id** (*Optional*, :ref:`config-id`): Set the ID of this sensor for use in lambdas. + - All other options from :ref:`Sensor `. + +- **tvoc** (**Required**): Configuration for the TVOC sensor. + + - **name** (**Required**, string): The name for the TVOC sensor. + - **id** (*Optional*, :ref:`config-id`): Set the ID of this sensor for use in lambdas. + - All other options from :ref:`Sensor `. + +- **aqi** (*Optional*): Configuration for the air quality index sensor. + + - **name** (**Required**, string): The name for the AQI sensor. + - **id** (*Optional*, :ref:`config-id`): Set the ID of this sensor for use in lambdas. + - All other options from :ref:`Sensor `. + +- **update_interval** (*Optional*, :ref:`config-time`): The interval to check the + sensor. Defaults to ``60s``. The update interval should be greater than the measurement + frequency of the ENS160 which is up to 1 second. + +Advanced: + +- **address** (*Optional*, int): Manually specify the I²C address of + the sensor. Defaults to ``0x53``. Another address can be ``0x52``. + +- **compensation** (*Optional*): The block containing sensors used for compensation. + Temperature and humidity compensation improves the accuracy of sensor readings. Without compensation, the + ENS160 internally assumes 25°C temperature and 50% humidity, with readings noticeably diverting from real changes without compensation in temperature and humidity. + + - **temperature** (**Required**, :ref:`config-id`): The ID of an external temperature sensor. + - **humidity** (**Required**, :ref:`config-id`): The ID of an external humidity sensor. + +Example Text Sensor configuration +--------------------------------- + +The Air Quality Index(AQI) from this sensor is a number between 1 and 5. The ENS160 +(`datasheet `__) states that +"The AQI-UBA air quality index is derived from a guideline by the German Federal Environmental +Agency based on a TVOC sum signal". The following is an example configuration to convert the numeric ENS160 AQI to the rating text. + +.. code-block:: yaml + + text_sensor: + - platform: template + name: "ENS160 Air Quality Rating" + lambda: |- + switch ( (int) (id(ens160_air_quality_index).state) ) { + case 1: return {"Excellent"}; + case 2: return {"Good"}; + case 3: return {"Moderate"}; + case 4: return {"Poor"}; + case 5: return {"Unhealthy"}; + default: return {"Not Available"}; + } + + +See Also +-------- + +- :ref:`sensor-filters` +- :doc:`ccs811` +- :doc:`sgp30` +- :apiref:`ens160/ens160.h` +- :ghedit:`Edit` diff --git a/components/sensor/images/ens160.jpg b/components/sensor/images/ens160.jpg new file mode 100644 index 000000000..43d23f565 Binary files /dev/null and b/components/sensor/images/ens160.jpg differ diff --git a/images/ens160.jpg b/images/ens160.jpg new file mode 100644 index 000000000..e9931ccc7 Binary files /dev/null and b/images/ens160.jpg differ diff --git a/index.rst b/index.rst index 24e7af3f5..3045f33be 100644 --- a/index.rst +++ b/index.rst @@ -182,6 +182,7 @@ Air Quality AirThings BLE, components/sensor/airthings_ble, airthings_logo.png, Radon, CO2, Volatile organics CCS811, components/sensor/ccs811, ccs811.jpg, CO2 & Volatile organics EE895, components/sensor/ee895, EE895.png, CO2 & Temperature & Pressure + ENS160, components/sensor/ens160, ens160.jpg, CO2 & Air Quality GCJA5, components/sensor/gcja5, gcja5.svg, Particulate HM3301, components/sensor/hm3301, hm3301.jpg, Particulate MH-Z19, components/sensor/mhz19, mhz19.jpg, CO2 & Temperature @@ -309,6 +310,7 @@ Environmental DHT12, components/sensor/dht12, dht12.jpg, Temperature & Humidity DPS310, components/sensor/dps310, dps310.jpg, Temperature & Pressure EMC2101, components/emc2101, emc2101.jpg, Temperature + ENS160, components/sensor/ens160, ens160.jpg, CO2 & Air Quality ENS210, components/sensor/ens210, ens210.jpg, Temperature & Humidity HDC1080, components/sensor/hdc1080, hdc1080.jpg, Temperature & Humidity HTE501, components/sensor/hte501, HTE501.png, Temperature & Humidity