[résolu] Impossible de lancer un script
[résolu] Impossible de lancer un script
Bonjour,
Tout nouveau sur Domoticz je viens de passer la journée à essayer de configurer mes prises meross sur celui ci.
J'ai au final réussi à mettre en place MerossIot et a faire mes scripts sur Raspberry OS, et ils fonctionnent !
Après avoir tatouillé sur Domoticz, j'ai réussi à faire en sorte que mon interrupteur ne fasse plus d'erreur en lançant le script.
En effet j'ai bien une jolie ligne verte dans les log avec écris "Executing script: /home/domoticz/domoticz/scripts/imprimante_on.sh"
Mais rien ne se passe... Pourtant lorsque je lance exactement la même ligne sur Raspberry OS ça fonctionne... Avec le même utilisateur que celui utilisé par Domoticz... Jusque là je me tapais la tête contre les murs avec les erreurs, mais maintenant que je n'ai même plus de log je suis perdu, je ne sais plus où chercher...
Au secours
Tout nouveau sur Domoticz je viens de passer la journée à essayer de configurer mes prises meross sur celui ci.
J'ai au final réussi à mettre en place MerossIot et a faire mes scripts sur Raspberry OS, et ils fonctionnent !
Après avoir tatouillé sur Domoticz, j'ai réussi à faire en sorte que mon interrupteur ne fasse plus d'erreur en lançant le script.
En effet j'ai bien une jolie ligne verte dans les log avec écris "Executing script: /home/domoticz/domoticz/scripts/imprimante_on.sh"
Mais rien ne se passe... Pourtant lorsque je lance exactement la même ligne sur Raspberry OS ça fonctionne... Avec le même utilisateur que celui utilisé par Domoticz... Jusque là je me tapais la tête contre les murs avec les erreurs, mais maintenant que je n'ai même plus de log je suis perdu, je ne sais plus où chercher...
Au secours
Dernière modification par Corbaak le 12 sept. 2021, 12:48, modifié 1 fois.
Re: Impossible de lancer un script
Bonjour Corbaak et bienvenue sur le forum
Évite d'écrire "au secours" : on est sur un forum d'entre-aide, ce n'est pas la police, les pompiers ni le samu.
Est-ce que tu as fait un Chmod +x sur ton fichier script ?
Je ne comprends pas pourquoi tu "n'as même plus de log" ? Tu peux expliciter ce que tu as fait, comment tu appel ton script ?
Évite d'écrire "au secours" : on est sur un forum d'entre-aide, ce n'est pas la police, les pompiers ni le samu.
Est-ce que tu as fait un Chmod +x sur ton fichier script ?
Je ne comprends pas pourquoi tu "n'as même plus de log" ? Tu peux expliciter ce que tu as fait, comment tu appel ton script ?
Comment bien utiliser le forum : Poser une question, Mettre un script, un fichier, une image ou des logs
Mes petits guides : Débuter en programmation, Le débogage, Le choix de matériel, Les sauvegardes
Ma présentation - Mes Tutos
Mes petits guides : Débuter en programmation, Le débogage, Le choix de matériel, Les sauvegardes
Ma présentation - Mes Tutos
Re: Impossible de lancer un script
Merci déjà d'avoir répondu, désolé si je suis resté trop vague. Alors voilà le topo là où je bloque.
Je lance (enfin j'essaye vu que c'est la que je bloque) mon script sur un interrupteur sur domoticz Mais rien ne se passe, pourtant dans les logs de domoticz je n'ai plus d'erreur (j'avais au départ une erreur 512 puis 256 que j'ai réglé) que j'ai réglé en ajoutant les droits d'exécution pour le premier et en faisant le script shell pour le 2eme Quand je lance exactement la même commande sur Raspberry OS ça fonctionne très bien Et pour info mes scripts sh et python :
Je lance (enfin j'essaye vu que c'est la que je bloque) mon script sur un interrupteur sur domoticz Mais rien ne se passe, pourtant dans les logs de domoticz je n'ai plus d'erreur (j'avais au départ une erreur 512 puis 256 que j'ai réglé) que j'ai réglé en ajoutant les droits d'exécution pour le premier et en faisant le script shell pour le 2eme Quand je lance exactement la même commande sur Raspberry OS ça fonctionne très bien Et pour info mes scripts sh et python :
Dernière modification par Corbaak le 12 sept. 2021, 10:18, modifié 4 fois.
Re: Impossible de lancer un script
Essaye avec seulement deux // entre script: et home
Comment bien utiliser le forum : Poser une question, Mettre un script, un fichier, une image ou des logs
Mes petits guides : Débuter en programmation, Le débogage, Le choix de matériel, Les sauvegardes
Ma présentation - Mes Tutos
Mes petits guides : Débuter en programmation, Le débogage, Le choix de matériel, Les sauvegardes
Ma présentation - Mes Tutos
Re: Impossible de lancer un script
En retirant juste un des 3 / j'obtient ça
Du coup j'ai mis le lien relatif
Et là j'ai le même résultat qu'avant (donc pas d'erreur mais aucune réaction sur la prise)
Re: Impossible de lancer un script
Tu as essayé un autre script SH (création d'un txt par exemple) pour voir si c'est le SH qui s'exécute pas ou si c'et le lancement du python qui ne se fait pas?
Comment bien utiliser le forum : Poser une question, Mettre un script, un fichier, une image ou des logs
Mes petits guides : Débuter en programmation, Le débogage, Le choix de matériel, Les sauvegardes
Ma présentation - Mes Tutos
Mes petits guides : Débuter en programmation, Le débogage, Le choix de matériel, Les sauvegardes
Ma présentation - Mes Tutos
Re: Impossible de lancer un script
Merci j'ai modifier mes scripts shell pour avoir un peu plus d'info et au final, j'en ai pas beaucoup
Du coup j'ai mes scripts totalement ok quand je les lances manuellement et j'ai absolument rien quand j'utilise mes boutons (donc c'est a priori bien le sh qui ne se lance pas)
Re: Impossible de lancer un script
J'ai rien dis, j'ai bien une erreur ! Merci ! (C'est rare d'être heureux d'avoir une erreur)
J'ai remodifié mon script sh car même si il est localisé dans script il est lancé a partir du répertoire domoticz du coup je lance le script python avec ce sh : Et ça lance bien le fichier python du coup même lancé avec Domoticz. Par contre j'ai une erreur sur le python du coup (mais ayant une erreur je peux me relancer dans des recherches)
Alors que tout ce lance toujours très bien via le terminal
J'ai remodifié mon script sh car même si il est localisé dans script il est lancé a partir du répertoire domoticz du coup je lance le script python avec ce sh : Et ça lance bien le fichier python du coup même lancé avec Domoticz. Par contre j'ai une erreur sur le python du coup (mais ayant une erreur je peux me relancer dans des recherches)
Code : Tout sélectionner
Traceback (most recent call last):
File "scripts/imprimante_on.py", line 5, in <module>
from meross_iot.http_api import MerossHttpClient
ModuleNotFoundError: No module named 'meross_iot'
Re: Impossible de lancer un script
Pour information j'ai réglé mon dernier problème et maintenant tout fonctionne.
Code : Tout sélectionner
#!/usr/bin/python3
import asyncio
import os
import sys
if not '/usr/local/lib/python3.7/dist-packages' in sys.path:
sys.path.append('/usr/local/lib/python3.7/dist-packages')
#Mon erreur etait la il fallait ajouter le dossier de package au sys path
if not '/home/domoticz/.local/lib/python3.7/site-packages' in sys.path:
sys.path.append('/home/domoticz/.local/lib/python3.7/site-packages')
from meross_iot.http_api import MerossHttpClient
from meross_iot.manager import MerossManager
EMAIL = os.environ.get('MEROSS_EMAIL') or ".@.com"
PASSWORD = os.environ.get('MEROSS_PASSWORD') or ""
async def main():
# Setup the HTTP client API from user-password
http_api_client = await MerossHttpClient.async_from_user_password(email=EMAIL, password=PASSWORD)
# Setup and start the device manager
manager = MerossManager(http_client=http_api_client)
await manager.async_init()
# Retrieve all the MSS310 devices that are registered on this account
await manager.async_device_discovery()
plugs = manager.find_devices(device_name="Imprimante")
if len(plugs) < 1:
print("No MSS310 plugs found...")
else:
# Turn it on channel 0 Note that channel argument is optional for MSS310 as they only have one channel
dev = plugs[0]
# The first time we play with a device, we must update its status
await dev.async_update()
# We can now start playing with that
print(f"Turning on {dev.name}...")
await dev.async_turn_on(channel=0)
# Close the manager and logout from http_api
manager.close()
await http_api_client.async_logout()
if __name__ == '__main__':
# Windows and python 3.8 requires to set up a specific event_loop_policy. On Linux and MacOSX this is not necessary.
if os.name == 'nt':
asyncio.set_event_loop_policy(asyncio.WindowsSelectorEventLoopPolicy())
loop = asyncio.get_event_loop()
loop.run_until_complete(main())
loop.close()