Skip to main content

Autoflo Technology

Municipal Remote Secondary Chlorination System — Autoflo Technology /* ===== AUTOFLO TEMPLATE 3 — SHARED DESIGN SYSTEM ===== Injected once into the Hero section's block on every Template 3 product-category page. CSS cascades across all 5 Elementor Custom-HTML widgets on the page (they render as raw markup in the same document, not iframes), so this block must NOT be repeated in Category Overview, Context Strip, Product Grid, or CTA — those sections should only define their own unique classes (e.g. .cat-intro, .context-strip, .product-card, .footer-cta). Do not edit by hand without also updating the copy referenced in memory (feedback_token_efficiency.md). */ :root { --accent: #800059; --accent-dk: #5A003E; --accent-tint: #FAEEF5; --cta-bg: #FEBE4F; --cta-text: #331A00; --dark-bg: #2A001D; --bg: #FFFFFF; --bg-section: #F8F9FA; --bg-alt: #F3F4F6; --text: #111827; --muted: #4B5563; --border: #E5E7EB; --container: 1240px; --ease: cubic-bezier(0.22, 1, 0.36, 1); } *, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; } html { scroll-behavior: smooth; overflow-x: clip; width: 100%; margin: 0; padding: 0; } body { font-family: 'Inter', system-ui, sans-serif; background: var(--bg); color: var(--text); -webkit-font-smoothing: antialiased; overflow-x: clip; line-height: 1.7; } a { color: inherit; text-decoration: none; } img { display: block; max-width: 100%; } ul { list-style: none; } button { font-family: inherit; cursor: pointer; border: none; background: none; } .container { max-width: var(--container); margin: 0 auto; padding: 0 40px; } .btn { display: inline-flex; align-items: center; justify-content: center; gap: 8px; font-size: 14px; font-weight: 600; border-radius: 4px; padding: 13px 28px; transition: all 0.3s var(--ease); white-space: nowrap; cursor: pointer; position: relative; overflow: hidden; font-family: inherit; border: none; } .btn::after { content: ''; position: absolute; top: 0; left: -100%; width: 50%; height: 100%; background: linear-gradient(to right, rgba(255,255,255,0) 0%, rgba(255,255,255,0.2) 50%, rgba(255,255,255,0) 100%); transform: skewX(-25deg); transition: left 0.6s var(--ease); pointer-events: none; } .btn:hover::after { left: 150%; } .btn-accent { background: linear-gradient(135deg, #ffd080 0%, #FEBE4F 100%); color: var(--cta-text); box-shadow: 0 4px 12px rgba(254,190,79,0.2); border: 1px solid rgba(255,255,255,0.3); } .btn-accent:hover { background: linear-gradient(135deg, #ffe9a8 0%, #ffd080 100%); transform: translateY(-2px); box-shadow: 0 8px 20px rgba(254,190,79,0.3); } .btn-outline-dark { background: transparent; color: #fff; border: 1px solid rgba(255,255,255,0.35); } .btn-outline-dark:hover { background: rgba(255,255,255,0.08); border-color: rgba(255,255,255,0.6); transform: translateY(-2px); } .reveal { opacity: 0; transform: translateY(20px); transition: opacity 0.65s ease, transform 0.65s ease; } .reveal.is-visible { opacity: 1; transform: none; } .stagger > * { opacity: 0; transform: translateY(16px); transition: opacity 0.5s ease, transform 0.5s ease; } .stagger.is-visible > *:nth-child(1) { opacity:1; transform:none; transition-delay:0.04s; } .stagger.is-visible > *:nth-child(2) { opacity:1; transform:none; transition-delay:0.08s; } .stagger.is-visible > *:nth-child(3) { opacity:1; transform:none; transition-delay:0.12s; } .stagger.is-visible > *:nth-child(4) { opacity:1; transform:none; transition-delay:0.16s; } .stagger.is-visible > *:nth-child(n+5) { opacity:1; transform:none; transition-delay:0.20s; } @media (max-width: 1024px) { .container { padding: 0 24px; } } .page-hero { background: var(--dark-bg); padding: 130px 0 0; position: relative; overflow: hidden; min-height: 480px; } .page-hero::before { content: ''; position: absolute; inset: 0; background: linear-gradient(135deg, rgba(42,0,29,0.95) 0%, rgba(128,0,89,0.75) 100%); } .page-hero-inner { position: relative; z-index: 2; padding-bottom: 60px; } .breadcrumb { display: flex; align-items: center; gap: 8px; margin-bottom: 20px; font-size: 13px; color: rgba(255,255,255,0.45); flex-wrap: wrap; } .breadcrumb a { color: rgba(255,255,255,0.45); transition: color 0.2s; } .breadcrumb a:hover { color: var(--cta-bg); } .breadcrumb-sep { color: rgba(255,255,255,0.25); } .page-hero-label { display: block; color: var(--cta-bg); font-size: 13px; font-weight: 700; letter-spacing: 0.12em; text-transform: uppercase; margin-bottom: 16px; } .page-hero h1 { font-family: 'Outfit', sans-serif; font-size: 52px; font-weight: 700; color: #fff; letter-spacing: -0.02em; line-height: 1.1; margin-bottom: 20px; max-width: 780px; } .page-hero-desc { font-size: 17px; color: rgba(255,255,255,0.7); line-height: 1.65; max-width: 640px; } @media (max-width: 767px) { .page-hero h1 { font-size: 36px; } }
Systems & Solutions

Municipal Remote Secondary Chlorination System

Water-powered chlorine dosing paired with solar-powered remote monitoring — built for rechlorination points that sit off the power grid across rural Malaysia.

(function () { const obs = new IntersectionObserver(entries => { entries.forEach(e => { if (e.isIntersecting) { e.target.classList.add('is-visible'); obs.unobserve(e.target); } }); }, { threshold: 0.08 }); document.querySelectorAll('.reveal').forEach(el => obs.observe(el)); })();
Municipal Remote Secondary Chlorination System — Autoflo Technology .product-top { padding: 90px 0; background: var(--bg); border-bottom: 1px solid var(--border); } .product-top-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 72px; align-items: start; } .gallery-main { border-radius: 12px; overflow: hidden; aspect-ratio: 4/5; background: var(--bg-alt); border: 1px solid var(--border); position: relative; } .gallery-main img { width: 100%; height: 100%; object-fit: contain; transition: opacity 0.35s ease; } .gallery-thumbs { display: flex; gap: 10px; margin-top: 12px; flex-wrap: wrap; } .gallery-thumb { width: 72px; height: 72px; border-radius: 6px; overflow: hidden; border: 2px solid transparent; cursor: pointer; background: var(--bg-alt); transition: border-color 0.2s, transform 0.2s; flex-shrink: 0; } .gallery-thumb img { width: 100%; height: 100%; object-fit: contain; } .gallery-thumb:hover { border-color: var(--accent); transform: translateY(-2px); } .gallery-thumb.active { border-color: var(--accent); } .product-info { display: flex; flex-direction: column; } .product-info-label { font-size: 14px; font-weight: 600; letter-spacing: 0.05em; color: var(--accent); text-transform: uppercase; display: inline-block; margin-bottom: 8px; } .product-name { font-family: 'Outfit', system-ui, sans-serif; font-size: clamp(32px, 4vw, 40px); font-weight: 600; color: var(--text); letter-spacing: -0.02em; line-height: 1.15; margin-top: 4px; } .product-info-desc { font-size: 17px; color: var(--muted); line-height: 1.7; margin-bottom: 24px; } .feature-list { display: flex; flex-direction: column; gap: 14px; margin-bottom: 32px; } .feature-item { display: flex; align-items: flex-start; gap: 12px; } .feature-check { width: 20px; height: 20px; border-radius: 50%; background: var(--accent-tint); border: 1px solid rgba(128,0,89,0.2); flex-shrink: 0; margin-top: 1px; display: flex; align-items: center; justify-content: center; } .feature-check svg { width: 11px; height: 11px; color: var(--accent); } .feature-item p { font-size: 14px; color: var(--muted); line-height: 1.6; } .feature-item strong { color: var(--text); font-weight: 600; } .product-cta-row { display: flex; gap: 12px; flex-wrap: wrap; margin-top: 4px; } @media (max-width: 900px) { .product-top-grid { grid-template-columns: 1fr; gap: 40px; } }
Category Overview

