MH-Z19 CO2 Sensor

The MH-Z19 is a small non-dispersive infrared sensor that can measure CO2 level. High CO2 levels can lead to drowsiness, poor concentration, loss of attention or increased heart rate. The CO2 level outside is around 400ppm, but inside levels can reach between 1000 and 5000 ppm. High CO2 levels indicate that you should increase ventilation.

Note: the new version MH-Z19B requires the VIN to be connected to a 5V pin, rather than 3.3V.


To use this sensor in your installation, add the following to your configuration.yaml file:

# Example configuration.yaml entry
  - platform: mhz19
    serial_device: /dev/tty.SLAB_USBtoUART
  • serial_device (Required): The serial port to use. On *nix systems, it can often be identified by $ ls /dev/tty*
  • name (Optional): The name displayed in the frontend.
  • monitored_conditions (Optional, starting from version 0.40): Conditions to monitor. Supported conditions:
    • co2 (default)
    • temperature

Full example:

  - platform: mhz19
    serial_device: /dev/tty.SLAB_USBtoUART
    name: My MHZ19
      - co2
      - temperature

Raspberry Pi GPIO UART and the Home Assistant Operating System

To directly connect the sensor on the GPIO pins of a RPi, first append the following to config.txt in the boot directory:


Then (after a reboot): you can setup the sensor using:

  serial_device: /dev/ttyS0


The MH-Z19B version of the sensor has Automatic Baseline Calibration enabled by default, which will calibrate the 400PPM level to the lowest measured PPM in the last 24h cycle. Currently the integration does not allow turning this functionality off.