import numpy
import sys
import zmq
import time
import h5py
import os

path = "/home/alex/Downloads/pedestal"
ext = ".hdf5"

port = "5556"
if len(sys.argv) > 1:
    port = sys.argv[1]
    int(port)

if len(sys.argv) > 2:
    port1 = sys.argv[2]
    int(port1)

# Socket to talk to server
context = zmq.Context()
socket = context.socket(zmq.SUB)

print("Collecting updates from weather server...")
socket.connect("tcp://localhost:%s" % port)

if len(sys.argv) > 2:
    socket.connect("tcp://localhost:%s" % port1)

# Subscribe to zipcode, default is NYC,10001
topicfilter = "10001"
socket.setsockopt_string(zmq.SUBSCRIBE, topicfilter)
# Process 5 updates
total_value = 0
count = -1
azi = []
elev = []
time0 = []
# for update_nbr in range(250):
while(True):
    string = socket.recv()
    topic, ang_elev, ang_elev_dec, ang_azi, ang_azi_dec, seconds, seconds_dec = string.split()
    ang_azi = float(ang_azi) + 1e-3 * float(ang_azi_dec)
    ang_elev = float(ang_elev) + 1e-3 * float(ang_elev_dec)
    seconds = float(seconds) + 1e-6 * float(seconds_dec)
    azi.append(ang_azi)
    elev.append(ang_elev)
    time0.append(seconds)
    count += 1
    if count == 100:
        timetuple = time.localtime()
        epoc = time.mktime(timetuple)
         # print(epoc)
        fullpath = path + ("/" if path[-1] != "/" else "")

        if not os.path.exists(fullpath):
            os.mkdir(fullpath)

        azi_array = numpy.array(azi)
        elev_array = numpy.array(elev)
        time0_array = numpy.array(time0)
        pedestal_array = numpy.array([azi, elev, time0])
        count = 0
        azi = []
        elev = []
        time0 = []
        # print(pedestal_array[0])
        # print(pedestal_array[1])

        meta = 'PE'
        filex = "%s%4.4d%3.3d%10.4d%s" % (meta, timetuple.tm_year, timetuple.tm_yday, epoc, ext)
        filename = os.path.join(fullpath, filex)
        fp = h5py.File(filename, 'w')
        # print("Escribiendo HDF5...",epoc)
        # ·················· Data·....······································
        grp = fp.create_group("Data")
        dset = grp.create_dataset("azimuth"  , data=pedestal_array[0])
        dset = grp.create_dataset("elevacion", data=pedestal_array[1])
        dset = grp.create_dataset("utc"      , data=pedestal_array[2])
        # ·················· Metadata·······································
        grp = fp.create_group("Metadata")
        dset = grp.create_dataset("utctimeInit", data=pedestal_array[2][0])
        timeInterval = pedestal_array[2][1] - pedestal_array[2][0]
        dset = grp.create_dataset("timeInterval", data=timeInterval)
        fp.close()

# print ("Average messagedata value for topic '%s' was %dF" % ( topicfilter,total_value / update_nbr))
