Date dans une info virtuel

Tags: #<Tag:0x00007fa7af00a6a0>

Bonjour

Je cherche à récupérer mon index Linky qui est dans la rue très loin de ma maison

J’utilise le plugin enedis pour récupérer la conso jour ,

Du coup j’ai fait un virtuel dans lequel j’ai
Une info : relèvé index , dans lequel j’enregistre mon dernier relevé manuel d’index
Une info : date dernier relevé , ou j’enregistre ma date de dernier relevé

Ensuite 2 autre info
Une qui me fait un statsBetween SUM la date de relevé et la date du jour sur la conso jour de Linky
Une autre qui me fait un TimeDiff sur la date du jour et la date de dernier relevé

J’ai plus qu’à additionner le résultat de statsBetween SUM a mon index pour avoir mon nouvel index

Mais je bug a mort sur la date saisie manuellement dans l’info du virtuel

Si je saisie juste 2021-01-06 , le virtuel me fait le calcul ( même en mode Autre )
Je met des ’ , ce qui corrigé le soucis et n’embête pas le timeDiff , mais ça emmerde le statsBetween, du coup j’ai tenté de rajouter un str_replace mais ça va toujours pas

Une idée ?

Dsl si je suis pas assez clair

Bonjour, j’aurais besoin de ton aide s’il te plait. je fais comment pour que cette fonction retourne quelque chose ?

#[Programmation-autre][Conso Elec Maison][date_releve]# contient 2021-06-01
mais ca marche pas car #[Programmation-autre][Conso Elec Maison][date_releve]# retourne 2014 (le résultat de 2021-06-01), j’ai tenté 2021/06/01 ou avec des guillements, bref, pas moyen de faire marcher ‹ statisticsBetween › sauf si j’entre une date manuellement

(statisticsBetween(#[Maison][Linky][Consommation Jour]#,sum,#[Programmation-autre][Conso Elec Maison][date_releve]#,2021-06-06))

j’ai tenté sinon d’utiliser la fonction

valueDate(#[Programmation-autre][Conso Elec Maison][releve_index]#,Y-m-d)

mais c’est pareil , ValueDate retournant 2021-06-01 bein la soustraction se fait et je perd le format date !

bonjour,
dit à jeedom que c’est une date via la fonction PHP
ensuite tu peux faire se que tu veux

Merci j’avais effectivement trouvé cette solution mais non ca passe pas

j’ai un Virtuel Info ‹ Test › qui contient
‹ 2021-06-01 ›

Si effectivement je fais
strftime(%t %d/%m/%Y,strtotime(#[Programmation-autre][Conso Elec Maison][test]#))
ca me retourne : 01/06/2021
donc a priori supper

mais si je fais :
(statisticsBetween(#[Maison][Linky][Consommation Jour]#,sum,strftime(%t %d/%m/%Y,strtotime(#[Programmation-autre][Conso Elec Maison][test]#)),2021-06-06))
ca retourne 0

(statisticsBetween(#[Maison][Linky][Consommation Jour]#,sum,strftime(%t %Y-%m-%d,strtotime(#[Programmation-autre][Conso Elec Maison][test]#)),2021-06-06))

retourne aussi 0

alors que
(statisticsBetween(#[Maison][Linky][Consommation Jour]#,sum,2021-06-01,2021-06-06))
me retourne 234 (kwH)

la valeur que tu introduis est un compteur si je ne me trompe pas.

si tu cherches a avoir la conso de la semaine, tu dois faire la valeur actuelle - la valeur d’il y a une semaine donc une formule de ce type: #[Maison][Linky][Consommation Jour]#-(statisticsBetween(#[Maison][Linky][Consommation Jour]#,max,8 day ago,7 day ago))
sous réserve que les dates de tes entrées soient bonne comme je t’ai expliqué dans le message

en gros, pour chaque donnée introduite, tu fais un event
cmd::byString("#[Maison][Linky][Consommation Jour]#") ->event(25211452, 2020-11-04 07:00:00);

tu peux aussi utiliser le plugin officiel Data Export qui permet aussi d’importer un csv vers une commande info

et après, reste plus qu’a faire une recherche

j’ai poussé le test

Sans-titre4

image
dans info convert « / ou - idem »

strftime(%t %Y-%m-%d,strtotime('#[test][date][date]#'))

dans sum2

(statisticsBetween(#[résumé][InfoClimat][Précipitations 24h]#,sum,#[test][date][convert]#,2021-06-06))

et widget action perso « dans ma signature »

1 J'aime

Salut

merci bcp @ajja17orange ! vraiment

sauf que j’ai pas le meme résultat, au lieu de voir la date je lis ‹ 66 ›

j’ai du louper un truc, j’ai encore besoin de ton aide :pray:

image

image

Maj----
ca marche si je change la date sur mon tel
mais pas sur chrome sur PC… bizarre tout ca (j’ai tenté Edge et aussi en nav privé)
en fait sur PC ca change PAS la date (le 66 venait d’un test fait avant tes propositions)

j’ai trouvé , c’est dans le code du widget
j’ai simplifié

<script>
        jeedom.cmd.update['#id#'] = function(_options){
    		$('#input#id#').val(_options.display_value);

$('.cmd[data-cmd_uid=#uid#] .execute').off("change").on("change", function () {  
        jeedom.cmd.execute({id:'#id#', value: {
           slider: '"'+this.value+'"'
        }});                });

}  
    	jeedom.cmd.update['#id#']({display_value:'#state#',valueDate:'#valueDate#',collectDate:'#collectDate#',alertLevel:'#alertLevel#'});     
	</script>
1 J'aime

avec ordi
une fois selectionné faut appuyé sur la touche entrée.
(surtout utile avec input numb et clock).

si tu veux aller plus loin :

j’ai cru voir passé sur le forum 2 autres widget input date
« rapide recherche je retrouve pas »

tu as compris que le widget inscrit la date entre 2 "

slider: '"'+this.value+'"'

que l’info convert
récupère le textuel
le traite en date (’)
afin d’éviter tous calcul

il y a certainement moyen d’optimiser directement dans le widget

sinon pour éviter le passage à l’info convert

dans le convert le premier traitement %t correspond à la touche tab
car en v3 si on commençait par un chiffre ça ne fonctionné pas
je crois qu’en v4 tu n’en a pas besoin.

1 J'aime

Franchement merci mille fois pour ton aide !