ACRouter — Controller router solare open source
Router di potenza AC intelligente per la gestione dell'energia solare
Overview • How It Works • Funzionalità • Hardware • Modi • Avvio rapido

The dashboard: live grid/solar/load power, the divert level, and the mode selector — here exporting 1200 W into the load in AUTO.
Cos'è ACRouter?
ACRouter is an open-source controller that automatically redirects excess solar energy to resistive loads (like water heaters) via smooth phase-angle dimming — instead of exporting it to the grid. It maximizes self-consumption of your solar power and reduces electricity costs.
Perché ACRouter?
| Problema | Soluzione |
|---|---|
| Excess solar exported to the grid at low rates | Reindirizzarlo allo scaldacqua o ad altri carichi |
| Expensive battery storage | Usare l'accumulo termico (scaldacqua) al loro posto |
| Soluzioni commerciali complesse | Semplice, open source, adatto al fai-da-te |
| Il controllo fisso on/off spreca energia | Dimmerizzazione con taglio di fase per un controllo preciso |
Comportamento giornaliero tipico di un impianto FV connesso alla rete con carico scaldacqua.
| Parametro | Senza ACRouter | Con ACRouter |
|---|---|---|
| Immissione solare diurna | Alta | Bassa |
| Tasso di autoconsumo | ~40–50 % | ~70–85 % |
| Fonte acqua calda | Rete (sera/notte) | Surplus solare (giorno) |
| Batteria necessaria | Sì (per accumulo) | No |
| Energy exported/wasted | Significativa | Minima |
| Costo energetico totale | Più alto | Lower (up to ~30% less) |
Figures are typical estimates and vary with your installation (PV size, load, tariffs, and usage).
How It Works
A v2.0 system is an ESP32-family host plus smart I2C modules:
rbAmp (I2C) ──▶ sensor_hub ──▶ RouterController ──▶ DimmerLink (I2C) ──▶ load
measures grid merges the decides how much phase-cut output (heater)
(+ solar/load) sources to divert (grid→0) (dimmer id 4)The rbAmp module measures grid power (and optionally solar/load), the RouterController runs a ~5 Hz balancing loop, and the DimmerLink module drives the load — raising or lowering it so the grid exchange trends to zero. All the surplus is consumed locally instead of exported.
Funzionalità
- Smart measurement (rbAmp). Clamp-on CT current + line voltage over I2C; self-calibrating, no ADC tuning. Grid / solar / load channels.
- Smart dimming (DimmerLink). Phase-angle 0–100% on a dedicated controller; zero-cross handled in the module.
- Seven operating modes for grid-tied, export-protection, off-grid, and manual scenarios.
- External web app — capability-aware UI (the device redirects to it).
- REST API + WebSocket, MQTT + Home Assistant auto-discovery, OTA (ESP32 tier).
- Two targets — ESP32 (full) and low-cost ESP32-C2, with capability-aware feature gating.
- Configurable & persistent — settings in NVS; configure via web app, REST, MQTT, or serial.
- Open source.
Hardware
ACRouter v2.0 uses a modular architecture: an ESP32 or ESP32-C2 host plus rbAmp (measurement) and DimmerLink (dimmer) modules sharing one I2C bus.
| Part | Role |
|---|---|
| ESP32 / ESP32-C2 host | Runs the firmware, control loop, connectivity |
| rbAmp | Grid/solar/load current + line voltage sensing (clamp-on CT) |
| DimmerLink | Phase-cut dimmer driving the resistive load |
Minimum build: one host + one rbAmp (with a grid channel) + one DimmerLink. Wiring, addresses, CT models, and pull-ups are covered in the Hardware Guide.
ACRouter is designed to work with modules from rbdimmer.com and open-source DIY hardware.
Modalità operative
| Modalità | Behavior | Ideale per |
|---|---|---|
| OFF | Dimmer at 0%, no regulation | Manutenzione |
| AUTO ⭐ | Balances P_grid → 0 (consumes all surplus) |
⭐ Routing solare standard |
| ECO | Avoids grid import; allows export | Export OK, avoid paid import |
| OFFGRID | Runs only on solar; ignores grid | Sistemi off-grid |
| MANUAL | Fixed user level | Testing / scheduling |
| BOOST | 100% output ⚠️ (high grid draw — don't leave unattended) | Fast heating (cheap tariff) |
| GRID_LIMIT | Caps grid draw by current (no export) — advanced, API-only | Stay under a supply limit |
See Router Modes per i dettagli.
Source Code & Firmware
ACRouter is fully open-source. The firmware, documentation, and build configuration are available on GitHub:
| Resource | Link |
|---|---|
| Source code | github.com/robotdyn-dimmer/ACRouter |
| Releases & firmware | GitHub Releases |
| Documentation (GitHub) | docs/ |
| Report issues | GitHub Issues |
Pre-built Firmware (v2.0.0)
Download the zip for your target, flash with esptool — see
Compilation & Flashing per i dettagli.
| Profile | Target | Interfaces | Download |
|---|---|---|---|
| ESP32 Full | ESP32 | HTTP + MQTT + OTA + ESP-NOW | ACRouter-v2.0.0-esp32-full.zip |
| C2-HTTP | ESP32-C2 | HTTP/REST API only | ACRouter-v2.0.0-c2-http.zip |
| C2-MQTT | ESP32-C2 | Headless MQTT only | ACRouter-v2.0.0-c2-mqtt.zip |
Each zip contains a 4-file set (bootloader, partition table, OTA data, application) plus flash offset instructions.
Avvio rapido
- Flash the firmware for your target/profile (ESP32, C2-HTTP, or C2-MQTT) — see Compilation.
- Wire the rbAmp and DimmerLink modules to the host's I2C bus (with pull-ups) — see the Hardware Guide. (If you change the default I2C pins, that setting is applied by a reboot before the modules can be discovered.)
- Power on and connect WiFi — the device starts an access point
ACRouter_XXXX(e.g.ACRouter_A1B2); join it, openhttp://192.168.4.1, give it your home WiFi, then open the external web app (or use serial — no WiFi needed). - Commission (in the app or over REST): discover modules (rescan) → assign roles (rbAmp
gridchannel + CT model; DimmerLinkrole=dimmer→ auto-binds to a dimmer output) → verify the grid sign under a known load. - Select AUTO and start saving energy. (Assigning
role=dimmerdrives the output live; a one-time reboot may be needed for the dimmer's status/telemetry to appear.)
The full walkthrough is in the Commissioning guide.
Documentazione
| Documento | Descrizione |
|---|---|
| 📖 Overview | Architecture & features |
| 🔧 Hardware Guide | Modules, wiring, I2C |
| 🔌 Commissioning | First-run bring-up |
| ⚙️ Compilation | Targets, profiles, build & flash |
| 🎮 Router Modes | Mode details |
| ⌨️ Terminal Commands | Serial CLI reference |
| 🌐 Web API GET / POST | REST endpoints |
| 📐 Sensor Calibration | CT models & rbAmp |
| 📡 MQTT Guide | Topics & config-over-MQTT |
| 🏠 Home Assistant | MQTT integration |
| 📚 Glossary | Terms explained |
Safety
⚠️ This project involves mains voltage (110 V / 230 V AC).
- Installation by a qualified electrician; de-energize before wiring.
- Proper isolation, fusing, and RCD/GFCI protection; keep low-voltage I2C wiring away from mains.
- Resistive loads only (heating elements) — not motors, transformers, LED drivers, or electronics.
Cosa ACRouter NON è
- Not a battery inverter · not a smart plug/relay controller · not a certified grid-protection device · not for inductive or electronic loads.
Contribuire
Contributions welcome — report bugs, suggest features, improve docs, or submit code via pull request on GitHub.
Licenza
ACRouter è software open source. Vedere LICENSE per i dettagli.
Ringraziamenti
- rbAmp / DimmerLink — smart sensing & dimmer modules (rbdimmer.com)
- ESP-IDF — Framework di sviluppo IoT di Espressif
- ArduinoJson — Libreria JSON per sistemi embedded
- Comunità — Contributori e tester
Fatto con ⚡ per la comunità dell'energia solare
⭐ Metti una stella al progetto • 🐛 Segnala un problema • 💬 Discuti