Duty Cycle Tracking

Last updated March 27, 2026


Duty Cycle Tracking

Duty Cycle Tracking keeps a running record of how hard each actuator in your system is working. Every time a relay switches on or off, a pump starts, or a valve opens, that event is counted and timed. Over days and weeks, this data shows you which actuators are cycling frequently, how many total hours they have logged, and how close they are to their rated lifespan.

This feature is available on Pro plans and above.

What Gets Tracked

For each actuator connected to your device, the system continuously records:

Cycle count — the total number of times the actuator has switched from off to on. A pump that starts and stops ten times in an hour adds ten to its cycle count.

Total on-time — the cumulative duration the actuator has spent in the active state, expressed in minutes or hours depending on how long the total is.

Average cycle duration — how long each individual on-period lasts on average. A very short average may indicate rapid cycling, which accelerates wear on mechanical components.

Uptime percentage — the fraction of observed time during which the actuator was on. A pump running at 80% uptime is on for four out of every five seconds on average.

Last cycle timestamp — when the most recent activation began. This is useful for spotting an actuator that has not cycled recently when it should have.

How to View Duty Cycle Stats

Duty cycle statistics appear in the Actuator Maintenance section, which is accessible from the Device Settings page for your connected device.

Open the dashboard and navigate to the device you want to inspect. Tap the settings icon, then scroll to the Actuator Maintenance section. Each actuator is displayed as a card showing its cycle count, total on-time, and uptime percentage. If a rated lifecycle has been configured for that part in the Parts Library, a lifecycle progress bar also appears on the card.

The stats panel updates in real time as actuators cycle. After a device has been active for several hours, the numbers become meaningful. A brand-new device with no actuator activity shows an empty state message until the first cycles are recorded.

Lifecycle Progress Bar

Some actuators have a manufacturer-rated cycle limit — for example, a relay rated for 100,000 operations or a solenoid valve rated for 50,000 open/close cycles. When this limit is configured in the Parts Library for that component, the maintenance panel shows a progress bar indicating how much of that rated life has been consumed.

The progress bar uses colour coding to indicate urgency:

  • Green indicates the actuator is well within its rated life (below 80% consumed).
  • Amber indicates the actuator is approaching its limit (80–94% consumed).
  • Red indicates the actuator is at or beyond 95% of its rated cycle count.

When the bar reaches the amber or red zone, the system will also generate a maintenance warning (described below) so you are notified even if you are not actively viewing the settings page.

Maintenance Warnings

Maintenance warnings are automatically generated by a backend process that runs once per day. The process inspects the duty data for all your actuators and raises a warning when it detects one of the following conditions:

High cycle rate — the actuator has been switching on and off more than 100 times per hour for several hours in a row. This pattern suggests an oversized actuator, a poorly tuned control loop, or a sensor providing noisy input. Rapid cycling shortens mechanical life and increases energy consumption.

Lifecycle approaching — the actuator has reached 80% or more of its rated cycle count, based on the limit recorded in the Parts Library. This is a prompt to order a replacement before the component fails.

Stuck on — the actuator has been continuously on for 24 hours or more without a single off transition. This may indicate a legitimate long run, but it can also indicate a stuck relay, a failed command, or a runaway control loop.

State mismatch — the commanded state and the reported state of the actuator do not agree. This typically points to a wiring issue, a failed component, or a Node-RED flow that is not processing commands correctly.

Warning severity is either Warning (amber) or Critical (red). Critical warnings indicate conditions that could cause immediate damage or safety concerns.

Active warnings appear in the Actuator Maintenance section beneath the per-actuator stat cards. Each warning shows the actuator it applies to and a plain-language description of the detected condition.

Once you have investigated and addressed a warning, tap the checkmark button on the warning card to mark it as resolved. Resolved warnings are removed from the active list and are no longer shown.

Use Cases

Scheduling Pump Maintenance

A mushroom cultivation facility runs a misting pump that activates dozens of times per day to maintain humidity. Without tracking, the team has no way to know when the pump is due for inspection.

With Duty Cycle Tracking enabled, the pump accumulates a cycle count over each grow cycle. When the pump reaches 80% of its rated 50,000-cycle limit, a lifecycle-approaching warning appears. The team receives the prompt weeks before an unexpected failure could ruin a crop, giving them time to order a replacement pump and schedule a maintenance window between harvests.

