CO₂ is one of the most practical indoor air signals to automate. It responds directly to occupancy, it rises clearly in under-ventilated rooms and it maps neatly to actions people already understand: open a window, use a trickle vent, run MVHR boost or simply stop heating a sealed room without fresh air.

Why CO₂ is a strong automation signal

CO₂ is not the whole story of indoor air, but it is an excellent ventilation proxy. If CO₂ is climbing, the room is not exchanging enough air for the number of people in it. That makes it ideal for threshold-based automations because the action is obvious and explainable.

A simple ladder works well:

  • Below 800 ppm: well ventilated
  • 800–1,000 ppm: keep an eye on it
  • Above 1,000 ppm: prompt for ventilation
  • Above 1,500 ppm: urgent action

Step 1: Expose HomeEaze Air in Home Assistant

HomeEaze can reach Home Assistant through MQTT auto-discovery. Once discovery is enabled, Home Assistant creates entities such as:

  • sensor.homeeaze_bedroom_co2
  • sensor.homeeaze_bedroom_iaqs
  • sensor.homeeaze_bedroom_alert_state

Step 2: Decide the room-specific threshold

A bedroom, living room and office often deserve different thresholds:

  • Bedroom: 1,000 ppm warning, 1,500 ppm urgent
  • Office: lower warnings can help concentration and comfort
  • Living room: 900 or 1,000 ppm when several people are present

Step 3: Write the Home Assistant automation

A basic bedroom ventilation automation:

- id: homeeaze_bedroom_co2_warning
  alias: HomeEaze Bedroom CO₂ Ventilation Prompt
  trigger:
    - platform: numeric_state
      entity_id: sensor.homeeaze_bedroom_co2
      above: 1000
  action:
    - service: notify.notify
      data:
        title: HomeEaze air alert
        message: Open bedroom window. Bedroom CO₂ is above 1000 ppm.

Add escalation and recovery:

- id: homeeaze_bedroom_co2_urgent
  alias: HomeEaze Bedroom CO₂ Urgent Alert
  trigger:
    - platform: numeric_state
      entity_id: sensor.homeeaze_bedroom_co2
      above: 1500
  action:
    - service: notify.notify
      data:
        title: HomeEaze urgent CO₂ alert
        message: Bedroom CO₂ is above 1500 ppm. Ventilate now.

- id: homeeaze_bedroom_co2_recovered
  alias: HomeEaze Bedroom CO₂ Recovery Message
  trigger:
    - platform: numeric_state
      entity_id: sensor.homeeaze_bedroom_co2
      below: 800
  action:
    - service: notify.notify
      data:
        title: HomeEaze air update
        message: Air quality restored. Bedroom CO₂ is back below 800 ppm.

The recovery message matters. It tells the household that opening the window worked.

Step 4: Add MQTT awareness if needed

Minimal MQTT sensor example:

mqtt:
  sensor:
    - name: Bedroom CO₂
      unique_id: homeeaze_bedroom_co2
      state_topic: homeeaze/heaq-bedroom-01/sensor/co2
      device_class: carbon_dioxide
      unit_of_measurement: ppm

Step 5: Integrate smart vents or trickle vents carefully

The safest first automation is a notification. Once that is working, some homes will want a physical action:

  • open a motorised trickle vent
  • boost MVHR
  • lower heating demand until fresh air is introduced

Keep this conservative — a simple notification is often better than a brittle actuator rule.

Final advice

Start with one room, one sensor and one clear threshold. Watch the behaviour for a week. Then add escalation, recovery and optional physical controls. In UK and EU homes, where there is no central HVAC smoothing everything out, room-by-room CO₂ automation is often the fastest way to make indoor air monitoring genuinely useful.