diff --git a/components/sensor/absolute_humidity.rst b/components/sensor/absolute_humidity.rst new file mode 100644 index 000000000..3ba963a81 --- /dev/null +++ b/components/sensor/absolute_humidity.rst @@ -0,0 +1,58 @@ +Absolute Humidity +================= + +.. seo:: + :description: Instructions for setting up absolute humidity calculation + :image: water-drop.svg + +The ``absolute_humidity`` platform allows you to calculate absolute humidity from air temperature and relative humidity. + +See the links at the bottom of the page for details on absolute humidity and the different saturated vapor pressure equations. + +.. code-block:: yaml + + # Example configuration entry + sensor: + - platform: absolute_humidity + name: Absolute Humidity + temperature: air_temperature + humidity: relative_humidity + + # Use any temperature and relative humidity source, e.g. a BME280: + - platform: ... + temperature: + name: Temperature + id: air_temperature + humidity: + name: Relative Humidity + id: relative_humidity + +Configuration variables: +------------------------ + +- **name** (**Required**, string): The name for the absolute humidity sensor. +- **temperature** (**Required**, :ref:`config-id`): The sensor that is used to measure the current temperature, in °C. +- **humidity** (**Required**, :ref:`config-id`): The sensor that is used to measure the current relative humidity, in %. +- **equation** (*Optional*): The saturated vapor pressure equation to use (see below). +- All other options from :ref:`Sensor `. + +Saturated vapor pressure equations +---------------------------------- + +There are several different equations for calculating saturated vapor pressure. +``Wobus`` is used by default, as it is notionally the most accurate, but any of the following can be used: + +- ``Buck``: `Arden Buck equation `__ +- ``Tetens``: `Tetens equation `__ +- ``Wobus``: `Wobus equation `__ + +See Also +-------- + +- :ref:`sensor-filters` +- :apiref:`absolute_humidity/absolute_humidity.h` +- `NOAA Discussion on Humidity `__ +- `Absolute humidity on Wikipedia `__ +- `How to calculate absolute humidity `__ +- `How to convert relative humidity to absolute humidity `__ +- :ghedit:`Edit` diff --git a/components/sensor/aht10.rst b/components/sensor/aht10.rst index 4e05a9893..e5a859e7a 100644 --- a/components/sensor/aht10.rst +++ b/components/sensor/aht10.rst @@ -58,6 +58,7 @@ See Also -------- - :ref:`sensor-filters` +- :doc:`absolute_humidity` - :apiref:`aht10/aht10.h` - `AHT10 Library `__ by `Thinary Electronic `__ - `Unofficial Translated AHT10 Datasheet (en) `__ diff --git a/components/sensor/am2320.rst b/components/sensor/am2320.rst index 574e880c5..9ed04dde9 100644 --- a/components/sensor/am2320.rst +++ b/components/sensor/am2320.rst @@ -57,6 +57,7 @@ See Also -------- - :ref:`sensor-filters` +- :doc:`absolute_humidity` - :doc:`dht` - :doc:`dht12` - :doc:`hdc1080` diff --git a/components/sensor/b_parasite.rst b/components/sensor/b_parasite.rst index e38ddd3e3..ce738a98a 100644 --- a/components/sensor/b_parasite.rst +++ b/components/sensor/b_parasite.rst @@ -66,4 +66,5 @@ See Also - `b-parasite on GitHub `__ - :doc:`/components/esp32_ble_tracker` +- :doc:`absolute_humidity` - :ghedit:`Edit` diff --git a/components/sensor/bme280.rst b/components/sensor/bme280.rst index e4ce7bdd0..107847075 100644 --- a/components/sensor/bme280.rst +++ b/components/sensor/bme280.rst @@ -89,6 +89,7 @@ See Also -------- - :ref:`sensor-filters` +- :doc:`absolute_humidity` - :doc:`bme680` - :doc:`bmp085` - :apiref:`bme280/bme280.h` diff --git a/components/sensor/bme680.rst b/components/sensor/bme680.rst index 7522a301e..e5c008042 100644 --- a/components/sensor/bme680.rst +++ b/components/sensor/bme680.rst @@ -107,6 +107,7 @@ See Also -------- - :ref:`sensor-filters` +- :doc:`absolute_humidity` - :doc:`bme280` - :doc:`bmp085` - :apiref:`bme680/bme680.h` diff --git a/components/sensor/bme680_bsec.rst b/components/sensor/bme680_bsec.rst index fa7c0f5d7..91e6fb208 100644 --- a/components/sensor/bme680_bsec.rst +++ b/components/sensor/bme680_bsec.rst @@ -308,6 +308,7 @@ See Also -------- - :ref:`sensor-filters` +- :doc:`absolute_humidity` - :doc:`bme680` - :apiref:`bme680_bsec/bme680_bsec.h` - `BME680 VOC classification `__ diff --git a/components/sensor/dht.rst b/components/sensor/dht.rst index 6c54c47d5..812f960b9 100644 --- a/components/sensor/dht.rst +++ b/components/sensor/dht.rst @@ -81,6 +81,7 @@ See Also -------- - :ref:`sensor-filters` +- :doc:`absolute_humidity` - :doc:`dht12` - :doc:`hdc1080` - :doc:`htu21d` diff --git a/components/sensor/dht12.rst b/components/sensor/dht12.rst index 2ebac081c..0588bbcf2 100644 --- a/components/sensor/dht12.rst +++ b/components/sensor/dht12.rst @@ -55,6 +55,7 @@ See Also -------- - :ref:`sensor-filters` +- :doc:`absolute_humidity` - :doc:`dht` - :doc:`hdc1080` - :doc:`htu21d` diff --git a/components/sensor/ens210.rst b/components/sensor/ens210.rst index 7adc85316..782af1510 100644 --- a/components/sensor/ens210.rst +++ b/components/sensor/ens210.rst @@ -52,6 +52,7 @@ See Also -------- - :ref:`sensor-filters` +- :doc:`absolute_humidity` - :apiref:`ENS210/ENS210.h` - `ENS210 Library `__ by `Maarten Pennings `__ - :ghedit:`Edit` diff --git a/components/sensor/hdc1080.rst b/components/sensor/hdc1080.rst index 63a1bab14..19bc5a7fd 100644 --- a/components/sensor/hdc1080.rst +++ b/components/sensor/hdc1080.rst @@ -80,6 +80,7 @@ See Also -------- - :ref:`sensor-filters` +- :doc:`absolute_humidity` - :doc:`dht` - :doc:`dht12` - :doc:`htu21d` diff --git a/components/sensor/hte501.rst b/components/sensor/hte501.rst index 6f9badbaa..4e052de0e 100644 --- a/components/sensor/hte501.rst +++ b/components/sensor/hte501.rst @@ -52,6 +52,7 @@ See Also -------- - :ref:`sensor-filters` +- :doc:`absolute_humidity` - :doc:`tee501` - :doc:`ee895` - :doc:`dht` diff --git a/components/sensor/htu21d.rst b/components/sensor/htu21d.rst index a429d01de..238f845ef 100644 --- a/components/sensor/htu21d.rst +++ b/components/sensor/htu21d.rst @@ -58,6 +58,7 @@ See Also -------- - :ref:`sensor-filters` +- :doc:`absolute_humidity` - :doc:`dht` - :doc:`dht12` - :doc:`hdc1080` diff --git a/components/sensor/inkbird_ibsth1_mini.rst b/components/sensor/inkbird_ibsth1_mini.rst index a7512f3d8..4b641aab5 100644 --- a/components/sensor/inkbird_ibsth1_mini.rst +++ b/components/sensor/inkbird_ibsth1_mini.rst @@ -115,6 +115,7 @@ See Also - :doc:`/components/esp32_ble_tracker` - :doc:`/components/sensor/index` +- :doc:`absolute_humidity` - :apiref:`inkbird_ibsth1_mini/inkbird_ibsth1_mini.h` - `OpenMQTTGateway `__ by `@1technophile `__ - :ghedit:`Edit` diff --git a/components/sensor/ruuvitag.rst b/components/sensor/ruuvitag.rst index 8c2a7be2e..92a3ae9d7 100644 --- a/components/sensor/ruuvitag.rst +++ b/components/sensor/ruuvitag.rst @@ -184,6 +184,7 @@ See Also - :doc:`/components/esp32_ble_tracker` - :doc:`/components/sensor/index` +- :doc:`absolute_humidity` - :apiref:`ruuvitag/ruuvitag.h` - `Ruuvi `__ - :ghedit:`Edit` diff --git a/components/sensor/scd30.rst b/components/sensor/scd30.rst index 73fd2a452..c33f622ad 100644 --- a/components/sensor/scd30.rst +++ b/components/sensor/scd30.rst @@ -108,6 +108,7 @@ See Also -------- - :ref:`sensor-filters` +- :doc:`absolute_humidity` - :doc:`dht` - :doc:`dht12` - :doc:`hdc1080` diff --git a/components/sensor/scd4x.rst b/components/sensor/scd4x.rst index 04796d3d3..ff37dc4d3 100644 --- a/components/sensor/scd4x.rst +++ b/components/sensor/scd4x.rst @@ -168,6 +168,7 @@ See Also -------- - :ref:`sensor-filters` +- :doc:`absolute_humidity` - :doc:`scd30` - :apiref:`scd4x/scd4x.h` - :ghedit:`Edit` diff --git a/components/sensor/sen5x.rst b/components/sensor/sen5x.rst index e0b5043d6..eaf96ea28 100644 --- a/components/sensor/sen5x.rst +++ b/components/sensor/sen5x.rst @@ -208,6 +208,7 @@ See Also -------- - :ref:`sensor-filters` +- :doc:`absolute_humidity` - :doc:`sds011` - :doc:`pmsx003` - :doc:`ccs811` diff --git a/components/sensor/sht3xd.rst b/components/sensor/sht3xd.rst index 0d340d3e0..4fe553834 100644 --- a/components/sensor/sht3xd.rst +++ b/components/sensor/sht3xd.rst @@ -53,6 +53,7 @@ See Also -------- - :ref:`sensor-filters` +- :doc:`absolute_humidity` - :doc:`dht` - :doc:`dht12` - :doc:`hdc1080` diff --git a/components/sensor/sht4x.rst b/components/sensor/sht4x.rst index 60205edd2..c671f8a01 100644 --- a/components/sensor/sht4x.rst +++ b/components/sensor/sht4x.rst @@ -67,5 +67,6 @@ See Also - :doc:`/components/sensor/sht3xd` - :doc:`/components/sensor/shtcx` - :ref:`sensor-filters` +- :doc:`absolute_humidity` - :apiref:`sht4x/sht4x.h` - :ghedit:`Edit` diff --git a/components/sensor/shtcx.rst b/components/sensor/shtcx.rst index 8cf0d267b..e69b2595e 100644 --- a/components/sensor/shtcx.rst +++ b/components/sensor/shtcx.rst @@ -56,6 +56,7 @@ See Also -------- - :ref:`sensor-filters` +- :doc:`absolute_humidity` - :doc:`dht` - :doc:`dht12` - :doc:`hdc1080` diff --git a/components/sensor/zyaura.rst b/components/sensor/zyaura.rst index 5c71c01aa..1f7f81619 100644 --- a/components/sensor/zyaura.rst +++ b/components/sensor/zyaura.rst @@ -76,6 +76,7 @@ See Also -------- - :ref:`sensor-filters` +- :doc:`absolute_humidity` - :doc:`mhz19` - `CO2mon-esp firmware `__ by `@anonym-tsk `__ - `Some information about hacking MT8060 `__ diff --git a/cookbook/bme280_environment.rst b/cookbook/bme280_environment.rst index d06805c74..68d93178c 100644 --- a/cookbook/bme280_environment.rst +++ b/cookbook/bme280_environment.rst @@ -42,18 +42,10 @@ After validating the sensor is working, we can proceed and add some formulas. update_interval: 15s icon: 'mdi:signal' unit_of_measurement: 'm' - - platform: template + - platform: absolute_humidity name: "Absolute Humidity" - lambda: |- - const float mw = 18.01534; // molar mass of water g/mol - const float r = 8.31447215; // Universal gas constant J/mol/K - return (6.112 * powf(2.718281828, (17.67 * id(bme280_temperature).state) / - (id(bme280_temperature).state + 243.5)) * id(bme280_humidity).state * mw) / - ((273.15 + id(bme280_temperature).state) * r); // in grams/m^3 - accuracy_decimals: 2 - update_interval: 15s - icon: 'mdi:water' - unit_of_measurement: 'g/m³' + temperature: bme280_temperature + humidity: bme280_humidity - platform: template name: "Dew Point" lambda: |- @@ -73,7 +65,7 @@ The variable ``STANDARD_SEA_LEVEL_PRESSURE`` (in hPa), should be filled in for y The formula derived from `here `__, converts the currently measured pressure to the altitudes in meters including temperature compensation. -The lambda in the second :doc:`/components/sensor/template` defines two physical constants and +The second block uses the :doc:`/components/sensor/absolute_humidity` component which converts the currently measured temperature and relative humidity to absolute humidity (grams/m^3). .. note:: @@ -120,13 +112,13 @@ Calculating the sea level pressure with a statically mounted sensor can be used Formula explanation ------------------- -- `Relative humidity calculations `__ - `Altitude calculation `__ - `Dew Point calculation `__ See Also -------- +- :doc:`/components/sensor/absolute_humidity` - :doc:`/components/sensor/template` - :doc:`/components/sensor/bme280` - :ghedit:`Edit` diff --git a/images/water-drop.svg b/images/water-drop.svg new file mode 100644 index 000000000..2cfce2362 --- /dev/null +++ b/images/water-drop.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/index.rst b/index.rst index cedf5abcd..51aa028c0 100644 --- a/index.rst +++ b/index.rst @@ -274,6 +274,7 @@ Environmental .. imgtable:: + Absolute Humidity, components/sensor/absolute_humidity, water-drop.svg 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