Aller au contenu

time et variable local


Messages recommandés

Posté(e)
à l’instant, jjacques68 a dit :

moi perso je ferais


if fibaro:getValue(fibaro:getSelfId(),"ui.Label5.value") == "Prog_1" then 
	fibaro:call(fibaro:getSelfId(), "setProperty", "ui.lblTime2.value", "Bonjour")
end

Je ne connais pas le getProperty...

 

EEEEE ;) oui effectivement getProperty pas bon

 

merci ça fonctionne 

 

  • Like 1
Posté(e)

savez-vous si par défaut les bouton des VD dipose d'un main loop

 

si non comment crée un main loop dans un bouton

 

Posté(e) (modifié)

salut a tous

 

j'ai un autre petit probleme

 

si LABEL nprog  = Prog_01 alors collée une valeur dans le label  LABEL5

 

le problème est la valeur, je souhaite la récupérée dans une LABEL10

 

<------------------------ jusque la pas de souci -------------------------------------------------------------------------------------------------------------------><--Prob------->

if fibaro:getValue(fibaro:getSelfId(),"ui.nprog.value") == "Prog_01"     then     fibaro:call(fibaro:getSelfId(), "setProperty", "ui.LABEL5.value", "une valeur")
end

 

if fibaro:getValue(fibaro:getSelfId(),"ui.nprog.value") == "Prog_01" then 
	fibaro:call(fibaro:getSelfId(), "setProperty", "ui.LABEL5.value", "une valeur")
end

 

Modifié par 971jmd
Posté(e)

:D j'ai trouver 

 

local p1 = fibaro:get(fibaro:getSelfId(),"ui.lblTime.value") 

 

if fibaro:getValue(fibaro:getSelfId(),"ui.nprog.value") == "Prog_01"     then     fibaro:call(fibaro:getSelfId(), "setProperty", "ui.LABEL5.value", p1)
end

  • Like 1
Posté(e) (modifié)
Le 20/08/2018 à 11:21, Steven a dit :

setTimeOut prend en paramètre :

 

1) la function a exécuté

2) la durée en millièmes de secondes

 

Donc oui, 1 minute = 1000 millièmes de secondes * 60

@Steven salut

 

comment je pourrais placée une tempo entre chaque exécution

 

le problème est que si j’exécute newora1 et newora3 en même temps, j'ai un iniquement la lampe ID14 qui s'allume 

 

donc je pense qu'il faut une tempo 1s entre chaque newora


if string.format("%02d:%02d", currentDate.hour, currentDate.min) == newora1 then
fibaro:call(14, "turnOn") else 
      
      if string.format("%02d:%02d", currentDate.hour, currentDate.min) == newora2 then 
fibaro:call(14, "turnOff") end	
    
      	if string.format("%02d:%02d", currentDate.hour, currentDate.min) == newora3 then 
fibaro:call(338, "turnOn") end	
  
        if string.format("%02d:%02d", currentDate.hour, currentDate.min) == newora4 then 
fibaro:call(338, "turnOff") end	

end

 

 

 

 

Modifié par 971jmd
Posté(e) (modifié)

autre chose

juste pour notre connaissance

 

local currentDate = os.date("*t");

 

if string.format("%02d:%02d:%02d", currentDate.hour, currentDate.min, currentDate.sec+2) == newora1 then

 

tu pense qu'il est possible d'ajouter +2sec à currentDate.sec

 

Modifié par 971jmd
Posté(e) (modifié)

oui alors tu risques de ne pas le voir passer, 2 secondes est trop court, le Main d'un VD tourne toutes les 3 secondes environs.

 

Il te faut une boule qui tourne toutes les secondes !

 

Faudrait passer par une scène et fixer le setTimeout de la boucle à 1s.

 

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

j'ai encore un ti prob toujours dans le Boucle principale d'un VD

 

    			if string.format("%02d:%02d", currentDate.hour, currentDate.min) == newora1 then
fibaro:setGlobal("SPPG1" , "P1") 
  end
	end

  quand je test dans GEA ça fonctionne bien mai je reçois plusieurs fois  alarme ok, alarme ok, alarme ok......

 

GEA.add({"Global", "SPPG1", "P1"}, -1, "alarme ok",  { {"turnOn", id["LAMPE_CUISINE"]}, {"Global", "SPPG1", "0"}})

 

comment put on faire pour que  fibaro:setGlobal("SPPG1" , "P1") s' exécute une seul fois à  l'heure programmée 

Modifié par 971jmd
Posté(e)

j'ai changer de stratégie

 

 j'ai changer le format de l'heure 00:00:00

 

pk: je me suis dit que si je programme une heure comme exp: 10:00:01 que une foi que la seconde passé la Boucle ne pourra plus continuée a exécutée 

 

