PvMonit 3.0 : Cloud + Programmation surplus d’énergie par Blockly

La version 3.0 de PvMonit vient de sortir ! Au programme service de Cloud et gestion simplifié de la programmation des relais pour gérer le surplus d’énergie via Blobkly.

PvMonit c’est un logiciel libre de monitoring de système électrique solaire autonome qui est capable de gérer le surplus d’énergie solaire. Pour en savoir plus c’est par ici

Un petit tour vidéo des nouvelles fonctionnalités :

Démonstration de l’interface blockly dans PvMonit c’est par ici.

Pour souscrire au service Cloud c’est par ici.

Programmer les ordres (surplus électrique)

La doc écrite est ici : https://framagit.org/kepon/PvMonit/-/blob/master/domo/relay.script.d/README.md et la doc vidéo c’est juste en dessous :

Installation / mise à jour

Pour l’installation de PvMonit le tuto se trouve dans le INSTALL.md du projet : https://framagit.org/kepon/PvMonit/-/blob/master/INSTALL.md

Pour les mises à jours, reportez vous au UPGRADE.md : https://framagit.org/kepon/PvMonit/-/blob/master/UPGRADE.md

Si vous n’avez pas les compétences (ou pour soutenir le projet) je propose le service d’installation sur mesure « clef en main » ou le téléchargement d’une image pour la carte SD prêt à l’emploi.

Vous pouvez soutenir le projet par ici.

PvMonit – Boîtier impression 3D

Un utilisateur de PvMonit (logiciel libre de monitoring photovoltaïque autonome et de gestion du surplus solaire) ayant pour alias Akoirium, à contribué à PvMonit en proposant des boîtier imprimable en 3D. Voilà ce que ça donne avant et après :

Pour le TM1638 (circuit de gauche)

Le circuit TM1638 est utilisé pour la gestion de la domotique (optimisation surplus solaire), il existait déjà des modèles de boîtier, Akoirium s’en ai donc inspiré :

  • https://www.thingiverse.com/thing:3578683
  • Un autre modèle : https://www.thingiverse.com/thing:2794902

Voici les fichiers sources sous licence GPL

Pour l’Adafruit 16×2 Character LCD

Pour l’adafruit 16×2, utilisé pour lire les informations de l’installation solaire, Là Akoirium c’est aussi inspiré de projet existant sur thingiverse. C’est pas parfait (il faut gratouillé un peu quand certaine soudures sont trop épaisses), mais c’est franchement pas mal. De mon côté il m’avait envoyé les boutons mais je les ai perdu donc j’ai coupé des visses de 2×20 pour faire les boutons n’ayant pas d’imprimante 3D, ça fait le taf 🙂

Voici les fichiers sources sous licence GPL

Merci encore à Akoirium pour cette contribution !

PvMonit v2.0 + Domotique : Gestion surplus électrique solaire en autonomie

Ou comment utiliser le surplus d’une installation solaire autonome

Dans le cas d’une installation solaire autonome (non raccordée au réseau EDF), une fois que les batteries sont rechargées (ce qui se produit aux alentours de 11h-12h pour moi 80% du temps), il y a de l’énergie potentielle de perdue. Plus précisément, si je n’utilise pas cette énergie au moment où il y a du soleil (de la production), cette énergie n’est pas utilisée. On peut augmenter le stockage mais c’est infini, coûteux en argent et en ressource environnementale. Voilà un graphique pour illustrer ce propos :

Courbe production solaire estivale en situation d’autonomie électrique avec des panneaux photovoltaïques

Du coup, il m’a semblé pertinent de réfléchir à un moyen d’automatiser certaines tâches qui me permettent d’utiliser ce surplus d’électricité quand il est là. Actuellement, je le fais de façon tout à fait manuelle : quand les batteries sont pleines et qu’il y a du soleil, je lance une machine à laver, je lance la pompe de relevage de la phyto, je recharge mes batteries d’outils portatifs…. Cette automatisation va aussi me permettre d’aller plus loin & d’envisager d’installer un petit chauffe-eau électrique de camion (~10L) ou autres…

