Au secours, de l'aide pour script Python

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 <\>.
cmou30
Messages : 14
Inscription : 18 déc. 2016, 16:15

Au secours, de l'aide pour script Python

Message par cmou30 »

Bonjour,
Je cherche à envoyer une variable "chaine de caractères" depuis un Arduino relié au Raspberry par liaison USB de manière à l'afficher dans une variable virtuelle de type texte déjà crée.
Par un script Python, j'arrive bien à lire la chaire de caractères (fonction print(ser.readline()) , mais je ne sais pas la renvoyer vers la variable texte.
Depuis le navigateur je sais écrire dans cette variable (http://192.168.0.10:8080/json.htm?type= ... ue=xxxxxxx,
mais ça s'arrête là. Je n'arrive pas à envoyer cette commande depuis le script.
Quelqu'un pourrait-il me venir en aide ? Ou trouver un bout de script ressemblant ? Je suis retraité, pas informaticien et bien bloqué !!! Depuis hier j'ai beaucoup cherché, mais en vain !
patrice
Messages : 1720
Inscription : 22 sept. 2014, 21:51

Re: Au secours, de l'aide pour script Python

Message par patrice »

Bonjour
il faut que tu installes la bibilothèque requets python

Code : Tout sélectionner

sudo apt-get install python-dev
sudo apt-get install python-setuptools
sudo apt-get install python-pip
sudo pip install requests
puis apres dans ton script python tu crée ton url bien formatée : (http://192.168.0.10:8080/json.htm?type= ... ue=xxxxxxx,
puis tu lance requests.get(requete) pour envoyer ca vers ton ip:port
Exemple

requete='http://'+domoticz_ip+':'+domoticz_port+json_url_text1+domoticz_idx+json_url_text2+val
print (requete)
r=requests.get(requete)
print (r)


r est le code de retour 200 egale ok , sinon 404,400,403..

un exemple ici
https://easydomoticz.com/scripts/airparif.py
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
cmou30
Messages : 14
Inscription : 18 déc. 2016, 16:15

Re: Au secours, de l'aide pour script Python

Message par cmou30 »

Un GRAND merci. Comme je suis un boulet en informatique, j'ai mis 3h à faire fonctionner, mais çà fonctionne parfaitement (tout au moins si je met une valeur fixe dans la chaine de caractères que je souhaite envoyer vers ma variable virtuelle) .
Je suis pas (encore ? ) arrivé à envoyer la chaine qui vient de l'Arduino. Mais je la reçois. C'est le lien qui me manque.
Tiens, maintenant c'est le "browser cache refresh failed". C'est pas gagné !!!

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

import json
import requests
import serial
import sys
import string

from requests.auth import HTTPBasicAuth
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# les parametres de Domoticz
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
domoticz_ip='192.168.0.10'
domoticz_port='8080'
user=''
password=''

#val=str('aBCDefgh_abcdefgh_ABCDEFGH-abcdefgh') ----> pour essais

#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# IDX message virtuel
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
periph_idx={'dz_no1':69,
}
############### fin des parametres #############################
#Acquisition chaine par liaison série

ser = serial.Serial('/dev/ttyUSB0', 9600, timeout=3)
while True :
try:
# Read data incoming on the serial line
val=ser.readline()
print val
#val contient bien la chaine que je souhaite envoyer vers ma variable virtuelle
except:
print "Unexpected error:", sys.exc_info()
sys.exit()


# l URL Domoticz pour le widget virtuel
json_url_text1='/json.htm?type=command&param=udevice&idx='
json_url_text2='&svalue='

def maj_widget(domoticz_idx,val):
requete='http://'+domoticz_ip+':'+domoticz_port+json_url_text1+domoticz_idx+json_url_text2+val
#print requete
r=requests.get(requete)
#print (r)

domoticz_idx=str(periph_idx['dz_no1'])
maj_widget (domoticz_idx,val)
Répondre