Installation manuelle du logiciel

Il existe 2 méthodes pour installer le logiciel binaire du routeur photovoltaïque F1ATB dans l’ESP32. Une méthode en ligne rapide et la méthode manuelle décrite ci-après qui donne accès au code source.

Code Source

L’ensemble du code est installable en utilisant l’outil de développement IDE Arduino. Il n’y a pas de code à écrire, uniquement une compilation faite par l’IDE et un téléchargement du binaire dans l’ESP32. C’est le même code quelle que soit la configuration modulaire choisie et quel que soit le capteur de mesure. Il est injecté dans un premier temps par la liaison série, puis une fois en place, on peut le modifier si besoin par le Wifi. Si vous n’êtes pas familier de l’IDE Arduino, voir les détails ici. Il faut, dans les préférences de l’IDE, faire appel au gestionnaire de carte de « Espressif » qui développe l’ESP32. Allez dans Fichier / Préférences et mettez l’adresse : https://dl.espressif.com/dl/package_esp32_index.json

A partir de la version 11.20, on peut compiler le code avec la version de l’ESP32 : 3.1.1. mettre l’url suivant dans le gestionnaire de carte :

https://github.com/espressif/arduino-esp32/releases/download/3.1.0-RC1/package_esp32_dev_index.json

Variantes code Source

Fin Mai 2024, Espressif a mis en ligne une nouvelle version de la bibliothèque qui gère l’ESP32. On est passé de la version 2.0.17 à la version 3.00. Laquelle s’est avérée buggée et a été remplacée quelques jours après par la 3.01. C’est un changement important qui a nécessité une reprise de certaines parties du code du routeur.

Allez sur votre Arduino IDE, pour identifier la bibliothèque ESP32 en cours suivant les mises à jour que vous avez accepté ou non.

Le code source est disponible ici, téléchargez la version appropriée à votre version de la carte ESP32:

Version ESP32V 2.0.17V 3.0.1 ou au dessusV3.1.1
Version Routeur V9_01 et en dessousV9_02 et au dessusV11.20 et au dessus

Vérifiez que vous avez les bibliothèques installées sur votre IDE Arduino :

  • PubSubClient
  • OneWire
  • DallasTemperature
  • UrlEncode
  • LovyanGFX
  • EthernetESP32

Ensuite vous devez compiler le logiciel en précisant à l’IDE Arduino que vous avez une carte ESP32.
Sélectionner la carte « ESP32 Dev Module » ainsi que le port de COM de Windows sur lequel est branchée la carte par le port série puis lancez la compilation et le téléchargement. Avec certaines cartes, si le téléversement du code dans l’ESP32 ne se fait pas, il faut presser sur le bouton boot au début de la tentative de téléversement.

Partition Mémoire

Le passage en version 3.0.1 de la bibliothèque de l’ESP32 a fait exploser le volume mémoire occupé de 90% à 99% de la disponibilité. Il est possible de modifier la partition de la mémoire Flash et ne plus utilser celle par défaut.

A partir de la version 10 du routeur et jusqu’à 12.05 et avant compilation, il faut aller dans : Outils–> Partition Scheme –> Minimal SPIFFS

Ainsi le volume occupé tombe à 66% environ, ce qui laisse de la place pour les évolutions futures.

A partir de la version 12.06, il faut mettre : Outils–> Partition Scheme –> No FS
Cette nouvelle table de partition pour gagner un peu de place et ne plus avoir un watchdog non fonctionnel comme dans la version 12.05. En V13, il a fallu abandonner le watchdog.

A partir de la version 14.02, il faut mettre : Outils–> Partition Scheme –> Custom. La partition est définie dans le fichier partitions.csv.

On ne peut installer la V10 à partir de la V9.x en utilisant l’OTA. Il faut se connecter à l’ESP32. Démonter votre ESP32 ou amener votre PC à côté du routeur. Désolé pour la gêne occasionnée.

