esphome-docs/components/sensor/mhz19.rst

141 lines
4.5 KiB
ReStructuredText

MH-Z19 CO_2 and Temperature Sensor
==================================
.. seo::
:description: Instructions for setting up MH-Z19 CO2 and temperature sensors
:image: mhz19.jpg
:keywords: mh-z19
The ``mhz19`` sensor platform allows you to use MH-Z19 CO_2 and temperature sensors
(`Revspace`_) with ESPHome.
The CO_2 measurement also works with the MH-Z16 and MH-Z14 sensors.
.. figure:: images/mhz19-full.jpg
:align: center
:width: 50.0%
MH-Z19 CO_2 and Temperature Sensor.
.. _Revspace: https://revspace.nl/MHZ19
As the communication with the MH-Z19 is done using UART, you need
to have an :ref:`UART bus <uart>` in your configuration with the ``rx_pin`` connected to the TX pin of the
MH-Z19 and the ``tx_pin`` connected to the RX Pin of the MH-Z19 (it's switched because the
TX/RX labels are from the perspective of the MH-Z19). Additionally, you need to set the baud rate to 9600.
.. code-block:: yaml
# Example configuration entry
sensor:
- platform: mhz19
co2:
name: MH-Z19 CO2 Value
temperature:
name: MH-Z19 Temperature
Configuration variables:
------------------------
- **co2** (**Required**): The CO_2 data from the sensor in parts per million (ppm).
All options from :ref:`Sensor <config-sensor>`.
- **temperature** (**Required**): The information for the temperature sensor. Please note that this is
not officially documented in the datasheet and seems to be quite inaccurate.
All options from :ref:`Sensor <config-sensor>`.
- **update_interval** (*Optional*, :ref:`config-time`): The interval to check the
sensor. Defaults to ``60s``.
- **uart_id** (*Optional*, :ref:`config-id`): Manually specify the ID of the :ref:`UART Component <uart>` if you want
to use multiple UART buses.
- **id** (*Optional*, :ref:`config-id`): Manually specify the ID used for actions.
- **automatic_baseline_calibration** (*Optional*, boolean): MH-Z19 has automatic calibration procedure.
The automatic calibration cycle is every 24 hours after powered on.
Set this value to ``false`` to disable ABC on boot (it's better if you use sensor indoor).
Set this value to ``true`` to enable ABC on boot.
Doesn't send calibration command if not set (default sensor logic will be used).
- **warmup_time** (*Optional*, Time): The sensor has a warmup time and before that, it returns bougus readings (eg: 500ppm, 505ppm...). This setting discards readings until the warmup time happened (``NAN`` is returned). The datasheet says preheating takes 1min, but empirical tests have shown it often takes more, so the 75s default should be enough to accomodate for that.
.. figure:: images/mhz19-pins.jpg
:align: center
:width: 80.0%
Pins on the MH-Z19. Only the ones marked with a red circle need to be connected.
.. _mhz19-calibrate_zero_action:
``mhz19.calibrate_zero`` Action
-------------------------------
This :ref:`action <config-action>` executes zero point calibration command on the sensor with the given ID.
If you want to execute zero point calibration, the MH-Z19 sensor must work in stable gas environment (400ppm)
for over 20 minutes and you execute this function.
.. code-block:: yaml
on_...:
then:
- mhz19.calibrate_zero: my_mhz19_id
You can provide an :ref:`action <api-device-actions>` to perform from Home Assistant
.. code-block:: yaml
api:
actions:
- action: mhz19_calibrate_zero
then:
- mhz19.calibrate_zero: my_mhz19_id
.. _mhz19-abc_enable_action:
``mhz19.abc_enable`` Action
---------------------------
This :ref:`action <config-action>` enables automatic baseline calibration on the sensor with the given ID.
.. code-block:: yaml
on_...:
then:
- mhz19.abc_enable: my_mhz19_id
.. _mhz19-abc_disable_action:
``mhz19.abc_disable`` Action
----------------------------
This :ref:`action <config-action>` disables automatic baseline calibration on the sensor with the given ID.
.. code-block:: yaml
on_...:
then:
- mhz19.abc_disable: my_mhz19_id
You can provide switch and control ABC from Home Assistant
.. code-block:: yaml
switch:
- platform: template
name: "MH-Z19 ABC"
optimistic: true
on_turn_on:
mhz19.abc_enable: my_mhz19_id
on_turn_off:
mhz19.abc_disable: my_mhz19_id
See Also
--------
- :ref:`sensor-filters`
- `MH-Z19 library <https://github.com/nara256/mhz19_uart>`__ by `@nara356 <https://github.com/nara256>`__
- :apiref:`mhz19/mhz19.h`
- :ghedit:`Edit`