Hola,
Resulta que tengo un programa picado en python que se ejecuta en background en un rpi y me gustaría monitorizarlo desde eedomus para ver su estado por si ha fallado, con que me diga si esta running o no es suficiente.
¿Alguna idea de como se puede hacer? Lo primero que se me ha ocurrido es crear un script en php en eedomus que me monitorice el proceso de python de la rpi, pero no se si es la mejor opción o hay alternativas mejores.
Puedes monitorizarlo directamente desde la RPI, no? Por ejemplo, con monit (puedes hacer que te envíe un mail si falla, una push, intente arrancarlo de nuevo… etc).
No conocía Monit, lo he estado mirando y sí que me podría servir para monitorizar el proceso en si, pero me gustaría poder integrar en eedomus el estado del proceso.
Pero por entenderlo, para que necesitas el status en eedomus? Podrías hacer una acción en monit que haga una llamada http a un dispositivo de eedomus si se da una situación x. En monit puedes decir que ejecute un script si pasa algo, en ese script con curl haz tu llamada http al dispositivo virtual de eedomus
Listo, ya esta hecho. Lo he hecho con un dispositivo virtual y lo actualiza el propio programa de python capturando las excepciones y cambiando el valor a ERROR del dispositivo virtual o a Running cuando se empieza a ejecutar.
Y lo de tenerlo en eedomus es por comodidad y porque el proceso python lo que hace es extraer las estadísticas de consumo de los dispositivos zwave vía la API de eedomus y los vuelco en grafana para tener gráficas de consumo, de esta forma tengo el proceso controlado desde el propio controlador y con un regla me envía una notificación push si falla.
Me he dado cuenta que cuando llamo a la API de eedomus para extraer los consumos, de vez en cuando la petición http no termina y el proceso python acaba con error lanzando una excepción en el socket del tipo “Temporary failure in name resolution”