Comme tous les paramètres seront perdus, faites l’installation rapide à partir de la page web en étant branché en USB. Cela vous évite la compilation et la courses aux bibliothèques…
https://f1atb.fr/fr/routeur-photovoltaiq…-logiciel/

Statistiques Téléchargements récents

Historique des versions

  • V8.09_RMS
    • Ralentissement appel Enphase de 200 à 400ms
    • Retrait bibliothèque obsolète ArduinoJson
    • Réorganisation sorties vers broker MQTT
  • V9.00_RMS
    •     Stockage des températures avec une décimale
    •     Simplification changement de nom de réseau WIFI
    •     Choix mode Wifi avec ou sans veille
    •     Sélection source de température
    •     Source de puissance reçue via MQTT
    •     Souscription MQTT à une température externe
    •     Souscription MQTT pour forcer On ou Off les actionneurs.
  • V9.01_RMS
    • Validation puissance apparente pour les configurations Linky et CACSI
    • Dernière version avec la bibliothèque ESP32 V2.0.17
  • V9.02_RMS
    • Suite au passage de la bibliothèque ESP32 en Version 3.0.1 importants changement pour le routeur sur le WIFI, les Timers, Le Watchdog et la partition mémoire FLASH.
    • Filtrage des températures pour tolérer une perte éventuelle de mesures
  • V9.03_RMS
    • Suite au changement de bibliothèque ESP32 en V3.0.1, le scan réseau pour un changement de nom de WIFI ne fonctionnait plus. Scan fait maintenant au boot.
  • V10.00
    • OTA par le Web directement en complément de l’Arduino IDE
    • Modification des calculs de puissance en UxIx3 pour avoir une représentation similaire au Linky (Merci PhDV61)
    • Modification de la surveillance Watchdog
  • V11.00
    • Possibilité de définir le SSID et le mot de passe du Wifi par le port série
    • Import / Export des paramètres et actions
    • Relance découverte MQTT toutes les 5mn
    • Réécriture de la surveillance par watchdog suite au changement de bibliothèque 3.0.x carte ESP32
    • Estimation temps équivalent d’ouverture max du Triac et relais cumulée depuis 6h du matin. Prise en compte de la puissance en sin² du mode découpe
    • Correction d’un bug de syntaxe non détecté par le compilateur depuis la version V9 affectant les communications d’un ESP esclave vers le maître
    • Affichage de l’occupation RAM
  • V11.10
    • Nouvelle source de mesure Shelly Pro Em
  •  V11.11
    • Correction bug mesure de température distante
  •  V11.12 à V11.16
    • Correction bugs et évolutions de bibliothèques mesure de température distante
  • V11.17
    • Compilation avec la nouvelle version 3.03 de la carte ESP32
    • Arrêt routage si température non valide
  • V11.18
    • Recherche de la couleur Tempo non plus chez EDF mais RTE (sauf pour senseur Linky)
    • Améliorations UxIx3
  •  V11.19
    • Nouvelle adresse de recherche Tempo chez  RTE (sauf pour senseur Linky) plus simple
    • Compilation avec la bibliothèque V3.0.4 pour l’ESP32
  •   V11.20
    • Petite modification recherche Tempo chez  RTE (sauf pour senseur Linky)
    • Compilation avec la bibliothèque V3.1.0-RC1 pour l’ESP32
  • V12.00
    •     Jusqu’à 4 capteurs de température DS18B20 ou extérieurs
    •     Offset sur les températures si besoin de corriger les mesures
    •     Rajout d’informations en sortie MQTT
    •     Les Actions peuvent être conditionnées à l’état d’autres Actions sur le même ESP32 ou un distant
    •     RAZ des historiques sur demande
    • Compilation avec la bibliothèque V3.1.0-RC1 pour l’ESP32
  • V12.01
    • Correction bug sur les dixièmes de degrés des températures
  • V12.03
    • Corrections sur les multiplications et divisions de float par une constante
  • V12.04
    •     Mise à jour Shelly Em Pro
    •     Clarification mise en page Actions
  • V12.05
    •     Correction bugs Duree_Relais dans Mqtt.ino et débordement micros() dans Source_UxI.ino
  • V12.06
    • Compilation avec une partition mémoire NoFS suite à comportement anormal du watchdog en V12.05.
  • V13.00
    • Compilation à faire avec une partition mémoire  NoFS.
    • Conditionnement Actions par d’autres actions différentes pour chaque tranche horaire.
    • Introduction Mot de passe/Clé d’accès pour modifier les paramètres ou actions
    • MQTT: un prefixe pour la déclaration et un autre pour la publication de l’état
    • Si Action inactive arrêt envoi commande Off sur relais distant.
    • Création d’une hystérésis sur les températures si Tinf<Tsup
    • Choix de la connexion, WIFI avec Internet, WIFI sans internet ou pas de WIFI (mode AP)
    • Retrait du watchdog. Il ne fonctionne plus, sauf si on retire des lignes de code sur des sujets qui n’ont rien à voir. Problème occupation/débordement mémoire ? Pas clair.
    • Choix des couleurs sur les pages Web
    • Choix de l’horloge :internet,Linky,Internet ou Secteur
    • Choix paramétrage en mode standard ou expert.
  • V13.01
    • Mystère du watchdog qui fait planter les ESP esclaves après quelques minutes, bien que plus présent. Il faut lui dire de ne pas s’activer avec un esp_task_wdt_deinit(); en début de programme
    •     RAZ du JSY-MK-194 quand on demande un RAZ dans la page paramètre
    •     Enrichissement des messages MQTT pour l’option Linky avec les énergies par index.
  • V13.02
    •     Rajout delai de 100ms après RAZ du JSY-MK-194
    •     Correction Shelly Pro Em
  • V13.03
    • Bug corrigé : variable non initialisée en l’abscence de Triac
    • Mise en cache du navigateur (5mn) de certaines pages pour accélerer le chargement
  • V14.00
    • Carte ESP32 Wroom avec écran 320*240
    • Envoi température CPU en MQTT
    • Notes mesurant la qualité des échanges entre ESP32
    • Correction bug calcul Energie avec Horloge Linky
  • V14.01
    • Correction bug MesurePower UxI crée en V14.00
  • V14.02
    • Re-introduction du Watchdog avec une table de partition personalisé fichier : partitions.csv
    • Correction bug absence lecture état actions
  • V14.03
    • Forcer l’affichage normal, non miroir sur l’écran
  • V14.04
    •     Modif pour Shelly Pro Em ligne  245
    •     Retrait mode miroir pour les écrans
  •  V14.10
    •     Modif pour Shelly Pro Em de Dash
    •     Introduction ESP32-ETH01 : Ethernet
  • V14.11
    • Prise en compte des chips model D0WDQ6 qui fonctionne en WiFi bien que non V3
  • V14.20
    • Possibilité de remplcer les 2 LEDs par un mini écran SSD1306,SSD1309 ou SH1106
    •  Augmentation de la taille de l’identifiant ESP32 MQTT
    •  Source HomeWizard
    •  Correction Nom serveur si Ethernet
  • V14.21
    • Shelly Em Gen3
    • Courbe sur 10mn des ouvertures de Triac ou SSR
    • Choix d’affichage des courbes de VA
    • RAZ pour JSY-MK-333G
  • V14.22
    • Distintinction des ESP32U en version « ESP32-D0WD » et WT-ETH01 (Ethernet)
  • V14.23
    •     MQTT : envoi facteur de puissance en unité % et envoi STGE du Linky
  • V14.24
    • Bug affichage ouverture action 2s
    • Bug affichage puissance HomeWizard. Modif ValJsonSG().
  • V14.25
    • Affichage des autres routeurs de la maison en page d’accueil
  • V15.00
    •  Retrait température CPU dans les données brutes. Plus défini par Espressif
    •  Reaction plus dynamique à choisir dans le cas d’un CACSI et légère surproduction
    •  Si source de données de puissance externe, le nom du routeur s’affiche en plus de l’IP
    •  Correction décodage Smart Gateway  ValJsonSG  
    •  Choix durée allumage écran LCD
    •  Affichage des puissances Max du jour
    •  Sortie au format PWM pour les Actions
    •  Choix du Timeout en cas de coupure de la communication
    •  Pilotage des Actions par MQTT : tOnOff,Mode,SeuilOn,SeuilOff,OuvreMax,Periode (Topic=DeviceName/Nom_Action)
    •  Favicon
  • V15.01
    •     Nettoyage code html, javascript,css (Merci Michy)
    •     Connexion Wifi :extension du timeout et 2 tentatives avant de déclarer une erreur (Merci Lolo69)
  • V15.02
    • Modifications proposée par Lolo69 sur les connexions WIFI avec le Shelly
    • Rajout du nom du routeur dans le titre des pages HTML
  • V15.03
    • Arrêt par stop(), après utilisation, de toutes les connexions WIFI comme proposé par Lolo69
  • V15.04
    •     Correction conflit Wifi/OLed
    •     Fin message Shelly non plus sur Timeout mais chaine de caractères. A vérifier avec tous les modèles de Shelly. Codage d’après ChatGPT
  • V15.05
    •     Si plusieurs  AP même SSID, choix du niveau le plus élevé
    •     Telnet port 23 identique au port série USB si liaison ethernet/wifi
  • V15.06
    • Correction affichage IP
  • V15.07
    • Corrections Shelly
  • V15.08
    • Appairage WPS
    • Renouvellement Token Enphase chaque mois
    • Création source de puissance non définie pour la première mise en route
  • V15.09
    • Estimateur injection pour les configurations Linky / CACSI proposé par Ludovic35
  • V15.10
    •     Modification recurrence sortie MQTT pour accepter 1s
    •     Affichage adresse IPV6
  • V15.11
    •     Forcage des Actions en page d’Accueil inactif si mot de passe non valide
    •     ValJson Test pour différencier SG et HW
    •     Retour à 200ms la période d’appel des Shelly pour éviter une saturation
  • V15.12
    • Adaptation récurrence d’appel UxIx3 et Shelly
    • Correction bug en mode point d’accès isolé
  • V16.00
    • Introduction de la régulation PID
  • V16.01
    • Possibilité de choisir un routeur maître en Horloge
    • Correction bug affichage Action
    • Blocage intégrateur I du PID à 50 si non utilisé
  • V16.02
    • Correction d’un bug d’affichage page paramètres
  • V16.03
    • Initialisation intégrateur PID à 100 pour ne pas ouvrir au démarrage
    • Affichage adresse IP .local
  • V16.04
    • Modif arrondi des retards
    • Mode DemiSinus pris en compte dans MQTT.ino

