Skip to content

xlyric/pv-router-esp32

Repository files navigation

Photovoltaic Router - ESP32 TTGO T-Display (C_Lyric Version)

License: CC BY-NC-SA 4.0 GitHub stars

πŸ‡«πŸ‡· Version FranΓ§aise | πŸ‡¬πŸ‡§ English Version


FranΓ§ais

🌞 Vue d'ensemble

Ce projet est le routeur principal d'un système de routage photovoltaïque intelligent. Il mesure en temps réel les échanges d'énergie au niveau du compteur électrique (via une sonde SCT013 ou famille Shelly ) et pilote des variateurs AC distants ou directement sur la carte pour maximiser l'autoconsommation solaire.

Le routeur tourne sur un TTGO T-Display (ESP32 avec écran couleur intégré) et offre une interface web complète pour le suivi et la configuration. ( ou un Wemos ESP32 sur la carte dimmer avec un Shelly pour la mesure )

πŸ“š La documentation complΓ¨te est disponible sur le wiki APPER (en franΓ§ais)

Il s'agit du routeur PV opensource de l'association franΓ§aise APPER. La carte est open source, mais vous pouvez la commander directement auprΓ¨s de l'association. Celle-ci Γ©tant reconnue d'intΓ©rΓͺt gΓ©nΓ©ral au regard de la fiscalitΓ© franΓ§aise, elle gΓ©nΓ¨re un crΓ©dit d'impΓ΄t de 60% pour les particuliers franΓ§ais.

Tout le travail de dΓ©veloppement des cartes et du logiciel est purement bΓ©nΓ©vole. Un petit encouragement fait toujours plaisir :

ko-fi

La carte au format DIN est disponible Γ  la commande sur Helloassos (le TTGO et les Γ©lΓ©ments externes ne sont pas fourni ), livrΓ©e avec son support DIN. Frais de port inclus pour les pays europΓ©ens.

Carte DIN


✨ Caractéristiques principales

  • πŸ“Š Mesure en temps rΓ©el du flux d'Γ©nergie (injection / soutirage rΓ©seau)
  • πŸŽ›οΈ Pilotage de variateurs AC distants ou locaux (Robotdyn / SSR)
  • πŸ–₯️ Γ‰cran couleur intΓ©grΓ© (TTGO T-Display) avec indicateurs WiFi
  • 🌐 Interface web complΓ¨te et responsive (dashboard + configuration)
  • πŸ”— IntΓ©gration MQTT, Home Assistant, Jeedom, Domoticz
  • πŸ“‘ Source d'Γ©nergie externe compatible (Shelly EM, Enphase Envoy)
  • 🌑️ Surveillance de la tempΓ©rature avec sondes Dallas 18B20
  • ⏱️ Planificateur horaire (minuteur par charge)
  • πŸ”’ MΓ©canismes de sΓ©curitΓ© intΓ©grΓ©s (fusible, sonde tempΓ©rature recommandΓ©e)
  • πŸ”„ Mise Γ  jour OTA intΓ©grΓ©e

πŸ”Œ Principe de fonctionnement

Panneaux solaires
      β”‚
      β–Ό
[Onduleur] ──────► RΓ©seau Γ©lectrique
      β”‚
      β–Ό
[Compteur Linky] ──[Sonde SCT013 ou Shelly]──► [Routeur PV - TTGO T-Display]
                                                       β”‚
                                          β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
                                          β–Ό                         β–Ό
                                [Variateur distant]         [Relais locaux]
                        (PV-Dimmer ESP8266/ESP32)     (Ballon ECS, chauffage…)

Le routeur analyse la direction du courant au compteur :

  • Injection (nΓ©gatif) β†’ surplus solaire β†’ augmentation progressive de la charge
  • Soutirage (positif) β†’ consommation rΓ©seau β†’ rΓ©duction de la charge

L'objectif : maintenir un Γ©change rΓ©seau proche de 0 W en permanence pour maximiser l'autoconsommation.


πŸš€ Installation

⚠️ Rappel de sécurité