Water-Powered Dosing, Solar-Powered Visibility

Free chlorine residual naturally declines as treated water travels through a distribution network — the further and longer the journey, the weaker the protection by the time it reaches the last storage tank. In rural Malaysia, that last mile often has no mains electricity at all, which rules out the motor-driven dosing pumps and control panels a conventional rechlorination point would use.

This system solves both halves of that problem without needing grid power anywhere on site. A Dosatron water-powered pump injects chlorine in exact proportion to flow, running entirely off the pressure of the water itself. Alongside it, a solar-powered monitoring package continuously verifies the chlorine residual and chemical tank level, then pushes that data to the cloud over the cellular network — so operators know the condition of a remote site without driving out to check it.

100% water-powered dosing — the Dosatron runs entirely on line pressure and flow, with no electrical pump, control panel or PLC needed to inject chlorine

Continuous chlorine verification — a self-cleaning inline sensor confirms the target free chlorine residual is actually being maintained, not just that chlorine is being dosed

Solar-powered remote monitoring — chlorine residual and chemical tank level are transmitted over the cellular network from an independent solar power system, with no mains electricity required at the site

Fewer, more targeted site visits — maintenance crews travel only when chemical replenishment, residual attention or servicing is actually needed, instead of on a routine inspection schedule

(function () { document.querySelectorAll('#afGalleryThumbs .gallery-thumb').forEach(thumb => { thumb.addEventListener('click', () => { document.getElementById('afGalleryMainImg').src = thumb.dataset.src; document.querySelectorAll('#afGalleryThumbs .gallery-thumb').forEach(t => t.classList.remove('active')); thumb.classList.add('active'); }); }); const obs = new IntersectionObserver(entries => { entries.forEach(e => { if (e.isIntersecting) { e.target.classList.add('is-visible'); obs.unobserve(e.target); } }); }, { threshold: 0.08 }); document.querySelectorAll('.reveal').forEach(el => obs.observe(el)); })();
Municipal Remote Secondary Chlorination System — Autoflo Technology .section-range { padding: 80px 0; background: var(--bg-section); } .range-header { margin-bottom: 48px; } .range-label { font-size: 14px; font-weight: 600; letter-spacing: 0.05em; color: var(--accent); text-transform: uppercase; display: inline-block; margin-bottom: 8px; } .range-title { font-family: 'Outfit', sans-serif; font-size: 32px; font-weight: 700; color: var(--text); letter-spacing: -0.02em; max-width: 760px; } .range-sub { font-size: 15px; color: var(--muted); margin-top: 10px; max-width: 700px; line-height: 1.6; } .component-grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: 20px; } .component-tile { background: var(--bg); border: 1px solid var(--border); border-radius: 12px; overflow: hidden; display: flex; flex-direction: column; transition: border-color 0.3s, box-shadow 0.3s, transform 0.3s; } .component-tile:hover { border-color: rgba(128,0,89,0.3); box-shadow: 0 12px 32px rgba(0,0,0,0.08); transform: translateY(-4px); } .component-tile-image { aspect-ratio: 4/3; overflow: hidden; background: var(--bg-alt); position: relative; display: flex; align-items: center; justify-content: center; } .component-tile-image img { width: 100%; height: 100%; object-fit: contain; transition: transform 0.5s ease; } .component-tile:hover .component-tile-image img { transform: scale(1.05); } .component-tile-num { position: absolute; top: 12px; left: 12px; background: var(--cta-bg); color: var(--cta-text); font-size: 10px; font-weight: 700; letter-spacing: 0.08em; text-transform: uppercase; padding: 4px 10px; border-radius: 3px; } .component-tile-body { padding: 18px; display: flex; flex-direction: column; flex: 1; gap: 8px; } .component-tile-tag { font-size: 11px; font-weight: 700; letter-spacing: 0.08em; text-transform: uppercase; color: var(--accent); } .component-tile-name { font-family: 'Outfit', system-ui, sans-serif; font-size: 16px; font-weight: 700; color: var(--text); line-height: 1.3; letter-spacing: -0.01em; } .component-specs { display: flex; flex-direction: column; gap: 7px; margin-top: 3px; } .component-spec { display: flex; align-items: flex-start; gap: 7px; font-size: 12.5px; color: var(--muted); line-height: 1.5; } .component-spec::before { content: ''; width: 5px; height: 5px; border-radius: 50%; background: var(--accent); flex-shrink: 0; margin-top: 6px; } .component-spec strong { color: var(--text); font-weight: 600; } .range-footer { margin-top: 40px; display: flex; align-items: center; gap: 16px; flex-wrap: wrap; } .spec-strip { margin-top: 48px; border-top: 1px solid var(--border); padding-top: 32px; display: grid; grid-template-columns: repeat(4, 1fr); gap: 24px; } .spec-item { display: flex; flex-direction: column; gap: 4px; } .spec-item-label { font-size: 11px; font-weight: 700; letter-spacing: 0.06em; text-transform: uppercase; color: var(--muted); } .spec-item-value { font-size: 15px; font-weight: 600; color: var(--text); } .stagger.is-visible > *:nth-child(1) { opacity:1; transform:none; transition-delay:0.04s; } .stagger.is-visible > *:nth-child(2) { opacity:1; transform:none; transition-delay:0.10s; } .stagger.is-visible > *:nth-child(3) { opacity:1; transform:none; transition-delay:0.16s; } .stagger.is-visible > *:nth-child(4) { opacity:1; transform:none; transition-delay:0.22s; } @media (max-width: 1100px) { .component-grid { grid-template-columns: repeat(2, 1fr); } } @media (max-width: 640px) { .component-grid { grid-template-columns: 1fr; } .spec-strip { grid-template-columns: repeat(2, 1fr); } }
System Architecture

