Bonjour,
Je prends ce post pour vous partager mes résultats sur mon besoin assez simple : ajouter une fonction de timer sur le ON d’une action. Par exemple : pouvoir lancer une prise anti-moustique pour 3h.
Dans le cas 3/ je rajoute également des fonctions plus complexes comme détaillée dans la partie (condition + reprise timer).
1/ Plugins
J’ai cherché, mais aucun plugin ne me permet de faire cela directement.
2/ Virtuel Simple
C’est mon choix actuel, globalement basé sur une Action Virtuelle puis un Scénario appelé dans le détail de la commande
3/ Virtuel Complexe
Objectif supplémentaire :
- la mise sous condition (ex: antimoustique ON uniquement sur fenêtre fermée)
- la reprise du timer suite à la reprise de la condition (ex: lors de l’ouverture de la fenêtre on met en PAUSE l’antimoustique puis lorsqu’on referme la porte reprise du timer avec la durée prévue restante)
Résultat :

Détails :
1. Objet (Virtuel)
Contient les différentes durées + les indicateurs binaires Timer et Etat + les durées restantes
2. Gestion ON/OFF (Scénario)
Utilisation d’un tag actionneur Mode : ON, OFF
Si ON on allume
Sinon Si allumé alors OFF
Si Timer en cours alors on stoppe le scénario Timer + Scénario de mise à jour du calcul du temps restant (et reset des compteurs)
3. Timer (Scénario)
Allume + met à jour les champs du virtuel avec les minutes restantes + active le scénario qui toutes les 5 minutes mets à jour le temps restants
Dans #timer_minutes# éteint + désactive le scénario de mise à jour du temps
4. Timer calcul temps restant (Scénario)
Programmé toutes les 5 minutes : réduit de 5 minutes le temps restant dans le virtuel
5. Mise en pause
Scénario déclenché sur ouverture de la fenêtre : #[Chambre][Fenêtre][Ouverture]#
Lors de la fermeture on relance le timer avec le temps restant contenu dans le virtuel
6. Optionnel : Widget
Pour afficher l’état textuel au lieu de 1, 2 ou 3
<div style="min-width:90px;min-height:60px;margin-right: 5px;margin-left: 5px;padding:0px !important;" class="cmd #history# container-fluid tooltips cmd cmd-widget" data-type="info" data-subtype="numeric" data-cmd_id="#id#" data-cmd_uid="#uid#" data-version="#version#" data-eqLogic_id="#eqLogic_id#">
<center>
<div style="font-weight: bold;font-size : 12px;#hideCmdName#">#name_display#</div>
<span style="font-weight: bold;" class="pull-right">#unite#</span>
<span style="font-size: 2em;font-weight: bold;" class="pull-right state"></span><br/>
</center>
<script>
jeedom.cmd.update['#id#'] = function(_options){
$('.cmd[data-cmd_id=#id#]').attr('title','Valeur du '+_options.valueDate+', collectée le '+_options.collectDate)
if (_options.display_value == 1){
$('.cmd[data-cmd_id=#id#] .state').empty().append('Allumé');
} else if (_options.display_value == 2){
$('.cmd[data-cmd_id=#id#] .state').empty().append('Eteint');
} else if (_options.display_value == 3){
$('.cmd[data-cmd_id=#id#] .state').empty().append('Suspendu');
} else {
$('.cmd[data-cmd_id=#id#] .state').empty().append('ERREUR');
}
}
jeedom.cmd.update['#id#']({display_value:'#state#',valueDate:'#valueDate#',collectDate:'#collectDate#',alertLevel:'#alertLevel#'});
</script>
</div>
Schéma général
Demande de dev : si un développeur saurais implémenter ça simplement (cela ne me paraît pas très complexe mais cela me prendrais beaucoup trop de temps pour comprendre comment faire) ce serait formidable !
N’hésitez pas à partager vos avis !
ValentinC