Mise à jour des anciennes versions

Versions V4 à V10

Dans le cas d’une mise à jour des anciennes versions V4, V5, V6, V7,V8, vers la V9,V10, notez bien sur une feuille de papier les paramètres et réglages. Au premier lancement. Il faudra faire comme un premier lancement en se connectant au point d’accès Wifi de l’ESP32 à l’adresse IP 192.168.4.1 ou par le port série.

Versions V11.xx et au dessus

Pour les versions V11.xx et au dessus, sauvegardez vos paramètres sur vote PC (bouton Import/Export) si la partie entière de la version change. Pas nécessaire de sauvegarder si uniquement la partie décimale change.

Si vous utilisez également l’affichage distant de la « maisonnette », pensez à mettre à jour le logiciel :
https://f1atb.fr/affichage-a-distance-consommation-ou-surproduction-electrique/

Moniteur Série

Après une opération de téléchargement, ouvrez le moniteur série de l’Arduino en allant sur le menu Outils. Vérifiez à droite de la fenêtre qui s’est ouverte que vous êtes à 115200 baud. L’ESP32 vous fournira de nombreuses informations comme l’adresse IP qu’on lui a attribuée etc.

Depuis la version 15.05 du logiciel du routeur, ces mêmes informations sont accessibles à distance par Telnet port 23 si le Wifi est connecté. Pour cela utilisez un logiciel comme Putty.

