entramado.net

Posts tagged “EmonCMS

Monitorizar la temperatura desde Raspberry Pi

En este pequeño tutorial os voy a enseñar como monitorizar la temperatura de una habitación con sólo una Raspberry Pi, un sensor de temperatura DS18S20 y un poco de software.

Vamos a utilizar Emoncms, del que ya os he hablado anteriormente, instalarlo es realmente fácil, no tengáis miedo de seguir estas instrucciones, enseguida lo tendréis funcionando.

El siguiente paso va a ser conectar a la Raspberry Pi el sensor DS18S20+, podéis pedir una muestra gratuita a Maxim Integrated. El sensor se conecta usando los pines que tenemos disponibles en la RPi. Para conectarlo hay que seguir el siguiente esquema:

DS18s20 conectado a Raspberry Pi.

DS18S20 conectado a Raspberry Pi.

Es muy sencillo de conectar utilizando unos conectores para jumpers, yo he reciclado los que venían para la placa base de un PC de sobremesa antiguo, los que la conectan con los LEDs y los botones de encender y reiniciar.

El siguiente paso es poner en marcha una aplicación que recoja la temperatura del sensor y la envíe al servidor EmonCMS. Para ello voy a utilizar Python, un lenguaje interpretado muy sencillo que se utiliza mucho en la comunidad Raspberry Pi. El acceso al sensor se realiza a través de un driver que nos proporciona ya nuestra distribución de Raspbian.

El siguiente código es plenamente funcional, aunque posiblemente algo espartano, es necesario que añadáis vuestra apikey de Emoncms, la encontraréis entrando a vuestro servidor Emoncms, en la ruta /emoncms/input/api, hay que elegir la “Read & Write:” puesto que vamos a escribir los valores.

También podéis modificar cada cuanto tiempo queréis que se envíen los datos, en este caso cada 10 segundos, pero es posible modificar la línea “time.sleep(10)” por el número de segundos que queráis.

import os
import glob
import time
import urllib2, httplib
os.system('sudo modprobe wire')
os.system('sudo modprobe w1-gpio')
os.system('sudo modprobe w1-therm')
base_dir = '/sys/bus/w1/devices'
f = open(base_dir + '/w1_bus_master1/w1_master_slave_count', 'r');
sensorCount = f.readlines()
sensorCount = [int(l[0]) for l in sensorCount]
f.close()
f = open(base_dir + '/w1_bus_master1/w1_master_slaves', 'r');
devices = f.readlines()
f.close()
def read_temp_raw(sensor):
device_file = base_dir + '/' + devices[sensor][:-1] + '/w1_slave'
f = open(device_file, 'r')
lines = f.readlines()
f.close()
return lines

def read_temp(sensor):
lines = read_temp_raw(sensor)
while lines[0].strip()[-3:] != 'YES':
time.sleep(0.2)
lines = read_temp_raw(sensor)

equals_pos = lines[1].find('t=')
if equals_pos != -1:
temp_string = lines[1][equals_pos+2:]
return temp_string[0:4]

while True:
url = "http://localhost/emoncms/input/post?json={"
for x in range(0, sensorCount[0]):
url = url + devices[x][:-1] + ":" + read_temp(x) + ","
url = url[:-1]+"}&apikey=LA_APIKEY_VA_AQUI"
print(url)
urllib2.urlopen(url)
time.sleep(10)

Acordaos de respetar la indentación (tabuladores) en el código, si no no funciona bien en Python. Guardamos este código como un archivo .py, por ejemplo temperatura.py y ya lo podemos ejecutar de la siguiente forma:

python temperatura.py

Ahora ya nos podemos ir a Inputs en Emoncms y encontrar la entrada correspondiente a nuestro sensor de temperatura. En su configuración añadiremos un proceso “x 0.01” para que nos muestre la temperatura en ºC y bajo de eso un “Log to feed” para poder mostrarla. Ahora ya aparecerá en la pestaña Feeds, donde la editaremos y la seleccionaremos como REALTIME. Por último en la pestaña Vis seleccionamos el visor Realtime y el feedid de nuestro sensor de temperatura. El resultado será algo parecido a esto:

Temperatura en tiempo real.

Temperatura en tiempo real.

Ahora podemos poner este visualizador en el Dashboard y habremos terminado.

Actualización: Ahora puedes bajar el archivo python desde mi Github: https://github.com/carsanbu/tipi-web/blob/master/utils/temp_DS18S20_emoncms.py


Red de Hogar

Cada día está más claro que es necesario ir formándose una red en nuestra casa, con la cantidad de dispositivos que tenemos en nuestros hogares, que deben compartir información; podemos hacer esto mediante la nube, la solución que se está imponiendo, pero perdemos la propiedad de nuestros datos y nuestro control sobre ellos, además de estar condicionado por tu conexión a internet .
Logo de ownCloud
La solución a este problema consiste en crearse esta red en nuestra propia casa, en un principio surgieron los NAS, pero su precio nunca ha llegado a ser lo suficientemente bajo para que se extienda su uso, hoy en día podemos acudir a soluciones de muy bajo precio utilizando un Raspberry Pi, un disco duro por USB y owncloud. Hacerlo no es nada difícil, podemos seguir el tutorial de mi amigo Toni de Electroensaimada, pero no tenemos que quedarnos sólo con esto, también podemos incluir un cliente Torrent, para que funcione como un servidor de descargas con un consumo mínimo.

Otra aplicación que podemos utilizar en ownCloud, además de sincronizar y almacenar archivos, es la de sincronizar nuestros calendarios y agendas entre dispositivos, para ello utiliza calDAV y cardDAV respectivamente, que son ampliamente utilizados por los clientes PIM más conocidos, son estándares libres por supuesto.

También tenemos la opción de identificarnos en ownCloud con OpenID, cosa que aún estoy probando y no tengo muy claro como funciona.

EmonCMS

Así luce EmonCMS.

Por otra parte, dejando de lado el manejo de información personal, leí en la edición de octubre de Elektor como crearte una pasarela web que leyera el consumo y lo transmitiera a un servidor, el montaje es muy parecido al de mips & chips, pero con conexiones a interfaces S0, muy extendidas en los contadores eléctricos y algunos de agua o gas. Como software se utilizaba EmonCMS de OpenEnergyMonitor, como su nombre indica es un CMS, como WordPress o Drupal pero dedicado a la medida de energía, muy interesante para utilizarlo en gestión de eficiencia energética.

Y con esto he comentado ya las opciones más interesantes para crearnos nuestra propia red de hogar, el siguiente paso es interconectar entre varios hogares y crear redes de edificios, redes de ciudades y red libre en general.


Todos usamos cookies, acéptalo ya. más información

The cookie settings on this website are set to "allow cookies" to give you the best browsing experience possible. If you continue to use this website without changing your cookie settings or you click "Accept" below then you are consenting to this.

Close