Domoticz et lua : appeler une commande shell

L’objectif est de pouvoir déclencher une action liée à l’OS depuis domoticz

On peut bien sur utiliser les Events en mode blocs de Domoticz pour des actions telles que l’envoi de mail, l’ouverture fermeture d’un autre périphérique domoticz.

dooropenlighton.PNG

, lecture http://www.domoticz.com/wiki/Events

 

Mais  parfois on a besoin de taper dans des fonctions plus basses de l’OS, déclencher un script bash, envoyer un tweet…

Dans mon cas lorsque le contact de porte s’ouvre je veux déclencher motion pour faire de la capture vidéo.

Il faut utiliser les scripts lua de domoticz.

Rien de trés compliqué, le wiki de domoticz sur les Events est assez détaillé.

Domoticz range ses scripts lua dans /domoticz/scripts/lua

Ces scripts basés sur des devices DOIVENT se nommer script_device_lenomdemonperipherique.lua

Ici j’ai un périphérique nommé ‘contact porte’

mon script se nomme script_device_contact_porte_actif.lua

print(‘switch vient de passer a on’)

commandArray = {}
if (devicechanged[‘contact porte’] == ‘On’) then
os.execute (‘/etc/init.d/motion start’)
end
return commandArray

il faut toujours mettre un if (devicechanged[‘contact porte’] == ‘etat qui vient de changer’) en tête du script pour s’assurer de déclencher les actions au bon moment.

Le moment crucial de ce script est le os.execute (‘la commande shell’) qui permet donc d’exécuter tout ce que l’on veut pour peu que les droits soient bien appliqués.

Bien sur il faut aussi refaire un autre script dans l’autre sens pour arrêter l’action avec un if (devicechanged[‘contact porte’] == ‘Off’) ….

Pour toute question technique concernant cet article, veuillez utiliser les forum situés à https://easydomoticz.com/forum/
Posted in domoticz, scripts and tagged , , , , , , , .

2 Comments

  1. Je tente de faire la même chose que toi en utilisant les scripts lua pour lancer une commande shell.
    De mon côté je me base sur ttytter en lançant quelque chose du genre : « os.execute(/home/pi/ttytter -status= »test ») si une condition est remplie.

    Lorsque je lance le script en manuel tout se passe bien et le tweet est posté.
    Mais quand je laisse domoticz le faire je vois dans htop que ttytter se lance et se bloque à 100% d’utilisation cpu sans faire quoique ce soit d’autre. Aucun message n’est posté, domoticz freeze et je dois faire un kill sur le processus pour régler le problème.

    As tu déjà rencontré ce genre de soucis ?

  2. bonjour,
    Je n’ai pas rencontré ce probleme de 100% mais en testant ce matin je vois que mes tweet ne partent pas depuis domoticz mais par contre depuis le shell c’est ok

    Que j’utilise dans le script lua
    os.execute (‘/etc/ttytter -status= »ouverture » -script’) ou
    os.execute (‘/etc/ttytter -status= »ouverture » ‘)

    qui fonctionnent à la main, rien ne part mais cela ne freeze pas

    je teste ce soir plus à fond

Comments are closed.