Plusieurs informations sur un même Widget [Résolu]

Bonjour à tous,

J’essaye de faire un tableau récapitulatif des informations de températures de mes sondes.
J’ai créé un virtuel qui centralise toutes les températures et hygrométries de celles-ci, et qui calcule le temps depuis la dernière réception de données des sondes.

Dans le tableau j’ai une colonne « Aujourd’hui » où j’affiche la température et l’hygrométrie actuelle, ainsi que le min et le max du jour et la tendance.
Je voudrais avoir des colonnes « Hier », « J-2 », « J-3 », « Semaine » et « Mois » et pour chaque colonne, le min et le max en température et en hygrométrie.

Comment puis-je faire pour afficher, par exemple, le min et le max des températures de tel jour dans un seul widget ?

Merci d’avance pour vos réponses !

Bonjour

Dans un seul widget ou dans une seule dalle de dashboard ?

Dans une dalle avec l’affichage tableau, vous pouvez mettre vos commandes comme vous voulez

Dans un widget, c’est un peu plus compliqué, il faut le coder et faire une commande qui regroupe toutes les commandes que vous voulez dans le widget et le code qui récupère chaque commande et les affiches comme vous voulez

Salut @Nemeraud(Antoine?!),

Petit aparté presque pas hors sujet: Tu devrais regarder le code de mon dernier widget linky_v4 largement inspiré du code hygrothermographe modifié par @Loic pour récupérer plusieurs commandes sans avoir à tout regrouper sur une seule.

Salut Salvialf :slight_smile:

Oui anciennement Antoinekl1 sur l’ancien forum, mais le même avatar :wink:

A ok, je vais regarder ca de suite :slight_smile:

Édit : beau boulot en tout cas, je vais regretter de pas avoir de linky :slight_smile:
Ok , c’est nouveau cette possibilité, c’est plus pratique
Faut que je modifie mes widgets, merci
fin du HS

Bonjour à tous les deux,

Et tout d’abord merci pour vos réponses.

En fait c’est effectivement pour regrouper les informations min/max dans les colonnes du tableau (entre autres) : j’avais vu que c’était faisable en mettant plusieurs « étiquettes » dans une même case, mais je ne sais pas si on peut avoir le même contrôle qu’en regroupant les informations sous un même widget.

Merci Salviaf pour ce widget, c’est effectivement très instructif.

@otarie: attention à ne pas confondre widget et disposition en tableau.

Chaque commande a un widget propre (même quand ça affiche juste une valeur).
Si j’ai bien compris actuellement tu as une commande pour chaque donnée que tu veux afficher (min, max, j-2, etc.) donc tu dois juste disposer toutes ces commandes en tableau dans les lignes ou colonnes où tu veux les voir apparaître.

Pour ce que tu cherches à faire pas besoin de créer un widget qui centraliserait toutes les commandes, la disposition en tableau suffit

D’accord, je te remercie, je vais regrouper les commandes dans chaque colonne : pour les tailles des colonnes et les styles des cellules, on peut gérer ça finement au niveau des styles css du tableau ?

Je pense que je me suis mal exprimé et j’en suis désolé.

En fait je cherche à compléter le tableau ci-dessous :
Tab_Temp

J’ai dans ma deuxième colonne (la première étant le nom des pièces) la température actuelle avec les min et max de la journée en dessous ; et à côté l’humidité actuelle et les min et max en dessous.
Dans la troisième colonne la tendance des températures (j’ai pas réussi à la mettre dans la colonne aujourd’hui, ça me renvoyait tout sur 3 lignes et non sur une seule ligne).
Puis dans la troisième colonne (J-1), je voudrais avoir la température qu’il faisait hier à la même heure, avec les min/max en dessous et l’humidité qu’il faisait hier à la même heure avec les min/max en dessous.
Et ainsi de suite jusqu’à J-6 (9e colonne)…

J’ai essayé avec cette solution https://www.jeedom.com/forum/viewtopic.php?t=46204#p746250, mais ça ne marche qu’avec des équipements simples : il faudrait que j’arrive à faire passer toutes les températures d’hier par exemple pour les températures J-1.

Bref, si vous voyez une solution, ou bien s’il faut que je change carrément de méthode, je vous en remercie d’avance.

