MH-Z19 CO_2 and Temperature Sensor¶
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.
As the communication with the MH-Z19 is done using UART, you need
to have an UART bus 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.
# 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
co2 (Required): The CO_2 data from the sensor in parts per million (ppm).
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.
update_interval (Optional, Time): The interval to check the sensor. Defaults to
id (Optional, 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
falseto disable ABC on boot (it’s better if you use sensor indoor). Set this value to
trueto enable ABC on boot. Doesn’t send calibration command if not set (default sensor logic will be used).
This 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.
on_...: then: - mhz19.calibrate_zero: my_mhz19_id
You can provide service to call it from Home Assistant
api: services: - service: mhz19_calibrate_zero then: - mhz19.calibrate_zero: my_mhz19_id
This action enables automatic baseline calibration on the sensor with the given ID.
on_...: then: - mhz19.abc_enable: my_mhz19_id
This action disables automatic baseline calibration on the sensor with the given ID.
on_...: then: - mhz19.abc_disable: my_mhz19_id
You can provide switch and control ABC from Home Assistant
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