Pour réaliser mon installation photovoltaïque autonome, je me suis fait aider sur forum-photovoltaique.fr (dans la rubrique dédiée). Depuis, j’y traîne de temps en temps pour aider à mon tour. Sur le forum, je me suis aperçu rapidement qu’on faisait très souvent la même chose : du dimensionnement. Il n’y avait (à ma connaissance) pas d’outil pour aider à faire du dimensionnement pour site isolé qui soit indépendant (des outils pour au final vendre un kit qui va marcher 2 ans, ça oui, il y a en a…)
Donc je me suis dit, je vais le faire… Alors voilà le premier jet :
Logiciel libre : les méthodes de calcul étant nombreuses, je me suis dit que la collaboration de chacun était souhaitable ;
Indépendant : pas de site marchand, rien à vendre à la fin ;
Pédagogique : pour ceux qui veulent comprendre les calculs ;
Utilisable à plusieurs niveaux :
Niveau débutant : on demande pas grand chose, beaucoup de calculs sont automatiques, déduits ;
Niveau pro : on peut personnaliser plus de paramètres ;
Je suis à la recherche de (petits) contributeurs à ce (petit) projet pour :
Discuter de la méthode de calcul ;
Distribuer des suggestions, des critiques constructives ;
Des idées pour aller plus loin… Pour l’instant j’ai listé :
Gérer d’autres technologies de batterie que AGM/plomb
Faire des hypothèses de câblage de PV
Générer un beau dessin de câblage final
Récupérer la valeur rayonnement moyen quotidien automatiquement…)
Dire que les couleurs piquent les yeux ;
Le mieux ça serait des doigts pour co-coder ;
Fonctionnalités de CalcPvAutonome
Pour l’utilisateur de base :
3 modes au formulaire (Débutant, Éclairé, Expert)
Pour déterminer ses besoins électriques journaliers, un tableau dynamique dédié : CalcConsommation
Pour déterminer l’ensoleillement :
(simple) Carte par zone – simple mais approximatif
(précis) Valeur du site http://ines.solaire.free.fr/gisesol_1.php (kWh/m²/j)
En mode expert, ajuster le degré de décharge, les valeurs de rendement électrique des batteries ou du reste de l’installation,
Déduction automatique de la tension du parc de batteries à utiliser (possibilité de forcer une valeur en mode expert)
Déduction automatique d’une configuration du parc de câblage des batteries et du modèle à utiliser (exemple : « 2 batteries 220Ah 12V en série ») (possibilité de forcer un modèle de travail en mode expert)
Estimation d’une fourchette du coût du parc de batteries & photovoltaïque
Explication détaillée du calcul pour parvenir au résultat
Pour les utilisateurs avancés :
Intégration sur votre site web
Modification possible du fichier config.ini pour changer :
Les valeurs par défaut du formulaire
Les valeurs d’irradiation de la carte par zone
La fourchette de prix des panneaux photovoltaïques et des batteries
Les modèles de batteries possibles pour la détermination d’une configuration
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 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 :
emailPoubelle.php est donc une page qu’il faut typiquement inclure dans votre site. Elle permet d’administrer des adresses email (des alias plus précisément) jetable ou temporaire. Ces adresses peuvent avoir une durée de vie limitée ou non. Elles peuvent être désactivé (>/dev/null) à tout moment.
Le (petit) projet
Le plus gros changement sur version 1.0 est l’utilisation d’une base de données (sqlite, postgresql, mysql.. au choix, c’est du PDO). Mais vous pouvez continuer à utiliser la version 0.3 qui est en full plain text
Le script dépend de Postfix, un service web avec PHP, php-pdo et (en option) de la lib pear Net_DNS2
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…
Suite à mon article « Incitateur anti-pub« , des demandes ont émergé concernant un plugin WordPress. Très enthousiaste, je l’ai réalisé. Il s’appelle adblock-invite et il est sous licence Beerware. C’est le premier plugin wordpress que je réalise, il est relativement simple et me semble un bon moyen concret de commencer avec WordPress (plus sympa que le « hello world »).
Note : pour ceux qui souhaitent un anti-pub standalone réferez-vous à cet article.
Le but du plugin est simple ; il s’agit d’un Widget avec un champs « titre » (pour le titre du bloc) et un champs « message ». Ce widget ne s’affichera que lorsque le visiteur n’aura pas d’anti-pub.
Créer, tester votre code
Dans le répertoire wp-content/plugins/ nous allons créer arborescence suivante :
Le fichier widget.php est le cœur du plugin, voici son contenu (A l’heure ou j’écris il est en 0.1)
<?php
/*
Plugin Name: Adblock invite (Yes Adblock)
Plugin URI: http://adblock-invite.zici.fr
Description: Detects if the visitor have AdBlock (or another) plugin/extension installed and if not, gives URL to download it.
Author: David Mercereau
Author URI: http://david.mercereau.info
Version: 0.1
License: Beerware
License URI: http://en.wikipedia.org/wiki/Beerware
*/
// Ajout de code dans le pied de page du thème :
function adblockInviteScriptFooter(){
?>
<script language="JavaScript" type="text/javascript" src="<?php echo plugins_url('testads/banners.js', __FILE__); ?>"></script>
<script language="JavaScript" type="text/javascript">
function widgetAdlblockInviteID(tag) {
var regexpParam=/adblock_invite_widget-*/;
var tagParam=tag;
tagParam = (tagParam === undefined) ? '*' : tagParam;
var elementsTable = new Array();
for(var i=0 ; i<document.getElementsByTagName(tagParam).length ; i++) {
if(document.getElementsByTagName(tagParam)[i].id && document.getElementsByTagName(tagParam)[i].id.match(regexpParam)) {
document.getElementsByTagName(tagParam)[i].style.display='block';
}
}
}
var divAds = document.getElementById("adstest");
if(divAds) {
widgetAdlblockInviteID('div');
widgetAdlblockInviteID('aside');
}
</script>
<?php
}
add_action('wp_footer', 'adblockInviteScriptFooter');
// Ajout d'une feuille de style dans le head (la feuille contenu dans wp-content/plugins/adblock-invite/style.css :
add_action('wp_print_styles', 'addstyle');
function addstyle() {
wp_enqueue_style('adblock-invite-styles', plugins_url('style.css', __FILE__));
}
// Le code du widget (front et back) :
add_action( 'widgets_init', create_function('', 'return register_widget("adblockInviteWidget");') );
class adblockInviteWidget extends WP_Widget {
function adblockInviteWidget() {
$widget_ops = array(
'classname' => 'adblock_invite_widget_class',
'description' => 'Detects if the visitor have AdBlock (or another) plugin/extension installed and if not, gives URL to download it.'
);
$this->WP_Widget('adblock_invite_widget', 'Adblock invite', $widget_ops);
}
// Formulaire d'administration
function form($instance) {
$instance = wp_parse_args( (array) $instance, array( 'title' => 'You do not block ads?', 'message' => '<p>It seems that you don\'t have AdBlock (or another) installed in your browser. I encourage you to install it for free</p> <p><a href="http://adblockplus.org" target="_blank">Download AdBlock</a></p>' ) );
$title = $instance['title'];
$message = $instance['message'];
?>
<p>
<label for="<?php echo $this->get_field_id('title'); ?>">Title: </label>
<input class="widefat" id="<?php echo $this->get_field_id('title'); ?>" name="<?php echo $this->get_field_name('title'); ?>" type="text" value="<?php echo attribute_escape($title); ?>" />
</p>
<p>
<label for="<?php echo $this->get_field_id('message'); ?>">Message: </label>
<textarea class="widefat" id="<?php echo $this->get_field_id('message'); ?>" name="<?php echo $this->get_field_name('message'); ?>" cols="30" rows="4"><?php echo attribute_escape($message); ?></textarea>
</p>
<?php
}
// Enregistrement du contenu
function update($new_instance, $old_instance) {
$instance = $old_instance;
$instance['title'] = $new_instance['title'];
$instance['message'] = $new_instance['message'];
return $instance;
}
// Affichage du widget en front
function widget($args, $instance) {
extract($args);
echo $before_widget;
$title = apply_filters( 'widget_title', $instance['title'] );
$message = empty( $instance['message'] ) ? ' ' : $instance['message'];
if ( !empty( $title ) ) { echo $before_title . $title . $after_title; };
echo $message;
echo $after_widget;
}
}
Vous pouvez tester votre plugin en l’activant dans le panel d’administration (Extensions / Extensions installées)
Publier sur WordPress.org
Le saint graal pour un plugin WordPress étant d’être dans l’annuaire afin que l’utilisateur final n’est qu’à faire une recherche via son blog pour pouvoir installer d’un seul clic le dit plugin.
Pour ce faire il faut d’abord créer un compte sur wordpress.org puis proposer votre plugin. Une étape de modération est nécessaire.
Vous allez ensuite recevoir un email avec l’URL de votre plugin dont vous serez administrateur. (pour moi c’est http://wordpress.org/extend/plugins/adblock-invite/) Il vous faut ensuite faire le premier commit afin de rendre la page public. Voici la démarche :
$ # Création d'un répertoire de travail
$ cd ~/Projets
$ mkdir adblock-invite
$ cd adblock-invite/
$ # Récupération de arborescence svn
$ svn co http://plugins.svn.wordpress.org/adblock-invite/ .
$ # Copie et ajout du code
$ cp /var/www/wp-content/plugins/adblock-invite/* trunk/
$ svn add trunk/*
$ # Copie des screenshots pour le site de wordpress
$ cp trunk/screenshot-* assets/
$ svn add assets/*
$ # Commit et envoi
$ svn ci -m 'Adding first version of my plugin'
Pour en savoir plus sur svn rapporté à WordPress vous pouvez vous rendre sur wordpress.org/extend/plugins/about/svn.
Et voilà c’est terminé vous devriez avoir votre page administrable sur wordpress.org & votre plugin doit être disponible dans l’annuaire.
N’hésitez pas à me faire part de point à améliorer dans ce plugin ou dans ce tuto (je l’ai fait à posteriori il est donc possible qu’il manque des étapes)
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.
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