Correction de script LUA

Forum dédié aux problématiques concernant les scripts pour DomoticZ.
Entourez votre code et les logs avec les balises nommées code grâce au bouton <\>.
f0emm
Messages : 64
Inscription : 23 déc. 2015, 20:52

Re: Correction de script LUA

Message 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.
vil1driver
Messages : 5661
Inscription : 30 janv. 2015, 11:07
Localisation : Rennes (35)

Re: Correction de script LUA

Message par vil1driver »

Salut,

C'est normal ton ON ?
En principe ce devrait être On
MAJ = VIDER LE CACHE(<-Clicable)
/!\Les mises à jour de Domoticz sont souvent sources de difficultés, ne sautez pas dessus
modules.lua

Un ex domoticzien
f0emm
Messages : 64
Inscription : 23 déc. 2015, 20:52

Re: Correction de script LUA

Message par f0emm »

Pwwooooaaa, bien vu ! :o
Une soirée à plancher sur le problème.
Merci !
f0emm
Messages : 64
Inscription : 23 déc. 2015, 20:52

Re: Correction de script LUA

Message 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
:arrow: Encore merci à vous deux !
Bonne soirée.
A+
Fab
denis_brasseur
Messages : 898
Inscription : 24 déc. 2018, 17:05
Localisation : (26)

Re: Correction de script LUA

Message 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

Code : Tout sélectionner

if nightTime then
pour faire un test si il fait nuit
et cela

Code : Tout sélectionner

if dayTime then
pour faire un test si il fait jour
Pi3 + DD PiDrive - RFXtrx433 - AEON Labs ZW090
f0emm
Messages : 64
Inscription : 23 déc. 2015, 20:52

Re: Correction de script LUA

Message 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 :D
Quoi que .....
Encore merci !
Bonne soirée
A+
Fab
vil1driver
Messages : 5661
Inscription : 30 janv. 2015, 11:07
Localisation : Rennes (35)

Re: Correction de script LUA

Message 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
MAJ = VIDER LE CACHE(<-Clicable)
/!\Les mises à jour de Domoticz sont souvent sources de difficultés, ne sautez pas dessus
modules.lua

Un ex domoticzien
f0emm
Messages : 64
Inscription : 23 déc. 2015, 20:52

Re: Correction de script LUA

Message 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é :roll:
f0emm
Messages : 64
Inscription : 23 déc. 2015, 20:52

Re: Correction de script LUA

Message par f0emm »

Google est mon ami ........ je l'espère :lol:

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
denis_brasseur
Messages : 898
Inscription : 24 déc. 2018, 17:05
Localisation : (26)

Re: Correction de script LUA

Message 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
    
Pi3 + DD PiDrive - RFXtrx433 - AEON Labs ZW090
Répondre