Ok.

Selon moi il faut passer par l’ajout de commandes effectuant les calculs J-1, J-2, etc. Avec la fonction statisticBetween si je ne dis pas de bêtises (à vérifier dans la doc).

Il suffira alors d’ajouter ces commandes dans le tableau.

J’essaie de développer ma réponse quand je serai sur le PC mais peut-être pas avant demain…

1 « J'aime »

D’accord je te remercie, mais ne t’en fait pas, ça fait plusieurs semaine que je me bats avec les énormes possibilités de Jeedom, donc il n’y a pas pas le feu… :wink:

Salut,

Je te confirme qu’il faut ajouter des commandes info/numérique à ton virtuel pour chaque info que tu veux récupérer. ensuite tu n’auras plus qu’à mettre ne forme ces informations dans ton tableau.

Exemple:

T° Max J-1: maxBetween(#[Chambre][ZMNHJD1][Température]#,yesterday 00:00:00,yesterday 23:59:00)
T° Min J-1: minBetween(#[Chambre][ZMNHJD1][Température]#,yesterday 00:00:00,yesterday 23:59:00)

T° Max J-2: maxBetween(#[Chambre][ZMNHJD1][Température]#,2 days ago 00:00:00,2 days ago 23:59:00)
T° Min J-2: minBetween(#[Chambre][ZMNHJD1][Température]#,2 days ago 00:00:00,2 days ago 23:59:00)


maxmin

Et ainsi de suite…

Tu trouves les différentes fonctions de calcul dans la doc des scénarios

1 « J'aime »

Salut,

Je te remercie, mais il n’y a donc pas moyen d’avoir tout dans une seule commande (pour pouvoir mettre ça en forme dans un widget comme dans la colonne aujourd’hui) ?
Dans la ligne « Chambre parents » colonne « J-1 », je voudrais mettre cote-à-cote les commandes « Temp_J-1 » (qui contiendrait les valeurs min, max et la température à la même heure hier) et « Humi_J-1 » (qui contiendrait les valeurs min, max et l’humidité à la même heure hier), mises en forme avec un même widget (comme je l’ai fait pour la colonne aujourd’hui, mais à J-1, J-2, etc.).

Ça reviendrait pour J-1 à avoir une commande qui ne comprendrait que les valeurs d’hier en température, et une autre commande qui ne comprendrait que les valeurs d’hier en humidité ; mais pas une commande pour la température min, une autre pour la température max, etc.
Mais j’ai l’impression que ça n’est pas forcément possible…

A priori rien ne t’empêche de mettre tes 2 commandes minJ-1 et maxJ-1 par exemple dans une même cellule de ton tableau.

En jouant sur la disposition tableau et la mise en forme tu devrais parvenir à ce que tu recherches sans trop de difficulté je pense.
Sinon voir par scénario pour récupérer directement plusieurs valeurs mises en forme que tu n’auras plus qu’à afficher…

Dans le widget ce doit être faisable mais complexe et selon moi cela alourdirait considérablement la charge de ta machine car les calculs seraient effectués à chaque rafraîchissement du widget ou rechargement de la page.

Bien sur je ne suis pas à l’abri de faire fausse route… A voir si quelqu’un d’autre à de meilleurs idées :smirk:

Salut,

Je te remercie bien pour ta réponse.

Alors j’ai essayé avec la méthode de Winhex dont j’avais mis le lien dans mon message d’avant (https://www.jeedom.com/forum/viewtopic.php?t=46204#p746250), et ça a l’air de fonctionner (je n’ai pas réussi à mettre en forme comme je voulais en jouant uniquement sur le tableau et la mise en forme de celui-ci) :

J’ai créé un virtuel pour J-1, un pour J-2, etc.
Dans le virtuel J-1 j’ai créé les commandes « température à la même heure à J-1 », « température min à J-1 », « température max à J-1 », « humidité min à J-1 » et « humidité max à J-1 » pour chaque sonde (j’ai 5 sondes donc ça fait 30 commandes).
Dans le virtuel J-2, idem à J-2 (donc 30 commandes aussi), et ainsi de suite.

Enfin, dans le virtuel principal comportant toutes les informations j’ai rajouté pour chaque sonde des commandes « températures J-1 » et « humidités J-1 », « températures J-2 » et humidités J-2", etc.
Ce qui me fait un total de 65 commandes (13 commandes pour 5 sondes) pour ce virtuel.

Est-ce que tu penses que c’est trop (trop de commandes pour le virtuel principal) et que ça va alourdir inutilement le système ?

Enfin, question subsidiaire, je n’arrive pas à avoir le température (ou l’humidité) à la même heure que maintenant à J-1 par exemple.
J’ai essayé :

lastBetween(#[Chambre parents][Sonde 2][Temperature]#,date('Y-m-d H:i:s', strtotime(Now-1 days-1min)),date('Y-m-d H:i:s', strtotime(Now-1 days)))

Mais ça ne fonctionne pas…

bonjour
prefére le scenario ou solution equivalente (genre reprise d’info d’un autre virtuel qui s’actualise par un cron)
la raison : chaque mise a jour de ton info (sonde) toutes tes commandes vont se recalculer.
donc une consommation de resource inutile

Bonjour,

En fait j’ai regroupé toutes les informations de mes sondes dans un virtuel où j’effectue différents calculs.
J’ai mis une historisation de 7 jours sur les sondes et de 1 mois sur le virtuel.

Je n’ai pas touché à la fonction « auto-actualisation (cron) » : il faudrait que je mette une actualisation toutes les 10 minutes par exemple pour ne pas consommer les ressources inutilement, c’est bien ça ?

si momentanément tu historises tous (active dans la configuration : répétition de valeur) tu verras que toutes tes info se recalcule à chaque changement de valeur. (dans l’historique en promenant ta souris tu auras plein de point)
essai 10mn pour vérifier que cela soit pris en compte (1 point toutes les 10lmn)

si oui et que tu veux resté en virtuel :
en créé 2
un avec un cron une fois par jour ; pour les info + 1 jour
et dans le 2eme ceux du jour (sans cron avec non repet de valeur) + reprise du 1 virtuel.

si non il te faudra pour les info + 1 jour un scénario cron (minuit 1mn) et faire un Event sur tes info virtuel ou via variable

chez moi pour se genre d’info calculé je suis sur scenario avec un cron
le résultat du calcul est en variable
et dans le virtuel je reprend la variable

hs : je trouve que c’est très humide chez toi

Bonjour,

Je te remercie pour ta réponse.
Effectivement, je comprends maintenant ce que Salviaf voulait dire et ce que tu me dis : à chaque changement de valeur de la sonde, toutes les valeurs du virtuel sont recalculées (même celles des jours d’avant qui ne changent pas)…

Comme tu me le conseilles, je vais essayer de faire un scénario J-1 qui calcule les valeurs max et min de la veille à 00h01, et reprendre ces valeurs dans mon virtuel global ; puis un scénario J-2, puis J-3, etc.

Pour les min/max il n’y a pas de soucis, mais par contre il y a toujours une valeur que je n’arrive pas à récupérer, c’est la valeur qu’il faisait par hier à la même heure (que maintenant) : j’ai essayé un lastBetween entre 2 dates espacées de 1 min, mais ça ne fonctionne pas…

hs : oui effectivement très humide, entre le fait que ce soit une vieille maison, qu’il arrête pas de pleuvoir, et que l’on avait pas encore alumé le chauffage, ça fait des taux d’humidité assez élevés… :smile:

#[Dehors][Sondes Sud][Humidité]#-lastBetween(#[Dehors][Sondes Sud][Humidité]#,yesterday,-24 hour)
ou
#[Dehors][Sondes Sud][Humidité]#-lastBetween(#[Dehors][Sondes Sud][Humidité]#,,-24 hour)
soit une progression en % de
(#[Dehors][Sondes Sud][Humidité]#-lastBetween(#[Dehors][Sondes Sud][Humidité]#,,-24 hour))*100/(#[Dehors][Sondes Sud][Humidité]#)

Je vais évaluer : (64-69)*100/(64)
Résultat : -7.8125

montage de graph

un seul scenario pour +1 jour suffit
il regroupe chez moi tous un tas de calcul conso,…