HVAC System Monitor — Now on GitHub
Just published the repo for my three-node HVAC/environmental monitoring system:
The system tracks furnace blower cycles and outdoor conditions using a mix of LoRa (Wake-on-Radio) and ESP-NOW:
Outside node – EoRa-S3-900TB (ESP32-S3 + SX1262) in a Stevenson screen, running a register-level SX1262 WOR implementation for ultra-low-power deep sleep
Blower node – ESP32-S3 Super Mini + MPU-6050 mounted on the furnace blower housing, detecting run cycles via vibration
Hub – EoRa-S3-900TB, mains-powered, aggregating data and posting to Google Sheets
Power profiling with a Nordic PPK2 shows a RxDutyCycle average of ~94 µA on the outside node, supporting long battery life on a single 3000 mAh LiPo.
Higher current due to RxDutyCycle Mode of the SX1262.
Best Regards,
William
HVAC-System-Monitor:
Event-driven, System Flowchart
- Blower turns OFF
- Blower Node detects vibration stop
- Blower Node sends via ESP-NOW alertFlag to Inside Node
- Inside Node receives packet
- Inside Node sends LoRa, wake-on-radio (WOR) preamble
- BME280 Node, SX1262 receives WOR preamble and wakes ESP32-S3
- BME280 Node, ESP32-S3 runs
setup function - Reads wake reason EXT0 or Undefined
- EXT0 Initializes SX1262 with no reset (Warm boot)
- Undefined Initializes SX1262 with reset (Cold boot)
- Reads IRQ flags
- Reads BME280
- Sends ESP-NOW data to Inside Node
- Arms RxDutyCycle
- Returns to deep sleep
- Inside Node processes incoming data
- Combines Blower Node data with BME280 Node data
- Inside Node populates variables for perpetual, Google Sheet
- Sends combined data to Google Sheet
- Inside Node awaits next alertFlag to send WOR, preamble
Logged data includes: NTP timestamp, outside temperature, inside temperature, inside humidity, thermostat setpoint, elapsed blower minutes (per cycle), daily total blower minutes, outside pressure, inside pressure, pressure difference (out − in), cycles today, coast minutes (hold time between cycles), and average cycle minutes.
Each record is written to both a local LittleFS log file and a perpetual Google Sheet (month-to-month, year-to-year).
Perpetaual, Google Sheet (Click image to enlarge):
Regards,
William
Progress on lowering "HVAC System Monitor" BME280 Outside Node average current. Changed from 1200 symbols to 5200 symbols in the LoRa Sx1262 configuration; which resulted in sleep "ticks" change for the sleep period of the rxDutyCycle made up of rx period ticks and the sleep period ticks.
New combined rx and sleep average current of ~38.32 µA and an average sleep current only of ~21.98 µA!
Nordic Power Profiler Kit II "HVAC System Monitor", BME280 Outside Node Observations
Project source code and documentation
Regards,
William
HVAC System Monitor GitHub Repo includes a folder: "Pcbway Order Files" with files needed to order printed circuit boards for the project.
The Inside and Outside nodes are designed to use Ebytes, EoRa-S3-900TB (regulated by region; check before ordering). Blower node uses the ESP32-S3 SuperMini. Check pin layout prior to ordering; some clones of this dev board use different pin layouts!!! Insideand outside node use the same pcb design. Boards I ordered are from PCBWay.
Regards,
William


