Lancement d'un script sh

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 <\>.
staber
Messages : 79
Inscription : 21 mars 2016, 02:54

Lancement d'un script sh

Message par staber »

Bonjour,

Je cherche a commander une prise wemo.

J'y arrive très bien dans le terminale. J'ai donc écris un script (wemo_on.sh) qui fonction bien aussi si je fais ./wemo_on

Code : Tout sélectionner

#!/bin/sh
wemo switch "WeMo Switch" on
j'ai fait un

Code : Tout sélectionner

chmod +x wemo_on.sh
dessus

j'ai fait un switch virtuel dans domoticz et dans on j'ai mis :
script:///home/pi/domoticz/scripts/wemo/wemo_on.sh

j'obtient l'erreur suivante :
2016-04-03 18:43:02.643 Error: Error executing script command (/home/pi/domoticz/scripts/wemo/wemo_on.sh). returned: 256

C'est super frustrant! Une idée ?
rimram31
Messages : 659
Inscription : 04 oct. 2015, 11:22
Localisation : Toulouse

Re: Lancement d'un script sh

Message par rimram31 »

Pas souvenir avoir eu un problème de ce genre mais si j'en crois ce post https://www.domoticz.com/forum/viewtopi ... 465#p50041, enfin sa conclusion, évite que ton script écrive en sortie (redirige vers /dev/null ou /tmp/...) et détache le processus (&) si il dure trop longtemps.
Raspberry Pi 2 + carte RF pi "maison" + Domoticz
Sonde Oregon + Aliexpress - Prises Chacon (3500W) - 1wire DS18B20
Pyrrhus
Messages : 130
Inscription : 11 juin 2015, 14:57

Re: Lancement d'un script sh

Message par Pyrrhus »

Ya aussi un truc tout bête mais faut le savoir: dans les dernières versions de domoticz, le chemin du script est raccourci dans les interrupteur.
Pour toi essaye script://wemo/wemo_on.sh
staber
Messages : 79
Inscription : 21 mars 2016, 02:54

Re: Lancement d'un script sh

Message par staber »

Alors oui j'avais vu ce post mais

Code : Tout sélectionner

#!/bin/sh
wemo switch "WeMo Switch" on  > /dev/nul
2016-04-03 18:43:02.643 Error: Error executing script command (/home/pi/domoticz/scripts/wemo/wemo_on.sh). returned: 256

Code : Tout sélectionner

#!/bin/sh
wemo switch "WeMo Switch" on &
Aucune erreur mais l'action ne se produit pas (le wemo reste a off)

Code : Tout sélectionner

#!/bin/sh
wemo switch "WeMo Switch" on > /dev/nul &
Aucune erreur mais l'action ne se produit pas (le wemo reste a off)

Changer le chemin ne donne rien non plus.

J'ai aussi testé en sudo :

Code : Tout sélectionner

#!/bin/sh
sudo wemo switch "WeMo Switch" on
Aucune erreur mais l'action ne se produit pas (le wemo reste a off)

:?
patrice
Messages : 1720
Inscription : 22 sept. 2014, 21:51

Re: Lancement d'un script sh

Message par patrice »

Bonjour
1 - Lorsque tu lances manuellement ton script s depuis la ligne de commande que s'affiche t'il en retour dans la console ?
2 - il met combien de temps pour te rendre la main on script ?

1 - si il y a qq chose qui s'affiche il faut placer dans ton script en bout de ligne un /dev/null
2- si c'est long (plus de 10 sec) met un & en bout de ligne
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
fratton
Messages : 150
Inscription : 19 août 2015, 16:38

Re: Lancement d'un script sh

Message par fratton »

fait un script lua avec

Code : Tout sélectionner

os.execute('/home/pi/domoticz/scripts/wemo/wemo_on.sh>nul')
Et ensuite associe ton script lua avec le bouton
Raspberry Pi B+ / RF-Link 433MHz / divers device maison 433MHz et Wifi
rimram31
Messages : 659
Inscription : 04 oct. 2015, 11:22
Localisation : Toulouse

Re: Lancement d'un script sh

Message par rimram31 »

