Proposition/avis : comment faire timer intelligent?

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 :
4

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

Bonsoir,
Regarde du côté du plugin séquenceur d’actions de @agp.com
Il devrait faire l’affaire

2 « J'aime »

Hum en effet pas mal merci beaucoup du conseil. Je pense que le souci c’est que y’a plusieurs séquences en // qui peuvent se synchroniser ou s’arrêter.

Je n’ai pas le plugin et sans être sûr je ne vais pas l’acheter pour l’instant. Si tu poc ça rapidement je veux bien que tu me dises :stuck_out_tongue:

Edit : le plugin semble bien complet, je vais le prendre pour essayer :wink:

Je pense qu’il collera bien à ton besoin.
A l’époque, après avoir interrogé le développeur, je ne voyais pas l’utilité de ce plugin. Il me semblait que tout ce qu’il proposait pouvait se faire par scénario.
Ta demande me semble être un bon exemple de possibilités spécifiques de ce plugin.
Amuse toi bien

1 « J'aime »

En effet, cela pourrait bien simplifier. A 2€ je prends pas grand risque :slight_smile:

L’idéal serait pour moi un dev « rapide » pour factoriser car les mécanismes sont ultra simples :

  • ON/OFF/PAUSE
  • Temps restant
  • Créer des durées types : 3h, 6h, …
  • Gérer des coupures/reprise sur déclencheurs (état fenêtre etc.)

Merci du conseil !

Hello;

oui en effet ca semble une bonne utilisation de mon plugin, merci @mich0111 pour la recommandation :wink:

Toutes les fonctions que tu demandes ne sont pas forcement directement dans le plugin, par exemple la pause et reprise du timer ou le fait de visualiser le timer restant. Mais tu devrais déjà pouvoir faire une partie de ton besoin.

a+

Salut,

Ce sujet m’intéresse.
Si tu parviens à mettre en place quelque chose, je suis preneur des infos :wink:

1 « J'aime »