**************
commandes pour configuration par port série ou Telnet (respect majuscules, ponctuation et terminer par touche 'Enter'):

ssid:xxx     | Pour définir le nom xxx du Wifi à utiliser
password:yyy | Pour définir le mot de passe yyy du Wifi
restart      | Pour redémarrer l'ESP32 sans appui sur le bouton EN
dispPw       | Pour afficher les mesures de puissance Pw
dispAct      | Pour afficher les ouvertures des Actions
ETH01        | Bascule sur la config ethernet avec bus RMII et LAN8720
T:xxx        | En mode Train de Sinus force la longeur de Trame.
             | T:xxx = xxx*10ms, T:0 retourne en Train de sinus normal
P:yyy        | En mode Train de Sinus force la longueur des Pulses.
             | P:yyy = yyy*10ms. P<=T . Evitez P impaire et Trame paire.
R:x          | Affiche pour le Triac (x=0) ou les Relais (1,2..) ,
             | le Retard en% somme de| Propor | Integral | Dérivé.
             | R: pour annuler
H ou ?       | pour avoir cette aide
**************

Premier lancement du programme

CONFIGURATION PAR WPS (DEPUIS LA VERSION 15.08)

La solution la plus simple pour passer à l’ESP32 le WiFi auquel il doit se connecter à l’avenir est d’utiliser le bouton WPS de vote box WiFi. Un appui sur le bouton, puis immédiatement un démarrage ou reset de l’ESP32 et il cherchera à se connecter au WiFi désigné. Sur le port série (la console) vous trouverez l’adresse IP qui a été attribué par la box internet. Sinon, allez sur votre box et regardez la liste des dernières adresses attribuées.

