PureAware Air Quality Sensor

Installation Manual
Firmware V1.025 Hardware AQS-PureAware-R1.2

1. Product Overview

The PureAware Air Quality Sensor (model PureAQS66, firmware V1.025) is a professional-grade ESP32-based environmental monitoring device designed for building automation, HVAC, and indoor air quality management.

It integrates the Sensirion SEN66 multi-parameter sensor and the MS5637 barometric pressure sensor, providing continuous measurement of 11 environmental parameters:

ParameterRangeUnit
CO20–40,000ppm
PM1.00–1,000µg/m³
PM2.50–1,000µg/m³
PM4.00–1,000µg/m³
PM100–1,000µg/m³
VOC Index1–500— (unitless)
NOx Index1–500— (unitless)
TVOC (WELL)derivedµg/m³
Temperature−40 to +125°C
Humidity0–100%RH
Barometric Pressure300–1,200hPa

Manufacturer: MICRO-ELEMENTS S.R.L.

Serial Number Format: AQS2608-[MAC_ADDRESS]

2. Package Contents

3. Safety & Precautions

WARNING: Do not expose the device to water, excessive dust, or corrosive gases. The SEN66 sensor contains sensitive optical and electrochemical components.

4. Technical Specifications

ParameterValue
ModelPureAQS66
Hardware RevisionAQS-PureAware-R1.2
MicrocontrollerESP32 (Dual-core Xtensa, 240 MHz)
Primary SensorSensirion SEN66 (CO2, PM, VOC, NOx, T, RH)
Pressure SensorTE Connectivity MS5637 (I2C @ 0x76)
ConnectivityWiFi 802.11 b/g/n (2.4 GHz)
ProtocolsBACnet/IP, Modbus TCP, MQTT, Zabbix, HTTP/REST
BACnet Port47808 (UDP)
Modbus Port502 (TCP, async, up to 3 clients)
Web Ports80, 8080, 8081, 8082
Power Supply5V DC, ~300 mA typical
FilesystemLittleFS (OTA + logs + config)
Data Logging288-entry RAM buffer + 7-day CSV rotation
Watchdog Timer50 seconds
DiscoverymDNS + SSDP
LanguagesEN, RO, HU, NO, JA
AuthenticationHTTP Basic Auth (admin/pureaware)

5. Hardware Installation

5.1 Mounting Location

Mount the device at a height of 1.2–1.8 meters (breathing zone) on a wall, away from:

5.2 Sensor Connections

All sensors are pre-wired on the PCB. If performing custom wiring:

5.3 RS-485 Connection (Optional)

For RS-485 communication:

5.4 Nextion Display (Optional)

Connect to Serial2: RX = GPIO 14, TX = GPIO 27 at 115200 baud.

6. GPIO Pinout Reference

GPIOFunctionDirectionNotes
13NeoPixel LEDOutputWS2812B, 1 pixel, 800 kHz
22Config ButtonInputInternal pull-up (active LOW)
23Run ButtonInputInternal pull-up (active LOW)
12Status LEDOutputGeneral purpose indicator
2RS-485 ControlOutputHIGH = transmit enable
16Serial1 RXInputRS-485 receive (19200 baud)
17Serial1 TXOutputRS-485 transmit
14Serial2 RXInputNextion display (115200 baud)
27Serial2 TXOutputNextion display
26I2C Bus 1 SDABidirSEN66 sensor (100 kHz)
25I2C Bus 1 SCLOutputSEN66 sensor (100 kHz)
33I2C Bus 2 SDABidirMS5637 @ 0x76 (100 kHz)
32I2C Bus 2 SCLOutputMS5637 @ 0x76 (100 kHz)

7. Powering the Device

Connect a 5V DC power source via the USB-C port. Typical draw is ~300 mA.

Important: Allow 30–60 seconds after power-on for sensor stabilization. CO2 accuracy improves significantly after 3 minutes of continuous operation. VOC and NOx indices require up to 12 hours for full algorithm conditioning.

8. First Boot & AP Mode

On first power-up (or after pressing the CONFIG button on the back of the device), the device starts in Access Point (AP) mode:

  1. The device creates a WiFi network named "PureAware_XXXXXX" (where XXXXXX is a unique suffix derived from the MAC address)
  2. Connect using password: 123456789
  3. A captive portal should open automatically. If not, navigate to http://192.168.1.25:8080
  4. Configure your WiFi credentials, hostname, and desired protocol settings
  5. Press the RUN button on the back of the device — the device saves settings, reboots, and connects to your WiFi network in STA mode
Note: In AP mode, the device IP is always 192.168.1.25. A DNS captive portal redirects all browser requests to the configuration page.
Hostname: The device advertises itself via mDNS as <hostname>-<mac_suffix>.local (e.g., pureaware-8a0de8.local). Use this to access the device without knowing its IP.

9. WiFi Configuration

Three operating modes:

ModeDescriptionUse Case
APCreates "PureAware" networkSetup, standalone
STAConnects to existing WiFiNormal operation
OFFLINEWiFi radio disabledAir-gapped, power saving

Mode switching via serial commands on Serial2:

Discovery protocols active in STA mode: mDNS, SSDP.

10. Static IP Configuration

For fixed-IP deployments (common in BMS/HVAC), configure via the web interface:

ParameterDefaultDescription
Static IP EnableDisabledToggle static IP
IP AddressemptyDevice IP (e.g., 192.168.1.100)
GatewayemptyRouter IP (e.g., 192.168.1.1)
Subnet Mask255.255.255.0Network mask
DNS Server8.8.8.8DNS resolver

11. Web Interface

PortFunctionAuthentication
80Status Dashboard (real-time readings & charts)None (public)
8080Configuration PanelHTTP Basic Auth
admin / pureaware
8081OTA Firmware UploadNone
8082Nextion Display UploadNone

The status dashboard features a responsive dark-theme design with real-time sensor readings, 24-hour history charts, and multilingual UI support (5 languages).

12. MQTT Setup

V1.025 uses a fully asynchronous MQTT client (non-blocking, based on AsyncClient). The device publishes sensor data as JSON to an MQTT broker at a configurable interval.

12.1 Configuration Parameters

ParameterDefaultDescription
MQTT EnableDisabledToggle MQTT publishing
Serverbroker.emqx.ioBroker hostname or IP
Port1883Broker TCP port
UsernameemptyAuth username (optional)
PasswordemptyAuth password (optional)
TopichostnameBase publish topic
Sensor NameemptyFriendly name included in JSON payload
Interval60 secondsPublish interval (minimum 10 seconds)

12.2 Topic Structure

The device publishes to a topic constructed from the configured base topic, the device MAC address suffix, and a /data suffix:

{topic}/{mac6}/data

For example, if the base topic is PureAware_Office and the device MAC suffix is 8a0de8:

PureAware_Office/8a0de8/data
Note: The mac6 is the last 6 hex digits of the ESP32 MAC address. This ensures each device has a unique publish topic even when sharing the same base topic.

12.3 Public Broker (Quick Start)

For quick testing, use the free public EMQX broker:

ParameterValue
Serverbroker.emqx.io
Port1883 (TCP) / 8083 (WebSocket)
WebSocket URLws://broker.emqx.io:8083/mqtt
Usernameemqx
Passwordpublic
Important: Public brokers are suitable for testing only. For production deployments, use a private MQTT broker (e.g., Mosquitto, EMQX, HiveMQ) with TLS encryption and authentication.

12.4 Remote Monitoring

PureAware provides companion monitoring applications that connect to the same MQTT broker via WebSocket and display live sensor data from all discovered devices:

All three applications auto-discover devices by subscribing to {topic}/# and display live sensor cards with AQI badges, color-coded thresholds, and timeout detection.

In the monitoring app settings, configure:

SettingValue
Brokerws://broker.emqx.io:8083/mqtt (or your broker's WebSocket URL)
TopicSame base topic configured on the device
User / PassBroker credentials (if required)

13. Zabbix Integration

Asynchronous Zabbix Sender protocol with a dedicated timer.

ParameterDefault
Zabbix Servermonitor.microelemente.ro
Zabbix Port55051
HostnamePureAware_Default
Interval60 seconds

14. BACnet/IP Setup

The device implements a minimal BACnet/IP server per ASHRAE 135-2020, Annex J, on UDP port 47808.

14.1 Enabling BACnet

Enable via the configuration web page. The Device Instance ID is derived from the MAC address by default, or can be set manually (range: 1–4,194,302).

14.2 Exposed Objects

ObjectInstanceNameUnit
Deviceauto (MAC-derived)hostname
AI 00CO2ppm
AI 11PM1.0µg/m³
AI 22PM2.5µg/m³
AI 33PM4.0µg/m³
AI 44PM10µg/m³
AI 55VOC IndexNo units
AI 66NOx IndexNo units
AI 77TVOCppb
AI 88Temperature°C
AI 99Humidity%RH
AI 1010PressurehPa

14.3 Supported Services

Vendor: MICRO-ELEMENTS S.R.L.

15. Modbus TCP

Asynchronous Modbus TCP server on port 502, supporting up to 3 simultaneous clients with a 60-second idle timeout.

15.1 Input Registers (FC 04)

RegisterParameterUnitNotes
0Device TypeFixed: 1
1VOC Index1–500
2NOx Index1–500
3PM1.0µg/m³Integer
4PM2.5µg/m³Integer
5PM4.0µg/m³Integer
6PM10µg/m³Integer
7Temperature°C × 10e.g. 235 = 23.5°C
8Humidity%RH × 10e.g. 654 = 65.4%
9CO2ppmInteger
10TVOC (WELL)µg/m³Integer
11PressurehPa × 10e.g. 10132 = 1013.2 hPa

15.2 Supported Function Codes

16. Alarm System & Email Alerts

