Forum eedomus
http://forum.eedomus.fr/

Envoyer requête http avec un script python
http://forum.eedomus.fr/viewtopic.php?f=15&t=9498
Page 1 sur 1
Auteur:  donDams [ 09 Avr 2020 18:02 ]
Sujet du message:  Envoyer requête http avec un script python

Bonjour,

j'utilise un script python pour renvoyer une mesure d'un capteur à ultrason avec un Raspberry PI.
C'est un tuto que j'ai vu sur http://www.domo-blog.fr.
Je récupère bien ma valeur avec mon script tout est OK, le script, le câblage.

Je veux récupérer cette valeur et l'afficher sur ma box eedomus.
J'ai donc utilisé une variable d'état et je demande à mon script python d'écrire dedans.
Pour cela j'utilise cette requête :

r = requests.post("http://api.eedomus.com/set?api_user=XXXXXX&api_secret=YYYYYYYYYYYYYYYY&action=periph.value&periph_id=ZZZZZZZ&value=[VALEUR]")

Le problème est que je n'arrive pas à mettre une variable dynamique dans [VALEUR].
Si je mets une variable fixe 555 par exemple, la variable est bien remontée dans ma box.
Je pense que c'est un problème de synthaxe.
Est-ce que quelqu’un avec des connaissances en python peut m'éclairer?

Merci
Damien

Merci
Auteur:  xeos [ 09 Avr 2020 18:53 ]
Sujet du message:  Re: Envoyer requête http avec un script python

Salut,

Essaye,

Api = Api eedomus
capteur = valeur capteur

valeur = {'action=periph.value&periph_id': 'Api', 'value': 'capteur'}
if capteur:
r = requests.post("http://localhost/api/set, params=valeur)

A adapter selon le script
Auteur:  donDams [ 10 Avr 2020 08:07 ]
Sujet du message:  Re: Envoyer requête http avec un script python

Salut,
merci pour ta réponse.
Sous quelle forme écrire Api eedomus? ... ça semble bloquer sure ce point.
Merci
Auteur:  donDams [ 10 Avr 2020 08:37 ]
Sujet du message:  Re: Envoyer requête http avec un script python

voilà ce que j'ai écrit :

Api = "XXXXXX"&"YYYYYYYYYYYYYYYY"
capteur = format(distance)
valeur = {'action=periph.value&periph_id': 'Api', 'value': 'capteur'}
r = requests.post("http://192.XXX.XXX.XXX/api/set, params=valeur)

avec XXXXXX api_user
et YYYYYYYYYYYYYYYY api_secret

et j'ai ce résultat:
Capture.PNG
Capture.PNG (6.44 Kio) Consulté 7437 fois
Auteur:  xeos [ 10 Avr 2020 08:59 ]
Sujet du message:  Re: Envoyer requête http avec un script python

Salut,

Effectivement j'ai oublier qu'il faut l'api user et secret quand tu envoi meme en local sur eedomus

user = xxxxxxx
secret= xxxxxx
id = xxxxxx
capteur = valeur capteur

valeur = {'api_user': 'user','api_secret':'secret','action=periph.value&periph_id': 'id', 'value': 'capteur'}
if capteur:
r = requests.post("http://192.168.0.XX/api/set, params=valeur)
Auteur:  donDams [ 10 Avr 2020 09:58 ]
Sujet du message:  Re: Envoyer requête http avec un script python

Oui pour mon problème d'avant il y avait un problème de syntaxe... comme je connais pas python c'est chaud ... la moindre erreur et c'est foutu. :roll:
J'ai repris le code avec ton dernier post.
voila la requête:
Capture.PNG
Capture.PNG (14.71 Kio) Consulté 7427 fois


je pense qu'il y a un problème au niveau de l'ecriture de :
'action=periph.value'and'periph_id': 'id'

J'ai essayé plusieurs choses mais je n'y arrive pas.
J'ai encore besoin de ton aide. :wave:

Merci
Auteur:  xeos [ 10 Avr 2020 10:18 ]
Sujet du message:  Re: Envoyer requête http avec un script python

j'ai pas le code devant moi c'est dommage

si les variables passent pas en string met des guillemets simple genre user = 'XXXXXX'
Tu peux soit tester =
valeur = {'api_user': 'user','api_secret':'secret','action':'periph.value','periph_id': 'id', 'value': 'capteur'}

ou enlever les variables sauf capteur et essayer
valeur = {'api_user': 'ton user direct','api_secret':'ton secret direct','action':'periph.value',periph_id': 'ton id direct', 'value': 'capteur'}

tu as une fréquence de requête a combien ? parce que tu risque d'avoir une saturation du réseau
Auteur:  donDams [ 10 Avr 2020 10:53 ]
Sujet du message:  Re: Envoyer requête http avec un script python

Alors j'ai trouvé le problème, c'est ma valeur capteur qui n'était pas bonne.
J'ai pas bien compris comment était déclaré les variables (STRING, INT, BOOL ...) ????? :?:
Donc devant ma valeur capteur j'ai mis
format (capteur)
et ça fonctionne. Je ne sais pas à quoi sert cette fonction mais c'est OK.
Je pensais que c'était un problème de chaîne HTTP, mais c'était le format de ma valeur :roll:

Pour la fréquence de la requête j'ai mis 10s pour mes tests mais je vais passer à 1/2 heure ou 1h, car c'est pour remonter un niveau de ma cuve enterrée.

En tout cas merci de ton aide... en conclusion il faut que je me forme sur python ;)
Auteur:  xeos [ 10 Avr 2020 11:00 ]
Sujet du message:  Re: Envoyer requête http avec un script python

Ah cool :thumbup:

Tu as eu besoin de la mise en paramètre de l'url en faite..... l'essentiel c'est que ca fonctionne ;)
Auteur:  donDams [ 10 Avr 2020 11:04 ]
Sujet du message:  Re: Envoyer requête http avec un script python

j'ai utilisé la méthode "bourrin":
valeur = {'api_user': 'ton user direct','api_secret':'ton secret direct','action':'periph.value',periph_id': 'ton id direct', 'value': 'capteur'}
J'ai essayé avec ton autre méthode et les paramètres mais j'ai pas réussi.
Auteur:  xeos [ 10 Avr 2020 11:12 ]
Sujet du message:  Re: Envoyer requête http avec un script python

T'inquiète la méthode bourrin passe creme sur certains de mes scripts Synology/Domoticz.
Auteur:  donDams [ 10 Avr 2020 12:08 ]
Sujet du message:  Re: Envoyer requête http avec un script python

du moment que ça fonctionne... c'est le principal
Page 1 sur 1 Le fuseau horaire est UTC+1 heure