Avant de raccorder la carte au rΓ©seau Γ©lectrique, respectez les normes Γ©lectriques locales :

  • Utilisez des cΓ’bles correctement isolΓ©s pour Γ©viter les courts-circuits.
  • Installez des protections (disjoncteur 2A minimum).
  • En cas de doute, faites appel Γ  un professionnel qualifiΓ©.
  • Utilisez toujours des sondes Dallas pour surveiller les tempΓ©ratures.

MΓ©thode 1 : Web OTA (recommandΓ©e)

Depuis un navigateur compatible (Chrome ou Edge) :

  1. Rendez-vous sur https://ota.apper-solaire.org/ota.php
  2. SΓ©lectionnez le port sΓ©rie auquel le TTGO est connectΓ©
  3. Choisissez "INSTALL PV ROUTER TTGO" ou une autre version selon votre carte
  4. Validez le message d'installation β€” le programme est chargΓ© automatiquement

OTA

πŸ”„ Mises Γ  jour

  • Versions officielles disponibles sur : GitHub Releases
  • Mise Γ  jour OTA directement depuis la page /update de l'interface web du routeur

πŸ“‘ Configuration WiFi

Par port sΓ©rie

Après le flash, ouvrez la console série ("Log & Console") et saisissez :

pass votre_mot_de_passe_wifi
ssid votre_ssid_wifi
reboot

L'Γ©cran TTGO affiche l'IP et le niveau de signal WiFi (en haut Γ  droite) :

  • 🟑 Jaune : > -64 dBm (bon)
  • 🟠 Orange : > -70 dBm (moyen)
  • πŸ”΄ Rouge : > -80 dBm (faible)

Par mode AP

Connectez-vous au point d'accès WiFi du routeur et configurez votre réseau via l'interface captive.


πŸ–₯️ Interface Web

Connectez-vous Γ  l'IP affichΓ©e sur l'Γ©cran TTGO depuis votre navigateur.

Dashboard

Dashboard

Vous y trouvez :

  • Sigma (W) : puissance Γ©changΓ©e avec le rΓ©seau
  • Dimmers (%) : puissance envoyΓ©e aux variateurs
  • TempΓ©rature (Β°C) : sonde du 1er variateur ou sonde locale
  • Γ‰tat : Stable / Injection / RΓ©seau
  • Bouton ON/OFF OLED : commande de l'Γ©cran (timer configurable)

Page de configuration

Accessible via le menu "Configuration"

Configuration


πŸ”Œ Raccordement Γ©lectrique

SchΓ©ma de cΓ’blage

(SchΓ©ma rΓ©alisΓ© par Titi)

SchΓ©ma

La carte dispose d'une protection intégrée (fusible verre 0,15A ou automatique), mais il est recommandé de la placer derrière un disjoncteur 2A.

Installation sans variateur distant

Installez la carte dans le tableau Γ©lectrique et connectez la sonde SCT013 sur la phase de sortie du compteur Linky (entre le Linky et le tableau).

Installation avec variateur distant

En plus de la sonde SCT013, connectez le variateur Dimmer Γ  l'emplacement prΓ©vu sur la carte. Une sonde Dallas 18B20 est fortement recommandΓ©e pour Γ©viter toute surchauffe.

Il est conseillΓ© d'alimenter le Robotdyn en aval des rΓ©sistances du ballon pour une double sΓ©curitΓ© thermique.

Recommandations

  • Sur les ballons en stΓ©atite : n'utilisez qu'une seule rΓ©sistance pour une rΓ©gulation plus fine et moins de perturbations rΓ©seau.
  • Prenez le plus grand variateur Robotdyn (20A) ou un SSR Random 40A minimum.
  • En cas de puissance Γ©levΓ©e, ventilez le dissipateur thermique du variateur (triac).

πŸŽ›οΈ API Web

Γ‰tat et surveillance

Endpoint MΓ©thode Description
/state GET Γ‰tat courant (JSON)
/stateshort GET Γ‰tat abrΓ©gΓ© (JSON)
/statefull GET Γ‰tat complet (JSON)
/config GET Configuration (JSON)
/ping GET Test de connectivitΓ©

Contrôle système

Endpoint Description
/reboot RedΓ©marrage
/boost Mode boost 2h
/resetdallas RΓ©initialisation sonde Dallas

