Page 1 sur 3

Capteur de porte en LUA

Publié : 08 déc. 2017, 19:13
par JRCondat
Bonjour à tous,

Problème toujours d'actualité, mis à jour : https://easydomoticz.com/forum/viewtopi ... 983#p45983


j'ai des capteurs d'ouverture de portes/fenêtres qui me remontent une trame 433Mhz que j'arrive bien à capter avec mon RFLink et donc qui apparaissent comme des Contact Door dans ma liste.

J'ai besoin de réaliser une action dès qu'une trame est reçue, la trame apparait bien dans les logs pas de souci mais dans mes scripts LUA je ne peux jamais la voir car devicechanged ne change jamais puisque l'état est toujours ouvert.

En bref, je ne sais pas si j'ai été clair mais j'aimerai réaliser une action à chaque trame reçue mais malheureusement ça ne donne rien :(

Code : Tout sélectionner

commandArray = {}

debugging = true
print('Test de script 08/12')
local porteSalon1 = 'Détecteur Ouvt Porte Salon 1'
local porteMaison = 'Détecteur Ouvt Porte Entrée'

commandArray = {}
if (devicechanged['porteSalon1'] == 'Open' or devicechanged['porteSalon1'] == 'On') then
        commandArray['Prise commandée A']='On'
        print('Porte du salon ouverte')
end
if (devicechanged['porteMaison'] == 'Open' or devicechanged['porteMaison'] == 'On') then
        commandArray['Prise commandée A']='On'
        print('Porte principale ouverte')
end
return commandArray

Re: Capteur de porte en LUA

Publié : 08 déc. 2017, 19:54
par jackslayter
Essai comme ça

Code : Tout sélectionner

if (devicechanged['porteSalon1']) then

Re: Capteur de porte en LUA

Publié : 08 déc. 2017, 20:12
par JRCondat
Malheureusement sans résultat :(
comme on peut le voir dans les logs on voit bien la trame arriver mais rien ne se passe pour autant :

Code : Tout sélectionner

2017-12-08 19:01:12.601 (RFlink) Light/Switch (Détecteur Ouvt Porte Salon 1)
2017-12-08 19:01:18.949 (RFlink) Light/Switch (Détecteur Ouvt Porte Salon 1)
2017-12-08 19:01:41.159 dzVents: Test de script 08/12
2017-12-08 19:01:41.161 (RFlink) Light/Switch (Détecteur Ouvt Porte Salon 1)
2017-12-08 19:02:02.642 Netatmo: No Weather Station devices found...
2017-12-08 19:02:04.312 (RFlink) Light/Switch (Détecteur Ouvt Porte Salon 1)

Re: Capteur de porte en LUA

Publié : 08 déc. 2017, 21:31
par JRCondat
En fait devicechanged n'est jamais bon car le sensor est toujours à On ou Open donc même si la trame arrive On/Open arrive, il était déjà à On/Open donc pas de changement...

Re: Capteur de porte en LUA

Publié : 08 déc. 2017, 21:35
par vil1driver
Salut,

devicechanged est lié à la mise à jour et non au changement..

Re: Capteur de porte en LUA

Publié : 08 déc. 2017, 22:11
par JRCondat
D'accord mais alors dans ce cas, je ne comprends pas pourquoi ça ne passe jamais dans ma boucle :(

Re: Capteur de porte en LUA

Publié : 08 déc. 2017, 22:25
par Neutrino
Bonsoir,

Code : Tout sélectionner

2017-12-08 19:01:41.159 dzVents: Test de script 08/12)
La bonne nouvelle, c'est que ton script se lance.
Le truc bizarre, c'est qu'il apparaît en dzVents dans les logs.
Un petit nettoyage de cache s'impose pour commencer.
Ensuite vire moi les '

Code : Tout sélectionner

if (devicechanged[porteSalon1] == 'Open' or devicechanged[porteSalon1] == 'On') then

Re: Capteur de porte en LUA

Publié : 08 déc. 2017, 22:54
par JRCondat
Pas mieux :(
Mon code :

Code : Tout sélectionner

-- Fichier LUA pour faire l'alarme à la maison commandArray = {}
debugging = true print('Test de script 08/12 CLI')

local porteSalon1 = 'Détecteur Ouvt Porte Salon 1'
local porteMaison = 'Détecteur Ouvt Porte Entrée'

commandArray = {}

if (devicechanged[porteMaison] == 'Open' or devicechanged[porteMaison] == 'On') then
        commandArray['Prise commandée A']='On'
        print('Porte principale ouverte')
end

if (devicechanged[porteSalon1] == 'Open' or devicechanged[porteSalon1] == 'On') then
        commandArray['Prise commandée A']='On'
        print('Porte salon ouverte')
end

return commandArray
Et mes logs :

Code : Tout sélectionner

2017-12-08 22:52:25.723 dzVents: Test de script 08/12 CLI
2017-12-08 22:52:25.724 (RFlink) Light/Switch (Détecteur Ouvt Porte Salon 1)
Toujours ce foutu dzVents mais surtout l'état devicechanged non détecté alors qu'on le voit bien dans les logs

Re: Capteur de porte en LUA

Publié : 08 déc. 2017, 23:11
par Neutrino
Ton script est un fichier ou tu utilises l'éditeur intégré ?
Il doit être du style "LUA" et "Device" dans l'éditeur.
Et je rajouterais bien un

Code : Tout sélectionner

print otherdevices[porteMaison]
histoire de voir quelle valeur doit être testée.

Re: Capteur de porte en LUA

Publié : 08 déc. 2017, 23:28
par JRCondat
Mon script est en fichier et non via l'éditeur. Je l'ai nommé script_device_myAlarm.lua

Grace à la ligne que tu m'as fait rajouter j'ai l'état mais visiblement ça ne suffit pas pour le devicechanger puisque voilà mes logs :

Code : Tout sélectionner

2017-12-08 23:23:11.462 dzVents: Test de script 08/12 CLI
2017-12-08 23:23:11.462 dzVents: Closed
2017-12-08 23:23:11.464 (RFlink) Light/Switch (Détecteur Ouvt Porte Salon 1)
Alors que le code est encore plus simplifié :

Code : Tout sélectionner

debugging = true print('Test de script 08/12 CLI')

local porteSalon1 = 'Détecteur Ouvt Porte Salon 1'
local porteMaison = 'Détecteur Ouvt Porte Entrée'

commandArray = {}

if (devicechanged[porteSalon1] == 'Closed') then
        commandArray['Prise commandée A']='On'
        print('Porte salon ouverte')
end
print (otherdevices[porteSalon1])
return commandArray
Et dans tous les cas, merci beaucoup de ton aide et patience ;)