import nds
import numpy as np 
import matplotlib.pyplot as plt
import gpstime

# cheap rounding function to round times to nearest minute
def myround(x, base=60):
    return int(base * round(float(x)/base)) 

# start times
stop_time = int(gpstime.tconvert())-3600
start_time = stop_time - 30*24*3600

start=myround(start_time) 
stop=myround(stop_time)  

#set up nds connection
conn = nds.connection('h1nds1',8088)

# setting gap handling in nds
conn.set_parameter('GAP_HANDLER', 'STATIC_HANDLER_NAN')

#pitch
channels_pit =  ['H1:HPI-PUMP_L0_PS1_PRESS1.mean,m-trend','H1:HPI-PUMP_L0_PS2_PRESS1.mean,m-trend','H1:HPI-PUMP_L0_PS3_PRESS1.mean,m-trend','H1:HPI-PUMP_L0_PS4_PRESS1.mean,m-trend','H1:HPI-PUMP_L0_CONTROL_VOUT.mean,m-trend','H1:HPI-PUMP_EX_PS_PRESS1.mean,m-trend','H1:HPI-PUMP_EX_CONTROL_VOUT.mean,m-trend','H1:HPI-PUMP_EY_PS_PRESS1.mean,m-trend','H1:HPI-PUMP_EY_CONTROL_VOUT.mean,m-trend']
'H1:HPI-PUMP_L0_PS1_PRESS1.mean,m-trend'

buffers= conn.fetch(start,stop,channels_pit)

hepi = buffers

#optic names for labeling plots
names = ['H1:HPI-PUMP_L0_PS1_PRESS1','H1:HPI-PUMP_L0_PS2_PRESS1','H1:HPI-PUMP_L0_PS3_PRESS1','H1:HPI-PUMP_L0_PS4_PRESS1','H1:HPI-PUMP_L0_CONTROL_VOUT','H1:HPI-PUMP_EX_PS_PRESS1','H1:HPI-PUMP_EX_CONTROL_VOUT','H1:HPI-PUMP_EY_PS_PRESS1','H1:HPI-PUMP_EY_CONTROL_VOUT']

chans = range(1,len(names)+1)

time = np.arange(start,stop,60)  

#set up plots 
 
optics = range(1,8)


# make xtick date array

days = np.arange(start,stop+10*24*3600,5*24*3600)

week = range(0,7)

xlabel =[]

for ii in week:
    xlabel.append(gpstime.tconvert(days[ii])[:7]) 

#make plots
#    plt.setp(axes,xticks=[0, .14, .29, .43, .57, .72, .86],xticklabels=xlabel) 
for ii in chans:
    fig = plt.figure(1)
    fig.suptitle('HEPI Pump pressure trends \n Trends for '  + str(start) + ' to ' + str(stop) ,fontsize=32)
    ax=plt.subplot(330+ii)
    ax.set_title(names[ii-1],fontsize=24)
    ax.plot(time,hepi[ii-1].data)
    ax.set_xticks(days)
    ax.set_xlim(start,stop)
    ax.set_xticklabels(xlabel,fontsize=20)
    plt.grid()

plt.show()


