-
Notifications
You must be signed in to change notification settings - Fork 0
1. CitizenWatt
CitizenWatt est un capteur open source et open hardware dont les sources sont intégralement disponibles sur Github. Il est associé à un Raspberry Pi sur lequel sont stockées les données et est exécutée l'application CitizenWatt (écrite en Python). Les sources ont été légérement adaptées pour une utilisation sur la carte PINE64+, en remplacement du Raspberry Pi.
Dépôts GitHub :
receive.cpp a été remplacé par un programme Python suite à l'ajout de l'Arduino.
Les versions actuelles des différentes distributions Linux disponibles pour le PINE64+ ne supportent pas l'interface SPI, nécessaire à la communication avec le nRF24L01+. En attendant la sortie de drivers kernel compatibles, la solution de contournement est d'utiliser un Arduino Uno comme intermédiaire.
CitizenWatt Sensor ((( ))) nRF24---Arduino---PINE64+
Connexion entre l'Arduino et le Transceiver nRF24
nFR24L01+ | Arduino Uno |
---|---|
GND | GND |
VCC | 3.3V |
CE | 7 |
CSN | 8 |
SCK | 13 |
MOSI | 11 |
MISO | 12 |
IRQ | - |
Sketch Arduino
- Utilisation de la librairie RF24 de TMRh20
- Sketch Arduino (en cours de dev/test) : Le sketch reprend en grande partie le programme receive.cpp. Un programme en Python assure la partie lecture des données à partir de l'Arduino via serial et l'écriture dans le fichier /tmp/sensor.log.
Modification des sources de CitizenWatt
- receive.py : Ce programme permet de faire le lien entre les données envoyées par l'arduino et leur copie en base de données.
- process.py : utilisation d'un fichier au lieu d'un pipe
L'installation des packages et des librairies indiqués dans les scripts sh est effectuée de façon manuelle (dans l'attente d'une éventuelle automatisation).
Copie des sources : déplacer les sources dans /opt/citizenwatt
Installation de Python 3.4
$ sudo aptitude install python3 gcc python3-pip python3-dev
Installation des packages nécessaires
$ sudo aptitude install postgresql supervisor avahi-daemon redis-server iptables-persistent
$ sudo aptitude install postgresql-server-dev-all
Installation des modules Python
$ sudo pip3 install requests sqlalchemy pycrypto numpy cherrypy psycopg2 redis
Création du user citizenwatt sous Debian
$ sudo adduser citizenwatt
Mot de passe : citizenwatt
Création de la base de données
$ sudo -u postgres psql
[sudo] password for debian:
psql (9.4.9)
Type "help" for help.
postgres=# CREATE DATABASE citizenwatt;
postgres-# CREATE USER citizenwatt PASSWORD 'citizenwatt';
postgres-# GRANT ALL ON DATABASE citizenwatt TO citizenwatt;
postgres-# exit
postgres-#
Paramétrage du pare-feu
iptables -t nat -A PREROUTING -p tcp --dport 80 -j DNAT --to-destination :8080
/etc/init.d/iptables-persistent save
Modification des hostname et hosts
Remplacement de "pine64" par "citizenwatt" dans les fichiers /etc/hostname et /etc/hosts
Copie du fichier de configuration pour le superviseur
debian@citizenwatt:/opt/citizenwatt$ mv supervisor_citizenwatt.conf /etc/supervisor/conf.d/supervisor_citizenwatt.conf
Dans la version actuelle, suite à de pb de lancement au démarrage, cf. issue #3 sur Github, les programmes receive.py et process.py sont lancement manuellement. Ils sont donc commentés dans la config.
En lançant receive.py et process.py, les données mesurées sont affichées en temps réel :