I game in a room that warms up fast. I could see CPU usage in Task Manager and watts in HWiNFO if I went looking.
What I actually wanted was simpler:
How much heat is this machine putting into the air right now?
Not in a spreadsheet. In plain language I could glance at while the PC was running.
The gap
Lots of tools show watts and temperatures. Almost none answer room heat:
- BTU per hour
- Heat accumulated over a session
- Plain context like "about a quarter of a space heater"
- With ambient temp: still-air rise or rough exhaust CFM
The conversion is straightforward (BTU/hr ≈ watts × 3.412), but I didn't want to do it in my head every time.
So I built HeatLens — a small desktop widget built around room heat, not raw sensor dumps.
What HeatLens shows
- Total wattage — what the PC is drawing now
- Heat dissipation — BTU/hr or kW
- Session heat — BTU or kWh since launch
- Max temperature — hottest live sensor
- Trend graphs — watts, heat, and temp over time
- CFM estimate — with ambient temp: rough exhaust airflow for a +10 °F rise
- Still-air rise — how fast a reference room would warm with no ventilation
Estimated power is labeled separately from measured sensors.
Where the data comes from
- LibreHardwareMonitor / Open Hardware Monitor (HTTP + WMI on Windows)
-
nvidia-smifor NVIDIA GPUs - Linux RAPL / hwmon when exposed by the kernel
- Labeled fallbacks when direct power sensors aren't available
On Windows, best results: LibreHardwareMonitor with Remote Web Server on port 8085.
What it is not
HeatLens is not a replacement for a Kill-A-Watt at the wall.
Software usually can't see monitor power, full PSU loss, or every platform rail. A plug-in meter is still the most accurate whole-system reading.
HeatLens is for context:
- "~400 W gaming → ~1,400 BTU/hr into the room"
- Session heat over an hour or two
- Rough CFM / still-air numbers as sanity checks — not duct design
Things I learned building it
Sensor coverage is messy. Different backends, missing rails, and estimates that need clear labeling.
Performance matters while gaming. Early builds polled too often and redrew the whole UI every sample. Newer versions throttle updates, offer Low impact mode, and skip redundant scans when Libre HTTP is already working.
Units matter. Imperial (°F, BTU) and metric (°C, kW, kWh) — both in Options.
Export helps. Excel/CSV session logs with configurable columns for longer monitoring.
Tech stack
- Python + Tkinter
- PyInstaller for portable Windows / Linux / macOS builds
- MIT license
GitHub: https://github.com/arogorn993-hue/HeatLens
Downloads: https://github.com/arogorn993-hue/HeatLens/releases
How to try it
Windows (portable): Download HeatLens.exe from Releases. SmartScreen may warn on unsigned exes — More info → Run anyway.
Linux: chmod +x HeatLens && ./HeatLens
From source:
git clone https://github.com/arogorn993-hue/HeatLens.git
cd HeatLens
pip install -r requirements.txt
python hardware_heat_widget.py
While gaming: Options → Low impact mode, or set sensor refresh to 5–10 seconds. Compact view reduces UI work.
Why I'm sharing it
I built this because I looked for it and couldn't find it. If you ever stare at wattage and think "okay, but how much is that heating my room?" — maybe it saves you the same search.
Questions and ideas: GitHub Discussions
HeatLens is a hobby project. Treat sensor readings as context, not gospel.
Top comments (0)