Valeur <300 : en cours si valeur <300 :xmin

Bonjour,
j’ai une info virtuelle x:

  • temps de la dernière pluie:
    strtotime(now)-strtotime(Valuedate(#6588#))
    cela me donne une valeur en s.

Je voudrais que si cette valeur est plus petit ou egal à 300 je remplace cette valeur par « encours » autrement je met xmin.

je ne veux pas utiliser de scenario je souhaite vraiment faire ce calcul ds un virtuel info « autre »

avec ce calcul
(#6588#<=300?'en cours':'')
ca fonctionne bien quand c’est plus petit

j’ai essayé de continuer avec :
(#6588#<=300?0:floor((#6588#+0)/60))
mais j’ai un bug, quelqu’un a une idée svp?
merci

Bonjour,

Essaye avec :

(#6588#<=300)?0:floor((#6588#+0)/60)

Bonsoir,

A quoi sert le +0 ?

Essai sans pour raccourcir la chaîne

Ah merci j’avance petit à petit dans mon calcul:
(#6584#<=300)?'en cours':floor((#6584#)/60) :clap:
Peut on utiliser la fonction « concat »?

concat('',(#6584#<=300?'en cours':concat(floor(#6584#/60),' ',(floor(#6584#/60)>1?'minutes':'minute'))))

Je sais dans mon calcul ce n’est pas possible d’avoir minute au singulier mais il va me servir dans mon calcul plutard

Pourquoi tu veux absolument ajouter « minutes » ?

Cela va passer ta valeur en chaîne de caractère et ensuite plus possible de l’utiliser pour des calculs dont tu parles maintenant.
En plus tu n’auras pas d’historique exploitable avec « autre ».

c’est que de la chaine de caractere que je veux, si apres la valeurs plus grandes à 3600 on passe en heure puis si plus grand que 86400 en jours

Sans bloc code ce n’est pas possible.
Il est possible d’imbriquer des opérateurs ternaires pour considérer plusieurs actions selon la valeur, mais tu ne pourras pas rajouter minutes ou heures ou jours dans un virtuel.

un bloc code dans un scénario?

Oui dans un scénario.
Qui change ensuite la valeur de ton virtuel.

ce qui m’eblete cest de lancer un scenario toute les min quand il pleut…

Cela sera pareil directement dans un virtuel.
Ca consommera même moins de ressources dans un scénario.

Tu peux aussi construire un scénario qui ne mettra à jour que toutes les xx minutes l’info quand la pluie sera en cours. C’est ce que j’utilise pour par exemple les alertes pluie dans l’heure de Météo France.

Bon tu cherches quand même un peu à reproduire le comportement de la fonction convertDuration(secondes) :slightly_smiling_face:

Tu as pensé à l’utiliser plutôt que de faire très compliqué ?

1 « J'aime »

merci je vais regarder ca demain ou ce week-end plus en détail merci pour votre aide

Bonjour,
Merci pour votre aide.

Je suis partie de calcul:
6601:strtotime(now)-strtotime(Valuedate(#6600#))
j’ai un résultat en s

Sur ce résultat, je regarde si il est plus petit que 300 si oui je le remplace par « en cours »
6602:(#6601#<=300)?'en cours 0s':floor(#6601#)

Je convertie le résultat en j,h,min,s
6603:convertDuration(#6602#)

Et je fini par supprimer les s qui ne m’interesse pas:
6604:Dernière pluie: substr(#6603#,0,strrpos(#6603]#,'s')-2)

Ce sujet a été automatiquement fermé après 24 heures suivant le dernier commentaire. Aucune réponse n’est permise dorénavant.