Skip to content
Snippets Groups Projects
Select Git revision
  • 84b819509463f929461fc09a907bceb865a8d131
  • master default protected
  • fix-issue-901
  • fix-issue-928
  • fix-issue-896-zmq-publish
  • fix-issue-885
  • fix-issue-921
  • fix-910
  • fix-issue-804
  • srt-bandQ-receiver
  • fix-issue-855
  • stable
  • srt-bandW-receiver
  • fix-issue-805
  • feature-med-c-band-srv
  • fix-issue-760
  • fix-issue-628
  • fix-issue-588
  • fix-issue-derotator-328
  • OffsetReview
  • DerotatorAndMinorServo
  • discos1.0.6h
  • discos1.0.6f
  • discos1.0.6e
  • discos1.0.6d
  • discos1.0.6c
  • discos1.0.6b
  • discos1.0.6a
  • discos1.0.6
  • discos1.0.5
  • discos1.0.4
  • discos1.0.3
  • discos1.0.2
  • discos1.0.1
  • discos1.0.0
  • discos1.0-rc02
  • discos1.0-rc01
  • escs-0.5
  • escs-0.4
  • nuraghe-0.6
  • noto-0.1
41 results

receiversmonitor.py

Blame
  • receiversmonitor.py 2.86 KiB
    #! /usr/bin/env python
    
    import logging
    import time
    import sys
    import os
    from math import degrees
    
    from Acspy.Clients.SimpleClient import PySimpleClient
    from Acspy.Util.ACSCorba import getManager
    
    process = os.path.basename(__file__)
    # Exit in case the user try to run the script on nuraghe-mng
    if 'nuraghe-mng' in os.getenv('HOST'):
        print 'ERROR: you can not execute %s on this machine.' % process
        print 'Please, read the SD manual!'
        sys.exit(0)
    
    # Exit in case the process is already running
    running_processes = os.popen("ps aux").read()
    counter = 0
    for line in running_processes.split('\n'):
        if 'python' in line and process in line:
            if str(os.getpid()) in line.split():
                continue
            else:
                counter += 1
        if counter > 1:
            print '%s already running, everything is OK' % process
            sys.exit(0)
    
    LOGDIR = os.path.join(os.getenv('HOME'), 'logs', 'receivers')
    FILENAME = os.path.join(LOGDIR, 'receivers.log')
    logging.basicConfig(
        filename=FILENAME,
        format='%(asctime)s\t%(message)s')
    
    common_receiver_properties = (
        'cryoTemperatureCoolHead', 
        'cryoTemperatureCoolHeadWindow', 
        'cryoTemperatureLNA', 
        'cryoTemperatureLNAWindow', 
        'environmentTemperature',
        'vacuum')
    
    mapping = (
        ('ANTENNA/Boss', ('rawAzimuth', 'rawElevation')),
        # ('RECEIVERS/SRTLPBandReceiver', common_receiver_properties),
        ('RECEIVERS/SRTKBandMFReceiver', common_receiver_properties),
        ('RECEIVERS/SRT7GHzReceiver', common_receiver_properties),
    )
    
    
    timing = 120  # seconds
    
    while True:
        if getManager():
            try:
                components = []
                client = PySimpleClient()
                for component_name, property_names in mapping:
                    try:
                        component = client.getComponent(component_name)
                        components.append((component, property_names))
                    except:
                        pass
    
                for component, property_names in components:
                    for pname in property_names:
                        get_property_obj = getattr(component, '_get_%s' % pname)
                        property_obj = get_property_obj()
                        raw_value, completion = property_obj.get_sync()
                        value = degrees(raw_value) if pname.startswith('raw') else raw_value
                        cname = component._get_name()
                        line = '%s.%s' % (cname, pname)
                        logging.info('  %s%e' % (line.ljust(65), value))
                    try:
                        component._release()
                    except:
                        pass
    
            except KeyboardInterrupt:
                logging.info('program closed by the user')
                raise
            except Exception, ex:
                pass
            finally:
                try:
                    if getManager():
                        client.disconnect()
                except:
                    pass
    
        time.sleep(timing)