Configuration (/get)

Paramètre Description
?cycle=X Cycle de mesure
?delta=X Seuil puissance positive
?deltaneg=X Seuil puissance nΓ©gative
?tmax=X TempΓ©rature maximale
?voltage=X Tension rΓ©seau
?cosphi=X Facteur de puissance
?offset=X Offset de mesure
?ssid=X SSID WiFi
?pass=X Mot de passe WiFi
?save=1 Sauvegarde en flash

Relais

  • ?relay1=0/1/2 : OFF / ON / Toggle relais 1
  • ?relay2=0/1/2 : OFF / ON / Toggle relais 2

Minuteurs

  • GET /getminuteur?dimmer : Lecture minuteur variateur
  • ANY /setminuteur : RΓ©glage (heure_demarrage, heure_arret, temperature, puissance)

IntΓ©grations

Endpoint Description
/getwifi Configuration WiFi
/getenvoy DonnΓ©es Enphase Envoy
/getmqtt Configuration MQTT (JSON)
/log.txt Journal système
/getmemory Utilisation mΓ©moire (JSON)
/cosphi Mesure du facteur de puissance

πŸ› οΈ DΓ©pannage

Problèmes courants

  • ❌ Pas de connexion WiFi

    • VΓ©rifiez les identifiants rΓ©seau
    • RedΓ©marrez l'appareil
    • VΓ©rifiez le niveau de signal sur l'Γ©cran TTGO
  • πŸ”Œ Mesure de puissance incorrecte

    • VΓ©rifiez le positionnement de la sonde SCT013 (phase sortie compteur Linky)
    • Ajustez les paramΓ¨tres cosphi et offset via l'API
  • 🌑️ Sonde de tempΓ©rature non dΓ©tectΓ©e

    • VΓ©rifiez le cΓ’blage Dallas 18B20
    • Utilisez /resetdallas pour forcer une rΓ©initialisation

Outils de diagnostic

  • Journal systΓ¨me : /log.txt
  • Console sΓ©rie : depuis l'outil OTA β†’ "Log & Console"
  • Γ‰tat complet : /statefull
  • MΓ©moire des tΓ’ches : /getmemory

🀝 Contribution

  1. Forkez le projet
  2. CrΓ©ez une branche (git checkout -b feature/MaFonctionnalite)
  3. Commitez vos modifications (git commit -m 'Ajout MaFonctionnalite')
  4. Poussez la branche (git push origin feature/MaFonctionnalite)
  5. Ouvrez une Pull Request

πŸ“¦ DΓ©pendances

  • PlatformIO
  • ESP32 Arduino Core
  • ArduinoJson
  • OneWire
  • DallasTemperature
  • TFT_eSPI (affichage TTGO T-Display)

πŸ›’ Achat du matΓ©riel

Kit recommandΓ©

  • Carte routeur DIN : vendue par l'association APPER

    • CrΓ©dit d'impΓ΄t 60% en France
    • Frais de port inclus (Europe)
    • Support DIN fourni
  • Composants additionnels :

    • TTGO T-Display (ESP32 avec Γ©cran couleur intΓ©grΓ©)
    • Sonde SCT013 (mesure de courant)
    • Sonde Dallas 18B20 (tempΓ©rature)
  • Variateur (optionnel) : voir le projet complΓ©mentaire PV-Dimmer

Composant Prix approx.
Carte APPER 25€
TTGO T-Display 12€
Sonde SCT013 8€
Total ~45€

πŸ† CrΓ©dits

  • DΓ©veloppΓ© bΓ©nΓ©volement par Sunstain Tech Solutions pour la communautΓ© APPER
  • SchΓ©ma de cΓ’blage rΓ©alisΓ© par Titi
  • Contributions de la communautΓ© open-source
  • Projet open-source Γ  usage non commercial

πŸ“„ Licence

Ce projet est sous licence Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International

CC BY-NC-SA 4.0


English

🌞 Overview

This project is the main router of an intelligent photovoltaic routing system. It measures real-time energy exchanges at the electricity meter (via an SCT013 sensor or Shelly family device) and controls remote AC dimmers or local dimmers to maximize solar self-consumption.

