Select Git revision
receiversmonitor.py
-
Marco Buttu authoredMarco Buttu authored
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)