Aller au contenu

time et variable local


Messages recommandés

Posté(e) (modifié)

Salut a tous, j'ai besoin de votre aide

 

je un problème avec une variable local

 

dans le simple code suivant qui allume une lampe a une heure précise, je cherche placé l’heure dans une variable local 

 

 

local heure  = "15:02"  ---ligne N° 6

 

 ( string.format("%02d:%02d", currentDate.hour, currentDate.min) == "heure")   ----ligne N°10

 

mai ça ne fonctionne pas 

merci pour votre aide

 

local sourceTrigger = fibaro:getSourceTrigger();
function tempFunc()
local currentDate = os.date("*t");
local startSource = fibaro:getSourceTrigger();

local heure  = "15:02"   -----ligne N°6
fibaro:debug("Heur >>>>"..heure)
  
if (
 ( string.format("%02d:%02d", currentDate.hour, currentDate.min) == "..heure..")  ----ligne N°10
)
then
	fibaro:call(14, "turnOn");
end

setTimeout(tempFunc, 60*1000)
end
if (sourceTrigger["type"] == "autostart") then
tempFunc()
else

local currentDate = os.date("*t");
local startSource = fibaro:getSourceTrigger();
if (
sourceTrigger["type"] == "other"
)
then
	fibaro:call(14, "turnOn");
end

end

 

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

Bonsoir,

 

Tu compares l'heure actuelle à un simple texte nommé ..heure.. et non à ta variable heure comme utilisé précédemment comme dans la ligne 7.

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

le but est au finale est de remplacée la variable local par une label

 

dans une vd règle l'heur qui s'affiche dans un label5

 

et mon ma scène récupéré l'heur :

local heure = (fibaro:getValue(389, "ui.Label5.value")) 

.

.

 ( string.format("%02d:%02d", currentDate.hour, currentDate.min) == "..heure..")  ----ligne N°8

 

le probleme est que la variable local HEURE récupère bien la valeur mai je n'arrive a l’attribuée a ma ligne 8

local sourceTrigger = fibaro:getSourceTrigger();
function tempFunc()
local currentDate = os.date("*t");
local startSource = fibaro:getSourceTrigger();

local heure = (fibaro:getValue(389, "ui.Label5.value")) -----ligne N°6
if (
 ( string.format("%02d:%02d", currentDate.hour, currentDate.min) == "..heure..")  ----ligne N°8
)
then
	fibaro:call(14, "turnOn");
end

setTimeout(tempFunc, 60*1000)
.
.
.
etc

 

 

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

En faisant le mix de ce que les autres ont dis, cela donne ça :

 

local sourceTrigger = fibaro:getSourceTrigger()

function tempFunc()
	local currentDate = os.date("%H:%M")
	local startSource = fibaro:getSourceTrigger()
	local heure = fibaro:getValue(389, "ui.Label5.value")
	
  	if currentDate == heure	then fibaro:call(14, "turnOn") end

	setTimeout(tempFunc, 60*1000)
end
.
.
etc

En vérifiant que le format de l'heure dans le Label5 de ton VD 389 est bien sous la forme "00:00"

Modifié par jjacques68
Posté(e) (modifié)
Il y a 8 heures, 971jmd a dit :

if ( ( string.format("%02d:%02d", currentDate.hour, currentDate.min) == "..heure..") ----ligne N°8 )

Bonjour,

ceci est une chaine de caractère dont la valeur est ..heure.. et non la variable heure !

Il faut écrire ""..heure.."" si vous voulez transformer la variable heure en chaine de caractère pour comparer ... (deux fois les double-quotes avant et après).

Voilà ... :)

 

Modifié par Kana-chan
  • Like 1
Posté(e)

salut a tous et merci pour votre aide

 

bon ça ne fonctionne toujours pas 

 

pour faire simple j'ai tester ça 

 

local heure  = "08:17"
 
  
if (
 ( string.format("%02d:%02d", currentDate.hour, currentDate.min) == ""..heure.."")
)
then
.
.
.
.

mai rien 

 

Posté(e) (modifié)
--[[
%% properties
%% events
423 ui.lblTime.value
%% globals
--]]



local sourceTrigger = fibaro:getSourceTrigger()

function tempFunc()
	local currentDate = os.date("%H:%M")
	local startSource = fibaro:getSourceTrigger()
	local heure = fibaro:getValue(423, "ui.lblTime.value")
	
  	if currentDate == heure	then fibaro:call(14, "turnOn") end

	setTimeout(tempFunc, 60*1000)
end
Modifié par 971jmd
Posté(e)

Le startSource sert à quoi dans la fonction ? je pense que tu peux l'enlever

 

Cette fonction doit fonctionner.

 

Est-elle bien appelée dans le main ?

 

Le label a-t-il la bonne valeur ?

Posté(e)

ok alors ajoute un print(heure) juste en dessous de local heure = ... dans la fonction.

histoire d'être sûr...

 

Ce serait bien d'avoir le code complet de la scène, pas que la fonction...

Posté(e)

tu as pas mis ce que @Steven a dit :

 

--[[
%% properties
%% events
423 ui.lblTime.value
%% globals
--]]



local sourceTrigger = fibaro:getSourceTrigger()

function tempFunc()
	local currentDate = os.date("%H:%M")
	local startSource = fibaro:getSourceTrigger()
	local heure = fibaro:getValue(423, "ui.lblTime.value")
	
  	if currentDate == heure	then fibaro:call(14, "turnOn") end

	setTimeout(tempFunc, 60*1000)
end

tempFunc()

il faut appeler ta fonction avec tempFunc() après la fonction.

Posté(e)
--[[
%% properties
%% events
423 ui.lblTime.value
%% globals
--]]



-----local sourceTrigger = fibaro:getSourceTrigger()

function tempFunc()
	local currentDate = os.date("%H:%M")
	local startSource = fibaro:getSourceTrigger()
    
	local heure = fibaro:getValue(423, "ui.lblTime.value")
	print(heure)
  	if currentDate == heure	then fibaro:call(14, "turnOff") end

	setTimeout(tempFunc, 60*1000)
end

tempFunc()

 

Posté(e) (modifié)

en gros en enlevant ce qui est pas util...

--[[
%% properties
%% events
423 ui.lblTime.value
%% globals
--]]

function tempFunc()
	local currentDate = os.date("%H:%M")
	local heure = fibaro:getValue(423, "ui.lblTime.value")	
	print(heure)
  	if currentDate == heure	then fibaro:call(14, "turnOn") end

	setTimeout(tempFunc, 60*1000)
end

tempFunc()

 

 

 

Modifié par jjacques68
×
×
  • Créer...