ACRouter — Contrôleur de routeur solaire open source
Routeur de puissance AC intelligent pour la gestion de l'énergie solaire
Overview • How It Works • Fonctionnalités • Matériel • Modes • Démarrage rapide

The dashboard: live grid/solar/load power, the divert level, and the mode selector — here exporting 1200 W into the load in AUTO.
Qu'est-ce qu'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.
Pourquoi ACRouter ?
| Problème | Solution |
|---|---|
| Excess solar exported to the grid at low rates | Le router vers le chauffe-eau ou d'autres charges |
| Expensive battery storage | Utiliser le stockage thermique (chauffe-eau) à la place |
| Solutions commerciales complexes | Simple, open source, accessible au DIY |
| Le contrôle marche/arrêt fixe gaspille de l'énergie | Variation par découpe de phase pour un contrôle précis |
Comportement journalier typique d'un système PV connecté au réseau avec charge chauffe-eau.
| Paramètre | Sans ACRouter | Avec ACRouter |
|---|---|---|
| Injection solaire en journée | Élevée | Faible |
| Taux d'autoconsommation | ~40–50 % | ~70–85 % |
| Source d'eau chaude | Réseau (soir/nuit) | Surplus solaire (journée) |
| Batterie requise | Oui (stockage) | Non |
| Energy exported/wasted | Significative | Minimale |
| Coût énergétique total | Plus élevé | 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.
Fonctionnalités
- 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.
Matériel
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.
Modes de fonctionnement
| Mode | Behavior | Idéal pour |
|---|---|---|
| OFF | Dimmer at 0%, no regulation | Maintenance |
| AUTO ⭐ | Balances P_grid → 0 (consumes all surplus) |
⭐ Routage solaire standard |
| ECO | Avoids grid import; allows export | Export OK, avoid paid import |
| OFFGRID | Runs only on solar; ignores grid | Systèmes hors réseau |
| 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 pour les détails.
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 pour les détails.
| 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.
Démarrage rapide
- 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.
Documentation
| Document | Description |
|---|---|
| 📖 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.
Ce qu'ACRouter n'est pas
- Not a battery inverter · not a smart plug/relay controller · not a certified grid-protection device · not for inductive or electronic loads.
Contribuer
Contributions welcome — report bugs, suggest features, improve docs, or submit code via pull request on GitHub.
Licence
ACRouter est un logiciel open source. Voir LICENSE pour les détails.
Remerciements
- rbAmp / DimmerLink — smart sensing & dimmer modules (rbdimmer.com)
- ESP-IDF — Framework de développement IoT d'Espressif
- ArduinoJson — Bibliothèque JSON pour systèmes embarqués
- Communauté — Contributeurs et testeurs
Fait avec ⚡ pour la communauté de l'énergie solaire