Salut,
Un sujet pour parler programmation python et C sur Raspberry :-)
Voici un premier source code permettant d'utiliser un capteur ultrasonique type hc-sr04 pour la mesure de niveau de citerne(eau de pluie dans mon cas).
Schéma de cablage du capteur HC-SR04(disponible en soirée)
Code python
Concrètement comment utiliser ce code ?
Il faut l'intégrer dans votre visu, executer toutes les heures par exemple.. et stocker la valeur de "mesurereelle" dans une base de donnée si vous souhaitez faire des graphiques de conso.
Sauver le code dans un fichier, genre mesureciterne.py
Dans smarthome.py/smartvisu:
- Au préalable il faut déclarer un "item" pour recevoir la valeur de lecture. Par exemple:
Sans envoi sur le bus knx, uniquement dans DB SQlite
Avec envoi sur le bus knx, et log dans DB SQlite(gad à changer selon votre config)
Editer logic.conf (/usr/local/smarthome/etc/logic.conf ou via le partage de fichiers par défaut)
Et dans mesureciterne.py, il faut ajouter la ligne suivante, afin d'assigner la mesure à une variable de smarthome:
Dans smarthome le "import time" en début de code n'est pas nécéssaire car déjà chargé.
Un sujet pour parler programmation python et C sur Raspberry :-)
Voici un premier source code permettant d'utiliser un capteur ultrasonique type hc-sr04 pour la mesure de niveau de citerne(eau de pluie dans mon cas).
Schéma de cablage du capteur HC-SR04(disponible en soirée)
Code python
Code :
#!/usr/bin/python
# Importation des lib.
import RPi.GPIO as GPIO
import time
# Mode BCM pour GPIO
GPIO.setmode(GPIO.BCM)
# Paramétrage des broches GPIO à utiliser (au choix)
GPIO_PULSE = 24
GPIO_MESURE = 25
# Paramétrage des GPIO
GPIO.setup(GPIO_PULSE,GPIO.OUT) # Sortie pour pulse de démarrage mesure
GPIO.setup(GPIO_MESURE,GPIO.IN) # Entrée du signal de mesure
# Forcage de la sortie pulse à zéro
GPIO.output(GPIO_PULSE, False)
# pause
time.sleep(0.5)
# On génère un pulse en passant à l'état haut la sortie pulse pendant 10µS
GPIO.output(GPIO_PULSE, True)
time.sleep(0.00001)
GPIO.output(GPIO_PULSE, False)
# On va mesurer le temps à l'état haut de l'entrée mesure.
# Le temps à l'état haut est le temps de propagation de l'onde ALLER/RETOUR
debut = time.time() # reset
while GPIO.input(GPIO_MESURE) == 0:
debut = time.time() # début
while GPIO.input(GPIO_MESURE) == 1:
fin = time.time() # fin
mesuretemps = fin-debut
# Le son parcours +-340m/s ou 34000cm/s, multiplié par le temps donne la distance
mesuredistancetotale = mesuretemps * 34000
# Dans la var. mesurereelle on trouvera la mesure finale, exploitable pour la visu et log SQL.
mesurereelle = mesuredistancetotale / 2
# fin de mesure, on sort proprement
GPIO.cleanup()
Concrètement comment utiliser ce code ?
Il faut l'intégrer dans votre visu, executer toutes les heures par exemple.. et stocker la valeur de "mesurereelle" dans une base de donnée si vous souhaitez faire des graphiques de conso.
Sauver le code dans un fichier, genre mesureciterne.py
Dans smarthome.py/smartvisu:
- Au préalable il faut déclarer un "item" pour recevoir la valeur de lecture. Par exemple:
Sans envoi sur le bus knx, uniquement dans DB SQlite
Code :
[exterieur]
[[mesure]]
[[[citerne]]]
type = num
sqlite = yes
Code :
[exterieur]
[[mesure]]
[[[citerne]]]
type = num
knx_dpt = 9
knx_send = 5/1/3
sqlite = yes
Editer logic.conf (/usr/local/smarthome/etc/logic.conf ou via le partage de fichiers par défaut)
Code :
# /usr/local/smarthome/etc/logic.conf
[Mesureciterne]
filename = mesureciterne.py
cycle = 3600
Et dans mesureciterne.py, il faut ajouter la ligne suivante, afin d'assigner la mesure à une variable de smarthome:
Code :
sh.exterieur.mesure.citerne() = mesurereelle