The router runs on a TTGO T-Display (ESP32 with built-in color display) and provides a complete web interface for monitoring and configuration. (or a Wemos ESP32 on the dimmer board with a Shelly for power measurement)

πŸ“š Full documentation available on the APPER wiki (French)

This is the open-source PV router from the French association APPER. The board is open-source, but you can order it directly from the association. As a recognized public-interest organization under French tax law, purchases generate a 60% tax credit for French individuals.

All development work is purely voluntary. Encouragements are always welcome:

ko-fi

The DIN format board is available to order on Helloassos (TTGO not included) β€” shipped with DIN rail mount. Shipping included for European countries.

DIN Board


✨ Key Features

  • πŸ“Š Real-time energy flow measurement (injection / grid draw)
  • πŸŽ›οΈ Control of remote AC dimmers or local dimmers (Robotdyn / SSR)
  • πŸ–₯️ Built-in color display (TTGO T-Display) with WiFi signal indicators
  • 🌐 Comprehensive and responsive web interface (dashboard + configuration)
  • πŸ”— MQTT, Home Assistant, Jeedom, Domoticz integration
  • πŸ“‘ External energy source support (Shelly EM, Enphase Envoy)
  • 🌑️ Temperature monitoring with Dallas 18B20 sensors
  • ⏱️ Time-based scheduler (timer per load)
  • πŸ”’ Integrated safety mechanisms (fuse, recommended temperature sensor)
  • πŸ”„ Built-in OTA updates

πŸ”Œ Operating Principle

Solar panels
      β”‚
      β–Ό
[Inverter] ──────► Electrical grid
      β”‚
      β–Ό
[Linky meter] ──[SCT013 sensor or Shelly]──► [PV Router - TTGO T-Display]
                                                      β”‚
                                         β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
                                         β–Ό                         β–Ό
                               [Remote dimmer]             [Local relays]
                       (PV-Dimmer ESP8266/ESP32)     (Water heater, heating…)

The router analyzes the current direction at the electricity meter:

  • Injection (negative) β†’ solar surplus β†’ gradually increases the load
  • Grid draw (positive) β†’ grid consumption β†’ reduces the load

The goal: keep the grid exchange close to 0 W at all times to maximize self-consumption.


πŸš€ Installation

⚠️ Safety Reminder

Before connecting the board to the electrical grid, comply with local electrical safety standards:

  • Use properly insulated cables to avoid short circuits.
  • Install protective devices (minimum 2A circuit breaker).
  • If unsure, consult a qualified professional.
  • Always use Dallas sensors to monitor temperatures.

Method 1: Web OTA (Recommended)

From a compatible browser (Chrome or Edge):

  1. Go to https://ota.apper-solaire.org/ota.php
  2. Select the serial port connected to the TTGO
  3. Choose "INSTALL PV ROUTER TTGO" or another version depending on your board
  4. Confirm the installation β€” firmware is uploaded automatically

OTA

πŸ”„ Updates

  • Official releases: GitHub Releases
  • OTA update directly from the router's /update web page

πŸ“‘ WiFi Configuration

Via Serial Port

After flashing, open the serial console ("Log & Console") and type:

pass your_wifi_password
ssid your_wifi_ssid
reboot

The TTGO display shows the IP and WiFi signal strength (top right):

  • 🟑 Yellow: > -64 dBm (good)
  • 🟠 Orange: > -70 dBm (fair)
  • πŸ”΄ Red: > -80 dBm (weak)

Via AP Mode

Connect to the router's WiFi access point and configure your network through the captive portal interface.


πŸ–₯️ Web Interface

Connect to the IP shown on the TTGO display from your browser.

Dashboard

Dashboard

The dashboard shows:

  • Sigma (W): power exchanged with the grid
  • Dimmers (%): power sent to dimmers
  • Temperature (Β°C): first dimmer sensor or local sensor
  • State: Stable / Injection / Grid
  • ON/OFF OLED button: screen control (configurable timer)

Configuration Page

Accessible via the "Configuration" menu.

Configuration


πŸ”Œ Electrical Wiring

Wiring Diagram

(Diagram by Titi)

Wiring diagram