Grâce à PvMonit, j’avais déjà une remontée d’informations sur l’état de l’installation solaire, des batteries, de la production qui m’arrivait sur un Raspberry PI. Il ne me restait plus qu’à « piloter des prises électriques » en fonction de l’état de l’installation solaire et des conditions que je donne au programme.

Soutenir / Commander

Si vous voulez soutenir le projet ou que vous n’avez pas suffisamment de compétences pour faire tout ça, je peux tout vous préparer à la maison, il n’y aura plus qu’à brancher… C’est à prix libre et c’est sur mesure selon vos compétences/besoins, on en parle ? : https://david.mercereau.info/pvmonit/#shop

Le projet, en vidéo

Le projet, en image

Voilà de quoi est composé le tout :

  • Le raspberry pi (zéro ça suffit) sur lequel est installé PvMonit (expliqué ici) : compter entre 110 et 200€ de matériel
  • Carte module 8 relais 8,99€
  • TM1638 Afficheur 8 chiffres 7 segments, 8 LEDs, 8 boutons (option) 5,49€

Si vous n’aimez pas les vidéos je vous mets des z’images :

Installation

Pour l’installation, vous pouvez vous reporter au dépôt du code source PvMonit, dossier « domo » : https://framagit.org/kepon/PvMonit/blob/master/domo/

Si vous avez des questions / bugs, c’est par ici : https://framagit.org/kepon/PvMonit/issues

PvMonit Domotique v1 béta

Note : c’est une version béta car j’ai pas mal de BUG avec le tm1638, du coup je vais changer mon fusil d’épaule pour la version 2, donc cet article c’est « pour la mémoire », « pour la gloire », mais pas pour la vrai vie…

Ou comment utilisé le surplus d’une installation solaire autonome

Dans le cas d’une installation solaire autonome (non raccordé au réseau EDF), une fois que les batteries sont rechargé (ce qui se produit au alentour de 11h-12h pour moi 80% du temps) il y a de l’énergie potentiel de perdu. Plus précisément si je n’utilise pas cette énergie au moment ou il y a du soleil (de la production) cette énergie n’est pas utilisé. On peut augmenter le stockage mais c’est infini, coûteux en argent en ressource environnementale.

Du coup m’a semblé pertinent de réfléchir à un moyen d’automatisé certaine tâche qui me permette d’utilisé ce surplus d’électricité quand il est là. Actuellement je le fait de façon tout à fait manuel : quand les batteries sont pleine et qu’il y a du soleil, je lance une machin à laver, je lance la pompe de relevage de la phyto, je recharge mes batterie d’outil portatif…. Cette automatisation va aussi me permettre d’aller plus loin & d’envisagé d’installé un petit chauffe eau électrique de camion (~10L) ou autres…

Grâce à PvMonit j’avais déjà une remonté d’information sur l’état du système solaire, des batteries, de la production qui m’arrivait sur un Raspbery PI. il ne me restait plus qu’a « piloter des prises électrique » en fonction de l’état du système solaire et de conditions que je donne au programme.

Le cahier des charges c’était :

  • De pouvoir piloter ce que je veux, mon choix c’est donc porté vers un système de contrôle de relais (en gros des interrupteur contrôlé de façon électronique)
  • Que le système consomme très peu. C’est réussi le système consomme ~0,153W (tout les relais d’éteint), 0,4W avec 1 relais d’allumé (hors PvMonit…)
  • Que je puisse passé certain appareil en « marche forcé » ou en « stop forcé »
  • Que le système soit résilient, qu’il puisse encore fonctionné sans l’apport d’information du raspbery pi en cas de panne

Voilà de quoi est composé le tout :

  • Le raspbery pi (zéro ça suffit) sur lequel est installé PvMonit (expliqué ici)
  • Un arduino UNO qui reçois de potentiel ordre du Raspbery PI avec le protocole i2c. (6€)
  • Un afficheur 8 chiffres + 8 leds + 8 boutons (tm1638) nous permet d’interagire avec le système (forcé l’alumage, interdir l’allumage…) (~6€)
  • Une plaque de 8 relais (mais vous pouvez envisagez en avoir autant que vous voulez… ça correspond à mon besoin…) qui allume tel ou tel appareil pour (9€)

