Bonjour,
j’ai suivi les étape mais pour autant mon virtuel reste inerte …
le code du widget :
<!-- CUSTOM WIDGET "tps_restant_v4.3"
Community link: https://community.jeedom.com/t/widget-decompte-a-la-seconde-tps-restant/99012
Updated on: 2023-01-08
Versions supported: Jeedom v4.3
Last Modification: use v4.3 js (jeeFrontEnd, jeedom.cmd.addUpdateFunction, jeedom.cmd.refreshValue)
-->
<div class="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#">
<div class="title #hide_name#">
<span class="cmdName">#name_display#</span>
</div>
<div class="content-sm">
<div class="state"></div>
</div>
<script>
jeedom.cmd.addUpdateFunction('#id#', function(_options) {
$('.cmd[data-cmd_id=#id#]').attr('title', '{{Date de valeur :}} '+_options.valueDate+'<br/>{{Date de collecte :}} '+_options.collectDate);
$('.cmd[data-cmd_id=#id#]').attr('interval', );
if ($('.cmd[data-cmd_id=#id#]').attr('interval')) {
clearInterval($('.cmd[data-cmd_id=#id#]').attr('interval'));
$('.cmd[data-cmd_id=#id#]').removeAttr('interval');
}
var timestamp = parseFloat(_options.display_value);
if (timestamp > 0) {
$('.cmd[data-cmd_id=#id#]').attr('interval', setInterval(function () {
var dateLoc = new Date;
var time_left = timestamp * 1000 - (dateLoc.getTime() + (dateLoc.getTimezoneOffset() + jeeFrontEnd.serverTZoffsetMin) * 60000 + jeeFrontEnd.clientServerDiffDatetime);
if (!$('.cmd[data-cmd_id=#id#] .state').length || timestamp < 0 || time_left < 0) {
if ($('.cmd[data-cmd_id=#id#]').attr('interval')) {
clearInterval($('.cmd[data-cmd_id=#id#]').attr('interval'));
$('.cmd[data-cmd_id=#id#]').removeAttr('interval');
}
$('.cmd[data-cmd_id=#id#] .state').empty();
} else {
//============ CONVERSIONS
var s_left = time_left / 1000;
var i_left = s_left / 60;
var H_left = i_left / 60;
s_left = Math.floor(s_left % 60);
i_left = Math.floor(i_left % 60);
H_left = Math.floor(H_left);
//============ FORMATTING
s_left = s_left < 10 ? "0"+ s_left : s_left;
i_left = i_left < 10 ? "0"+ i_left : i_left;
H_left = H_left < 10 ? "0"+ H_left : H_left;
//============ DISPLAY
if (H_left > 0) {
$('.cmd[data-cmd_id=#id#] .state').empty().append(H_left + ":" + i_left + ":" +s_left);
} else {
$('.cmd[data-cmd_id=#id#] .state').empty().append(i_left + ":" +s_left);
}
}
}, 1000));
} else {
if ($('.cmd[data-cmd_id=#id#]').attr('interval')) {
clearInterval($('.cmd[data-cmd_id=#id#]').attr('interval'));
$('.cmd[data-cmd_id=#id#]').removeAttr('interval');
}
$('.cmd[data-cmd_id=#id#] .state').empty();
}
});
jeedom.cmd.refreshValue([{cmd_id :'#id#',display_value: '#state#', valueDate: '#valueDate#', collectDate: '#collectDate#', alertLevel: '#alertLevel#', unit: '#unite#'}]);
</script>
</div>
le resultat reste comme ca :
Peu importe le bouton sur lequel je clique
Merci d’avance de ton aide
Bad
Janvier 24, 2025, 10:45
42
Hello,
Il ne faut pas utiliser #[Compteur]#, mais la commande complète, cf :
Bad:
Bad
1 « J'aime »
Ah ok j’avais pas vu ca dans l’exemple c’est clair je vais tester merci
Merci tout fonctionne maintenant :
1 « J'aime »
Bonsoir,
J’ai suivi toutes les etapes pour creer ce widget sur une V4.4. Le compte a rebours fonctionne bien. Par contre la valeur d’état du compteur affiche une valeur a 10 chiffres lorsque le compte a rebours est terminé.
Est-ce normal ?
MErci
dan_73
Septembre 23, 2025, 7:01
46
Il suffit de ne pas afficher le timestamp Compteur
Bonjour Dan_73,
Merci pour ton aide. Pas sur de comprendre comment ca pourrait résoudre le problème. J’ai néanmoins essayé, ca ne marche pas. Arrivé à zero la valeur du compteur n’est pas de 0 mais encore une valeur à 10 chiffres. Peu etre que je ne comprends pas le principe d’utilisation ?
Mon but est de récupérer la valeur d’état du compteur pour l’utiliser dans un scénario. Quand le décompte arrive à zero alors je lance une action.
Tonio16
Septembre 23, 2025, 7:33
48
Il faudrait donner une copie d’écran entière, c’est à dire où on puisse aussi lire les formules.
Bonjour Tonio16 -
Les formules :
-5mn : (#timestamp # >= #[Maison][Compteur][Compteur]# - 300) ? 0 : (#[Maison][Compteur][Compteur]# - 300)
+5sec : (#timestamp # <= #[Maison][Compteur][Compteur]#) ? (#[Maison][Compteur][Compteur]# + 5) : (#timestamp # + 5)
+10mn : (#timestamp # <= #[Maison][Compteur][Compteur]#) ? (#[Maison][Compteur][Compteur]# + 600) : (#timestamp # + 600)
dan_73
Septembre 23, 2025, 10:23
50
Au temps pour moi, l’info Compteur doit bien être affichée, j’ai vérifié chez moi.
Par contre as-tu bien appliqué le widget Customtemp/Décompte à ton info compteur ?
Re
Oui c’est bien appliqué. Le widget fonctionne. Mais la valeur d’état du compteur affiche une valeur à 10 chiffres.
dan_73
Septembre 23, 2025, 11:15
52
Je ne comprends pas ta commande des -5mn
J’ai testé de mon coté et je n’obtiens rien.
Tu obtiens un décompte avec -5mn ?
Mon but est de récupérer la valeur d’état du compteur pour l’utiliser dans un scénario. Quand le décompte arrive à zero alors je lance une action.
Sinon pour ce que tu veux faire, ne serait-il pas plus simple d’utiliser un "DANS" dans ton scénario pour déclencher tes actions après X mn ?
En tout cas je ne vois pas ce qui passe à 0 une fois le décompte fait.
Bad
Septembre 24, 2025, 6:36
53
Bonjour @Cyssou40 ,
Oui, c’est le WIDGET qui affiche le décompte, la valeur à 10 chiffres ne change pas pendant le décompte, c’est l’heure de fin du décompte.
Cf : Widget Décompte à la seconde (tps_restant) - #17 par Bad
Ce widget n’est pas fait pour piloter un scénario de cette façon, utilise un « DANS » ou un « A » à la place.
Bad
Merci à tous de m’aider‚
Ok je comprends mieux la valeur à 10 chiffres.
Le scénario que j’ai créé se déclenche par le compteur
J’utilise ensuite le compteur de cette façon dans un scenario « A ». Mais ca ne fonctionne pas.
A la fin du décompte rien ne se passe.
Bad
Septembre 26, 2025, 7:06
56
Peux tu fournir les logs du scénario stp
dan_73
Septembre 26, 2025, 8:09
59
Essaie en convertissant ton timestamp (ta valeur à 10 chiffres) en valeur demandée pour un A
date(Hi,#timestamp #)
date(Hi, 1758912899) → 2054
Bad
Septembre 27, 2025, 6:39
60
Hello @dan_73 ,
Si tu regardes la capture, 3 posts plus haut, c’est exactement ce que @Cyssou40 fait.
Mais il semblerait que la fonction date() de Jeedom décide de rajouter le timestamp après le format…
@Cyssou40 , essaye avec date("Hi",#[Maison][Compteur][Compteur]#) au lieu de :
Et, pour éviter les problèmes de lancement hasardeux, ajoute une commande « remove_inat » avant le bloc A avec le « date() » :
Bad
1 « J'aime »
dan_73
Septembre 27, 2025, 6:54
61
Bonjour
Effectivement je n’avais pas vu
Peut être qu’en passant par un tag, cela empêchera le changement de format.
A essayer…