Yes. We run detection on whatever CCTV is already bolted to the wall — low resolution, old camera, grainy footage, years of dust on the lens. We don't ask a plant to buy new cameras first. The detection still works; it just needs more tolerance built into the algorithm, and some machines will give you cleaner numbers than others on the same footage. That's the honest answer. Below is what "works" actually looks like in practice, with real numbers from a site we monitor.

What "bad quality" means on a factory floor

Most small manufacturing units didn't install CCTV for analytics. They installed it for security, years ago, pointed at doorways and aisles, not at the exact angle you'd choose for watching a machine cycle. The cameras are old, the compression is aggressive, night footage is grainy, and nobody has cleaned a lens in a while. That's the starting condition for almost every site we go into. We don't replace it. We detect on it.

What we actually ran this on

At a steel plant we monitor, we set up on 4 machines using the CCTV the plant already had — no new hardware, no PLCs, no sensors. Over 19 working days (Mondays excluded, the plant is closed) that gave us 76 machine-days of observation. Feed coverage across that window was 95.8%. The remaining 4.2% was outage — camera dropped, feed interrupted — and we count that as unknown time, never as the machine being stopped. That distinction matters more on bad cameras than good ones, because a flaky feed will cut out exactly when you need it least, and if you score an outage as "stopped" you've just invented a number.

On a different window at the same type of site, feed coverage was lower — 48.9% over 72 machine-days — and the detection still produced usable runtime and stop-event figures for the hours it did have. Lower coverage means fewer hours of evidence, not wrong evidence. That's the practical difference between a bad camera and a useless one.

Where grainy footage actually breaks things

It doesn't break runtime detection in any dramatic way — a machine running or not running is usually a big, obvious visual change even on a poor-quality feed. Where it gets harder is stop counting. In that same steel plant window we logged 1,794 stop events across 4 machines, averaging about 24 per machine-day. Three of the four machines sat in a consistent 10–12 stops/day range. The fourth averaged roughly four times that. We have not published that fourth number as a fact about the machine, because we don't yet know if it's a genuinely different duty cycle or our detection being oversensitive on that particular camera's angle and quality. That's the real risk with bad cameras: not that detection fails outright, but that it gets jumpy on one feed and you have to notice that and hold the number back until you've checked it, rather than report it as truth.

What we'd tell you to do differently

If you're deciding whether to try this on your own old cameras: don't wait for a camera refresh. Run it on what you have first. You'll get a usable baseline — for that steel plant, mean runtime came out to 5.7 hours per machine per working day (median 6.2h), with runtime sitting at 59% of the active window on average. In plain terms: the machines were switched on and attended to for roughly ten and a half hours a day, but actually running for about six of them. Nobody at that plant had a number for that before. "The machines run most of the day" turned out to mean six hours, and that's worth knowing even measured off an imperfect feed.

The one thing we won't do is report the dashboard's raw "efficiency" percentage, which on bad or good cameras alike divides runtime by total observed clock time — including the overnight hours the plant is shut. That number comes out looking like 22–29%, and it would be wrong to call that your utilisation. It's a coverage ratio, not a shift metric. Use active-window runtime instead; it's the number that actually answers "how much of the time the machine was in use was it really running."

The honest caveat

These are stop and runtime figures read off video, not off a machine controller. They measure what the camera can see, and an old, grainy camera sees less cleanly than a new one. The value isn't that the numbers are exact to the second. It's that before this, the plant had no number at all.