Suivre sa consommation électrique avec Zabbix

graph conso
Introduction

Les compteurs électriques sont équipés d’une sortie « téléinfo » qui permet d’obtenir des informations sur, notamment, sa consommation électrique.

On va donc avoir un système de lecture de l’information, composé d’un raspberry, raccordé au compteur via un petit montage électronique très simple.

Et un système de traitement de l’information, qui peut aller du simple enregistrement des mesures dans un fichier csv jusqu’à la machine de guerre. Personnellement j’utilise zabbix pour cette partie.

Pourquoi zabbix ? Parce que c’est le système de supervision que j’utilise pour surveiller tous les équipements de mes clients. En natif il va conserver l’historique des mesures réalisées et me faire de beaux graphiques à partir de ces mesures. Je peux même être prévenu en cas de surconsommation. L’idéal serait de couper le wifi « enfant » quand ils ont oublié d’éteindre la lumière de leur chambre, mais on n’en est pas encore là.

Bien sur, rien n’empèche d’utiliser tout autre chose pour le traitement

Le compteur
Bornier téléinfo sur compteur linky

Connectez la prise téléinfo. Ne confondez pas avec le bornier de commande du chauffe-eau. Personnellement j’ai utilisé du câble téléphonique pour aller du compteur (sur le palier) vers mon tableau électrique, en utilisant les goulottes existantes.

Faites activer la téléinfo. Pas de miracle, il faut appeler le service client d’ENGIE et espérer tomber sur quelqu’un qui sait de quoi on parle et à même de vous aiguiller vers le bon service.

Attention, cette prestation, qui s’est réalisée à distance, m’a été facturée (25€) puis remboursée sur la facture suivante (comprenne qui pourra).

Après quelques jours, l’activation devrait être effective.

Le montage électronique

J’ai utilisé sans vergogne les informations de montage publiées ici. J’ai également utilisé ce suite pour raccorder le raspberry au montage (alim électrique, donnée et ground).

Mes tentatives pour faire un montage digne de ce nom avec une plaque d’epoxy, des soudures se sont soldés par quelques brûlures et un montage non fonctionnelle. J’ai essayé un montage tout fait proposé par http://hallard.me/pitinfov12/ mais la carte n’est apparemment pas compatible avec les linky. Le monsieur m’a gentiment repris la carte, changé un composant et renvoyé. Je n’ai pas encore testé la nouvelle version.

Le raspberry

J’ai commencé avec un arduino. Ça marche bien, jusqu’au moment où j’ai rajouté le module wifi, qui a entraîné de gros problèmes de stabilité. Par simplicité je suis passer à un raspberry.

Ayant un v3, il faut modifier la configuration du port série: rajouter enable_uart=1 dans /boot/cmdline.txt

Lancez ensuite l’utilitaire de configuration raspi-config et dans la partie Interfacing options désactiver le login en console série et activer le port série matériel.

Redémarrez la machine.

Premières lectures

Assurez vous d’être membre du groupe dialout.

Installez le paquet picocom. Lancez-le:

[tom@cuisine:~] 1 $ picocom -b 9600 -d 7 -p n -f n /dev/ttyAMA0
picocom v1.7
port is : /dev/ttyAMA0
flowcontrol : none
baudrate is : 9600
parity is : none
databits are : 7
escape is : C-a
local echo is : no
noinit is : no
noreset is : no
nolock is : no
send_cmd is : sz -vv
receive_cmd is : rz -vv
imap is : 
omap is : 
emap is : crcrlf,delbs,

Terminal ready
U\6Ml000 237 4
STGE 00DA0001 K
MSG1 PAS DE MESSAGE <
PRM 19139073645407 <
RELAIS 000 B
NTARF 01 N
NJOURF 00 &
NJOURF+1 00 B
PJOURF+1 00008001 NONUTILE NONUTILE NONUTILE NONUTILE NONUTILE NONUTILE NONUTILE NONUTILE NONUTILE NONUTILE 9
ADSC 031562273760 7
VTIC 02 J
DATE E170625162558 N
NGTF BASE <
LTARF BASE F
EAST 006451037 )
EASF01 006451037 <

Normalement ça doit commencer à défiler dans la console. Si vous n’obtenez que du bruit, c’est soit un problème de paramétrage de la liaison série (à vous de jouer avec la vitesse, parité, etc) soit un problème de montage / câblage. À noter que si la téléinfo n’est pas activée, on récupère quand même quelques infos sans intérêt.

Dans tout ça, l’information qui nous (me) intéresse tout particulièrement, c’est la valeur du champs SINSTS qui correspond à la consommation actuelle.

On va donc écri…^w récupérer sur internet et mettre au point un script python de lecture de cette info:

cat > ~/bin/teleinfo.py <<EOF

import serial
import sys
import re

port="/dev/serial0"
baud=9600
bits=7
parity="N"
i=1

if len(sys.argv) > 1:
 field=sys.argv[1]
else:
 field="SINSTS"

ser = serial.Serial(
 port,
 baud,
 bits,
 parity
)
# on lit 38 lignes because c'est la taille d'une trame
while i < 38:
 i+=1
 data=ser.readline()
 if field in data:
   print data[7:13]

Si l’envie vous en prend, ce script prend en paramètre le nom d’un champs et récupère sa valeur.

À partir de là…

Vous pouvez en rester là, vous pouvez transformer ce script en cgi et le rendre disponible via le web, vous pouvez le faire appeler par une solution de supervision, vous pouvez programmer son exécution par cron et enregistrer les valeurs mesurées dans un csv (accompagnées de la date)…

Intégration avec zabbix

Le principe est simple: zabbix va régulièrement exécuter le script mis au point ci-dessus et enregistrer / grapher les valeurs obtenues.

Tout d’abord, on s’assure que l’utilisateur zabbix puisse exécuter le script et surtout accéder au port série:

gpasswd -a zabbix dialout
mv ~/bin/teleinfo.py ~zabbix/
chown zabbix ~zabbix/teleinfo.py
chmod 755 !$

Créer le fichier /etc/zabbix/zabbix_agentd.conf.d/userparameter_teleinfo.conf  avec le contenu suivant:

UserParameter=teleinfo[*],python /var/run/zabbix/teleinfo.py $

Sur le serveur zabbix, créer un nouveau template teleinfo associé à notre raspberry, contenant un item faisant appel à notre script personnalisé ci-dessus:

définition de l'item teleinfo
définition de l’item teleinfo

Vous pouvez bien sur créer un graphique de ces données.

definition graphique zabbix

Et si vous êtres vraiment fatigués (la lecture fut longue, je vous l’accorde) vous pouvez récupérer un export de mon template teleinfo pour l’intégrer dans votre propre zabbix.

zbx_export_templates.xml

Bonnes pratiques SSL

La configuration apache ci-dessous devrait vous prémunira des dernières turpitudes liées à OpenSSL et vous permettra d’obtenir un bon score à ssllabs ou testssl.sh

SSLProtocol all -SSLv2 -SSLv3
SSLCipherSuite "EECDH+ECDSA+AESGCM EECDH+aRSA+AESGCM EECDH+ECDSA+SHA384 EECDH+ECDSA+SHA256 EECDH+aRSA+SHA384 EECDH+aRSA+SHA256 EECDH+AESGCM EECDH EDH+AESGCM EDH+aRSA HIGH !MEDIUM !LOW !aNULL !eNULL !LOW !RC4 !MD5 !EXP !PSK !SRP !DSS !3DES"
SSLHonorCipherOrder on

En ce qui concerne postfix:

smtpd_tls_mandatory_protocols = !SSLv2, !SSLv3
smtpd_tls_protocols = !SSLv2, !SSLv3
smtpd_tls_ciphers = high
smtpd_tls_exclude_ciphers = aNULL, MD5, 3DES, DES, RC

Sources:
– https://testbit.eu/apache-sslciphersuite-without-poodle/
– http://www.bortzmeyer.org/drown.html

Merci d’ailleur à @bortzemeyer de m’avoir fait découvrir http://testssl.sh/

 

Rediriger http vers https, tout en permettant le renouvellement automatique des certificats LetsEncrypt

La procédure de renouvellement automatique des certificats Let’S Encrypt  avec le client certbot nécessite d’autoriser l’accès à http://MON_DOMAINE/.well-known/acme-challenge… en clair.

Donc si vous avez redirigé l’ensemble du traffic http vers https, via par exemple une redirect, la vérification du certificat, lors de son prochain renouvellement va échouer.

Avec apache et mod_rewrite, on peut rediriger tout le trafic, sauf pour une URL particulière:

RewriteEngine on
RewriteCond %{HTTPS} off
RewriteCond %{REQUEST_URI} "!^/\.well-known"
RewriteRule (.*) https://%{SERVER_NAME}/$1 [R,L

L’astuce consiste à rajouter la  RewriteCond de la ligne 3 qui signifie « pour toutes les requêtes en clair, sauf celle concernant /.well-known ».

Goaccess, un générateur de statistiques web rapide et sexy

goaccess_fr

Qu’est-ce que c’est ?

Goaccess est un générateur de statistiques web, fonctionnant sur le même principe que webalizer et awstats, c’est à dire en lisant et analysant les lignes du log d’accès d’un serveur web.

Continuer la lecture de « Goaccess, un générateur de statistiques web rapide et sexy »