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

file2link : Stockage de fichier temporaire contre lien

Depuis que Framasoft à annoncé sa Déframasoftisons Internet, en tant que membre des CHATONS (avec zici.fr & retzien.fr), je me suis dis que c’était l’heure de se retrousser les manches.

Faire un framadrop ça me semblait accessible, par contre Lufi (utilisé par framadrop) c’est codé en Perl et sur les serveurs de l’asso on est plus en mode PHP (et j’essaie de pas trop me disperser et pas héberger : un coup du perl, un coup du python, un coup du ruby, du node.js… c’est plus facile à maintenir) Sauf qu’en PHP je n’ai pas trouvé de logiciel maintenu similaire qui répondent à mes attentes, du coup j’en ai pondu un : file2link.

Bien sûr tout est libre de droit, file2link est sous licence beerware.

Petit tour en images :

Si vous l’utilisez, dites le moi, ça me parait pertinent qu’on fasse du lien avec toutes les instances…

Fonctionnalités

Dans sa version 0.1 le logiciel permet :

  • Uploader des fichier (plusieurs possible) et de recevoir des liens en échanges :
    • Lien direct
    • Lien de téléchargement forcé
    • Lien vers un zip contenant tout les fichiers
  • Images redimensionné à l’upload possible
  • Mémorisation des fichiers précédaient uploadé (via le storages local du navigateur
  • Se configure avec un fichier YAML
  • Configure with YAML file :
    • Limite dans le temps
    • Limite le type de fichier (via mime)
    • Limite le nombre de fichier envoyé simultanément
    • Limite de type de fichier
  • Bar de progression en HTML5
  • Multi-langue (français / anglais pour le moment)
  • Ménage des fichiers expiré par tâche cron (cron.php) ou par traffic sur la page d’accueil (web cron)
  • Personnalisation du contenu de la page avec la possibilité de créer des pages header-page.php, header.php, footer-page.php, footer.php, start-home.php, end-home.php
  • Ajout d’un menu vers des pages HTML pour créer des pages « contact » « mention légal »…

Installation

Pré-requis :

  • Un serveur http configuré compatible avec htaccess / url rewriting (apache2 typiquement
  • PHP 5.6 minimum
  • Lib php : GD & ZIP

Envoyer le contenu du dépôt sur votre serveur :

Déplacer le fichier de conf distribué :

Modifier le fichier config.yaml, changé le baseUrl et autres paramètres que vous souhaitez personnalisé. Assuré vous de la cohérence des paramètres :

  • maxUploadPerFile doit être similaire à la config PHP upload_max_filesize and post_max_size
  • maxUploadNbdoit doit être similaire à la config PHP config max_file_uploads

Assurez vous que le répertoire « files » soit accessible en écriture pour le servuer

Option : si vous voulez faire le ménage par tâche cron modifier la valeur expireCron par « cron » dans le fichier config.yaml et ajouter votre tâche cron :

Et voilà, fin de chantier !

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.

A venir, une « sur-couche » à PvMonit pour faire de la domotique et 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

ISPConfig : Un mode maintenance avec SSL

By RRZEicons (Cc-sa)

Afin de réaliser des maintenances ou migration sur mon serveur qui héberge ~100 sites et qui tourne avec le panel ISPConfig j’ai mis en place un petit mot d’excuse qui dit en substance : « maintenance en cours, merci de repasser plus tard ». C’est mieux que « La connexion a échoué » ou « Can’t Connect to MySQL Server on nian nian nian » non ?. C’était plutôt simple jusqu’à l’arrivé massive du SSL. parce que quand on tente de joindre https://david.mercereau.info ou https://zici.fr et qu’on est redirigé vers la même page de maintenance, avec le SSL ça coince / ça affiche un message d’erreur, normal… hors c’est ce qu’on cherche à éviter.

La configuration de prod en temps normal  :

  • Apache sur le port 80 & 443
  • Let’sEncrypt délivre les certificat SSL
  • Le tout est motorisé par ISPConfig

La configuration de maintenance :

  • Apache sur le port 80 & 443 (toujours)
  • Lighttpd sur le port 81 & 444
  • Iptables redirige le trafic arrivant sur le port 80 vers le port 81 en PREROUTING sauf pour mon IP (ça permet donc de bricoler)

Installation de lighttpd

Apété, et ayé :

La configuration de lighttpd : /etc/lighttpd/lighttpd.conf

Récupérer la configuration SSL

J’ai fais un script qui récupère dans configuration apache (généré par ISPConfig chez moi), les chemins vers les certificats SSL Let’sEncrypt et qui (re)génère la conf lighttpd (qui crée le fichier /etc/lighttpd/conf-enabled/maintenance-mode-ssl.conf).

Préparation avant de lancer le script :

C’est bon, on peut lancer le script :

ça doit générer quelque chose comme ça dans le fichier /etc/lighttpd/conf-enabled/maintenance-mode-ssl.conf :

Maintenance On/Off

Pour se mettre en mode maintenance :

Et pour désactiver le mode maintenance :

Script API Ispconfig : changement d’IP dans toutes les zones DNS

Je m’occupe d’un service d’hébergement destiné aux actions politiques / citoyennes / artistiques… Ce service va rejoindre physiquement des voisins/copains eux aussi CHATONS : https://retzien.fr/. Nous allons mutualiser les serveurs et le temps de cerveau alloué au tâches administrative qui incombe à la gestion de ce type de service.

Pour préparer la migration de serveur j’ai fais un petit script qui se connecte à l’API d’ISPconfig et qui change tout les enregistrements DNS A ayant l’IP « X » par l’IP « Y » dans toutes les zones DNS du serveur. Ce script peut aussi s’avérer très utile en cas de changement de box internet Il se lance comme ceci :

Le voici

Crowdin : intégration automatique des traduction (script)

Depuis mon précédent article d’appel à la traduction de CalcPvAutonome , datant d’il y a moins d’un mois. Il c’est passé un truc que je ne me serais pas imaginé. En effet, le projet à été traduit (partiellement ou complètement) en Néerlandais, Russe, Polonais, Indonésien, Espagnol, Italien, Japonais, Polonais, Turc, Ukrainien… j’en passe et des meilleurs…

Il semble que nombre des contributeurs (tous ?) arrivent de utopian.io, une plateforme qui rémunère les contributions des aux projets opensource (via steemit.com/). Je ne sais pas trop quoi en penser… c’est génial, ça a été très vite, mais je ne suis pas certain de la qualité (et j’ai pas trop moyen de le savoir). Même si il semble y avoir de la modération sur utopian, j’ai déjà eu un retour d’une Russe qui repassait derrière une autre qui avait fait vraiment n’importe quoi (selon elle…) mais bon moi et le Russe… c’est complexe de savoir qui dit vrai, je peux juste faire confiance et laisser la communauté autogérée.

En tout cas je n’aurai pas imaginé avoir autant de petit drapeau de traduction en haut de ce machin.

L’engouement à été tellement soudain que je me suis retrouvé débordé devant la quantité de traduction à intégrer. Du coup j’ai fait une moulinette pour l’intégration dans le projet avec l’API Crowdin.  Le script est en PHP et il permet :

  • Compilation sur crowdin
  • Téléchargement des traductions
  • Compilation en .mo
  • Mise à jour du lang.ini qui contient :
    • % d’avancement de la traduction
    • Liste des contributeurs (pour dire merci)

C’est à voir dans le dépot framagit.

Merci à Crowdin qui permet met à disposition sa plateforme hyper complète gratuitement pour les logiciels libres.

Pour vous en montrer un aperçu de sa puissance, Crowdin permet une traduction « en contexte », directement sur l’interface du site à traduire. A tester sur CalcPvAutonome par ici : calcpv.net/aa

CalcPvAutonome en V4.0 : ouverture sur l’international

D’abord un grand merci à nednet, coucou39, guillerette, mirrim, ppmt qui ont œuvré à la traduction vers l’anglais de CalcPvAutonome suite à mon appel.

Je passe la seconde en lançant un nouvel appel à la traduction. Cette fois-ci de l’anglais vers ce que vous voulez/pouvez, Espagnol, Portugais, Italien, Espéranto, Grec… Faites-vous plaisir !

La plateforme de traduction collaborative se trouve par ici : crwd.in/calcpvautonome

Petit rappel : CalcPvAutonome est un logiciel libre (licence Beerware) et gratuit de dimensionnement d’installation photovoltaïque en site isolé (autonome). Il se veut transparent (dans la méthode), pédagogique et surtout détaché de toute structure commercial.

Autre petite nouveauté depuis mon dernier article :

  • CalcPvAutonome intègre les graph’s OFF-GRID du projet PVGIS 5
  • Un nom de domaine rien qu’a lui : calcpv.net
  • Du HTTPS sur l’application en ligne (merci Let’s Encrypt)

Pour tester, c’est par ici :