Avec le format 10:00 tant que le time n'arrive pas 10:01 impossible d’éteindre la lampe ID14 la boucle continu pendant 60ss....

 

j'ai chercher le format sur le net pour les seconde mai j'ai rein trouver, alors j'ai placée   currentDate.sec  mai ça ne fonctionne pas 

 


if (dayfound1) then
    	fibaro:debug("ok"..jours)
if string.format("%02d:%02d:%02d", currentDate.hour, currentDate.min, currentDate.sec) == newora1 then
    fibaro:debug("ok"..newora1)
    fibaro:call(14, "turnOff")
----fibaro:setGlobal("SPPG1" , "P1") 
  end
	end

 

Posté(e) (modifié)
local alarmClockDevice = fibaro:getSelfId()

local newora1 = fibaro:get(alarmClockDevice,"ui.Prog01.value") 
fibaro:debug(">>>> "..newora1)



if (os.date("%H:%M:%S", os.time())  == newora1) then
----fibaro:setGlobal("TEST", "1") 

fibaro:call(14, "turnOff")

  end

 

local newora1 = fibaro:get(alarmClockDevice,"ui.Prog01.value") 

 

format d’Entrée  00:00:SS 

 

<----------le prob est là    ----------->

if (os.date("%H:%M:%S", os.time())  == newora1) then

Modifié par 971jmd
Posté(e) (modifié)

j'ai abonné l'idée des secondes 00:00:00, même dans une scène normal  ça fonctionne pas tres bien

Fibaro  n'aime pas trop

et j'ai laissée tomber le Boucle principale de la VD

 

j'ai développée le code dans une scène avec 00:00  mai j'ai toujours le même problème 

 

si je programme:   fibaro:setGlobal("TEST" , "1")   avec GEA qui récupère l'action   .

 

GEA.add({"Global", "TEST", "1"}, -1, "on",  {{"turnOn", id["LAMPE_CUISINE"]}, {"Global", "TEST", "0"}})

 

je reçois toujours 2 fois la notification ON

 

 

et si je programme l'allumage d'une lampe, il faut entendre +/- 30ss avant de l’éteindre manuellement si non dans ce temps la elle ce rallume.   

 

je n'ai pas d'action franche 

 

si ont pouvait, dans la code ci-dessous rajouter a l'heure programmée 2s 

exemple si je programme 08:55 il rajoute 2s soit 08:55:02 comme ça impossible d'aller plus loins 

je c'est pas

 

ci-dessous le code de commande

local alarmClockDevice = 439

-----loacl jour semain
local joursFR = {
  dimanche="Sunday", 
  Lundi = "Monday", 
  Mardi="Tuesday",
  Mercredi="Wednesday", 
  Jeudi="Thursday",
  Vendredi="Friday",
  Samedi="Saturday",
  Tout_les_jours="All",
  Weekend="Weekend",
  Jour_de_la_semaine="Weekday"}

local Jour_VD_P1 = fibaro:getValue(alarmClockDevice, "ui.labjour01.value")

local newora1 = fibaro:get(alarmClockDevice,"ui.Prog01.value")

local dayfound1 = false
local jours = (joursFR[Jour_VD_P1])
jours = string.gsub(jours, "All", "Weekday,Weekend")
jours = string.gsub(jours, "Weekday", "Monday,Tuesday,Wednesday,Thursday,Friday")
jours = string.gsub(jours, "Weekend", "Saturday,Sunday")
if (string.find(jours, os.date("%A"))) then
	dayfound1 = true
end

function tempFunc()
	local currentDate = os.date("%H:%M")
  
if (dayfound1) then 
     fibaro:debug("JOURS_P1>> "..Jour_VD_P1)
    fibaro:debug("HEURE_P1>> "..newora1)
if  currentDate == newora1	then  fibaro:setGlobal("TEST" , "1") 
    end
    end
    
 

	setTimeout(tempFunc, 60*1000)
end

tempFunc()

le debugue

 

[DEBUG] 23:35:47: JOURS_P1>> Jeudi
[DEBUG] 23:35:47: HEURE_P1>> 22:25
[DEBUG] 23:35:47: JOURS_P2>> Jeudi
[DEBUG] 23:35:47: HEURE_P2>> 22:29

 

Modifié par 971jmd
Posté(e) (modifié)

je règle l'heure apartir de la VD et scène fait le reste 

 

la particularités de la VD est de gérée les jours  :exp   allume le lampe a 10h00 uniquement les lundi ou les jours de la semaine ou le Weekend

 

ça fonctionne mai c'est au niveau de l’exécution de l'heure qui y un problème 

 

comme la scène tourne en boucle tout les 3s si je programme une heure  comme par exemple 10H00 tant que 10h01 navire pas tout les 3s le code renvois un ON 

Modifié par 971jmd
×
×
  • Créer...