The board has built-in protection (0.15A glass fuse or automatic), but it is recommended to place it behind a 2A circuit breaker.

Simple Installation (no remote dimmer)

Install the board in the electrical panel and connect the SCT013 sensor on the output phase of the Linky meter (between Linky and the panel).

Installation with Remote Dimmer

In addition to the SCT013 sensor, connect the Dimmer board to the dedicated connector on the router board. A Dallas 18B20 sensor is strongly recommended to prevent overheating.

It is advisable to power the Robotdyn dimmer downstream of the water heater heating elements for double thermal safety.

Recommendations

  • On soapstone tanks: use only one heating element for finer regulation and fewer grid disturbances.
  • Use the largest Robotdyn dimmer (20A) or a minimum 40A Random SSR.
  • For high power loads, add cooling to the dimmer's heat sink (triac).

πŸŽ›οΈ Web API

Status & Monitoring

Endpoint Method Description
/state GET Current state (JSON)
/stateshort GET Abbreviated state (JSON)
/statefull GET Full state (JSON)
/config GET Configuration (JSON)
/ping GET Connectivity test

System Control

Endpoint Description
/reboot Restart device
/boost Activate 2-hour boost mode
/resetdallas Reset Dallas sensor detection

Configuration (/get)

Parameter Description
?cycle=X Measurement cycle
?delta=X Positive power threshold
?deltaneg=X Negative power threshold
?tmax=X Maximum temperature
?voltage=X Grid voltage
?cosphi=X Power factor
?offset=X Measurement offset
?ssid=X WiFi SSID
?pass=X WiFi password
?save=1 Save to flash

Relays

  • ?relay1=0/1/2: OFF / ON / Toggle relay 1
  • ?relay2=0/1/2: OFF / ON / Toggle relay 2

Timers

  • GET /getminuteur?dimmer: Read dimmer timer
  • ANY /setminuteur: Set timer (heure_demarrage, heure_arret, temperature, puissance)

Integrations

Endpoint Description
/getwifi WiFi configuration
/getenvoy Enphase Envoy data
/getmqtt MQTT configuration (JSON)
/log.txt System log
/getmemory Task memory usage (JSON)
/cosphi Power factor measurement

πŸ› οΈ Troubleshooting

Common Issues

  • ❌ No WiFi connection

    • Check network credentials
    • Restart the device
    • Check signal level on the TTGO display
  • πŸ”Œ Incorrect power measurement

    • Check SCT013 placement on Linky output phase
    • Adjust cosphi and offset parameters via the API
  • 🌑️ Temperature sensor not detected

    • Check Dallas 18B20 wiring
    • Use /resetdallas to force re-detection

Diagnostic Tools

  • System log: /log.txt
  • Serial console: OTA tool β†’ "Log & Console"
  • Full state: /statefull
  • Task memory: /getmemory

🀝 Contributing

  1. Fork the project
  2. Create a feature branch (git checkout -b feature/AmazingFeature)
  3. Commit your changes (git commit -m 'Add AmazingFeature')
  4. Push the branch (git push origin feature/AmazingFeature)
  5. Open a Pull Request

πŸ“¦ Dependencies

  • PlatformIO
  • ESP32 Arduino Core
  • ArduinoJson
  • OneWire
  • DallasTemperature
  • TFT_eSPI (TTGO T-Display)

πŸ›’ Hardware Purchase

Recommended Kit

  • DIN Router Board: sold by APPER Association

    • 60% tax credit in France
    • Shipping included (Europe)
    • DIN rail mount included
  • Additional components:

    • TTGO T-Display (ESP32 with built-in color display)
    • SCT013 sensor (current measurement)
    • Dallas 18B20 probe (temperature)
  • Dimmer (optional): see companion project PV-Dimmer

Component Approx. Price
APPER Board €25
TTGO T-Display €12
SCT013 sensor €8
Total ~€45

πŸ† Credits

  • Voluntarily developed by Sunstain Tech Solutions for the APPER community
  • Wiring diagram by Titi
  • Open-source community contributions
  • Non-commercial open-source project

πŸ“„ License

This project is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License

CC BY-NC-SA 4.0

About

pv router pour ESP32

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors