Passer un paramètre dans widget Multi-État

Bonjour,

Dans mon widget multi-états perso, voilà un exemple d’un de mes tests:

#value# >= 0 && #value# < 10

Ce serait génial que je puisse tout simplement écrire:

#value#> = #minValue# && #value# < #maxValue#

Spécifiquement, je pense avoir compris que #minValue# et #maxValue# sont utilisés pour « borner » un slider. Donc peut-on détourner leur usage ? ou créer de nouveaux paramètres ?

Ce Widget est associé à 4 commandes d’un virtuel
Les min et max sont définis dans un autre viruel. Exemple:

#[Terrasse][Calibre_Irrigation][Seuil_Max_Niv_GH]#.

Ce sont des valeurs spécifiques pour chaque commandes.

Mais, c’est là où cela m’échappe, il faudrait que j’écrive quelque chose du genre pour la commande GH:
#maxValue# = #[Terrasse][Calibre_Irrigation][Seuil_Max_Niv_GH]#
et
#minValue# = #[Terrasse][Calibre_Irrigation][Seuil_Min_Niv_GH]#

Mais où le mettre dans la commande?

Sauf erreur, normalement, « paramètres optionnels widget » c’est juste réservé pour jouer avec le css ?

Bon je vous ai peut-être perdu alors je pense qu’une mise en contexte va aider à comprendre:
J’ai 4 capteurs, qui après calibrations, me renvoient des valeurs entre 0% et 100%. Ici je mesure le tôt d’humidité dans le sol. Mes seuils min et max définissent la plage idéale. En dessous de min, c’est trop sec. Au dessus de max, la plante à trop d’eau. Et suivant le type de plante ce ne sont pas les même seuils. Certaines préfères les sols secs. Les autres adorent avoir les pieds dans l’eau.

J’ai 4 images liées aux tests du widget (archi sec, soif, tout ok, trop mouillé). Ce serait dommage que je sois obligé de faire autant de widgets que j’ai de seuils différents. En plus ce n’est plus user friendly pour d’éventuels ajustements en cours de route.

Oui, j’ai vu une proposition possible qui impliquait de le coder en PHP. Donc pas plus simple avant d’en arriver là ?

Salut,

Pourquoi poster 2X la même chose?

Utiliser d'autres infos pour les widget multistate - #8 par Nulll

Zut j’ai pas eu le temps d’effacer l’autre. Je me suis souvenu que ce n’est pas une bonne idée de continuer sur un vieux sujet. Désolé.

Bonjour,

Le core widget te permet d’ajouter tes propres paramètres optionnel, pas besoin de te lancer dans du code …

Voici un exemple :
Dans la commande qui contient le widget « multi-états perso », il faut ajouter tes 3 paramètres optionnel qui correspondront a tes niveaux/seuils :

image

Ensuite tu modifie ton widget « multi-états perso » en conséquence :

3 « J'aime »

Merci @Phpvarious,

Je vois l’intérêt de ce que tu fais pour simplifier les modifs des tests si besoin ajustement. C’est déjà cela.

Mais pour répondre à mon besoin: Est-ce que la portée de tes paramètres est seulement locale (reconnus seulement dans le widget). Où il peuvent être référés depuis l’extérieur? En l’occurrence pour moi depuis un virtuel ? (et si oui, où alors dans la commande concernée ? )

Car l’enjeu est là. J’ai huit capteurs qui sont associés indirectement chacun à ce modèle de widget. ET chacun à (potentiellement) ses propres valeurs de paramètres.

Donc, si les paramètres ont seulement une portée locale, alors il me faudrait probablement dupliquer 8x le widget. Et changer dans chacun les valeurs si besoin. Ce n’est pas une méthode très élégante.

En dessous ce que je fais
C’est le calibre irrigation au travers des seuils qui devraient modifier ce dont on parle.


J’ai du mal a saisir, le widget est censé être le même (a adapter avec tes images), ensuite il sera appliquer a tes 8 commandes, et c’est dans chaque commande qu’il faudra modifier les paramètres optionnel au seuil souhaité.

Mes excuses. j’allais me coucher hier quand j’ai lu ta proposition. Bien reposé ce matin c’est évident.
Donc fatigué, je voyais « paramètres optionnels widget » dans le widget et non dans le virtuel comme je l’avais bien vu au départ dans ma question original.

Car en effet, tout ce que je lisais à propos de « paramètres opt… » semblait montrer qu’il était dédié au seul paramétrage du css. Un petit tour par l’AI m’amenait à jouer dans le PHP. Ce qui a amené alors ma question.

Donc la portée de « Paramètre opt. » est bien plus étendue. Tant mieux. Je teste cela demain mais à mon avis c’est la solution que j’attendais.

Gros merci

1 « J'aime »

Bon, j’ai trouvé le temps de le faire aujourd’hui … en en faisant une variante:

Pour commencer, ceci est, dans l’esprit, identique à ton exemple:

La variante est du côté de la commande du virtuel:

À noter qu’en fait, pour valeur, j’avais rentré respectivement:
#[Terrasse][Calibre_Irrigation][Seuil_Min_TxHum_GBas]#
#[Terrasse][Calibre_Irrigation][Seuil_Max_TxHum_GBas]#

Je les ai généré au travers un scénario pour être certain de ne pas faire d’erreur de frappe. Donc une suggestion aux développeurs de Jeedom comme amélioration (si ce que je cherche à faire est correct), il serait bien de pouvoir le générer directement là dans le champ valeur.

Alors je suppose qu’il a remplacé mes lignes par les ID correspondants. À la limite je m’en fout si cela fonctionne.

Le problème est que mon widget n’est plus fonctionnel.

Un panneau Danger est apparu en haut entre la liste des erreurs et les MAJ.
image

Dedans j’ai ceci:
index.php?v=d&p=dashboard&object_id=8 18 Uncaught SyntaxError: Invalid or unexpected token

Alors, ai-je mal fait ou alors il est impossible de créer ce maillon final qui me permettrait de changer mes seuils depuis le virtuel de calibration ?

Ah oui ! Évidemment, contrairement à ce qu’on voit dans la saisie d’écran hier, j’ai entrée des valeurs de seuil supérieures à 0 pour tester (les 2 dernières colonnes):
image

Tu ne doit pas passer des id dans les paramètres optionnel mais les valeur de seuils !

Quand j’écris NB → #[Terrasse][Calibre_Irrigation][Seuil_Min_TxHum_GBas]#
(C’est vraiment ce que j’ai écrit)
Je m’attends (comme dans un scénario) à ce que NB récupère la valeur. Autrement dit: 10 (dernière ligne, avant dernière colonne)

Donc si ce n’est pas la bonne méthode, je fais quoi?

J’ai du mal a saisir, ces valeurs dans ce virtuel tu y touche souvent ? car a ce que j’ai compris c’est d’avoir un seul et même widget mais avec des valeurs de seuils différents, donc dans ma proposition je joue avec les paramètres optionnel pour gérer ces seuils, donc dans NB il faut mettre la valeur que tu avais mis dans #[Terrasse][Calibre_Irrigation][Seuil_Min_TxHum_GBas]#, et si tu as besoin de changer le seuil tu change dans ce paramètre optionnel.

Cela risque, oui. Il y aura pas mal d’essai / erreur pour trouver les bons paramètres. Alors autant me faciliter la vie.

Avec ta méthode, définitivement j’ai réglé un problème majeur. Je n’ai pas à dupliquer le widget. Excellent point. Je pensais même que le plus dur était fait. Rendu là, je trouve étrange que je sois obligé de rentrer un vrai nombre dans valeur et non quelque chose qui y amène. Ce que j’essaye de faire ou, au pire, une variable.

Pas possible, tu peut seulement ajouter une valeur, une cmd ou variable ne fonctionneront pas.

Dommage :frowning:
Pourtant mon besoin est loin d’être trivial.
Voilà pourquoi l’AI m’amenait à faire du PHP :grin:
Enfin, merci pour ton aide. :slight_smile:

Hello,

J’ai lu en diagonal la problématique :
Est-ce que cette solution pourrait résoudre ton problème ?

Je l’avais proposé pour justement pouvoir passer des commandes en paramètres optionnel.

Je regarde cela demain à la première heure et je te reviens :slightly_smiling_face:

Bon matin (pour moi)

À la lecture c’est en plein cela. Je vais donc m’atteler à la tâche.

Pour ma culture et ne pas mourir idiot, question à tous :
Pour en arriver à une telle solution, est-ce parce que les développeurs de Jeedom n’ont pas estimé nécessaire de le faire (voyaient pas l’intérêt) ou bien c’est impossible ?
J’ai eu l’occasion de préciser que mon pseudo est lié à ce type d’environnement. Mais j’ai pas mal développé d’outils d’aide professionnels en vb sur Access et Excel à une époque où Ajax n’existait pas encore et Google se battait pour se faire une place dans les moteurs de recherche. C’est mon référentiel. Donc, quand on en arrive à la solution proposée aimablement par @noodom, je me gratte la tête avec de gros pourquoi est-ce si compliqué vs le reste de Jeedom ???

L’autre point est plus éditorial :grin:
Ces derniers temps, j’ai eu à ajouter bien des scénarios. Cela en fera un de plus. D’autant plus que, si il y a quelques années, j’en faisais des géants qui essayaient de tout traiter (ie le chauffage dans la maison), je suis arrivé à la conclusion qu’il m’était plus facile de m’y retrouver et maintenir en fragmentant cela en plusieurs plus petits. Donc une forme d’arborescence Avec (pour un thème, ici L’irrigation de ma terrasse) un Scénario Maitre et des enfants en dessous. C’est en gros (on s’enfargera pas dans les détails) aussi le principe des langages objets.
Mais alors cela devient visuellement difficile de s’y retrouver dans la page des Scénarios. Donc, oui j’ai des scénarios dans une catégorie ajoutée qui s’appelle « Culture ». C’est là que va aller aussi le nouveau scénario. Mais comme on ne peut faire de sous catégories, le début des noms de mes scénarios sont indicés (N0 (Maitre), N1, N2, N11, N12, N21, etc…
La vue d’ensemble aussi est intéressante, mais pas dans le cadre de mon besoin.
Alors des idées ? Un plugin qui m’aurait échappé ?

Merci par avance

Ok, je fais une pause réflexion après avoir bien analysé l’ensemble proposé.

Ok, Tu appelles ton code en lui passant aussi 3 paramètres, la ligne de commande dans le virtuel, le nom paramètre optionnel ajouté, et la valeur à modifier.

Mais pour réaliser cela tu as finalement 2 scénarios ?

  • Un pour le code
  • Un pour les tags et l’appel du scénario code. En passant, dans mon virtuel, j’ai 22 paramètres qui peuvent potentiellement être modifiés.

Donc voilà comment je pense avoir compris les choses, dis moi si je me trompe:


Chaque paramètre de mes 2 dernières colonnes est un déclencheur du scénario des tags

  1. Le scénario des tags va contenir pour chaque paramètre:


    Donc, si cela rame, je ferai peut-être 3 scénarios (Niv Goutt., Niv Tonn., Taux humid.)

  2. Le scénario du code, contient juste le bloc code. Ce dernier n’a besoin d’aucune adaptation puisque tout se passe au niveau du scénario des tags.

Ai-je bien compris ? :grin:

Voici, ce que cela donne adapté à mon cas, pour les seuils min et max de la gouttière haute:

SUPER CA MARCHE!
Attention comme tu le mentionnes dans ton lien, NE PAS OUBLIER D’ENLEVER # DANS LES NOMS DE COMMANDE.

Un gros merci !

1 « J'aime »

Salut,

Bien joué :wink:

Et oui, il ne faut mettre les # sinon la commande est évaluée et donc on ne récupère pas la commande mais sa valeur pour la suite.

1 « J'aime »

Vient toujours le moment d’indiquer la solution.

Mais pour le bénéfice de ceux qui pataugent dans leur projet, je vais indiquer cette réponse comme la solution … Mais ! … En donnant les crédits suivants. J’invite les chercheux à lire chacun:

  1. D’abord à @Phpvarious
    Passer un paramètre dans widget Multi-État - #4 par Phpvarious

Ici il démontre qu’on peut passer des paramètres et leurs valeurs à un widget multi-états en passant par « Paramètres optionnels widget » qu’on trouve dans l’onglet affichages des paramètres de chaque ligne de commande d’un widget. Donc ce n’est pas seulement utile pour modifier le css !

Problème (et ce serait bien que cela soit clairement dit à cette endroit de la ligne de commande): IL N’EST POSSIBLE D’Y INSCRIRE QUE DES VALEURS DIRECTEMENT ! Oubliez la possibilité d’inscrire une variable ou autre façon pour aller chercher la valeur ailleurs.

Donc dans mon cas j’étais encore bloqué.

  1. C’est là que @noodom est venu apporter le dernier élément crucial:
    Passer un paramètre dans widget Multi-État - #15 par noodom

Au premier abord cela peut paraitre long et compliqué. En fait non. Surtout si vous considérez que le code PHP est clé en main. Vous copiez, vous collez, c’est fini. Pas de modification. Voilà pour un premier scénario. Il sera appelé par un autre qui va définir les paramètres à passer au premier puis le lancera son exécution. Si vous avez beaucoup de paramètres comme moi, faites de la duplication de bloc. Il y a très peu de différence entre chaque. Cela va donc assez vite à modifier.

  1. Si vous avez quelques doutes sur la façon d’interpréter la proposition de @noodom, alors peut-être que mes interrogations et mes adaptations vous aideront:
    Passer un paramètre dans widget Multi-État - #18 par Nulll

Pour rappel j’ai deux virtuels. Un qui affiche les widgets (Irrigation). nomCommande y est donc associé. L’autre qui contient les valeurs d’ajustement (Calibre_Irrigation). C’est où valeurParamètre va chercher la valeur de remplacement.


Un gros merci encore une fois à tous ceux qui m’ont aidé à passer au travers! :smiley: