Lancement script python & envoi mail

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 <\>.
Topodom
Messages : 10
Inscription : 16 avr. 2015, 20:44

Lancement script python & envoi mail

Message par Topodom »

Bonjour,

Je débute avec domoticz.

J'ai écris un script python pour envoyer un mail suite à un événement: dans mon cas lorsque l'on sonne à la porte.

Lorsque je lance le script sur le Rasperry dans une console avec "python sonnette_on.py" tout fonctionne correctement; je reçois bien le mail.

Mais lorsque je souhaite déclencher le script dans domoticz avec un "script:///home/pi/domoticz/scripts/python/sonnette_on.py" plus rien ne marche.

Voici le script en question :

Code : Tout sélectionner

#!/usr/bin/python
# -*- coding: utf8 -*-

import os
import datetime

today = datetime.date.today()
today_heure = datetime.datetime.now().time()
cmd ='echo " Quelqu un a sonne a la porte le %s a %s" | mail -s "quelqu un a sonne a la porte " monmail@yahoo.fr'%(today,today_heure)
print cmd
os.system(cmd)

J'ai essayé avec un bout de code encore plus simple qui écrit une ligne dans un fichier j'ai le même problème. C'est donc le lancement depuis domoticz qui ne fonctionne pas.

En contrepartie avec un bout de code en sh pour envoyer un sms cet interrupteur exécute bien le script.

Je dois oublier un truc simple pour lancer un script python mais la je vois pas.

Si quelqu'un à une idée je suis preneur

Cordialement
Dernière modification par Topodom le 18 avr. 2015, 14:08, modifié 2 fois.
patrice
Messages : 1720
Inscription : 22 sept. 2014, 21:51

Re: Lancement script python

Message par patrice »

Bonsoir
- chemin pas bon ? /script/python ??
Raspberry pi 3, Dongle RfxCom et Zigate +, plugin de pipiche, Volets Roulants profalux, contrôle d'éclairage, détecteurs de présence, alarme incendie, pilotage livebox ...
Objectif : WAF > 1
Topodom
Messages : 10
Inscription : 16 avr. 2015, 20:44

Re: Lancement script python

Message par Topodom »

A priori ça n'est pas un problème de chemin j'ai vérifié et pour habitude de faire un pwd dans le terminal puis copier coller le chemin.

En contrepartie j'ai complété mes recherches et je me suis aperçu que dans les logs j'avais le message suivant :

Code : Tout sélectionner

2015-04-16 23:35:31.603 Executing script: /home/pi/domoticz/scripts/python/test.py
2015-04-16 23:35:31.611 Error: Error executing script command (/home/pi/domoticz/scripts/python/test.py). returned: 32256
or d'après certains post sur le forum domoticz en anglais, il semblerait que ce soit un problème de droits

J'ai résolu partiellement le problème en faisant un chmod +x test.py ce qui est complètement inhabituel pour lancer un script python...
Dans ce cas domoticz exécute bien le script. Le script test.py ecrit une phrase dans un fichier texte sans problème.

Pour ce qui concerne mon script sonnette.py rien a faire impossible d'envoyer le mail. Alors que si j'ajoute l'envoie de sms en début de script par un os.systeme(envoie mon mail avec l'api de free) ca marche très bien....
Le comportement de python au traveres de domoticz semble perturbé...

Des idées ?
Topodom
Messages : 10
Inscription : 16 avr. 2015, 20:44

Re: Lancement script python & envoi mail

Message par Topodom »

J'ai finalement résolu mes problèmes. Je me réponds pour faire profiter ceux qui seraient confronté à des cas similaires.

Solution problème 1 :
L'analyse que je fait (par déduction) c'est que :
- lorsqu'on lance un script pour le tester directement depuis le raspberry il n'y a pas de problème car l'utilisateur pi est autorisé à exécuter un fichier python (python mon_script.py)
- lorsqu’on lance le même script via Domoticz (script:///home/pi/domoticz/scripts/python/pv.py), il semble que Domoticz s'exécute en root. Donc un chmod +x mon_script.py résout le problème et le message returned: 32256 dans les logs de domoticz disparait, le script est exécuté.

Solution problème 2:
- Pour envoyer un mail avec l'utilitaire unix mail il faut paramétrer deux fichiers /etc/ssmtp/ssmtp.conf et /etc/ssmtp/revaliases .
- Dans /etc/ssmtp/revaliases on paramétrè les utilisateurs autorisés à envoyer des mails. En plus de pi, il faut ajouter root

En traitant ce deux points le script s’exécute et exécute mail avec les bons droits
Répondre