Recuperer une information switch 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 <\>.
Starnight
Messages : 65
Inscription : 20 déc. 2016, 10:54

Recuperer une information switch LUA

Message 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.
papoo
Messages : 2029
Inscription : 10 janv. 2016, 11:29
Localisation : Limoges (87)
Contact :

Re: Recuperer une information switch LUA

Message 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
Dernière modification par papoo le 17 juin 2018, 21:03, modifié 1 fois.
domoticz beta/RaspBerry PI3 stretch
https://pon.fr github
Starnight
Messages : 65
Inscription : 20 déc. 2016, 10:54

Re: Recuperer une information switch LUA

Message 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
papoo
Messages : 2029
Inscription : 10 janv. 2016, 11:29
Localisation : Limoges (87)
Contact :

Re: Recuperer une information switch LUA

Message 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
domoticz beta/RaspBerry PI3 stretch
https://pon.fr github
Répondre