What's Included in the Municipal Remote Secondary Chlorination System

Four parts, one integrated system — nothing on site requires mains electricity to dose or monitor chlorine.

Dosatron Water-Powered Dosing PumpPart 01
Water-Powered Dosing

Dosatron Dosing Pump

Powered entirely by the flow and pressure of the water — no electrical dosing pump, control panel or PLC
Flow-proportional: dosing rate automatically tracks changing water flow to hold a constant chlorine ratio
D3 / D9 / D30 range covers 10 to 30,000 L/hr, 0.3 to 8 bar
Pyxis ST-765 Free Chlorine Sensor with FR-300 Auto-BrushPart 02
Chlorine Residual Monitoring

ST-765 Sensor + FR-300 Auto-Brush

Continuously measures free chlorine residual downstream of the Dosatron dosing point
FR-300 auto-brush constantly cleans the sensor face, reducing fouling with minimal intervention
Bare gold electrode lasts up to 2 years — no membrane to replace
Pyxis LSR-801 Radar Level SensorPart 03
Chemical Tank Monitoring

LSR-801 Radar Level Sensor

Non-contact radar measures remaining sodium hypochlorite level, unaffected by colour or vapours
Compact top-mounted installation on the existing chemical storage tank
Runs from the same 24 VDC solar supply as the rest of the monitoring package
Pyxis CloudLink 4G Gateway with Solar Power SystemPart 04
Solar-Powered Monitoring

