Requete http en push avec Script

Re

@olive: j’ai vu dans vos nombreux posts qu’il y avait possibilité de faire un push http dans un bloc code d’un scenario ? ça m’irait tout aussi bien mais je n’ai pas franchement compris la syntaxe…

Vu le premier message, j’avais compris que tu avais un équipement de type script avec un commande de type http et la requête en question…

Que veux dire la phrase suivante alors?

Il faudrait montrer cet équipement script qui, si je comprend bien, existe

Si tu part d’un scénario un bloc de code serait semblable a celui-ci :

$req = 'curl -i -XPOST "https://............" ';
$scenario->setLog('DEBUG REQUETTE : '.$req);
$output0 = shell_exec($req);
$scenario->setLog('DEBUG RETOUR : '.$output0);
1 « J'aime »

Hello

@Mips : J’ai tâtonné ! j’ai créé un script et un virtuel pour essayer; mais la requête ne passe dans aucun des 2 cas.

Le moyen m’est égal, j’ai juste besoin de lancer un push HTTP du type décrit ci dessus.

Je commence à me demander si ce n’est pas une histoire de pare feu ou autre qui bloque. c’est bien une requete en local, mais bon…

@olive : J’ai essayé le script en scenario en collant simplement ma requete a la place du http… de ton exemple. Pour l’instant sans succes

Fait bien attention aux délimiteurs " et ’ il ne faut pas imbriquer 2 fois les mêmes !!!

Tu a les 2 lignes de debug dans le script pour t’aider n’hésite pas a consulter les log du scenario.

eh oui. voici les logs

------------------------------------
[2020-10-01 16:31:11][SCENARIO] Start : Scenario lance manuellement.
[2020-10-01 16:31:11][SCENARIO] Exécution du sous-élément de type [action] : action
[2020-10-01 16:31:11][SCENARIO] Exécution d'un bloc élément : 123
[2020-10-01 16:31:11][SCENARIO] Exécution du sous-élément de type [action] : code
[2020-10-01 16:31:11][SCENARIO] Exécution d'un bloc code
[2020-10-01 16:31:11][SCENARIO] DEBUG REQUETTE : curl -i -XPOST "https://nasamoi.fr4.quickconnect.to/webapi/entry.cgi?api=SYNO.SurveillanceStation.ExternalEvent&method="Trigger"&version=1&eventId=2&eventName="This is external event2"&account="acount"&password="motdepasse""
[2020-10-01 16:31:11][SCENARIO] DEBUG RETOUR : HTTP/2 307
location: http://nasamoi.quickconnect.to/webapi/entry.cgi?api=SYNO.SurveillanceStation.ExternalEvent&method=Trigger&version=1&eventId=2&eventName=This
date: Thu, 01 Oct 2020 14:31:11 GMT
content-length: 0
[2020-10-01 16:31:11][SCENARIO] Fin correcte du scénario
------------------------------------
[2020-10-01 16:41:04][SCENARIO] Start : Scenario lance manuellement.
[2020-10-01 16:41:04][SCENARIO] Exécution du sous-élément de type [action] : action
[2020-10-01 16:41:04][SCENARIO] Exécution d'un bloc élément : 123
[2020-10-01 16:41:04][SCENARIO] Exécution du sous-élément de type [action] : code
[2020-10-01 16:41:04][SCENARIO] Exécution d'un bloc code
[2020-10-01 16:41:04][SCENARIO] DEBUG REQUETTE : curl -i -XPOST "https://nasamoi.fr4.quickconnect.to/webapi/entry.cgi?api=SYNO.SurveillanceStation.Webhook&method="Incoming"&version=1&token=123456789GQC9Te2s3d3jqhgJ8iaWsA7gGysNaOc08e5f0yl8zQB1i3f"
[2020-10-01 16:41:04][SCENARIO] DEBUG RETOUR : HTTP/2 307
location: http://nasamoi.quickconnect.to/webapi/entry.cgi?api=SYNO.SurveillanceStation.Webhook&method=Incoming&version=1&token=123456789QC9Te2s3d3jqhgJ8iaWsA7gGysNaOc08e5f0yl8zQB1i3f
date: Thu, 01 Oct 2020 14:41:04 GMT
content-length: 0
[2020-10-01 16:41:04][SCENARIO] Fin correcte du scénario

Dans les 2 essais avec 2requetes http différentes, aucun résultat.

c’est bien ce que je dit tu devrait avoir :

curl -i -XPOST "https://nasamoi.fr4.quickconnect.to/webapi/entry.cgi?api=SYNO.SurveillanceStation.ExternalEvent&method='Trigger'&version=1&eventId=2&eventName='This is external event2'&account='acount'&password='motdepasse'"

ton 1er " ne doit pas être interrompu avant la fin il faut donc encadrer tes autre paramètres par des simple ’

tu peut aussi pour simplifier décomposer tes paramètres dans des variable et faire de la concaténation pour simplifier les choses.

quand ça veut pas…

