Domótica con MicroPython y Home Assistant

Víctor Suárez García -  HackLab Almeria

Python Almeria

Víctor Suárez

Ingeniero informático por la Universidad de Almeria. Miembro de Hacklab Almería (y de La Jaquería) y entusiasta de la tecnología.

Domótica

Se llama domótica a los sistemas capaces de automatizar una vivienda o edificación de cualquier tipo, aportando servicios de gestión energética, seguridad, bienestar y comunicación, y que pueden estar integrados por medio de redes interiores y exteriores de comunicación, cableadas o inalámbricas, y cuyo control goza de cierta ubicuidad, desde dentro y fuera del hogar. Se podría definir como la integración de la tecnología en el diseño inteligente de un recinto cerrado.

¿Os habéis enterado? Por que yo no...

Domótica

Domótica

  • Dispone de varios sensores y actuadores
  • Debe ser capaz de actuar de forma autónoma siguiendo unas directrices.
  • Debe ser tolerante a fallos.

Domótica

Existen ya muchos componentes para poder crear nuestra casa domotizada pero... muchos son privativos y solo funcionan con sus componentes... Lo cual encarece mucho el coste.

Entonces.... ¿Cómo creamos nuestro sistema domótico sin dejarnos un ojo de la cara?

ESP8266

Microcontrolador que permite conectar via wifi y poder crear el llamado IOT (Internet Of Things).

ESP32

Evolución del ESP8266, Añade más potencia (2 núcleos), Bluetooth, Soporte hardware criptográfico, etc...

ESPXX

Los ESP (ESP8266 o ESP32), permiten ser programados en muchos lenguajes conocidos; como arduino,C, C++, Micropython, Lua,etc....

MicroPython

Micropython es una implementación ligera de un interprete python y librerías e incluso un gestor de paquetes (upip), pensado en ser usado en microcontroladores como microbit, ESP8266, ESP32, etc...

MicroPython

Micropython se puede instalar tanto en el ESP8266, como en el ESP32. Además de otros dispositivos como el MicroBit (BBC).

Seguidamente se muestra el Blink, usando MicroPython.

from machine import Pin
from time import sleep
#El Pin del led es el 2 que corresponde al GPIO2

ledpin=2
pin = Pin(ledpin, Pin.OUT)
while True:
  pin.value(1)
  sleep(1)
  pin.value(0)
  sleep(1)

MicroPython

Para poder usar MicroPython en los ESP, simplemente tenemos que descargar la imagen e "instalarla" en nuestra placa.

 

Después, podemos usar el REPL que trae integrado para poder usar Python directamente en el Micocontrolador.

Home Assistant

Home assistant es un sistema domótico de código abierto que permite automatizar los distintos sistemas que se encuentren integrados.

Home Assistant

Gracias a Home Assistant podemos tener  distintos sensores y actuadores que podremos usar para automatizar tareas.

Home Assistant

  • Software Libre
  • Creado con Python
  • Ligero de usar (Se instala en una Raspberry Pi).
  • Permite integrar gran cantidad de dispositivos.
  • Permite realizar automatizaciones.

Hassbian

Hassbian es una distribución basada en Raspbian que ya trae preinstalado home assistant y algunos otros componentes. Esta opción va a quedar ya en breve deprecada.

Hass.io

Versión de Home assistant instalado usando Docker. Trae muchos añadidos (addons) y suele ser más fácil su integración.

Home Assistant

Integraciones

Home Assistant

Automatizaciones

Home Assistant permite crear pequeñas acciones a partir de condiciones que puedan ocurrir. Por ejemplo, si me he dejado el gas abierto en la cocina.

Ejemplo de Integración MicroPython y HomeAssistant

Vamos a ver un ejemplo de integración de un sensor de presencia (PIR) y Home assistant usando MicroPython.

 

Aunque tambien podemos usar otras herramientas como ESPHome

Componentes

  • ESP8266 o ESP32
  • BreadBoard
  • Sensor PIR
  • Cables

MQTT

Para comunicarnos con Home Assistant, usaremos el protocolo MQTT.

 

El protocolo MQTT es un protocolo ligero que permite enviar y recibir información de forma muy sencilla.

MQTT con MicroPython

def connect_mqtt(uuid,mqtthost, mqttport, mqttuser, mqttpassword):
    print("Connecting to MQTT")
    client = MQTTClient(uuid, mqtthost,port=mqttport, user=mqttuser, password=mqttpassword)
    client.connect()
    return client

def publish_state(client, prefix, uuid, state):
    topic=prefix+"/"+uuid+"/state"
    payload="{'state':'"+state+"'}"
    print("Publishing "+ topic+ " with payload "+payload)
    client.publish(topic,payload)

Podemos usar un cliente MQTT usando upip para instalar una libreria.

import upip
upip.install('umqtt')

Home Assistant con MQTT

Gracias a MQTT, podemos añadir un nuevo sensor en Home Assistant usando las distintas integraciones que dispone.

Muchas Gracias

¿Alguna Pregunta?

Referencias y Recursos

micropythondomotica

By zerasul

micropythondomotica

Domotics with MicroPython

  • 1,922