@@ -82,9 +82,10 class Data(object): | |||
|
82 | 82 | Object to hold data to be plotted |
|
83 | 83 | ''' |
|
84 | 84 | |
|
85 | def __init__(self, plottypes, throttle_value): | |
|
85 | def __init__(self, plottypes, throttle_value, exp_code): | |
|
86 | 86 | self.plottypes = plottypes |
|
87 | 87 | self.throttle = throttle_value |
|
88 | self.exp_code = exp_code | |
|
88 | 89 | self.ended = False |
|
89 | 90 | self.localtime = False |
|
90 | 91 | self.__times = [] |
@@ -215,17 +216,24 class Data(object): | |||
|
215 | 216 | Convert data to json |
|
216 | 217 | ''' |
|
217 | 218 | |
|
218 |
|
|
|
219 | data = {} | |
|
219 | 220 | tm = self.times[-1] |
|
220 | 221 | |
|
221 |
for key |
|
|
222 | for key in self.data: | |
|
222 | 223 | if key in ('spc', 'cspc'): |
|
223 |
|
|
|
224 | data[key] = roundFloats(self.data[key].tolist()) | |
|
224 | 225 | else: |
|
225 |
|
|
|
226 | data[key] = roundFloats(self.data[key][tm].tolist()) | |
|
226 | 227 | |
|
227 | ret['timestamp'] = tm | |
|
228 | ret = {'data': data} | |
|
229 | ret['exp_code'] = self.exp_code | |
|
230 | ret['time'] = tm | |
|
228 | 231 | ret['interval'] = self.interval |
|
232 | ret['ymin'] = self.heights[0] | |
|
233 | ret['ymax'] = self.heights[-1] | |
|
234 | ret['ystep'] = self.heights[1] - self.heights[0] | |
|
235 | ||
|
236 | return json.dumps(ret) | |
|
229 | 237 | |
|
230 | 238 | @property |
|
231 | 239 | def times(self): |
@@ -476,7 +484,8 class ReceiverData(ProcessingUnit): | |||
|
476 | 484 | class PlotterReceiver(ProcessingUnit, Process): |
|
477 | 485 | |
|
478 | 486 | throttle_value = 5 |
|
479 |
__attrs__ = ['server', 'plottypes', 'realtime', 'localtime', 'throttle' |
|
|
487 | __attrs__ = ['server', 'plottypes', 'realtime', 'localtime', 'throttle', | |
|
488 | 'exp_code', 'web_server'] | |
|
480 | 489 | |
|
481 | 490 | def __init__(self, **kwargs): |
|
482 | 491 | |
@@ -487,30 +496,25 class PlotterReceiver(ProcessingUnit, Process): | |||
|
487 | 496 | self.isWebConfig = False |
|
488 | 497 | self.connections = 0 |
|
489 | 498 | server = kwargs.get('server', 'zmq.pipe') |
|
490 |
|
|
|
499 | web_server = kwargs.get('web_server', None) | |
|
491 | 500 | if 'tcp://' in server: |
|
492 | 501 | address = server |
|
493 | 502 | else: |
|
494 | 503 | address = 'ipc:///tmp/%s' % server |
|
495 | ||
|
496 | if 'tcp://' in plot_server: | |
|
497 | plot_address = plot_server | |
|
498 | else: | |
|
499 | plot_address = 'ipc:///tmp/%s' % plot_server | |
|
500 | ||
|
501 | 504 | self.address = address |
|
502 |
self. |
|
|
503 |
self.plottypes = [s.strip() for s in kwargs.get('plottypes', '').split(',') |
|
|
505 | self.web_address = web_server | |
|
506 | self.plottypes = [s.strip() for s in kwargs.get('plottypes', 'rti').split(',')] | |
|
504 | 507 | self.realtime = kwargs.get('realtime', False) |
|
505 | 508 | self.localtime = kwargs.get('localtime', True) |
|
506 | 509 | self.throttle_value = kwargs.get('throttle', 5) |
|
510 | self.exp_code = kwargs.get('exp_code', None) | |
|
507 | 511 | self.sendData = self.initThrottle(self.throttle_value) |
|
508 | 512 | self.dates = [] |
|
509 | 513 | self.setup() |
|
510 | 514 | |
|
511 | 515 | def setup(self): |
|
512 | 516 | |
|
513 | self.data = Data(self.plottypes, self.throttle_value) | |
|
517 | self.data = Data(self.plottypes, self.throttle_value, self.exp_code) | |
|
514 | 518 | self.isConfig = True |
|
515 | 519 | |
|
516 | 520 | def event_monitor(self, monitor): |
@@ -560,9 +564,13 class PlotterReceiver(ProcessingUnit, Process): | |||
|
560 | 564 | self.receiver.bind(self.address) |
|
561 | 565 | monitor = self.receiver.get_monitor_socket() |
|
562 | 566 | self.sender = self.context.socket(zmq.PUB) |
|
563 |
if self. |
|
|
567 | if self.web_address: | |
|
568 | log.success( | |
|
569 | 'Sending to web: {}'.format(self.web_address), | |
|
570 | self.name | |
|
571 | ) | |
|
564 | 572 | self.sender_web = self.context.socket(zmq.PUB) |
|
565 |
self.sender_web.connect(self. |
|
|
573 | self.sender_web.connect(self.web_address) | |
|
566 | 574 | time.sleep(1) |
|
567 | 575 | |
|
568 | 576 | if 'server' in self.kwargs: |
@@ -610,27 +618,10 class PlotterReceiver(ProcessingUnit, Process): | |||
|
610 | 618 | else: |
|
611 | 619 | if self.realtime: |
|
612 | 620 | self.send(self.data) |
|
613 | # self.sender_web.send_string(self.data.jsonify()) | |
|
621 | if self.web_address: | |
|
622 | self.sender_web.send(self.data.jsonify()) | |
|
614 | 623 | else: |
|
615 | 624 | self.sendData(self.send, self.data, coerce=coerce) |
|
616 | 625 | coerce = False |
|
617 | 626 | |
|
618 | 627 | return |
|
619 | ||
|
620 | def sendToWeb(self): | |
|
621 | ||
|
622 | if not self.isWebConfig: | |
|
623 | context = zmq.Context() | |
|
624 | sender_web_config = context.socket(zmq.PUB) | |
|
625 | if 'tcp://' in self.plot_address: | |
|
626 | dum, address, port = self.plot_address.split(':') | |
|
627 | conf_address = '{}:{}:{}'.format(dum, address, int(port)+1) | |
|
628 | else: | |
|
629 | conf_address = self.plot_address + '.config' | |
|
630 | sender_web_config.bind(conf_address) | |
|
631 | time.sleep(1) | |
|
632 | for kwargs in self.operationKwargs.values(): | |
|
633 | if 'plot' in kwargs: | |
|
634 | log.success('[Sending] Config data to web for {}'.format(kwargs['code'].upper())) | |
|
635 | sender_web_config.send_string(json.dumps(kwargs)) | |
|
636 | self.isWebConfig = True |
General Comments 0
You need to be logged in to leave comments.
Login now