Page 1 sur 1

Recuperer une information switch LUA

Publié : 17 juin 2018, 11:42
par Starnight
Bonjour à tous.
Je m'explique. J'ai effectué un script pour mon alarme.
J'inscris donc toutes les valeurs local pour appeler mes switch comme cela je ne change que le nom en haut.
Le probleme c'est qu'à chaque déclenchement de l'alarme, j'envoi une information par sms pour me dire quel switch declenche. Ce qui est chiant, c'est donc que je dois modifier chaque message à la main dans mon script dès que je change un nom.
La question est donc est i il possible de rappeler le nom de la valeur pour l'inscrire dans le message.

Voici une partie du code :

Code : Tout sélectionner

--switchs
local Ouv1='Porte Entree'
local Ouv2='Chambre RDC D'
local Ouv3='Salon Arriere G'
local Ouv4='Salon Arriere D'
local Ouv5='Salon Avant'
local Ouv6='Chambre RDC G'
local Ouv7='Fenetre Cuisine'
local Mvt1='Chalet'
local Mvt11='Chambre2'
local Mvt2='Cuisine'
local Mvt3='Sous Sol'
local Detecteur='Detecteur porte/mouvement'
local Alarme='Alarme'
local Sirene='Sirene Declencheur'
local SireneTemoin='Sirene'
local Bouton='Bouton alarme general'
local LEDAlarme='LED Alarme'
commandArray = {}

 --Script Alarme declenchement detecteurs
 
    if devicechanged[Ouv1]=='Open' and otherdevices[Alarme]=='On' then
         commandArray[Detecteur]='On'
		commandArray['OpenURL']="https://smsapi.free-mobile.fr/sendmsg?use&msg=Porte%20entrée%20ouverte%20!"
         print("Detecteur Porte Ouverte")

	else if devicechanged[Ouv2]=='Open' and otherdevices[Alarme]=='On' then
         commandArray[Detecteur]='On'
		commandArray['OpenURL']="https://smsapi.free-mobile.fr/sendmsg=Chambre%20RDC%20droit%20ouverte%20!"
         print("Detecteur Porte Ouverte")

	else if devicechanged[Ouv3]=='Open' and otherdevices[Alarme]=='On' then
         commandArray[Detecteur]='On'
		commandArray['OpenURL']="https://smsapi.free-mobile.fr/sendmsgl&msg=Porte%20salon%20arrière%20gauche%20ouverte%20!"
         print("Detecteur Porte Ouverte")
    
    else if devicechanged[Ouv4]=='Open' and otherdevices[Alarme]=='On' then
         commandArray[Detecteur]='On'
		commandArray['OpenURL']="https://smsapi.free-mobile.fr/sendmsg?msg=Porte%20salon%20arrière%20droit%20ouverte%20!"
         print("Detecteur Porte Ouverte")
    
    else if devicechanged[Ouv5]=='Open' and otherdevices[Alarme]=='On' then
         commandArray[Detecteur]='On'
		commandArray['OpenURL']="https://smsapi.free-mobile.fr/sendmsg?msg=Porte%20salon%20avant%20ouverte%20!"
         print("Detecteur Porte Ouverte")

    else if devicechanged[Ouv6]=='Open' and otherdevices[Alarme]=='On' then
         commandArray[Detecteur]='On'
		commandArray['OpenURL']="https://smsapi.free-mobile.fr/sendmsg?msg=Porte%20chambre%20RDC%20ouverte%20!"
         print("Detecteur Porte Ouverte")
         
    else if devicechanged[Ouv7]=='Open' and otherdevices[Alarme]=='On' then
         commandArray[Detecteur]='On'
		commandArray['OpenURL']="https://smsapi.free-mobile.fr/sendmsg?msg=Fenetre%20cuisine%20ouverte%20!"
         print("Detecteur Fenetre Ouverte")



 end
 end
end
end
end
end
end
Puis je donc appeler cette valeur : local Ouv2='Chambre RDC D'
pour la mettre ici : else if devicechanged[Ouv2]=='Open' and otherdevices[Alarme]=='On' then
commandArray[Detecteur]='On'
commandArray['OpenURL']="https://smsapi.free-mobile&msg=Chambre%20RDC%20droit%20ouverte%20!"
print("Detecteur Porte Ouverte")

Merci de vos lumières.

Re: Recuperer une information switch LUA

Publié : 17 juin 2018, 15:41
par papoo
personnellement je ferai ça avec une boucle for
du genre

Code : Tout sélectionner

--switchs
local les_devices = {};
les_devices[#les_devices+1] = {device="Porte Entree"} -- 1er device
les_devices[#les_devices+1] = {device="Chambre RDC D"} -- 2eme device
les_devices[#les_devices+1] = {device="Salon Arriere G"} -- 3eme device
les_devices[#les_devices+1] = {device="Salon Arriere D"} -- 4eme device
les_devices[#les_devices+1] = {device="Salon Avant"} -- 5eme device
les_devices[#les_devices+1] = {device="Chambre RDC G"} -- 6eme device
les_devices[#les_devices+1] = {device="Fenetre Cuisine"} -- 7eme device
les_devices[#les_devices+1] = {device="Chalet"} -- 8eme device
les_devices[#les_devices+1] = {device="Chambre2"} -- 9eme device
les_devices[#les_devices+1] = {device="Cuisine"} -- 10eme device
les_devices[#les_devices+1] = {device="Sous Sol"} -- 11eme device

local Detecteur='Detecteur porte/mouvement'
local Alarme='Alarme'
local Sirene='Sirene Declencheur'
local SireneTemoin='Sirene'
local Bouton='Bouton alarme general'
local LEDAlarme='LED Alarme'
commandArray = {}

 --Script Alarme declenchement detecteurs
 
    if otherdevices[Alarme]=='On' then
        for k,v in pairs(les_devices) do 
            local Vdevice = v.device
            if devicechanged[Vdevice]=='Open' then 
                commandArray[Detecteur]='On'
                commandArray['OpenURL']="https://smsapi.free-mobile.fr/sendmsg?user=10192567&pass=motdepasse&msg="..Vdevice.."%20ouverte!"
                print(Vdevice.." ouverte")
            end    
        end 
    end

Re: Recuperer une information switch LUA

Publié : 17 juin 2018, 20:30
par Starnight
Waw merci pour ce code ultra compressé et qui marche du tonnerre !
Pourrais tu juste supprimer mon mot de passe de la ligne de code car comme l'a fait remarqué un membre j'ai oublié de le retirer !
Et juste pour ma culture à quoi correspond cette ligne : for k,v in pairs ?
Merci encore

Re: Recuperer une information switch LUA

Publié : 17 juin 2018, 21:07
par papoo
j'ai supprimé le mot de passe de mon code
for k,v in pairs c'est un boucle qui va passer en revue l'ensemble de la table les_devices
k = key (clé) (lors d'un index alphabétique)
v = valeur
pour plus d'info
http://wxlua.free.fr/Tutoriel_Lua/Tuto/ ... /pairs.php