Aller au contenu

Help!! comparer/mesurer l’écart entre 2 dates/time


Messages recommandés

Posté(e)

ok, je ne suis pas sorti de l'auberge :(

mais c'est deja Top :60:

 

il me reste 2 choses,

- cette histoire de jour en sec et/inversement

- dans mon VD plus haut, Last Rain affiche la date et l'heure, maintenant il est en seconde,

lorsque je modifie dans le VD avec ce code

 

--===========TIME LAST RAIN==========
-- on affiche la variable contenant la date de la dernire pluie dans le champs saison
--local time;
--time = fibaro:getGlobal("time_last_rain");
--fibaro:debug(time);
--fibaro:call(id.VD, "setProperty", "ui.LastRain.value", time.." ");
local date_derniere_pluie;
date_derniere_pluie = tonumber(fibaro:getGlobalValue("time_last_rain"))
fibaro:debug(os.date("%d/%m/%Y - %H:%M:%S",date_derniere_pluie))
fibaro:call(fibaro:getSelfId(), "setProperty", "ui.LastRain.value", date_derniere_pluie.."");

-------------------------

le debug fonctionne bien, mais la valeur affichée dans le VD reste en seconde, c'est pourtant impossible

Posté(e)
il y a 3 minutes, J3R3M a dit :

Beaucoup plus simplement, il faudrait que tu enregistres simplement la valeur os.time() dans tes variables dès qu'un évènement que tu souhaites historiser se passe.

aussi oui...

Posté(e) (modifié)
il y a 7 minutes, J3R3M a dit :

Beaucoup plus simplement, il faudrait que tu enregistres simplement la valeur os.time() dans tes variables dès qu'un évènement que tu souhaites historiser se passe.

Ainsi, lorsque tu voudras comparer ou calculer une différence, il te suffira d'effectuer le os.difftime() et ensuite de l'afficher sous la forme que tu préfères avec os.date().

etant donné que tt est en seconde, il faut que je transforme le contenu de ma VG

WArrosage_J_avant

1,2,3 ...jours en sec pour le comparer directement avec la VG time_last_rain

 

 

EDIT: ah oui, exemple dans ma scene, je memeorise ds une VG ttes les 60sec (par exemple) le time actuel?

 

je me retrouverai alors avec 

VG time_last_rain

VG time_actu

VG Warrosage_J_avant

Modifié par flamalex
Posté(e)

label "last_rain" de ma capture d'ecran 1ere page

je suis en jour mois année heure minute sec

maintenant, malgré la modif effectuée ci dessus, je suis en seconde 1587109655

Posté(e)
local date_derniere_pluie;
date_derniere_pluie = tonumber(fibaro:getGlobalValue("time_last_rain"))
fibaro:debug(os.date("%d/%m/%Y - %H:%M:%S",date_derniere_pluie))
fibaro:call(fibaro:getSelfId(), "setProperty", "ui.LastRain.value", date_derniere_pluie.."")

pourtant ton code est jsute... :15:

Tu 'aurais pas un autre bout de code qui surchargerait ce label ?

sinon pense au refresh de la page !

Posté(e)

non, rien à faire,

il reste en seconde

alors que le debug est bon

 

[DEBUG] 10:27:15: 17/04/20 10:27
[DEBUG] 10:27:15: 17/04/2020 - 09:47:35
[DEBUG] 10:27:15: Le Taux d'humidité exterieur est de : 76.8
[DEBUG] 10:27:15: Il fait : cloudy
[DEBUG] 10:27:15: Printemps


[DEBUG] 10:27:15: 17/04/20 10:27
[DEBUG] 10:27:15: 17/04/2020 - 09:47:35
[DEBUG] 10:27:15: Le Taux d'humidité exterieur est de : 76.8
[DEBUG] 10:27:15: Il fait : cloudy
[DEBUG] 10:27:15: Printemps

 

Posté(e)

tu dois avoir une surcharge quelque part... un autre code écrit par dessus !

 

j'avais déjà eut des soucis d'affichage, si tu quittes le VD et que tu rentre anouveau  ?

Posté(e)

j'ai quitté, puis changé de label, rien à faire

le nouveau label est bien passé de vide, puis clic sur bp VD et il m'affiche à nouveau les secondes  1587109655

il y a un problème lorsqu'il rappelle date_derniere_pluie ?

le debug est bon


 
Posté(e)

dans 

fibaro:call(fibaro:getSelfId(), "setProperty", "ui.LastRain.value", date_derniere_pluie.."")

enlève le .."" à la fin... sert à rien.

Mais c'est pas ça qui va changer qqch...

 

Du coup je reste persuader que tu as une surcharge de valeur.

Quelque part ailleurs dans ton VD, tu dois certainement écrire dans ce label.

par exemple dans le MainLoop !

Posté(e)
local date_derniere_pluie = tonumber(fibaro:getGlobalValue("time_last_rain"))
local ma_date_en_toute_lettre = os.date("%d/%m/%Y - %H:%M:%S",date_derniere_pluie)
fibaro:debug(ma_date_en_toute_lettre)
fibaro:call(fibaro:getSelfId(), "setProperty", "ui.LastRain.value", ma_date_en_toute_lettre)

 

  • Thanks 1