Ca serait aussi pas mal que nous en dise plus sur ton script ou binaire wemo, celui que tu appelles dans ton script: wemo switch "WeMo Switch" on.

C'est quoi ? Un binaire fournit par wemo, un autre script ? La différence entre une exécution en ligne de commande et l'appel de domoticz peut aussi se jouer sur l'environnement d'exécution notamment des variables système comme path, ld_library_path, java ...

On peut essayer de rediriger la ligne de commande + erreur vers un fichier et de voir ensuite si il contient une erreur:
wemo switch "WeMo Switch" on 2>&1 >/tmp/wemo_debug.log ???
Raspberry Pi 2 + carte RF pi "maison" + Domoticz
Sonde Oregon + Aliexpress - Prises Chacon (3500W) - 1wire DS18B20
staber
Messages : 79
Inscription : 21 mars 2016, 02:54

Re: Lancement d'un script sh

Message par staber »

Bonjour,
Je ne suis pas à la maison avant quelques heures et je vais retester vos nouvelles pistes!
1 - Lorsque tu lances manuellement ton script s depuis la ligne de commande que s'affiche t'il en retour dans la console ?
2 - il met combien de temps pour te rendre la main on script ?
1 - il ne s'affiche rien dans la console
2 - 2 à 3 secondes
Ca serait aussi pas mal que nous en dise plus sur ton script ou binaire wemo
J'ai des Belkin Wemo (http://www.belkin.com/us/Products/home- ... utomation/) et notamment la prise WeMo Switch.

Il existe une librairie python open source «ouimeaux» qui permet de contrôler les appareils Wemo (https://ouimeaux.readthedocs.org/en/latest/) avec un API python aussi.

On peux donc contrôler le dispositif avec des commandes dans le terminal :

Code : Tout sélectionner

wemo device_type "device_name" state
Dans mon cas ma prise s'appel par défaut WeMo Switch

Code : Tout sélectionner

wemo switch "WeMo Switch" on

Code : Tout sélectionner

wemo switch "WeMo Switch" off
Ce qui marche super bien dans la console/terminal connectés sur mon raspberry pi

J'ai voulu faire un script pour être capable de passer la commande grâce à un interrupteur dans domoticz... (je ne suis pas codeur je précise :D )

Merci pour votre aide!
Pyrrhus
Messages : 130
Inscription : 11 juin 2015, 14:57

Re: Lancement d'un script sh

Message par Pyrrhus »

Visiblement c'est au niveau de domoticz le probleme. Plusieurs pistes:
- essaye #!bin/bash au lieu de #!bin/sh au début du script
- teste dans le terminal tes autres script.sh domoticz: si tu en vois un qui ne te rend pas la main il peut bloquer les autres. Je l'ai vécu personnellement.
Profites-en, si un script dure longtemps (10s à peu pres), de lui rajouter un "&" pour libérer le terminal pendant son exécution.

Voilà, moi je commencerai par là si j'avais un script qui se lance bien dans le terminal mais pas dans domoticz.
staber
Messages : 79
Inscription : 21 mars 2016, 02:54

Re: Lancement d'un script sh

Message par staber »

Bonjour,

Alors la commande suivant marche

Code : Tout sélectionner

wemo switch "WeMo Switch" on
le script suivant marche :

Code : Tout sélectionner

#!/bin/sh
wemo switch "WeMo Switch" on
en faisant

Code : Tout sélectionner

./wemo_on.sh
dans le terminal

si j'ajoute

Code : Tout sélectionner

2>&1 >/tmp/wemo_debug.log
la commande et le script ne marchent plus. le log donne «can't find a device with that name» pourtant sans cet ajout, ça marche bien et le nom est le bon.

Le coup du script lua ne marche pas non plus.
- teste dans le terminal tes autres script.sh domoticz: si tu en vois un qui ne te rend pas la main il peut bloquer les autres. Je l'ai vécu personnellement. Profites-en, si un script dure longtemps (10s à peu pres), de lui rajouter un "&" pour libérer le terminal pendant son exécution.
Tu veux dire de lancer les scripts un par un par un et voir ce que ça donne ?
Répondre