Aller au contenu

time et variable local


Messages recommandés

Posté(e)

Mettre un sleep dans le Main Loop est une très mauvaise idée.

 

Le main loop étant executé toutes les 3 secondes, c'est vite compliqué car le turnOn va s'exécuter toutes les 3 secondes pendant une minutes puisque le code ne vérifie que l'heure et les minutes (ex : 8:02) donc entre 8h02 et 8h03 il va s’exécuter une vingtaine de fois.

 

Perso, j'utilise un code similaire à celui-ci pour temporiser mais "main loop"

 

local nbMinute = 1
 
function doIt()
   -- VOTRE CODE --
   fibaro:log(os.date("%d %B %Y - %H:%M:%S"))
   fibaro:call(fibaro:getSelfId(), "setProperty", "logTemp", "TxtGray" )  
end
 
if (not instance) then
   instance = { lastrun = os.time(), every = nbMinute }
end
 
diff = os.date("*t", os.difftime(os.time(), instance.lastrun))
 
if (diff.min >= instance.every) then
   doIt()
   instance.lastrun = os.time()
end

 

  • Like 2
Posté(e)

j’essaye d'aller plus loin avec les jour de la semain

 

mai je pense qu'il manque une condition

 

la lampe 14 s'allume bien a l'heure et s'éteint bien à l'heure même si je mes un jour différent de celui aujourd’hui  

local alarmClockDevice = fibaro:getSelfId()

	local currentDate = os.date("%H:%M")
	local currentDate2 = os.date("*t")
	
	----Heur
	local heure = fibaro:getValue(423, "ui.lblTime.value")
    fibaro:debug(heure)
	local heure2 = fibaro:getValue(423, "ui.lblTime2.value")
    fibaro:debug(heure2)
	
----Date
	local date1 = fibaro:getValue(423, "ui.lblDays.value")
	fibaro:debug(date1)
    
local date2 = fibaro:getValue(423, "ui.lblDays.value")
	fibaro:debug(date2)
    
  	if currentDate == heure	 then fibaro:call(14, "turnOn") end
    if currentDate == heure2 then fibaro:call(14, "turnOff") end

 

 

Posté(e)

FIBARO  voit les date comme ça si je me trompe pas

 

(currentDate.wday == 1 or currentDate.wday == 2 or currentDate.wday == 3 or currentDate.wday == 4 or currentDate.wday == 5 or currentDate.wday == 6 or currentDate.wday == 7) 

Posté(e)

(currentDate.wday == 1)   dimanche
(currentDate.wday == 2)  lundi
(currentDate.wday == 3)  mardi
(currentDate.wday == 4)  mercredi
(currentDate.wday == 5)  jeudi
(currentDate.wday == 6)  vendredi
(currentDate.wday == 7)  samedi
(currentDate.wday == 1)   dimanche
 

Posté(e)

local jours_en_anglais = os.date("%A")

 

Retourne le jours de la semaine en anglais. Pour aujourd'hui, c'est donc "Monday".

Posté(e)

Nous sommes LUNDI et le code retourne 1 donc désolé mais tu n'as pas bien vérifié, @jjacques68 a raison.

 

image.png.9d0e84e7c0ab91a38aa7ff8624b220d2.png

 

 

Dimanche, nous étions le 19.08.2018 donc

 

local dim = os.time{year=2018, month=8, day=19, hour=0}

print(os.date("%w", dim))

 

le résultat est bien 0.

 

 

Posté(e)

Alors la faut qu’on m’explique :

Essayez ça :

print(os.date(‘%w’)
print(os.date(‘*t’).wday)

Le premier renvoie 1
Le deuxième renvoie 2

????????


Envoyé de mon iPhone en utilisant Tapatalk Pro

Posté(e)
Alors la faut qu’on m’explique :




Alors en fait c’est comme ça, avec le paramètre *t dimanche = 1

Avec le %w, dimanche = 0

Encore logique ça ...

Lu sur lua.org.



Envoyé de mon iPhone en utilisant Tapatalk Pro
×
×
  • Créer...