Je ne suis pas certain que Jeedom soit tellement conçu pour cela, même si dans l’absolu ça doit pouvoir marcher, tu es quand même en limite pour un système domotique.
Oui, je pense pas que tu puisses faire comme ça, de plus je comprends pas pourquoi tu fais un remove_inat ?
Techniquement tu dois pouvoir faire ça via un bloc code et le faire directement en php.
Cependant je suis pas certain que ce soit tellement judicieux, perso je ferais plutot par exemple de la façon suivante en partant sur l’hypothèse que tu check toutes les 5s :
Une programmation fixe toutes les heures.
Une boucle de 1 à 719
Dans la boucle ton action d’interrogation
Un sleep 5s
A ajuster et à surveiller bien sur. Voir si tu ne prends pas trop de « retard » sur 1h.
Et en fonction du hardware sur lequel se trouve ton système, si par exemple c’est une carte SD qui va pas aimer les écritures incessantes, désactiver les logs du scénario et ne logger de ton coté que si il y a des choses interessantes.
Cela se limite à un seul scénario. Je souhaite tenter car Jeedom est sur un serveur Proxmox → beaucoup de CPU, de RAM, et SSD endurant.
Dans mes essais j’avais coché multi-lancements et le scénario ne s’arrêtait plus. J’ai été obligé de redémarrer pour le supprimer. J’ai décoché multi-lancement, donc je vais retirer cette ligne.
Pourquoi déconseilles-tu cette façon de faire ?
OK, je vais tester l’idée en attendant de trouver une « vraie » boucle infinie.
SSD endurant, donc pas de SD fragile ici. Mais tu fais bien de rappeler le risque !
Merci pour tes retours !
Pour ceux qui sauraient, je reste preneur de comment faire une boucle infinie.
Car je ne suis pas sur que jeedom soit réellement conçu pour avoir des scénarios qui ne s’arrêtent jamais. Mais bon peut etre à tester …
Et aussi pour savoir ce qui lance ta boucle. Dans le cas d’une vraie boucle infinie, tu pourrais avoir un scéanrio qui à pour déclencheur le démarrage de jeedom. Mais si pour X raison ta boucle se plante ou s’arrete, il faudra que tu puisses la redémarrer … C’est pas infaisable mais bon je trouvais plus simple avoir un scénario qui dure 1h et se relance toutes les heures.
Après rien ne t’empêche via un bloc code de faire un while hein. C’est juste que je n’ai jamais testé et je ne sais pas comment jeedom va se comporter !
voici un code à mettre dans un bloc « Code » d’un scénario.
C’est ce scénario qui lancera « #[Aucun][Aucun][scLectureAnalogiqueSecondes]# » toutes les X secondes.
$pauseEnSecondes = 5;
$scLectureAnalogiqueSecondes = scenario::byString("#[Aucun][Aucun][scLectureAnalogiqueSecondes]#") ;
while (1) {
// Cette boucle s'active toutes les "$pauseEnSecondes"
// A toi d'y mettre le code PHP que tu veux.
if($scLectureAnalogiqueSecondes->running() == false) { // si le scénario n'est pas en cours
$scLectureAnalogiqueSecondes->launch(); // Lancement du scénario
}
// Attend X seconde avant la prochaine verification (1000000 microsecondes = 1 seconde)
usleep($pauseEnSecondes * 1000000);
}
J’ai pris le mien et j’ai adapté pour ton besoin (si j’ai bien compris)
Attention avec while(1) ca fait un boucle infini donc tu peux l’arrêter seulement à la main (bouton arreter du scenario)
Les boucles infini c’est dangereux si tu mets une mauvaise tempo ca sature la mémoire et faut redémarrer.
Donc ne pas le lancer automatiquement au démarrage de Jeedom tant que tu ne l’as pas tester et qu’il marche correctement
Perso j’aurais fait les actions directement dans la boucle plutôt que de se servir de la boucle pour lancer le scénario qui va faire l’action.
Même si au final ça revient au même ça va sans doute mettre à jour beaucoup plus de trucs coté jeedom (date de dernière exécution du scénario, le fait qu’il soit en cours ou non …) de façon hyper fréquente pour pas grand chose.
Ca permet de se servir de cette boucle pour lancer plusieurs scénario si besoin… C’est plus lisible.
Et certaine actions sont plus facile à mettre en place dans un autre scénario que de tout faire en PHP
Oui je suis connecté en ssh. Par contre cela n’a pas fonctionné à cause d’un pid différent.
J’ai pensé à un manque de rapidité de ma part (lecture pid puis commande kill).
J’ai donc fait un script → pas mieux
Pour comprendre, j’ai saisi n fois la commande (à la volée), je vois que le pid change systématiquement :
Au lieu de rester identique durant 3 secondes. Ou alors il y a X scénarios qui tournent en mémoire, mais ps devrait l’afficher… J’ai loupé un truc ?
Oui, je ne garderai que le bloc code, donc plus d’autres pauses.
Au pire je fais comme dit @c.miorin , je désactive et je redémarre.