CONFIGURATION PAR LE PORT SÉRIE (DEPUIS LA VERSION 11.00)

Si vous êtes connecté par le port série à la carte ESP32, après l’installation, il faut indiquer le nom du réseau Wifi et son mot de passe. Cette connexion peut être faite avec le moniteur de l’IDE Arduino ou depuis votre navigateur web. Il y a 3 commandes clés à entrer :

  • ssid: nom_du_reseau
  • password: mot de passe
  • restart
CONFIGURATION PAR LE WEB

Au premier lancement du programme dans l’ESP32, le logiciel ne connaît pas le nom et le mot de passe de votre réseau Wifi à la maison. Il va créer son propre Wifi en passant en mode point d’accès pour que vous vous y connectiez. Sur votre smartphone (déconnectez votre accès mobile) ou PC portable, regardez la liste des WiFi disponibles. Connectez-vous à celui qui porte le nom ESP-RMS….., il n’y a pas de mot de passe. Parfois, il est nécessaire de rafraichir la liste des Wifi sur votre smartphone. De même, penser à répondre « oui » quand la fenêtre demandant si vous voulez rester connecté à un réseau sans accès à internet pop-up. Elle disparait parfois très rapidement.

Ouvrez un navigateur web et rentrez l’adresse 192.168.4.1 qui correspond à l’ESP32. Il va vous renvoyer une page vous demandant le nom du WiFi de la maison auquel se connecter à l’avenir et le mot de passe.

Votre box internet va attribuer à l’ESP32 une adresse IP sur votre réseau maison.

Reconnectez vous au Wifi de la maison avec votre smartphone ou PC. Rentrez l’adresse IP attribuée à l’ESP32 dans un navigateur Web.

Adresse IP Fixe

Si vous souhaitez fixer vous-même l’adresse IP, allez faire un tour auprès de votre box à la rubrique réseau / DHCP, vous trouverez le champ des adresses dynamiques. Par exemple, souvent les Livebox d’Orange attribuent des adresses dynamiques DHCP entre 192.168.1.10 et 192.168.1.150. Il vous reste alors un champ libre pour attribuer vos propres adresses entre 192.168.1.151 et 192.168.1.253. Fréquemment, les .254 et .255 sont réservés à autre chose. Vous pouvez ainsi donner comme adresse 192.168.1.200 à l’ESP32 si aucune autre machine sur le réseau occupe déjà cette adresse. Ce forçage de l’adresse IP, se fait dans la page « Paramètres » de l’ESP32.

