Short answer

A fleet-monitoring operation has to catch anything that cuts production before the customer or the utility true-up does, which in practice means inverter faults and full outages within hours, string or MPPT dropouts within a day, and slow drains like soiling and shading within a week or two. The job is not watching a screen. It is a repeatable loop: detect the fault, rank it by lost energy and safety, decide remote fix or truck roll, and close it inside a response window you can defend against your production guarantee.

Key takeaways

  • Monitor four things first: inverter faults, string and MPPT dropouts, communications loss, and the slow drift from soiling and shading.
  • Set thresholds on lost energy and duration, not raw alarm codes, or your team drowns in noise and stops reading alerts.
  • Comms loss is the fault that hides every other fault, so treat a dark system as a real problem, not a nuisance.
  • Triage by estimated kWh lost and safety risk before you triage by which customer is loudest.
  • Write response-time SLAs you can actually hit, and keep the monitoring record that proves you hit them when a guarantee is questioned.
  • One fleet view beats a drawer full of inverter-portal logins once you pass a few dozen systems.

Monitoring one solar system is easy. You open the inverter app, glance at today's curve, and move on. Monitoring four hundred systems across three states, on five brands of inverter, while two crews are already booked solid, is a different kind of work. It is an operations problem, and the dashboard is the smallest part of it.

The question that matters is not whether you can see production. It is whether a fault on roof number 213 reaches the right person fast enough to fix it before the customer opens an angry email or the annual true-up lands with a number nobody expected. That depends on what you watch, how you filter the noise, how you rank what is left, and how fast a signal turns into a scheduled job. This playbook walks those mechanics in order.

The four failure modes you have to catch first

A solar system can fail in dozens of ways, but four categories account for most of the lost energy you will ever chase. Get these right and you have covered the bulk of the risk. The rest is refinement.

First, inverter faults. The inverter is the single point most likely to take a whole system or a large block of it offline. Ground faults, arc faults, overvoltage trips, overtemperature derating, and hard failures all show up here. When an inverter is down, production is not reduced, it is gone, so these sit at the top of the pile.

Second, string and MPPT dropouts. A single string going dark on a multi-string inverter might only drop output by 20 or 30 percent, which is why it hides. The system still produces, the curve still rises in the morning, and nothing screams. You catch it by comparing strings against each other and against their own history, not by waiting for a zero.

Third, communications loss. The monitoring link drops and the system goes dark on your screen while it may still be producing fine on the roof. This one is deceptive, because a system you cannot see is a system whose real faults you also cannot see.

Fourth, the slow drains: soiling, shading, and gradual degradation. No single alarm fires. Output just drifts a few percent below where the weather says it should be, week after week. The U.S. Department of Energy notes that real-world output tracks irradiance, soiling, shading, and temperature, so a system can be perfectly healthy and still underproduce because the glass is dirty or a new tree branch crept into the afternoon sun (DOE).

Fault, signal, severity, response

Before you can route anything, you need a shared language for what each fault looks like in the data and how hard to run at it. The table below is a starting rubric. Tune the numbers to your own fleet and climate, but keep the shape: every fault maps to a signal, a severity, and a default response.

Fault typeSignal in the dataSeverityDefault response
Inverter hard fault or tripSystem output at or near zero during sun hoursCriticalSame-day contact, remote reset, roll truck if no clear
Arc or ground faultFault code plus shutdown, safety flagCritical, safetyDo not remote reset blindly, dispatch to inspect
String or MPPT dropoutOne string flat vs siblings and vs historyHighTriage within a day, bundle into next area route
Communications lossNo data received, last-seen timestamp staleMedium, escalatesCheck gateway and network first, escalate if it masks age
Soiling or shading driftOutput a few percent under weather-adjusted modelLow, cumulativeWeekly review, schedule cleaning or trim, batch by region
Battery or storage faultNo cycling, state-of-charge stuck, fault codeHighContact customer, remote diagnose, dispatch if backup at risk
Weather-driven underproductionLow output that matches low irradianceNone, informationalSuppress the alert, no action needed

That last row matters as much as the first. A cloudy week is not a fault. If your system pages someone every time a storm rolls through, you have built a machine that trains the team to ignore it.

Thresholds on lost energy, not raw alarm codes

Here is the mistake almost every team makes at the start. They forward every alarm the inverters emit straight into an inbox or a chat channel. Within a month the channel has thousands of messages, most of them transient derates and overnight comms blips that cleared on their own, and nobody reads it anymore.

The fix is to threshold on consequence, not on event. An inverter that derated for eleven minutes at noon and recovered cost you almost nothing. An inverter that has been flat for six hours cost you a full day of that system's production. Those are not the same alert, and they should not reach your team the same way. Build your filters around two variables: estimated energy lost, and how long the condition has persisted.

