[RASPBERRY] Box gestion 220V


Messages recommandés

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

 

post-814259-0-31543300-1439654538_thumb.jpg

  • Like 3
Lien à poster
Partager sur d’autres sites
  • 3 mois après ...

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

Lien à poster
Partager sur d’autres sites

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
			
  • Like 1
Lien à poster
Partager sur d’autres sites
  • 1 an après ...
  • 2 mois après ...

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