NODE MCU & DOMOTICS
Apagar/encender el ordenador con un robot de Telegram.
¿Qué es?
El principal objetivo de este proyecto era de poder encender, apagar y comprobar si mi ordenador estaba encendido/apagado de forma remota a través de mensages por Telegram a un robot creado por mi mismo.
Este robot está alojado en una Raspberry Pi 4 que he situado en el comedor, junto al router. De esa forma, siempre está encendida y con conexión a internet, por lo que el robot estará siempre operativo. Pero como que mi ordenador no se encuentra en el comedor, tenía que pensar en una solución para comunicar los dos aparatos.
Después de descartar la idea de poner cables por toda la casa, y la de encender mi ordenador con la función de Wake on LAN, (ya que me gusta desconectar mi ordenador de la corriente cuando no está encendido), todas las soluciones apuntaban al uso de la placa Node MCU: se comunicaria con la Raspberry mediante WiFi.
Esa placa funciona (y se programa) como un Arduino, pero también cuenta con una antena de WiFi. Después de leer algunas documentaciones y turoriales, encontré que la manera más sencilla de comunicar las dos placas era de tratar el MCU como un servidor web (que respondría a peticiones). En comparación con la alternativa del mqtt, me ahorraba muchas horas de trabajo.
Utilizando algunos relés, diodos y fotocopladores, mi ordenador pudo ser conectado de forma segura a las instrucciones del MCU. Como podréis ver en la foto principal, soldé los componentes electrónicos en una pequeña placa, para mantenerlos más límpios y seguros.
Situación actual
Este proyecto se encuentra actualmente aparcado. Des del dia del "lanzamiento", he tenido diversos problemas con un fotocoplador. Como que me daba pereza y no tenia el tiempo suficiente para dedicar a repararlo, cambié algunos ajustes de la BIOS de mi ordenador, de tal forma que todavía lo puedo encender de forma remota, peró unicamente lo puedo apagar des de el menú de Windows. Sin embargo el robot funciona a la perfección, e incluso con algunas funcionalidades addicionales.
He hecho el robot más "seguro", añadiendo permisos de usuario, contraseñas, registros de mensages, ... y también lo he puesto más "traducible": todos los mensages que ve el usuario estan guardados en un archivo .json en el que se puede escoger el idioma cambiando el nombre.
Y el verano pasado, conecté 3 webcams (una de forma remota usando MotionEyeOS) y las puse en modo de grabar si detectan un movimiento. Pero la relación que tienen con este proyecto es que a todo momento podía pedir una captura de cualquier webcam a través del robot de Telegram.
Podéis ver la electrónica básica y todo el código fuente en este repositorio de GitHub.
Mejoras planeadas
Se pueden hacer muchas cosas para mejorar este proyecto. Primero de todo, se puede reparar el problema que he estado experimentando con el fotocoplador. Y después se podrían empezar a poner funcionalidades adicionales, como un instalador, un manual, una GUI (interfaz de usuario), un selector de idioma, ... todo para hacer que el programa sea lo más personalizable posible.
Y una cosa que también he planeado hacer (pero no he planeado cuándo hacerla) es de poder controlar unos altavoces que puse en la Raspberry Pi a través de Telegram: poder programar las canciones, los horarios donde debe de sonar música, etc.