A practical starting set of rules, which you will adjust once you see your own false-positive rate:

  • Fire a critical alert when a system sits below roughly 10 percent of its expected output for more than an hour of good sun.
  • Fire a high alert when one string or input runs more than 20 percent under its siblings for a full production day.
  • Fire a low or digest-level alert when a system trends 5 to 10 percent under its weather-adjusted baseline across a week.
  • Suppress anything that clears itself inside your transient window, but log it, because a string that blips daily is telling you something.

Expected output is the hard part, and it is where cheap monitoring falls down. Comparing a system to a flat nameplate number is useless, because real production swings with sun and temperature. You need a baseline that already accounts for irradiance, soiling potential, shading, and temperature, which the DOE lists as the core drivers of what a panel actually delivers on a given day (DOE). Threshold against that model, and a 5 percent gap means something. Threshold against nameplate, and every winter morning looks like a failure.

Designing around alarm fatigue

Alarm fatigue is the quiet killer of monitoring operations. It does not announce itself. One day your dispatcher is reading every alert, and six weeks later they are muting the channel because 95 percent of what lands there needs no action. The failures that matter then sit unread next to the noise.

You design around it the way other high-volume operations do. Tier your alerts so that critical items interrupt a human and everything else collects into a scheduled digest. A battery fault that puts a customer's backup at risk should ring a phone. A system trending 6 percent under model should wait for the morning review. Mixing those two into one stream guarantees the important one gets lost.

Group by cause, not by system. If a regional grid event trips forty inverters at once, your team should see one grouped event with forty systems attached, not forty separate pages. Deduplicate repeat alerts on the same open issue so a single stuck inverter does not notify you every fifteen minutes. And give every alert an owner and a state, so an acknowledged alert stops shouting while it is being worked.

The goal is a channel where every item that reaches a person needs action. When that is true, your team trusts the alerts. When it is not, no amount of monitoring coverage helps, because the data arrives and dies unread.

Comms loss hides every other fault

Communications loss deserves special handling because of what it masks. When a system stops reporting, your dashboard often shows it as a gentle gray, a system that is simply not sending data. The instinct is to treat that as a low-priority nuisance. Reconnect it when someone gets around to it.

That instinct is wrong, and it is expensive. A system dark for three weeks might have been producing fine the whole time, or its inverter might have hard-faulted on day two and you would have no idea. Every hour of comms loss is an hour of blind spot over a real asset. A fleet with 8 percent of its systems offline on the dashboard is not a fleet with a minor data gap. It is a fleet where one in twelve systems could be failing right now with nobody watching.

So track comms loss as a first-class metric, not a footnote. Watch the last-seen timestamp on every system and escalate the moment a gap crosses a day or two. Check the cheap causes first, because most comms loss is a tripped home router, a changed Wi-Fi password, or a dead gateway rather than a dead inverter. Keep a standing target for fleet-wide connectivity, something like 95 percent or better reporting at any time, and treat a drop below it as an operational problem worth a dedicated push. The data you cannot see is the data most likely to be hiding a fault.

Soiling, shading, and the drift baselines catch

The faults that trip alarms are the easy ones. The expensive, invisible losses are the ones that never trip anything. Dust, pollen, bird droppings, and agricultural or wildfire haze build up on glass and shave a few percent off output. A new rooftop structure next door, or a tree that grew over three summers, drops an afternoon string into shade that was not there at commissioning. The DOE is explicit that soiling and shading sit alongside irradiance and temperature as direct drivers of real output (DOE).

None of this produces a fault code. The only way to catch it is to compare each system against a weather-adjusted expectation and watch for persistent, small negative gaps. A single day 4 percent under model is noise. Thirty days averaging 7 percent under model, with clean weather, is a cleaning visit or a shade problem you can quote.

Over the full life of a system, the DOE notes that modules degrade slowly and predictably, losing only a small fraction of output per year across a roughly 25-year life (DOE). That expected decline is your baseline, not your alarm. The job of fleet monitoring is to separate the normal, gentle slope of aging from the abnormal step-down that means a string died or the glass needs washing. You cannot do that by eye across hundreds of systems. You do it with baselines and trend windows that flag the outliers for a human to look at.

A daily and weekly fleet triage routine

Tooling catches faults. A routine closes them. Without a standing rhythm, alerts pile up and get worked at random, which means the loudest customer gets attention before the biggest energy loss. A simple, repeatable triage loop fixes that. Here is a workable version you can adapt.

  • Open the day with the critical queue: any system at or near zero, any safety-flagged fault, any battery fault risking backup. These get a contact or a dispatch before anything else.
  • Scan comms loss next, sorted by how long each system has been dark, and clear or escalate anything past your day-or-two window.
  • Rank the high-severity queue by estimated kWh lost, not by customer name, and assign each item an owner.
  • Decide remote-or-roll on each open item, and bundle truck rolls by geography so one trip clears several systems.
  • Sweep the digest of low-severity drift once a day so nothing silently ages past a week unreviewed.
  • Run a weekly fleet review of trend data to flag soiling and shading candidates and batch cleaning or trimming by region.
  • Check fleet connectivity against your target and open a task if the offline count is climbing.
  • Close the loop on every resolved item with a note on root cause, so repeat offenders surface over time.

