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 ;
L’usage des câbles ve.direct USB officiel permet de simplifier le montage.
Le hub USB avec les câbles Ve.direct sous la multi
Le raspberry tout à gauche
La pince ampèremétrique USB pour la consommation de l’habitat
Schéma de câblage
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
Le schéma de câblage détaillé
Les connecteurs MOLEX en cours de connexion
Le Shield de l’arduino mega en cours de soudure
Test de récupération des données avec Arduino et câble ve.direct DIY
Le câble ve.direct DIY
Sonde de courant
Le tout connecté et fonctionnel
L’écran LCD dans la maison (le Pi est derrière)
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).
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é)
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é :
Et voilà dans la vraie vie :
Le hub USB avec les câbles Ve.direct sous la multi
Le raspberry tout à gauche
La pince ampèremétrique USB pour la consommation de l’habitat
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 :
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)
$ 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…
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 :
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 :
Pour des besoins personnels j’ai codé un petit script en Perl (toujours sous licence beerware) afin de pouvoir scanner un répertoire IMAP avec la puissance de SpamAssassin à distance. ça s’avère très pratique :
Quand on ne maîtrise pas le serveur de messagerie ;
Qu’il n’y a pas d’anti-spam (ou un anti-spam tout pourrit) ;
Que votre serveur est trop « petit » (en terme de ressource) pour accueillir un SpamAssassin ;
Des solutions anti-spam déporté existait ici ou là et même là mais elle ne me satisferaient pas pleinement.. Du coup j’ai pris mes petits doigts et c’est partie…
Commentaire
Petit commentaire sur le code (visible dans ma bébé forge) :
Je n’ai pas trouvé mieux que la base sqlite pour dire « hey toi je t’ai déjà scanner je passe mon chemin » Ma première idée était de créer un flags IMAP personnalisé (genre « SpamChecked ») d’après ce que j’ai lu ça n’est pas permis dans le protocole IMAP standard… c’est moche…
(Une amélioration à penser) Il faudrait pouvoir stocker le mot de passe en crypté.. le hic est qu’il faut que ça soit réversible pour le servir au serveur IMAP (?) là si quelqu’un à des idées je suis preneur…
J’ai mis en place un bébé service pour tester du bon fonctionnement d’un serveur SMTP. En gros vous envoyer un email à ping [arobase] zici [point] fr (en l’occurrence) et vous recevrez en retour un email « pong » avec les entêtes du message reçu par le serveur.
Le mettre en place à la maison
Pré-requis : Perl & un serveur smtp configuré (pour moi c’est Postfix)
Note : Si vous mettez en place ce script n’hésitez pas à m’en faire part. Une petite liste de « ping@dom1.com, ping@dom2.com…. » peut être intéressante…
Xsshfs est une interface graphique pour SSHFS développé par mes soins. Ce dernier sert à monter sur son système de fichier, un autre système de fichier distant, à travers une connexion SSH. L’avantage est de manipuler les données distantes avec n’importe quel gestionnaire de fichier.
Suite à un email d’une personne intéressée par la traduction de Xsshfs en Espagnol j’ai découvert Gettext n’ayant pas trouvé beaucoup de documentation précise je vais faire un petit HelloWorld en Perl Glade (pour l’interface GTK) et Locale::gettext
Le petit bout de programme que nous allons faire dépend de libgtk2-gladexml-perl & de liblocale-gettext-perl
Création des fichier de traduction
Après création du fichier Glade (que vous pouvez télécharger ici : helloworld.glade) il faut s’assurer que tous les champs que l’on souhaite traduire on la balise « translate » à « yes »
Du coup nous allons extraire les données à traduire du fichier glade avec xgettext
$ mkdir po
$ xgettext --sort-output --keyword=translatable -o po/helloworld.pot helloworld.glade
Ouvrez le fichier po/helloworld.pot et compléter avec votre adresse email / nom ect…
Ensuite faites des copies de ce fichier et commencer la traduction (dans notre exemple Anglais -> Français) :
$ cp po/helloworld.pot po/fr.po
$ vi po/fr.po
...
#: helloworld.glade:20
msgid "Hello World"
msgstr "Bonjour tout le monde"
#: helloworld.glade:8
msgid "HelloWorld"
msgstr "Bonjour"
#: helloworld.glade:36
msgid "Just one button"
msgstr "Juste un bouton"
Théoriquement les traductions dans un système linux se trouve dans le chemin /usr/share/locale/fr/LC_MESSAGES mais nous allons les mettre dans un répertoire enfant (./locale) pour notre exemple. Ces traductions sont à « compiler » en .mo
package rappels ;
use strict;
use warnings "all";
use Locale::gettext;
use vars qw($gladexml) ;
# $gladexml est donc la variable qui fera référence à l'arbre xml
# de l'application.
# On initialise la valeur de la variable quand l'arbre est créé
# dans le module principale
sub init {
# Démarage de l'interface graphique
$gladexml = $X::gladexml ;
bindtextdomain("helloworld", "./locale");
textdomain("helloworld");
# Sans traduction
print "HelloWorld\n";
# Avec traduction
print gettext("HelloWorld"), "\n";
}
sub on_window1_delete_event{
Gtk2->main_quit ;
}
sub on_bouton_quitter_clicked{
Gtk2->main_quit ;
}
1 ;
package X ;
use strict ;
use Locale::gettext;
bindtextdomain("helloworld", "./locale");
textdomain("helloworld");
require Exporter ;
use vars qw(@EXPORT_OK) ;
@EXPORT_OK = qw ($gladexml) ;
use vars qw($gladexml) ;
use Gtk2 '-init' ;
use Gtk2::GladeXML ;
# On crée l'arbre xml complet. Attention, toutes les fenêtres déclarées
# visibles dans le menu Propriétés->commun->visible, seront affichées
# quand on lancera "Gtk2->main".
$gladexml = Gtk2::GladeXML->new('helloworld.glade' ) ;
# On initialise les variables du module rappels.
rappels::init () ;
# On connecte les fonctions de rappels de l'arbre xml
# à leurs définitions qui sont contenues dans le module rappels.
$gladexml->signal_autoconnect_from_package('rappels' ) ;
1 ;
Tester
Mon poste est en français, je vais donc tester en français puis en forçant l’anglais :
$ echo $LANG
fr_FR.UTF-8
$ perl helloworld.pl
HelloWorld
Bonjour
$ # L'interface doit aussi s'afficher en français
$ LANG=en_US.utf-8
$ perl helloworld.pl
HelloWorld
HelloWorld
$ # L'interface doit aussi s'afficher en anglais
Téléchargement
Vous pouvez télécharger l’intégralité du HellloWorld.pl :
Xsshfs est un petit programme Perl écrit par mes soins qui permet d’utiliser la commande SSHFS graphiquement. Celui-ci est maintenant disponible en version 0.4.
Au menu des petits plus :
Sélection d’une clef SSH possible
Le champs « Autres options » c.f. man sshfs
Une petite ré-organisation des champs pour épurer l’interface
Ajout de paramètres à la commande xsshfs : –help | –version | –ficheirConfig | –debug
En continuant à utiliser le site, vous acceptez l’utilisation des cookies (au chocolat) Plus d’informations
Les cookies sont utilisés à des fin de statistique de visite du blog sur une plateforme indépendante que j'héberge moi même. Les statistiques sot faites avec un logiciel libre. Aucune information n'est redistribué à google ou autre. Je suis seul autorisé à lire ces informations