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 )
Image

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 :oops:


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
:arrow: 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

:oops:
pour le coup je suis complétement largué
:oops:

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. :arrow:

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
Image
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:
Image
Et j'envoie les valeurs sur ma box domotique (un Pi avec Domoticz)
Il ne me reste plus qu'à acheter le capteur étanche