1er message sur community : bienvenue !
(et merci de reposter la demande ici)
je te propose cette solution (qui pourra servir à un plus grand nombre) :
avoir la possibilité de mettre une date de début et/ou une date de fin pour chaque utilisateur.
si aucune date renseignée => user valide tout le temps
si qu’une date de début => user valide seulement à partir de cette date
si qu’une date de fin => user valide seulement jusqu’à cette date
si date de début et date de fin => user valide entre les 2 dates uniquement
Salut,
Si je voulais pousser le vice, il serait intéressant de rendre cette option récurrente.
Par exemple, ta femme de ménage vient tous les mercredi, ce code serait valable tous les mercredis de telle à telle heure, tant de fois par semaine, par mois, …
Une case à cocher « récurrent » avec la récurrence s’affichant une fois cochée, ça serait top.
si date fixe sans durée => date de début définie, sans date de fin
si date fixe avec durée => date de début définie, et la date de fin sera calculée
si récurrent avec durée => date de début calculée, et date de fin calculée => lorsque la date de fin est atteinte, on calcule une nouvelle de nouvelles date début/fin, etc …
Comment gérer et signifier la récurrence (ihm, cron, …)
Ne pas oublier de gérer la cohérence entre récursivité et date de fin ou durée. Je veux dire que si la prochaine instance est antérieure à la fin de l’instance courante → dead-lock
tu ne saisies pas de date de fin, c’est seulement une durée. la date de fin est calculée en fonction
ca ne devrait pas arriver.
je mets à jour les date début & fin, seulement lorsque la date de fin est passée => je recalcule avec le cron donné pour trouver la prochaine date de début, et je déduis la date de fin en y ajoutant la durée
ya un cron (5) qui tourne pour vérifier si la date de fin est passée (lorsque présent), si c’est le cas alors les dates sont maj
1er ligne => date fixe , donc 1 shot
2e ligne => cron => date récurrente. Le 16/8 à13h15 (cron5) la date de fin de ce code sera passée, et donc on en recalculera des nouvelle => debut 17/8 à 12h54 jusqu’au 17/8 à 13h14
pour ta femme de ménage qui vient tous les mercredis entre 10h30 et 12h30 :
Oui mais que se passe-t-il si tu mets une validité d’une durée de 3 jours et que tu indiques une récursivité de 2 jours?
C’est de ce risque d’incohérences que je parle.
1 jour sur 2, ça n’est pas possible à faire de base avec l’outil, donc ca sera un utilisateur « avancé » (ou un qui ne comprend pas ce qu’il fait !) il fera donc attention à rester cohérent
dans tous les cas j’affiche la date de début et de fin calculées et appliquées à l’instant T
donc soit tu vois qu’il y a un soucis et tu changes,
soit pas … et tant pis !
trop complexe à mettre en place pour peu de cas (et ca n’est pas fait non plus de base sur jeedom donc je ne serai pas pire )
C’est fini !
je pousserai ca demain matin, histoire de revoir tous les cas la tête reposée
Ok, bonne soirée.
Un dernier point, c’est justement ceux qui ne savent pas ce qu’ils font qui cassent le plus souvent leur machine.
Du coup, la team Jeedom va recevoir des appels dès qu’un dead-lock sera avéré.
Qu’est-ce qui t’empêche de refuser les cas où ton calcul de date de fin montre une incohérence ?
Un message du genre « La durée doit être forcément inférieure à la récursivité ».
c’est en tombant qu’on apprend à marcher !
perso si je sais pas, je fais pas. ou alors sur un truc de test !
il ne peut pas y avoir de dead lock, comme je l’ai expliqué plus haut. par contre il pourrait y avoir des trous dans la raquette !
avec un exemple (simple) ca sera peut etre plus parlant !
(nous sommes les 16/8 à 11h04)
en cron : 0 10 * * * => tous les jours à 10h00
durée : 1500 (min => 25 heures)
le plugin calcule une date de début : prochaine date dispo : 17/08 à 10h00
auquel il ajoute la durée pour définir une date de fin : 17/8 10h + 1500min == 18/08 à 11h00
le plugin controle toutes les 5min si les date de validité sont toujours OK.
Donc c’est seulement le 18/08 à 11h05 qu’il verra que notre code est périmé => il en créé un nouveau à ce moment là.
Prochaine date correspondant au cron 18/08 à 10h00, date de fin 19/08 à 11h00
=> la journée du 18 n’aura un code actif que jusqu’à 11h05
je ne tourne donc pas en rond, pas de dead-lock donc !
par contre un trou dans la raquette car l’utilisateur a mal renseigné les infos !
Du coup, je répond rapidement, la fonctionnalité que tu propose est très intéressante mais dans mon cas, je souhaite avoir un scénario qui change le code tout les mois (ce code est envoyé aux personnes concernées). D’où l’intérêt de la variable.
Ou alors j’ai raté un truc dans tes différentes réponse.
elle permet d’avoir un code utilisable uniquement sur une période (heure, jour, semaine,…) donnée de façon récurrente : ma femme de ménage qui vient tous les mercredi entre 10h et 12h peut avoir un code qui lui est propre et ce code ne pourra être utilisé que sur les plages horaires que j’ai défini : tous les mercredi entre 10h et 12h
je ne comprends pas l’intéret de passer par une variable …?
si tu veux que le code soit différent d’un mois sur l’autre, il va bien falloir que tu ailles modifier la variable tous les mois ? du coup plutôt que de modifier la variable, pourquoi ne pas aller modifier le code de l’utilisateur directement ?