Page 1 sur 2

Exécution scripts .py

Publié : 16 mai 2015, 15:33
par fredymilou
Bonjour a tous , je débute en domotique , mais j'ai de bonne base, étant électricien industrielle je touche a tous les domaines technique asse pointu, mais la je cale.

J'aimerais démarrer un script en python via un bouton ON/OFF.

J'ai d'autre scripts en .sh qui marche et démarrer avec ce même bouton.
J'ai essayer de le lancer en ligne de commande et la sa marche.
J'ai bien #!/usr/bin/python en début de scripte.

Je me suis dit quand lancent un script .sh qui lancerait le .py, ben pas de bols , ca marche en ligne de commande mais pas via domoticz.
Le .sh démarre mais pas le .py.

Un collègue viens de me faire penser au droit de Domoticz , mais la je doute vue que les scripte sont sans droit d’exécution. chmod +x et même chmod 777.

Auriez vous une idée ??

Merci d’avance.

Re: Exécution scripts .py

Publié : 16 mai 2015, 16:18
par patrice
Bonjour
Des idées on en manque pas :

Ton script tu le lance via action on ds ton bouton ?
Si oui fais gaffe a script:///homr/pi/domoticz/scripts
Il y a 3 slashes

Les droits en +x suffisent

Que vois tu ds le log de Domoticz

Re: Exécution scripts .py

Publié : 16 mai 2015, 16:23
par Doume
Il est probable que le chemin vers l'interpréteur python soit erroné ....
es-tu sûr de ton /usr/bin/python ?

Re: Exécution scripts .py

Publié : 16 mai 2015, 17:36
par mike913
Bonjour:

Sur un raspberry je met:

Code : Tout sélectionner

#!/usr/bin/env python
# -*- coding: utf-8 -*-

Re: Exécution scripts .py

Publié : 16 mai 2015, 22:11
par fredymilou
Merci ,je viens de tester avec #!/usr/bin/env python mais cela ne change rien.

En ce qui conserne le log voici :

Code : Tout sélectionner

2015-05-16 21:59:35.400 (Dummy) Lighting 2 (Mise a jour calandrier)
2015-05-16 22:00:00.199 Hardware Monitor: Fetching data (System sensors)
2015-05-16 22:00:09.292 (Dummy) Lighting 2 (Mise a jour calandrier)
2015-05-16 22:00:09.471 Executing script: /home/pi/domoticz/scripts/getgooglecal.py
2015-05-16 22:00:30.423 Hardware Monitor: Fetching data (System sensors)
2015-05-16 22:00:49.568 (Dummy) Lighting 2 (Mise a jour calandrier)
2015-05-16 22:01:00.590 Hardware Monitor: Fetching data (System sensors)
2015-05-16 22:01:30.854 Hardware Monitor: Fetching data (System sensors)
2015-05-16 22:01:35.654 (Dummy) Lighting 2 (Mise a jour calandrier)
2015-05-16 22:02:00.111 Hardware Monitor: Fetching data (System sensors)
2015-05-16 22:02:30.305 Hardware Monitor: Fetching data (System sensors)
2015-05-16 22:03:00.437 Hardware Monitor: Fetching data (System sensors)
2015-05-16 22:03:30.703 Hardware Monitor: Fetching data (System sensors)
2015-05-16 22:04:00.838 Hardware Monitor: Fetching data (System sensors)
2015-05-16 22:04:30.036 Hardware Monitor: Fetching data (System sensors)
2015-05-16 22:04:35.737 (Dummy) Lighting 2 (Mise a jour calandrier)
2015-05-16 22:05:00.175 Hardware Monitor: Fetching data (System sensors)
2015-05-16 22:05:05.664 (Dummy) Lighting 2 (Mise a jour calandrier)
On voit qu'il a executer le programme une fois mais sans effet.
Le bouton est (Dummy) Lighting 2 (Mise a jour calandrier).

Re: Exécution scripts .py

Publié : 24 mai 2015, 01:02
par ledouble33
bonjour , je veux executer un script python (pir_entree_jardin2.py) depuis un bouton virtuel
dans on j ai mis :
script:///home/pi/scripts/pir_entree_jardin2.py ou script://home/pi/scripts/pir_entree_jardin2.py

mais l un ou l autre ne fonctionne pas, pourtant en ligne de commande ca fonctionne
j ai creer un script php qui fonctionne :

Code : Tout sélectionner

[== PHP ==]
<?php
$resultat = exec('python ./pir_entree_jardin2.py');
?>
mais comment faire pour arreter un script python avec du php?
mon code python fonctionne mais une erreur

Traceback (most recent call last):
File "./pir_entree_jardin2.py", line 41, in <module>
os.execute('sudo /home/pi/433Utils/RPi_utils/./codesend 12560785')
AttributeError: 'module' object has no attribute 'execute'

mon code python:

Code : Tout sélectionner

#!/usr/bin/python
import RPi.GPIO as GPIO
import time
import urllib
import os

