Routeur photovoltaïque – Installation manuelle du logiciel
Routeur Multi Source
Il existe 2 méthodes pour installer le logiciel binaire du routeur photovoltaïque F1ATB dans l’ESP32. Une méthode en ligne rapide visible ici 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.0_RC1. mattre 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é 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 ESP32 | V 2.0.17 | V 3.0.1 ou au dessus | V3.1.0 RC1 |
Version Routeur | V9_01 et en dessous | V9_02 et au dessus | V11.20 et au dessus |
Vérifiez que vous avez les bibliothèques installées sur votre IDE Arduino :
- PubSubClient
- OneWire
- DallasTemperature
- UrlEncode
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 –> 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
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/
Historique des versions V8.x, V9.x
- 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.
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 V12.xx
Pour les versions V11.xx, V12.xx 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.
Premier lancement du programme
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, ou n’est plus connecté en Wifi il 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
Bugs Soft
USB Driver
Attention, si vous n’arrivez pas à communiquer entre votre PC et l’ESP32, c’est qu’il vous manque le driver pour l’interface USB. En général, c’est le CP2102 qui se trouve sur la carte ESP32. Pour plus d’explications, allez sur la page : https://f1atb.fr/programmation-de-lesp32-application-au-routeur-photovoltaique/
Nom SSID
Après plusieurs téléchargements, modifications du code, je me suis trouvé dans la situation où l’ESP32 cherchait bien à se connecter à mon réseau WIFI de la maison comme d’habitude. Mais, le moniteur série m’affichait un échec et passage en mode point d’accès (AP) à l’adresse 192.168.4.1. En remettant le nom du réseau WIFI (SSID) c’était toujours un échec. La solution a été de nommer un nouveau nom de réseau en modifiant le SSID de la box locale, de s’y connecter sans problème, et finalement de remettre le SSID d’origine. Cela depuis la version 3.0.1 de la carte ESP32. Je n’ai pas l’explication mais au moins le remède.
RemoteDebug (non applicable à partir de la version V8.08 du routeur)
Sur certaines configurations, lors de la compilation, il y a une erreur de librairie inexistante :…..include <hwcrypto/sha.h>
Avec un éditeur de texte, ouvrez le fichier dans vos bibliothèques Arduino C:/Users/Utilisateur/Documents/Arduino/libraries/RemoteDebug/src/utility/Websockets.cpp
Le début de l’adresse peut changer suivant l’utilisateur. Retrouvez le dossier Arduino pour localiser le fichier dans les sous-dossiers.
A la ligne 42, remplacez :
#include <hwcrypto/sha.h>
par
#include <esp32/sha.h>
Ne me demandez pas pourquoi, sur mon PC de bureau, je n’ai pas besoin de faire cette modification, sur mon PC portable, j’ai besoin.
Visualisation à distance
Certaines des données peuvent être affiché à distance sur un mini écran qui s’allume au passage d’une personne. Les détails de la construction sont disponibles ici : https://f1atb.fr/affichage-a-distance-consommation-ou-surproduction-electrique/
Si vous changez de version de routeur, il faut mettre à jour le logiciel de l’affichage distant.
Vidéo sur l’installation et le paramétrage
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é
Articles sur le photovoltaïque
- Routeur photovoltaïque V12 – Affichage et paramétrage
- Routeur Photovoltaïque – Raccordement à un chauffe-eau
- Routeur Photovoltaïque – Installation rapide du logiciel
- Routeur photovoltaïque piloté via MQTT
- Capteur SmartGateways / Siconia pour routeur photovoltaïque
- Routeur photovoltaïque – Modes de régulation
- Routeur photovoltaïque – Affichage et paramétrage
- Routeur photovoltaïque – Réalisation matérielle
- Réalisation d’un Routeur photovoltaïque Multi-Sources Multi-Modes et Modulaire
- Routeur photovoltaïque – Installation manuelle du logiciel
- Capteur Shelly Em™ – Shelly Pro Em™ pour routeur photovoltaïque
- Exemples Montage Routeur Photovoltaïque F1ATB
- Capteur Enphase – Envoy-S Metered™ pour routeur photovoltaïque
- Routeur photovoltaïque simple à réaliser
- Capteur UxIx2 ou UxIx3 pour routeur photovoltaïque
- Triacs gradateurs pour routeur photovoltaïque
- Capteur Linky pour routeur photovoltaïque
- Capteur UxI pour routeur photovoltaïque
- Programmation de l’ESP32 – Application au routeur Photovoltaïque
- Chauffer votre piscine avec l’excédent d’énergie Photovoltaïque
- U x I : Routeur Solaire pour gérer la surproduction photovoltaïque (DIY)
- Panneaux Photovoltaïques Intégrés Au Bâti (IAB) d’un abri voiture
- Réalisez un Routeur Solaire avec un Linky (DIY)
- Câblage de panneaux Photovoltaïques à des Micro-Onduleurs en Autoconsommation (DIY)
- Démarches Administratives pour le Photovoltaïque
- Affichage à distance consommation ou surproduction électrique
- Réalisez un Routeur Solaire pour gérer la surproduction
- Câblage de panneaux Photovoltaïques à un onduleur en Autoconsommation (DIY)
- Panneaux Photovoltaïques Intégrés Au Bâti (IAB)
- Routeur Solaire. Mesure de Puissance avec un ESP32
Bonjour, a propos de mon changement de wifi j’ai fini par accéder à l’esp avec 192.168.4.1 il apparait bien le bouton scan réseau wifi mais soit j’ai un message « patientez 10 s » soit rien comme message autre que le boutonalors que j’ai bien la box de poche sur lequalle j’ai pu connecter mon enphase mastered…si vous aviez une idée je suis preneur
Merci
Bonjour,
La box de poche est en wifi 2,4Ghz ou 5Ghz ?
Mettez l’ESP32 près de votre box wifi en 2.4GHz. Le nom du réseau devrait apparaitre.
Cdlt
La box de poche est à 1m et c’est une 2,4Ghz. Même à 20 cm c ‘est pareil.
Est il possible de rentrer le reseau et mot de passe directement ds le programme?
Merci
Il y a un problème. L’antenne est cassée.
Vous pouvez toujours essayer avec n’importe quel programme en exemple dans Arduino, pour tester le WIFI.
On ne peut pas rentrer simplement le Wifi.
Bonjour,
il y a déjà un paramètre pour régler une plage horaire de marche forcée,
MAIS serait t-il possible d’intégrer un réglage par jour sur une semaine afin de suivant les saison , adapter un cycle anti Légionellose ?
par exemple en été 1 cycle sur 1 jour choisi , et ne pas chauffer tous les jours affin que le chauffe eau puisse absorber toute la production du jour et ne pas etre déja chaud en début de journée ?
Déjà que certains trouvent que c’est une usine à gaz, le paramétrage… Plus sérieusement, je commence à être en limite de mémoire programme et Arduino 2.x.x ne sait pas encore exploiter la mémoire complémentaire SPIFFS. A voir peut être un jour.
Cdlt
Bonjour,
J’ai la version 8.05 modifiée par moi avec le problème de régulation On/Off mais corrigée dans la version V8.06 : Correction bug sur régulation On/Off Pouvez-vous svp m’indiquer ou se trouve les modifications, afin que je modifie ma 8.05 ? Merci encore 🙂
Désolé, je ne me souviens pas. Il faut comparer Actions.cpp dans les 2 versions.
Cdlt
Bonsoir André et merci pour ce routeur qui marche chez moi à la perfection.
J’ai 2 questions la première concerne l’utilisation d’un shelly pro em en lieu et place d’un shelly em pour la consommation de la maison .La version 8.06 va t-elle fonctionner ?
J’ai envie de changer mon réseau wifi de ma box, pour changer les paramètres dans le routeur il faut lancer Basic OTA et remplacer à la ligne 6 le SSID et à la ligne 7 le mot de passe ? puis téléverser ?
Le shelly pro em n’est pas compatible.
Avec la version 8.06, on ne touche pas au programme pour l’adresse IP etc. Si l’ESP ne trouve pas de réseau pour se connecter, il passe en mode point d’accès AP. Il fournit son propre signal Wifi auquel se connecter en 192.168.4.1
bonjour,beau travail mis en service il y a 1 de semaine.
pas de dépôt GitLab ou github?
ça m’aurais permis de partager une modification : un on/off en mqtt pour pouvoir par exemple couper la chauffe du chauffe eau en vacances
Pas de Github pour le moment.
Cdlt
Bonjour clément . je suis preneur de la modif si tu peux détailler ..
Bonjour,
j’ai monté un repo https://github.com/quazardous/SolarRouterRMS
Bonjour André,
Encore merci, pour cette nouvelle mouture de RMS 🙂
Je voulais un peu plus d’info en MQTT afin d’arrêter un Node-RED et inviter la double intégoration de l’Envoy.
J’ai donc modifié le fichier MQTT.ino en ajoutant :
void sendMQTTDiscoveryMsg_global() {
…
DeviceToDiscover(« PactProd », « W », « power », « 0 »);
DeviceToDiscover(« PactConso_M », « W », « power », « 0 »);
…
}
void SendDataToHomeAssistant() {
…
doc[« PactProd »] = PactProd;
doc[« PactConso_M »] = PactConso_M;
…
}
Si jamais vous souhaitez inclure ces quelques lignes à l’avenir 😉
Cordialement
Alexis
OK je le met dans la prochaine version pour Enphase.
Cdlt
Bonjour,
au moment de compiler le programme, j’ai cette erreur qui arrive :
:\Users\sulli\AppData\Local\Temp\6642e35a-cb47-49c6-84a9-144a9468fc9d_Solar_Router_V8_06_RMS.zip.c9d\Solar_Router_V8_06_RMS\Solar_Router_V8_06_RMS.ino:79:10: fatal error: pageHtmlBrute.h: No such file or directory
#include « pageHtmlBrute.h »
Je ne comprends pas d’où ca vient…
merci BEAUCOUP
Vous avez probablement oublié de dezipper le fichier source avant de l’ouvrir dans l’IDE Arduino.
Cdlt
Bonjour,
Un sacré projet de qualité ce routeur Solaire ! bravo André !
Sur vos conseils, pour interpréter correctement les données avec l’abonnement tempo, je suis en train de tester votre code et je bloque sur un détail assez embattent (et incompréhensible) : La connexion Wi-Fi fait des siennes !
Avec le même ESP et le code correspondant à la lecture du linky en temps réel, pas de problèmes, j’avais indiqué dans les variables de configuration du script mon SSID et mot de passe, tout fonctionne à merveille.
En revanche, ici, le hotspot fonctionne bien, je m’y connecte, scan les SSID disponibles et découvre bien celui qui m’interesse, saisie du mot de passe… et rien à faire, connection failed … J’ai tenté de générer des SSID de test avec différents mots de passe (au cas ou un caractère pose problème, ça m’est déjà arrivé avec les \ ), différents niveaux de sécurité (WPA1/2..), rien à faire, la tentative de connexion avec 6.6.6.6.6.6.6.6.6 parfois un 5 se glisse dans la liste, mais jamais de connexion OK….
Une idée ??
Merci 😉
Lors d’un nouveau test, avec la liaison série débranchée, la connexion sur le réseau local a fonctionné parfaitement au final !
André, pensez vous implémenter des fonctionnalités relatives à domoticz comme pour votre projet de lecture d’infos de linky en temps réel ?
Merci pour tout !
Comme le programme propose du MQTT, on peut envoyer à Domoticz et Home Assistant. Je ne vois pas pourquoi faire quelque chose de différent. Je ne souhaite pas augmenter la taille du programme qui est à 91% de la mémoire.
Cdlt
effectivement, je n’avais pas fouillé l’option MQTT Auto discovery que vous expliquez d’ailleurs très bien sur un de vos articles !
Du coup à l’intégration des items dans domoticz je cherche à afficher correctement la valeur en watt pour l’item puissance soutirée M : Dans la liste des périphériques, la valeur s’affiche bien, et dès que je créé le widget et l’intègre à l’interface, la valeur en watt reste à 0, pourtant le compteur lui s’incrémente… Bug dans domoticz ? je vais chercher !
Merci encore pour votre code, c’est vraiment quelque chose de complet, sincèrement, très beau travail !
Bjr André,
Je peux travailler sur les pages web maintenant sur mon réso wifi partage iphone!
Suis en V8.06, source Linky.
J’ai accès à toutes les page WEB, et je peux les modifier, sauvegarder & resetter peu importe la source.
Mais,
On dirait que je ne capte que certaines des infos du TIC…
Sur la page « données brutes » Je vois seulement des infos « Données ESP32 » et non « Données brutes Linky en mode standard ».
En bas des données ESP j’ai :
Charge coeur 0 (Lecture RMS) Min, Moy, Max : 1, 2, 186 ms
Charge coeur 1 (Calcul + Wifi) Min, Moy, Max : 0, 0, 477 ms
Espace mémoire EEPROM utilisé : 42 %
Nombre d’interruptions en 15ms du Gradateur
(signal Zc) : Filtrés/Brutes 2/2
Synchronisation 10ms au Secteur ou asynchrone horloge ESP32 Secteur
Messages
05/04/2024 14:11:50 : EnTetes EDF reçues
05/04/2024 14:11:50 : 2024-04-05 : {« couleurJourJ »: »TEMPO_BLEU », »couleurJourJ1″: »TEMPO_BLEU »}
05/04/2024 14:11:50 : Attente Linky 4000 boucles = 8s
05/04/2024 14:11:50 : Attente Linky 4000 boucles = 8s
Du fait qu’il m’affiche couleur Tempo j’en déduit qu’il reçoit bien des données du TIC.
Sur la page « Accueil » tout est à zéro.
Je suis en CACSI, mode standard, Source Linky.
Une idée d’où pourrait venir mon pb?
Merci d’avance.
PS:
[Via les paramétres j’ai fait une simulation mode « UxI » et là j’ai des infos, et je réussis à démarrer mon ampoule, elle reste allumée tout le temps de mon planning »ON » et non lors de l’injection. Elle s’éteint quand je suis en dehors de plages « ON ». Mais je suppose que c’est parceque je ne suis pas config UxI, mais Linky.]
Le Tempo arrive par Internet. Par contre votre ESP32 ne reçoit rien du Linky. Revoyez le câblage ou baisser la résistance R1 à 1200 ou 1000 ohm, suivant la longueur du câble vers le Linky.
Cdlt
Bonjour si j’utilise 2 ESP32 il faut que je fasse toute cette procédure pour chaque ESP32 ou bien elle est différente ?
C’est le même logiciel à installer pour chacun.
Cdlt
et pour la configuration je me connecte auquel ?
Bonjour,
Je me pose la même question. comment faire communiquer les 2 ESP? Ou configurer les IP des 2 ESP?
Merci
Tout se fait dans la page paramètres. On peut choisir l’IP et donner l’IP du maître pour s’y connecter.
Cdlt
Vous conectez à chacun, pour le paramétrer.
Bonjour,
Pour info la librairie RmoteDebug n’est plus maintenue. Un développeur a fait un fork https://github.com/karol-brejna-i/RemoteDebug qui est référencé dans Arduino IDE comme RmoteDebug2. Ça corrige le bug hwcrypto/sha.h (qui est obsolète).
La compilation passe. J’en suis là.
Si certain ont un hardware en place et veulent tester c’est cool.
Bonjour,
Tout d’abord merci infiniment pour le partage de vos connaissances et de vos compétences.
Je viens de réaliser votre routeur couplé à un shelly EM / homeassistant et je me posais 2 questions auxquelles je n’ai pas trouvé de réponses sur votre site (ou bien j’ai mal cherché) :
– Est il possible d’avoir un retour par MQTT de l’energie routée vers le chauffe eau et la valeur instantanée de l’ouverture du triac.
– Est il possible d’activer/ désactiver le routeur à partir de Homme assistant par MQTT ?
Merci beaucoup !
Via MQTT, vous avez l’ouverture du Triac. Action 0, si ma mémoire est bonne.
On ne peut pas çà ce jour activer/désactiver le routeur par MQTT.
Cdlt
Ok merci !
En effet je n’avais pas mis le triac sous tension -> pas d’infos MQTT. Elle ees donnée dans le sujet « ouverture triac ».
Pour l’obtention de l’énergie routée, ou tout du moins son estimation, je pensais faire E =somme( Pcharge x ouverture triac x durée d’intégration). A voir si ca marche…
Si un jour vous avez le temps de programmer un arrêt/marche du triac via MQTT ça serait top, j’ai essayé de me pencher sur le code, mais j’ai un peu peur de trop le modifier et faire une boulette.
Merci encore !
La formule E =somme( Pcharge x ouverture triac x durée d’intégration). est bonne pour du multi-sinus mais pas de la découpe de sinus Dans le cas du Triac , on ouvre une sinusoide et suivant l’endroit où l’on se trouve sur la courbe, il faut intégrer le sinus carré de l’energie.
Cdlt
Bonjour,
Il y a un bug. d’où viens le problème.
Quel est votre avis?
Voici la ligne de code:
fatal error: RemoteDebug.h: No such file or directory
#include //Debug via Wifi
^~~~~~~~~~~~~~~
compilation terminated.
exit status 1
Compilation error: RemoteDebug.h: No such file or directory
Installez la bibliothèque comme expliqué sur la page.
Bonjour André,
j’ai commencé à travaillé sur un repo gentiment.
https://github.com/quazardous/SolarRouterRMS
J’ai validé/documenté des installations type sur Linux et Windows en utilisant Arduino Cli (tout en restant 100% compatible Arduino IDE 2.0).
L’idée derrière Arduino Cli est de pouvoir utiliser un Makefile pour automatiser l’utilisation d’outils satellites.
Dans cette optique j’ai par exemple sorti le code html et js dans des fichiers suffixés .html et .js (ce qui permet d’utiliser un IDE adapté directement et me semble plus confortable à maintenir). Un script de précompilation transforme automatiquement les fichiers .html et .js en code C++ pour la pile Arduino.
Je suis très motivé pour travailler sur le code et si vous vouliez collaborer directement sur le repo ça serait super.
J’ai commencé à identifier des axes de refactor / amélioration en me basant sur ce guide https://projecthub.arduino.cc/LuckyResistor/guide-to-modular-firmware-99575b (je parle pas de fonctionnalité mais de maintenabilité du code et de confort de travail). Si vous avez des pistes de choses qui sont plus particulièrement délicates à maintenir.
J’ai commencé à regardé aussi pour compiler le firmware dans le cloud.
Encore une fois ma démarche est vraiment dans le sens de réduire l’effort de maintenance sur le code.
PS: c’est ouvert à tous
Bonne journée,
David
Désolé, mais pour l’instant, je ne suis pas favorable sur l’utilisation d’un tel repo. Cela est séduisant pour des informaticiens, mais devient un cauchemar pour les autres. Le routeur s’adresse à des gens qui parfois n’ont aucune notion d’informatique. Tout cela, c’est du chinois. Il faut que je reste le plus simple afin d’être compréhensible par tous. Déjà la compilation, le téléchargement, c’est complexe et suscite de nombreuses questions.
Cdlt
J’ai sans doute mal expliqué. Le repo n’a pas vocation à s’adresser aux utilisateurs qui souhaitent juste utiliser le firmware. Pour eux la procédure peut être strictement la même (téléchargement du zip etc).
Le repo est pour les développeurs uniquement (vous et tous ceux qui voudraient faire évoluer le code). Dans un autre post vous évoquez par exemple le grossissement (problématique) du firmware au fur et à mesure des évolutions. C’est un point qui peut être gérer en ajoutant du code conditionnel (par exemple pas besoin d’avoir tout le code pour tous les types de sources de mesure si on utilise qu’une seule source).
J’espère que j’arrive à me faire comprendre 🙂
cdlt,
David
Utiliser un repo pour un développeur c’est l’inverse d’être compliqué en fait (même si on travaille seul) : ça simplifie beaucoup de choses notamment la recherche de bug.
https://code-garage.fr/blog/pourquoi-utiliser-git-quand-on-travaille-seul/
(un article très court)
Bonjour David,
perso, je trouve ta démarche hyper intéressante mais comme le dis si justement André, on va perdre pas mal de monde en chemin par rapport aux packages livrés par André et qui se compilent quasiment tout seul … Par exemple , en ce qui concerne le code Html et JS regroupé , comment s’effectue la précompilation en C++ pour la pile Arduino , pas trouvé les infos et donc impossible à téléverser tel que .. . J’ai des messages d’erreur dans tous les sens !
Si la démarche peut simplifier globalement le téléversement et faciliter les évols à venir pourquoi pas de mon point de vue mais je pense qu’il y a encore un delta important pour de nombreuses personnes ne maitrisant pas ni github ni arduino …. et qui ne souhaite pas forcément le maitriser d’ailleurs …
A te lire Bien cordialement Gilles
Le repo ne remplace pas le site ni le support du site (je répond également sur les inquiétudes d’André).
C’est un outil pour créer du code de meilleur qualité et donc plus robuste dans le temps. ça ne change strictement rien pour des utilisateurs qui ne veulent qu’utiliser le firmware (100% compatible avec les explications existantes donnés par André ici). Le repo ne s’adresse qu’au personnes qui voudraient faire évoluer le code pour ajouter des choses dedans.
Pour répondre sur les pages, l’outil génère du code C++ tout à fait classique qui est gardé dans le repo (https://github.com/quazardous/SolarRouterRMS/tree/main/src/pages) . C’est juste la façon de le maintenir qui change (il faut modifier les pages html et js).
Ok bien compris la démarche.
j’ai tenté de récupérer un zip pour le tester . j’ai recompilé la partie pages html et Js (via une commande Python) mais au téléversement j’ai encore une multitude d’erreurs . Peut on avoir le mode opératoire complet entre le dépot github et la génération du zip final à télécharger sans erreurs ?
(PS : pour ceux qui font un peu de dev sans maitriser à fond cette partie de gestion de code)
Cdlt Gilles
Cool merci d’avoir testé, merci pour le retour
j’ai ouvert un issue pour gérer ça
https://github.com/quazardous/SolarRouterRMS/issues/4
J’ai retesté la compilation.
Chez moi j’ai pas d’erreur (mais mon poste principal est sous linux, je testerais tout à l’heure sous Windows)
Pas la peine de recompiler les pages car le code C++ généré est dans le zip (sauf si on fait une modification dans les le html ou le js)
Si on télécharge le zip de github bien penser à renommer le dossier SolarRouterRMS.
Tu es sur quel OS ? Tu utilises Arduino IDE 2.0 ou bien tu as testé avec le make (pas du tout obligatoire) ?
le mieux c’est que ça reste dans une seule main !!
sinon chacun va y aller de son petit « bricolage » et au final ça va devenir un « merdier »
Le kernel linux, ce gros « merdier » de plus de 11 millions de lignes et qui gère quasiment tous les serveurs web de la planète, est maintenu par 5000 développeurs qui collaborent tous avec git. Fait intéressant, la papa du Kernel Linux est aussi le papa de git (petite minute culture gé).
Bonjour,
j’ai poussé une nouvelle branche https://github.com/quazardous/SolarRouterRMS/tree/refactor-modules
C’est un fork à fonctionnalités iso de la 8.06 (non testé, compilation OK).
J’ai ajouté des namespaces/fichiers séparés pour cloisonner le code en modules et passé tous les fichiers en .cpp pour pouvoir utiliser toute la puissance de VSCode.
Le découpage en modules/namespace s’accompagne d’un début d’API interne (setup(), loop(), gauge(), http handlers, etc que chaque module doit présenter).
Les namespaces permettent à chaque module d’être responsables de ses données (variables). L’accès se fait à travers des setters/getters. ça permet à chaque module de présenter une interface « simple » pour les autres modules et garder la tambouille interne « cachée ».
Du coup ça permet aussi de faire des modules sans forcément comprendre le reste (même si le niveau de dépendance est encore très élevé).
J’ai validé aussi la « précompilation » du HTML/JS qui rend plus confortable l’édition du HTML et du JS directement dans un éditeur natif (ce qui aide au codage).
La suite est de réduire la taille du firmware…
Plusieurs pistes:
– basculer sur un server API REST pour la communication avec le firmware et la partie interface humaine pourrait basculer sur une page complètement froide qui pourrait être juste copiée sur son PC (au lieu de prendre de la place dans le firmware).
– utiliser des defines au moment de la compilation pour complètement supprimer certains modules (si on a pas enphase on a pas besoin du code enphase).
– utiliser un fichier configuration
Pour les développeurs, n’hésitez pas à venir triturer le code sur le github (en faisant un fork), plus il sera lu, refait, documenté plus il sera robuste…
Petit UP,
le refactor se poursuit,
Voici certain objectifs en cours:
Ce refactor vise à ajouter des niveaux d’abstraction et à être convivial pour les développeurs. Voici quelques avantages :
– Bootless: le RMS n’a plus a rebooter pour prendre en compte les modifs
– Séparation de la mise à jour de la config de la sauvegarde (EEPROM) de la config
– l’ajout d’un nouveau paramètre de configuration devrait se faire sans effort (il suffit de le décrire/déclarer et il sera géré dans l’interface utilisateur et l’EEPROM)
– chaque module doit être responsable de ses propres éléments. Vous n’avez pas besoin de comprendre leur fonctionnement pour ajouter votre propre module.
– L’API interne (événements et fonctions) prendra en charge l’interaction entre les modules
– Certains modules peuvent être optionnels (le plugin peut être supprimé du firmware avec #define)
– Centrée sur l’API : le RMS est entièrement gérable par API et la nouvelle interface utilisateur d’administration est entièrement sans tête et peut être exécutée à partir de l’hôte de développement (mode offshore). Vous n’êtes pas obligé de compiler à chaque fois que vous modifiez un CSS :p
https://github.com/quazardous/SolarRouterRMS/blob/refactor-modules/README.md#refactor
https://github.com/quazardous/SolarRouterRMS/blob/refactor-modules/CHANGELOG.md
Je suis sous Windows , arduino IDE 2.2.2.1 et je viens de refaire un tests téléchargement , renommage dossier puis téléversement OTA.
C’est Ok maintenant, tout fonctionne pour moi !
Ok super bonne nouvelle merci d’avoir testé :p (j’avais pas fait de C++ depuis… 25 ans lol c’est comme le vélo on dirait)
Bonjour André,
J’ai construis un nouveau routeur afin de passer de la version Linky V3.11 (qui fonctionnait très bien) à la V8.06 en UxI.
Mon ESP32 n’arrive pas à récupérer et afficher l’heure, je n’arrive pas à comprendre.
Peut être ai-je oublié quelque chose? Auriez-vous une piste afin de m’aider?
Merci
Christian
Je suppose que vous êtes en IP fixe et que vous n’avez pas rentré le bon gateway et DNS. Essayez temporairement en mode DHCP. L’ESP32 n’arrive pas à trouver le chemin vers internet pour trouver l’heure.
Cdlt
Ok, merci André je regarde ça.
Cdt
Christian
Bonjour André,
merci d’abord pour tout ce boulot et ce partage d’information 🙂
J’ai actuellement une installation en triphasé, autant sur l’arrivée, le chauffe eau et les panneaux solaires que j’ai répartis sur les trois phases.
Pour le pilotage du chauffe eau, je vais m’orienter vers trois SSR en parallèle en multi-sinus, et je monitore déjà mon triphasé avec un JSY-MK-333 qui fonctionne très bien sur un ESP32/ESPHome.
Je n’ai pas encore regardé dans les sources de votre routeur, mais je crains que mon JSY-MK-333 ne soit pas supporté, ou d’ailleurs que les automatismes internes supportent trois phases.
Si je ne me trompe pas, comment faire dans mon cas ?
Merci bien 🙂
La version V8.07 du routeur sur laquelle je travaille actuellement aura le JSY-MK-333 grâce au développement de Pierre F, mode appelé UxIx3. D’ici quelques jour elle sera en ligne. Surveillez la publication.
Cdlt
Super !
Merci bien.
La version V8.07 avec le JSY-MK-333 pour du triphasé est disponible.
https://f1atb.fr/fr/routeur-photovoltaique-realisation-logicielle/
Cdlt
Bonjour André,
Concernant la connexion wifi, en cas de changement de box ou de routeur, y a t’il une manière simple pour remplacer les identifiants de connexion avec la V8?
Je n’arrive plus à visualiser mon ESP32 en wifi en rechargeant le programme. Faut-il reseter complètement l’ESP?
Merci
Cdt
Si l’ESP32 n’arrive pas à se connecter, il passe en mode AP. Il emet son propre WIFI qui s’appelle ESP… Vous vous connectez à lui à l’adresse 192.168.4.1
Cdlt