ça nous fait un projet à ~25€ (hors PvMonit) si on considère les fils de prototypage, le câble usb pour l’arduino…

Actuellement je m’en sert pour :

  • Allumer ma box et mon téléphone fixe quand les batteries sont presque pleines (quand le régulateur passe en ABS)
    • Éteindre le téléphone après 19h
    • Éteindre la box après 19h SI plus aucun PC n’est allumé (scan réseau IP)
  • Démarrer la pompe de relevage de la phytoépuration quand les batteries sont pleines
  • Recharger mes batteries d’outils électroportatifs quand la pompe de relevage c’est allumé puis c’est éteinte
  • Démarrer un disque dur externe et ma box pour sauvegarder un serveur en ligne si les batteries ne sont pas trop basses

Et dans le futur :

  • Recharger un vélo électrique l’été
  • Démarrer un petit chauffe eau
  • ?

Le champs des possibles :

  • Allumer un groupe électrogène automatiquement par contacteur si les batteries passe sous un certain seuil
  • Remplir un surpresseur
  • Remonter de l’eau d’un puits
  • Lancer une production d’hydrogène ? …
  • …All is possible …

A l’heure actuelle mes relais sont majoritairement connecté sur un bandeau de prise, ça me permet d’être résiliant. En cas de pépin, si ça marche pas/plus, je peux repassé en mode manuel et débrancher/brancher les prises facilement.

Prés-requis :

  • PvMonit installé et fonctionnel
  • Un BMV de chez Victron de connecté sur PvMonit c’est le mieux, sinon un MPPT de chez Victron toujours (seul constructeur supporté par PvMonit à l’heure actuel)
  • En matériel :
  • Compétence : programmation python (a l’heure actuelle aucune interface graphique n’est à disposition pour organiser les ordre au relais, c’est envisagé pour le futur…)

Pour l’installation, rendez-vous sur la page du projet, dossier « domo » : https://github.com/kepon85/PvMonit/tree/master/domo

PvMonit v1.0 : Monitoring de mon installation photovoltaïque autonome

PvMonit est arrivé à une version « mature », une version 1.0. PvMonit est un logiciel sous licence Beerware qui vous permet de monitorer votre installation électrique solaire autonome, plus particulièrement avec les appareils Victron.

Nouvelle version pvmonit dispo ici. Avec une « sur-couche » à PvMonit pour gérer le surplus d’électricité : Déclencher des actions à la demande. Exemple : les batteries sont pleines, on allume une pompe à eau puis la résistance électrique d’un chauffe eau. Ou encore, les batteries sont sous un seuil critique, on coupe tout sauf l’éclairage…. toutes les applications sont possibles !

PvMonit C’est quoi ?

PvMonit, c’est donc un petit logiciel de monitoring photovoltaïque pour matériel Victron compatible Ve.direct (le minimum pour que cela fonctionne est d’avoir un BMV 600, 700 ou 702…), particulièrement adapté pour les installations autonomes (hors réseau). Il permet une vue « en direct » par interface web et un enregistrement de l’historique (avec emoncms, branche d’OpenEnergyMonitor).

Mon usage

Je collecte les information de mon système photovoltaïque (température, état des batteries, production solaire, etc…) par une carte électronique (Arduino) qui se trouve dans un local à 35m de mon habitation. Je transporte ces données par un 3 fils dans un câble réseau. Celui-ci est connecté à un mini ordinateur (raspberry pi 0) sur lequel j’ai un écran LCD qui m’affiche l’état du système et j’ai un interface web (démo) ou j’ai plus de détails. Il y a aussi un historique qui est enregistré via emoncms (démo).

Au niveau Matériel

2 versions possibles :

  • Une version Raspberry PI 3B, si vous avez un point wifi actif (même occasionnellement) et que votre matériel solaire est à porté de wifi. C’est une solution plutôt simple (si on touche un peu sous linux).
  • Une version Raspberry Pi 0 + Arduino : plus complexe à mettre en œuvre (il faut savoir souder et avoir plus de connaissances), mais beaucoup plus souple et moins chère. Particulièrement adapté si votre installation réseau est loin (max 60m) de votre maison ;
