Voici un tuto pour ceux qui veulent se lancer à monitorer un compteur EDF et des températures 1-wire avec un raspberry.
Je me doute que c'est un peu long mais quand même utile pour celui qui veut se lancer et j'espère, un peu moins galérer que moi!!
NEW:Un lien est disponible à la fin du tuto pour télécharger les fichiers C et php en attendant une image Raspbian_teleinfo
****************************************
*Objectif
****************************************
Suivre la conso de ma PAC.
Enregistrer des mesures de températures pour optimiser mon système.
Avoir un cumul à la fin de l'hiver.
Le tout en consommant le moins possible et en étant maitre de mes données, sans abonnement
Et bien sur s'amuser un peu avec un petit linux !!!
Projets futur:
Sauvegarde de la bdd sql à l'extérieur (FTP-Cloud) (cf complément),
Monitorer 2 compteurs (cf complément),
Commande PAC à distance (cf complément),
Station météo (Réaliser et fonctionnel avec des éléments oregon et un module 433MHz),
Commande de volet roulant (Tester avec SynoZwave + module Fibaro),
Camera de surveillance,
Commande de porte de garage sur smartphone par la voix
etc...
Seule votre imagination sera la limite du Raspberry (PI)
****************************************
*Présentation du Raspberry
****************************************
Le raspberry est un µPC qui tourne sous Linux (une debian allégée par défaut), qui possède 1 port Ethernet pour être connecter sur un réseau, des ports USB pour connecter clavier souris ou autre, un port HDMI pour connecter un écran et des ports pour piloter des relais, des RS232, un bus SPI, et plein d'autres choses.....
Le tout pour vraiment pas cher au vu des performances, très petit, un appétit d'oiseau et beaucoup mais vraiment beaucoup de projets en cours car la communauté est très très très grandes. Beaucoup de personnes s'orientent dessus pour faire de la domotique. Il remplace largement les box dédiées domotique à 300€.
On peut donc programmer dessus avec tout types de langage, du C du python, du java etc...
Pour y accéder on a deux méthodes:
1/ on branche un écran, un clavier et une souris est on travaille comme sur un PC Linux.
2/ on branche le raspberry sur le réseau, et on y accède via un autre PC avec le protocole SSH est un logiciel (putty par example). Dans ce cas on travaille avec la console Linux en ligne de commande.
****************************************
*Matériel
****************************************
1 RaspberryPI
1 câble Ethernet
1 carte SD en classe 4. J'ai pu lire à ici et là qu'une classe supérieure était mieux pour le temps d'accès mais consomme plus aussi. Comme l'alim du PI est un peu juste, j'ai préféré prendre une classe 4 et je n’ai pas eu de souci avec.
1 bloc d'alim 5V 1A avec un cordon micro B
1 câble HDMI pour ceux qui veulent voir booter le PI sur un écran.
Des capteurs de température 1-wire. Choisir des capteurs alimentés et non le mode parasite.
Par exemple les DS18B20+ et DS18S20+ fonctionnent très bien.
Vous pouvez les rendre étanche comme ici:
http://maison-et-domotique.com/blog/boo ... therproof/
PS : J'ai préféré du tube en cuivre pour une meilleure conductivité thermique.
1 opto bidirectionnel ou 2 opto unidirectionnel pour l'interface teleinfo.
Quelques résistances.
Voici les deux schémas de cablage:
ATTENTION A BRANCHER SUR LE 3.3 ET PAS LE 5V SINON RASPBERRY HS.
PS: Je n'ai pas voulu acheter le module tout fait à brancher entre le compteur et le raspberry disponible ici :
http://www.suiviconso.fr/index.php?opti ... &Itemid=12
J'ai donc réalisé ce montage à brancher directement sur les ports du raspberry qui est beaucoup moins cher. Pensez à commander les composants en même temps que votre PI !!
****************************************
*Préparation du Raspberry
****************************************
Télécharger la dernière version Raspbian
http://www.raspberrypi.org/downloads
La version utilisée pour mes tests est la 2013-02-09-wheezy-raspbian.zip
Extraire l'image du zip (1.9Go)
Copier l'image sur la SD avec Win32DiskImager.exe
****************************************
*Démarrage du Raspberry (PI)
****************************************
J'accède au PI avec le logiciel putty.exe
Il faut connaitre l'IP du PI sur votre réseau .Le port est le 22 par default.
Penser à configurer putty en UTF-8 (Dans l'onglet Windows - Translation)
Lors du premier démarrage le login est pi et le mot de passe est raspberry
Et voila on peut faire ce que l'on veut !!!
****************************************
*Config de base du PI
****************************************
Il faut commencer par changer le mot de passe de root:
Code : Tout sélectionner
sudo passwd root
Code : Tout sélectionner
sudo passwd pi
Code : Tout sélectionner
sudo nano /etc/ssh/sshd_config
Code : Tout sélectionner
sudo rm /etc/ssh/ssh_host_*
Code : Tout sélectionner
sudo dpkg-reconfigure openssh-server
Code : Tout sélectionner
sudo raspi-config
Pour vérifier la mémoire flash utilisée (SD card) taper la commande df -h
Apres, on redémarre:
Code : Tout sélectionner
sudo reboot
Code : Tout sélectionner
sudo apt-get update && sudo apt-get -y upgrade && sudo apt-get -y dist-upgrade
http://www.benji1000.net/tutoriel-pour- ... pberry-pi/
http://www.tropfacile.net/doku.php/rasp ... ter-en-ssh
http://www.tropfacile.net/doku.php/rasp ... -raspberry
****************************************
*Mise en place du 1-wire
****************************************
Il y a pas mal d'explication sur le 1-wire et le PI ici:
http://webshed.org/wiki/RaspberryPI_DS1820
Le driver 1-wire n'est pas chargé par default lors du démarrage du PI
Il faut donc modifier le fichier /etc/modules
Pour cela ouvrir le fichier en root:
Code : Tout sélectionner
sudo nano /etc/modules
Code : Tout sélectionner
wire
w1-gpio
w1-therm
On redémarre le PI (sudo reboot) et le driver est chargé automatiquement.
La commande suivante permet d'avoir l'ID des composants présents sur le bus:
Code : Tout sélectionner
cat /sys/bus/w1/devices/w1_bus_master1/w1_master_slaves
J'accède à la mesure comme ceci:
Code : Tout sélectionner
cat /sys/bus/w1/devices/28-00080234149b/w1_slave
37 00 4b 46 ff ff 07 10 1e : crc=1e YES
37 00 4b 46 ff ff 07 10 1e t=27312
On peut donc voir une température de 27.312°C
Vous pouvez utiliser les librairies owfs pour programmer dans votre langage préféré. Voir ici:
http://owfs.org/
****************************************
*teleinfo
****************************************
Dans le fichier /boot/cmdline.txt supprimer la partie console=ttyAMA0,115200 kgdboc=ttyAMA0,115200
ce qui doit te donner un ligne du type:
dwc_otg.lpm_enable=0 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline rootwait
Commande pour ouvrir le fichier:
Code : Tout sélectionner
sudo nano /boot/cmdline.txt
#T0:23:respawn:/sbin/getty -L ttyAMA0 115200 vt100
Commande pour ouvrir le fichier:
Code : Tout sélectionner
sudo nano /etc/inittab
Code : Tout sélectionner
sudo reboot
Code : Tout sélectionner
sudo stty -F /dev/ttyAMA0 1200 sane evenp parenb cs7 -crtscts
Code : Tout sélectionner
sudo cat /dev/ttyAMA0
Code : Tout sélectionner
ADCO 70060936XXXX ? (paranoiac inside)
OPTARIF HC.. <
ISOUSC 20 8
HCHC 004063750 _
HCHP 004423070 '
PTEC HC.. S
IINST1 001 I
IINST2 000 I
IINST3 001 K
IMAX1 006 6
IMAX2 016 8
IMAX3 015 8
PMAX 05710 3
PAPP 00280 +
HHPHC E 0
MOTDETAT 000000 B
PPOT 00 #
http://play.with.free.fr/index.php/suiv ... rgymonitor
http://penhard.anthony.free.fr/?p=283
http://vesta.homelinux.free.fr/site/wik ... n_edf.html
Ce qui vous reste à faire:
Ecrire un programme en code C (ou autre) pour lire le port ttyAM0 et le stocker dans une base sql.
Profiter de ce programme pour lire les données des températures et les stocker sur la même base sql.
La source du programme en C se trouve ici:
http://vesta.homelinux.free.fr/site/wik ... mysql.html
La ligne qui permet de compiler le fichier C pour avoir un exe se trouve dans le commentaire.
Lancer le programme avec l'utilitaire cron de linux.
Code : Tout sélectionner
crontab -e
Code : Tout sélectionner
* * * * * /var/www/teleinfo/teleinfo_mysql
*Serveur Web et base SQL
****************************************
Bon alors là, c’est le plus gros du boulot même si une très grosse partie est déjà réalisée.
Il faut créer une base SQL pour stocker les valeurs du téléinfo et des températures.
Il faut créer un serveur web pour rendre les données accessibles via un navigateur.
On utilise la librairie Highcharts (disponible ici http://www.highcharts.com/) pour représenter le tout avec des courbes graphiques.
En gros, votre navigateur lance un java script qui interroge la base sql pour récupérer les données voulues et qui affiche les données sous forme graphique.
Ma base de départ se trouve ici : http://penhard.anthony.free.fr/?p=283.
Prendre la version V3 et améliorer suivant votre besoin.
Pour la config du serveur web et de la base sql c'est ici:
http://www.lafermeduweb.net/billet/tuto ... e-160.html
Attention, c'est en plusieurs pages !!
Voici les commandes les plus importantes:
Il faut renseigner les sources des dépôts que l'on va utiliser plus tard.
Code : Tout sélectionner
sudo nano /etc/apt/sources.list
Code : Tout sélectionner
deb http://ftp.easynet.be/ftp/debian/ etch main non-free contrib
deb http://security.debian.org/ etch/updates main contrib non-free
Code : Tout sélectionner
sudo apt-get install apache2
Code : Tout sélectionner
[b]It works![/b]
Code : Tout sélectionner
sudo nano /etc/apache2/conf.d/charset
Code : Tout sélectionner
AddDefaultCharset UTF-8
Code : Tout sélectionner
sudo nano /etc/apache2/httpd.conf
Code : Tout sélectionner
DirectoryIndex index.html index.htm index.xhtml index.php
Code : Tout sélectionner
#ServerName debian.domain.tld
ServerName localhost
Maintenant il faut installer php5
Code : Tout sélectionner
sudo apt-get install libapache2-mod-php5
Code : Tout sélectionner
sudo apt-get install php5-gd php5-mcrypt php-pear
Code : Tout sélectionner
sudo apt-get install mysql-server
Installer la prise en charge de mysql dans php5
Code : Tout sélectionner
sudo apt-get install php5-mysql
Code : Tout sélectionner
sudo mysql -u root –p”PASSWORD”
Code : Tout sélectionner
show databases;
quit
Code : Tout sélectionner
sudo apt-get install libmysqlclient-dev
Code : Tout sélectionner
sudo apt-get install phpmyadmin
Code : Tout sélectionner
www.IP_DU_RASPBERRY/phpmyadmin/
Voir le module ncftp pour la connection avec un FTP
Voir le module mutt pour le suivie des sauvegardes par mail
****************************************
*Config de l’accès depuis l'extérieur
****************************************
Alors pour faire cela il y a plein de sujet déjà traité sur chaque box.
Je resterais donc très très simple ici.
Si vous êtes en IP fixe, sauter ce qui suit.
Si vous êtes en IP dynamique, il vous faut créer un dyndns.
Moi j'ai fait ca avec no-ip.org.
Cela permettra que lorsque vous taper www.votredyndns.no_ip.org dans votre navigateur, vous tombez directement sur votre PI.
Apres avoir créé votre dyndns, il faut configurer votre box.
Tout ce qui rentre sur votre port ssh doit être redirigé vers l'IP de votre raspberry.
Cela vous permettra d'avoir accès à votre PI avec putty depuis n'importe où.
Tout ce qui rentre sur votre port http doit être redirigé vers l'IP de votre raspberry.
Cela vous permettra de visionner vos données enregistrées dans un navigateur depuis n'importe où
Attention sur la livebox (mon cas) si vous essayer de taper l'adresse dyndns depuis chez vous dans votre navigateur, vous tombez sur la livebox.
En effet, orange interdit la boucle locale.
Il faut modifier le fichier Host de votre PC sous windows pour rediriger votre dyndns vers l'IP fixe interne au réseau du PI
****************************************
*Conclusion
****************************************
Un peu de boulot mais au final je suis assez comptant du résultat.
La navigation sur le graph
Evidemment, il doit manquer beaucoup de chose mais je pense que c'est une bonne base pour commencer.
Bon courage à tous et n'hésitez pas à compléter ou corriger les erreurs.
PS: Il y a vraiment beaucoup de boulot déjà fait sur le net. N'hésitez à chercher sur Google.
A+
****************************************
*Complément n°1
****************************************
Pour enregistrer les données de plusieurs compteurs, vous pouvez utiliser le montage ci dessous.
Cela permet de lire sur le même port série autant de compteurs que l'on veut.
Il faut piloter la bonne pin (la 11 et la 12 sur le schéma) pour avoir accès au données du compteur.
Pour piloter les pin sur le raspberry, vous pouvez utiliser la librairie WiringPi.
Quelques explications ici :
http://blog.neolitec.net/arduinorpi/ras ... pio-led-c/
https://projects.drogon.net/raspberry-p ... d-install/
****************************************
*Complément n°2
****************************************
n'hésitez pas à faire une sauvegarde de vos bdd en cas de crash de la base ou du PI.
Pour cela, vous pouvez faire un script qui réalise un dump de la bdd, qui le compresse en zip et qui le stocke sur votre SD pendant 7 jours.
Cela est à réaliser tout les jours avec cron.
Vous pouvez même envoyer le zip à l’extérieur pour plus de sécurité (sur un NAS ou sur un cloud) grâce à ncftp.
Vous pouvez vous servir de mutt pour envoyer un email automatique tout les jours et suivre si la sauvegarde fonctionne correctement.
****************************************
*Complément n°3
****************************************
Voici un petit montage qui me permet de piloter le contact ON/OFF de ma PAC à distance.
J'allume ou j'éteint ma pac en pilotant une pin du Raspberry PI.
J'ai choisi un OptoMOS pour isoler ma PAC du PI. Je le pilote en 5V car je ne voulais pas prendre sur l'alim 3.3V du PI. Il y a une led pour voir si le module fonctionne sans se connecter sur le PI.
RM: Le meme montage peut aussi servir à piloter une VMC ou le contact HP/HC du cumulus.
Cela m'a permis par exemple de décaler la chauffe de mon cumulus ou d’arrêter ma PAC pendant la chauffe de mon cumulus pour avoir un abonnement EDF plus faible. Passage d'uun 12K à 9K et donc économiser 80€ / an.
****************************************
*Complément n°4
****************************************
Après beaucoup de MP sur l'envoi des sources j'ai décidé de les mettre en ligne pour les plus motivés d'entre vous.
Dans l'archive, il y a :
- Le site complet pour afficher 2 compteurs différents. Dossier Site à mettre directement dans le dossier /var /www du PI.
C'est pour un compteur TRI HP/HC. Il y a des champs à remplir dans les 3 fichiers config.php
- Le fichier C qui me permet de lire la trame teleinfo des 2 compteurs, lire les valeurs des capteurs 1 wire, et enregistrer le tout dans ma base sql. Il y a des champs à remplir au début du fichier. Il y a aussi la commande pour compiler le fichier. Il faut avoir installer la lib sql et 1 wire au préalable.
- La structure des mes 2 tables (pac et edf)
- Un script permettant de faire une sauvegarde de mes dbb. Il y a des champs à renseigner.
http://moi641.pagesperso-orange.fr/
Amusez vous bien