CloudLink 4G Gateway + Solar

Collects data from both sensors and uploads it through the cellular network to a central dashboard
Powered entirely by an independent solar panel — no mains electricity needed on site
One shared 24 VDC solar system runs the sensor, auto-brush, radar sensor and gateway together
Target Free Chlorine1–3 ppm
Dosing Power100% Water-Powered
Monitoring Power24 VDC Solar
Flow Range10–30,000 L/hr
(function () { const obs = new IntersectionObserver(entries => { entries.forEach(e => { if (e.isIntersecting) { e.target.classList.add('is-visible'); obs.unobserve(e.target); } }); }, { threshold: 0.08 }); document.querySelectorAll('.reveal, .stagger').forEach(el => obs.observe(el)); })();
Municipal Remote Secondary Chlorination System — Autoflo Technology .footer-cta { background: var(--dark-bg); padding: 60px 0; position: relative; overflow: hidden; } .footer-cta::before { content: ''; position: absolute; inset: 0; background: radial-gradient(ellipse 50% 100% at 20% 50%, rgba(128,0,89,0.45) 0%, transparent 70%); pointer-events: none; } .footer-cta-box { display: flex; align-items: center; justify-content: space-between; gap: 48px; background: rgba(255,255,255,0.06); border: 1px solid rgba(255,255,255,0.1); border-radius: 16px; padding: 48px 56px; position: relative; z-index: 2; backdrop-filter: blur(8px); -webkit-backdrop-filter: blur(8px); } .footer-cta-label { font-size: 13px; font-weight: 600; letter-spacing: 0.1em; text-transform: uppercase; color: var(--cta-bg); margin-bottom: 14px; display: block; } .footer-cta h2 { font-family: 'Outfit', sans-serif; font-size: clamp(22px, 3vw, 34px); font-weight: 700; color: #fff; line-height: 1.25; } .footer-cta p { font-size: 15px; color: rgba(255,255,255,0.55); margin-top: 8px; } .footer-cta-btns { display: flex; gap: 12px; flex-shrink: 0; } @media (max-width: 900px) { .footer-cta-box { flex-direction: column; align-items: flex-start; padding: 36px 28px; } .footer-cta-btns { flex-direction: column; width: 100%; } }