Adaptation d'un widget en fonction de l'heure

Bonjour à tous,

Tout d’abord merci à la communauté pour toute l’aide qu’elle a pu me fournir au travers des nombreux sujets que j’ai pu consulter jusque là et qui m’ont pour la plupart toujours guidé vers la solution.

Aujourd’hui toutefois, j’en viens à créer un nouveau sujet car je ne parviens pas à mes fins, que ce soit directement ou indirectement par un contournement.

Voilà mon idée de départ :

J’ai plusieurs virtuels (un pour chaque pièce de la maison) que j’affiche sous forme de « tuiles » sur un de mes design.
Chaque tuile affiche, entre autres, une commande info virtuelle indiquant le nombre de volets ouverts.

J’ai un widget « Tuile_EtatVolet » de type « Info », « Numérique » et « Multistate ».
Il est appliqué à toutes les commandes info virtuelles citées précédemment.

image

J’aimerais que le widget ait 4 comportements définis.
Si tous les volets de la pièce sont fermés, j’affiche un icône de volet fermé.
Si au moins un des volets de la pièce est ouvert, j’affiche un icône de volet ouvert.
Si les volets devraient être ouverts/fermés et qu’au moins un ne l’est pas, j’affiche le tout (icône/nombre) en rouge.
Si les volets devraient être ouverts/fermés et qu’ils le sont tous, j’affiche le tout (icône/nombre) en vert (couleur par défaut).

Voilà les tests réalisés qui me provoquent l’erreur suivante …

Uncaught SyntaxError: Private field ‹ #time › must be declared in an enclosing class


#value#==0 && #time#>=variable(horaireOuvertureVolets) && #time#<variable(horaireFermetureVolets)

doit me donner

<div style="font-style: 20px; margin: 0; padding: 0"><i style="color: red" class='icon jeedom-volet-ferme'></i> <i style="font-style: normal; color: red"><sub>#value#</sub></i></div>

#value#>0 && #time#>=variable(horaireOuvertureVolets) && #time#<variable(horaireFermetureVolets)

doit me donner

<div style="font-style: 20px; margin: 0; padding: 0"><i style="color: lightseagreen" class='icon jeedom-volet-ouvert'></i> <i style="font-style: normal; color: lightseagreen"><sub>#value#</sub></i></div>

#value#==0 && (#time#>=variable(horaireFermetureVolets) OR #time#<variable(horaireOuvertureVolets))

doit me donner

<div style="font-style: 20px; margin: 0; padding: 0"><i style="color: lightseagreen" class='icon jeedom-volet-ferme'></i> <i style="font-style: normal; color: lightseagreen"><sub>#value#</sub></i></div>

et enfin

#value#>0 && (#time#>=variable(horaireFermetureVolets) OR #time#<variable(horaireOuvertureVolets))

doit me donner

<div style="font-style: 20px; margin: 0; padding: 0"><i style="color: red" class='icon jeedom-volet-ouvert'></i> <i style="font-style: normal; color: red"><sub>#value#</sub></i></div>

Est-il possible d’utiliser la partie « test » des widgets de cette manière ? Si oui, comment m’y prendre ?

Vaut-il mieux passer par un virtuel ? Dans ce cas, comment faire ?

D’avance merci (encore une fois) pour vos lumières :slight_smile:

Bonne soirée.

Hello,

je pense que #time# ne peut pas être utilisé dans un test de widget. En dehors de la syntaxe ou du code derrière le widget, cela voudrait dire qu’à chaque modification de la valeur #time# le widget devrait recalculer les conditions, donc toutes les millisecondes (ou autre intervalle de temps la plus petite de la fonction time ) !
Je pense qu’il vaudrait mieux effectivement passer par un virtuel qui actualiserait à une certaine fréquence (pas trop haute pour limiter la charge) une commande info qui reprend les conditions que tu as en tête

Salut @rom.jou et merci pour ta réponse.

C’est un peu ce que je redoutais.

À défaut d’une autre solution, je vais donc passer par un virtuel :slight_smile:

@+

Par contre je viens de penser que tu peux tout simplement passer ton scénario en Programmé (toujours en gardant une fréquence raisonnable) et en gardant tes conditions, je pense.

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