This is an old revision of the document!
Table of Contents
Sistema de comprovació de temperatures del CPD (raspi)
Configuracio inicial raspberry pi
Veure capitol configuració inicial Raspberry
OS per RPI
Obtindre imatge Raspbian/Lite desde https://www.raspberrypi.org/downloads/raspbian/
Obtindre programa Win32 Disk Imager http://sourceforge.net/projects/win32diskimager/
Iniciar Win32 Disk Imager y seleccionar la imatge Rapsbian descarregada (.img file) amb el selector “Image File”. Seleccionar la lletra on es la SD y “Write”.
Imager demana confirmar sobreescritura. Seleccionar “Yes”. Esprar a la confirmacio y “OK”, tancar Disk Imager y extreure la SD card.
ajust basic Raspberry Pi
Insertar la SD card a la Raspberry Pi (Conectar teclat y display abans de conectar la alimentacio).
Rasperry Pi arrenca i demana username y password.
Per defecte son :
username: pi
password: raspberry
Despres de arrencar es pot entrar a configuracio amb:
sudo raspi-config
A la configuracio:
- Cambiar password/username si es creu necessari
- Configurar arrencada per consola smb option 1, console.
- Ajustar/comprobar configuracio de Hora/idioma/teclat.
- De les opcions de interfacing , seleccionar P2 - SSH enable
- Open advanced options → Expand filesystem
Finalment anar a “Finish” i reiniciar RPI amb:
sudo reboot
connexio PC(SSH)
Desde Windows es pot fer servir PuTTY http://www.chiark.greenend.org.uk/~sgtatham/putty….
Per saber la ip de la Raspberry es pot fer servir:
ifconfig
cablejat Sensor
instal.lacio llibreries DHT22
Actualitzar la Raspberry pi.
sudo apt-get update sudo apt-get upgrade
Install Adafruit Python code. Necezsari per llegir el sensor DHT22. Tambe pèrmet comprovar que tot esta montat correctament.
Primer, instalar compilador y llibreria python
sudo apt-get install build-essential python-dev python-openssl
Situarse al directori on es vol instal.lar el codi Adafruit , per defecte /home/.
cd /home/pi
Pot fer falta instl.lar Git si no esta inclos per defecte:
sudo apt-get install git
Clonar el repositori git:
git clone https://github.com/adafruit/Adafruit_Python_DHT.g...
Anar al directori corresponent:
cd Adafruit_Python_DHT
And finally install the Adafruit library. Type following and press enter.
sudo python setup.py install
prova del DHT22
Anar al directori Adafruit_Python_DHT y despres al directori examples. Entrar el seguent i pulsar enter enter.
cd /home/pi/Adafruit_Python_DHT/examples
provar el funcionament amb:
sudo ./AdafruitDHT.py sensortipus GPIO
En el cas del cablejat del texte:
sudo ./AdafruitDHT.py 22 4
Si tot esta ok, es veura la lectura del sensor.
configuracio MySql per guardar dades Temperatura
Instalar Mysql/MariaDb y els complements necesaris:
sudo apt-get install mysql-server python-mysqldb
Entrar al mode consola de sql.
sudo mysql -u root -p -h localhost
Pulsar Enter per password (buit)y entrarem en la consola MariaDb
Sobre consola
Primer, crear base de dades temperatures:
CREATE DATABASE temperatures;
Seleccionar la base de dades creada:
USE temperatures;
Crear usuari i garantir acces a la base de dades a aquest usuari:
CREATE USER 'logger'@'localhost' IDENTIFIED BY 'password'; GRANT ALL PRIVILEGES ON temperatures.* TO 'logger'@'localhost'; FLUSH PRIVILEGES;
El usuari/privilegis estan creats. Ara es possible cambiar de l´usuari root a aquest nou usuari:
quit
Tornar a conectar amb el nou usuari
sudo mysql -u logger -p -h localhost
Donar la contrasenya implementada al pas anterior.
Crear dues taules. Temperaturedata per guardar les dades del sensor y data/hora y mailsendlog that amb informacio del correus que han superat els limits de temperatura.
Per crear les taules:
USE temperatures;
Crear la primera taula amb les columnes dateandtime, sensor, temperature y humidity:
CREATE TABLE temperaturedata (dateandtime DATETIME, sensor VARCHAR(32), temperature DOUBLE, humidity DOUBLE);
Crear segona taula amb columnes dateandtime, triggedsensor, triggedlimit y lasttemperature:
CREATE TABLE mailsendlog (mailsendtime DATETIME, triggedsensor VARCHAR(32), triggedlimit VARCHAR(10), lasttemperature VARCHAR(10));
Es pot confirmar, que les taules buides estan creades amb:
SELECT * FROM mailsendlog; SELECT * FROM temperaturedata;
Si les taules exiteixen, es veura: “Empty Set (0.00 sec)”
La base de dades esta configurada es pot sortir de mysql:
quit
Reiniciar mysql perque els canvis tinguin efecte:
sudo /etc/init.d/mysql restart
temperature Logger Code
Asegurarse de estar en el directori on es vol instal.lar el DHT22-TemperatureLogger, per defecte /home/pi/:
cd /home/pi
Clonar el respositori git:
git clone https://github.com/jjpFin/DHT22-TemperatureLogger
Anar al directori DHT22-TemperatureLogger:
cd /home/pi/DHT22-TemperatureLogger
Obrir config.json en un editor:
sudo nano config.json
Llistat de configuracions:
#mysql:Configuracio de la base de dades. #sensors: Configuracions per els sensor conectats a la RPI. #name: nom dels sensor y GPIO on esta conectat. #SensorType: 22 per un dht22 . #Temperature low and high limits per llençar els correus de alerta. #Humidity limits igual per humitat. #Threshold :llindar de activacio de advertencies. #mailInfo: Informacio per els email. #Senderaddress: Remitent dels correus. #Receiveraddress: Receptor dels correus. #Username: nom usuari correu. #Password: password email de enviamaent. #subjectMessage: Capçalera del correu. #subjectWarning: Motiu del correu. #sqlBackupDump: configuracio Backup dumps. #BackupDumpEnabled y/n indica si es vol backup de sql. #backupDay dia per el backup. 1-7 (Monday to Sunday) 0 daily. #backupHour hora del dump - 0-24 #backupDumpPath path on dump es guardat. Per defecte carpeta Backups. #weeklyAverages: Define si s´envien promitjos setmanals. #weeklyAveragesSendingEnabled: y significa activat. #weekDayForSendingAverages: dia de la setmana dels promitjos. 1-7 (Monday to Sunday) #hourOfTheDayForSendingAverages: hora del dia 0-24. #useFahrenheits: y enabled, n disabled. #mailSendingTimeoutInFullHours: 0-x #Per reduir spam. A 0, logger envia mail a cada advertencia. Valors mes alts limiten els correus a un per hora. Utilitzat perque la #safata de entrada no es pleni de advertencies. #adafruitPath: path per Adafruit_Python_DHT per defecte/home/pi/Adafruit_Python_DHT/ Script AdafruitDHT.py.
Un cop fetes les configuracions, premer Ctrl+x y guardar amb “Y”. Provar el funcionament del DHT22-TemperatureLogger :
python DHT22logger.py
Si tot es correcte el programa escriura a la base de dades per comprovar que es aixi entrar a la base de dades:
sudo mysql -u logger -p -h localhost
Posar la password corresponent. A la consola mysql:
USE temperatures; SELECT * FROM temperaturedata;
Comprovar que les lectures s´escriuen a la base de dades, per sortir:
quit
lectura automatica Sensor
Afegir una tasca crontab:
crontab -e
Seleccionar opcio /bin/nano y s´obrira el crontab.
Afegir al crontab la tasca (per exemple cada 15 minuts).
*/15 * * * * python /home/pi/DHT22-TemperatureLogger/DHT22logger.py
Sortir i guardar Ctrl+x seleccionant “Y” quan es pregunti.
Configurar IP estatica Raspbian
Per configurar una IP estática a Raspbian s´ha de edoitar el fitxer /etc/dhcpcd.conf :
sudo nano /etc/dhcpcd.conf
Si mirem el contingut veurem linies comentades (comencen amb '#') que tenen un exemple de configuració IP estática
# Example static IP configuration: #interface eth0 #static ip_address=192.168.0.10/24 #static ip6_address=fd51:42f8:caae:d92e::ff/64 #static routers=192.168.0.1 #static domain_name_servers=192.168.0.1 8.8.8.8 fd51:42f8:caae:d92e::1
thinkspeak
Configuració del compte de ThingSpeak.com
Registrar-se a https://thingspeak.com Si no tenim compte previ a MathWorks ThingSpeak ens redirigueix, amb la possibilitat de emprar el amteix mail per el registre a:https://www.mathworks.com.
Crear un nou channel al nostre perfil i afegir dos field chart (Temperatura i Humitat). Obtindre el “Write API Key” del channel creat servira per configurar el script de conexio a thingspeak i enviament de dades.
Script Python per el envíament de dades al compte de ThingSpeak ts.py
import sys import urllib2 import RPi.GPIO as GPIO import Adafruit_DHT # Write API Key ThingSpeak.com miWriteAPIKey = "XXXXXXXXXXXXXXXX" # Número GPIO de conexión out del sensor dht22 a RaspberryPi raspiNumGPIO = "X" def getSensorData(): RH, T = Adafruit_DHT.read_retry(Adafruit_DHT.DHT22, raspiNumGPIO) return (str(RH), str(T)) def main(): print 'Iniciando...' baseURL = 'https://api.thingspeak.com/update?api_key=%s' % miWriteAPIKey while True: try: RH, T = getSensorData() f = urllib2.urlopen(baseURL + "&field1=%s&field2=%s" % (RH, T)) print f.read() f.close() sleep(5) except: print 'Terminado.' break if __name__ == '__main__': main()
Canvis al codi basic
A miWriteAPIKey introduir la Write API Key del compte corresponent de thingspeak corresponent control-temperatures@fidmag.com.
miWriteAPIKey = "XXXXXXXXXXXXXXXX"
Canviat:
f = urllib2.urlopen(baseURL + "&field2=%s&field1=%s" % (RH, T))
S´ha canviat l´ordre per que apareixi primer la temperatura que es la dada mes rellevant.
automatitzar l´enviament de dades
Afegir una tasca crontab:
crontab -e
Seleccionar opcio /bin/nano y s´obrira el crontab.
Afegir al crontab la tasca (per exemple cada 15 minuts).
*/15 * * * * python /home/pi/Adafruit_Python_DHT/DHT22-TemperatureLogger/ts.py
Sortir i guardar Ctrl+x seleccionant “Y” quan es pregunti.
Canals Thingspeak
enviament de e-mails de alerta amb thingspeak
fer un analisi MATLAB per enviar el mail
- Obtindre una “alert API key” desde Accounts>My profile. Les API de alertes comencen amb “TAK”
- Crear un nou MathLab Analysis a Apps>MathLab Analysis. Clickar “new” a la part superiort i escollir la plantilla en blanc i escriure o enganxar el seguent codi:
alert_body = 'This is the text that will be emailed';
alert_subject = 'This will be the subject of the email';
alert_api_key = 'YOUR_API_KEY_FROM_STEP_1';
alert_url= "https://api.thingspeak.com/alerts/send";
jsonmessage = sprintf(['{"subject": "%s", "body": "%s"}'], alert_subject,alert_body);
options = weboptions("HeaderFields", {'Thingspeak-Alerts-API-Key', alert_api_key; 'Content-Type','application/json'});
result = webwrite(alert_url, jsonmessage, options);
- Ajustar el alert body, subject y la (alert) API key.
- Click “save and Run” i es rebrá un email en uns pocs instants.
- Conectar el MATLAB Analysis a TimeControl o React que depengui del valor del canal en el que estas interessat.
React App
React treballa amb MATLAB® Analysis per fer accions quan les dades del canal compleixen unes determinades condicions.
Definir Reaccions a les dades del canal
Seleccionar Apps>React
- Click a “New React”
- Seleccionar Opcions
- React name: Nom que es vol donar a la alerta
- Condition Type: Es pot seleccionar si la condicio es un string, numeric..etc en el nostre cas numeric
- Test Frecuency: Frequencia amb la que es vol comprobar la reaccio per exemple on data insertion ; cada cop que s´introduieix dades…
- Condition:
- If channel : canal de Thingspeak a analitzar
- Field : camp que vol analitzar exemple Field 1 temperatura
- Is greather than: es mes gran, es poden seleccionar altres condicions
- 27: Valor de llindar
- Action: en el nostre cas MathLab Analisys
- Code to execute: El nom donat al script anterior de enviament de E-mail
- Options: Seleccionar si es vol executar l´script cada cop que es compleix la condicio o nomes la primera vegada
- Save React: Guardar el módul React corresponent.
condition no Data Check
Al apartat condition hi ha la posibilitat de activar no data check, condicio per reaccionar en cas de que no es rebin dades procedents del sensor.Es pot configurar que si es compleix aquesta condicio s´activi el modul react corresponent.
sql
CREATE TABLE temperaturedata (dateandtime DATETIME, sensor VARCHAR(32), temperature DOUBLE, humidity DOUBLE); CREATE TABLE mailsendlog (mailsendtime DATETIME, triggedsensor VARCHAR(32), triggedlimit VARCHAR(10), lasttemperature VARCHAR(10));



