#! /usr/bin/env python
# -*- coding: utf-8 -*-

import MySQLdb
import sys
import Adafruit_DHT
import csv
import ephem
import datetime
import time
import RPi.GPIO as GPIO
GPIO.setwarnings(False)
GPIO.setmode(GPIO.BCM)
GPIO.setup(4GPIO.OUT)  # lumiere
GPIO.setup(24GPIO.OUT)  # chauffage


somewhere ephem.Observer()     # ici on régle en fonction des coordonnées de sa ville, ici: Gardanne 13120 france
somewhere.lat '43.45'          #  latitude 
somewhere.lon '5.4667'         #  longitude
somewhere.elevation 170     #  altitude 

#
# Heure actuelle ( du pi, GMT) convertie en chiffres
#

heurenow int(time.strftime('%H%M'))

#
# r1 = heure lever soleil UTC
# s1 = heure coucher soleil UTC
#

sun ephem.Sun()
r1 somewhere.next_rising(sun)
s1 somewhere.next_setting(sun)

#
# coucher = heure du coucher du soleil, en chiffres
# on commence par convertir l'heure de coucher en chiffres
# après avoir extrait les informations inutiles (date, etc.)
#

heurec str(s1)
long len(heurec)
fin long 8
heurec heurec[fin:long-3]
coucher int(heurec[0:2] + heurec[3:5])

#
# lever = heure du lever du soleil, en chiffres
# on commence par convertir l'heure de lever en chiffres
# après avoir extrait les informations inutiles (date, etc.)
#

heurel str(r1)
long len(heurel)
fin long 8
heurel heurel[fin:long-3]
lever int(heurel[0:2] + heurel[3:5])

lever lever 200             # +2hrs UTC/GMT
coucher coucher 200         # +2hrs UTC/GMT

if lever heurenow coucher:    # si l'heure actuelle est comprise entre l'heure du lever et du coucher, s'il faut jour quoi.
  GPIO.output(4True)            # on allume la lumière (on intervertira True et False suivant le branchement du relais  'normalement ouvert ou fermer'  )
  target 29                     # on donne 29 °C comme temperature de jour au point chaud
   
else:                                   
  GPIO.output(4False)           # sinon on éteint la lumière
  target 24                     # on passe la temperature du point chaud a 24 °C


fname1 "/var/www/html/terraspi/csv/ephem.csv"    # on créer le fichier 
file1 open(fname1"wb")  
  
try:
    #
    # Création de  CSV.
    #
    writer1 csv.writer(file1)
 
    #
    # Écriture de la ligne d'en-tête avec le titre
    # des colonnes.
    writer1.writerow( ('lever' ,'coucher') )
    # Écriture des quelques données.
    writer1.writerow( (levercoucher) )    
    

finally:
    #
    # Fermeture du fichier source
    #
    file1.close() 
    
    

humiditytemperature Adafruit_DHT.read_retry(Adafruit_DHT.DHT2222)   #   on lit la sonde    
humidityCtemperatureC Adafruit_DHT.read_retry(Adafruit_DHT.DHT2223)   #  on lit la sonde

humidity round(humidity,2)                   # on arrondi a 2 chiffres
temperature round(temperature,2)
humidityC round(humidityC,2)
temperatureC round(temperatureC,2)


if temperatureC target:            # si la température du point chaud dépasse la target (24 la nuit et 29 le jour)
    GPIO.output(24False)           # on coupe le chauffage
    
else:
    GPIO.output(24True)            # sinon on l'allume     
    


fname "/var/www/html/terraspi/csv/result.csv"    # on créer le fichier
file open(fname"wb")
 
try:
    #
    # Création de  CSV.
    #
    writer csv.writer(file)
 
    #
    # Écriture de la ligne d'en-tête avec le titre
    # des colonnes.
    writer.writerow( ('Humidity' ,'Temperature') )
    # Écriture des quelques données.
    writer.writerow( (humiditytemperature) )
    writer.writerow( (humidityCtemperatureC) )    
    

finally:
    #
    # Fermeture du fichier source
    #
    file.close()
    


sys.exit(1)