Un sistema de hogar inteligente para la adquisición y evaluación de datos se organiza en capas diferenciadas. La capa de dispositivos incluye sensores como los de temperatura, humedad o movimiento, además de actuadores como luces o cerraduras, que se conectan mediante protocolos de IoT tales como MQTT o HTTP. La información se transmite a través de redes inalámbricas, por ejemplo, Wi-Fi o ZigBee, hacia un servidor central o la nube. Posteriormente, los datos se almacenan en bases de datos, como MongoDB o InfluxDB, y se procesan para su aálisis. Finalmente, una intrefaz de usuario, desarrollada con herramientas como Flask o Dash, muestra resultados en tiempo real y genera reportes.
Adquisición de Datos desde Sensores
Selección e Integración de Sensores
Entre los sensores comúnmente usados se encuentran los de temperatura y humedad (por ejemplo, DHT11), los de calidad del aire (como MQ-2), los de presencia (PIR) y los de luminosidad (LDR). Estos se gestionan con placas como Raspberry Pi o ESP32. En este caso, se empleará una Raspberry Pi con un sensor DHT11 para capturar variables ambientales.
Lectura de Datos del Sensor
Para obtener lecturas del sensor DHT11 en la Raspberry Pi, se utiliza una biblioteca de Python que permite acceder al hardware.
Primero, se instala la dependencia necesaria:
pip install Adafruit_DHT
A continuación, se muestra un código de ejemplo modificado para capturar datos:
import Adafruit_DHT as SensorLib
def read_environment_values(sensor_model, pin_location):
attempt_limit = 5
for _ in range(attempt_limit):
moisture, heat = SensorLib.read_retry(sensor_model, pin_location)
if moisture is not None and heat is not None:
return heat, moisture
return None, None
if __name__ == '__main__':
sensor_type = SensorLib.DHT11
gpio_pin = 4
temp_result, hum_result = read_environment_values(sensor_type, gpio_pin)
if temp_result is not None and hum_result is not None:
print(f"Temperatura medida: {temp_result} grados Celsius, Humedad: {hum_result} por ciento")
else:
print("Fallo en la obtención de datos del sensor tras varios intentos")
Transmisión de Datos mediante MQTT
Para enviar los datos capturados a un servidor o plataforma en la nube, se emplea el protocolo MQTT, que es ligero y adecuado para IoT. La biblioteca Paho MQTT en Python facilita esta tarea. El código de transmisión se basa en publicar los valores en un tema específico, donde un cliente suscrito puede recibirlos en tiempo real. Esto permite desacoplar la recolección del procesamiento y almacenamiento.