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,931