------------------------------------
[2020-10-01 17:03:36][SCENARIO] Start : Scenario lance manuellement.
[2020-10-01 17:03:37][SCENARIO] Exécution du sous-élément de type [action] : action
[2020-10-01 17:03:37][SCENARIO] Exécution d'un bloc élément : 123
[2020-10-01 17:03:37][SCENARIO] Exécution du sous-élément de type [action] : code
[2020-10-01 17:03:37][SCENARIO] Exécution d'un bloc code
[2020-10-01 17:03:37][SCENARIO] syntax error, unexpected 'Trigger' (T_STRING)
[2020-10-01 17:03:37][SCENARIO] Fin correcte du scénario
------------------------------------
1 « J'aime »

C’est clair ta une erreur de syntaxe … cherche tu va trouver tout est dans la syntaxe de ton expression.
oublie pas les ; a la fin

1 « J'aime »

je crois que j’approche…

------------------------------------
[2020-10-01 17:27:09][SCENARIO] Start : Scenario lance manuellement.
[2020-10-01 17:27:09][SCENARIO] Exécution du sous-élément de type [action] : action
[2020-10-01 17:27:09][SCENARIO] Exécution d'un bloc élément : 123
[2020-10-01 17:27:09][SCENARIO] Exécution du sous-élément de type [action] : code
[2020-10-01 17:27:09][SCENARIO] Exécution d'un bloc code
[2020-10-01 17:27:09][SCENARIO] DEBUG REQUETTE : curl -i -XPOST "https://nasamoi.fr.quickconnect.to/webapi/entry.cgi?api=SYNO.SurveillanceStation.ExternalEvent&method=Trigger&version=1&eventId=1&eventName=This%20is%20external%20event1&account=account&password=mdp"
[2020-10-01 17:27:09][SCENARIO] DEBUG RETOUR : HTTP/2 307
location: http://nasamoi.quickconnect.to/webapi/entry.cgi?api=SYNO.SurveillanceStation.ExternalEvent&method=Trigger&version=1&eventId=1&eventName=This%20is%20external%20event1&account=account&password=mdp
date: Thu, 01 Oct 2020 15:27:09 GMT
content-length: 0
[2020-10-01 17:27:09][SCENARIO] Fin correcte du scénario

De ce que je comprends, le script a fonctionné… mais je n’ai toujours pas l’action à l’autre bout

ça donne quoi dans un navigateur ?

https://nasamoi.fr.quickconnect.to/webapi/entry.cgi?api=SYNO.SurveillanceStation.ExternalEvent&method=Trigger&version=1&eventId=1&eventName=This%20is%20external%20event1&account=account&password=mdp

il faut peut être encadrer :

This%20is%20external%20event1

et remette les espaces

un simple script bash avec un wget ca suffit pas ?

Je ne comprend pas la question

1 « J'aime »

wget est au bash ce que curl est au php :slight_smile:

hello,
honnêtement, j’ai essayé tous les encadrement possibles. j’ai essayé de voir dans les options de curl si je pouvais changer qqchose. j’ai lancé directement les requêtes curl dans le terminal de mon Rpi (qui héberge jeedom, comme ça même IP, même droits…) sans plus de succès.

Bonjour,
J’ai le même problème, lorsque j’utilise la commande donnée par mon nas

( http://192.168.1.110:5000/webapi/entry.cgi?api=SYNO.SurveillanceStation.ExternalEvent&method=« Trigger »&version=1&eventId=1&eventName=« This is external event1 »&account="{account}"&password="{password}" )

Dans mon navigateur je fait un copier coller ça marche sans problème, par contre dans jeedom avec le plugin script, je n’ai aucune action

Gonzi as tu trouvé une solution pour commander surveillance station avec jeedom ?

Salut @niouk_29
désolé pour mon délai de réponse.
Non, je n’ai pas trouvé. j’ai a peu près tout essayé sans succès, exactement dans le même cas que toi.
Par contre, j’ai (payé) le plugin Synology et il fonctionne très bien. Tu peux gérer le Home mode directement depuis les scenarios. donc pour quelques euros j’ai arrêté de me prendre la tête.

bonjour @gonzi, @niouk_29,
la gestion des guillemets est assez délicate dans l’utilisation des commandes via scripts.
Si je reprends la commande dans la réponse d’olive, je ferais les modifs suivantes pour que les guillemets, à l’intérieur de l’URL http (mise entre guillemets), soient bien interprétés comme des guillemets. c’est pour cela qu’ils sont, dans l’URL entre guillemets, sous la forme \" au lieu de ":

curl -i -X POST "https://nasamoi.fr4.quickconnect.to/webapi/entry.cgi?api=SYNO.SurveillanceStation.ExternalEvent&method=\"Trigger\"&version=1&eventId=2&eventName=\"This is external event2\"&account=\"acount\"&password=\"motdepasse\""

pour le cas de @niouk_29, on aurait :
curl -i -X "http://192.168.1.110:5000/webapi/entry.cgi?api=SYNO.SurveillanceStation.ExternalEvent&method=\"Trigger\"&version=1&eventId=1&eventName=\"This is external event1\"&account=\"{account}\"&password=\"{password}\""

NB :

  • toujours bien mettre l’URL complète entre guillemets → cf Cas des & dans URL
  • mettre ces commandes en commandes de script de type script/action.

@gonzi @mnpg,
Merci pour les infos, dès que je peux je test la solution des guillemets,

Je viens de tester les guillemets, en script/action, rien, mais ca fonctionne en html.

Je te remercie.