Free download

PeakLens · energy meter & peak manager for BACnet

Cut demand charges on any BACnet building

PeakLens reads your meters over BACnet, projects every demand interval, and sheds loads in stages before the building sets a new peak. It follows your utility's peak events (Hydro-Québec, EDF Tempo, ERCOT 4CP, PJM 5CP, Ontario ICI or your own), pre-heats before them, and puts everything back on the BACnet network as two controllers your BMS can read.

BACnet/IP · BBMD · MS/TP15/30/60-min or sliding demandInstant kW limitTest mode firstWindows · Raspberry Pi
PeakLens energy meter and peak manager: power now, projected 15-minute demand over the target, stage 3 shed in test mode

The problem, everywhere

One bad quarter-hour sets the whole month's bill

Most commercial electricity bills charge for demand: the highest average power over a 15-minute interval in the month (30 or 60 minutes with some utilities, sometimes a sliding window). Many contracts also add a fee when an instant power limit is passed, and utilities pay buildings to cut their load during peak events. A chiller, a fan and the morning warm-up starting together is all it takes.

WhereWhat drives the costPeakLens source
Québec · Hydro-QuébecMonthly billed demand; winter peak events for the offer in the contract (GDP-Affaires, Latitude, Engagement, Flex rates, winter credits)Hydro-Québec's public peak event data, for your offer
France · EDF TempoRed days (22 a year) and white days with much higher prices from 6:00 to 22:00The day colours published by RTE (today and tomorrow)
Texas · ERCOT4CP: the four summer coincident peaks set next year's transmission chargeRisk hours (June–September afternoons) plus your alert provider's calendar
PJM region (US)5CP / PLC: the five summer peak hours set next year's capacity chargeRisk hours plus your supplier's alerts
Ontario · IESOICI / Class A: the five system peaks set the Global Adjustment shareRisk hours plus your peak alert feed
AnywhereTime-of-use peak hours, a demand ratchet, a subscribed power with a feeFixed windows, a calendar (.ics), a JSON API, a relay signal on the BMS, or events typed in

The customer picks the program written in their own contract; PeakLens reads the signal published for it. Several sources can run together.

How it works

Measure, project, shed in stages, bring back one by one

⚡

Reads your meters

Any BACnet point: kW, a kWh counter (best: it is what the utility bills) or a pulse counter. Several meters are added up, each with a factor, across networks, BBMDs and MS/TP.

📈

Projects the interval

Every few seconds it projects where the current 15, 30 or 60 minutes will end, and watches the instant power against your maximum.

▤

Sheds by stages

Stage 1 first, then 2, 3… A stage is a group. A load can be switched off, limited (60 % on a VFD or a dimmer) or offset (−2 °C on a setpoint).

↻

Takes turns

Baseboards and similar loads cycle: a third off for ten minutes, then the next third. Nothing stays off for long, comfort stays.

🔥

Pre-heats before events

Setpoints go up before a peak event to store heat, the event loads are shed during it, and stages come back one at a time after it (no rebound peak).

🛡

Safe on real buildings

Minimum off and on times, a comfort limit, writes at a priority (release gives control back), and a test mode that only logs what it would do.

Choose the source in a minute

"Help me choose" asks where the building is

Québec, France, Texas, PJM, Ontario, or another utility. For Hydro-Québec it lists the offers with what they mean (GDP-Affaires, Latitude, Engagement ENG01–ENG18, Flex rates, winter credits) and where to find yours in the contract. For EDF it explains red and white Tempo days. Anywhere else: fixed peak hours, a calendar link, an API, a relay contact, or events typed in by hand.

PeakLens Help me choose: Québec Hydro-Québec, France EDF, Texas ERCOT, PJM region, Ontario IESO, another utility
Hydro-Québec offers in PeakLens: GDP-Affaires, Latitude, Engagement, Flex rates, winter credits

Hydro-Québec

Tick the offer in the contract, PeakLens does the rest

PeakLens reads Hydro-Québec's public peak event data for the offers you tick, every 30 minutes, pre-heats for the minutes you choose before each event, sheds the event loads during it, and keeps the 15-minute demand under your target the rest of the winter.

On the BACnet network

Two controllers your BMS can read and trend

  • ENERGY-METER: total power and energy, each input, and energy, min, max, average and peak demand for this and the last hour, day, week, month and year
  • PEAK-MANAGER: demand so far and projected, month peak, stage, kW shed, minutes to the next event, event and pre-heat status
  • The BMS can write the target, the instant maximum and the enable: an operator adjusts it from the usual graphics
  • Every interval and every hour is kept for years, with CSV exports (the 5-year history engineers ask for)
PeakLens limits and loads to shed: target, interval, instant maximum, stages, priorities
PeakLens test mode log: would write inactive on AHU-1 supply fan at priority 9

Runs all the time

A PC or a Raspberry Pi on the network

Windows 10/11 or a Raspberry Pi (MS/TP with a USB-RS485 adapter or an RS-485 HAT). One click makes the computer always on: PeakLens starts before anyone logs in, is restarted if it stops, and the computer never sleeps. Start in test mode: PeakLens writes in its log what it would do, then switch to live when you are sure.

PeakLens FAQ

Is PeakLens really free?

Yes, PeakLens is a free download for Windows and Raspberry Pi. We ask for an email to send you the download and to tell you about BacLens, our BACnet building explorer.

Which meters does it work with?

Any meter or controller whose power (kW) or energy (kWh) is a BACnet point, on BACnet/IP, through a BBMD or on MS/TP. Pulse counters work too: choose the counter and enter the kWh per pulse. Several meters can be added up or subtracted.

How does it shed without hurting comfort?

Loads are shed by stages, with minimum off and on times and a maximum off time. Loads like baseboards take turns instead of all stopping, setpoints can be offset instead of turned off, and after an event the stages come back one at a time. Every write is at a BACnet priority: releasing it gives control back to the building's own program.

Does it work with my utility?

Built in: Hydro-Québec peak events (for the offer in your contract), EDF Tempo red and white days, risk hours for ERCOT 4CP, PJM 5CP and Ontario ICI. For any other utility: fixed peak hours, a calendar link (.ics) or a JSON API from your utility or alert provider, a relay or BMS signal read as a BACnet point, or events typed in by hand. "Help me choose" in the app walks you through it.

Can I try it before it touches the building?

Yes: PeakLens starts in test mode. It reads the meters and decides, but only writes in its log what it would do ("would write inactive on AHU-1 supply fan at priority 9"). Switch to live when the log looks right.

What happens after a power cut?

On a Raspberry Pi installed with our installer, PeakLens starts again by itself when the power comes back (it waits for the right time first). On a Windows PC made always on, it starts before anyone logs in; set "Restore on AC power loss" to "Power On" in the BIOS so the PC switches on by itself.