Version Raspberry PI 3BVersion Arduino + Raspberry Pi 0
Consommation électrique0,37A (pi 3b) * 5V = ~1,85W0,22A (pi 0) + 0,08A (arduino MEGA) = 0,30A * 5V = ~1,5W
Difficulté********
Prix matériel (détails)200 €110 €

Raspberry Pi 3B & Ve.direct USB (officiel)

L’usage des câbles ve.direct USB officiel permet de simplifier le montage.

Arduino + Raspbery Pi 0

L’usage d’un arduino pour collecter les données donne de la souplesse pour pouvoir ajouter des sondes à volonté et permet de parcourir de grande distance jusqu’au Raspberry PI qui récupère les informations. Un schéma de câblage détaillé :

Le schéma de câblage détaillé

Voilà ce que ça donne, c’est plus de boulot, plus de soudure mais plus DIY, plus fun :-p

Installation

Il ne faut pas se mentir, ça demande de bonnes connaissances techniques en linux/réseau voir arduino/soudure (si vous choisissiez cette option).

J’ai fais un très long tuto d’installation dans le fichier INSTALL.md du dépôt git : https://framagit.org/kepon/PvMonit/blob/master/INSTALL.md

PvMonit – Monitoring de mon installation photovoltaïque autonome

Nouvel article avec nouvelle version de PvMonit ici même + gestion du surplus électrique

Cet article fait suite à la réalisation de mon installation électrique solaire autonome. Je suis très content de celle-ci, seulement j’ai un grand besoin de maîtrise, et ne pas savoir tout ce qui se passait dans ces petites boîtes bleues me taraudait… Il fallait que je monitor. Coup de chance, les appareils Victron que j’ai installés peuvent se connecter à un ordinateur avec les câbles VE Direct USB.

En bon libriste que je suis, j’ai vite découvert OpenEnergyMonitor project. J’ai failli craquer pour un emonPi – Solar PV mais ça ne correspondait pas complètement à mes contraintes. J’ai donc pris mes petits doigts et j’ai pondu PvMonit.

PvMonit C’est quoi ?

PvMonit c’est donc un petit logiciel de monitoring photovoltaïque pour matériel Victron compatible Ve.direct (USB), particulièrement adapté pour les installations autonomes. Il permet une vue « en direct » et un export de l’historique vers emoncms (une branche d’OpenEnergyMonitor project).

Exemple d’usage de PvMonit (le mien) : je dispose d’un RaspberryPi (mini ordinateur qui ne consomme que ~3W), mes appareils Victron (MPTT, BMV) sont connectés avec des câbles VE.Direct USB. PvMonit est installé sur ce RaspberryPi et me permet :

  • D’afficher les informations en temps réel sur une page web (local)
    • Une copie de cette page est faite toutes les heures (si la connexion internet est allumée) et est accessible ici : http://demo.zici.fr/PvMonit/
  • De collecter les données toutes les X minutes et les expédier vers emoncms quand internet est là (le wifi n’étant pas toujours allumé)

Des images :

Installation de PvMonit

Le matériel

Il vous faudra pour suivre ce tuto :

  • Un ordinateur faible consommation configuré sous Debian ou un dérivé type Ubuntu/Raspbian (j’ai fait un article sur l’installation de mon Raspberry PI) 68€ (d’occasion avec coque, ventilateur, carte SD)
  • Les câbles Ve.Direct USB connectés à vos appareils 30€ (x3 car 3 appareils à connecter)
  • En option :
    • Une sonde de température USB pour contrôler la température du local où vivent les batteries. J’utilise « thermomètre USB TEMPer » qui coûte entre 5 et 20€, (ils en parlent ici)
    • Une pince ampèremètre USB pour contrôler la consommation de l’habitat. J’utilise la Aviosys 8870 à 27€ quand même, mais il ne semble pas y avoir beaucoup de concurrence pour ce type de produit… (j’en parle ici)

Voici le schéma de mon installation avec le câblage pour PvMonit incorporé :

