#! /usr/bin/Python3
#coding=utf-8

#Bibliotheken importieren
from lib_oled96 import ssd1306
from smbus import SMBus
import smbus
import time
from PIL import ImageFont
from datetime import datetime
import io
import HYT939

#Display einrichten
i2cbus = SMBus(1)       #0=RaspberryPi1, 1=RaspberryPi>1
oled=ssd1306(i2cbus)

#ein paar abkürzungen um den Code zu entschlacken
draw=oled.canvas

#Schriften festlegen
FreeSans12 = ImageFont.truetype('FreeSans.ttf', 14)
FreeSans20 = ImageFont.truetype('FreeSans.ttf', 20)

#Display zum Start löschen und Einrichten
oled.cls()
oled.display()
draw.text((0, 0), "Temp.:", font=FreeSans12, fill=1)
draw.text((0, 20), "Feuchte:", font=FreeSans12, fill=1)
oled.display()

#Variablen um nachher das Display flakerfrei zu aktualisieren
Tempalt = 0
Tempneu = 0
Humalt = 0
Humneu = 0
Timealt = ""
Timeneu = ""


day = "start"
while True:    
    d = day
    day = datetime.now().strftime('%Y_%m_%d')
    if d != day:
        with io.open('/media/pi/usbstick/'+'log-'+day+'.csv', 'a', encoding='utf8') as log_file:
            log_file.write('Time;''TEMP;''RH\n')
        print ('starte neues file:' + day)
        d = day
        
    timestamp = datetime.now().strftime('%H:%M:%S')
    
    #Messung starten
    messdaten = HYT939.read()
    
    #Vorbereitung Ausgabe
    Tempalt = Tempneu
    Tempneu = messdaten[0]
    Humalt = Humneu
    Humneu = messdaten[1]
    Timealt = Timeneu
    Timeneu = timestamp
    draw.text((45, 0), "%.2f °C" %Tempalt, font=FreeSans12, fill=0)
    draw.text((45, 0), "%.2f °C" %Tempneu, font=FreeSans12, fill=1)
    draw.text((55, 20), "%.2f %%" %Humalt, font=FreeSans12, fill=0)
    draw.text((55, 20), "%.2f %%" %Humneu, font=FreeSans12, fill=1)
    draw.text((0,40),Timealt, font=FreeSans12, fill=0)
    draw.text((0,40),Timeneu, font=FreeSans12, fill=1)
    #Ausgabe auf Display schreiben
    oled.display()
    
    #Logeintrag speichern
    with io.open('/media/pi/usbstick/'+'log-'+day+'.csv', 'a', encoding='utf8') as log_file:
        log_file.write(
        u'{0:2};{1:0.2f};{2:0.2f};\n'
        .format(timestamp, Tempneu, Humneu)
        )
    #Wartezeit
    time.sleep(10)