From 1200fd1a73d6ad1ea1ed5c62e11d154cb3c344e4 Mon Sep 17 00:00:00 2001 From: YorkshireIoT <55233103+YorkshireIoT@users.noreply.github.com> Date: Mon, 7 Oct 2024 03:34:49 +0100 Subject: [PATCH] Add docs for Grove Multichannel Gas Sensor V2 (#2598) Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com> --- components/sensor/grove_gas_mc_v2.rst | 85 ++++++++++++++++++++++++++ images/grove-gas-mc-v2.png | Bin 0 -> 19247 bytes index.rst | 1 + 3 files changed, 86 insertions(+) create mode 100644 components/sensor/grove_gas_mc_v2.rst create mode 100644 images/grove-gas-mc-v2.png diff --git a/components/sensor/grove_gas_mc_v2.rst b/components/sensor/grove_gas_mc_v2.rst new file mode 100644 index 0000000000..1230af43be --- /dev/null +++ b/components/sensor/grove_gas_mc_v2.rst @@ -0,0 +1,85 @@ +Grove Multichannel Gas Sensor V2 +================================================ + +.. seo:: + :description: Instructions for setting up Grove Multichannel Gas Sensor V2 that + can measure Nitrogen Dioxide, Carbon Monoxide, Ethanol and Volatile Organic + Compounds. + :image: grove-gas-mc-v2.png + :keywords: Grove, gm102b, gm302b, gm502b, gm702b + +The ``grove_gas_mc_v2`` sensor platform allows you to use your `Grove Multichannel Gas +Sensor V2 `__ +with ESPHome. It exposes 4 different gas sensors for qualitatively measuring +Nitrogen Dioxide (NO2), Carbon Monoxide (CO), Ethanol (C2H5OH), and Volatile Organic +Compounds (VOCs). + +.. note:: + + The Grove Multichannel Gas Sensor V2 is a qualitative, not quantitative, sensor. + This means values reported back are raw ADC values. Values are **not** in a common unit + of measurement, such as PPM (parts per million). If you have known baseline readings + for any of the gases, :ref:`sensor-filters` could be used to calibrate the raw readings. + +.. figure:: /images/grove-gas-mc-v2.png + :align: center + :width: 50.0% + + Grove Multichannel Gas Sensor V2 + +The communication with this sensor is done via :ref:`I²C Bus `, so you need to have +an ``i2c:`` section in your config for this integration to work. + +.. code-block:: yaml + + sensor: + - platform: grove_gas_mc_v2 + no2: + name: "Nitrogen Dioxide" + ethanol: + name: "Ethanol" + carbon_monoxide: + name: "Carbon Monoxide" + tvoc: + name: "Volatile Organic Compounds" + +Configuration variables: +------------------------ + +- **no2** (**Required**): The Nitrogen Dioxide sensor data. + All options from :ref:`Sensor `. +- **ethanol** (**Required**): The Ethanol (C2H5OH) sensor data. + All options from :ref:`Sensor `. +- **carbon_monoxide** (**Required**): The Carbon Monoxide sensor data. + All options from :ref:`Sensor `. +- **tvoc** (**Required**): The Total Volatile Organic Compounds (TVOC) sensor data. + All options from :ref:`Sensor `. + +- **update_interval** (*Optional*, :ref:`config-time`): The interval to check the + sensor. Defaults to ``60s``. + +Advanced: + +- **address** (*Optional*, int): The :ref:`I²C ` address of the sensor. + Defaults to ``0x08`` + +.. _grove-gas-mc-v2-preheating: + +Preheating +-------------------- + +If the sensor is stored for a long period of time (without power) there is a recommended +minimum warm-up time required for the sensor before the readings settle down and become +more accurate. + +A recommended warm-up time of 24 hours is recommend if the sensor has been stored +less than a month, 48 hours for 1-6 months and at least 72 hours for anything longer +than 6 months. + +See Also +-------- + +- :ref:`sensor-filters` +- `Grove Multichannel V2 Library `__ +- :apiref:`grove_gas_mc_v2/grove_gas_mc_v2.h` +- :ghedit:`Edit` diff --git a/images/grove-gas-mc-v2.png b/images/grove-gas-mc-v2.png new file mode 100644 index 0000000000000000000000000000000000000000..88a7f5a24bc592781747ab9e05cc8402e98d466a GIT binary patch literal 19247 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 W_fRp+eQL@80000