The weekly review is where the slow losses get caught, so it is the step most likely to be skipped and the one you should protect. Daily work handles the fires. The weekly pass handles the drift that never becomes a fire but quietly costs more over a year than any single outage.

When to roll a truck and when to fix it remotely

A truck roll is the most expensive thing your operation does. Crew time, fuel, and a slot that could have gone to a paying install all ride on it. So the triage question after "how bad is this" is always "can I clear it without a truck."

A lot of faults clear remotely. A tripped inverter often comes back with a remote reset. Comms loss usually traces to the customer's network, which a phone call and a router power-cycle can fix. Derates from heat resolve themselves when the weather breaks. For these, a remote attempt first saves a wasted trip.

Some faults you never clear from a desk. An arc or ground fault with a safety flag should not be blindly reset from afar, because something physical may be wrong. A string that stays dark after a remote check means a connector, a fuse, or a module problem on the roof. A hard inverter failure needs a replacement unit in someone's hands. For these, the question flips from whether to roll to how to roll efficiently, which means batching. If you have three open issues within twenty miles, one routed trip beats three separate ones, and a non-critical fault can often wait a few days to join a nearby job.

Response-time SLAs and what they cost

An SLA is a promise about how fast you respond, and it only helps if you can keep it. Write windows you can actually hit with the crew and coverage you have, then hold to them, rather than advertising a two-hour response you miss half the time. A realistic tiered structure maps cleanly onto the severity ranking you already built.

Critical faults, the zeros and the safety flags, warrant a same-day acknowledgment and a same-day or next-day remote attempt, with a dispatch to follow fast if the remote fix fails. High-severity string dropouts can reasonably carry a response measured in a day or two plus a scheduled visit, because the system is still producing most of its output while you plan the trip. Low-severity drift lives on a weekly cadence. The point is to match urgency to lost energy, so you spend your fastest response on the faults that bleed the most.

Every tightening of an SLA has a cost. A two-hour dispatch promise means idle crew capacity on standby. A next-day promise lets you batch and route efficiently. There is a real trade between response speed and operating cost, and the right answer depends on what you sold the customer and what your guarantee exposes you to. Price the SLA into the service plan deliberately rather than promising speed you then absorb as margin loss on every truck roll.

Protecting production guarantees with the record

Many installers sell a production guarantee, a promise that a system will generate a stated amount each year or the customer receives a credit. That promise turns monitoring from a nicety into a financial control. If you cannot measure actual output against the guaranteed figure, you are exposed on every system you backed, and you find out about shortfalls when the customer does the math at year-end.

Monitoring protects the guarantee two ways. First, it catches shortfalls early. A string that dropped in March, caught in March, can be fixed before it eats into the annual total. The same string caught in December is a payout. The whole value of the guarantee depends on closing faults inside the production year, not discovering them after it. The DOE frames ongoing performance and efficiency as what determines a system's real energy and savings over its life, which is exactly the number a guarantee is written against (DOE).

The Department of Energy describes a photovoltaic system's delivered energy as a function of sustained performance against conditions like irradiance, shading, soiling, and temperature, which makes continuous measurement across the system's decades-long life the thing that determines its real output, rather than its day-one nameplate rating.

U.S. Department of Energy, Solar Performance and Efficiency

Second, the monitoring record is your evidence. When a customer questions a guarantee, a clean history of production, faults, and the dates you detected and resolved each one settles the question. Keep that record per system, because a guarantee dispute without data is an argument you lose by default.

Monitoring ops failures that drain a fleet

The ways a monitoring operation breaks down are consistent across installers, and most are process problems rather than tooling gaps. Naming them is the first step to avoiding them.

  • Alert everything, read nothing. Forwarding every raw inverter alarm into one channel buries the few that matter and trains the team to ignore the stream.
  • Treating comms loss as cosmetic. Letting dark systems sit for weeks because they are "just a data issue" leaves real faults running unseen on live assets.
  • No weather-adjusted baseline. Comparing output to nameplate makes every cloudy morning look like a fault and every slow soiling loss look like normal weather.
  • Triaging by volume, not by loss. Working the loudest customer first instead of the biggest kWh loss means your scarce crew time goes to the wrong systems.
  • Rolling a truck for everything. Dispatching before a remote attempt burns crew hours on resets and router reboots that a phone call would have cleared.
  • No standing routine. Working alerts ad hoc guarantees the slow drift never gets its weekly review and ages quietly into lost production.
  • Portal sprawl. Spreading the fleet across a dozen separate inverter logins means nobody ever looks at the whole picture, so monitoring at scale never actually happens.
  • No record kept. Resolving faults without logging cause and date leaves you defenseless on a guarantee dispute and blind to repeat offenders.