Diagnosing a Rapid-Cycling Heater

A home brewer notices that fermentation temperatures are swinging more than expected even though a PID controller is managing the heating element. Opening the Actuator Maintenance panel reveals that the heater relay is logging an average cycle duration of under two seconds and a cycle count of several thousand in a single day — far above normal.

The high-cycle-rate warning had already been raised automatically. Investigating further, the brewer discovers that the PID proportional gain was set too high for the small fermentation vessel, causing the output to oscillate. Reducing the gain brings the cycle rate back to a healthy range and stops the warning from recurring.

Troubleshooting

The stats panel shows no data

Duty cycle data begins accumulating after actuators have completed at least one full on/off cycle while the Node-RED flow is running. If you have recently deployed a new flow or the device was recently provisioned, allow the system to observe some actuator activity.

Also confirm that the device is online and that the Node-RED flow is running correctly. The stats panel in the dashboard will remain empty until the Raspberry Pi is actively publishing duty events. If the device shows as offline or the flow has not been deployed, resolve that first.

A warning was resolved but it reappeared

Resolving a warning only clears it from the active list. If the underlying condition is still present — for example, the actuator continues to cycle at a high rate — the daily backend process will detect the condition again and raise a new warning.

To prevent a warning from recurring, fix the root cause. For a high-cycle-rate warning, investigate the control loop settings or sensor inputs driving the actuator. For a stuck-on warning, check that the actuator responds to off commands and that the Node-RED flow is processing state changes correctly.

Known Issues and Limitations

Duty cycle history is rolled up once per day by a scheduled backend process. Live stats update in real time on the dashboard, but the historical daily summaries used for trend analysis are only available from the previous day onward. There is no sub-daily historical breakdown.

Lifecycle progress bars only appear when a rated cycle limit is defined for the actuator in the Parts Library. If you are using a custom or generic actuator part that does not include lifecycle data, the progress bar will not be shown even if the actuator has been running for a long time.

The stuck-on warning threshold is fixed at 24 continuous hours. For applications that intentionally run an actuator for extended periods — such as a continuously running circulation fan — this warning may trigger as a false positive. Resolving it each day is the current workaround; per-actuator threshold configuration is not yet supported.

Predictive Maintenance Alerts

LoopString analyzes duty cycle trends over time to detect potential equipment problems before they cause failures. The system compares recent actuator behavior against established baselines and generates alerts when significant deviations are detected.

Alert Types

Runtime Increase — The actuator is running significantly longer than its baseline. An increase of 20% or more triggers an "elevated" alert; 50% or more triggers a "critical" alert. This often indicates degrading efficiency — for example, a heater running longer to maintain the same temperature may have a failing element or poor insulation.

Short Cycling — The actuator is turning on and off more than 10 times per hour. Frequent cycling stresses mechanical components (relays, contactors, compressors) and often indicates a control loop issue such as a too-narrow deadband or an undersized hysteresis window.

Zero Runtime — The actuator has not turned on at all during its expected operating period. This may indicate a wiring issue, a stuck relay, or a control loop that is not triggering.

Extended Run — The actuator has been running continuously for an unusually long period. This could indicate a stuck relay, a sensor that is not reading correctly, or a process that is not reaching its setpoint.

The Maintenance Panel

The MaintenancePanel appears in the device health section of the dashboard. It shows:

  • Active alerts sorted by severity (critical first, then elevated, then normal).
  • Each alert displays the actuator name, the specific issue, and the metric (e.g., "42% increase in daily runtime").
  • A Dismiss button hides the alert until the next breach detection cycle.

Logging Maintenance

Click Log Maintenance to record that maintenance was performed:

  • Select the actuator.
  • Describe what was done (e.g., "Replaced heating element").
  • Optionally check Resets baseline — this recalibrates the baseline for that actuator so future trend analysis starts from the new normal.

How Baselines Work

Baselines are calculated from a rolling window of historical duty cycle data. The baseline captures average daily runtime hours and average daily on/off cycles. When a Cloud Function (coming in a follow-up release) detects that current values deviate significantly from the baseline, it creates a maintenance alert.