IP Address gateway correspond à l’adresse IP de votre box. C’est elle qui fait la passerelle (gateway) avec le monde extérieur. Chez Orange, c’est en général 192.168.1.1. Chez Free, c’est plutôt 192.168.0.254. Les trois premiers chiffres 192.168.0 ou 192.168.1 doivent être les mêmes pour la box et votre ESP.

Clignotement des LEDs

Les 2 LEDs clignotent en phase toutes les 300ms. L’ESP32 cherche à se connecter au WIFI de la maison que vous lui avez défini.

Les 2 LEDS clignotent en opposition de phase. L’ESP32 ne trouve pas le WIFI, il est en mode Point d’Accès. (AP) en créant son propre réseau . Ouvrez votre smartphone et connectez-vous comme pour un premier lancement de programme.

La LED jaune clignote toutes les 2s environ. C’est bon signe, l’ESP32 reçoit des mesures de tension, puissance etc.
La LED verte clignote, le Triac est ouvert. Plus elle clignote, plus l’ouverture est importante.

Arduino OTA

Le code inclut la possibilité de le mettre à jour non pas par la liaison série entre le PC et l’ESP mais via le Wifi. C’est la fonction Arduino OTA (On The Air). Dans l’IDE Arduino, allez à Outils/Port/Réseau Port vous y trouverez mentionné la carte ESP32 du routeur. Sélectionnez là et le téléchargement se fera via le Wifi et non plus le port série. L’IDE Arduino vous demande un mot de passe lors de la compilation. Répondez n’importe quoi, 1 lettre minimum. Cette fonctionnalité est bien utile, une fois le routeur implanté probablement loin de votre PC.

Watchdog

Le fonctionnement de l’ESP32 est surveillé par un watchdog (chien de garde). Si l’ESP32 se bloque, ne reçoit pas de données de puissance pendant 180s, il se reset.

De même si pas de Wifi pendant 24h ou pas d’Ethernet pendant 10h, l’ESP32 se reset.

Remarques

Si vous regardez les premières lignes du programme (Solar_Router_V9_01_RMS.ino), il y a 2 constantes :

#define HOSTNAME « RMS-ESP32-« 

#define CLE_Rom_Init 812567808

La première définie le début du nom de votre ESP sur le réseau, le deuxième est une clé qui permet de tester si le programme a déjà tourné. Au premier lancement, l’ESP ayant peu de chance de trouver cette clé en mémoire, la mémoire de stockage en ROM est virginisée. Par la suite, elle contiendra cette clé et tous les paramètres de configuration et l’état des compteurs d’énergie en Wh chaque jour à 0h. Si vous voulez, virginiser à nouveau la mémoire, changez la clé. Attention, votre ESP32 repartira en mode point d’accès, puis une fois le réseau WiFi connu, il aura une adresse IP obtenue par la box internet (DHCP).

Debug en ligne

Si vous êtes branché par le port série à l’ESP32, les messages de debug sous la forme Serial.print(…) ou Serial.println() sont disponibles sur le moniteur de l’IDE Arduino à 115200 bauds.

Alimentation durant la programmation

Il arrive que l’ESP32 alimenté par l’USB de votre PC ne démarre pas correctement. Cela vient d’une tension d’alimentation insuffisante, inférieure à 5V et d’un courant important au démarrage. Dans ce cas utilisé un Hub USB disposant d’une alimentation propre à lui. Vous connectezl’ESP32 au Hub que vous connectez à votre PC. https://www.amazon.fr/Aceele-Microsoft-Nintendo-Ordinateur-Portable/dp/B07RLFKG4X/ref=sr_1_1_sspa

Sécurité

En travaillant sur ce projet en 230V, vous acceptez d’assumer la responsabilité de votre propre sécurité et de prendre toutes les précautions nécessaires pour éviter les accidents électriques.

Responsabilité