One of the Sudo Room members, LF, conducted air quality research in Utqiaġvik, Alaska—the northernmost city in the state. During summers, dust from motorized vehicles and other factors create significant air quality challenges for residents. You can read more about that research here: NNA Track 1: Understanding the Changing Natural-Built Landscape in an Arctic Community: An integrated sensor network in Utqiagvik, Alaska
After the research project concluded, LF brought the equipment to Sudo Room and led a workshop during Radio Wednesdays. Members learned about the air quality nodes and reassembled them from scratch, then deployed them throughout the Bay Area.
These nodes have an extended operational lifespan since the Notecards and LTE modules consume minimal data. For more details, see the Sudo Room Workshop Readme.
The workshop exemplified the intersection of engineering, environmental science, and citizen science.
"WE WANT LAND, BREAD, HOUSING, EDUCATION, CLOTHING, JUSTICE, PEACE AND PEOPLE'S COMMUNITY CONTROL OF MODERN TECHNOLOGY." — The Black Panther Party
Technologies and Services used:
| Technology | Purpose |
|---|---|
| MQTT | Lightweight messaging protocol for real-time data transmission between air quality nodes and the processing infrastructure |
| InfluxDB | Time-series database for storing and querying air quality metrics (PM2.5, PM10, voltage, etc.) with high-performance data retention |
| Notehub | Cloud service that aggregates sensor data from distributed nodes and provides APIs for data access and management |
| Docker | Containerization platform for deploying consistent, scalable data processing services across environments |
For deployment instructions please see the Deployment Instructions
{: style="max-width: 600px;" }
- 1x Big Dot v2
- 1x Notecard v2.2 + Notecarrier X
- 1x Plantower PMS7003
- 1x PMS-to-dupont adapter
- 1x MOSFET switch
- 1x Y cable
- 7x Female-Male DuPont cables
- 2x Female-Female DuPont cable
The system architecture follows this data flow:
- Data Collection: Air quality nodes send sensor data to Notehub over the LTE network
- Event Triggering: Each data push triggers an event sent to a locally hosted MQTT broker
- Data Processing: A Python script subscribes to the MQTT broker, parses the data, and pushes it to a local InfluxDB database
- Visualization: InfluxDB serves as the data source for a Grafana dashboard hosted on a university server
- Exposure: Cloudflare Tunnels expose both the local services and Grafana dashboard to external access
{: style="max-width: 600px;" }
This project requires a .env file in the root directory to store sensitive credentials and configuration. The following variables must be configured:
| Variable | Description | Sample Value |
|---|---|---|
MQTT_USERNAME |
Username for MQTT broker authentication | air_quality_user |
MQTT_PASSWORD |
Password for MQTT broker authentication | — |
MQTT_LOCAL_BROKER |
Hostname of the local MQTT broker | localhost |
MQTT_REMOTE_BROKER |
Hostname of the remote MQTT broker | mqtt.example.com |
MQTT_LOCAL_PORT |
Port for local MQTT connections | 1883 |
MQTT_REMOTE_PORT |
Port for remote MQTT connections | 8883 |
MQTT_PORT |
Default MQTT port | 1883 |
MQTT_WS_PORT |
WebSocket port for MQTT | 8080 |
CLOUDFLARE_TUNNEL_TOKEN |
Authentication token from Cloudflare Zero Trust Dashboard | — |
INFLUXDB_PORT |
Port for InfluxDB service | 8086 |
INFLUXDB_USERNAME |
Username for InfluxDB authentication | influx_admin |
INFLUXDB_PASSWORD |
Password for InfluxDB authentication | — |
INFLUXDB_ORG |
InfluxDB organization name | sudo-air |
INFLUXDB_BUCKET |
InfluxDB bucket for sensor data storage | air_quality_metrics |
INFLUXDB_TOKEN |
Authentication token for InfluxDB API access | — |
.env file to version control. Add it to .gitignore to protect sensitive credentials.
Nodes collecting Air Quality Data. Has 2 units:
-
2.5 micron particles (PM2.5) are extremely fine airborne pollutants, smaller than a human hair, that pose significant health risks because they can deeply penetrate lungs and enter the bloodstream, causing respiratory issues, heart problems, and other serious conditions, originating from sources like vehicle exhaust, factories, and wood burning, and are often monitored for air quality alerts.
-
10 micron (µm) particles, known as PM10, are a significant air pollutant: coarse dust, pollen, and mold that are inhalable (under 10 µm) but typically get trapped in the nose/throat, causing irritation, though larger ones (2.5-10 µm) can enter the lungs, affecting those with heart/lung conditions; they're a mix from industry, vehicles, dust, etc., and while less harmful than smaller PM2.5, they still pose health risks, with good masks helping filter them.
Also has data:
- location (closest cell tower)
- voltage (battery life?)
- capture time
all of the nodes publish their data here
to see my specific node data go to events and filter
https://atmotube.com/blog/particulate-matter-pm-levels-and-aqi

