Page 1 sur 5

Correction de script LUA

Publié : 03 févr. 2019, 18:30
par f0emm
Bonsoir,
Les script en LUA commençant à me plaire, je compte y passer pour remplacer mes "Blockly".
Étant loin d’être un expert, ce post afin de poster mes scripts et si possible me les faire confirmer et me faire aider par les plus aguerri :D
Surement très simple pour vous mais .......

Code : Tout sélectionner

--SI l'Alarme passe à ON ALORS
if devicechanged['Alarme']=='ON' then

      --ETEINDRE LES LUMIERES
    commandArray[#commandArray+1]={['Façade arrière']='Off'}
  end
  
    commandArray[#commandArray+1]={['Appoint salon']='Off'}
  end

    commandArray[#commandArray+1]={['Façade avant']='Off'}
  end

     --SI ECLAIRAGE PISCINE état ON ALORS
  if otherdevices['A1-Eclairage piscine']=='On' then
     --PASSER A OFF
    commandArray[#commandArray+1]={['A1-Eclairage piscine']='Off'}
  end


......... encore un peu confus pour moi.
Merci.
Bonne soirée.
A+
Fab

Re: Correction de script LUA

Publié : 03 févr. 2019, 19:03
par f0emm
Oula !
Je viens de l'essayer et j'ai ce message d'erreur qui revient depuis dans le LOG

2019-02-03 19:02:07.460 Error: EventSystem: in Script #2: [string "--SI l'Alarme passe à ON ALORS..."]:9: <eof> expected near 'end'

Y'a un truc qui va pas :lol:

Re: Correction de script LUA

Publié : 03 févr. 2019, 20:10
par denis_brasseur
Un If, un seul end.
Tu démarre par un if, ton end doit etre apres tes 3 commandarray.

Re: Correction de script LUA

Publié : 03 févr. 2019, 21:07
par f0emm
Merci !
J'essaye de suite

Re: Correction de script LUA

Publié : 03 févr. 2019, 21:19
par f0emm
arffff !
Je suis vraiment novice :)

Code : Tout sélectionner

--SI l'Alarme passe à ON ALORS
if devicechanged['Alarme']=='ON' then

      --ETEINDRE LES LUMIERES
    commandArray[#commandArray+1]={['Façade arrière']='Off'}
  
    commandArray[#commandArray+1]={['Appoint salon']='Off'}

    commandArray[#commandArray+1]={['Façade avant']='Off'}

     --SI ECLAIRAGE PISCINE état ON ALORS
  if otherdevices['A1-Eclairage piscine']=='On' then
     --PASSER A OFF
    commandArray[#commandArray+1]={['A1-Eclairage piscine']='Off'}
  end
  return commandArray
Message d'erreur :

2019-02-03 21:18:14.436 Error: EventSystem: in Script #2: [string "--SI l'Alarme passe à ON ALORS..."]:16: 'end' expected (to close 'if' at line 2) near <eof>

en plus c'est en anglais :roll:

Merci.
Bonne soirée.
A+
Fab

Re: Correction de script LUA

Publié : 03 févr. 2019, 21:45
par f0emm

Code : Tout sélectionner

commandArray={}
--SI l'Alarme passe à ON ALORS
if devicechanged['Alarme']=='ON' then

      --ETEINDRE LES LUMIERES
    commandArray[#commandArray+1]={['Façade arrière']='Off'}
  
    commandArray[#commandArray+1]={['Appoint salon']='Off'}

    commandArray[#commandArray+1]={['Façade avant']='Off'}
    
    end

     --SI ECLAIRAGE PISCINE état ON ALORS
   do if otherdevices['Alarme']=='ON' and otherdevices['A1-Eclairage piscine']=='On' then
     --PASSER A OFF
    commandArray[#commandArray+1]={['A1-Eclairage piscine']='Off'}
    
    end
end
return commandArray
Plus d'erreur !
Ce que je cherche à faire :
Quand alarme ON
Façade avant, arrière et appoint salon OFF
Si Eclairage piscine ON, passage à OFF

Du coup je ne sais pas si le deuxième IF est bon ?

Merci.
A+
Fab

Re: Correction de script LUA

Publié : 04 févr. 2019, 05:51
par denis_brasseur
Pourquoi ce do ?

Il va falloir commencer par le début.

Mon premier script Lua dans Domoticz : La mise en oeuvre

Re: Correction de script LUA

Publié : 04 févr. 2019, 18:38
par f0emm
Bonjour Denis,
Merci pour ce lien très instructifs.
Ce script fonctionne presque :

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

      --ETEINDRE LES LUMIERES
    commandArray[#commandArray + 1]={['Façade arrière']='Off'}
  
    commandArray[#commandArray + 1]={['Appoint salon']='Off'}

    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


print ("Alarme activée --> extinction des éclairages allumés.")
end
return commandArray
Tout fonctionnent mais le retour à l'état OFF des interrupteurs ne se fait pas.
Grrrrrrr ..... ça va venir :lol:

Re: Correction de script LUA

Publié : 04 févr. 2019, 20:01
par denis_brasseur
Ton script nécessite 2 changements du device Alarme, puisque tu enchaîne 2 fois devicechanged ['Alarme']

Et comme ceci ?

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
    commandArray[#commandArray + 1]={['Façade arrière']='Off'}
  
    commandArray[#commandArray + 1]={['Appoint salon']='Off'}

    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


print ("Alarme activée --> extinction des éclairages allumés.")
end
return commandArray

Re: Correction de script LUA

Publié : 04 févr. 2019, 20:28
par f0emm
Bonsoir,
Merci Denis
Le fonctionnement est le même, tout s'éteint, seul l'éclairage piscine passe à l'état OFF, les trois premiers restent à ON.
Peut être rajouter à ces trois là "Si ON" passage à "OFF"