Skip to content

Klipper

🧩 Purpose:

You can feed PuffiAir's air quality data (e.g., temperature, humidity, CO₂, VOC) into Klipper using MQTT virtual sensors. This allows dynamic use of real-time environmental values inside G-code macros, such as:

{printer["sensor co2"].value}
{printer["sensor temp"].value}

🛠️ Quick Setup

Enable MQTT on PuffiAir

Make sure you have filled in the correct MQTT server info on the PuffiAir Setup Page and that it's connected successfully.

Configure Virtual Sensors in moonraker.conf

Edit your Moonraker configuration to include entries like:

[virtual_sensor co2]
mqtt_topic = puffiair/co2
type = float

[virtual_sensor temp]
mqtt_topic = puffiair/temperature
type = float

[virtual_sensor voc]
mqtt_topic = puffiair/voc_index
type = float

You can define as many sensors as needed, matching the MQTT topics published by PuffiAir.

Restart Moonraker / Klipper

Once saved, restart the services to apply the changes.

Use Values in G-code Macros

Example usage in a macro:

[gcode_macro AIR_QUALITY] gcode: RESPOND PREFIX=AIR QUALITY MSG="CO2 Level: {printer['sensor co2'].value} ppm"

📡 Default MQTT Topics from PuffiAir

Measurement Topic Example
CO₂ (ppm) puffiair/co2 635
Temperature (°C) puffiair/temperature 25.8
Humidity (%) puffiair/humidity 53.4
VOC Index puffiair/voc_index 88
Gas Level (ADC) puffiair/gas 524
PM1.0 (µg/m³) puffiair/pm1_0 2.15
PM2.5 (µg/m³) puffiair/pm2_5 3.42
PM4.0 (µg/m³) puffiair/pm4_0 4.88
PM10 (µg/m³) puffiair/pm10 5.76
Air Pressure (hPa) puffiair/pressure 1006.2
Battery Voltage (V) puffiair/battery 3.72
Device Status puffiair/status "normal"