The device supports 3 independent alarms with hysteresis, email notifications, and a state machine.

16.1 Alarm Configuration

ParameterDescription
EnabledEnable/disable this alarm
ParameterMonitored value: co2, pm25, pm1, pm4, pm10, voc, nox, tvocw, temp, hum, press
Trigger ThresholdValue at which the alarm triggers
HysteresisDeadband for rearming (prevents oscillation)
Direction1 = above threshold, 0 = below threshold

16.2 Alarm State Machine

  OK ──► Armed ──► Triggered ──► Rearmed ──► OK
         (value enters       (threshold      (value returns
          deadband)           crossed)        below hyst)

16.3 Email Configuration (SMTP)

ParameterDefaultDescription
Email EnableDisabledGlobal email toggle
SMTP Serveremptye.g., smtp.gmail.com
SMTP Port587587 (STARTTLS) or 465 (SSL)
TLSEnabledSTARTTLS or implicit SSL
UsernameemptySMTP auth user
PasswordemptySMTP auth password
FromemptySender email address
ToemptyRecipient email address
Note: Emails are queued in RAM when WiFi is down (2 slots per alarm: trigger + rearming events). They are sent automatically when WiFi reconnects (5-second delay for DHCP/DNS stabilization).

17. WiFi Sleep Hours

Schedule automatic WiFi disconnection during specific hours to save power or comply with EMF policies:

ParameterDefaultDescription
EnableDisabledToggle sleep schedule
Start Hour22:00WiFi off time
End Hour06:00WiFi on time
Note: Supports midnight-crossing intervals (e.g., 22:00–06:00). Data logging continues during WiFi sleep — only network connectivity is disabled.

18. Data Logging

The device maintains two layers of data logging:

18.1 RAM Buffer

18.2 File-based Logging (LittleFS)

18.3 NTP Time Synchronization

The device syncs time via NTP when WiFi is available. Three fallback levels ensure timestamps are always present:

  1. NTP — Full precision when synced
  2. Saved base — Restored from LittleFS after reboot (error < 1 hour)
  3. Fallback — Jan 1, 2026 + uptime (usable even without network)

19. OTA Firmware Updates

19.1 Manual Upload

  1. Navigate to http://<ip>:8081
  2. Select the .bin firmware file
  3. Click Upload and wait for completion
  4. The device reboots automatically

19.2 Automatic OTA (STA mode only)

Every 24 hours, the device checks https://update.microelemente.ro/firmware.bin for new firmware. Downloads are staged to LittleFS before flashing, protecting against incomplete downloads.

WARNING: Do not power off the device during firmware update!

20. Nextion Display

The optional Nextion HMI display shows real-time sensor data. Connect via Serial2 (GPIO 14/27 at 115200 baud).

Upload display firmware (pureaware_v3.tft) via the web interface on port 8082.

21. LED Status Indicators

Color/PatternMeaning
Green (solid)Normal operation, WiFi connected
Blue (solid)AP mode active
Red (solid)Error / sensor fault
Yellow (blinking)WiFi connecting
OffLED disabled or OFFLINE mode

22. Button Functions

The device has two physical buttons located on the back (spare side) of the module:

ButtonGPIOFunctionAction
CONFIG22Enter configuration modePress → saves AP mode → reboots → starts as Access Point (IP: 192.168.1.25)
RUN23Enter run modePress → saves STA mode → reboots → connects to configured WiFi network
Workflow: Press CONFIG to enter AP mode for configuration. After setup, press RUN to switch to normal operation (STA mode). Both actions trigger an automatic reboot.

23. Language Support

The web interface and email notifications support 5 languages:

Set the language via the configuration web page. Default: en.

24. Troubleshooting

SymptomPossible CauseSolution
No WiFi network visibleNot in AP modePress Config button
Cannot reach web UIWrong port or IPUse http://<ip> on port 80 or 8080
All sensor values are 0SEN66 not initializedWait 60s; check I2C Bus 1 wiring
Pressure reads 0MS5637 disconnectedVerify I2C Bus 2 (GPIO 33/32)
BACnet not respondingNot enabled or no WiFiEnable in config; verify port 47808 not blocked
Modbus timeoutMax clients reachedReduce connections (max 3)
Email not sendingSMTP credentials wrongCheck server, port, TLS, credentials
Device reboots randomlyWatchdog timeout (50s)Check power supply; verify I2C not locked
Log files missingLittleFS not mountedReflash with correct partition scheme
mDNS not resolvingRouter blocks mDNSUse IP address directly or enable SSDP

25. Factory Reset

To restore factory defaults:

  1. Use the configuration page "Reset to Defaults" option
  2. Or erase NVS via serial programmer:
    esptool.py --port COMx erase_region 0x9000 0x5000
  3. Power cycle — device boots in AP mode with default settings
Note: Factory reset clears WiFi credentials, MQTT/Zabbix/BACnet settings, alarm configurations, and email settings. Log files on LittleFS are preserved.