Forcer l'utilisation de Python3

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 <\>.
Dr No
Messages : 130
Inscription : 22 janv. 2015, 17:02
Localisation : Sud de France (Hérault)

Forcer l'utilisation de Python3

Message par Dr No »

Bonjour,

Je souhaite, sur un switch virtuel, utiliser 2 scripts sur le On et le Off
Mes scripts testés via Putty avec la commande "python3 m-on.py" et "python3 m-off.py" fonctionnent parfaitement mais ils refusent de fonctionner dans la commande de mon switch : Erreur 512.

Code : Tout sélectionner

 2019-01-26 10:46:11.101 Status: User: Admin initiated a switch command (13/Tamper-Boxe/Off)
2019-01-26 10:46:11.336 Status: Executing script: /home/pi/domoticz/scripts/python/m-off.py
2019-01-26 10:46:11.364 Error: Error executing script command (/home/pi/domoticz/scripts/python/m-off.py). returned: 512
2019-01-26 10:46:23.940 (Virtual) Lighting 2 (Tamper-Boxe)
2019-01-26 10:46:23.930 Status: User: Admin initiated a switch command (13/Tamper-Boxe/On)
2019-01-26 10:46:24.150 Status: Executing script: /home/pi/domoticz/scripts/python/m-on.py
2019-01-26 10:46:24.177 Error: Error executing script command (/home/pi/domoticz/scripts/python/m-on.py). returned: 512
Je pense que domoticz utilise Python 2.7, comment le contraindre à utiliser Python 3.*
J'ai essayer de modifier le Shebang avec Python3 ou Python 3.5 rien y fait

Merci d'avance pour vos suggestions.
Dernière modification par Dr No le 26 janv. 2019, 14:25, modifié 1 fois.
Thorgal
Messages : 913
Inscription : 16 août 2018, 20:02
Contact :

Re: Forcer l'utilisation de Python3

Message par Thorgal »

Franchement, oublie le script python et passe par un script shell qui lance le script python.
J'ai eu les memes problemes, versions de python, droits d'acces, librairies presentes en commande locale mais absentes en passant par domoticzs, mauvais emplacement du fichier, ect ....
Pour faire simple, domoticz galere pour faire un truc aussi simple que lancer une bete commande shell, pour eviter les prises de tetes > fichiers sh qui lancent les commandes, et encore tu n'es pas au bout de tes peines, meme pour ca ils arrivent a les faire lancer dans un environnement restreint.
Dr No
Messages : 130
Inscription : 22 janv. 2015, 17:02
Localisation : Sud de France (Hérault)

Re: Forcer l'utilisation de Python3

Message par Dr No »

Là ce ne sont que des tests mais, mon but est de gérer mon alarme et je comptais utiliser le clavier virtuel de Domoticz pour la mettre en service. Il me faut donc gérer plein de choses via ce script lancé par la mise On du clavier.

Ca me parait compromis après ce que tu me dis !!!

Je vais devoir revenir à ma solution actuelle aller lire le clavier par 'requests' puis json pour parser le résultat mais c'est apparemment très lourd. J'ai fais un test de lecture de 2 claviers, le virtuel et un physique (z-wave) donc 2 requests de suite, j'ai un time.sleep de 1s et, seulement avec ça mon Rpi-1 est chargé à 70%

Je ne comprends pas bien d'ailleurs pourquoi c'est autant consommateur de ressources. Je vais probablement essayer un sh
vil1driver
Messages : 5661
Inscription : 30 janv. 2015, 11:07
Localisation : Rennes (35)

Re: Forcer l'utilisation de Python3

Message par vil1driver »

Et si tu faisais voir ton script
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
Dr No
Messages : 130
Inscription : 22 janv. 2015, 17:02
Localisation : Sud de France (Hérault)

Re: Forcer l'utilisation de Python3

Message par Dr No »

Voici mon script de test qui fonctionne si je le lance via Putty "python3 m-on.py" et qui refuse de fonctionner dans mon switch virtuel

Code : Tout sélectionner

# -*- coding: utf-8 -*-
#!/usr/bin/python3

import RPi.GPIO as GPIO
import urllib
import requests
from requests.auth import HTTPBasicAuth

GPIO.setmode(GPIO.BCM)
GPIO.setwarnings(False)

GPIO.setup(20, GPIO.OUT, initial=GPIO.LOW)
GPIO.setup(21, GPIO.OUT, initial=GPIO.LOW)

GPIO.setup(26, GPIO.IN)
GPIO.setup(19, GPIO.IN)
GPIO.setup(13, GPIO.IN)
GPIO.setup(6, GPIO.IN)
GPIO.setup(5, GPIO.IN)

urllib.request.urlopen("http://127.0.0.1:8080/json.htm?type=command&param=switchlight&idx=171&switchcmd=On&level=0")
GPIO.output(21, GPIO.HIGH)
Dernière modification par Dr No le 26 janv. 2019, 18:46, modifié 1 fois.
vil1driver
Messages : 5661
Inscription : 30 janv. 2015, 11:07
Localisation : Rennes (35)

Re: Forcer l'utilisation de Python3

Message par vil1driver »

Remplace

Code : Tout sélectionner

# -*- coding: utf-8 -*-
#!/usr/bin/python3
par

Code : Tout sélectionner

#!/usr/bin/python
Si l'erreur est toujours présente essai sans la partie urlopen pour voir
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
Chrominator
Messages : 1042
Inscription : 19 déc. 2015, 07:29
Localisation : France

Re: Forcer l'utilisation de Python3

Message par Chrominator »

Je pense que tu peux garder ton

Code : Tout sélectionner

#!/usr/bin/python3
mais ce doit être les premiers caractères de ton source.
Et si tu as besoin du coding parce que tu as utilisé des accents ou des caractères non ascii, mets ton coding après le shebang.
Un bon frein vaut mieux que deux sparadraps.

Ubuntu 24.04.3 LTS - Domoticz 2025.1 (build 16782)
Pentium G3220T 2.6GHz - 4Go DDR3
RFXtrx433 USB Ver Pro1/1043
Z-Stick GEN5 Version: 1.6-1136-g07ea22bb
Rtl433 RTL-SDR receiver
RFLink Gateway
Zigbee SLZB-06
Dr No
Messages : 130
Inscription : 22 janv. 2015, 17:02
Localisation : Sud de France (Hérault)

Re: Forcer l'utilisation de Python3

Message par Dr No »

J'ai fais cela mais, malheureusement cela ne résoud pas mon problème. Il semblerait que domoticz utilise une version 2 de python et j'ignore comment lui imposer python3.
Avec "update-alternatives" j'ai changé la version de python par défaut mais c'est inefficace pour mes scripts

Je suis sec !!!
vrolland
Messages : 43
Inscription : 25 mars 2015, 16:35
Localisation : RP 78

Re: Forcer l'utilisation de Python3

Message par vrolland »

C'est assez simple en fait, regarde ici tu auras la réponse :

https://linuxconfig.org/how-to-change-f ... bian-linux

Il faut utiliser la fonction update-alternatives
Pi3 - Raspbian wheezy 4.14.98-v7
Domoticz V4.10619
Dr No
Messages : 130
Inscription : 22 janv. 2015, 17:02
Localisation : Sud de France (Hérault)

Re: Forcer l'utilisation de Python3

Message par Dr No »

Merci beaucoup, cela résout mon petit souci
Répondre