Every item on that list is a decision, not a constraint. The operations that run clean made those decisions on purpose: they tiered their alerts, they put a name on comms loss, they baselined against weather, and they wrote down what they fixed. The fleet that drains is usually the one that never decided.

Running it all from one fleet view

The thing that makes all of this impossible past a certain size is portal sprawl. You cannot run a triage routine, hit an SLA, or defend a guarantee by logging into eight inverter portals one system at a time. The operation needs the whole fleet in one place, with health signals surfaced rather than buried in per-system apps.

Enact gives installers a single fleet view of every system's performance with health alerts, so the day's critical queue, the comms-loss list, and the drift candidates all come off one screen instead of a drawer full of logins (Enact for installers). On the customer side, the Enact Home app puts production and alerts in the homeowner's hands, which cuts down the surprise calls and gives you a second set of eyes on every roof (Enact Home app). The monitoring data is already being produced by every system you installed. A fleet view is what turns that raw signal into an operation you can actually run.

Frequently asked questions

How do you monitor a fleet of solar systems?

You monitor a fleet by putting every system on one view, setting alerts that trigger on lost energy and duration rather than raw alarm codes, and running a standing triage routine that ranks faults by estimated kWh lost and safety risk. The operational priorities are inverter faults and outages first, string dropouts and comms loss next, and slow soiling or shading drift on a weekly review. Real output tracks irradiance, soiling, shading, and temperature, so baselines have to be weather-adjusted (DOE). A single fleet dashboard with health alerts makes this workable at scale (Enact for installers).

What causes solar systems to underperform?

Underperformance comes from two groups of causes. Hard faults like inverter trips, string or MPPT dropouts, and battery faults cut output sharply, while slow drains like soiling, shading, and gradual module degradation shave a few percent off without ever firing an alarm. The U.S. Department of Energy lists irradiance, soiling, shading, and temperature as the direct drivers of what a panel actually delivers on a given day (DOE). Catching the slow losses needs a weather-adjusted baseline, not a nameplate comparison.

How do you set solar monitoring alert thresholds without alarm fatigue?

Threshold on consequence, not on event. Fire a critical alert when a system runs near zero for more than an hour of good sun, a high alert when a string runs 20 percent or more under its siblings for a day, and a low digest-level alert on a 5 to 10 percent weekly gap against a weather-adjusted baseline. Tier alerts so critical items interrupt a human and everything else collects into a scheduled review, and group by cause so one grid event is one alert, not forty. Baselines have to account for the conditions the DOE lists as output drivers (DOE).

When should an installer roll a truck for a monitoring alert?

Roll a truck only after a remote attempt fails or when the fault is physical or unsafe. Tripped inverters, comms loss, and heat derates often clear with a remote reset, a customer router reboot, or a weather change, so try those first. Arc and ground faults, dark strings that stay dark after a remote check, and hard inverter failures need a visit, and non-critical ones should be batched by geography so one routed trip clears several systems. A single fleet view makes it easy to spot nearby open issues to bundle (Enact for installers).

How does fleet monitoring protect a solar production guarantee?

A production guarantee promises a system will generate a stated amount each year, so it is only as reliable as your ability to measure actual output and fix shortfalls inside the production year. Monitoring catches a dropped string in March rather than at the December true-up, and the monitoring record of production, faults, and resolution dates becomes your evidence in any dispute. The DOE frames ongoing performance over a system's life as what determines its real energy, which is the figure a guarantee is written against (DOE).

Why is communications loss a serious monitoring problem?

Because a system you cannot see is a system whose real faults you also cannot see. A dark system might be producing fine, or its inverter might have hard-faulted days ago with nobody watching, so every hour of comms loss is an hour of blind spot over a live asset. Track the last-seen timestamp on every system, escalate once a gap passes a day or two, and check cheap causes like a tripped router or dead gateway first. Keep a fleet-wide connectivity target and treat a drop below it as a real operational issue (DOE).

Sources

  1. DOE - Solar Performance and Efficiency
  2. DOE - Solar Energy Technologies Office
  3. DOE - Homeowner's Guide to Going Solar
  4. SEIA - Solar Industry Research Data
  5. EnergySage - Solar Panel Cost
  6. EIA - Average Price of Electricity (FAQ)
  7. Enact for Installers
  8. Enact Home App for Homeowners
PN
Priya NandakumarCommercial Solutions, Enact

See your real numbers

Enact builds proposals from your actual roof and utility data — so the savings you see are the savings you get. Get a free, no-pressure design.

Get a Free Solar Proposal