pedestal_client.py
87 lines
| 2.8 KiB
| text/x-python
|
PythonLexer
r1320 | import numpy | |||
import sys | ||||
import zmq | ||||
import time | ||||
import h5py | ||||
import os | ||||
r1396 | path = "/home/alex/Downloads/pedestal" | |||
ext = ".hdf5" | ||||
r1320 | ||||
r1396 | port = "5556" | |||
if len(sys.argv) > 1: | ||||
r1320 | port = sys.argv[1] | |||
int(port) | ||||
r1396 | if len(sys.argv) > 2: | |||
r1320 | port1 = sys.argv[2] | |||
int(port1) | ||||
r1396 | # Socket to talk to server | |||
r1320 | context = zmq.Context() | |||
r1396 | socket = context.socket(zmq.SUB) | |||
r1320 | ||||
print("Collecting updates from weather server...") | ||||
r1396 | socket.connect("tcp://localhost:%s" % port) | |||
r1320 | ||||
r1396 | if len(sys.argv) > 2: | |||
socket.connect("tcp://localhost:%s" % port1) | ||||
r1320 | ||||
r1396 | # Subscribe to zipcode, default is NYC,10001 | |||
r1320 | topicfilter = "10001" | |||
r1396 | socket.setsockopt_string(zmq.SUBSCRIBE, topicfilter) | |||
# Process 5 updates | ||||
total_value = 0 | ||||
count = -1 | ||||
azi = [] | ||||
elev = [] | ||||
time0 = [] | ||||
# for update_nbr in range(250): | ||||
r1320 | while(True): | |||
r1396 | 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) | ||||
r1320 | azi.append(ang_azi) | |||
elev.append(ang_elev) | ||||
time0.append(seconds) | ||||
r1396 | count += 1 | |||
r1320 | if count == 100: | |||
r1396 | timetuple = time.localtime() | |||
r1320 | epoc = time.mktime(timetuple) | |||
r1396 | # print(epoc) | |||
fullpath = path + ("/" if path[-1] != "/" else "") | ||||
r1320 | ||||
if not os.path.exists(fullpath): | ||||
os.mkdir(fullpath) | ||||
r1396 | azi_array = numpy.array(azi) | |||
r1320 | elev_array = numpy.array(elev) | |||
r1396 | 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]) | ||||
r1320 | ||||
r1396 | 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·....······································ | ||||
r1320 | 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]) | ||||
r1396 | # ·················· Metadata······································· | |||
r1320 | grp = fp.create_group("Metadata") | |||
dset = grp.create_dataset("utctimeInit", data=pedestal_array[2][0]) | ||||
r1396 | timeInterval = pedestal_array[2][1] - pedestal_array[2][0] | |||
r1320 | dset = grp.create_dataset("timeInterval", data=timeInterval) | |||
fp.close() | ||||
r1396 | # print ("Average messagedata value for topic '%s' was %dF" % ( topicfilter,total_value / update_nbr)) | |||