mirror of
https://github.com/esphome/esphome-docs.git
synced 2024-11-18 11:15:36 +01:00
152 lines
4.6 KiB
ReStructuredText
152 lines
4.6 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
|
|
(`refspace`_) with ESPHome.
|
|
The CO_2 measurement also works with the MH-Z16 sensor.
|
|
|
|
.. figure:: images/mhz19-full.jpg
|
|
:align: center
|
|
:width: 50.0%
|
|
|
|
MH-Z19 CO_2 and Temperature Sensor.
|
|
|
|
.. _refspace: 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
|
|
uart:
|
|
rx_pin: GPIO3
|
|
tx_pin: GPIO1
|
|
baud_rate: 9600
|
|
|
|
sensor:
|
|
- platform: mhz19
|
|
co2:
|
|
name: "MH-Z19 CO2 Value"
|
|
temperature:
|
|
name: "MH-Z19 Temperature"
|
|
update_interval: 60s
|
|
automatic_baseline_calibration: false
|
|
|
|
Configuration variables:
|
|
------------------------
|
|
|
|
|
|
- **co2** (**Required**): The CO_2 data from the sensor in parts per million (ppm).
|
|
|
|
- **name** (**Required**, string): The name for the CO_2 sensor.
|
|
- **id** (*Optional*, :ref:`config-id`): Set the ID of this sensor for use in lambdas.
|
|
- All other 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.
|
|
|
|
- **name** (**Required**, string): The name for the temperature sensor.
|
|
- **id** (*Optional*, :ref:`config-id`): Set the ID of this sensor for use in lambdas.
|
|
- All other 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).
|
|
|
|
.. 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 :ref:`service <api-services>` to call it from Home Assistant
|
|
|
|
.. code-block:: yaml
|
|
|
|
api:
|
|
services:
|
|
- service: 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`
|