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

Correction de script LUA

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

Re: Correction de script LUA

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

Re: Correction de script LUA

Message par denis_brasseur »

Un If, un seul end.
Tu démarre par un if, ton end doit etre apres tes 3 commandarray.
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 »

Merci !
J'essaye de suite
f0emm
Messages : 64
Inscription : 23 déc. 2015, 20:52

Re: Correction de script LUA

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

Re: Correction de script LUA

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

Re: Correction de script LUA

Message par denis_brasseur »

Pourquoi ce do ?

Il va falloir commencer par le début.

Mon premier script Lua dans Domoticz : La mise en oeuvre
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 »

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

Re: Correction de script LUA

Message 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
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 »

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"
Répondre