Page 1 sur 1
capteur de niveau & requette http
Posté : mer. 8 juin 2016 10:35
par minimoibientot
bonjour à tous
j'ai pour projet d'installer des capteurs de niveau d'eau relié à un raspberry
( pour une cuve à eau et un puisard )
je pensais à 4 capteurs de niveau ( 0 / 33 / 66 / 100 % ) pour la cuve
et 3 capteurs ( 0 / 50 / 100 % ) pour le puisard
j'ai vu ce tuto
Une mesure de niveau d’eau avec un Raspberry Pi
qui correspond au 3/4 à mon besoin
seul modification :
- vérifier les capteurs toutes les 15 min
- envoyer une requête " http "
( à un bouton virtuel sur une box domotique )
seul bémol : je suis novice en " code "
et donc besoin de vous
par avance merci
Re: capteur de niveau & requette http
Posté : mer. 8 juin 2016 21:52
par minimoibientot
pour la vérification des sondes toutes les 15 min
tache cron
pensez vous que ce code pourrait fonctionner
Code : Tout sélectionner
#!/usr/bin/env python
# -------------------------------------------
# Affichage du niveau d'eau de la cuve
# Fred J. mars2014
# -------------------------------------------
import RPi.GPIO as GPIO
import time
DEBUG = 0;
#-------------[ CABLAGE ]--------------------
# sondes 4 à 9 puisard ( 0, 33, 66, 100%)
# sondes 10 à 15 cuve eau ( 0, 33, 66, 100%)
Sonde = [4, 7, 8, 9, 10, 11, 14, 15];
#-------------[ Initialisation ]--------------
GPIO.setwarnings(False)
GPIO.setmode(GPIO.BCM)
for i in range(0,8):
GPIO.setup(Sonde[i], GPIO.IN)
#-------------[ url suivant n° sonde et si true ou false ]--------------
sonde_true[1]="http://@IP:port/xxxxxxxxxx"
sonde_false[1]="http://@IP:port/xxxxxxxxxx"
sonde_true[2]="http://@IP:port/xxxxxxxxxx"
sonde_false[2]="http://@IP:port/xxxxxxxxxx"
sonde_true[3]="http://@IP:port/xxxxxxxxxx"
sonde_false[3]="http://@IP:port/xxxxxxxxxx"
sonde_true[4]="http://@IP:port/xxxxxxxxxx"
sonde_false[4]="http://@IP:port/xxxxxxxxxx"
sonde_true[5]="http://@IP:port/xxxxxxxxxx"
sonde_false[5]="http://@IP:port/xxxxxxxxxx"
sonde_true[6]="http://@IP:port/xxxxxxxxxx"
sonde_false[6]="http://@IP:port/xxxxxxxxxx"
sonde_true[7]="http://@IP:port/xxxxxxxxxx"
sonde_false[7]="http://@IP:port/xxxxxxxxxx"
sonde_true[8]="http://@IP:port/xxxxxxxxxx"
sonde_false[8]="http://@IP:port/xxxxxxxxxx"
#-------------[ Main ]--------------
for i in range(0,8):
if GPIO.input(sonde[i]) == True:
r = requests.get(sonde_true[i])
else:
r = requests.get(sonde_false[i])
r.url
exit
Re: capteur de niveau & requette http
Posté : ven. 10 juin 2016 09:44
par zeverybest
L'envoi de requete HTTp en python n'est pas aussi simple
Ce n'est pas la mort non plus, mais il faut decomposer ta requette
Code : Tout sélectionner
import httplib
# on cree un connection avec le serveur:
httpServ= httplib.HTTPConnection("adresse du seveur", port )
#on se connecte au serveur
httpServ.connect()
#on envoie la requete
httpServ.request('GET',requete)
response = httpServ.getresponse()
#les verification :
if response.status == httplibOK :
printText(response.read())
Re: capteur de niveau & requette http
Posté : ven. 10 juin 2016 17:02
par minimoibientot
merci pour l'aide zeverybest
pour le coup je suis complétement largué
les requetes seront de ce type :
Code : Tout sélectionner
http://@IP:PORT/data_request?id=lu_action&output_format=xml&DeviceNum=DEVICE&serviceId=urn:upnp-org:serviceId:SwitchPower1&action=SetTarget&newTargetValue=0
et envoyé sur une box domotique ( pas un server, je ne sais pas si cela fait une différence )
helppppp
Re: capteur de niveau & requette http
Posté : lun. 13 juin 2016 10:44
par minimoibientot
bonjour
est il possible d'utiliser une commande curl
( cela m'a l'air plus simple
)
Code : Tout sélectionner
import subprocess
proc = subprocess.Popen(["curl", "http://192.168.1.xxx:3480/data_request?id=lu_action&output_format=xml&DeviceNum=DEVICE&serviceId=urn:upnp-org:serviceId:SwitchPower1&action=SetTarget&newTargetValue=0"])
Re: capteur de niveau & requette http
Posté : lun. 13 juin 2016 16:03
par Manfraid
Je te conseille la lib requests qui te permet de simplifier les requêtes http
Re: capteur de niveau & requette http
Posté : mar. 14 juin 2016 22:16
par minimoibientot
Une idée pour l'inscrire dans le script svp ??
merci
minimoibientot a écrit :
Code : Tout sélectionner
#!/usr/bin/env python
# -------------------------------------------
# Affichage du niveau d'eau de la cuve
# Fred J. mars2014
# -------------------------------------------
import RPi.GPIO as GPIO
import time
DEBUG = 0;
#-------------[ CABLAGE ]--------------------
# sondes 4 à 9 puisard ( 0, 33, 66, 100%)
# sondes 10 à 15 cuve eau ( 0, 33, 66, 100%)
Sonde = [4, 7, 8, 9, 10, 11, 14, 15];
#-------------[ Initialisation ]--------------
GPIO.setwarnings(False)
GPIO.setmode(GPIO.BCM)
for i in range(0,8):
GPIO.setup(Sonde[i], GPIO.IN)
#-------------[ url suivant n° sonde et si true ou false ]--------------
sonde_true[1]="http://@IP:port/xxxxxxxxxx"
sonde_false[1]="http://@IP:port/xxxxxxxxxx"
sonde_true[2]="http://@IP:port/xxxxxxxxxx"
sonde_false[2]="http://@IP:port/xxxxxxxxxx"
sonde_true[3]="http://@IP:port/xxxxxxxxxx"
sonde_false[3]="http://@IP:port/xxxxxxxxxx"
sonde_true[4]="http://@IP:port/xxxxxxxxxx"
sonde_false[4]="http://@IP:port/xxxxxxxxxx"
sonde_true[5]="http://@IP:port/xxxxxxxxxx"
sonde_false[5]="http://@IP:port/xxxxxxxxxx"
sonde_true[6]="http://@IP:port/xxxxxxxxxx"
sonde_false[6]="http://@IP:port/xxxxxxxxxx"
sonde_true[7]="http://@IP:port/xxxxxxxxxx"
sonde_false[7]="http://@IP:port/xxxxxxxxxx"
sonde_true[8]="http://@IP:port/xxxxxxxxxx"
sonde_false[8]="http://@IP:port/xxxxxxxxxx"
#-------------[ Main ]--------------
for i in range(0,8):
if GPIO.input(sonde[i]) == True:
r = requests.get(sonde_true[i])
else:
r = requests.get(sonde_false[i])
r.url
exit
Re: capteur de niveau & requette http
Posté : lun. 22 janv. 2018 11:49
par Le Ptit Nicolas
J'ai le même besoin que toi, mais je compte partir sur une solution différente.
Re: capteur de niveau & requette http
Posté : lun. 29 janv. 2018 16:33
par Le Ptit Nicolas
Je vais utiliser un capteur de distance étanche JSN-SR04T (équivalent au HC-SR04)
http://karlytau.raidghost.com/arduino/m ... _fioul.htm
Relié à un ESP8266 (équivalent à ce montage au niveau matériel) :
http://blog.rexave.net/sonde-de-mesure- ... -desp8266/
Sur lequel je vais installer comme soft easyesp :
https://www.letscontrolit.com/wiki/index.php/HC-SR04
J'ai déjà testé le soft easyesp sur un ESP8266 avec un capteur HC-SR04, ca fonctionnne très bien, tu peux voir la mesure de distance avec un navigateur web, comme ceci:
Et j'envoie les valeurs sur ma box domotique (un Pi avec Domoticz)
Il ne me reste plus qu'à acheter le capteur étanche