wared quality 75 Posté(e) août 15, 2015 Auteur Partager Posté(e) août 15, 2015 grosse mise à jour j'ai decidé d'ameliorer mon systeme, je suis en train de lui ajouter 3 sondes DHT22 (t° et humidité) avec un ecran lcd 4x20 sur lequel je met à jour toutes les minutes les données en plus de l'heure j'ai aussi supprimer les petits relais bleus pour ne mettre que des relais SSR l'ecran lcd sera dans mon salon et j'aurais une sonde dans la piece de culture, une dans le grow et une derniere en flo en plus d'allumer les lumieres dans les 2 espaces, une horloge rtc permet de conserver l'heure en cas de coupure de courant car il ne sera pas relié au reseau j'utilise l'ancienne version depuis maintenant 1 an et demi sans avoir rencontré de probleme, j'ai pu assister plusieurs fois au redemarrage suite à une coupure de courant, c'est magique... un script python gere les sondes et le lcd, l'allumage des lumieres est fait par des scripts python qui sont appelés via cron je peux poster les scripts si ca interesse 3 Lien à poster Partager sur d’autres sites
pakabonbon 2 Posté(e) novembre 20, 2015 Partager Posté(e) novembre 20, 2015 Salut à toi, super boulot! tu as l'air d'avoir quelque chose de stable, c'est pas gagné d'avance avec ce genre de matos. Je suis preneur si tu decides de poster les scripts, je n'y connais pas grand chose mais j'espere apprendre un peu en regardant les tiens. Bon courage pour la suite Lien à poster Partager sur d’autres sites
wared quality 75 Posté(e) novembre 25, 2015 Auteur Partager Posté(e) novembre 25, 2015 salut pakabonbon, je te partage mon script python pour la collecte et l'affichage des temperatures et humidité il doit etre perfectible et ne respecte peut etre pas toutes les bonnes pratiques de python mais ca fonctionne #!/usr/bin/python # -*- coding=utf-8 -*- # Thermopi - Station Meteo, horloge et date # Wared - Juin 2015 # Necessite les librairies Adafruit_DHT et RPi_I2C_driver dispos sur le net # Imports divers import RPi_I2C_driver import time from time import sleep from datetime import datetime import locale import Adafruit_DHT locale.setlocale(locale.LC_ALL, 'fr_FR') # Mise en variable de la bibliotheque du lcd lcd = RPi_I2C_driver.lcd() # Definition des caracteres perso, fait avec http://www.quinapalus.com/hd44780udg.html fontdata1 = [ # Char 0 - thermometre [ 0x4, 0xa, 0xa, 0xe, 0xe, 0x1f, 0x1f, 0xe], # Char 1 - goutte [ 0x4, 0x4, 0xa, 0xa, 0x11, 0x11, 0x11, 0xe], # Char \x02 - degre celcius [0x18, 0x18, 0x0, 0x0, 0x3, 0x4, 0x4, 0x3], # Char \x03 - pourcent [0x0 ,0x18 ,0x19 ,0x2 ,0x4 ,0x8 ,0x13 ,0x3], # Char \x04 - barre char de gauche [0x0,0x0,0x0,0x1f,0x0,0x0,0x0,0x0], # barre du millieu [0x0,0x0,0x0,0x1f,0x4,0x4,0x4,0x4], # barre verticale [0x4,0x4,0x4,0x4,0x4,0x4,0x4,0x4], ] # Import des caracteres perso lcd.lcd_load_custom_chars(fontdata1) # Definition du modele du capteur de temperature/humidite sensor = Adafruit_DHT.DHT22 # Mise en variable des GPIO associes au sondes DHT22 sonde1 = 14 sonde2 = 23 sonde3 = 15 # Creation des variables d heure heure = datetime.now().strftime('%H:%M %d %b') heure_lcd = datetime.now().strftime('%H:%M') heure_lcd_off = '23:00'# l heure off du LCD se fait par un sleep de 32400 secondes (9h) ligne 112 # Creation des variables de temperatures et humidites vides qui seront definies dans la fonction acq_valeurs t1 = 0 t2 = 0 t3 = 0 h1 = 0 h2 = 0 h3 = 0 # Fonction d acquisition des valeurs def acq_valeurs(): # Etand la portee des valeurs des variables a tout le programme global t1, t2, t3, h1, h2, h3 # Lecture de la sonde humidity, temperature = Adafruit_DHT.read_retry(sensor, sonde1) # Variables passent en type "float" t1, h1 = float(t1), float(h1) float(t1) and float(h1) # Mise en variable des valeurs de la sonde h1 = "%.1f" % humidity t1 = "%.1f" % temperature humidity, temperature = Adafruit_DHT.read_retry(sensor, sonde2) t2, h2 = float(t2), float(h2) float(t2) and float(h2) h2 = "%.1f" % humidity t2 = "%.1f" % temperature humidity, temperature = Adafruit_DHT.read_retry(sensor, sonde3) t3, h3 = float(t3), float(h3) float(t3) and float(h3) h3 = "%.1f" % humidity t3 = "%.1f" % temperature # Creation de la fonction qui va afficher sur le lcd avec les valeurs des sondes en parametre def affichage(t1, t2, t3, h1, h2, h3): # Bloc d affichage du LCD ligne par ligne # Affichage de la date et heure sur la 1ere ligne lcd.lcd_display_string(datetime.now().strftime('%H:%M %d %b'), 1), # Affichage de la ligne 2 lcd.lcd_display_string(" Piece\x05Bloom\x05Grow " , 2), # Affichage de la ligne 3 avec la temperature lcd.lcd_display_string("\x00 :%s\x02\x06%s\x02\x06%s\x02" %(t1, t2, t3) , 3), # Affichage de la ligne 3 avec l humidite lcd.lcd_display_string("\x01 :%s\x03\x06%s\x03\x06%s\x03"%(h1, h2, h3) , 4), ## DEBUT DU PROGRAMME ## # Affichage sur le lcd des valeurs a zero affichage(t1, t2, t3, h1, h2, h3) # Boucle principale while 1: # Bloc de gestion de l allumage du LCD heure_lcd = datetime.now().strftime('%H:%M') if heure_lcd == heure_lcd_off: lcd.lcd_clear() lcd.backlight(0) sleep(32400) # Lecture des sondes via la fonction acq_valeurs() acq_valeurs() # Boucle de test d'heure et d'affichage while 1: # Mise en variable de l'heure actuelle... heure2 = datetime.now().strftime('%H:%M %d %b') # ... et test si "heure" est different de "heure2" # Permet de changer l'heure a chaque minute (fonction horloge du lcd) # ... et actualise les valeurs de temp et hum sur le lcd (1x / min.) if heure != heure2 : # Si la minute courante est differente, affichage des valeurs mise en variable precedement... # ... avec la fonction affichage affichage(t1, t2, t3, h1, h2, h3) # Mise en variable de l heure courante... heure = datetime.now().strftime('%H:%M %d %b') # ... et la boucle est cassee et retourne a la lecture des sondes via la fonction acq_valeurs() break # Autrement (si heure est egale a heure2)... else : # Boucle qui permet de laisser passer le temps pour ne renouveller les valeurs que # si l'heure courante a change while 1: # Mise en variable de l heure courante... heure2 = datetime.now().strftime('%H:%M %d %b') # ... et si heure est egal a heure2 if heure == heure2 : # Attente de 2 secondes sleep(2) # Autrement (heure different de heure2) else: # Affichage des valeurs... affichage(t1, t2, t3, h1, h2, h3) # et la boucle est cassee et retourne a la lecture des sondes via la fonction acq_valeurs() break 1 Lien à poster Partager sur d’autres sites
pakabonbon 2 Posté(e) novembre 27, 2015 Partager Posté(e) novembre 27, 2015 Merci à toi pour le partage, je vais regarder tout ca de plus près! Lien à poster Partager sur d’autres sites
kikisanchez 0 Posté(e) juillet 24, 2017 Partager Posté(e) juillet 24, 2017 Bonjour, excellent tuto, merci à toi pour ton partage ! des news depuis novembre 2015 ? des mises à jours ?! Super boulot en tout cas.... Lien à poster Partager sur d’autres sites
lo.ic 1 Posté(e) septembre 25, 2017 Partager Posté(e) septembre 25, 2017 hola, j'ai perdu le mot de passe de mon ancien pseudo et j'en ai retrouvé un encore plus ancien... bref petit retour 4ans après, RAS plusieurs coupures d'éléctricité par an et le raspberry tient toujours la route tchuss! Lien à poster Partager sur d’autres sites
Messages recommandés