pvmonit-cablage

Et voilà dans la vraie vie :

Le logiciel : Installation de PvMonit

Requis

  • Linux (le tutoriel ci-dessous est prévu pour Debian/Rasbian/Ubuntu like)
  • PHP (5.6 minimum)
  • Lighttpd/Apache (ou autre serveur web)
  • Perl
  • Python

Installation

PvMonit dispose de deux fonctions dissociées et indépendantes que je vais distinguer :

  • Interface en temps réel
  • Export vers emoncms

Il y a bien sûr une base commune :

La base / le socle

Installation de PvMonit via le dépôt git et de ses dépendances :

aptitude install php-cli git python-serial sudo
cd /opt
git clone https://github.com/kepon85/PvMonit.git
cp config-default.php config.php

Vous pouvez maintenant éditer le fichier config.php à votre guise !

Test du script vedirect.py : branchez un appareil Victron avec un Câble Ve.Direct USB et voici un exemple de ce que vous devriez obtenir (Ici un MPTT BlueSolare branché sur le ttyUS0)

$ /opt/PvMonit/bin/vedirect.py /dev/ttyUSB0 
PID:0xA04A
FW:119
SER#:HQ********
V:25660
I:500
VPV:53270
PPV:14
CS:3
ERR:0
LOAD:ON
H19:3348
H20:1
H21:17
H22:33
H23:167
HSDS:52

Pour comprendre chaque valeur, téléchargez la documentation Victron VE Direct Protocol documentation : https://www.victronenergy.fr/support-and-downloads/whitepapers

Interface web en temps réel

Installation des dépendances :

aptitude install lighttpd php-cgi 
lighttpd-enable-mod fastcgi
lighttpd-enable-mod fastcgi-php

Configuration du serveur http, avec le fichier /etc/lighttpd/lighttpd.conf :

server.document-root        = "/opt/PvMonit/www"
server.pid-file             = "/var/run/lighttpd.pid"
server.username             = "www-data"
server.groupname            = "www-data"
server.port                 = 80
index-file.names            = ( "index.html", "index.php")
url.access-deny             = ( "~", ".inc" )
include_shell "/usr/share/lighttpd/use-ipv6.pl " + server.port
include_shell "/usr/share/lighttpd/create-mime.assign.pl"
include_shell "/usr/share/lighttpd/include-conf-enabled.pl"

On applique la configuration :

service lighttpd restart

On ajoute ensuite la possibilité à l’utilisateur exécutant lighttpd de lancer les script avec sudo sans mot de passe :

Lancer la commande :

visudo

Ajouter la ligne suivante :

+ www-data ALL=(ALL) NOPASSWD: /usr/bin/perl /opt/PvMonit/bin/ampermetre.pl, /opt/temperv14/temperv14 -c, /usr/bin/python /opt/PvMonit/bin/vedirect.py /dev/tty*

C’est terminé, vous pouvez vous connecter sur votre IP local pour joindre votre serveur web :

Export vers emoncms

Connectez-vous à votre interface emoncms hébergée ou créez un compte sur emoncms.org et rendez-vous sur la page « Input api » https://emoncms.org/input/api :

emoncms_api

Récupérez la valeur « Accès en écriture » et ajoutez-la dans le fichier de configuration Pvmonit /opt/PvMonit/config.php :

- $EMONCMS_URL_INPUT_JSON_POST='https://emoncms.chezvous.org/input/post.json';
- $EMONCMS_API_KEY='XXXXXXXXXXXXXXXXXXXXXXXX';
+ $EMONCMS_URL_INPUT_JSON_POST='https://emoncms.org/input/post.json';
+ $EMONCMS_API_KEY='????VOTRE API KEY?????';

Création d’un utilisateur dédié avec pouvoir restreint

adduser --shell /bin/bash pvmonit

Installation des dépendances :

aptitude install lynx

On ajoute ensuite la possibilité à l’utilisateur exécutant l’export de lancer les scripts avec sudo sans mot de passe :

Lancer la commande :

visudo

Ajouter la ligne suivante :

