from csv import reader
from dateutil import parser
from subprocess import call
import pandas as pd
import matplotlib
matplotlib.use('Agg')
import matplotlib.pyplot as plt
import json


#-----------------------------------------------
# This script can run weekly and create a graph to email
# cleanup the logs and reset the other files
#-----------------------------------------------


#--- change base_dir to wherever the freezer project files are stored

#base_dir = "/home/pi/Documents/FreezerProjects/"
base_dir = "./" # if using graph.sh script

savemess = "cat " + base_dir + "Stats.csv | grep 'status' >> messages.csv"
statsort = "sort -r -u " + base_dir + "Stats.csv -o " + base_dir + "Stats.csv"
sedrem = "sed -i " + "'" + "/status/d" + "' " + base_dir + "Stats.csv"

call(savemess, shell=True) # save any messages other than temps
call(statsort, shell=True) # dedup file
call(sedrem, shell=True) # remove lines with status in them

# get configuration data
try:
    with open(base_dir + 't4sensorjson.cfg') as data_file:    
        data = json.load(data_file)
except:
    print "Error 22 on file Open t4sensorjson.cfg"
    exit(22)

workLowFridge = data["S1_Low"]
workHiFridge = data["S1_High"]
workLowFreezer= data["S2_Low"]
workHiFreezer= data["S2_High"]

# create pandas dataframe
jtemp = pd.read_csv(base_dir + 'Stats.csv',parse_dates=True, index_col='DateTime')

fig_size = plt.rcParams["figure.figsize"] # get current fig size
fig_size[0] = 12
fig_size[1] = 9
plt.rcParams["figure.figsize"] = fig_size

fig, ax = plt.subplots()
labels = []
for key, grp in jtemp.groupby(['Sensor']):
    ax = grp.plot(ax=ax, kind='line', y='Value')
    labels.append(key)

lines, _ = ax.get_legend_handles_labels()
ax.legend(lines, labels, loc='best')
plt.axhline(y=workLowFridge,color='r',linewidth=2)
plt.axhline(y=workHiFridge,color='r',linewidth=2)
plt.axhline(y=workLowFreezer,color='m',linewidth=2)
plt.axhline(y=workHiFreezer,color='m',linewidth=2)

#plt.show()
save_path = base_dir+'test.png'
plt.savefig(save_path)
