Exécution scripts .py

Posez ici vos questions d'utilisation, de configuration de DomoticZ, de bugs, de conseils sur le logiciel lui même dans son utilisation et son paramétrage.
Des forums spécifiques sont ouverts ci-dessous pour regrouper les différents sujets.
fredymilou
Messages : 2
Inscription : 05 mai 2015, 18:27

Exécution scripts .py

Message 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.
patrice
Messages : 1720
Inscription : 22 sept. 2014, 21:51

Re: Exécution scripts .py

Message 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
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
Doume
Messages : 550
Inscription : 28 déc. 2014, 10:27
Localisation : Nord (59)
Contact :

Re: Exécution scripts .py

Message par Doume »

Il est probable que le chemin vers l'interpréteur python soit erroné ....
es-tu sûr de ton /usr/bin/python ?
mike913
Messages : 159
Inscription : 18 oct. 2014, 10:22
Localisation : Morsang / Orge - Essonne
Contact :

Re: Exécution scripts .py

Message par mike913 »

Bonjour:

Sur un raspberry je met:

Code : Tout sélectionner

#!/usr/bin/env python
# -*- coding: utf-8 -*-
DS718+ 2 x 3To(SHR) - Firmware: DSM 7.0.1-42218
DS712+ 2 x 4To (SHR) - Firmware: DSM 6.2.4-25556
Raspberry - RFXTRX433 - Aeon Labs ZStick V2 - Domoticz
FreeBox Delta
https://meteo.folcke.net
https://wiki.folcke.net
fredymilou
Messages : 2
Inscription : 05 mai 2015, 18:27

Re: Exécution scripts .py

Message 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).
ledouble33
Messages : 286
Inscription : 07 févr. 2015, 07:45

Re: Exécution scripts .py

Message 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()
patrice
Messages : 1720
Inscription : 22 sept. 2014, 21:51

Re: Exécution scripts .py

Message 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
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
ledouble33
Messages : 286
Inscription : 07 févr. 2015, 07:45

Re: Exécution scripts .py

Message 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?
ledouble33
Messages : 286
Inscription : 07 févr. 2015, 07:45

Re: Exécution scripts .py

Message 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
patrice
Messages : 1720
Inscription : 22 sept. 2014, 21:51

Re: Exécution scripts .py

Message 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
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
Répondre