Pilotage d’un micro-réseau électrique avec un raspberry pi


Dans mon précédent article j’expliquais comment mettre en place, dans les grandes lignes, la supervision d’un micro réseau électrique avec un raspberry pi. Ou autrement dit, comment exporter les données produites par l’onduleur.

Depuis, j’ai mis la main sur un chauffe-eau électrique et eu l’idée de le piloter intelligemment en fonction des données fourni par l’onduleur. L’idée est de faire tourner le chauffe-eau lorsque j’ai suffisamment d’énergie emmagasiné dans la batterie et encore suffisamment d’énergie produite par les panneaux solaires pour couvrir une partie de la consommation du chauffe-eau. Pour cela il m’a fallu installer le chauffe-eau et une prise de courant piloté par un petit relais 5Vdc/220AC, commandé par le raspberry pi.

Pour rappel, voici la liste de matériel utilisé ainsi que la référence du relais :

L’installation du chauffe-eau a, dans mon cas, été le plus compliqué. Installé en extérieur d’une petite cabane en bois, il fallait rallonger légèrement le toit pour le protéger des intempéries et lui faire un support sur pieds pour soutenir son poids : le mur en bardage aurait probablement cédé s’il devait supporter le poids du chauffe-eau plein. Pour cela, j’ai glané quelques restes de taille d’arbre pour les pieds, préalablement calciné à la base pour allonger la duré de vie de la parti enterré du pied. Une fois les deux pieds enterré à quelques centimètres de profondeur (environ 20cm), ils ont été uni par une petit planche servant de base au chauffe-eau. Ce support est ensuite maintenu en position par des tasseaux visés au mur afin éviter tout mouvement suite à un choc par exemple. Enfin, on vient poser le chauffe-eau sur le support et le viser au mur pour qu’il ne bouge plus.

Installation du chauffe eau

Place à l’électricité, pour alimenter le chauffe-eau il m’a fallu installé une prise. Le neutre est relié au tableau tandis que la phase est connecté au relais 5V avant de rejoindre le tableau électrique depuis l’autre borne du relais. J’ai ensuite testé le bon fonctionnement de la prise en reliant la commande du relais avec le raspberry-pi en utilisant les petits câbles dupont. Enfin j’ai fait tourné un petit script basique sur le raspberry pi pour tester l’ouverture et la fermeture du relais.

Raspberry Pi alimentant connecté à au relais 5V/230V

Dernière étape, la plus complexe, le programme ! J’ai écris un morceau de code disponible sur ce dépôt git. C’est un daemon qui récupère chaque secondes les données de l’onduleur enregistré dans une base de donnée influxdb local. S’il n’y a pas eu d’échec lors de la récupération des données, une fonction évalue le comportement à adopter en fonction de la tension de la batterie, la puissance solaire en entrée et la puissance soutiré par le réseau électrique. Les données d’entrées, stocké dans influxdb sont produites par l’onduleur et exporté par le petit programme que j’ai nommé influx-writer, décrit dans l’article précédent, présentant le système de manière plus général.

Enfin, les tests, j’ai testé le comportement du réseau électrique et, plus particulièrement, de la batterie en jouant sur les seuils des conditions d’allumage et d’extinction du chauffe-eau. L’outil se configure au moyen d’un fichier de configuration au format json constitué de deux blocs principales : un bloc influx, permettant de configurer la connexion à la base de donnée (adresse, port, login et database). Un bloc heater, permettant de définir les conditions d’extinction du chauffe d’une part et de démarrage d’autre part. Les conditions d’extinction sont réparties en deux catégories :

  • Les conditions d’extinctions « courtes » permettent d’agir sur la valeur de voltage de la batterie et la charge consommé par le réseau électrique. Le voltage est un seuil inférieur (condition atteinte si la valeur devient inférieur au seuil) tandis que la charge est un seuil supérieur (condition atteinte si la valeur devient supérieur au seuil). On peut également agir sur l’intervalle de temps, en secondes, utilisé pour calculer la moyenne des valeurs enregistrés dans la base de donnée : cela évite d’éteindre le chauffe-eau à cause d’un pic d’appel de puissance (démarrage d’un frigo par exemple).
  • Les conditions d’extinctions « longues » fonctionnent sur le même principe. La différence est l’intervalle de temps utilisé pour le calcul de la moyenne des valeurs, définis en minutes, et qu’elle ne seront vérifiées qu’après une certaine durée minimal de fonctionnement du chauffe-eau. Il faut voir les conditions courtes comme l’arrêt « d’urgence » et les conditions longues l’arrêt normal du système.

Pour terminer sur quelque chose de propre, on écrit un service systemd pour lancer les deux outils et le tour est joué !

Edit : Dans un soucis de performance, j’ai récemment remplacé influxdb par VictoriaMetrics. Comme VictoriaMetrics supporte une assez grande variété de languages en ingestion de données, j’ai simplement eu à modifier la partie lecture utilisé ici en modifiant les fonctions de lectures afin qu’elles effectuent les bonnes requêtes http vers la base de données.


Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *