Bonjour,
J’ai écrit un programme Python qui se connecte à un topic Mqtt, reste à l’écoute et fait des actions à réception de messages. J’aimerais faire de ce programme un daemon Jeedom (autrement dit un service) afin de pouvoir :
le démarrer (=> le programme se lance, se connecte au topic et reste en écoute)
le stopper (=> le programme se déconnecte du topic et s’arrête)
le monitorer (savoir si le programme est bien running ou stopped)
avoir accès à des logs en cas d’erreurs
Je n’ai pas réussi à trouver de documentation technique sur le site Jeedom ni dans les posts de la communauté. Une bonne âme pour me renseigner ?
Merci !
A priori le plus simple serait de faire un plugin en se basant sur la documentation développeurs, le plugin template qui contient un exemple de démon en python si je ne m’abuse ainsi que d’autres plugins utilisant un démon.
Si cela correspond à ton besoin, tant mieux, si ton besoin est différent, on peux surement t’aider .
On cherche à rendre le code de jMQTT utilisable par d’autres plugins, cela peux peut-être t’intérésser.
Merci @Salvialf pour ta réponse. J’avoue que la perspective du travail pour créer un plugin pour « juste » faire un démon de mon programme python me démotive au vue de la longueur du tuto (merci à ZygOm4t1k d’ailleurs). Ou alors (c’est peut-être une idée d’un nouveau plugin !) un plgin « générique » qui prend en paramètre un script pour en faire un démon. En attendant je me disais que j’allais peut-être juste faire un service sur le raspberry ou alors me servir du plugin script avec un scénario pour le lancer au démarrage.
@domochip : Figure toi que j’ai effectivement suivi dans le forum les travaux de reprise de jMQTT et qui tombent à pic car j’utilise ce plugin pour mon projet et j’avais le pb d’affichage en V4 des infos. J’ai pu contourner le pb en « en dur » selon la technique d’un des posts. Depuis j’ai vu qu’il était tout juste sorti en stable ! Je l’ai pas encore installé (notamment la bêta) car pour le moment ça marche de mon côté et j’ai lu qu’il y avait des problèmes de fuite de mémoire ? Je ne sais pas si corrigé. Du coup peux-tu me dire ce que fait le nouveau daemon de jMQTT et comment je peux soit m’y brancher, soit l’étendre avec mon prg ?
Si besoin je peux décrire ce qu’il fait plus en détail. En résumé il se connecte à topic jMQTT et écoute les messages. A réception, il va chercher des data sur le web et renvoie json par message sur un autre topic jMQTT. J’ai ensuite un widget que j’ai mis sur le champ info jMQTT de ce topic de réponse qui parse les données et les affiche avec une belle CSS
Merci !
Concernant le problème de fuite mémoire, il était déjà présent dans l’ancienne version (moteur actuel de la stable). Le nouveau daemon (moteur de la beta) n’a ni dégradé ni amélioré la situation. le problème se trouve probablement dans Jeedom Core…
Le nouveau daemon permet de gérer des connexions à différents broker et de renvoyer à Jeedom les messages reçus.
Par rapport à ton prg, tu indiques qu’il se connectes à un topic jMQTT. Cela veut-il dire que le message de « demande » est envoyé par Jeedom à travers jMQTT?
Si c’est bien le cas et que tu vise un usage purement Jeedom, tu devrais pouvoir faire ce genre de récupération d’info par le plugin script.
Hello,
Oui c’est un usage Jeedom uniquement. J’ai finalement opté pour un script (shell .sh) qui est lancé au start de jeedom. Le fichier .sh est le suivant
#!/bin/bash
#Kill any existing script before
sudo ps ax | grep monProg.py | grep -v grep | awk '{print "sudo kill -9 " $1}' | sh
#launch new process
sudo python3 /var/www/html/plugins/script/data/monProg.py &