Posté(e) (modifié)
il y a 5 minutes, jjacques68 a dit :

s'il te faut des explications, n'hésite pas...

oui merci, pour le moment j'arrive à suivre

concernant le VD, si j'ai bien comprendo

local date_derniere_pluie = tonumber(fibaro:getGlobalValue("time_last_rain")) --ici on stock dans "date-derniere-pluie" en number, la valeur de la VG time last rain
local ma_date_en_toute_lettre = os.date("%d/%m/%Y - %H:%M:%S",date_derniere_pluie) -- ici on stock dans "ma_date_en_toute_lettre" la conversion de "date derniere pluie" en format date et heure
fibaro:debug(ma_date_en_toute_lettre) 
fibaro:call(fibaro:getSelfId(), "setProperty", "ui.LastRain.value", ma_date_en_toute_lettre)-- et ici on l'affiche

 

Modifié par flamalex
Posté(e) (modifié)

code du BP VD -

--[[
%% autostart
%% properties
%% globals
--]]

local statut = fibaro:getGlobalValue('Mode_Arrosage')
local icon = { AUTO = 1178 , MANU = 1179 }  

if (statut == "AUTO")
then -- Mode AUTO
fibaro:call(fibaro:getSelfId(), "setProperty", "currentIcon", icon['AUTO']) 
else
-- Mode MANU
fibaro:call(fibaro:getSelfId(), "setProperty", "currentIcon", icon['MANU']) 
end
-------------------------------------
--------------------------------------

local WArrosage_J_avant;
-- incremantation de +1 de variable globale consigneT
fibaro:setGlobal('WArrosage_J_avant', fibaro:getGlobalValue('WArrosage_J_avant') - 1);
-- puis on affiche la variable dans le champs consigne
  
 WArrosage_J_avant= fibaro:getGlobal("WArrosage_J_avant");
fibaro:debug(WArrosage_J_avant);
  
fibaro:call(fibaro:getSelfId(), "setProperty", "ui.consigneTimeavant.value","Nbre de jours passés sans pluie: "..WArrosage_J_avant.."");

code du BP VD +

--[[
%% autostart
%% properties
%% globals
--]]

local statut = fibaro:getGlobalValue('Mode_Arrosage')
local icon = { AUTO = 1178 , MANU = 1179 }  

if (statut == "AUTO")
then -- Mode AUTO
fibaro:call(fibaro:getSelfId(), "setProperty", "currentIcon", icon['AUTO']) 
else
-- Mode MANU
fibaro:call(fibaro:getSelfId(), "setProperty", "currentIcon", icon['MANU']) 
end
-------------------------------------

local WArrosage_J_avant;
-- incremantation de +1 de variable globale consigneT
fibaro:setGlobal('WArrosage_J_avant', fibaro:getGlobalValue('WArrosage_J_avant') + 1);
-- puis on affiche la variable dans le champs consigne
  
 WArrosage_J_avant= fibaro:getGlobal("WArrosage_J_avant");
fibaro:debug(WArrosage_J_avant);
  
fibaro:call(fibaro:getSelfId(), "setProperty", "ui.consigneTimeavant.value","Nbre de jours passés sans pluie: "..WArrosage_J_avant.."");

 

Modifié par flamalex
Posté(e)
local WArrosage_J_avant = tonumber(fibaro:getGlobalValue("WArrosage_J_avant"))/(24*60*60)

-- incremantation de +1 de variable globale consigneT
WArrosage_J_avant = WArrosage_J_avant + 1
fibaro:setGlobal('WArrosage_J_avant', WArrosage_J_avant * (24*60*60))

-- puis on affiche la variable dans le champs consigne
fibaro:debug(WArrosage_J_avant)
fibaro:call(fibaro:getSelfId(), "setProperty", "ui.consigneTimeavant.value","Nbre de jours passés sans pluie: "..WArrosage_J_avant)

explications :

 

on a va donc stocker des jours converti en secondes dans la VG. Pour ça c'est un simple multiple de 24 heures * 60 minutes * 60 secondes.

 

donc quand on récupère le contenu de la VG, on va diviser par 24*60*60, qui nous donnera le nombre de jours.

on va incrémenter / décrémenter la valeur

puis la re stocker dans la VG en la multipliant par 24*60*60

 

du coup dans la VG tu as les secondes, et à l'affichage, tu restes en jour.

 

Y a le nom de la variable locale "WArrosage_J_avant" qui dérange un peu la compréhension, car elle a le même nom que la variable globale...

En locale, elle contient une valeur 1-2 ou 3 mais en globale est contient les nombres de secondes.

Posté(e)

bonne remarque, mais je mélange peut etre!!!

mais alors, j'ai une scene GEA, qui va controler l'humidité, la temperature, la saison, si soleil coucher et nbr de jour > ou = 1&,2 ou 3 sans pluie

il va lancer la verif ts les jours au coucher du soleil

donc, si nous sommes à 2,5jrs de la derniere pluie ou 3,5jrs ???

Posté(e)

ah là en effet... il faut alors modifier dans GEA et mettre 1*24*60*60 ou 2*24*60*60 ou 3*24*60*60...

 

mais désolé, je n'ai jamais utilisé GEA, je ne sais pas comment ça marche...

×
×
  • Créer...