GPIO.setmode(GPIO.BCM)

GPIO_PIR1 = 24



print "PIR Module Test (CTRL-C pour quitter)"

GPIO.setup(GPIO_PIR1,GPIO.IN)



Current_State  = 0
Previous_State = 0

try:

  print "demarrage pir ..."
  while GPIO.input(GPIO_PIR1)==1:
    Current_State  = 0    

  print "  start"     
    
  while True :
   
    Current_State = GPIO.input(GPIO_PIR1)
   
    if Current_State==1 and Previous_State==0:
      print "  attention mouvement dans le jardin !"
      test = urllib.urlopen("http://192.168.1.69:8080/json.htm?type=command&param=switchlight&idx=49&switchcmd=On&level=0")
      time.sleep(2)
      test = urllib.urlopen("http://192.168.1.69:8080/json.htm?type=command&param=switchlight&idx=24&switchcmd=On&level=0")
      time.sleep(2)
      test = urllib.urlopen("http://192.168.1.69:8080/json.htm?type=command&param=switchlight&idx=13&switchcmd=On&level=0")
      #os.execute('sudo /home/pi/433Utils/RPi_utils/./codesend 12560785')
      time.sleep(2)
      # test = urllib.urlopen("http://192.168.1.89:8080/sarah/parle?phrase=attention mouvement cabanne a nathan?")
      time.sleep(2) 
      Previous_State=1
    elif Current_State==0 and Previous_State==1:
      print "  Ready"
      Previous_State=0
      
    time.sleep(0.01)      
      
except KeyboardInterrupt:
  print "  Quit" 
  GPIO.cleanup()

Re: Exécution scripts .py

Publié : 24 mai 2015, 08:38
par patrice
Bonjour
@ledouble33
Dèja il y a un probleme de chemin dans ton
os.execute('sudo /home/pi/433Utils/RPi_utils/./codesend 12560785')
la bonne ligne est probablement

os.execute('sudo /home/pi/433Utils/RPi_utils/codesend 12560785')
sans ./



et d'autre part fais attention dans le script:/// a mettre un chemin accessible par Domoticz si tu souhaites l'utiliser dans un action ON
car le script:///home/pi/scripts/pir_entree_jardin2.py ou script://home/pi/scripts/pir_entree_jardin2.py

n'est sans doute pas ( pas vérifié de mon coté) accessible (chemins, droits d'execution) lorsque Domoticz est lancé.
Car Domoticz travaille dans /domoticz et donc les scripts devraient être dans /domoticz/scripts avec des droits .x sur le script




@fredmylou

Quel est le script qui te pose probleme ?
celui du calendrier google

Re: Exécution scripts .py

Publié : 24 mai 2015, 11:18
par ledouble33
merci de ton aide
@fredmylou

Quel est le script qui te pose probleme ?
celui du calendrier google
pourquoi tu me demande ca? :?:

comment tu fais pour arreter un script avec domoticz?

Re: Exécution scripts .py

Publié : 24 mai 2015, 11:38
par ledouble33
j ai modifier le script avec ta ligne et toujour le meme probleme

Code : Tout sélectionner

PIR Module Test (CTRL-C pour quitter)
demarrage pir ...
  start
  attention mouvement dans le jardin !
Traceback (most recent call last):
  File "./pir_entree_jardin.py", line 41, in <module>
    os.execute('sudo /home/pi/433Utils/RPi_utils/codesend 12560785')
AttributeError: 'module' object has no attribute 'execute'
dans domoticz dans on j ai mis:
script:///home/pi/domoticz/scripts/pir_entree_jardin.py

j ai copier le script dans:
home/pi/domoticz/scripts

j ai fais un:
sudo chmod +x /home/pi/domoticz/scripts/pir_entree_jardin.py

Re: Exécution scripts .py

Publié : 24 mai 2015, 19:51
par patrice
ledouble33 a écrit :j ai modifier le script avec ta ligne et toujour le meme probleme

Code : Tout sélectionner

PIR Module Test (CTRL-C pour quitter)
demarrage pir ...
  start
  attention mouvement dans le jardin !
Traceback (most recent call last):
  File "./pir_entree_jardin.py", line 41, in <module>
    os.execute('sudo /home/pi/433Utils/RPi_utils/codesend 12560785')
AttributeError: 'module' object has no attribute 'execute'
dans domoticz dans on j ai mis:
script:///home/pi/domoticz/scripts/pir_entree_jardin.py

j ai copier le script dans:
home/pi/domoticz/scripts

j ai fais un:
sudo chmod +x /home/pi/domoticz/scripts/pir_entree_jardin.py

bien
et si tu lances juste un /home/pi/433Utils/RPi_utils/codesend 12560785
qu'est ce que cela donne ?
parce que la ligne 41 c'est bien celle de codesend

et d'ailleurs c'est quoi codesend 1256..... ??


D'autre part on arrete pas un script avec Domoticz, le script doit se terminer tout seul proprement OU rester en memoire pour envoyer des infos regulièrement