os.execute Vs cli

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 <\>.
Goa_From_Gaia
Messages : 14
Inscription : 15 févr. 2020, 22:00

Re: os.execute Vs cli

Message par Goa_From_Gaia »

Hello vil1driver

Merci pour les infos. Je suis allé faire un tour sur ton lien ainsi que celui ci :
https://www.domoticz.com/wiki/Applicati ... rity_Panel

Malgré la simplicité que cela transparaît, je ne comprends pas pourquoi ce Securtiy Panel ne réagit pas.
Le commandArray['Domoticz Security Panel'] est bien setté mais le return ne fais rien..
Je sèche complet.. :?:
vil1driver
Messages : 5661
Inscription : 30 janv. 2015, 11:07
Localisation : Rennes (35)

Re: os.execute Vs cli

Message par vil1driver »

Tu l'as bien nommé comme cela ?
MAJ = VIDER LE CACHE(<-Clicable)
/!\Les mises à jour de Domoticz sont souvent sources de difficultés, ne sautez pas dessus
modules.lua

Un ex domoticzien
Goa_From_Gaia
Messages : 14
Inscription : 15 févr. 2020, 22:00

Re: os.execute Vs cli

Message par Goa_From_Gaia »

Oui

J'ai même réduit le nom du panel à 'Security'
testé avec des fichiers nommés script_device_security.lua ou script_device_Security.lua
rien ne se passe.. :cry:
Goa_From_Gaia
Messages : 14
Inscription : 15 févr. 2020, 22:00

Re: os.execute Vs cli

Message par Goa_From_Gaia »

J'ai eu l'interrogation sur l'intepréteur LUA.
lors de l'os.execute celui ci appelle l'intepréteur local qui en version 5. 1.5 alors que celui embarqué dans domoticz est en version 5.2 quelque chose comme çà. Quoi qu'il en soit ce ne sont pas les mêmes, alors possiblement il n'y aucune interaction sur le domoticz.
Dans le doute j'ai remplacé la commande os.execute par un loadfile et passé les params ainsi dans mon main file :

Code : Tout sélectionner

function alarm(from, cmd)
    print('Ligne '..debug.getinfo(1).currentline..' : alarm command')
    local securityStatus = globalvariables['Security']
    assert(loadfile('/etc/domoticz/scripts/lua/alarm.lua'))(from, cmd, securityStatus)
end
dès lors ici alarm.lua :

Code : Tout sélectionner

dofile('/etc/domoticz/scripts/lua/logger.lua')
logToFile(debug.getinfo(1).currentline, 'Entering '..debug.getinfo(1,'S').source..'')


local from, cmd, securityStatus = ...

-- Vérification de l'état de l'alarme
logToFile(debug.getinfo(1).currentline, 'Checking for Panel status : '..securityStatus..'')

if cmd == 'OFF' then
    logToFile(debug.getinfo(1).currentline, 'Command OFF called')
    if securityStatus == 'Disarmed' then
        logToFile(debug.getinfo(1).currentline, 'FAIL - Alarm still desactivate')
        os.execute ('sudo -u gammu gammu-smsd-inject TEXT "'..from..'" -text "L\'alarme est déjà désactivée, est ce normal?"')
    end
    if securityStatus == 'Armed Away' then
        logToFile(debug.getinfo(1).currentline, 'SUCCESS - Alarm desactivated')
        commandArray['Domoticz Security Panel'] = 'Disarm'
        os.execute ('sudo -u gammu gammu-smsd-inject TEXT "'..from..'" -text "alarme désactivée"')
    end
end
 ....
 
etc...
 ....
 
Là ou j'ai du faire l'erreur c'était justement retourner un commandArray alors qu'il n'a besoin que d'etre setter :

J'ai trouvé ma réponse ici :

- https://www.domoticz.com/forum/viewtopi ... 48#p118748
- https://github.com/Siewert308SW/MyDomoticz-Scripts
Répondre