Page 2 sur 5
Re: Correction de script LUA
Publié : 04 févr. 2019, 22:54
par f0emm
Essai de ce script, pas d'erreur dans LOG mais ne fonctionne pas
Code : Tout sélectionner
commandArray={}
--SI etat l'Alarme change
if devicechanged ['Alarme'] then
--SI l'Alarme passe à ON ALORS
--if devicechanged['Alarme']=='ON' then
if otherdevices['Alarme']=='ON' then
--ETEINDRE LES LUMIERES
if otherdevices['Façade arrière']=='On' then
commandArray[#commandArray + 1]={['Façade arrière']='Off'}
end
if otherdevices['Appoint salon']=='On' then
commandArray[#commandArray + 1]={['Appoint salon']='Off'}
end
if otherdevices['Façade avant']=='On' then
commandArray[#commandArray + 1]={['Façade avant']='Off'}
end
-- SI l'Alarme passe à ON et SI ECLAIRAGE PISCINE état ON ALORS
if otherdevices['A1-Eclairage piscine']=='On' then
--PASSER A OFF
commandArray[#commandArray + 1]={['A1-Eclairage piscine']='Off'}
end
end
print ("Alarme activée --> extinction des éclairages allumés.")
end
return commandArray
Dur dur pour avoir le changement d'état.
Re: Correction de script LUA
Publié : 04 févr. 2019, 22:56
par vil1driver
Salut,
C'est normal ton ON ?
En principe ce devrait être On
Re: Correction de script LUA
Publié : 04 févr. 2019, 23:15
par f0emm
Pwwooooaaa, bien vu !
Une soirée à plancher sur le problème.
Merci !
Re: Correction de script LUA
Publié : 05 févr. 2019, 00:02
par f0emm
Celui là c'est pour demain !
Code : Tout sélectionner
commandArray={}
-- get current time
timenow = os.time("*t")
if devicechanged['Alarme'] then
--SI Alarme OFF et heure entre SUNSET et SUNRISE
if otherdevices['Alarme']=='Off' and timeofday['SunriseInMinutes'] < timenow > timeofday['SunsetInMinutes'] then
--ALLUMER ENTREE pour 2 minutes
commandArray[#commandArray+1]={['Eclairage entrée']='On FOR 120'}
end
end
return commandArray

Encore merci à vous deux !
Bonne soirée.
A+
Fab
Re: Correction de script LUA
Publié : 05 févr. 2019, 10:55
par denis_brasseur
2 commandes magiques :
Code : Tout sélectionner
-- il fait jour
dayTime = timeofday['Daytime']
-- il fait nuit
nightTime = timeofday['Nighttime']
tu peux ensuite utiliser ceci
pour faire un test si il fait nuit
et cela
pour faire un test si il fait jour
Re: Correction de script LUA
Publié : 05 févr. 2019, 18:23
par f0emm
Salut
Merci Denis, ça fonctionne nickel
Code : Tout sélectionner
commandArray={}
-- il fait jour
dayTime = timeofday['Daytime']
-- il fait nuit
nightTime = timeofday['Nighttime']
if devicechanged['Alarme'] then
if nightTime then
--SI Alarme OFF et heure entre SUNSET et SUNRISE
if otherdevices['Alarme']=='Off' then
--ALLUMER ENTREE pour 2 minutes
commandArray['Eclairage entrée']='On FOR 2'
end
end
end
return commandArray
Je pense pouvoir m'attaquer à 2/3 autres sans vous embêter

Quoi que .....
Encore merci !
Bonne soirée
A+
Fab
Re: Correction de script LUA
Publié : 05 févr. 2019, 18:48
par vil1driver
Juste pour la forme (plus simple à lire)
Code : Tout sélectionner
commandArray={}
-- il fait jour
dayTime = timeofday['Daytime']
-- il fait nuit
nightTime = timeofday['Nighttime']
if devicechanged['Alarme'] == 'On' and nightTime then
commandArray['Eclairage entrée']='On FOR 2'
end
return commandArray
Ps: si éclairage déjà sur On, On FOR 2 ne le refera pas passer à Off
Re: Correction de script LUA
Publié : 05 févr. 2019, 19:01
par f0emm
Salut
Effectivement, pour une meilleure compréhension j'allonge un peu le script.
Mais une fois la chose comprise effectivement raccourci c'est aussi clair.
En fin de compte je vais vous en mettre un troisième qui fonctionne avec - if daytime and otherdevices['Alarme']=='Off' then - mais je ne sais pas si dans l'état il fonctionnera.
En fait je ne pourrais le voir que demain soir "Sunset"
Code : Tout sélectionner
commandArray={}
time=os.time
-- Si Sunset and time infèrieur à 19h15 and Alarme= Off
if Sunset then
if time < "19:15:00" and otherdevices['Alarme']=='Off' then
commandArray['Appoint salon']='On'
end
--Allumer appoint salon + exterieur
if otherdevices['A1-Eclairage piscine']=='Off' then
commandArray[#commandArray + 1]={['A1-Eclairage piscine']='On'}
end
end
return commandArray
Faut il rajouter en début de script time=os.time ou quelque chose du genre ?
Dans 10/15 script promis je serais opé

Re: Correction de script LUA
Publié : 05 févr. 2019, 20:56
par f0emm
Google est mon ami ........ je l'espère
Code : Tout sélectionner
commandArray={}
local heure = os.date("%H:%M")
-- retourne l'heure du coucher de soleil ex: "22:15"
coucherSoleil = string.sub(os.date("!%X",60*timeofday['SunsetInMinutes']), 1, 5)
---------------------------------------------------------------------------------------
if heure == coucherSoleil and heure < "19:15" and otherdevices['Alarme']=='Off' then
commandArray['Appoint salon']='On'
end
if heure == coucherSoleil and heure < "19:15" and otherdevices['Alarme']=='Off' and otherdevices['A1-Eclairage piscine']=='Off' then
commandArray['A1-Eclairage piscine']='On'
end
return commandArray
Et un petit deuxième qui est censé éteindre ma lumière à 19h45 du dimanche au jeudi
Code : Tout sélectionner
commandArray={}
local heure = os.date("%H:%M")
-- retourne le jour actuel en français ex: "mardi"
days = {"dimanche","lundi","mardi","mercredi","jeudi","vendredi","samedi"}
jour = days[(os.date("%w")+1)]
--------------------------------------------------------------------------------------------------
if heure == "19:45" then
if jour == "dimanche" or jour == "lundi" or jour == "mardi" or jour == "mercredi" or jour == "jeudi" and otherdevices['A1-Eclairage piscine']=='On' then
commandArray['A1-Eclairage piscine']='Off'
end
end
end
return commandArray
Pour info, je fais toujours une vérification d'état ON/OFF de certains interrupteurs car ils commandent un inter Push ON qui pilote un SonOFF firmware d'origine.
En espérant être pas loin du résultat.
Bonne soirée.
A+
Fab
Re: Correction de script LUA
Publié : 06 févr. 2019, 05:55
par denis_brasseur
Une petite parenthèse, à cause de l'imbrication et/ou :
Code : Tout sélectionner
if ((jour == "dimanche" or jour == "lundi" or jour == "mardi" or jour == "mercredi" or jour == "jeudi") and otherdevices['A1-Eclairage piscine']=='On'') then
end
Tu peux aussi faire ceci
Code : Tout sélectionner
if (jour ~= "vendredi" and jour ~= "samedi" and otherdevices['A1-Eclairage piscine']=='On'') then
end