Hoy os traemos una entrada especial y muy enfocada al Do It Yourself. Se trata de cómo puede ayudar una plataforma como FIWOO a conectar todos los sensores que quieras para monitorizar tu hogar. Empezaremos creando un sistema para medir presencia de agua.
Los materiales que vamos a utilizar serán:
- Un sensor de humedad resistivo (no capacitivo)
- Una Raspberry Pi 4
- Cables de alimentación y conexionado
Además, necesitaremos:
- Una red WiFi
- Un usuario en la plataforma FIWOO
¿Listos? ¡Vamos al lío!
Preparación de la Raspberry Pi
La Raspberry Pi será la que haga de concentrador o gateway de todos los sensores que queramos conectarle. Teníamos muchas alternativas para hacerlo, pero en este caso lo hemos hecho de manera cableada para una primera prueba de concepto.
Lo primero que haremos será configurar la Raspberry Pi para que se conecte a nuestra red WiFi y habilitarle el servidor SSH. No nos pararemos en esta entrada a detallar estos procedimientos, pero con una búsqueda rápida en Internet, podremos ver cómo se hace fácilmente.
Nos conectaremos a continuación a nuestra Raspberry por SSH, introduciendo el comando:
ssh pi@<RASPBERRY IP>
Podremos averiguar la IP de la raspberry accediendo al router. Una vez ingresemos la contraseña de nuestra raspberry (por defecto, la contraseña es «raspberry«), crearemos un nuevo directorio y crearemos un script en python.
No tendría sentido ponernos a programar este script sin ver cómo vamos a conectar nuestro hardware
Preparación del sensor
Como hemos comentado anteriormente, vamos a cablear el sensor de presencia de agua a la Raspberry Pi. Tendremos que conectar a los GPIO tanto la alimentación, como la tierra, como la salida digital. Recordemos que la Raspberry no admite entradas analógicas per se. Más adelante veremos cómo haciendo uso de un módulo de conversión analógico/digital, podremos medir no sólo la presencia de agua, sino el porcentaje de humedad presente.
La disposición del hardware será como la que se ve en las siguientes fotos:
Conectaremos la salida digital D0 al pin GPIO 21 de la raspberry. El cable rojo será cableado a la alimentación y el marrón a la tierra. Con esto, ya estaremos en disposición de programar nuestro script.
Preparación del script
Una vez cableado y teniendo acceso por SSH a la raspberry, crearemos un nuevo directorio, y accederemos a él, para finalmente crear un script en python. Además utilizaremos un editor de texto que no viene instalado por defecto (emacs). Este paso se puede omitir y cambiar el editor por otro como nano, o similar.
mkdir agua && cd agua
apt-get update && apt-get install -y emacs
emacs water.py
Ahora crearemos el script para ver cuándo hay presencia de agua. En función de si hay o no hay presencia de agua, mandaremos información a FIWOO con un valor a «1» o a «0». El código es el siguiente
#!/usr/bin/python
import RPi.GPIO as GPIO
import time
import requests
import json
import sys
import random
#GPIO SETUP
channel = 21
GPIO.setmode(GPIO.BCM)
GPIO.setup(channel, GPIO.IN)
API_Key = 'insert api key here'
idashost = 'demo.fiwoo.eu'
ul20port = '7896'
Dev_ID = 'jardin_t1'
URL = "http://"+idashost+":"+ul20port+'/iot/d?k='+API_Key+'&i='+Dev_ID
def callback(channel):
HEADERS = {'content-type': 'text/plain' , "fiware-service":"howtoservice", "fiware-servicepath":"/howto"}
MedidaTrue='h|1'
MedidaFalse = 'h|0'
PAYLOAD = None
if GPIO.input(channel):
PAYLOAD = MedidaFalse
else:
PAYLOAD = MedidaTrue
r = requests.post(URL, data=PAYLOAD, headers=HEADERS)
print("* Status Code: "+str(r.status_code))
print("* Response: ")
print(r.text)
time.sleep(1)
GPIO.add_event_detect(channel, GPIO.BOTH, bouncetime=1) # let us know when the pin goes HIGH or LOW
GPIO.add_event_callback(channel, callback) # assign function to GPIO PIN, Run function on change
# infinite loop
while True:
time.sleep(1)
Preparación de la plataforma
Por último, sólo tendremos que acceder a FIWOO y configurar nuestro dispositivo IoT y crear un dashboard.
En este primer video vemos cómo crear el dispositivo y el dashboard , para posteriormente crear un widget que represente la información:
Ya sólo nos queda crear el widget para que represente la información en tiempo real. Vamos a crear un widget de aguja que represente el valor de presencia del agua.
Prueba final para medir presencia de agua
Ya tenemos nuestro sensor cableado, nuestro dashboard creado y con el widget configurado. Sólo falta ejecutar en la raspberry el script que hemos programado y que envía los datos a la plataforma.
Podemos ejecutarlo mediante la orden
python water.py
Finalmente, introduciremos el sensor en agua y lo sacaremos, y veremos cómo varían los datos en la plataforma.
Conclusiones
Hemos visto cómo conectarnos a FIWOO utilizando un sensor y una raspberry. Las posibilidades a partir de aquí son infinitas, ya que la Raspberry puede hacer de concentrador de toda la información, y ésta, podemos distribuirla visualmente en FIWOO para tener un control total de nuestra casa, o en cualquier ámbito de aplicación que se nos ocurra.
¡Estad atentos para próximos posts de IoT!
0 comentarios