971jmd Posté(e) le 19 août 2018 Signaler Posté(e) le 19 août 2018 (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é le 19 août 2018 par 971jmd
pepite Posté(e) le 19 août 2018 Signaler Posté(e) le 19 août 2018 Bonsoir @971jmd, Regarde ca : print(os.date("%H:%M"))
trainkill666 Posté(e) le 19 août 2018 Signaler Posté(e) le 19 août 2018 (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é le 19 août 2018 par trainkill666
Dragoniacs Posté(e) le 19 août 2018 Signaler Posté(e) le 19 août 2018 Moi je le fait avec un simple :Local heure = os.dateIf heure == "19:00" then xxxxxxEnvoyé de mon SM-A520F en utilisant Tapatalk
971jmd Posté(e) le 19 août 2018 Auteur Signaler Posté(e) le 19 août 2018 (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é le 19 août 2018 par 971jmd
jjacques68 Posté(e) le 20 août 2018 Signaler Posté(e) le 20 août 2018 (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é le 20 août 2018 par jjacques68
Kana-chan Posté(e) le 20 août 2018 Signaler Posté(e) le 20 août 2018 (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é le 20 août 2018 par Kana-chan 1
971jmd Posté(e) le 20 août 2018 Auteur Signaler Posté(e) le 20 août 2018 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
jjacques68 Posté(e) le 20 août 2018 Signaler Posté(e) le 20 août 2018 nan mais remplace la ligne ( string.format("%02d:%02d", currentDate.hour, currentDate.min) == ""..heure.."") par currentDate == heure
jjacques68 Posté(e) le 20 août 2018 Signaler Posté(e) le 20 août 2018 et pour currentDate : local currentDate = os.date("%H:%M") Je t'ai mis l'exemple complet plus haut...
971jmd Posté(e) le 20 août 2018 Auteur Signaler Posté(e) le 20 août 2018 oui j'ai tester mai rein, j'ai pas de message err dans le debug mai pas d'action
jjacques68 Posté(e) le 20 août 2018 Signaler Posté(e) le 20 août 2018 oui mais alors là il faut que tu postes le code complet...
971jmd Posté(e) le 20 août 2018 Auteur Signaler Posté(e) le 20 août 2018 (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é le 20 août 2018 par 971jmd
Steven Posté(e) le 20 août 2018 Signaler Posté(e) le 20 août 2018 ajoute tempFunc() tout à la fin de ton code en dessous du "end" 1
jjacques68 Posté(e) le 20 août 2018 Signaler Posté(e) le 20 août 2018 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 ?
jjacques68 Posté(e) le 20 août 2018 Signaler Posté(e) le 20 août 2018 ha ben voilà ça rejoint ce que dis @Steven
jjacques68 Posté(e) le 20 août 2018 Signaler Posté(e) le 20 août 2018 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...
971jmd Posté(e) le 20 août 2018 Auteur Signaler Posté(e) le 20 août 2018 il reçois bien la valeur [DEBUG] 09:56:53: 08:50
jjacques68 Posté(e) le 20 août 2018 Signaler Posté(e) le 20 août 2018 donc dans ta fonction, ton device 14 s'allumera à 08:50.
jjacques68 Posté(e) le 20 août 2018 Signaler Posté(e) le 20 août 2018 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.
971jmd Posté(e) le 20 août 2018 Auteur Signaler Posté(e) le 20 août 2018 --[[ %% 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()
jjacques68 Posté(e) le 20 août 2018 Signaler Posté(e) le 20 août 2018 (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é le 20 août 2018 par jjacques68
Messages recommandés