CalcPvAutonome : Outil de dimensionnement pour une installation photovoltaïque en site isolé (autonome)

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 :

Les critères étaient donc :

  • 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

PvMonit – Monitoring de mon installation photovoltaïque autonome

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.5-5.6 recomended)
  • 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)

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 :

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

On applique la configuration :

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

Lancer la commande :

Ajouter la ligne suivante :

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 :

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

Installation des dépendances :

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

Lancer la commande :

Ajouter la ligne suivante :

Test de collecte :

Test d’envoi des données :

Mettre les scripts en tâche planifiée

Ajouter :

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

Test de la sonde :

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

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 :

Test : :

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

Documentation

Voilà voilà, bon courage !

RaspberryPi & Raspbian en lecture seul (ReadOnly) pour préserver la carte SD

Le Raspberry Pi, est un mini ordinateur qui consomme très peu d’énergie. Il n’y a pas de disque dur mécanique, le système se trouve sur une carte SD.  L’avantage c’est que ça consomme moins d’énergie mais la carte SD à l’inconvénient de s’abîmer très rapidement quand il y a beaucoup de lecture/écriture (et sa durée de vie n’en ai que moindre). J’ai donc passé mon Raspberry Pi sous Raspbian (une Debian pré-pacagé pour Raspberry) et mis en place un système en lecture seul. Il s’agit ici d’une installation type serveur sans interface graphique.

Installation de Raspbian (sans écran sur le Raspberry) avec connexion Wifi

Vue que je n’ai pas d’écran pour installer mon Raspberry, j’ai mis la carte SD dans mon ordinateur portable pour l’installation. Après le téléchargement de « Raspbien lite » sur le site officiel : http://www.raspbian.org. Il suffit d’utiliser la commande dd pour installer l’image :

Attention : remplacer /dev/sdc par le périphérique de votre carte SD ! (/dev/sdb, /dev/mmcblk0… un « sudo fdisk  -l » pourra vous en dire plus)

Éjecter la carte SD et remettez là, vous devriez avoir plusieurs partition sur la carte SD :

  • #1 : FAT32 (partition de boot)
  • #2 : ext3 (système)

Utilisation de gparted pour agrandir l’espace disque de la partition système :

On va maintenant préparer la connexion Wifi pour pouvoir l’attaquer en SSH :

L’édition de se fichier interface qui gère les cartes réseaux :

On spécifie le serveur DNS en modifiant le fichier /mnt/sd-sys/etc/network/interfaces

Bien sûr il faut mette des IP’s de votre réseau…

On éjecte la carte :

On met la carte SD dans le Raspberry et on l’allume, on partiente que la connexion au Wifi soit faite et on test la connexion ssh :

ça fonctionne !!!!

Passage du système en ReadOnly

Je me suis bien aidé des différents sites suivant :

Le reste des commandes va s’effectuer avec les droits root :

Il va falloir minimiser les programmes qui écrivent sur le FileSystème. On commence par désactiver la SWAP :

Et on fait du ménage :

Sauf si vous utilisez le DHCP, dans ce cas il faudra ajouter des choses pour que ça fonctionne en RO (« ln -s /tmp /var/lib/dhcp » par exemple…) sinon on supprime aussi le client DHCP :

On met l’horloge sur le bon fuseau horaire (Europe/Paris pour moi) :

On remplace le « log manager » rsyslogd par busybox one qui fonctionne en RAM et on en FS :

Pour lire les logs il faut utiliser la commande logread (logread -f correspond à un tail -f sur le syslog)

Encore un peu de ménage au démarrage :

A ce stade je conseil d’installer les petits outils indispensables

On désactive le bash_history soit en supprimant complètement le fichier

Soit en le déplaçant dans /tmp. Il sera remis à 0 à chaque reboot mais fonctionnera en read only.

Avant de mettre le système en read only on va faire deux alias pour switcher du mode read-only on mode read-write facilement. Ajouter dans bashrc commun : /etc/bash.bashrc :

Aller hop, on passe au chose sérieuse, on modifie le /etc/fstab :

Puis le fichier /boot/cmdline.txt :

Après un reboot on peut tester :

ça fonctionne !

Le petit plus du chef, un petit script ~/.bash_logout pour ne pas oublier de remettre le FS en read only après avoir travaillé dessus…

 

[API OVH] Reboot d’un VPS via un script PHP

OVH possède une API qui peut s’avérer très pratique pour automatiser des tâches du manager : https://api.ovh.com

J’ai choisi d’utiliser le PHP pour ces scripts car il est déjà installé sur mes machines, je n’ai donc pas besoin de supplément.

Premier test, lister mes VPS

Je commence gentils, je fais un script qui listera simplement les VPS disponible chez OVH.

Télécharger et décompressé la dernière version de « php-ovh » et ces dépendances : https://github.com/ovh/php-ovh/releases

Ensuite on crée un tocken via cette URL : https://api.ovh.com/createToken/?GET=/vps ou on ne va autoriser que le GET sur /vps.

On va obtenir la page suivante, il va falloir conserver Application Key, Application Secret & Consumer Key pour les mettre dans le script :

OVH api keys résulstatOn va pouvoir créer le script suivant (pensez à recopier vos Application Key, Application Secret & Consumer Key dans les variables) :

Lancement du script, voici le résultat :

