Pour récupérer le min j’ai ajouté une info virtuelle
min = minBetween(#[Extérieur][Température Extérieur Sud][temperature]#,#annee#-#mois#-#jour# 00:00:00,#annee#-#mois#-#jour# 23:59:59)
Ensuite dans le code je récupère cette info, pour mettre à jour la bonne balise via javascript
Bien sur je recupère également la température
Ce qui m’embête, c’est que je suis obligé à chaque fois pour tous mes capteurs de temp, d’ajouter les infos MIN et MAX. J’aimerai utiliser directement la formule dans le code javascript du widget, pour faire directement le calcul du min et max en fonction de l’info temp, comment faire ?
Salut, merci pour les infos.
Je débute en Javascript, pourrais-tu m’expliquer cette partie du code.
Notamment, as tu un lien ou sont recenser les fonctions dispo jeedom, comme history.get
Et je ne comprend pas sle success ?
Avec toute ces infos, j’ai réussi à avancer et à comprendre.
J’ai ajouté ce code pour récupérer les heures du min et du max, qu’en penses tu ?
A bientôt
/* Fonction Jeedom pour récuperer l'historique */
function getHistory(id, start, end) {
/* Appel de la fonction Jeedom */
jeedom.history.get ({
cmd_id:id,
dateStart:start,
dateEnd:end,
success: function(resultat){
/* Fonction Ajax asynchrone */
$('.cmd[data-cmd_id=#id#] .min').empty().text(resultat.minValue);
$('.cmd[data-cmd_id=#id#] .max').empty().text(resultat.maxValue);
/*Ici on va rechercher l'heure du min et du max */
var now = new Date()
var TimeZoneOffset = now.getTimezoneOffset()
/*On commence par mettre le tableau data à plat et on recherche les index du tableau des valeurs min et max */
var IndexMin = resultat.data.flat().indexOf(resultat.minValue);
var IndexMax = resultat.data.flat().indexOf(resultat.maxValue);
/* on va sauvegarder pour les deux valeurs, le temps exprimé en ms depuis 1er Janvier 1970 00:00:00 de notre timezone */
/* la valeur se trouve dans l'index n-1 (c'est la première dimension du tableau, et on a mis le tableau à plat) */
/* on ajoute à cette valeur la différence entre UTC et notre timezone, pour la transformer en UTC */
var TimeMinMs = resultat.data.flat()[IndexMin-1] + (TimeZoneOffset*60*1000);
var TimeMaxMs = resultat.data.flat()[IndexMax-1] + (TimeZoneOffset*60*1000);
/* On calcule en ms depuis combien de temps ont été enregistré ces valeurs */
var SinceMin = Date.now() - TimeMinMs
var SinceMax = Date.now() - TimeMaxMs
/* on va extraire le nombre d'heures entières */
var SinceMinHeure = Math.trunc(SinceMin / 1000 / 3600)
var SinceMaxHeure = Math.trunc(SinceMax / 1000 / 3600)
/* on va extraire le nombre de minutes entières */
var SinceMinMinute = Math.trunc( ( (SinceMin / 1000 / 3600) - SinceMinHeure ) *60)
var SinceMaxMinute = Math.trunc( ( (SinceMax / 1000 / 3600) - SinceMaxHeure ) *60)
/* On va enfin calculer l'heure du min et du max */
var HeureMin = new Date()
HeureMin.setHours(now.getHours()-SinceMinHeure, now.getMinutes()-SinceMinMinute)
var HeureMax = new Date()
HeureMax.setHours(now.getHours()-SinceMaxHeure, now.getMinutes()-SinceMaxMinute)
/* On affiche */
$('.cmd[data-cmd_id=#id#] .minheure').empty().text(HeureMin);
$('.cmd[data-cmd_id=#id#] .maxheure').empty().text(HeureMax);
}
})
}
tu trouveras d’autres api js dans modal/PHP
à l’intérieur du code php
toutes les fenêtres de jeedom : liste variable, …
(j’ai juste vu pas eu le temps de tester en detail)