Monitorización en Home Assistant: Integración con Oracle Cloud y Node-RED
30 julio, 2024
En este artículo, te mostraremos cómo configurar un sistema de monitoreo externo para asegurarte de que tu asistente doméstico esté siempre en funcionamiento. Esta guía se basa en valiosas indicaciones compartidas por usuarios de los grupos de Telegram Domology y Node-RED Spain. En primer lugar, aprenderás cómo crear una máquina virtual de forma gratuita en Oracle Cloud y cómo instalar Node-RED en ella. Luego, te guiaremos a través del proceso de configuración para monitorear eficazmente tu servidor desde fuera de tu red local. Al final del tutorial, encontrarás los enlaces a los recursos mencionados para que puedas profundizar en cada paso si lo deseas.
Creación de la máquina en Oracle Cloud
Empezamos accediendo a nuestra cuenta de oracle cloud.
Si aún no tienes una máquina virtual, puedes crear una en el siguiente enlace. Ten en cuenta que durante el proceso de creación se te pedirá que proporciones los detalles de una tarjeta de crédito. Sin embargo, no te preocupes, ya que no se realizará ningún cargo a menos que elijas realizar una actualización del servicio, algo que no necesitamos para los propósitos de este tutorial.
Una vez dentro pinchamos en "crear una instancia de vm". Veremos que tiene la opción "siempre gratis elegible"
En la siguiente pantalla, tendrás la oportunidad de elegir el nombre que desees para tu máquina virtual, así como la imagen o sistema operativo que prefieras. Por defecto, se muestra Oracle Linux 7.8, como se ve en la captura de pantalla. Sin embargo, tienes la opción de seleccionar otro sistema operativo si así lo deseas.
Pinchamos en "Mostrar opciones de unidad, red y almacenamiento"
En la sección de dominio de disponibilidad, puedes seleccionar la opción que prefieras. Luego, en la sección de unidad, haz clic en "Cambiar unidad". Se abrirá una ventana donde deberás seleccionar las opciones marcadas como "Siempre gratis elegible", tal como se muestra en la captura de pantalla. Es importante destacar que si la unidad de computación marcada como "Siempre gratis" no está disponible para seleccionar, deberás retroceder y cambiar el dominio de disponibilidad. Asegúrate siempre de elegir la opción identificada como "Siempre gratis elegible".
Nos aseguramos que esté marcada la opción "asignar una ip pública" para poder acceder después a nuestra máquina
En la parte de claves SSH podemos optar por generar unas keys nuevas o utilizar unas que ya tengamos, lo que prefiramos.
Pinchamos en crear y veremos que aparece la máquina "Aprovisionando"
Al poco indicará que la máquina está en ejecución y veremos nuestra ip pública
En la pantalla siguiente, en Listas de seguridad, pinchamos en la de default para editarla
Pinchamos en "Agregar reglas de entrada" y creamos una con esta configuración:
Ya tenemos lista la configuración en oracle, por lo que podemos seguir con la máquina
Instalación de node-RED
Para conectarte a la máquina virtual, utiliza tu cliente SSH habitual y las claves que has especificado al crear la máquina. Por defecto, el usuario para la conexión es opc (o ubuntu si has elegido la imagen de Ubuntu en lugar de la de Oracle).
Ejecutamos este script:
Durante el proceso de configuración, es posible que se te pregunte si deseas que se cree una regla en el firewall para el puerto 1880. Responde afirmativamente. Sin embargo, es importante tener en cuenta que en algunos casos la regla puede no crearse correctamente. Más adelante en este tutorial, proporcionaré una solución para este problema.
Una vez confirmada la creación de la regla del firewall, el sistema seguirá con los pasos necesarios para la configuración. Dado que estamos trabajando con una máquina virtual recién creada, no es necesario realizar ninguna acción adicional en este momento, simplemente confirma los pasos que se te indiquen.
Cuando acabe tendremos algo parecido a esto
Ahora arrancamos Node-RED con el comando node-red-start y veremos que nuestro node-RED se pone en marcha
Si queremos podemos parar node-RED con CTRL+C y ejecutar el siguiente comando para que nodered se ejecute como servicio cada vez que arranque la máquina:
1
sudo systemctl enable nodered.service
Como os decía, aunque el script debería crear las reglas en el firewall, a mí no me funcionó correctamente. Si os ocurre podéis crearlas a mano con este comando
1
sudo firewall-cmd--permanent--add-port=1880/tcp
Y después recargar el firewall
1
sudo firewall-cmd--reload
Una vez hecho todo esto y con nodered arrancado podemos abrir nuestro navegador y utilizando la ip pública de nuestra máquina abrir http://ippublica:1880
Con ello accederemos a nuestro panel de nodered. Ahora mismo el acceso es libre, por lo que podría entrar cualquiera. Podemos añadirle seguridad con usuario y contraseña siguiendo la documentación de nodered.
Creación del flujo de Node-RED
Para aquellos que ya están familiarizados con Node-RED, pueden saltarse esta sección y avanzar directamente a la configuración específica para la integración con Home Assistant. Sin embargo, para aquellos que están descubriendo Node-RED por primera vez, es importante comprender su funcionamiento y potencial.
Node-RED es una herramienta poderosa que nos permite crear flujos y automatizaciones de manera visual y sencilla. En el panel izquierdo de la interfaz, encontraremos una amplia variedad de nodos que representan diferentes funciones y servicios. Estos nodos pueden ser arrastrados al panel central y conectados entre sí para construir flujos de trabajo complejos.
Para iniciar la creación de nuestro flujo, añadimos un nodo "Inject". Este tipo de nodo nos permite iniciar el flujo manualmente o programar su ejecución a intervalos regulares. Por ejemplo, podemos configurarlo para que se ejecute cada minuto.
Después de agregar el nodo "Inject", procedemos a incluir un nodo "HTTP Request" en nuestro flujo. Este nodo nos permitirá realizar solicitudes a nuestro servidor Home Assistant de manera programada o manual.
Al configurar el nodo "HTTP Request", asegúrate de establecer la URL del dominio donde se encuentra tu instancia de Home Assistant, así como las opciones de solicitud adecuadas. Puedes seguir la configuración mostrada en la captura de pantalla proporcionada.
Al ejecutar este nodo, se enviará una solicitud a nuestro Home Assistant, simulando una interacción similar a cuando accedemos a él a través de un navegador web. Si todo está configurado correctamente y la comunicación con Home Assistant es exitosa, recibiremos una respuesta con un statusCode 200, indicando que la solicitud se ha procesado correctamente.
Añadimos ahora un nodo "Switch" que se encargará de evaluar la respuesta que haya obtenido el nodo anterior, y lo configuramos así. Lo que estamos diciéndole es que mande la salida al output 1 del nodo si el statusCode no es 200, es decir, si nuestro Home Assistant no responde correctamente
Seguido al nodo "HTTP Request", incorporamos un nodo "Delay" en nuestro flujo y lo configuramos según se muestra en la captura adjunta. Esta adición nos permite establecer intervalos de tiempo entre cada ejecución del flujo. En este caso, hemos configurado el nodo para que espere 15 minutos antes de continuar con la siguiente ejecución del flujo.
La inclusión de este nodo de retraso es crucial para evitar una avalancha de notificaciones en caso de que Home Assistant no esté disponible. Dado que hemos configurado la verificación para que se realice cada minuto, si omitiéramos este paso y Home Assistant no estuviera disponible, recibiríamos una notificación cada minuto. El nodo de retraso asegura que solo recibiremos notificaciones separadas por intervalos de 15 minutos, lo que ayuda a evitar la sobrecarga de notificaciones no deseadas.
hora vamos a preparar la notificación. He elegido telegram porque a muchos nos resulta ya familiar por haberla utilizado con home assistant, pero se puede utilizar también notificación por email, slack, etc
Añadimos un nodo function donde prepararemos el mensaje que vamos a pasar a telegram
Lo editamos y en la función pegamos lo siguiente
newMsg.payload.content="Home assistant no está disponible";
returnnewMsg;
Como podéis ver se compone de tres parámetros:
- chatId: el id del usuario o grupo de telegram al que queremos enviar la notificación. Poned aquí el que vayáis a utilizar. El ejemplo es para una destinatario, si queréis enviarlo a varios tendréis que utilizar newMsg.payload.chatId=["xxxxxxxx", "xxxxxxxx"];
- type: El tipo de mensaje que vamos a enviar. En este caso es message porque enviaremos texto, pero podríamos enviar también fotos, vídeos, etc
- content: El mensaje en sí mismo. Al ser de tipo message es simplemente el texto que queremos enviar.
Una vez configurado este nodo pasamos al siguiente, que es el que enviará la notificación de telegram. No es un nodo que venga instalado por defecto, por lo que tenemos que instalarlo
Para ello pinchamos en las tres rayitas de la parte superior de la página y después en "Manage palette"
Ahí veremos los nodos que tenemos instalados. Nos vamos a la pestaña Install y buscamos telegram. Elegimos el que os marco y le damos a install
Una vez haya acabado volvemos a nuestro flujo y veremos que en el panel de la izquierda se nos han añadido los nuevos nodos de telegram
Añadimos el que se llama Telegram Sender
Al entrar a configurarlo veremos que en Bot nos aparece "add a new bot". Pinchamos en el icono del lapicero y rellenamos con los datos de nuestro bot. Esto seguramente os sonará de home assistant. Simplemente tenemos que añadir el nombre del bot, el token y los chatid a los que enviaremos notificaciones. El resto podemos dejarlo como está.
Una vez que hemos configurado todos los nodos en nuestro flujo, simplemente los conectamos como se muestra en la siguiente imagen. Después de verificar que todo esté correctamente conectado, hacemos clic en el botón "Deploy" en la esquina superior derecha de la página. Con esto, nuestro sistema estará listo y funcionando.
El botón "Deploy" guarda los cambios y activa el flujo en Node-RED, asegurando que esté listo para ejecutarse. Una vez desplegado, nuestro sistema comenzará a monitorear regularmente el estado de Home Assistant y enviará notificaciones según sea necesario.
Para verificar que nuestro sistema está funcionando correctamente, podemos realizar una prueba cambiando el dominio del nodo HTTP Request para que apunte a un dominio que no existe. Esto provocará que la solicitud falle, pero el resto del flujo continuará ejecutándose como de costumbre, enviándonos la notificación programada. Esta prueba nos permite confirmar que nuestro sistema está configurado para manejar situaciones donde Home Assistant no está disponible.
Es importante recordar que cada vez que realicemos cambios en el flujo, necesitamos hacer clic en "Deploy" en la esquina superior derecha de la página para aplicar esos cambios. Esto garantiza que cualquier ajuste realizado esté activo y listo para su ejecución.
Escrito por Noel
Buenas, me llamo Noel, soy un divulgador y amante del software libre y Gnu Linux.
Usuario inquieto por ver las novedades y dar a conocer a todos las grandes ventajas del software libre y Gnu Linux.
Suscribirse
0 Comentarios
Los más recientes
Los más antiguosMás votados
Feedbacks en línea
Ver todos los comentarios
LiGNUx trabaja sobre una licencia de Creative Commons Reconocimiento 4.0 Internacional.