vks00000.ip-XX-XX-XX.eu c’est le nom de mon VPS (pour l’exemple), ça fonctionne.

Les choses sérieuses :  un reboot

Même script avec action cette fois, pour tester le reboot d’un VPS via un script.

De nouveau la création d’API  avec l’url https://api.ovh.com/createToken/?POST=/vps/vks00000.ip-XX-XX-XX.eu/reboot. Ici on va autoriser le POST sur /vps/vks00000.ip-XX-XX-XX.eu/reboot.

Au lancement on obtient le numéro de la tâche :

Et ça fait bien redémarrer le VPS…

La finalité

De temps en temps mon VPS est inaccessible. C’est très variable (1 à 2 fois par mois environ) et je ne trouve pas la cause (OVH / système  / attaque ?). La seul solution pour le faire repartir c’est un reboot via le manager OVH. En attendant de trouver la cause (je ne désespère pas) j’ai mis en place ce script sur un serveur tiers afin de déclencher un reboot si le serveur est inaccessible.

En tâche planifiée :

 

Post-install – Outils indispensables

Mes post-install de Debian (et dérivé type Ubuntu) se poursuivent toujours de la façon suivante :

Upgrade

apt-get update && apt-get install aptitude && aptitude safe-upgrade

Outils pour les serveurs

Les petits outils indispensables pour les serveurs (et les ordinateurs d’admin sys)

aptitude install htop iftop iotop screen nmap tcpdump lsof iptraf dnsutils mc ncdu whois rsync tree

  • htop : un top mais en mieux
  • iftop : un top mais pour les carte réseau
  • iotop : un top mais pour l’utilisation des I/O de disque dur
  • screen : terminaux virtuel
  • nmap : scan réseau
  • tcpdump : écoute / capture de trame
  • lsoft : quel processus utilise quoi ? (fichier/ressource réseau etc…)
  • iptraf : un iftop mais en mieux
  • dnsutils : surtout pour la commande dig
  • mc : midnight-commander est un environnement semis graphique bien pratique parfois (quand on est fatigué par les lignes noirs)
  • ncdu : visualiser l’espace disque

Outils pour station de travail

Xsshfs petit outil maison très utile dans mon quotidien

sudo apt-get -y install sshfs ssh-askpass libgtk2-gladexml-perl perl libimage-librsvg-perl liblocale-gettext-perl libconfig-tiny-perl ; wget http://xsshfs.zici.fr/files/xsshfs_current.deb ; sudo dpkg -i xsshfs_current.deb ; sudo apt-get install -f ; rm xsshfs_current.deb

Et d’autres outils / logiciel non inclus par défaut :

sudo aptitude install -y keepassx2 remmina thunderbird terminator gparted wireshark git gitk freemind geany glipper easystroke lynx ethtool meld shutter remmina-plugin-rdp remmina-plugin-vnc chromium-browser cifs-utils vlc dia-rib-network dia filezilla  gimp audacity

  • keepass2 : Sauvegarder les mots de passes de façon sécurisé
  • terminator : un terminal bourré d’électronique
  • meld : faire un diff de façon graphique
  • glipper : parcourir votre presse papier (revenir en arrière par exemple)
  • shutter : très très bon logiciel de capture d’écran
  • easystrock : vos mouvement de souris déclenche des actions

Dans un environnement Gnome-shell

Je me suis mis à Gnome-shell récemment, pour changer, pour voir… voici les extension indispensable pour moi :

Horde upgrade (avec pear standalone)

Cet article fait suite à l’article sur l’installation de Horde en standalone via pear.

Pour faire un upgrade d’horde on lance deux commande :

Ensuite on va prendre un thé.

L’upgrade écrase le .htaccess où nous avions indiqué l’emplacement de nos libs pear. Il faut donc le re-éditer /var/www/horde/.htaccess

Ensuite il faut se connecter à horde en admin (http://horde.chezvous.com/admin/config) et lancer la mise à jours des configurations et des schémas de bases (suivre la procédure à l’écran, c’est du clic clic…).

Si tout c’est bien passé vous devriez avoir un panel d’admin dans ce goût là :

Terminé !

Déploiement de poste : FOG & Drivers windows

Drivers-install.vbsFOG est un outil formidable pour le déploiement de poste client que j’utilise en milieu professionnel. J’aurais envie de dire qu’il ne lui manque que la parole, mais non : il ne lui manque que la gestion des drivers

Devant un parc d’ordinateur plutôt hétérogène je ne pouvais pas mettre tous les drivers dans mon image. Je les donc déporté sur un partage réseau et j’ai utilisé DPInst (du Windows Driver Kit) dans un petit script VBS maison. Ce script est lancé automatiquement après le déploiement du poste grâce à sysprep.

Scénario du script :

  1. Monte \\monserveur.mondomaine.lan\drivers en lecteur réseau (partage en lecture seul avec simplement les drivers
  2. Recherche le répertoire du même nom que le “ComputerSystem Model”, que vous pouvez obtenir avec la commande « wmic computersystem get model » (ex : OptiPlex 380)
  3. Copy les drivers en local (car en cas d’installation des drivers de la carte réseau ça coupe…)
  4. Lance de “dpinst.exe” sur le répertoire local
  5. Démonte le lecteur réseau

Noter qu’il faut au minimum que la carte réseau soit reconnu par Windows pour que le script fonctionne.

Et ça fonctionne au petit oignon !

Liens utiles :