+ pvmonit ALL=(ALL) NOPASSWD: /opt/temperv14/temperv14 -c, /usr/bin/perl /opt/PvMonit/bin/ampermetre.pl, /usr/bin/python /opt/PvMonit/bin/vedirect.py /dev/tty*

Test de collecte :

$ su - pvmonit -c /opt/PvMonit/getForEmoncms.php
2016-11-02T10:55:30+01:00 - C'est un MPTT, modèle "BlueSolar MPPT 100/30 rev2" du nom de MpttBleu
2016-11-02T10:55:30+01:00 - Les données sont formatées comme ceci : V:26180,I:800,VPV:56360,PPV:21,CS:3,ERR:0,H19:3352,H20:5,H21:51,H22:33,H23:167
2016-11-02T10:55:31+01:00 - C'est un MPTT, modèle "BlueSolar MPPT 100/30 rev2" du nom de MpttBlanc
2016-11-02T10:55:31+01:00 - Les données sont formatées comme ceci : V:26200,I:600,VPV:53630,PPV:18,CS:3,ERR:0,H19:1267,H20:4,H21:46,H22:17,H23:201
2016-11-02T10:55:31+01:00 - Après correction, la température est de 11.88°C
2016-11-02T10:55:31+01:00 - Tentative 1 de récupération de consommation
2016-11-02T10:55:32+01:00 - Trouvé à la tentative 1 : la La consommation trouvé est 00.1A
2016-11-02T10:55:32+01:00 - La consommation est de 00.1A soit 23W

Test d’envoi des données :

$ su - pvmonit -c /opt/PvMonit/sendToEmoncms.php 
2016-11-02T10:56:44+01:00 - Données correctements envoyées : 1, données en erreurs : 0

Mettre les scripts en tâche planifiée

crontab -e -u pvmonit

Ajouter :

+# Script de récupération des données, toutes les 5 minutes
+/5 * * * * /usr/bin/php /opt/PvMonit/getForEmoncms.php >> /tmp/PvMonit.getForEmoncms.log
+# Script d'envoi des données, ici toutes les 1/2 heures
+3,33 * * * * /usr/bin/php /opt/PvMonit/sendToEmoncms.php >> /tmp/PvMonit.sendToEmoncms.log

Je n’explique pas ici comment configurer emoncms, les flux pour obtenir de beaux dashboard, je vous laisse lire la documentation

Voici, pour exemple, mon dashboard : http://emoncms.mercereau.info/dashboard/view?id=1

Sonde température (option)

J’utilise la sonde thermomètre USB TEMPer, cette sonde fonctionne avec le logiciel temperv14 qui est plutôt simple à installer

apt-get install libusb-dev libusb-1.0-0-dev unzip
cd /opt
wget http://dev-random.net/wp-content/uploads/2013/08/temperv14.zip
#ou un miroir
#wget http://www.generation-linux.fr/public/juin14/temperv14.zip
unzip temperv14.zip
cd temperv14/
make

Test de la sonde :

$ /opt/temperv14/temperv14 -c
18.50

Ajout de celle-ci dans le fichier /opt/PvMonit/config.php :

- $TEMPERV14_BIN='';
+ $TEMPERV14_BIN='/usr/bin/sudo /opt/temperv14/temperv14';

Autres documentations à propos de cette sonde :

Pince ampèremétrique (option)

J’utilise la pince ampèremétrique USB Aviosys 8870 pour mesurer ma consommation électrique.

Le petit script perl (/opt/PvMonit/bin/ampermetre.pl) est très simple pour lire la pince ampèremétrique, qui sera branchée en USB et apparaîtra dans votre système sur le port /dev/ttyACM0

Celui-ci dépend de la librairie serialport :

aptitde install libdevice-serialport-perl

Test : :

$ /opt/PvMonit/bin/ampermetre.pl 
00.1A

Ajout de celle-ci dans le fichier /opt/PvMonit/config.php :

- $AMPEREMETRE_BIN = '';
+ $AMPEREMETRE_BIN = '/usr/bin/sudo /usr/bin/perl /opt/PvMonit/bin/ampermetre.pl';
Documentation

Voilà voilà, bon courage !