Arrêt brutal des remontées de sonde après une journée ou plus

Dernier épisode du feuilleton…

J’ai finalement acheté la license. Cela répond dans la plupart des cas à mon problème.

Si suite à déconnexion/reconnexion du RFXCOM, le deamon du plugin se plante, alors le mécanisme de heartbeat le relance et tout fonctionne.

Mais dans certain cas, l’erreur USB (suite à déconnexion/reconnexion) ne fait pas planter le deamon et pourtant il n’y a plus de remontée des sondes. Et pour une raison que je ne comprends pas, le heartbeat (timeout fixé à 2 minutes) ne redémarre pas le deamon. Pour pallier ce cas, avec le plugin Script (et 3 petits scripts bash) je récupère la date du dernier démarrage du deamon, la date de dernière remontée de sonde (log du deamon RFXCOM en [DEBUG]) et la date de la dernière erreur USB et ceci toutes les minutes. J’ai créé un scénario qui s’exécute toutes les 5 minutes et effectue un test avec ces trois valeurs qui va redémarrer le deamon en utilisant le code trouvé dans ce post https://community.jeedom.com/t/scenario-pour-redemarrer-automatique-un-demon/18718.

Voici la partie Script:

#!/bin/bash
last_usb_error=`sudo dmesg -T --time-format iso|grep "ftdi_sio ttyUSB0: usb_serial_generic_read_bulk_callback - urb stopped: -32"|tail -1`
echo "${last_usb_error:0:10} ${last_usb_error:11:8}"
#!/bin/bash
date +"%Y-%m-%d %H:%M:%S"
#!/bin/bash
deamon_pid_file=`ls -l --time-style=full-iso /tmp/jeedom/rfxcom/deamon.pid`
echo "${deamon_pid_file:32:20}"
#!/bin/bash
last_collect=`grep "Device is known id" /var/www/html/log/rfxcom |tail -1`
echo "${last_collect:1:19}"

Les scripts bash sont à peaufiner car les cas d’erreur ne sont pas traités (par exemple, l’absence du fichier deamon.pid).

et le scénario :


Rq: le déclenchement du scénario « Notification-Main » envoie une notification sur les iPhones/iPad et sur le Karotz.

Il y a certainement plus simple et pour l’instant le cas complexe qui redémarrerait le deamon par le scénario ne s’est pas encore reproduit…

Voilà si ça peut servir.