[2024-09-17 21:04:19][SCENARIO] - Exécution du sous-élément de type [condition] : if time_diff(date('j-m-Y H:i'), collectDate(#[Système][VMC][Vitesse actuelle]#, 'j-m-Y H:i') , j) <1
[2024-09-17 21:04:19][SCENARIO] DateTime::__construct(): Failed to parse time string ("17-09-2024 21:04") at position 0 ("): Unexpected character
[2024-09-17 21:04:19][SCENARIO] - Exécution du sous-élément de type [action] : else
Je n’arrive pas à mettre le doigt sur le l’erreur de syntaxe.
Mon collecte date parait bon:
Exécution du sous-élément de type [condition] : if collectDate(#[Système][VMC][Vitesse actuelle]#, 'Y-m-d Hs') <1
[2024-09-18 09:41:52][SCENARIO] Evaluation de la condition : [" '2024-09-18 09:41:29'" <1] = Vrai
- Exécution du sous-élément de type [condition] : if time_diff(date('Y-m-d Hs'), collectDate(#[Système][VMC][Vitesse actuelle]#,Y-m-d Hs) , j) <1
[2024-09-18 17:04:54][SCENARIO] DateTime::__construct(): Failed to parse time string ("2024-09-18 17:04:54") at position 0 ("): Unexpected character
Ok autre approche.
Si j’ai bien compris, tu souhaites savoir si l’age de la dernière valeur de ta commande #[Système][VMC][Vitesse actuelle]# est inférieur à un jour ?
Si c’est bien ce que tu veux, alors tu peux faire comme ça :
SI age(#[Système][VMC][Vitesse actuelle]#) < 86400
je pense qu’il doit exister une fonction scenario qui fait déjà ce dont vous envisagez (age, lastBetween, valueDate etc), au lieu de passer par time_diff qui n’est probablement utilisable que dans un bloc code.
Mais on aurait besoin d’infos sur ce que vous voulez vraiment faire pour pouvoir vous aider.
(Connaître la date du dernier changement d’état de la vmc ? depuis quand la VMC n’a pas changé de vitesse ? savoir si sa valeur a bien été collectée durant les X dernières minutes ? etc)
L’idée est de monitorer le délai entre le dernier changement de vitesse de la VMC et si celui ci est supérieur à 1j je mets dans le design un widget avec une couleur verte, si >2j meme widget mais avec couleur orange et si >3j en rouge.
SI stateDuration(#[Système][VMC][Vitesse actuelle]#) > 259200 ALORS
Widget en rouge (> 3 jours)
SI stateDuration(#[Système][VMC][Vitesse actuelle]#) > 172800 ALORS
Widget en orange (> 2 jours)
SI stateDuration(#[Système][VMC][Vitesse actuelle]#) > 86400 ALORS
Widget en vert (> 1 jours)
La commande stateDuration retourne le nombre de secondes depuis le dernier changement de valeur de la commande passée en paramètre. Donc par exemple 172800 est le nombre de secondes pour 48h.
Le seul hic c’est que j’ai 10 équipements, donc x3 cela fait lourd.
Si j’arrive à avoir la différence entre la date du dernier event et la date actuelle j’ai directement une valeur et ensuite pas besoin de ‹ if › le widget interprète directement:
La commande stateDuration est en soit déjà une différence (mais exprimé en secondes, et pas en jours).
Mon exemple des trois IF était un exemple. Pour avoir une différence en jour, il suffit de diviser le nombre de seconde de la commande par 86400 (nombre de seconde par jour). On aura un chiffre à virgule, correspondant à la différence du nombre de jours (donc si on récupère 1.33, ça veut dire qu’il s’est passé 1,33 jours (soit à peu près 1 jour et 8h) depuis le dernier changement de valeur).
Lors de l’utilisation d’une fonction dans time_diff celle-ci est simple quoté : 0008|[2024-09-24 19:01:27] INFO : d1 = '2024-09-24 16:56:16'
même en plus double quoté (si expression::autoQuote est coché) : 0002|[2024-09-24 19:00:40] INFO : d1 = "'2024-09-24 16:56:16'"
Ne faudrait il pas supprimer les doubles et simples quotes avant d’envoyer dans le DateTime ?
ex : $d1 = str_replace('"', '', str_replace('\'', '', self::setTags($_date1))); $d2 = str_replace('"', '', str_replace('\'', '', self::setTags($_date2)));
En faite je doute qu’il sait géré ceci, pour schématisé c’est comme si il recevait : $d1 = '\'2024-09-24 16:56:16\'';
ou $d1 = '"\'2024-09-24 16:56:16\'"'; (autoQuote)