dd bs=4M if=./2013-09-25-wheezy-raspbian.img of=/dev/sdb
26 janvier 2014
TweeterVous avez lu attentivement mon post précédent sur le montage teleinfo, récupéré l’optocoupleur qui va bien et sorti votre Raspberry Pi du placard. Maintenant, vous être prêt à passer à la partie soft.
Le point de départ est la distribution raspbian officielle que vous devez télécharger. Pour flasher une carte SD, je vous suggère de suivre les instructions sur le site elinux.org.
Si vous êtes sous linux, vous pouvez utiliser une commande du genre :
dd bs=4M if=./2013-09-25-wheezy-raspbian.img of=/dev/sdb
Attention, dans mon cas, /dev/sdb
correspond à ma carte SD. Ne pas copier/coller cette ligne "à l’aveugle" … Si /dev/sdb
correspond chez vous à un disque dur, vous risquez d’avoir quelques sueurs froides !
La Raspberry Pi ne dispose que d’un seul port série. Celui-ci est utilisé par défaut pour avoir une console. Il faut donc libérer le port série pour le montage téléinfo.
Désactiver de la console série au boot en modifiant le fichier /boot/cmdline.txt
dwc_otg.lpm_enable=0 console=ttyAMA0,115200 kgdboc=ttyAMA0,115200 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline rootwait
à remplacer par :
dwc_otg.lpm_enable=0 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline rootwait
Désactiver la console getty
en modifiant le fichier /etc/inittab
. Il suffit de commenter la dernière ligne du fichier (ajout d’un #
):
#T0:23:respawn:/sbin/getty -L ttyAMA0 115200 vt100
Cette partie corresond à l’installation et la configuration d’un programme nodejs pour logguer les infos dans une base MongoDB. Dans mon cas, j’utilise une formule d’hébergement gratuite avec 512 Mo chez MongoLab. Vous pouvez choisir n’importe quel fournisseur à ce niveau (MongoHQ offre le même type de formule par exemple).
Il y a quelques temps, il était difficile de trouver une version nodejs pour processeur ARM. Il fallait donc compiler les sources sur Raspberry Pi (~45 mn de temps de compilation) ou, pour les plus avertis, en "Cross Compiling" (moins de 2mn sur mon core i7). Désormais, une version officielle est disponible mais pas toujours dans la dernière version. Il faut donc fouiller dans les répertoires http://nodejs.org/dist/. La dernière version à ce jour est la v0.10.24.
L’installation consiste uniquement à décompresser l’archive :
tar -xzvf node-v0.10.24-linux-arm-pi.tar.gz
Si vous installez nodejs dans le répertoire /opt
, vous pouvez ajouter les lignes suivantes au fichier /etc/profile
pour positionner les variables d’environnement pour node :
NODE_JS_HOME="/opt/node"
PATH="$PATH:$NODE_JS_HOME/bin"
NODE_PATH="$NODE_JS_HOME/lib/node_modules"
Vous pouvez commencer en utilisant mon application (en cours de développement) en clonant le repo git associé :
git clone https://github.com/lhuet/teleinfo-app.git
Pour obtenir les dépendances node, utilisez la commande classique node :
npm install -g
Le programme va chercher les éléments de configuration dans des variables d’environnement que vous pouvez positionner avec la commandes suivantes :
export MONGO_LOGIN="LOGIN_MONGOLAB"
export MONGO_PASSWORD="PASSWORD_MONGOLAB"
export MONGO_HOST="HOST_MONGOLAB"
export MONGO_PORT="PORT_MONGOLAB"
export MONGO_DATABASE="BASE_MONGOLAB"
Pour lancer l’application manuellement, vous devez positionner ces variables d’environnement et utiliser la commande :
node teleinfo-app.js
Lancer manuellement son application suffit en phase de développement. Pour être certain que le script se lance au démarrage de votre Raspberry Pi, vous devez faire un script du genre :
#!/bin/sh
#/etc/init.d/node-teleinfo
export PATH=$PATH:/opt/node/bin
export NODE_PATH=$NODE_PATH:/opt/node/lib/node_modules
export MONGO_LOGIN="LOGIN_MONGOLAB"
export MONGO_PASSWORD="PASSWORD_MONGOLAB"
export MONGO_HOST="HOST_MONGOLAB"
export MONGO_PORT="PORT_MONGOLAB"
export MONGO_DATABASE="BASE_MONGOLAB"
case "$1" in
start)
exec forever --sourceDir=/home/pi/teleinfo-app -p /tmp teleinfo-app.js
&
;;
stop)
exec forever stop --sourceDir=/home/pi/teleinfo-app teleinfo-app.js
;;
*)
echo "Usage: /etc/init.d/node-teleinfo {start|stop}"
exit 1
;;
esac
exit 0
La commande suivante permet de configurer votre système pour que le script se lance au démarrage :
sudo update-rc.d node-teleinfo defaults
Maintenant que les données sont stockées, il va falloir les restituer ! Je n’ai pas encore beaucoup avancé sur cette partie. J’ai commencé à intégrer express pour avoir des infos "live" (puissance instantanée, intensité instantanée et index) . Il reste toute la partie exploitation des données.
J’ai oublié de le préciser, mais j’accepte les pull-requests ;-)
A suivre donc.